diff --git a/.gitignore b/.gitignore index 1610ba3d..a4bd8a41 100644 --- a/.gitignore +++ b/.gitignore @@ -6,12 +6,14 @@ Release/ /.idea .env .venv +.gradle env/ venv/ ENV/ VENV/ env.bak/ venv.bak/ +local.properties /build/ /build_debug/ /legobin/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 6fcc7b96..355c21b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,22 +73,27 @@ if (DOWNLOAD_DEPENDENCIES) # FetchContent downloads and configures dependencies message(STATUS "Fetching SDL3 and iniparser. This might take a while...") include(FetchContent) - if (WINDOWS_STORE) - FetchContent_Declare( - SDL3 - GIT_REPOSITORY "https://github.com/Helloyunho/SDL3-uwp.git" - GIT_TAG "main" - EXCLUDE_FROM_ALL - ) - else() - FetchContent_Declare( + # FIXME: properly build and source the .aar + if (NOT ANDROID) + if (WINDOWS_STORE) + FetchContent_Declare( SDL3 - GIT_REPOSITORY "https://github.com/libsdl-org/SDL.git" + GIT_REPOSITORY "https://github.com/Helloyunho/SDL3-uwp.git" GIT_TAG "main" EXCLUDE_FROM_ALL - ) + ) + else() + FetchContent_Declare( + SDL3 + GIT_REPOSITORY "https://github.com/libsdl-org/SDL.git" + GIT_TAG "main" + EXCLUDE_FROM_ALL + ) + endif() + FetchContent_MakeAvailable(SDL3) + else() + find_package(SDL3 CONFIG REQUIRED) endif() - FetchContent_MakeAvailable(SDL3) # if(ANDROID) # FetchContent_GetProperties(SDL3) @@ -524,8 +529,7 @@ endif() if (ISLE_BUILD_APP) if(ANDROID) - # SDL applications need to be built as a shared library - function(add_executable TARGET) + function(add_executable TARGET PLATFORM) add_library(${TARGET} SHARED ${ARGN}) endfunction() endif() @@ -609,6 +613,11 @@ if (ISLE_BUILD_APP) ISLE/ios/config.cpp ) endif() + if (ANDROID) + target_sources(isle PRIVATE + ISLE/android/config.cpp + ) + endif() if(Python3_FOUND) if(NOT DEFINED PYTHON_PIL_AVAILABLE) execute_process( diff --git a/ISLE/isleapp.cpp b/ISLE/isleapp.cpp index b97ef9d7..8e1e3103 100644 --- a/ISLE/isleapp.cpp +++ b/ISLE/isleapp.cpp @@ -72,7 +72,7 @@ #include "ios/config.h" #endif -#ifdef __ANDROID__ +#ifdef ANDROID #include "android/config.h" #endif @@ -1133,7 +1133,7 @@ bool IsleApp::LoadConfig() #ifdef IOS IOS_SetupDefaultConfigOverrides(dict); #endif -#ifdef __ANDROID__ +#ifdef ANDROID Android_SetupDefaultConfigOverrides(dict); #endif iniparser_dump_ini(dict, iniFP); @@ -1236,7 +1236,7 @@ bool IsleApp::LoadConfig() iniparser_freedict(dict); delete[] iniConfig; -#ifndef IOS +#if !defined(IOS) && !defined(ANDROID) SDL_free(prefPath); #endif diff --git a/android-project/.gitignore b/android-project/.gitignore index 7340da61..bcd50fa6 100644 --- a/android-project/.gitignore +++ b/android-project/.gitignore @@ -1,3 +1,5 @@ .cxx .gradle local.properties +build +*.aar diff --git a/android-project/app/build.gradle b/android-project/app/build.gradle index 9c09653f..2e9cfd63 100644 --- a/android-project/app/build.gradle +++ b/android-project/app/build.gradle @@ -3,11 +3,11 @@ plugins { } android { - namespace "org.legoisland.Isle" + namespace "org.legoisland.isle" compileSdk 35 defaultConfig { - applicationId 'org.legoisland.lego-island' + applicationId 'org.legoisland.isle' minSdk 21 targetSdk 35 versionCode 1 @@ -15,9 +15,7 @@ android { externalNativeBuild { cmake { - arguments '-DANDROID_STL=c++_shared' - abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' - // abiFilters 'arm64-v8a' + arguments '-DANDROID_STL=c++_shared', '-DCMAKE_BUILD_TYPE=Release', '-DISLE_USE_DX5=false', '-DISLE_BUILD_CONFIG=false', '-DENABLE_CLANG_TIDY=false', '-DISLE_WERROR=true', '-DISLE_DEBUG=false', '-Werror=dev', '-DCMAKE_MESSAGE_LOG_LEVEL=STATUS' } } } diff --git a/android-project/app/src/main/AndroidManifest.xml b/android-project/app/src/main/AndroidManifest.xml index 45e5fcba..c5c11819 100644 --- a/android-project/app/src/main/AndroidManifest.xml +++ b/android-project/app/src/main/AndroidManifest.xml @@ -2,8 +2,10 @@ - - + + diff --git a/android-project/app/src/main/java/org/legoisland/isle/IsleActivity.java b/android-project/app/src/main/java/org/legoisland/isle/IsleActivity.java index 9c78acf0..4e556c5b 100644 --- a/android-project/app/src/main/java/org/legoisland/isle/IsleActivity.java +++ b/android-project/app/src/main/java/org/legoisland/isle/IsleActivity.java @@ -1,8 +1,8 @@ -package org.legoisland.Isle; +package org.legoisland.isle; import org.libsdl.app.SDLActivity; -public class HelloWorldActivity extends SDLActivity { +public class IsleActivity extends SDLActivity { protected String[] getLibraries() { return new String[] { "SDL3", "lego1", "isle" }; } diff --git a/android-project/settings.gradle b/android-project/settings.gradle index 0759f9a7..36e93e45 100644 --- a/android-project/settings.gradle +++ b/android-project/settings.gradle @@ -12,5 +12,5 @@ dependencyResolutionManagement { mavenCentral() } } -rootProject.name = "lego-island" +rootProject.name = "legoisland" include ':app' diff --git a/miniwin/CMakeLists.txt b/miniwin/CMakeLists.txt index 615832cf..452d5144 100644 --- a/miniwin/CMakeLists.txt +++ b/miniwin/CMakeLists.txt @@ -44,7 +44,7 @@ if(NOT WINDOWS_STORE) message(STATUS "🧩 OpenGL 1.x support not enabled — needs OpenGL") endif() - find_library(OPENGL_ES3_LIBRARY NAMES GLESv2) + find_library(OPENGL_ES3_LIBRARY NAMES GLESv3 GLESv2) if(EMSCRIPTEN OR OPENGL_ES3_LIBRARY) message(STATUS "Found OpenGL: enabling OpenGL ES 3.x renderer") target_sources(miniwin PRIVATE src/d3drm/backends/opengles3/renderer.cpp)