diff --git a/CMakeLists.txt b/CMakeLists.txt index ecb68964..f28251e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.21.1) +cmake_minimum_required(VERSION 3.25) option(ENABLE_VCPKG "Enable the vcpkg package manager" ON) option(MACOS_BUNDLE "The executable when built on macOS will be created as an application bundle" OFF) @@ -38,15 +38,30 @@ if (ENABLE_VCPKG) ) endif() - if(UNIX AND NOT APPLE) + if(UNIX AND NOT APPLE AND NOT VCPKG_TARGET_ANDROID) set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_linux;${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports") elseif(APPLE) set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_mac;${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports") - else() + elseif(WIN32) set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports_win;${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports") + elseif(VCPKG_TARGET_ANDROID) + set(VCPKG_OVERLAY_PORTS "${CMAKE_CURRENT_LIST_DIR}/dependencies/vcpkg_overlay_ports") endif() - set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/vcpkg/scripts/buildsystems/vcpkg.cmake" - CACHE STRING "Vcpkg toolchain file") + + if(VCPKG_TARGET_ANDROID) + message("Configuring for Android with ABI ${ANDROID_ABI}") + if(ANDROID_ABI MATCHES "arm64-v8a") + set(VCPKG_TARGET_TRIPLET "arm64-android" CACHE STRING "" FORCE) + elseif(ANDROID_ABI MATCHES "x86_64") + set(VCPKG_TARGET_TRIPLET "x64-android" CACHE STRING "" FORCE) + else() + message(FATAL_ERROR "Unsupported ANDROID_ABI '${ANDROID_ABI}'") + endif() + set(ENV{ANDROID_NDK_HOME} ${ANDROID_NDK}) + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE ${ANDROID_NDK}/build/cmake/android.toolchain.cmake) + endif() + + set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/dependencies/vcpkg/scripts/buildsystems/vcpkg.cmake") # Set this so that all the various find_package() calls don't need an explicit # CONFIG option set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE) @@ -176,7 +191,7 @@ if (NOT TARGET glslang::SPIRV AND TARGET SPIRV) add_library(glslang::SPIRV ALIAS SPIRV) endif() -if (UNIX AND NOT APPLE) +if (UNIX AND NOT APPLE AND NOT ANDROID) find_package(X11 REQUIRED) if (ENABLE_WAYLAND) find_package(Wayland REQUIRED Client) @@ -227,7 +242,7 @@ if (ENABLE_HIDAPI) add_compile_definitions(HAS_HIDAPI) endif () -if(UNIX AND NOT APPLE) +if(UNIX AND NOT APPLE AND NOT ANDROID) if(ENABLE_FERAL_GAMEMODE) add_compile_definitions(ENABLE_FERAL_GAMEMODE) add_subdirectory(dependencies/gamemode EXCLUDE_FROM_ALL) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 977f48b7..3af482fb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -63,38 +63,46 @@ add_subdirectory(util) add_subdirectory(imgui) add_subdirectory(resource) -add_executable(CemuBin - main.cpp - mainLLE.cpp -) - -cemu_use_precompiled_header(CemuBin) - -if(MSVC AND MSVC_VERSION EQUAL 1940) - # workaround for an msvc issue on VS 17.10 where generated ILK files are too large - # see https://developercommunity.visualstudio.com/t/After-updating-to-VS-1710-the-size-of-/10665511 - set_target_properties(CemuBin PROPERTIES LINK_FLAGS "/INCREMENTAL:NO") -endif() - -if(WIN32) - target_sources(CemuBin PRIVATE - resource/cemu.rc - ../dist/windows/cemu.manifest - ) -endif() - -if(APPLE AND CMAKE_GENERATOR STREQUAL "Xcode") - set_target_properties(CemuBin PROPERTIES - XCODE_ATTRIBUTE_ENABLE_DEBUG_DYLIB[variant=Debug] "YES" +if(ANDROID) + add_library(CemuBin STATIC + main.cpp + mainLLE.cpp ) + + cemu_use_precompiled_header(CemuBin) +else() + add_executable(CemuBin + main.cpp + mainLLE.cpp + ) + + cemu_use_precompiled_header(CemuBin) + + if(MSVC AND MSVC_VERSION EQUAL 1940) + # workaround for an msvc issue on VS 17.10 where generated ILK files are too large + # see https://developercommunity.visualstudio.com/t/After-updating-to-VS-1710-the-size-of-/10665511 + set_target_properties(CemuBin PROPERTIES LINK_FLAGS "/INCREMENTAL:NO") + endif() + + if(WIN32) + target_sources(CemuBin PRIVATE + resource/cemu.rc + ../dist/windows/cemu.manifest + ) + endif() + + if(APPLE AND CMAKE_GENERATOR STREQUAL "Xcode") + set_target_properties(CemuBin PROPERTIES + XCODE_ATTRIBUTE_ENABLE_DEBUG_DYLIB[variant=Debug] "YES" + ) + endif() + + string(TIMESTAMP CURRENT_YEAR "%Y" UTC) + set_property(TARGET CemuBin PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") + set_property(TARGET CemuBin PROPERTY WIN32_EXECUTABLE $>) + set(OUTPUT_NAME "Cemu_$>") endif() -string(TIMESTAMP CURRENT_YEAR "%Y" UTC) - -set_property(TARGET CemuBin PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") -set_property(TARGET CemuBin PROPERTY WIN32_EXECUTABLE $>) -set(OUTPUT_NAME "Cemu_$>") - if (MACOS_BUNDLE) set_property(TARGET CemuBin PROPERTY MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/resource/MacOSXBundleInfo.plist.in") diff --git a/src/Common/CMakeLists.txt b/src/Common/CMakeLists.txt index cb80eb69..b1b6ad09 100644 --- a/src/Common/CMakeLists.txt +++ b/src/Common/CMakeLists.txt @@ -61,7 +61,7 @@ target_link_libraries(CemuCommon PRIVATE glm::glm ) -if (UNIX AND NOT APPLE) +if (UNIX AND NOT APPLE AND NOT ANDROID) target_link_libraries(CemuCommon PRIVATE X11::X11 X11::Xrender X11::Xutil) endif()