From babc959384eade226920724d94e042745c5cda58 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 25 Apr 2024 15:56:21 -0600 Subject: [PATCH 01/26] Added ios support (cherry picked from commit dc2477416266cfc15dc79c4d7135a70c0c4a56bd) --- .gitignore | 18 ++++++ CMakeLists.txt | 3 +- extern/CMakeLists.txt | 12 ++-- ios/Icon.png | Bin 0 -> 2968 bytes ios/Launch.storyboard | 43 ++++++++++++++ ios/PoweredBy.png | Bin 0 -> 171738 bytes ios/plist.in | 54 ++++++++++++++++++ src/CMakeLists.txt | 15 +++-- src/Context.cpp | 14 +++++ src/config/Config.h | 2 + src/graphic/Fast3D/gfx_metal.cpp | 6 +- src/graphic/Fast3D/gfx_pc.cpp | 2 +- src/graphic/Fast3D/gfx_sdl2.cpp | 6 ++ .../AndroidImpl.cpp => mobile/MobileImpl.cpp} | 6 +- .../AndroidImpl.h => mobile/MobileImpl.h} | 2 +- src/resource/archive/ArchiveManager.cpp | 10 ++++ src/resource/archive/O2rArchive.cpp | 2 + src/resource/archive/O2rArchive.h | 3 +- src/window/Window.cpp | 11 +++- src/window/gui/Gui.cpp | 12 ++-- 20 files changed, 192 insertions(+), 29 deletions(-) create mode 100644 ios/Icon.png create mode 100644 ios/Launch.storyboard create mode 100644 ios/PoweredBy.png create mode 100644 ios/plist.in rename src/port/{android/AndroidImpl.cpp => mobile/MobileImpl.cpp} (81%) rename src/port/{android/AndroidImpl.h => mobile/MobileImpl.h} (92%) diff --git a/.gitignore b/.gitignore index fea92c673..12606242a 100644 --- a/.gitignore +++ b/.gitignore @@ -346,3 +346,21 @@ ZAPDUtils.lib .vs/ .idea/ cmake-build-** +cmake_install.cmake +*.a +*.o +*.pc +*.vcxproj +*.sln +*.filters +*.stamp +*.depend +*.lib +*.tlog +*.recipe +src/install_config.h +# Removed jsonConfig and jsonConfigVersion +extern/nlohmann-json/*_jsonConfig* +*.pbxproj +*.xcworkspace +*.xcsettings diff --git a/CMakeLists.txt b/CMakeLists.txt index 038aff757..5e7c84863 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.24.0) option(NON_PORTABLE "Build a non-portable version" OFF) project(libultraship LANGUAGES C CXX) -if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") +if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") enable_language(OBJCXX) set(CMAKE_OBJC_FLAGS "${CMAKE_OBJC_FLAGS} -fobjc-arc") set(CMAKE_OBJCXX_FLAGS "${CMAKE_OBJCXX_FLAGS} -fobjc-arc") @@ -25,4 +25,3 @@ endif() add_subdirectory("extern") add_subdirectory("src") - diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index c39a69fc5..5d7b77fc1 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -2,7 +2,7 @@ find_package(OpenGL QUIET) if (CMAKE_SYSTEM_NAME MATCHES "Windows") find_package(SDL2 CONFIG REQUIRED) -elseif (NOT CMAKE_SYSTEM_NAME STREQUAL "Android") +elseif (NOT CMAKE_SYSTEM_NAME STREQUAL "Android" AND NOT CMAKE_SYSTEM_NAME STREQUAL "iOS") find_package(SDL2 REQUIRED) endif() @@ -62,7 +62,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows") ${IMGUI_DIR}/backends/imgui_impl_dx11.cpp ${IMGUI_DIR}/backends/imgui_impl_win32.cpp ) -elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin") +elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") target_sources(ImGui PRIVATE ${IMGUI_DIR}/backends/imgui_impl_metal.mm @@ -77,15 +77,15 @@ endif() target_include_directories(ImGui PUBLIC ${IMGUI_DIR} ${IMGUI_DIR}/backends PRIVATE ${SDL2_INCLUDE_DIRS}) -if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") +if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") target_include_directories(ImGui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/metal-cpp) target_compile_definitions(ImGui PUBLIC IMGUI_IMPL_METAL_CPP) endif() if (CMAKE_SYSTEM_NAME STREQUAL "Windows") target_link_libraries(ImGui PUBLIC SDL2::SDL2 SDL2::SDL2main) -elseif (CMAKE_SYSTEM_NAME STREQUAL "CafeOS") - target_link_libraries(ImGui PUBLIC SDL2::SDL2-static) +elseif (CMAKE_SYSTEM_NAME STREQUAL "CafeOS" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") + target_link_libraries(ImGui PUBLIC SDL2::SDL2-static SDL2::SDL2main) else() target_link_libraries(ImGui PUBLIC SDL2::SDL2) endif() @@ -97,7 +97,7 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin") find_package(GLEW REQUIRED) target_link_libraries(ImGui PUBLIC ${OPENGL_opengl_LIBRARY} GLEW::GLEW) set_target_properties(ImGui PROPERTIES - XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES + XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES ) elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux") if (USE_OPENGLES) diff --git a/ios/Icon.png b/ios/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fda7996dfd6c3c532571056076bea48037a27685 GIT binary patch literal 2968 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/PoweredBy.png b/ios/PoweredBy.png new file mode 100644 index 0000000000000000000000000000000000000000..80ac7c3573affe5a4fc8c633a5e40fbc74347b35 GIT binary patch literal 171738 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�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

E&8XSS5>vD2tx_*tUBSs=q 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Ê~Q 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 HIQ4%3t$5N~ literal 0 HcmV?d00001 diff --git a/ios/plist.in b/ios/plist.in new file mode 100644 index 000000000..3a6b609c5 --- /dev/null +++ b/ios/plist.in @@ -0,0 +1,54 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleDisplayName + Starship + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleGetInfoString + + CFBundleIconFile + Icon + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CSResourcesFileMapped + + LSSupportsOpeningDocumentsInPlace + + NSHumanReadableCopyright + + UIFileSharingEnabled + + UILaunchStoryboardName + Launch.storyboard + UIStatusBarStyle + + UISupportedInterfaceOrientations + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationLandscapeLeft + + UISupportsDocumentBrowser + + + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 430b95e07..6881c01c0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -101,7 +101,7 @@ target_sources(libultraship PRIVATE ${Source_Files__Window__Gui}) file(GLOB Source_Files__Utils RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "utils/*.h" "utils/*.cpp") -if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") +if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") list(APPEND Source_Files__Utils ${CMAKE_CURRENT_SOURCE_DIR}/utils/OSXFolderManager.mm) set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/utils/OSXFolderManager.mm PROPERTIES COMPILE_FLAGS -fno-objc-arc) else() @@ -167,10 +167,14 @@ if (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows") list(FILTER Source_Files__Graphic EXCLUDE REGEX "graphic/Fast3D/dxsdk/*") endif() -if (NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin") +if (NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT CMAKE_SYSTEM_NAME STREQUAL "iOS") list(FILTER Source_Files__Graphic EXCLUDE REGEX "graphic/Fast3D/gfx_metal*") endif() +if (CMAKE_SYSTEM_NAME STREQUAL "iOS") + list(FILTER Source_Files__Graphic EXCLUDE REGEX "graphic/Fast3D/gfx_opengl*") +endif() + if (NOT CMAKE_SYSTEM_NAME STREQUAL "CafeOS") list(FILTER Source_Files__Graphic EXCLUDE REGEX "graphic/Fast3D/gfx_wiiu*") list(FILTER Source_Files__Graphic EXCLUDE REGEX "graphic/Fast3D/gx2*") @@ -184,7 +188,7 @@ target_sources(libultraship PRIVATE ${Source_Files__Graphic}) #=================== metal-cpp =================== -if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") +if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") target_include_directories(libultraship PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../extern/metal-cpp) endif() @@ -248,7 +252,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "NintendoS target_link_libraries(libultraship PRIVATE Threads::Threads) endif() -if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") +if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") find_Library(OSX_FOUNDATION Foundation) find_Library(OSX_AVFOUNDATION AVFoundation) find_library(METAL Metal) @@ -277,7 +281,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows") ) endif() -if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") +if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") set_target_properties(${PROJECT_NAME} PROPERTIES XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES ) @@ -285,7 +289,6 @@ endif() if (NOT CMAKE_SYSTEM_NAME STREQUAL "CafeOS") target_compile_definitions(libultraship PRIVATE - ENABLE_OPENGL $<$:_DEBUG> $<$>:NDEBUG> $<$:SPDLOG_ACTIVE_LEVEL=0> diff --git a/src/Context.cpp b/src/Context.cpp index 610e7b1f9..a558a9d0b 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -216,6 +216,9 @@ void Context::InitResourceManager(const std::vector& otrFiles, SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "OTR file not found", "Main OTR file not found. Please generate one", nullptr); SPDLOG_ERROR("Main OTR file not found!"); +#ifdef PLATFORM_IOS + exit(0); +#endif #endif return; } @@ -334,6 +337,12 @@ std::string Context::GetAppBundlePath() { return externaldir; } #endif + +#ifdef PLATFORM_IOS + const char *home = getenv("HOME"); + return std::string(home) + "/Documents"; +#endif + #ifdef NON_PORTABLE return CMAKE_INSTALL_PREFIX; #else @@ -370,6 +379,11 @@ std::string Context::GetAppDirectoryPath(std::string appName) { } #endif +#ifdef PLATFORM_IOS + const char *home = getenv("HOME"); + return std::string(home) + "/Documents"; +#endif + #if defined(__linux__) || defined(__APPLE__) char* fpath = std::getenv("SHIP_HOME"); if (fpath != NULL) { diff --git a/src/config/Config.h b/src/config/Config.h index 0dea4c735..2537087e3 100644 --- a/src/config/Config.h +++ b/src/config/Config.h @@ -1,5 +1,6 @@ #pragma once +#ifdef __cplusplus #include #include #include @@ -99,3 +100,4 @@ class Config { std::map> mVersionUpdaters; }; } // namespace LUS +#endif diff --git a/src/graphic/Fast3D/gfx_metal.cpp b/src/graphic/Fast3D/gfx_metal.cpp index db030cc7c..9b08fc9fd 100644 --- a/src/graphic/Fast3D/gfx_metal.cpp +++ b/src/graphic/Fast3D/gfx_metal.cpp @@ -186,12 +186,16 @@ static MTL::SamplerAddressMode gfx_cm_to_metal(uint32_t val) { // MARK: - ImGui & SDL Wrappers bool Metal_IsSupported() { +#ifdef PLATFORM_IOS + return true; +#else NS::Array* devices = MTLCopyAllDevices(); NS::UInteger count = devices->count(); devices->release(); return count > 0; +#endif } bool Metal_Init(SDL_Renderer* renderer) { @@ -274,7 +278,7 @@ static void gfx_metal_init(void) { struct CoordUniforms { uint2 coords[1024]; }; - + kernel void depthKernel(depth2d depth_texture [[ texture(0) ]], constant CoordUniforms& query_coords [[ buffer(0) ]], device float* output_values [[ buffer(1) ]], diff --git a/src/graphic/Fast3D/gfx_pc.cpp b/src/graphic/Fast3D/gfx_pc.cpp index 635a0d9e4..f09a3893c 100644 --- a/src/graphic/Fast3D/gfx_pc.cpp +++ b/src/graphic/Fast3D/gfx_pc.cpp @@ -2875,7 +2875,7 @@ bool gfx_vtx_hash_handler_custom(Gfx** cmd0) { Vtx* vtx = (Vtx*)ResourceGetDataByCrc(hash); if (vtx != NULL) { - vtx = (Vtx*)((char*)vtx + offset); + vtx = &vtx[offset]; (*cmd0)--; Gfx* cmd = *cmd0; diff --git a/src/graphic/Fast3D/gfx_sdl2.cpp b/src/graphic/Fast3D/gfx_sdl2.cpp index 9180e20ca..a40991e81 100644 --- a/src/graphic/Fast3D/gfx_sdl2.cpp +++ b/src/graphic/Fast3D/gfx_sdl2.cpp @@ -358,7 +358,13 @@ static void gfx_sdl_init(const char* game_name, const char* gfx_api_name, bool s height = window_height; #endif + + +#ifdef PLATFORM_IOS + Uint32 flags = SDL_WINDOW_BORDERLESS | SDL_WINDOW_SHOWN; +#else Uint32 flags = SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI; +#endif if (use_opengl) { flags = flags | SDL_WINDOW_OPENGL; diff --git a/src/port/android/AndroidImpl.cpp b/src/port/mobile/MobileImpl.cpp similarity index 81% rename from src/port/android/AndroidImpl.cpp rename to src/port/mobile/MobileImpl.cpp index b9ce25e85..2e6c12ba2 100644 --- a/src/port/android/AndroidImpl.cpp +++ b/src/port/mobile/MobileImpl.cpp @@ -1,5 +1,5 @@ -#ifdef __ANDROID__ -#include "AndroidImpl.h" +#if defined(__ANDROID__) || defined(__IOS__) +#include "MobileImpl.h" #include #include "public/bridge/consolevariablebridge.h" @@ -7,7 +7,7 @@ static bool isShowingVirtualKeyboard = true; -void LUS::Android::ImGuiProcessEvent(bool wantsTextInput) { +void LUS::Mobile::ImGuiProcessEvent(bool wantsTextInput) { ImGuiInputTextState* state = ImGui::GetInputTextState(ImGui::GetActiveID()); if (wantsTextInput) { diff --git a/src/port/android/AndroidImpl.h b/src/port/mobile/MobileImpl.h similarity index 92% rename from src/port/android/AndroidImpl.h rename to src/port/mobile/MobileImpl.h index 548469872..a239c0606 100644 --- a/src/port/android/AndroidImpl.h +++ b/src/port/mobile/MobileImpl.h @@ -7,7 +7,7 @@ namespace LUS { -class Android { +class Mobile { public: static void ImGuiProcessEvent(bool wantsTextInput); }; diff --git a/src/resource/archive/ArchiveManager.cpp b/src/resource/archive/ArchiveManager.cpp index 9a68df082..7b9e679ed 100644 --- a/src/resource/archive/ArchiveManager.cpp +++ b/src/resource/archive/ArchiveManager.cpp @@ -5,7 +5,9 @@ #include "resource/archive/Archive.h" #include "resource/archive/OtrArchive.h" +#ifndef PLATFORM_IOS #include "resource/archive/O2rArchive.h" +#endif #include "Utils/StringHelper.h" #include @@ -155,13 +157,21 @@ std::shared_ptr ArchiveManager::AddArchive(const std::string& archivePa SPDLOG_INFO("Reading archive: {}", path.string()); if (StringHelper::IEquals(extension, ".zip") || StringHelper::IEquals(extension, ".zip")) { +#ifndef PLATFORM_IOS archive = dynamic_pointer_cast(std::make_shared(archivePath)); +#else + SPDLOG_WARN("Zip archives are not supported on iOS"); +#endif } else if (StringHelper::IEquals(extension, ".otr") || StringHelper::IEquals(extension, ".mpq")) { archive = dynamic_pointer_cast(std::make_shared(archivePath)); } else { +#ifndef PLATFORM_IOS // Not recognized file extension, trying with o2r SPDLOG_WARN("File extension \"{}\" not recognized, trying to create an o2r archive.", extension); archive = std::make_shared(archivePath); +#else + SPDLOG_WARN("Zip archives are not supported on iOS"); +#endif } archive->Load(); diff --git a/src/resource/archive/O2rArchive.cpp b/src/resource/archive/O2rArchive.cpp index c872fcfd0..08f94dddb 100644 --- a/src/resource/archive/O2rArchive.cpp +++ b/src/resource/archive/O2rArchive.cpp @@ -1,5 +1,6 @@ #include "O2rArchive.h" +#ifndef PLATFORM_IOS #include "Context.h" #include "spdlog/spdlog.h" @@ -84,3 +85,4 @@ bool O2rArchive::Close() { return true; } } // namespace LUS +#endif \ No newline at end of file diff --git a/src/resource/archive/O2rArchive.h b/src/resource/archive/O2rArchive.h index 50e1b4362..ac167f029 100644 --- a/src/resource/archive/O2rArchive.h +++ b/src/resource/archive/O2rArchive.h @@ -1,5 +1,5 @@ #pragma once - +#ifndef PLATFORM_IOS #undef _DLL #include @@ -31,3 +31,4 @@ class O2rArchive : virtual public Archive { zip_t* mZipArchive; }; } // namespace LUS +#endif diff --git a/src/window/Window.cpp b/src/window/Window.cpp index 4ee637920..2f459f3fc 100644 --- a/src/window/Window.cpp +++ b/src/window/Window.cpp @@ -47,6 +47,7 @@ Window::~Window() { void Window::Init() { bool steamDeckGameMode = false; bool androidGameMode = false; + bool iosGameMode = false; #ifdef __linux__ std::ifstream osReleaseFile("/etc/os-release"); @@ -68,8 +69,12 @@ void Window::Init() { androidGameMode = true; #endif +#ifdef PLATFORM_IOS + iosGameMode = true; +#endif + mIsFullscreen = LUS::Context::GetInstance()->GetConfig()->GetBool("Window.Fullscreen.Enabled", false) || - steamDeckGameMode || androidGameMode; + steamDeckGameMode || androidGameMode || iosGameMode; mPosX = LUS::Context::GetInstance()->GetConfig()->GetInt("Window.PositionX", mPosX); mPosY = LUS::Context::GetInstance()->GetConfig()->GetInt("Window.PositionY", mPosY); @@ -237,18 +242,18 @@ void Window::InitWindowManager() { mWindowManagerApi = &gfx_dxgi_api; break; #endif -#if defined(ENABLE_OPENGL) || defined(__APPLE__) +#ifdef ENABLE_OPENGL case WindowBackend::SDL_OPENGL: mRenderingApi = &gfx_opengl_api; mWindowManagerApi = &gfx_sdl; break; +#endif #ifdef __APPLE__ case WindowBackend::SDL_METAL: mRenderingApi = &gfx_metal_api; mWindowManagerApi = &gfx_sdl; break; #endif -#endif #ifdef __WIIU__ case WindowBackend::GX2: mRenderingApi = &gfx_gx2_api; diff --git a/src/window/gui/Gui.cpp b/src/window/gui/Gui.cpp index a4cef5437..b3da08642 100644 --- a/src/window/gui/Gui.cpp +++ b/src/window/gui/Gui.cpp @@ -210,6 +210,7 @@ void Gui::ImGuiBackendInit() { ImGui_ImplGX2_Init(); break; #else +#ifdef ENABLE_OPENGL case WindowBackend::SDL_OPENGL: #ifdef __APPLE__ ImGui_ImplOpenGL3_Init("#version 410 core"); @@ -220,6 +221,7 @@ void Gui::ImGuiBackendInit() { #endif break; #endif +#endif #ifdef __APPLE__ case WindowBackend::SDL_METAL: @@ -291,12 +293,10 @@ void Gui::Update(WindowEvent event) { #ifdef __SWITCH__ LUS::Switch::ImGuiProcessEvent(mImGuiIo->WantTextInput); -#endif -#ifdef __ANDROID__ - LUS::Android::ImGuiProcessEvent(mImGuiIo->WantTextInput); +#elif defined(__ANDROID__) || defined(__IOS__) + LUS::Mobile::ImGuiProcessEvent(mImGuiIo->WantTextInput); #endif break; -#endif #if defined(ENABLE_DX11) || defined(ENABLE_DX12) case WindowBackend::DX11: ImGui_ImplWin32_WndProcHandler(static_cast(event.Win32.Handle), event.Win32.Msg, event.Win32.Param1, @@ -463,7 +463,7 @@ void Gui::ImGuiBackendNewFrame() { mImGuiIo->DeltaTime = (float)frametime / 1000.0f / 1000.0f; ImGui_ImplGX2_NewFrame(); break; -#else +#elif defined(ENABLE_OPENGL) case WindowBackend::SDL_OPENGL: ImGui_ImplOpenGL3_NewFrame(); break; @@ -720,10 +720,12 @@ void Gui::ImGuiRenderDrawData(ImDrawData* data) { ImGui_ImplWiiU_DrawKeyboardOverlay(); break; #else +#ifdef ENABLE_OPENGL case WindowBackend::SDL_OPENGL: ImGui_ImplOpenGL3_RenderDrawData(data); break; #endif +#endif #ifdef __APPLE__ case WindowBackend::SDL_METAL: Metal_RenderDrawData(data); From 60624ca467a91b38f54e9b902c0f823bae46ba95 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Fri, 19 Apr 2024 03:29:49 -0600 Subject: [PATCH 02/26] Reverted vtx change --- src/graphic/Fast3D/gfx_pc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/graphic/Fast3D/gfx_pc.cpp b/src/graphic/Fast3D/gfx_pc.cpp index f09a3893c..635a0d9e4 100644 --- a/src/graphic/Fast3D/gfx_pc.cpp +++ b/src/graphic/Fast3D/gfx_pc.cpp @@ -2875,7 +2875,7 @@ bool gfx_vtx_hash_handler_custom(Gfx** cmd0) { Vtx* vtx = (Vtx*)ResourceGetDataByCrc(hash); if (vtx != NULL) { - vtx = &vtx[offset]; + vtx = (Vtx*)((char*)vtx + offset); (*cmd0)--; Gfx* cmd = *cmd0; From 407cb645f2c3ec0879d76f180e93bebb993d9b4e Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Fri, 19 Apr 2024 03:31:31 -0600 Subject: [PATCH 03/26] Readded ENABLE_OPENGL --- src/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6881c01c0..a6c746797 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -296,6 +296,11 @@ if (NOT CMAKE_SYSTEM_NAME STREQUAL "CafeOS") $<$:USE_OPENGLES> $<$:GFX_DEBUG_DISASSEMBLER> ) + if(NOT CMAKE_SYSTEM_NAME STREQUAL "iOS") + target_compile_definitions(libultraship PRIVATE + ENABLE_OPENGL + ) + endif() else () target_compile_definitions(libultraship PRIVATE $<$:_DEBUG> From 9591fc722674c75fc889ba4d53c352d1eaffcddf Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Fri, 19 Apr 2024 03:41:29 -0600 Subject: [PATCH 04/26] Fixed tidy --- src/Context.cpp | 4 ++-- src/graphic/Fast3D/gfx_sdl2.cpp | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Context.cpp b/src/Context.cpp index a558a9d0b..9679e48d5 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -339,7 +339,7 @@ std::string Context::GetAppBundlePath() { #endif #ifdef PLATFORM_IOS - const char *home = getenv("HOME"); + const char* home = getenv("HOME"); return std::string(home) + "/Documents"; #endif @@ -380,7 +380,7 @@ std::string Context::GetAppDirectoryPath(std::string appName) { #endif #ifdef PLATFORM_IOS - const char *home = getenv("HOME"); + const char* home = getenv("HOME"); return std::string(home) + "/Documents"; #endif diff --git a/src/graphic/Fast3D/gfx_sdl2.cpp b/src/graphic/Fast3D/gfx_sdl2.cpp index a40991e81..3fada56f8 100644 --- a/src/graphic/Fast3D/gfx_sdl2.cpp +++ b/src/graphic/Fast3D/gfx_sdl2.cpp @@ -358,8 +358,6 @@ static void gfx_sdl_init(const char* game_name, const char* gfx_api_name, bool s height = window_height; #endif - - #ifdef PLATFORM_IOS Uint32 flags = SDL_WINDOW_BORDERLESS | SDL_WINDOW_SHOWN; #else From 3cd8e916fe5bf48b642a2f27dd144517cc9fcb21 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 25 Apr 2024 15:56:34 -0600 Subject: [PATCH 05/26] Cleaned up based on comments --- extern/CMakeLists.txt | 4 +++- ios/plist.in | 2 +- src/CMakeLists.txt | 29 ++++++++++++++----------- src/Context.cpp | 7 +++--- src/config/Config.h | 4 +--- src/graphic/Fast3D/gfx_metal.cpp | 5 ++--- src/graphic/Fast3D/gfx_sdl2.cpp | 2 +- src/resource/archive/ArchiveManager.cpp | 6 ++--- src/resource/archive/O2rArchive.cpp | 2 +- src/resource/archive/O2rArchive.h | 2 +- src/window/Window.cpp | 27 +++++++---------------- src/window/gui/Gui.cpp | 28 ++++++++++-------------- 12 files changed, 53 insertions(+), 65 deletions(-) diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index 5d7b77fc1..c48e1501f 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -84,8 +84,10 @@ endif() if (CMAKE_SYSTEM_NAME STREQUAL "Windows") target_link_libraries(ImGui PUBLIC SDL2::SDL2 SDL2::SDL2main) -elseif (CMAKE_SYSTEM_NAME STREQUAL "CafeOS" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") +elseif (CMAKE_SYSTEM_NAME STREQUAL "iOS") target_link_libraries(ImGui PUBLIC SDL2::SDL2-static SDL2::SDL2main) +elseif (CMAKE_SYSTEM_NAME STREQUAL "CafeOS") + target_link_libraries(ImGui PUBLIC SDL2::SDL2-static) else() target_link_libraries(ImGui PUBLIC SDL2::SDL2) endif() diff --git a/ios/plist.in b/ios/plist.in index 3a6b609c5..f2fb1b9c6 100644 --- a/ios/plist.in +++ b/ios/plist.in @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion English CFBundleDisplayName - Starship + $(EXECUTABLE_NAME) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleGetInfoString diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a6c746797..3592172ad 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -287,28 +287,31 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") ) endif() -if (NOT CMAKE_SYSTEM_NAME STREQUAL "CafeOS") +if (CMAKE_SYSTEM_NAME STREQUAL "CafeOS") + target_compile_definitions(libultraship PRIVATE + $<$:_DEBUG> + $<$>:NDEBUG> + SPDLOG_NO_THREAD_ID + SPDLOG_NO_TLS + STBI_NO_THREAD_LOCALS + SPDLOG_ACTIVE_LEVEL=3 + ) +elseif (CMAKE_SYSTEM_NAME STREQUAL "iOS") target_compile_definitions(libultraship PRIVATE $<$:_DEBUG> $<$>:NDEBUG> $<$:SPDLOG_ACTIVE_LEVEL=0> $<$>:SPDLOG_ACTIVE_LEVEL=1> - $<$:USE_OPENGLES> - $<$:GFX_DEBUG_DISASSEMBLER> ) - if(NOT CMAKE_SYSTEM_NAME STREQUAL "iOS") - target_compile_definitions(libultraship PRIVATE - ENABLE_OPENGL - ) - endif() -else () +else() target_compile_definitions(libultraship PRIVATE + ENABLE_OPENGL $<$:_DEBUG> $<$>:NDEBUG> - SPDLOG_NO_THREAD_ID - SPDLOG_NO_TLS - STBI_NO_THREAD_LOCALS - SPDLOG_ACTIVE_LEVEL=3 + $<$:SPDLOG_ACTIVE_LEVEL=0> + $<$>:SPDLOG_ACTIVE_LEVEL=1> + $<$:USE_OPENGLES> + $<$:GFX_DEBUG_DISASSEMBLER> ) endif() diff --git a/src/Context.cpp b/src/Context.cpp index 9679e48d5..55501afda 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -216,7 +216,8 @@ void Context::InitResourceManager(const std::vector& otrFiles, SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "OTR file not found", "Main OTR file not found. Please generate one", nullptr); SPDLOG_ERROR("Main OTR file not found!"); -#ifdef PLATFORM_IOS +#ifdef __IOS__ + // We need this exit to close the app when we dismiss the dialog exit(0); #endif #endif @@ -338,7 +339,7 @@ std::string Context::GetAppBundlePath() { } #endif -#ifdef PLATFORM_IOS +#ifdef __IOS__ const char* home = getenv("HOME"); return std::string(home) + "/Documents"; #endif @@ -379,7 +380,7 @@ std::string Context::GetAppDirectoryPath(std::string appName) { } #endif -#ifdef PLATFORM_IOS +#ifdef __IOS__ const char* home = getenv("HOME"); return std::string(home) + "/Documents"; #endif diff --git a/src/config/Config.h b/src/config/Config.h index 2537087e3..7d3190fd3 100644 --- a/src/config/Config.h +++ b/src/config/Config.h @@ -1,6 +1,5 @@ #pragma once -#ifdef __cplusplus #include #include #include @@ -99,5 +98,4 @@ class Config { bool mIsNewInstance; std::map> mVersionUpdaters; }; -} // namespace LUS -#endif +} // namespace LUS \ No newline at end of file diff --git a/src/graphic/Fast3D/gfx_metal.cpp b/src/graphic/Fast3D/gfx_metal.cpp index 9b08fc9fd..01b1595d7 100644 --- a/src/graphic/Fast3D/gfx_metal.cpp +++ b/src/graphic/Fast3D/gfx_metal.cpp @@ -186,16 +186,15 @@ static MTL::SamplerAddressMode gfx_cm_to_metal(uint32_t val) { // MARK: - ImGui & SDL Wrappers bool Metal_IsSupported() { -#ifdef PLATFORM_IOS +#ifdef __IOS__ return true; -#else +#endif NS::Array* devices = MTLCopyAllDevices(); NS::UInteger count = devices->count(); devices->release(); return count > 0; -#endif } bool Metal_Init(SDL_Renderer* renderer) { diff --git a/src/graphic/Fast3D/gfx_sdl2.cpp b/src/graphic/Fast3D/gfx_sdl2.cpp index 3fada56f8..6683d1f2c 100644 --- a/src/graphic/Fast3D/gfx_sdl2.cpp +++ b/src/graphic/Fast3D/gfx_sdl2.cpp @@ -358,7 +358,7 @@ static void gfx_sdl_init(const char* game_name, const char* gfx_api_name, bool s height = window_height; #endif -#ifdef PLATFORM_IOS +#ifdef __IOS__ Uint32 flags = SDL_WINDOW_BORDERLESS | SDL_WINDOW_SHOWN; #else Uint32 flags = SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI; diff --git a/src/resource/archive/ArchiveManager.cpp b/src/resource/archive/ArchiveManager.cpp index 7b9e679ed..5e5043b36 100644 --- a/src/resource/archive/ArchiveManager.cpp +++ b/src/resource/archive/ArchiveManager.cpp @@ -5,7 +5,7 @@ #include "resource/archive/Archive.h" #include "resource/archive/OtrArchive.h" -#ifndef PLATFORM_IOS +#ifndef __IOS__ #include "resource/archive/O2rArchive.h" #endif #include "Utils/StringHelper.h" @@ -157,7 +157,7 @@ std::shared_ptr ArchiveManager::AddArchive(const std::string& archivePa SPDLOG_INFO("Reading archive: {}", path.string()); if (StringHelper::IEquals(extension, ".zip") || StringHelper::IEquals(extension, ".zip")) { -#ifndef PLATFORM_IOS +#ifndef __IOS__ archive = dynamic_pointer_cast(std::make_shared(archivePath)); #else SPDLOG_WARN("Zip archives are not supported on iOS"); @@ -165,7 +165,7 @@ std::shared_ptr ArchiveManager::AddArchive(const std::string& archivePa } else if (StringHelper::IEquals(extension, ".otr") || StringHelper::IEquals(extension, ".mpq")) { archive = dynamic_pointer_cast(std::make_shared(archivePath)); } else { -#ifndef PLATFORM_IOS +#ifndef __IOS__ // Not recognized file extension, trying with o2r SPDLOG_WARN("File extension \"{}\" not recognized, trying to create an o2r archive.", extension); archive = std::make_shared(archivePath); diff --git a/src/resource/archive/O2rArchive.cpp b/src/resource/archive/O2rArchive.cpp index 08f94dddb..0ad23c895 100644 --- a/src/resource/archive/O2rArchive.cpp +++ b/src/resource/archive/O2rArchive.cpp @@ -1,6 +1,6 @@ #include "O2rArchive.h" -#ifndef PLATFORM_IOS +#ifndef __IOS__ #include "Context.h" #include "spdlog/spdlog.h" diff --git a/src/resource/archive/O2rArchive.h b/src/resource/archive/O2rArchive.h index ac167f029..a1967bae1 100644 --- a/src/resource/archive/O2rArchive.h +++ b/src/resource/archive/O2rArchive.h @@ -1,5 +1,5 @@ #pragma once -#ifndef PLATFORM_IOS +#ifndef __IOS__ #undef _DLL #include diff --git a/src/window/Window.cpp b/src/window/Window.cpp index 2f459f3fc..b72d013d7 100644 --- a/src/window/Window.cpp +++ b/src/window/Window.cpp @@ -45,9 +45,7 @@ Window::~Window() { } void Window::Init() { - bool steamDeckGameMode = false; - bool androidGameMode = false; - bool iosGameMode = false; + bool mGameMode = false; #ifdef __linux__ std::ifstream osReleaseFile("/etc/os-release"); @@ -56,33 +54,24 @@ void Window::Init() { while (std::getline(osReleaseFile, line)) { if (line.find("VARIANT_ID") != std::string::npos) { if (line.find("steamdeck") != std::string::npos) { - steamDeckGameMode = std::getenv("XDG_CURRENT_DESKTOP") != nullptr && - std::string(std::getenv("XDG_CURRENT_DESKTOP")) == "gamescope"; + mGameMode = std::getenv("XDG_CURRENT_DESKTOP") != nullptr && + std::string(std::getenv("XDG_CURRENT_DESKTOP")) == "gamescope"; } break; } } } +#elif defined(__ANDROID__) || defined(__IOS__) + mGameMode = true; #endif -#ifdef __ANDROID__ - androidGameMode = true; -#endif - -#ifdef PLATFORM_IOS - iosGameMode = true; -#endif - - mIsFullscreen = LUS::Context::GetInstance()->GetConfig()->GetBool("Window.Fullscreen.Enabled", false) || - steamDeckGameMode || androidGameMode || iosGameMode; + mIsFullscreen = LUS::Context::GetInstance()->GetConfig()->GetBool("Window.Fullscreen.Enabled", false) || mGameMode; mPosX = LUS::Context::GetInstance()->GetConfig()->GetInt("Window.PositionX", mPosX); mPosY = LUS::Context::GetInstance()->GetConfig()->GetInt("Window.PositionY", mPosY); if (mIsFullscreen) { - mWidth = LUS::Context::GetInstance()->GetConfig()->GetInt("Window.Fullscreen.Width", - steamDeckGameMode || androidGameMode ? 1280 : 1920); - mHeight = LUS::Context::GetInstance()->GetConfig()->GetInt("Window.Fullscreen.Height", - steamDeckGameMode || androidGameMode ? 800 : 1080); + mWidth = LUS::Context::GetInstance()->GetConfig()->GetInt("Window.Fullscreen.Width", mGameMode ? 1280 : 1920); + mHeight = LUS::Context::GetInstance()->GetConfig()->GetInt("Window.Fullscreen.Height", mGameMode ? 800 : 1080); } else { mWidth = LUS::Context::GetInstance()->GetConfig()->GetInt("Window.Width", 640); mHeight = LUS::Context::GetInstance()->GetConfig()->GetInt("Window.Height", 480); diff --git a/src/window/gui/Gui.cpp b/src/window/gui/Gui.cpp index b3da08642..7d90ae6a1 100644 --- a/src/window/gui/Gui.cpp +++ b/src/window/gui/Gui.cpp @@ -209,8 +209,7 @@ void Gui::ImGuiBackendInit() { case WindowBackend::GX2: ImGui_ImplGX2_Init(); break; -#else -#ifdef ENABLE_OPENGL +#elif defined(ENABLE_OPENGL) case WindowBackend::SDL_OPENGL: #ifdef __APPLE__ ImGui_ImplOpenGL3_Init("#version 410 core"); @@ -221,7 +220,6 @@ void Gui::ImGuiBackendInit() { #endif break; #endif -#endif #ifdef __APPLE__ case WindowBackend::SDL_METAL: @@ -468,15 +466,15 @@ void Gui::ImGuiBackendNewFrame() { ImGui_ImplOpenGL3_NewFrame(); break; #endif -#ifdef __APPLE__ - case WindowBackend::SDL_METAL: - Metal_NewFrame(mImpl.Metal.Renderer); - break; -#endif + #if defined(ENABLE_DX11) || defined(ENABLE_DX12) case WindowBackend::DX11: ImGui_ImplDX11_NewFrame(); break; +#elif defined(__APPLE__) + case WindowBackend::SDL_METAL: + Metal_NewFrame(mImpl.Metal.Renderer); + break; #endif default: break; @@ -719,22 +717,20 @@ void Gui::ImGuiRenderDrawData(ImDrawData* data) { GX2SetScissor(0, 0, mImGuiIo->DisplaySize.x, mImGuiIo->DisplaySize.y); ImGui_ImplWiiU_DrawKeyboardOverlay(); break; -#else -#ifdef ENABLE_OPENGL +#elif defined(ENABLE_OPENGL) case WindowBackend::SDL_OPENGL: ImGui_ImplOpenGL3_RenderDrawData(data); break; #endif -#endif -#ifdef __APPLE__ - case WindowBackend::SDL_METAL: - Metal_RenderDrawData(data); - break; -#endif + #if defined(ENABLE_DX11) || defined(ENABLE_DX12) case WindowBackend::DX11: ImGui_ImplDX11_RenderDrawData(data); break; +#elif defined(__APPLE__) + case WindowBackend::SDL_METAL: + Metal_RenderDrawData(data); + break; #endif default: break; From 5598ddd4e5dc301451f22a5ff34ab122a5f7947e Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Tue, 23 Apr 2024 20:26:33 -0600 Subject: [PATCH 06/26] Added missing define and rewrapped into ifdef Metal_IsSupported --- src/CMakeLists.txt | 1 + src/graphic/Fast3D/gfx_metal.cpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3592172ad..2eca9de3b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -302,6 +302,7 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "iOS") $<$>:NDEBUG> $<$:SPDLOG_ACTIVE_LEVEL=0> $<$>:SPDLOG_ACTIVE_LEVEL=1> + __IOS__ ) else() target_compile_definitions(libultraship PRIVATE diff --git a/src/graphic/Fast3D/gfx_metal.cpp b/src/graphic/Fast3D/gfx_metal.cpp index 01b1595d7..3ea71cfb3 100644 --- a/src/graphic/Fast3D/gfx_metal.cpp +++ b/src/graphic/Fast3D/gfx_metal.cpp @@ -188,13 +188,14 @@ static MTL::SamplerAddressMode gfx_cm_to_metal(uint32_t val) { bool Metal_IsSupported() { #ifdef __IOS__ return true; -#endif +#else NS::Array* devices = MTLCopyAllDevices(); NS::UInteger count = devices->count(); devices->release(); return count > 0; +#endif } bool Metal_Init(SDL_Renderer* renderer) { From a8bd90b98aa9603ab71fbe266638e4865f9dd56a Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 25 Apr 2024 11:18:17 -0600 Subject: [PATCH 07/26] Added ios to the stats window --- extern/bgfx.cmake | 1 + src/window/gui/StatsWindow.cpp | 2 ++ 2 files changed, 3 insertions(+) create mode 160000 extern/bgfx.cmake diff --git a/extern/bgfx.cmake b/extern/bgfx.cmake new file mode 160000 index 000000000..e12aba94c --- /dev/null +++ b/extern/bgfx.cmake @@ -0,0 +1 @@ +Subproject commit e12aba94c77317eac4b16623d7e04de87cd66166 diff --git a/src/window/gui/StatsWindow.cpp b/src/window/gui/StatsWindow.cpp index aaefd7e5e..42ef7d314 100644 --- a/src/window/gui/StatsWindow.cpp +++ b/src/window/gui/StatsWindow.cpp @@ -22,6 +22,8 @@ void StatsWindow::DrawElement() { #if defined(_WIN32) ImGui::Text("Platform: Windows"); +#elif defined (__IOS__) + ImGui::Text("Platform: iOS"); #elif defined(__APPLE__) ImGui::Text("Platform: macOS"); #elif defined(__SWITCH__) From 9b2d016b263415ca2414f14c9078720fb3f17a89 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 25 Apr 2024 15:55:43 -0600 Subject: [PATCH 08/26] Fixed define to use MobileImpl --- src/window/gui/Gui.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/window/gui/Gui.cpp b/src/window/gui/Gui.cpp index 7d90ae6a1..24630dd23 100644 --- a/src/window/gui/Gui.cpp +++ b/src/window/gui/Gui.cpp @@ -45,8 +45,8 @@ #include "port/switch/SwitchImpl.h" #endif -#ifdef __ANDROID__ -#include "port/android/AndroidImpl.h" +#if defined(__ANDROID__) || defined(__IOS__) +#include "port/mobile/MobileImpl.h" #endif #ifdef ENABLE_OPENGL @@ -288,13 +288,13 @@ void Gui::Update(WindowEvent event) { case WindowBackend::SDL_OPENGL: case WindowBackend::SDL_METAL: ImGui_ImplSDL2_ProcessEvent(static_cast(event.Sdl.Event)); - #ifdef __SWITCH__ LUS::Switch::ImGuiProcessEvent(mImGuiIo->WantTextInput); #elif defined(__ANDROID__) || defined(__IOS__) LUS::Mobile::ImGuiProcessEvent(mImGuiIo->WantTextInput); #endif break; +#endif #if defined(ENABLE_DX11) || defined(ENABLE_DX12) case WindowBackend::DX11: ImGui_ImplWin32_WndProcHandler(static_cast(event.Win32.Handle), event.Win32.Msg, event.Win32.Param1, From e0adf3f4301a50486eb3a7b70995fe6439737c23 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 25 Apr 2024 20:30:07 -0600 Subject: [PATCH 09/26] Reimplemented O2R Support --- CMakeLists.txt | 7 +++-- cmake/dependencies/ios.cmake | 41 +++++++++++++++++++++++++ src/CMakeLists.txt | 11 +++++-- src/resource/archive/ArchiveManager.cpp | 10 ------ src/resource/archive/O2rArchive.cpp | 4 +-- src/resource/archive/O2rArchive.h | 2 -- 6 files changed, 54 insertions(+), 21 deletions(-) create mode 100644 cmake/dependencies/ios.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e7c84863..f6806f620 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,9 +18,10 @@ include(cmake/Utils.cmake) include(cmake/dependencies/common.cmake) if (CMAKE_SYSTEM_NAME STREQUAL "Android") include(cmake/dependencies/android.cmake) -endif() -if (CMAKE_SYSTEM_NAME STREQUAL "Windows") - include(cmake/dependencies/windows.cmake) +elseif (CMAKE_SYSTEM_NAME STREQUAL "iOS") + include(cmake/dependencies/ios.cmake) +elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows") + include(cmake/dependencies/windows.cmake) endif() add_subdirectory("extern") diff --git a/cmake/dependencies/ios.cmake b/cmake/dependencies/ios.cmake new file mode 100644 index 000000000..cc4843437 --- /dev/null +++ b/cmake/dependencies/ios.cmake @@ -0,0 +1,41 @@ +#=================== SDL2 =================== +find_package(SDL2 QUIET) +if (NOT ${SDL2_FOUND}) + include(FetchContent) + FetchContent_Declare( + SDL2 + GIT_REPOSITORY https://github.com/libsdl-org/SDL.git + GIT_TAG release-2.28.1 + OVERRIDE_FIND_PACKAGE + ) + message("SDL2 not found. Downloading now...") + FetchContent_MakeAvailable(SDL2) + message("SDL2 downloaded to " ${FETCHCONTENT_BASE_DIR}/sdl2-src) +endif() + +#=================== nlohmann-json =================== +FetchContent_Declare( + nlohmann_json + GIT_REPOSITORY https://github.com/nlohmann/json.git + GIT_TAG v3.11.3 + OVERRIDE_FIND_PACKAGE +) +message("nlohmann_json not found. Downloading now...") +FetchContent_MakeAvailable(nlohmann_json) +message("nlohmann_json downloaded to " ${nlohmann_json_SOURCE_DIR}) + +#=================== libzip =================== +set(BUILD_TOOLS OFF) +set(BUILD_REGRESS OFF) +set(BUILD_EXAMPLES OFF) +set(BUILD_DOC OFF) +set(BUILD_OSSFUZZ OFF) +set(BUILD_SHARED_LIBS OFF) +FetchContent_Declare( + libzip + GIT_REPOSITORY https://github.com/nih-at/libzip.git + GIT_TAG v1.10.1 + OVERRIDE_FIND_PACKAGE +) +FetchContent_MakeAvailable(libzip) +list(APPEND ADDITIONAL_LIB_INCLUDES ${libzip_SOURCE_DIR}/lib ${libzip_BINARY_DIR}) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2eca9de3b..e8f72b132 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -133,8 +133,13 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch") ) elseif (CMAKE_SYSTEM_NAME STREQUAL "Android") set(Source_Files__Port - ${CMAKE_CURRENT_SOURCE_DIR}/port/android/AndroidImpl.h - ${CMAKE_CURRENT_SOURCE_DIR}/port/android/AndroidImpl.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/port/mobile/MobileImpl.h + ${CMAKE_CURRENT_SOURCE_DIR}/port/mobile/MobileImpl.cpp + ) +elseif (CMAKE_SYSTEM_NAME STREQUAL "iOS") + set(Source_Files__Port + ${CMAKE_CURRENT_SOURCE_DIR}/port/mobile/MobileImpl.h + ${CMAKE_CURRENT_SOURCE_DIR}/port/mobile/MobileImpl.cpp ) endif() @@ -209,7 +214,7 @@ endif() target_include_directories(libultraship PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../extern ${CMAKE_CURRENT_BINARY_DIR} $<$:${CMAKE_CURRENT_SOURCE_DIR}/../../ZAPDTR/lib/libgfxd> - PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../extern/spdlog/include ${CMAKE_CURRENT_SOURCE_DIR}/../extern/stb + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../extern/spdlog/include ${CMAKE_CURRENT_SOURCE_DIR}/../extern/stb ${ADDITIONAL_LIB_INCLUDES} ) if (CMAKE_SYSTEM_NAME STREQUAL "CafeOS") diff --git a/src/resource/archive/ArchiveManager.cpp b/src/resource/archive/ArchiveManager.cpp index 5e5043b36..9a68df082 100644 --- a/src/resource/archive/ArchiveManager.cpp +++ b/src/resource/archive/ArchiveManager.cpp @@ -5,9 +5,7 @@ #include "resource/archive/Archive.h" #include "resource/archive/OtrArchive.h" -#ifndef __IOS__ #include "resource/archive/O2rArchive.h" -#endif #include "Utils/StringHelper.h" #include @@ -157,21 +155,13 @@ std::shared_ptr ArchiveManager::AddArchive(const std::string& archivePa SPDLOG_INFO("Reading archive: {}", path.string()); if (StringHelper::IEquals(extension, ".zip") || StringHelper::IEquals(extension, ".zip")) { -#ifndef __IOS__ archive = dynamic_pointer_cast(std::make_shared(archivePath)); -#else - SPDLOG_WARN("Zip archives are not supported on iOS"); -#endif } else if (StringHelper::IEquals(extension, ".otr") || StringHelper::IEquals(extension, ".mpq")) { archive = dynamic_pointer_cast(std::make_shared(archivePath)); } else { -#ifndef __IOS__ // Not recognized file extension, trying with o2r SPDLOG_WARN("File extension \"{}\" not recognized, trying to create an o2r archive.", extension); archive = std::make_shared(archivePath); -#else - SPDLOG_WARN("Zip archives are not supported on iOS"); -#endif } archive->Load(); diff --git a/src/resource/archive/O2rArchive.cpp b/src/resource/archive/O2rArchive.cpp index 0ad23c895..c9f46ea09 100644 --- a/src/resource/archive/O2rArchive.cpp +++ b/src/resource/archive/O2rArchive.cpp @@ -1,6 +1,5 @@ #include "O2rArchive.h" -#ifndef __IOS__ #include "Context.h" #include "spdlog/spdlog.h" @@ -84,5 +83,4 @@ bool O2rArchive::Close() { return true; } -} // namespace LUS -#endif \ No newline at end of file +} // namespace LUS \ No newline at end of file diff --git a/src/resource/archive/O2rArchive.h b/src/resource/archive/O2rArchive.h index a1967bae1..d395b7d17 100644 --- a/src/resource/archive/O2rArchive.h +++ b/src/resource/archive/O2rArchive.h @@ -1,5 +1,4 @@ #pragma once -#ifndef __IOS__ #undef _DLL #include @@ -31,4 +30,3 @@ class O2rArchive : virtual public Archive { zip_t* mZipArchive; }; } // namespace LUS -#endif From 6ce103076e605e0b9a9c8b969249386c50ff10ae Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 25 Apr 2024 20:31:13 -0600 Subject: [PATCH 10/26] Fixed tidy --- src/window/gui/StatsWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/window/gui/StatsWindow.cpp b/src/window/gui/StatsWindow.cpp index 42ef7d314..1248f14f1 100644 --- a/src/window/gui/StatsWindow.cpp +++ b/src/window/gui/StatsWindow.cpp @@ -22,7 +22,7 @@ void StatsWindow::DrawElement() { #if defined(_WIN32) ImGui::Text("Platform: Windows"); -#elif defined (__IOS__) +#elif defined(__IOS__) ImGui::Text("Platform: iOS"); #elif defined(__APPLE__) ImGui::Text("Platform: macOS"); From 2c74e2f6864ef27a3ec317651141961b6199e709 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 25 Apr 2024 20:59:06 -0600 Subject: [PATCH 11/26] Removed mistake upload --- extern/bgfx.cmake | 1 - 1 file changed, 1 deletion(-) delete mode 160000 extern/bgfx.cmake diff --git a/extern/bgfx.cmake b/extern/bgfx.cmake deleted file mode 160000 index e12aba94c..000000000 --- a/extern/bgfx.cmake +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e12aba94c77317eac4b16623d7e04de87cd66166 From d479ddc06c14b75671ae0cae1ea7eb04db6b5ffe Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 25 Apr 2024 21:06:24 -0600 Subject: [PATCH 12/26] Removed ios assets --- ios/Icon.png | Bin 2968 -> 0 bytes ios/Launch.storyboard | 43 ------------------------------------------ ios/PoweredBy.png | Bin 171738 -> 0 bytes 3 files changed, 43 deletions(-) delete mode 100644 ios/Icon.png delete mode 100644 ios/Launch.storyboard delete mode 100644 ios/PoweredBy.png diff --git a/ios/Icon.png b/ios/Icon.png deleted file mode 100644 index fda7996dfd6c3c532571056076bea48037a27685..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2968 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/PoweredBy.png b/ios/PoweredBy.png deleted file mode 100644 index 80ac7c3573affe5a4fc8c633a5e40fbc74347b35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171738 zcmeEu2Uk;B8*Z=+gN^z0!%7*)KnzF`M5J3r;e@6MMY>3nE;WP}Mny+d&?JC#9VsRl zBE5tJg#k=x3PNZBfdm9XkRS;VAot*Wcdh#y?i$uY51Qn>d+)Q~{k+ffyga;WZMJvU z(OnP-WG`U;I}!qsPJ}>qLVo@U{FkC9HhSP+GPlhg!y%B}2e!VYAXzzwA=~mE1HWIe zjn3h*(Q#f5@p_xxkB6cb>W`uC?!KW#WBsz<$^7osOFt_^SCyrDzQ`~Rn46!pxo9!* zU&P6?H!i(?>FMdIRb95XRx~;+)bLBd%F9q#IQy(vGcI4e5yJ=o!n=%hvVQBFPG~Id zn~B&4h5>%PYhvZi?fmB&a#dDJ>z~W>mwrx^`secKMaZ6iu0H;iT8hjZ2#x- z%st5Af398}-|_CBE6CpCkgd^zU$=h#_apzEOUS?Kp_9-OUSmdWV6F5oH2D7o8hp3;-eO;(J3N=@SoJkh(_H*<13%wP zZ3qnbbfY>y+^;%*=CR}TBUakcoYQ`q&Ur#y;gLFVS44G?%~)P+aYc~xkVS@%xKj^G zwqFws={2Lro(X%nGkauKYDsu#$s9;x(>&08Kg5!Pc$_X=ihhjbjGn1@B+J{?J!vk0@tQTphA z@!yyWS_z^6pEYMMLq;3U#bGJy#`}74UaUZDg9#js{5(4N8PIU4INkQhslde`aLQw(^`o37paM%5h1!-VE^O{Ri#HTO^Mqu$`Eu=)Gyez3ta+F2WiWPMWK z(_N~9!xbw;$=|E+1$gxnuLfg3oi_ygTnw z6XV<;c%<{Rcn|l5@lS$hN@Mtn;DIx&_Ip<_OS{v#ezJ;8ze6FN?_-w>8!2hq?UxJt z5dDGjo$O;*Dm<2M?PC{f)=(5W6V!(5f;!EAT64w-KHb$9GlK@p)n^uLu3RzH=fC~q z&8Suum6htl?THc&zse0dkvnpmbt||b02&hW9v8RT<{bXfEgtjj!p167-#Ki2@9^NrddvHTsbg7XS|2zafuU+@>6PW)&S4w#CkDeW8>*#OYu8SO2#u57og3q( zH|S?QesDx@&sXBtJ#aAZsh56g3_~64wlB^2^&o^6yVLKU`{OO5C@S^`hjin(b0%^l zI|6OJk+iH{SpJ~sUL&J}(moH&1|8S|ft)g5YUn-z=EQe|eHP`U_OfO`gAxKyQ?T>k zMFM=Hp91(_+f;tAOb5$f^=^odp}i99Iu)Hgc!im(iXR}5^V?;%D6GUJ-t%3aAwWU#ul;em5>u^vX2W(K z=&wyDrI59R$x!E6r=KB^w{QO!-t2L?*3mP<)9$u)8bS$3#U)t(n9NhQvL#wV5;PmU z`(+Ef{56mDmPmDQZmzHV;Mv|?jI>NDTO#^LHA1Bw4r2k=-QaK!n*89~-u|Kv2;S|Q zoJQS>iNL+oXe+e{bB(vydV#_JUZC*Q->%|NU)9s2@~$4dCqOVI;5Zm~6YQT!{p%HO zPn3RC5bl`2i-nym7&!?#{7>ZH{ulXc=4PWFtgfmw>GKzG5N!Y9#b$tKs&jIA(Zx;)d}fcrUNggAT9W zL)%fL_VfZ5*5V5f6m!`X&q;x1Pv3~|P`U)zD-WtMdI(}>?L1tBuLAg%bz^6&3>k{> z?%nOJn~l0c+9u)Mw>3q1^sn6NQQte0DMdz_WDCsW(qrPGixua%Yh(n*#0lqR!Q7b1 zBTSD3>EtYZDbuH(#&HB1ZNiIb_Wi7)krbUOBZd@QL|YV()I;Y`!Yghl538-f4}jF^ zTk7>R4glmm<6Hw$5SZTBYy7>xo1rfLxfciq1QpO?n7%S2vZ8*7f6AiHE!9f!woGDb zq|9-{g&CtuwTIL9ub0|{S>Y^j>*pAmfJXL{%Q~=hn7#^Q64g}fiIY#?|C2hPA9`at z<=QavB6S&_`rr|guQt}*6m&uS4%$fIJcQ5RleMf1`U(GiK4LJVI0iD3!TA791q5FS zZD0RWrx&4=^`*8Ms4lw42UqzV!v>X?tsyTSjSIiQ3|b>VWo-m62;%+;!f@0`HQ~TD zJ_1AExP}WUa%pqb*Jd{sml<$ZgXz)Nlgcu@V_-XZ`5Zq_rBrK7gQg8;uY6c=Q% z_V^>Ds*h40rv^p(i=M|>f%-<&wYm-JF?8?^zcLOW@1$oQmKP74U|fKYzgsA_jmyjC zr~%ep9nCm*3xS!Ae8nq?xnOnIB%V_XmAH7U%i zR9Q_U;E&hSC~wSVR`PNsO&0v&3_gaP_9La-T8!9Mr~2 zf5yk5bpfS@;-@xda+Gj!YK#ZSrZ$ExF^i_U1pCOd(f`j&=M3J2xZ7Ni1?^^(suc~x zk8ey6#6t&g>i|A;Yvf6@ zBNz(<=d&5V)b?i1aUqb7qgz>FsRfU0dKPS1nK9`BY^o@qJd*Q8tW)+I!vb~ZiDu!w zPWJr^kr;p67$D;!oPWPQ`Lgc-e%%gHE23LAsz%$@OE4-78>BI0b0az6Fk%@JeGOMr zXnPYq*N7tZP?z5l@V~kd{9}u(eXjAzr{V%|vPC(ku9<07{Kh@q;Bd&(!RA{POnFrd zZPaS6ED5wElf2=|M{Tx+8OgBPkqB3^uTbVq6i2(Gh!>_7>jbYFY}2 z&=9~6Xs8Ib-gOv#dCEp@o`xj7qv{R@e5$~$V-Vk*`#j*?o)jDXYjbyr(?W44L3J@W zCwr}VtYE~AO%Hx!r87LKdFw=m`}3|LDqi@KaqB>o5X@M4xy~_CkasTnMNI=s=(Y7K zpv#&VLpr+2f1QR@_1uf6EV1wd4qQ-R;w^hRewi=ul3qvj;

Khh3$4{7jT>v5fJqj|kO*66f1<-hGn4{enrq8ng!mk4q;<=r zO%Zcr_Ks!TgiQErynT;A2!p&8FCP14>%q9B`j{5X8*71w#9^Vdy;nr$f-=I5;OevK zu@`Y61-#T%o}SK2cGwA3#SlB1+33iul-iqp^~9VPu??RXr$9DWoot`kL+I>fooJ4^r^lSzR{{q zi{VR8#(G4}dB9`&Q32=Zc6e)Sv|Op=mgVJ`v`7J}c1?s7^1}5M=An|OVf+6M+0 zl${S7@rI9Y=%Gl@O0rZ3Fy73`N@hYY?b|G2!)fk&EWEpleLumDm%%vz7cHv>#e`Ue zg{!NP%+mOW4n5uwZxRk9`A|C+UlUZn1>YG_jXf9AvEl5_8vkG$OO}Il>ts`Czd4uE zej~p(KyR0VTtB=8DLSOh3dDM@3zmKuC$ldsa-+q@_|h?4oSt$=4kcYhU!T#dvNGBV zMLRr?r9`;XR)&eNpB)K&k(65|M_Dda@`s;Wa4O+o8`f?ynx?I|t^3UL;6gDZ+7+Q? zS6Cl5l5R;aUN*$Vsd6_Blr}J=G1)enK6mnx0@wd>k>eezt`*Oa-+NmaH6z=HIsWO}0-Ea_HcfX*r z&G=_O8dBmg1L-yzT0|yLyWh>j}^B*oa^e$FHZRW#xU3_zyoT#WcoW!~J zbj-{Kkq%oshElbhzAM3Vc)^+)4&ohPFTb$>dty!B!j1#`MSM3p1K{Xl{ ze$U)%T<3#K(}t1O8aEV=)CnfMBA_(({$r3E3I7{_OrkH9%k@e@5TBO(mCHE+j3VRp zD`vkCv;wEm*I~Olivq6I@BWO{U#=>iw?IqXcE_>ojD*t2ZFxiiseSOpS- ze#$UC#a`IyIz3kJ02_SUJWVEu#Y&%}AG;a+%5b+mED>}VH7pd`!MkhN^_5#N^jpN3 z4_#Adw`;85H6Qz(4XTApW;HR3I)Q~^e_jDkjYcl2x{Ci4plNd@CbSepW9wUR_eSY* zv6J%0I6>PC{pM--yq&vquanR4ZhS*vF@=5IgWdwzN1W#C%BAQ(Gp;|p^fxq>a=YUZ z@(!DL%1SW!xuS7CaIM`^vhY#W!!lQ6aApbZJASWmGC`C3`;*L=IOY-(?_$E*J@7uR zE|oRzptCXk>Mlwc!SC-%Wf*|_;Nz~zd5K|n#1%80hRA>(VLzC8V+GD&<_!vO2A8SUUM26;c+EQeT@h^N_fI^`pcGZ+J7O5 z`kzc$yCIMpHRxy@E#{nLjlj$aM{Z+KQQMxx2Zg%5`4aI)A1?Vb(Q$s4A0A$8x%>`cwq^aqmHMepyA-`9)D0EQT!N}gV z^srb|25i=~VnQqh^Mv6ECZVnU7Bi?aggH4A3MW@6*)}h_rI&Bc_cp9kQFrRy2A}T# zkfL$~fpOzUT1e(l^B7`q#Wg7-oR=#z;DRByuF>J;=5Cbr)9chn?RJOTaOpIxR3bZL3&hs-mpq-Gg-X&m*w#&~b}SU*#?0M;HdgO--mjw}_uhaX>|s9>US?~kTz+=nVz$Yk>64Si~` z=nm)$x2*lA`h$vsUc2YRck00F%W3o8-Qv>77Q#f=U8`ZZ=k zxgB4vk+A<_P}YR@BUDi8$NE5EFeD)SYDv0w%c}3cleC zW2|_6Pkm${qGbltTgwaA+3@e0sXxi3gUDwNjYeEOhZC%@b-4O7e(>1KtpCI;@R*jS zkcBGa9;$d{6|lAvG!qW&Fo!D_SjYFoM>;FC2Lgqxb z1)EJEpV zHQq>;DqtEs`^>cfUPLpP(Je4BX z5X_)>CzTN81T(}h2|hTRqKNTm3ns%ba;4Bx0aAlfhtQ3H;-(d_GKgwa5k*WR;?Y6EuaMa{kShm$v zB#`Igu~~30urUvLe1J?T-f^YP;rXOYrUAsnVA;07#wQZD8zr1?P-S$&F9aa(bkp$i zIHa-UEuqapZn9f5zf`M@3%KP7q8F-@7Vx;Z8;3G5@v|5=`f)}!KJMkCGO%F2+^E68 z7SsDb9_l+|qoA0x)--<%-vDQ`!Sb3H6pukX`bK&$@zh?P8`~rvjB^LGqt{PJvVzEN zrgM~Ss}(n12S{#&SRVo@6UYyQP`LTIMtb51{C!XwP0A41JjXyGoAQH=PZq|6lG2~b zS_pjQQcm;l!sknB`m|W-1e$lMrK5XI!f~!I6|Ve|7nRDLv4wBwE#2P|BP0fCgag2HUjsBduW|?kvo~tI zPk`pFsh;ETkOuqZUIM9Ab$p>V7U^`sp$y8nMy>5IMAFh03{fQd?9bS?AWMNTIo#-+ z=%=qWcF%q5<=$xm%fn&Xz2r(GmBMYc&ah(J39Bg^r2312tn$=ASGlJr024Ql_0plk ztidC{!o@dD^|-#@iI%48@krbudn2JU(q_ewe*m~bm8W8H@x?2fYABleq6igSK>|Y& z724i%i1eMsJb7)Q0MlPT$xVoN-5ajVt;5!*K4I{l_1MQ~n-z;yC&}>n^tmWoQc%ms zM$g5UAgPAtsdVPqu0lymBm>DA)GlYAmj;I!q_%T-y*&NkP z!)3dcd0q+8{?nP~vChs8G6#wdKx7N=+0)9kdjopcsPI?_+S8dy&&4~Y`S-N|0tX=B zdT2`S#z}UKvGF++x`3nu*_q8|lyj4jIw!y9VV}X!i-9Y&zlctrj;jp!#o{)_n^r zcTt9`;IT7No|jd|j>UN6E>UyPzSzui>_Wdrt6~Pyb&#wJY*zlrFL!tr<=xP+*eFsG zt{DzfwX8~wtfAXC%V!jdnKSkCc>m!&kD;s0pB=nuuPB8vy(2_}SlhZ(*G#W)Fqsp} zx$kq~VpknXrLANeglgQlS88iK4KrC#Sb^=p^2I)X24fV0y-u2UFwEMo8uUi1Eh5J; zbUk|aM^*I~8NRGo3Z2xn-dlF_Xh5__eMt8RAov4LAIsqAx^@}!Ly+5E)d!iQ-}@s; zRu0wz+9e%~x&DC#Kp;_lEXm~=tmiWy^kn3QLdGbfU#?mbNvJRx**PA>h80?5$#V(x|k1C&5B%! zxIoKF_*8|?DxlUIiX>IVj-@?IUh1xicPioC70*CfAa@Lm*oLlqQF6_ESqgGRVb_w% z@cLS)nm40qZufd@%ls}~(J(MQlEaff0ZC-v{Q)^^ic7y0!{A&r zl+gy>qZE947c3Vp^=5vJ8WW5Y@cA)h|J`31wliyGCVeIEU}0XQNN(+$(xj_+I=!+w z(AtT8_BCjjy-y0NfteJ#IWvNPYiOj&(XSinPfv8NKv z-g|6P4K=^|#`+SF@->WyA<~WCM|}5R`V5K>v7U&h?lr1?1I{NPd1wvlmpg%O)Uy`i zp|qh|P)&*W!K)zB^zN8C46CZtsPw5OvWj*i7Io| zL$M10eUqdyolUe?p;X5?s>r@Zb4k2<0}((J>J4i?iSIDOS0#=bvLAQ?M4V|&(@MdP zk7l3>asx-Pb-AQDFJGXT&H1uxDIV506lCL&7Dgw<4)y!xM>NXv9gy8ig3^&|;Dcpa zqT08?Di88*VT#4G_d?Ja3We+qq6Z`8UDKhkGcif?<)2t&irOCIs zJKT?%3uZN@j-ulbX{)w**F82@gTtAg7+@W!P8M#EEau-w~X zZ7rtE5Tq=de*00~MjV6WXLI@u4rxDpX}kN6>iO@hp~UL$FRKSS1}(M|t4H@5u4B{k zS-;O`V08{iH=_n~IL37g^+f@xGIZe^sO;R$QfQqr1BMRGwD&1)S#}vre~3NEHqnGC zuNYS~t%RnMJyKQ!r}4k0lxVTmpc(duO%K@J*%-W)ZRE<1YOFP8Bt>d??P^y`ao2gz z+SkcZP$+tJh!sz<-CgKANAKQ~v%cExd;2Yuq6vX?{<;;l1}~fMoRa50eX;1R8RF*= zvaVtL=AXO5mAx0*1}mX`q<2w!GJ}a)-CbJ@!WjQ%UWm$SRQ>Kxuw98*$|Fo`{26L# z@~9@`0*L9x$lZTS-A*%34Y4v7huRZ=&RMt;CSlI024O-FgV~X1Ex(`3NqGV%$4oy8 z4q33!i4`AqAVczACw>3V%x1w~p9s~fk%qsqYZh&$SPyqX8Q+9~V-0Y>PSF(*U(tS$ z2paNvUUnItnxydKsOvc7&SCO!)LH{GuMP0i)z3ayOg&pT8MOxzOw#IR=9*wFac!Nq zQ><}Vi*jT3&Xb0e@z>Dq`I~u<6(r5QwIhFI)~?mTgS-EZ&9uklxZu4alNN#UlOO|F z7827#^wl6*XbL8?+h+63t{jgo;)uN7Uhs9IrnFV8YfmB1}~_>&?C8{fq&e# zCDAm`<_ptR7$2$}3c@$i{Pw;ECwWV%(>j!5DQbM=c5Q2-9Y|H@N6S=8P1z1cFy$MA z`d9f?ax?S^jk=Jp&dQKc{T=akJ_%#`FcCi&6T3HHWuEZj?Xmn1-&Iv)5fu`*?5`$e zCzYSh*elFm7g?3t>|N?`2nZXSU8f<*>IDS6TVE}z z_}fnarP*KR*wr02%t&{X$GR7(GN;k-fV<5UlBzjl%l=6b^5RI=`u%Mn9nET{%Gc<# zcSf@Z^t_e&gXgc4D}U>|nEnLdztN%}lP=sL#U5H*8?*DsGe)mT#=hQ6!CJ^DZ{^VEM2RB?>Yuph($#QSh}?*2-L%D&N>E+keKXN@>_a(>6t6(T352Lgy@s!aC)6IZ>$dqjA_`q=s(pmQ1bJ3a zc2B5bwHi&0?eK-nq=j(lS~?+CF_F0Lg>M+Wkb#B67aO%09#HzP}oJO!e`?m9(hbnrS*qk`keGV<9tk`BurTx;rFREQwyFFqvN3JiAn&j^QJ77*r5vmh2A z+Q$bCR%aH8Lbp$s>#$lew@8uiYe8YaoJ;s? zx-OWS0Ob}?)If;PF;48?Y)CO~BYx_)$_^9TB;?RvzWiq(KT=?|LK@%sMpya?R8V76 z1$r&+W#p*7cAsir*T~G$GXf1wt+P5*$YZP}cdRdD*l;)H8reJEO^R3!#p3v9rsta5 z9sJbSCZSkR(R8_`tY6=>qK33VC#u>d2jJF25$|YMPqCLT7oEA@Ij+ri~j~X#t#eBBiToGC8fdTFl>_AV`A8F6{@uDBGQ|}@``fuG1Xz$ z%+idM-(<_$7Y^lBw9h$x_-}%7AHUhbdxBP5(!h7m=GXl49FgYFGsKNtXI*^VW@l<} zVs4>cja*%0AO+dKh1e@7h`!Epg8xT1e`Uq$Hy!eD54ZMHxC}D@PWCg zCQ5(o7BeO#XS|l;Gx6(0N=HLb5Ug-bB&8#-$KS|gL$GI4?J_Rmcn%&7{tf(&?_PiA z+UJc(9&ocmS(MyY&`SN^WaSejb`9WV?0n<9bF?lO;8ce+}t~ChhJnU{^<9&iZvu|%Mw^q^ruF1Id8LO6Mn>)8Fn1^l1inok5ECBO zb^-3HP#@`i(7r^(Zd%i^u_(cwt?vO9vprkL&Zk#k8}P?qJ`z4)5n?G4H>ezFl%gL$ z@ZhiBDrn#6`TU2bfQZ$I=TzY1D2Ux(Gw*ML?ASPTY#7H89_iA1?zOn5?XkF~qhaD4 zm{8y4IYwXbN;`0g4}@K^ntQ$fPmS)T04dk1ZM6uq2Q$$DK6H_&_7j2ja{3Xerthx5 zW6R%bxOKZ0{ZeavDSzJw1y17GIn~Fx9h9P>ERELz$3OdeHP`_?3Z zV0zxBzb=;zMv`?}N*h!P#h2vrJO572SB1qZGg^};(Ps%9ky_U^hc>C%@+p2q|48n4 zJAJGy-1R%(T2QuYl2W1- z^=n}kmA_%5^qeCp*io&scWD?XwGxQxB)~RV^D5OIgW)iHKN|BGMl$^gtWa_djNN zU&GlH@WS0%GPE(&dD8Hq&x4&`9s-*oE&9P0`gMtzg79Wt$7n+(2;_VER=qiBTR7`8 zk_Wiua*TC5bouIVy9;*fCmDXII7tVTLei3K0&aOoZ|54&jBz(Pyg`l852rUCS59mSx~H#$9fH_wD)(ud0oD}Ok#dUSeT6~Ouhlu$M>DoAbF(J%RlqF zymtwt{~un7th~&(5V*r(k8D2yf|suH#mV5JjwOdf3)|lTKsqSGlPou!+T;(@z8B9t zPPy{)9>{G?^%o%Vt`07hZLbS9eg9FrJ_OM`4!t*=rss_vWaOmH2KkSrbKWI~^Iqrn ztX0e|OA>H+uvU0Ntd&nK^tA0U0}sIkUlj{#PUQ^vC67FlX1kZkL~zJ zvO%u(6*EJ?Vr4hv?TH_!fj0&EfOUpt0+{HY^{q*<8dMWf02BH#W;Ync~)}xNV>n2y;>nz zlpx1?M%eWkOFY*$R&cN60I>%&jo3Dl(NWedixPK)+E-HE(;g>`U6Q^DjspYf*i5-8 zC6NWO-wAEUl#$0?Yj(oz4`g9(p0{i3JI4Z*kC>!IFw=+O#)uy3ARX>`C}Yre@o<~+ z>XJsAhJ}78sq~v3ph5Oi^e@NE&yFlk>hzj^4w_DYB>Mc&XPx(1RsHJeYXgKKaK0V4 zM^2!I>^4s_cKcs%yH!;B_LyGI{&Nn?kD+6o9TZXRg8~-`=$;ANJBLBzmWnWg+5YE7 zz35M8r2jyBvrH+$K{m^8BSwgFZKhg`LwNZf?g|YhJhpL*NpE7Wg%y?lg1wzoN3kpi z*^`HHl!=v>1p5m1{dZ(2_IXcz-Eh7ua_DMf{Lu`<6FOtPnBPKdW?pOc`ge|*3z|Qp zo*3}^J1Fr^simQ%e?Va>nE5?zRVeGJm20@^&z0#SU)CRA_v*?|yTZxui>VGP7eGp% z8_CZF4zk|f4_zXb=RnDHdc+md+3Qk}TZ*w;)sC~`&|Uph3z-0GVDQAZ5kkBV$V60F zAf3t;ahyeX(637QF<9Bn>xe{cg?uaG?PH|q4znVcg@pp!?7UoLU%iTG@7Y7ew!4*Z zJ^NQOa7OCOv?B>ueERdM9nxxEWe$#h2tbjpmGEK>GDEyrav8nLWLwHr>`lZYeogU+ zLs13#>vmkjId6B~2~|Z&sU>?q#<9iI1w-UNCI4Hb*@#zy+#d5N}Rr1NTi5c zYFpra>~0GgkM54Y#R0HF!LmO5kHyIVm*%9*QK3}i{HKi!I7}udD=eR8Aj<2|d0KAV z^a)VJa~Lz72}=RmjjHWHSldoh#<%(^zp6fv%Hf%V-qd%2L?pLHt(!^fi^@hd(X5%- zoc7r05fDb@A92~7fVx`{qf44A+Dr^UH>1qiw(S{Fh}vq^LR>{~jS9w&srah5uLQC} zAp8LDqsb%Y}QmM<_RZM&Ioba5-=CJT-VL4Gg2Q z&GhV^MnBIUQqSvckQbOA$9KA$EyTtvbT&wIF7p!<`*g-`VE(Hyke~~=KMC+Fv^7<@ zKA8iOE`p!dBX#7_78@1-(#fg&@A|UT`rJHZkaNa7+%7@l)Eg&@AkJDLt{W?kiVB?` zO*7(tWfX&n_LZ6<^^nwUq^fxAX-seiXqpS-oq+!_cZ)e$?XQ>kFefu}Av5M8P7g*5 zKhXIKX=4|v7Zcg|we>W79IdI45hFS>npWer24jyr4eJ3kRcXG%cJN_+t<*r;_d9#` z?NJ$?`|2eN`6$2k3Ow15{iK7waGtUrgbRr}&CelR4S6|~#XcYQSGhLLvQc8MKwO(Edj?6o^Vm~ptiI|=G@NP*x}%Yv!6DP zK)xib-`@c~l;_SBMtY*+R2hb9k0se4dt8}5SZVAn+u9A9qxb~-7m)@g-mW^jxyFvZ z6UA`xRaQ_W4*mVcsN0$wbHmHP1Dkf6H${kI(gZ1%^at~C5wW;2us&9oJk6|%$fxu} z>q1KpmE9ejO*nmwo)b&`x#RCc_z~MBr>Ul$;WS88xi_jj-Wl}GsX*R!{V%59ylt9- zN7Bk4aN-u{3H@*FMnIkArrvw5izA*>(-XgvO~~g)2p{K^X5-?j+sh)QA1IkGINeS7 zjcu3RorFROp{|CV?G7?+rJWsWuD%mJgsTz9K|XCaN;QMJTtPUXI(7F`S!(bIVKncs z7Rn5*AADvR{omIU!*DS@WbP(!7K(LP2&+eWE3F01xVA~vM{d|1p^ax%{=}1jN1)D+ zBk<+0-aCAG#^hWNJG(1V9ECenoJV>G`YU>mPG#=RfMJ4hnszz9mk=wi8L8fD7bd%A z_xxFEEm%D|J?seM-uvTNO!Q-exYLE(B0JA$Hu~Z&smh0(6=LFTVo-yw#qBsF!$Mk| z9X6ZObaaY1QBC-@ei*Vs>d40j*cXB4^pnWU)y*lIV3ok4tHu^%Pw9lP+>2A8t6+78 z_DQfy$3x@eff8L-3Fybn__3+(o7oWz$^e42g+H_{!V7Nb+cJ=VBQBS0Q9oOr>6FjMTI+l5Ae~N`V$)KaBeEF z(o?}&Kn3f+B+tmn03hM`a#HmiY6y*vy?NQr8Ofh^P?=c>OIiI~Bzg;tjofm`H(C=( z`4&p%tC_a(^Tz-|R)>|`JP{au&bc5rRcoRXo8WoyaZdOZZG&7k_-iquOt*@r7;+lt zHCTHc5sPx+a`!8Opj@jJhr)XYBE{1LW4YKqlUipq2pFN70P#af_^3fnj=x+Py00>2 z7`KkL3ZG}D;?|v}9Abx^QB5yR+rJAzQ|H~Djj@7PnY3SLN}-LoHS0UCn?c}YQ)l{_ zmcQJMOemrSQjDMV!R0u`FwD&)jL$3WxOzoG!SHCMLqUX9wCAkx;;nkVwM^hxPNr!! zEZhR;4%*DEmaN(iwWZVg*7~srQ}r`#lra}^_W2!A9_04ltwUGB zxg0Y1le^JLM)IyDnZ)VLuKUYJ>Uh3>d-rrLgIxww%3HgFCQJl3*5iU5+b8>#SD$=0 zx#yU{p#gb>!QDBHnS%RbtXHtmaFoF51@dqlQ7@IYZ|=3qragbJS$!lLA?GbOhl{J7 zkZ0GPREDg#eWx#f|J~X~X3j0m-)_LJ3G_I)>#jxwnb&nuju>tRQdJoX$`~h{QdiR= zJu}R-#4}`^7j-OosDhEP#$hzOQu~Rg8F zit#zNWE5k;ALB>GBYs{I6GKb~LrYL3ccl!DI#Kdu#fON_1y$V;tR5_M zIu~Wd-y7vKj4ihP(5T+G?b{5f$Q^4LZO{>wBm3t%*78)w#%Xnv4Kco{b6n?kcQYmocV{@nXt2*eO}m zsH~bZ=cYqAn>DDk>1;Aw;lgvXvttqQSE_>nr_rGukmu$S7f@?RY>hQfDr5Nw^p+$# z3>I$v8ZHB-U)$~(XoFc2KLSkjqB`n?lZ3hNAEAwD$S0A3v#T5NXS_ogy|_4K#u0eh zlM3!%gnVbcHJnRE&rfwEE5I6TDd{+49$0wqw$d991v}Rqjy(1vAi^K7YV873I+UmxYRdK zl+eXkmEi#h5p^ksA&Gh*2wH6=?3$een_-lS??q>L2M<}oxKY^m@(QtL!^mxfqFMuP z=(jwAxa|arw3-6cQF!_LcZsGqvC_d-b;f-8?CE4eTZ>H(l~fapv<|-hl@G{VF-_xu z_QGZu=zNs5lqpLuxQE|v_=KGoMx`)lsh`3@oM@qKr~vVq7$T6S(Zxox8%W$FvUDyF zxF5C<9{}an2OU0!_Cw5l>n)$d2X+B|vJD@}zzpeXjTK-5x}ZPfaYlND2J0W7B}lOL zHhnN&mih!9v_U~&_O2u#l6XUkZz#?s__zcRn+3fSSq;{p7YGLus|)Tm%ptc8&hQ&e z2<6hZYf8J;V~zMigWQx^cSs_9%e4KqN>v=^cCNFXY)vGHFCwZwG6}aMx}g>*)h7Gm zhC!MNw{x=2UupP>H8UvG1DEw1S`cj>isdMb?_7K6aDoB#>9j5w#4XaCp~#>NZcDovJ( z!y+B}i*1Jze0fU>`48-ijHD?Rm{JAosH=H*&F+>d0+WquH5of0+T7EsG#P+OI5 z8TLg#OdBx}UVE^Cvi|rrUD&+@5|%;5SeUH*Ve|Xb_(W+3SVW zr%0<+(69@E&Zff9b{EZin2`2?Hsf&GQ+9`t=hl5$uWR{YRCs`nscMYKX2w7Z|FJPG zOq-cBV}(xkL|NaN=}+CVIDCDa;^o!bTA+LF!EMMt^e-(k8lj8SJ6lxgx&w0Xehn1k z>Ere(;W9#P&TYp#8;VwxGt=#B$B6(+gV9_mO*>vpMx5>J6ZV11(^l7DqML!LsM;u( zIQ-XNdmsmK(#5vlyDHCAIH-S>#;^M)El#R0XPTXLjrG1#6I>+?(vJUKF9I{IrtzDm zf%b~GLbV-g)~BPg+-I#2|qUX1_s#l`-Kh`gGf7gV()7vDz_%-ME*R!)f~=i5M%eK08l2Wxb{4 z9AZ`d0(mig5a#%aJHQ2It-rfvaU8eA4^Br`|3#}S2{BOy0rtgx{Omcfr?Dg82QKk$ zgg&tUUpwJcm9&a}ZR_ejYk`g2^vdsnmrpP3k$fW**le*UYCm4j{Se{aS)syMURK`; z`C8ULV5avIem%x&4s3e32bF!T)usTL*mZ}!ZvU{;wClsFDZ)bR3rTd{Vk17P$r81M zYfyCmk4W#M$Tx*gfPJrP@27!TR8X0`v~ISpsNMKD#b@}CsomK}eBqhxpwZ*cAFDvz z4{^^FT+xQS)p}!74vHJn(AB`LS(Utnjv)jka{W)CddjOA$>CRP+7q(oO^spX%OtE6 zr0CL*S+bQ$)GQ5>151a29L|>SO`RdaH=G0{XWDq#oDf{jGft>nYCZ^{!W{N4UBx>) zP&(T-g_Me0FHD(RALCo!Xt^Eo&hnJaRr@$8 z&{v)rj)btk1~p+A58Pd_A!tMo7x$*9?loh0Y%wM9+{X8YDU40mx3hb1g1;l~M|7GX zZAZ~)+Xt(wZw37z6_anE*z3J6sq*5(H71M?0}@R@`+9F^D?77XXx+Jld@qY#Xe0UVu9*LT|sItOmbZh_Qs53sK@yJzY@kn7ij%?F#&FIP*T?m2UpZ&Sv{#~XOw zn(f{hu4h?bXX*8)|J?18+GAQ}wH+Apyy;Yol+O2VU{sg&=!@I%l`Bh32f8*aKThDH zxf62Z{njIJwPq7)W`9@{@>62c+%bTz$9nX^C0G~JgB^=At3Q!&b* z!j!eO@b&Y#oVOr!-s%E=#{&WPG;p>XOa|lgAm%R6X`8#@QjC|El)5Z)yE~T=V9%@3 z7MzPTgl_GhV4E<^lK?4*&)6!k+3livbAJGSJqm~JSiU&${_Cx?*l!ECg#_KZYQpDp z;Eq2Pz4esOMuFX`dMb6~t={4Ask@oj*txt+&J1Avd@kuW#kv@;yMQ&j-ze_$8ceQp z+Xp#+Vk>RGc20w=)I*Q?J4r*dYBp6FV_nO?;oblO(4+XA;~P%>Z`2uWZQRn>V*1GH zvSv|89TUv>^*`P^{0W?TC$Ob9arMgruHhsXN*SzHX0+jrPBTn>HWw@!hU>)nV|m#U z5w@qsg{uiUpS!gJpZ!iU?t)GpP=EvTRjULFLTN05*g9Wjh?mdjgaQeA4DX8DmOeKk zyr9QMMZ!QaU$P5)oMT>KOF^&f`B$K7)d)`SRzL8&hOk&%qq!giEXp~`fMR-qUGMrF z2v|4;pm{kgz-kFu@u{k0>8@xqexK1C;goBgcAYQVMNbXRP=c!)W;n z)S_OVYRst8E!_!ujxDwDYg-?MrXmEN2?sl65n<6d?qK9eBi#Oz?zx;MXtA=sCPSBY zU2AzDMwGic1Hh*Kn9jjDYtm0iE7gM74ZK6yk2~lLjCG~yjpjP@UGk-Q6>+5*&GD|! zI1&qOqvlXDbPhk_B2ETp@zyzpzNZqP{oHGzEOi6V%k)YmgiExA3$svB!8-l+^ngUC z`$0OC5zm#&`0(M@S|wZ> z5`{u1NC+blg5vTO!R`u=XsDXKx(yZk>!67?%VIlZK>bIA#9qMulmhdz!&qJheV&u^ z4c(Y|N$9T6YQL#iFB}R8Utg4@r()Ot=EZWddrkijN!J~g)cdzhOD!|AGBsDGY2{4I zjaHgwu5X!|+fpNQd3axXy5y>R3nxN(D`3_*D5_g)v*#Xp?GbDrlj z?)$S&!;SuoBh2qa6?r*wts|bKCz9sxYGKW3j9MR@#gA9o=b^w$z@Swxwsjsku6a^_xbKtm+4i&*leKgd zK(_K^T+f*f&lo%!&0?!S(vCwGSwwoeH3`4Vtm|ca9SE9L=_AIHrIT($7Kk8A#1XvI zdvyu4o^7J4fyDh4J4h-d^tL`g$0gPV;R#f%vTSdRBotO!(WJ=20&d)?n#IR^+U8)i zFrqonzd&>cge)X+?gSf8N7)x4e z{DsvD)UCo{8e)%d#`!lxwJ)eTRb-B&Z&xBUu@E{1kEWlX9eI$=6Ypvj zRHic9+7P~Ky^k{&@?mzqu870<{?W;Ve&5)?~Yf*^2Ob_xb@~Dn|uS= zW`K6YiKXUM>fX=F%JjAV$SS|>_nLmojpUh0xjuY8KB<53+t_R+7Rd(yuf(07Wjtc3i>O;r%jdl|s zM$l*&FMQ)M8Lvgh3kJ-2`M~oS%_mf02r?F({jN5ppn$f+w_*n|&Bo?zTL7J$4mC49 zi&A+$�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

E&8XSS5>vD2tx_*tUBSs=q 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Ê~Q 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 HIQ4%3t$5N~ From 740f8bfc797864589a7d3b94bd684a12c7b14554 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 25 Apr 2024 21:37:40 -0600 Subject: [PATCH 13/26] Added build without signature --- .github/workflows/build-validation.yml | 19 + CMakeLists.txt | 5 + cmake/ios.toolchain.cmake | 1122 ++++++++++++++++++++++++ ios/plist.in | 54 -- src/CMakeLists.txt | 14 + 5 files changed, 1160 insertions(+), 54 deletions(-) create mode 100644 cmake/ios.toolchain.cmake delete mode 100644 ios/plist.in diff --git a/.github/workflows/build-validation.yml b/.github/workflows/build-validation.yml index 003927f08..c2cdafeee 100644 --- a/.github/workflows/build-validation.yml +++ b/.github/workflows/build-validation.yml @@ -28,6 +28,25 @@ jobs: name: soh-mac path: build-cmake/src/*.a if-no-files-found: error + build-ios: + runs-on: macos-12 + steps: + - uses: actions/checkout@v2 + - name: ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{ runner.os }}-ccache + - name: Build libultraship + run: | + export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" + cmake --no-warn-unused-cli -H. -Bbuild-cmake -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DCMAKE_BUILD_TYPE:STRING=Release + cmake --build build-cmake --config Release --parallel 10 + - name: Upload build + uses: actions/upload-artifact@v3 + with: + name: soh-ios + path: build-cmake/src/*.a + if-no-files-found: error build-linux: runs-on: ubuntu-latest steps: diff --git a/CMakeLists.txt b/CMakeLists.txt index f6806f620..3d240d351 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,8 @@ cmake_minimum_required(VERSION 3.24.0) option(NON_PORTABLE "Build a non-portable version" OFF) +option(SIGN_LIBRARY "Enable xcode signing" OFF) +option(BUNDLE_ID "Bundle ID for xcode signing" "com.example.libultraship") project(libultraship LANGUAGES C CXX) if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") @@ -14,12 +16,15 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows") endif() include(cmake/Utils.cmake) +set(ADDITIONAL_LIB_INCLUDES "") include(cmake/dependencies/common.cmake) if (CMAKE_SYSTEM_NAME STREQUAL "Android") include(cmake/dependencies/android.cmake) elseif (CMAKE_SYSTEM_NAME STREQUAL "iOS") + set(PLATFORM "OS64") include(cmake/dependencies/ios.cmake) + include(cmake/ios.toolchain.cmake) elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows") include(cmake/dependencies/windows.cmake) endif() diff --git a/cmake/ios.toolchain.cmake b/cmake/ios.toolchain.cmake new file mode 100644 index 000000000..379014166 --- /dev/null +++ b/cmake/ios.toolchain.cmake @@ -0,0 +1,1122 @@ +# This file is part of the ios-cmake project. It was retrieved from +# https://github.com/leetal/ios-cmake.git, which is a fork of +# https://github.com/gerstrong/ios-cmake.git, which is a fork of +# https://github.com/cristeab/ios-cmake.git, which is a fork of +# https://code.google.com/p/ios-cmake/. Which in turn is based off of +# the Platform/Darwin.cmake and Platform/UnixPaths.cmake files which +# are included with CMake 2.8.4 +# +# The ios-cmake project is licensed under the new BSD license. +# +# Copyright (c) 2014, Bogdan Cristea and LTE Engineering Software, +# Kitware, Inc., Insight Software Consortium. All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +# This file is based on the Platform/Darwin.cmake and +# Platform/UnixPaths.cmake files which are included with CMake 2.8.4 +# It has been altered for iOS development. +# +# Updated by Alex Stewart (alexs.mac@gmail.com) +# +# ***************************************************************************** +# Now maintained by Alexander Widerberg (widerbergaren [at] gmail.com) +# under the BSD-3-Clause license +# https://github.com/leetal/ios-cmake +# ***************************************************************************** +# +# INFORMATION / HELP +# +############################################################################### +# OPTIONS # +############################################################################### +# +# PLATFORM: (default "OS64") +# OS = Build for iPhoneOS. +# OS64 = Build for arm64 iphoneOS. +# OS64COMBINED = Build for arm64 x86_64 iphoneOS + iphoneOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step) +# SIMULATOR = Build for x86 i386 iphoneOS Simulator. +# SIMULATOR64 = Build for x86_64 iphoneOS Simulator. +# SIMULATORARM64 = Build for arm64 iphoneOS Simulator. +# SIMULATOR64COMBINED = Build for arm64 x86_64 iphoneOS Simulator. Combined into FAT STATIC lib (supported on 3.14+ of CMakewith "-G Xcode" argument ONLY) +# TVOS = Build for arm64 tvOS. +# TVOSCOMBINED = Build for arm64 x86_64 tvOS + tvOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step) +# SIMULATOR_TVOS = Build for x86_64 tvOS Simulator. +# SIMULATORARM64_TVOS = Build for arm64 tvOS Simulator. +# WATCHOS = Build for armv7k arm64_32 for watchOS. +# WATCHOSCOMBINED = Build for armv7k arm64_32 x86_64 watchOS + watchOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step) +# SIMULATOR_WATCHOS = Build for x86_64 for watchOS Simulator. +# SIMULATORARM64_WATCHOS = Build for arm64 for watchOS Simulator. +# MAC = Build for x86_64 macOS. +# MAC_ARM64 = Build for Apple Silicon macOS. +# MAC_UNIVERSAL = Combined build for x86_64 and Apple Silicon on macOS. +# MAC_CATALYST = Build for x86_64 macOS with Catalyst support (iOS toolchain on macOS). +# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS +# MAC_CATALYST_ARM64 = Build for Apple Silicon macOS with Catalyst support (iOS toolchain on macOS). +# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS +# +# CMAKE_OSX_SYSROOT: Path to the SDK to use. By default this is +# automatically determined from PLATFORM and xcodebuild, but +# can also be manually specified (although this should not be required). +# +# CMAKE_DEVELOPER_ROOT: Path to the Developer directory for the platform +# being compiled for. By default, this is automatically determined from +# CMAKE_OSX_SYSROOT, but can also be manually specified (although this should +# not be required). +# +# DEPLOYMENT_TARGET: Minimum SDK version to target. Default 6.0 on watchOS, 13.0 on tvOS+iOS/iPadOS, 11.0 on macOS, 1.0 on visionOS +# +# NAMED_LANGUAGE_SUPPORT: +# ON (default) = Will require "enable_language(OBJC) and/or enable_language(OBJCXX)" for full OBJC|OBJCXX support +# OFF = Will embed the OBJC and OBJCXX flags into the CMAKE_C_FLAGS and CMAKE_CXX_FLAGS (legacy behavior, CMake version < 3.16) +# +# ENABLE_BITCODE: (ON|OFF) Enables or disables bitcode support. Default OFF +# +# ENABLE_ARC: (ON|OFF) Enables or disables ARC support. Default ON (ARC enabled by default) +# +# ENABLE_VISIBILITY: (ON|OFF) Enables or disables symbol visibility support. Default OFF (visibility hidden by default) +# +# ENABLE_STRICT_TRY_COMPILE: (ON|OFF) Enables or disables strict try_compile() on all Check* directives (will run linker +# to actually check if linking is possible). Default OFF (will set CMAKE_TRY_COMPILE_TARGET_TYPE to STATIC_LIBRARY) +# +# ARCHS: (armv7 armv7s armv7k arm64 arm64_32 i386 x86_64) If specified, will override the default architectures for the given PLATFORM +# OS = armv7 armv7s arm64 (if applicable) +# OS64 = arm64 (if applicable) +# SIMULATOR = i386 +# SIMULATOR64 = x86_64 +# SIMULATORARM64 = arm64 +# TVOS = arm64 +# SIMULATOR_TVOS = x86_64 (i386 has since long been deprecated) +# SIMULATORARM64_TVOS = arm64 +# WATCHOS = armv7k arm64_32 (if applicable) +# SIMULATOR_WATCHOS = x86_64 (i386 has since long been deprecated) +# SIMULATORARM64_WATCHOS = arm64 +# MAC = x86_64 +# MAC_ARM64 = arm64 +# MAC_UNIVERSAL = x86_64 arm64 +# MAC_CATALYST = x86_64 +# MAC_CATALYST_ARM64 = arm64 +# +# NOTE: When manually specifying ARCHS, put a semi-colon between the entries. E.g., -DARCHS="armv7;arm64" +# +############################################################################### +# END OPTIONS # +############################################################################### +# +# This toolchain defines the following properties (available via get_property()) for use externally: +# +# PLATFORM: The currently targeted platform. +# XCODE_VERSION: Version number (not including Build version) of Xcode detected. +# SDK_VERSION: Version of SDK being used. +# OSX_ARCHITECTURES: Architectures being compiled for (generated from PLATFORM). +# APPLE_TARGET_TRIPLE: Used by autoconf build systems. NOTE: If "ARCHS" is overridden, this will *NOT* be set! +# +# This toolchain defines the following macros for use externally: +# +# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE XCODE_VARIANT) +# A convenience macro for setting xcode specific properties on targets. +# Available variants are: All, Release, RelWithDebInfo, Debug, MinSizeRel +# example: set_xcode_property (myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1" "all"). +# +# find_host_package (PROGRAM ARGS) +# A macro used to find executable programs on the host system, not within the +# environment. Thanks to the android-cmake project for providing the +# command. +# + +cmake_minimum_required(VERSION 3.8.0) + +# CMake invokes the toolchain file twice during the first build, but only once during subsequent rebuilds. +if(DEFINED ENV{_IOS_TOOLCHAIN_HAS_RUN}) + return() +endif() +set(ENV{_IOS_TOOLCHAIN_HAS_RUN} true) + +# List of supported platform values +list(APPEND _supported_platforms + "OS" "OS64" "OS64COMBINED" "SIMULATOR" "SIMULATOR64" "SIMULATORARM64" "SIMULATOR64COMBINED" + "TVOS" "TVOSCOMBINED" "SIMULATOR_TVOS" "SIMULATORARM64_TVOS" + "WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS" + "MAC" "MAC_ARM64" "MAC_UNIVERSAL" + "VISIONOS" "SIMULATOR_VISIONOS" "SIMULATOR64_VISIONOS" + "MAC_CATALYST" "MAC_CATALYST_ARM64") + +# Cache what generator is used +set(USED_CMAKE_GENERATOR "${CMAKE_GENERATOR}") + +# Check if using a CMake version capable of building combined FAT builds (simulator and target slices combined in one static lib) +if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14") + set(MODERN_CMAKE YES) +endif() + +# Get the Xcode version being used. +# Problem: CMake runs toolchain files multiple times, but can't read cache variables on some runs. +# Workaround: On the first run (in which cache variables are always accessible), set an intermediary environment variable. +# +# NOTE: This pattern is used in many places in this toolchain to speed up checks of all sorts +if(DEFINED XCODE_VERSION_INT) + # Environment variables are always preserved. + set(ENV{_XCODE_VERSION_INT} "${XCODE_VERSION_INT}") +elseif(DEFINED ENV{_XCODE_VERSION_INT}) + set(XCODE_VERSION_INT "$ENV{_XCODE_VERSION_INT}") +elseif(NOT DEFINED XCODE_VERSION_INT) + find_program(XCODEBUILD_EXECUTABLE xcodebuild) + if(NOT XCODEBUILD_EXECUTABLE) + message(FATAL_ERROR "xcodebuild not found. Please install either the standalone commandline tools or Xcode.") + endif() + execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -version + OUTPUT_VARIABLE XCODE_VERSION_INT + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION_INT "${XCODE_VERSION_INT}") + string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION_INT "${XCODE_VERSION_INT}") + set(XCODE_VERSION_INT "${XCODE_VERSION_INT}" CACHE INTERNAL "") +endif() + +# Assuming that xcode 12.0 is installed you most probably have ios sdk 14.0 or later installed (tested on Big Sur) +# if you don't set a deployment target it will be set the way you only get 64-bit builds +#if(NOT DEFINED DEPLOYMENT_TARGET AND XCODE_VERSION_INT VERSION_GREATER 12.0) +# Temporarily fix the arm64 issues in CMake install-combined by excluding arm64 for simulator builds (needed for Apple Silicon...) +# set(CMAKE_XCODE_ATTRIBUTE_EXCLUDED_ARCHS[sdk=iphonesimulator*] "arm64") +#endif() + +# Check if the platform variable is set +if(DEFINED PLATFORM) + # Environment variables are always preserved. + set(ENV{_PLATFORM} "${PLATFORM}") +elseif(DEFINED ENV{_PLATFORM}) + set(PLATFORM "$ENV{_PLATFORM}") +elseif(NOT DEFINED PLATFORM) + message(FATAL_ERROR "PLATFORM argument not set. Bailing configure since I don't know what target you want to build for!") +endif () + +if(PLATFORM MATCHES ".*COMBINED" AND NOT CMAKE_GENERATOR MATCHES "Xcode") + message(FATAL_ERROR "The combined builds support requires Xcode to be used as a generator via '-G Xcode' command-line argument in CMake") +endif() + +# Safeguard that the platform value is set and is one of the supported values +list(FIND _supported_platforms ${PLATFORM} contains_PLATFORM) +if("${contains_PLATFORM}" EQUAL "-1") + string(REPLACE ";" "\n * " _supported_platforms_formatted "${_supported_platforms}") + message(FATAL_ERROR " Invalid PLATFORM specified! Current value: ${PLATFORM}.\n" + " Supported PLATFORM values: \n * ${_supported_platforms_formatted}") +endif() + +# Check if Apple Silicon is supported +if(PLATFORM MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$|^(MAC_UNIVERSAL)$" AND ${CMAKE_VERSION} VERSION_LESS "3.19.5") + message(FATAL_ERROR "Apple Silicon builds requires a minimum of CMake 3.19.5") +endif() + +# Touch the toolchain variable to suppress the "unused variable" warning. +# This happens if CMake is invoked with the same command line the second time. +if(CMAKE_TOOLCHAIN_FILE) +endif() + +# Fix for PThread library not in path +set(CMAKE_THREAD_LIBS_INIT "-lpthread") +set(CMAKE_HAVE_THREADS_LIBRARY 1) +set(CMAKE_USE_WIN32_THREADS_INIT 0) +set(CMAKE_USE_PTHREADS_INIT 1) + +# Specify named language support defaults. +if(NOT DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16") + set(NAMED_LANGUAGE_SUPPORT ON) + message(STATUS "[DEFAULTS] Using explicit named language support! E.g., enable_language(CXX) is needed in the project files.") +elseif(NOT DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_LESS "3.16") + set(NAMED_LANGUAGE_SUPPORT OFF) + message(STATUS "[DEFAULTS] Disabling explicit named language support. Falling back to legacy behavior.") +elseif(DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_LESS "3.16") + message(FATAL_ERROR "CMake named language support for OBJC and OBJCXX was added in CMake 3.16.") +endif() +set(NAMED_LANGUAGE_SUPPORT_INT ${NAMED_LANGUAGE_SUPPORT} CACHE BOOL + "Whether or not to enable explicit named language support" FORCE) + +# Specify the minimum version of the deployment target. +if(NOT DEFINED DEPLOYMENT_TARGET) + if (PLATFORM MATCHES "WATCHOS") + # Unless specified, SDK version 4.0 is used by default as minimum target version (watchOS). + set(DEPLOYMENT_TARGET "6.0") + elseif(PLATFORM STREQUAL "MAC") + # Unless specified, SDK version 10.13 (High Sierra) is used by default as the minimum target version (macos). + set(DEPLOYMENT_TARGET "11.0") + elseif(PLATFORM STREQUAL "VISIONOS" OR PLATFORM STREQUAL "SIMULATOR_VISIONOS" OR PLATFORM STREQUAL "SIMULATOR64_VISIONOS") + # Unless specified, SDK version 1.0 is used by default as minimum target version (visionOS). + set(DEPLOYMENT_TARGET "1.0") + elseif(PLATFORM STREQUAL "MAC_ARM64") + # Unless specified, SDK version 11.0 (Big Sur) is used by default as the minimum target version (macOS on arm). + set(DEPLOYMENT_TARGET "11.0") + elseif(PLATFORM STREQUAL "MAC_UNIVERSAL") + # Unless specified, SDK version 11.0 (Big Sur) is used by default as minimum target version for universal builds. + set(DEPLOYMENT_TARGET "11.0") + elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64") + # Unless specified, SDK version 13.0 is used by default as the minimum target version (mac catalyst minimum requirement). + set(DEPLOYMENT_TARGET "13.1") + else() + # Unless specified, SDK version 11.0 is used by default as the minimum target version (iOS, tvOS). + set(DEPLOYMENT_TARGET "13.0") + endif() + message(STATUS "[DEFAULTS] Using the default min-version since DEPLOYMENT_TARGET not provided!") +elseif(DEFINED DEPLOYMENT_TARGET AND PLATFORM MATCHES "^MAC_CATALYST" AND ${DEPLOYMENT_TARGET} VERSION_LESS "13.1") + message(FATAL_ERROR "Mac Catalyst builds requires a minimum deployment target of 13.1!") +endif() + +# Store the DEPLOYMENT_TARGET in the cache +set(DEPLOYMENT_TARGET "${DEPLOYMENT_TARGET}" CACHE INTERNAL "") + +# Handle the case where we are targeting iOS and a version above 10.3.4 (32-bit support dropped officially) +if(PLATFORM STREQUAL "OS" AND DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 10.3.4) + set(PLATFORM "OS64") + message(STATUS "Targeting minimum SDK version ${DEPLOYMENT_TARGET}. Dropping 32-bit support.") +elseif(PLATFORM STREQUAL "SIMULATOR" AND DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 10.3.4) + set(PLATFORM "SIMULATOR64") + message(STATUS "Targeting minimum SDK version ${DEPLOYMENT_TARGET}. Dropping 32-bit support.") +endif() + +set(PLATFORM_INT "${PLATFORM}") + +if(DEFINED ARCHS) + string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") +endif() + +# Determine the platform name and architectures for use in xcodebuild commands +# from the specified PLATFORM_INT name. +if(PLATFORM_INT STREQUAL "OS") + set(SDK_NAME iphoneos) + if(NOT ARCHS) + set(ARCHS armv7 armv7s arm64) + set(APPLE_TARGET_TRIPLE_INT arm-apple-ios${DEPLOYMENT_TARGET}) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}) + endif() +elseif(PLATFORM_INT STREQUAL "OS64") + set(SDK_NAME iphoneos) + if(NOT ARCHS) + if (XCODE_VERSION_INT VERSION_GREATER 10.0) + set(ARCHS arm64) # FIXME: Add arm64e when Apple has fixed the integration issues with it, libarclite_iphoneos.a is currently missing bitcode markers for example + else() + set(ARCHS arm64) + endif() + set(APPLE_TARGET_TRIPLE_INT arm64-apple-ios${DEPLOYMENT_TARGET}) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}) + endif() +elseif(PLATFORM_INT STREQUAL "OS64COMBINED") + set(SDK_NAME iphoneos) + if(MODERN_CMAKE) + if(NOT ARCHS) + if (XCODE_VERSION_INT VERSION_GREATER 12.0) + set(ARCHS arm64 x86_64) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") + else() + set(ARCHS arm64 x86_64) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64") + endif() + set(APPLE_TARGET_TRIPLE_INT arm64-x86_64-apple-ios${DEPLOYMENT_TARGET}) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}) + endif() + else() + message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the OS64COMBINED setting work") + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATOR64COMBINED") + set(SDK_NAME iphonesimulator) + if(MODERN_CMAKE) + if(NOT ARCHS) + if (XCODE_VERSION_INT VERSION_GREATER 12.0) + set(ARCHS arm64 x86_64) # FIXME: Add arm64e when Apple have fixed the integration issues with it, libarclite_iphoneos.a is currently missing bitcode markers for example + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") + else() + set(ARCHS arm64 x86_64) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64") + endif() + set(APPLE_TARGET_TRIPLE_INT aarch64-x86_64-apple-ios${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) + endif() + else() + message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the SIMULATOR64COMBINED setting work") + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATOR") + set(SDK_NAME iphonesimulator) + if(NOT ARCHS) + set(ARCHS i386) + set(APPLE_TARGET_TRIPLE_INT i386-apple-ios${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) + endif() + message(DEPRECATION "SIMULATOR IS DEPRECATED. Consider using SIMULATOR64 instead.") +elseif(PLATFORM_INT STREQUAL "SIMULATOR64") + set(SDK_NAME iphonesimulator) + if(NOT ARCHS) + set(ARCHS x86_64) + set(APPLE_TARGET_TRIPLE_INT x86_64-apple-ios${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATORARM64") + set(SDK_NAME iphonesimulator) + if(NOT ARCHS) + set(ARCHS arm64) + set(APPLE_TARGET_TRIPLE_INT arm64-apple-ios${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "TVOS") + set(SDK_NAME appletvos) + if(NOT ARCHS) + set(ARCHS arm64) + set(APPLE_TARGET_TRIPLE_INT arm64-apple-tvos${DEPLOYMENT_TARGET}) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}) + endif() +elseif (PLATFORM_INT STREQUAL "TVOSCOMBINED") + set(SDK_NAME appletvos) + if(MODERN_CMAKE) + if(NOT ARCHS) + set(ARCHS arm64 x86_64) + set(APPLE_TARGET_TRIPLE_INT arm64-x86_64-apple-tvos${DEPLOYMENT_TARGET}) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvos*] "arm64") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvsimulator*] "x86_64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvos*] "arm64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvsimulator*] "x86_64") + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}) + endif() + else() + message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the TVOSCOMBINED setting work") + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATOR_TVOS") + set(SDK_NAME appletvsimulator) + if(NOT ARCHS) + set(ARCHS x86_64) + set(APPLE_TARGET_TRIPLE_INT x86_64-apple-tvos${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_TVOS") + set(SDK_NAME appletvsimulator) + if(NOT ARCHS) + set(ARCHS arm64) + set(APPLE_TARGET_TRIPLE_INT arm64-apple-tvos${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "WATCHOS") + set(SDK_NAME watchos) + if(NOT ARCHS) + if (XCODE_VERSION_INT VERSION_GREATER 10.0) + set(ARCHS armv7k arm64_32) + set(APPLE_TARGET_TRIPLE_INT arm64_32-apple-watchos${DEPLOYMENT_TARGET}) + else() + set(ARCHS armv7k) + set(APPLE_TARGET_TRIPLE_INT arm-apple-watchos${DEPLOYMENT_TARGET}) + endif() + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}) + endif() +elseif(PLATFORM_INT STREQUAL "WATCHOSCOMBINED") + set(SDK_NAME watchos) + if(MODERN_CMAKE) + if(NOT ARCHS) + if (XCODE_VERSION_INT VERSION_GREATER 10.0) + set(ARCHS armv7k arm64_32 i386) + set(APPLE_TARGET_TRIPLE_INT arm64_32-i386-apple-watchos${DEPLOYMENT_TARGET}) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k arm64_32") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k arm64_32") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386") + else() + set(ARCHS armv7k i386) + set(APPLE_TARGET_TRIPLE_INT arm-i386-apple-watchos${DEPLOYMENT_TARGET}) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386") + endif() + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}) + endif() + else() + message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the WATCHOSCOMBINED setting work") + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS") + set(SDK_NAME watchsimulator) + if(NOT ARCHS) + set(ARCHS i386) + set(APPLE_TARGET_TRIPLE_INT i386-apple-watchos${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_WATCHOS") + set(SDK_NAME watchsimulator) + if(NOT ARCHS) + set(ARCHS arm64) + set(APPLE_TARGET_TRIPLE_INT arm64-apple-watchos${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATOR64_VISIONOS") + set(SDK_NAME xrsimulator) + if(NOT ARCHS) + set(ARCHS x86_64) + set(APPLE_TARGET_TRIPLE_INT x86_64-apple-xros${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATOR_VISIONOS") + set(SDK_NAME xrsimulator) + if(NOT ARCHS) + set(ARCHS arm64) + set(APPLE_TARGET_TRIPLE_INT arm64-apple-xros${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "VISIONOS") + set(SDK_NAME xros) + if(NOT ARCHS) + set(ARCHS arm64) + set(APPLE_TARGET_TRIPLE_INT arm64-apple-xros${DEPLOYMENT_TARGET}) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET}) + endif() +elseif(PLATFORM_INT STREQUAL "MAC" OR PLATFORM_INT STREQUAL "MAC_CATALYST") + set(SDK_NAME macosx) + if(NOT ARCHS) + set(ARCHS x86_64) + endif() + string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") + if(PLATFORM_INT STREQUAL "MAC") + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET}) + elseif(PLATFORM_INT STREQUAL "MAC_CATALYST") + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi) + endif() +elseif(PLATFORM_INT MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$") + set(SDK_NAME macosx) + if(NOT ARCHS) + set(ARCHS arm64) + endif() + string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") + if(PLATFORM_INT STREQUAL "MAC_ARM64") + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET}) + elseif(PLATFORM_INT STREQUAL "MAC_CATALYST_ARM64") + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi) + endif() +elseif(PLATFORM_INT STREQUAL "MAC_UNIVERSAL") + set(SDK_NAME macosx) + if(NOT ARCHS) + set(ARCHS "x86_64;arm64") + endif() + string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET}) +else() + message(FATAL_ERROR "Invalid PLATFORM: ${PLATFORM_INT}") +endif() + +string(REPLACE ";" " " ARCHS_SPACED "${ARCHS}") + +if(MODERN_CMAKE AND PLATFORM_INT MATCHES ".*COMBINED" AND NOT CMAKE_GENERATOR MATCHES "Xcode") + message(FATAL_ERROR "The COMBINED options only work with Xcode generator, -G Xcode") +endif() + +if(CMAKE_GENERATOR MATCHES "Xcode" AND PLATFORM_INT MATCHES "^MAC_CATALYST") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(CMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS "macosx") + set(CMAKE_XCODE_ATTRIBUTE_SUPPORTS_MACCATALYST "YES") + if(NOT DEFINED MACOSX_DEPLOYMENT_TARGET) + set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "10.15") + else() + set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "${MACOSX_DEPLOYMENT_TARGET}") + endif() +elseif(CMAKE_GENERATOR MATCHES "Xcode") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${DEPLOYMENT_TARGET}") + if(NOT PLATFORM_INT MATCHES ".*COMBINED") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=${SDK_NAME}*] "${ARCHS_SPACED}") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=${SDK_NAME}*] "${ARCHS_SPACED}") + endif() +endif() + +# If the user did not specify the SDK root to use, then query xcodebuild for it. +if(DEFINED CMAKE_OSX_SYSROOT_INT) + # Environment variables are always preserved. + set(ENV{_CMAKE_OSX_SYSROOT_INT} "${CMAKE_OSX_SYSROOT_INT}") +elseif(DEFINED ENV{_CMAKE_OSX_SYSROOT_INT}) + set(CMAKE_OSX_SYSROOT_INT "$ENV{_CMAKE_OSX_SYSROOT_INT}") +elseif(NOT DEFINED CMAKE_OSX_SYSROOT_INT) + execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -version -sdk ${SDK_NAME} Path + OUTPUT_VARIABLE CMAKE_OSX_SYSROOT_INT + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() + +if (NOT DEFINED CMAKE_OSX_SYSROOT_INT AND NOT DEFINED CMAKE_OSX_SYSROOT) + message(SEND_ERROR "Please make sure that Xcode is installed and that the toolchain" + "is pointing to the correct path. Please run:" + "sudo xcode-select -s /Applications/Xcode.app/Contents/Developer" + "and see if that fixes the problem for you.") + message(FATAL_ERROR "Invalid CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT} " + "does not exist.") +elseif(DEFINED CMAKE_OSX_SYSROOT_INT) + set(CMAKE_OSX_SYSROOT_INT "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") + # Specify the location or name of the platform SDK to be used in CMAKE_OSX_SYSROOT. + set(CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") +endif() + +# Use bitcode or not +if(NOT DEFINED ENABLE_BITCODE) + message(STATUS "[DEFAULTS] Disabling bitcode support by default. ENABLE_BITCODE not provided for override!") + set(ENABLE_BITCODE OFF) +endif() +set(ENABLE_BITCODE_INT ${ENABLE_BITCODE} CACHE BOOL + "Whether or not to enable bitcode" FORCE) +# Use ARC or not +if(NOT DEFINED ENABLE_ARC) + # Unless specified, enable ARC support by default + set(ENABLE_ARC ON) + message(STATUS "[DEFAULTS] Enabling ARC support by default. ENABLE_ARC not provided!") +endif() +set(ENABLE_ARC_INT ${ENABLE_ARC} CACHE BOOL "Whether or not to enable ARC" FORCE) +# Use hidden visibility or not +if(NOT DEFINED ENABLE_VISIBILITY) + # Unless specified, disable symbols visibility by default + set(ENABLE_VISIBILITY OFF) + message(STATUS "[DEFAULTS] Hiding symbols visibility by default. ENABLE_VISIBILITY not provided!") +endif() +set(ENABLE_VISIBILITY_INT ${ENABLE_VISIBILITY} CACHE BOOL "Whether or not to hide symbols from the dynamic linker (-fvisibility=hidden)" FORCE) +# Set strict compiler checks or not +if(NOT DEFINED ENABLE_STRICT_TRY_COMPILE) + # Unless specified, disable strict try_compile() + set(ENABLE_STRICT_TRY_COMPILE OFF) + message(STATUS "[DEFAULTS] Using NON-strict compiler checks by default. ENABLE_STRICT_TRY_COMPILE not provided!") +endif() +set(ENABLE_STRICT_TRY_COMPILE_INT ${ENABLE_STRICT_TRY_COMPILE} CACHE BOOL + "Whether or not to use strict compiler checks" FORCE) + +# Get the SDK version information. +if(DEFINED SDK_VERSION) + # Environment variables are always preserved. + set(ENV{_SDK_VERSION} "${SDK_VERSION}") +elseif(DEFINED ENV{_SDK_VERSION}) + set(SDK_VERSION "$ENV{_SDK_VERSION}") +elseif(NOT DEFINED SDK_VERSION) + execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -sdk ${CMAKE_OSX_SYSROOT_INT} -version SDKVersion + OUTPUT_VARIABLE SDK_VERSION + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() + +# Find the Developer root for the specific iOS platform being compiled for +# from CMAKE_OSX_SYSROOT. Should be ../../ from SDK specified in +# CMAKE_OSX_SYSROOT. There does not appear to be a direct way to obtain +# this information from xcrun or xcodebuild. +if (NOT DEFINED CMAKE_DEVELOPER_ROOT AND NOT CMAKE_GENERATOR MATCHES "Xcode") + get_filename_component(PLATFORM_SDK_DIR ${CMAKE_OSX_SYSROOT_INT} PATH) + get_filename_component(CMAKE_DEVELOPER_ROOT ${PLATFORM_SDK_DIR} PATH) + if (NOT EXISTS "${CMAKE_DEVELOPER_ROOT}") + message(FATAL_ERROR "Invalid CMAKE_DEVELOPER_ROOT: ${CMAKE_DEVELOPER_ROOT} does not exist.") + endif() +endif() + +# Find the C & C++ compilers for the specified SDK. +if(DEFINED CMAKE_C_COMPILER) + # Environment variables are always preserved. + set(ENV{_CMAKE_C_COMPILER} "${CMAKE_C_COMPILER}") +elseif(DEFINED ENV{_CMAKE_C_COMPILER}) + set(CMAKE_C_COMPILER "$ENV{_CMAKE_C_COMPILER}") + set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) +elseif(NOT DEFINED CMAKE_C_COMPILER) + execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find clang + OUTPUT_VARIABLE CMAKE_C_COMPILER + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) +endif() +if(DEFINED CMAKE_CXX_COMPILER) + # Environment variables are always preserved. + set(ENV{_CMAKE_CXX_COMPILER} "${CMAKE_CXX_COMPILER}") +elseif(DEFINED ENV{_CMAKE_CXX_COMPILER}) + set(CMAKE_CXX_COMPILER "$ENV{_CMAKE_CXX_COMPILER}") +elseif(NOT DEFINED CMAKE_CXX_COMPILER) + execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find clang++ + OUTPUT_VARIABLE CMAKE_CXX_COMPILER + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() +# Find (Apple's) libtool. +if(DEFINED BUILD_LIBTOOL) + # Environment variables are always preserved. + set(ENV{_BUILD_LIBTOOL} "${BUILD_LIBTOOL}") +elseif(DEFINED ENV{_BUILD_LIBTOOL}) + set(BUILD_LIBTOOL "$ENV{_BUILD_LIBTOOL}") +elseif(NOT DEFINED BUILD_LIBTOOL) + execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find libtool + OUTPUT_VARIABLE BUILD_LIBTOOL + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() +# Find the toolchain's provided install_name_tool if none is found on the host +if(DEFINED CMAKE_INSTALL_NAME_TOOL) + # Environment variables are always preserved. + set(ENV{_CMAKE_INSTALL_NAME_TOOL} "${CMAKE_INSTALL_NAME_TOOL}") +elseif(DEFINED ENV{_CMAKE_INSTALL_NAME_TOOL}) + set(CMAKE_INSTALL_NAME_TOOL "$ENV{_CMAKE_INSTALL_NAME_TOOL}") +elseif(NOT DEFINED CMAKE_INSTALL_NAME_TOOL) + execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find install_name_tool + OUTPUT_VARIABLE CMAKE_INSTALL_NAME_TOOL_INT + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(CMAKE_INSTALL_NAME_TOOL ${CMAKE_INSTALL_NAME_TOOL_INT} CACHE INTERNAL "") +endif() + +# Configure libtool to be used instead of ar + ranlib to build static libraries. +# This is required on Xcode 7+, but should also work on previous versions of +# Xcode. +get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES) +foreach(lang ${languages}) + set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "${BUILD_LIBTOOL} -static -o " CACHE INTERNAL "") +endforeach() + +# CMake 3.14+ support building for iOS, watchOS, and tvOS out of the box. +if(MODERN_CMAKE) + if(SDK_NAME MATCHES "iphone") + set(CMAKE_SYSTEM_NAME iOS) + elseif(SDK_NAME MATCHES "xros") + set(CMAKE_SYSTEM_NAME visionOS) + elseif(SDK_NAME MATCHES "xrsimulator") + set(CMAKE_SYSTEM_NAME visionOS) + elseif(SDK_NAME MATCHES "macosx") + set(CMAKE_SYSTEM_NAME Darwin) + elseif(SDK_NAME MATCHES "appletv") + set(CMAKE_SYSTEM_NAME tvOS) + elseif(SDK_NAME MATCHES "watch") + set(CMAKE_SYSTEM_NAME watchOS) + endif() + # Provide flags for a combined FAT library build on newer CMake versions + if(PLATFORM_INT MATCHES ".*COMBINED") + set(CMAKE_IOS_INSTALL_COMBINED YES) + if(CMAKE_GENERATOR MATCHES "Xcode") + # Set the SDKROOT Xcode properties to a Xcode-friendly value (the SDK_NAME, E.g, iphoneos) + # This way, Xcode will automatically switch between the simulator and device SDK when building. + set(CMAKE_XCODE_ATTRIBUTE_SDKROOT "${SDK_NAME}") + # Force to not build just one ARCH, but all! + set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH "NO") + endif() + endif() +elseif(NOT DEFINED CMAKE_SYSTEM_NAME AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.10") + # Legacy code path prior to CMake 3.14 or fallback if no CMAKE_SYSTEM_NAME specified + set(CMAKE_SYSTEM_NAME iOS) +elseif(NOT DEFINED CMAKE_SYSTEM_NAME) + # Legacy code path before CMake 3.14 or fallback if no CMAKE_SYSTEM_NAME specified + set(CMAKE_SYSTEM_NAME Darwin) +endif() +# Standard settings. +set(CMAKE_SYSTEM_VERSION ${SDK_VERSION} CACHE INTERNAL "") +set(UNIX ON CACHE BOOL "") +set(APPLE ON CACHE BOOL "") +if(PLATFORM STREQUAL "MAC" OR PLATFORM STREQUAL "MAC_ARM64" OR PLATFORM STREQUAL "MAC_UNIVERSAL") + set(IOS OFF CACHE BOOL "") + set(MACOS ON CACHE BOOL "") +elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64") + set(IOS ON CACHE BOOL "") + set(MACOS ON CACHE BOOL "") +else() + set(IOS ON CACHE BOOL "") +endif() +# Set the architectures for which to build. +set(CMAKE_OSX_ARCHITECTURES ${ARCHS} CACHE INTERNAL "") +# Change the type of target generated for try_compile() so it'll work when cross-compiling, weak compiler checks +if(NOT ENABLE_STRICT_TRY_COMPILE_INT) + set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) +endif() +# All iOS/Darwin specific settings - some may be redundant. +if (NOT DEFINED CMAKE_MACOSX_BUNDLE) + set(CMAKE_MACOSX_BUNDLE YES) +endif() +set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") +set(CMAKE_SHARED_LIBRARY_PREFIX "lib") +set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib") +set(CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES ".tbd" ".so") +set(CMAKE_SHARED_MODULE_PREFIX "lib") +set(CMAKE_SHARED_MODULE_SUFFIX ".so") +set(CMAKE_C_COMPILER_ABI ELF) +set(CMAKE_CXX_COMPILER_ABI ELF) +set(CMAKE_C_HAS_ISYSROOT 1) +set(CMAKE_CXX_HAS_ISYSROOT 1) +set(CMAKE_MODULE_EXISTS 1) +set(CMAKE_DL_LIBS "") +set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ") +set(CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ") +set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}") +set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}") + +if(ARCHS MATCHES "((^|;|, )(arm64|arm64e|x86_64))+") + set(CMAKE_C_SIZEOF_DATA_PTR 8) + set(CMAKE_CXX_SIZEOF_DATA_PTR 8) + if(ARCHS MATCHES "((^|;|, )(arm64|arm64e))+") + set(CMAKE_SYSTEM_PROCESSOR "aarch64") + else() + set(CMAKE_SYSTEM_PROCESSOR "x86_64") + endif() +else() + set(CMAKE_C_SIZEOF_DATA_PTR 4) + set(CMAKE_CXX_SIZEOF_DATA_PTR 4) + set(CMAKE_SYSTEM_PROCESSOR "arm") +endif() + +# Note that only Xcode 7+ supports the newer more specific: +# -m${SDK_NAME}-version-min flags, older versions of Xcode use: +# -m(ios/ios-simulator)-version-min instead. +if(${CMAKE_VERSION} VERSION_LESS "3.11") + if(PLATFORM_INT STREQUAL "OS" OR PLATFORM_INT STREQUAL "OS64") + if(XCODE_VERSION_INT VERSION_LESS 7.0) + set(SDK_NAME_VERSION_FLAGS + "-mios-version-min=${DEPLOYMENT_TARGET}") + else() + # Xcode 7.0+ uses flags we can build directly from SDK_NAME. + set(SDK_NAME_VERSION_FLAGS + "-m${SDK_NAME}-version-min=${DEPLOYMENT_TARGET}") + endif() + elseif(PLATFORM_INT STREQUAL "TVOS") + set(SDK_NAME_VERSION_FLAGS + "-mtvos-version-min=${DEPLOYMENT_TARGET}") + elseif(PLATFORM_INT STREQUAL "SIMULATOR_TVOS") + set(SDK_NAME_VERSION_FLAGS + "-mtvos-simulator-version-min=${DEPLOYMENT_TARGET}") +elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_TVOS") + set(SDK_NAME_VERSION_FLAGS + "-mtvos-simulator-version-min=${DEPLOYMENT_TARGET}") + elseif(PLATFORM_INT STREQUAL "WATCHOS") + set(SDK_NAME_VERSION_FLAGS + "-mwatchos-version-min=${DEPLOYMENT_TARGET}") + elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS") + set(SDK_NAME_VERSION_FLAGS + "-mwatchos-simulator-version-min=${DEPLOYMENT_TARGET}") + elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_WATCHOS") + set(SDK_NAME_VERSION_FLAGS + "-mwatchos-simulator-version-min=${DEPLOYMENT_TARGET}") + elseif(PLATFORM_INT STREQUAL "MAC") + set(SDK_NAME_VERSION_FLAGS + "-mmacosx-version-min=${DEPLOYMENT_TARGET}") + else() + # SIMULATOR or SIMULATOR64 both use -mios-simulator-version-min. + set(SDK_NAME_VERSION_FLAGS + "-mios-simulator-version-min=${DEPLOYMENT_TARGET}") + endif() +elseif(NOT PLATFORM_INT MATCHES "^MAC_CATALYST") + # Newer versions of CMake sets the version min flags correctly, skip this for Mac Catalyst targets + set(CMAKE_OSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET} CACHE INTERNAL "Minimum OS X deployment version") +endif() + +if(DEFINED APPLE_TARGET_TRIPLE_INT) + set(APPLE_TARGET_TRIPLE ${APPLE_TARGET_TRIPLE_INT} CACHE INTERNAL "") + set(CMAKE_C_COMPILER_TARGET ${APPLE_TARGET_TRIPLE}) + set(CMAKE_CXX_COMPILER_TARGET ${APPLE_TARGET_TRIPLE}) + set(CMAKE_ASM_COMPILER_TARGET ${APPLE_TARGET_TRIPLE}) +endif() + +if(PLATFORM_INT MATCHES "^MAC_CATALYST") + set(C_TARGET_FLAGS "-isystem ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/usr/include -iframework ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks") +endif() + +if(ENABLE_BITCODE_INT) + set(BITCODE "-fembed-bitcode") + set(CMAKE_XCODE_ATTRIBUTE_BITCODE_GENERATION_MODE "bitcode") + set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "YES") +else() + set(BITCODE "") + set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO") +endif() + +if(ENABLE_ARC_INT) + set(FOBJC_ARC "-fobjc-arc") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "YES") +else() + set(FOBJC_ARC "-fno-objc-arc") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "NO") +endif() + +if(NAMED_LANGUAGE_SUPPORT_INT) + set(OBJC_VARS "-fobjc-abi-version=2 -DOBJC_OLD_DISPATCH_PROTOTYPES=0") + set(OBJC_LEGACY_VARS "") +else() + set(OBJC_VARS "") + set(OBJC_LEGACY_VARS "-fobjc-abi-version=2 -DOBJC_OLD_DISPATCH_PROTOTYPES=0") +endif() + +if(NOT ENABLE_VISIBILITY_INT) + foreach(lang ${languages}) + set(CMAKE_${lang}_VISIBILITY_PRESET "hidden" CACHE INTERNAL "") + endforeach() + set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "YES") + set(VISIBILITY "-fvisibility=hidden -fvisibility-inlines-hidden") +else() + foreach(lang ${languages}) + set(CMAKE_${lang}_VISIBILITY_PRESET "default" CACHE INTERNAL "") + endforeach() + set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "NO") + set(VISIBILITY "-fvisibility=default") +endif() + +if(DEFINED APPLE_TARGET_TRIPLE) + set(APPLE_TARGET_TRIPLE_FLAG "-target ${APPLE_TARGET_TRIPLE}") +endif() + +#Check if Xcode generator is used since that will handle these flags automagically +if(CMAKE_GENERATOR MATCHES "Xcode") + message(STATUS "Not setting any manual command-line buildflags, since Xcode is selected as the generator. Modifying the Xcode build-settings directly instead.") +else() + set(CMAKE_C_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${OBJC_LEGACY_VARS} ${BITCODE} ${VISIBILITY} ${CMAKE_C_FLAGS}" CACHE INTERNAL + "Flags used by the compiler during all C build types.") + set(CMAKE_C_FLAGS_DEBUG "-O0 -g ${CMAKE_C_FLAGS_DEBUG}") + set(CMAKE_C_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_C_FLAGS_MINSIZEREL}") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_C_FLAGS_RELWITHDEBINFO}") + set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_C_FLAGS_RELEASE}") + set(CMAKE_CXX_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${OBJC_LEGACY_VARS} ${BITCODE} ${VISIBILITY} ${CMAKE_CXX_FLAGS}" CACHE INTERNAL + "Flags used by the compiler during all CXX build types.") + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g ${CMAKE_CXX_FLAGS_DEBUG}") + set(CMAKE_CXX_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_CXX_FLAGS_MINSIZEREL}") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_CXX_FLAGS_RELEASE}") + if(NAMED_LANGUAGE_SUPPORT_INT) + set(CMAKE_OBJC_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} ${FOBJC_ARC} ${OBJC_VARS} ${CMAKE_OBJC_FLAGS}" CACHE INTERNAL + "Flags used by the compiler during all OBJC build types.") + set(CMAKE_OBJC_FLAGS_DEBUG "-O0 -g ${CMAKE_OBJC_FLAGS_DEBUG}") + set(CMAKE_OBJC_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_OBJC_FLAGS_MINSIZEREL}") + set(CMAKE_OBJC_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_OBJC_FLAGS_RELWITHDEBINFO}") + set(CMAKE_OBJC_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_OBJC_FLAGS_RELEASE}") + set(CMAKE_OBJCXX_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} ${FOBJC_ARC} ${OBJC_VARS} ${CMAKE_OBJCXX_FLAGS}" CACHE INTERNAL + "Flags used by the compiler during all OBJCXX build types.") + set(CMAKE_OBJCXX_FLAGS_DEBUG "-O0 -g ${CMAKE_OBJCXX_FLAGS_DEBUG}") + set(CMAKE_OBJCXX_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_OBJCXX_FLAGS_MINSIZEREL}") + set(CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO}") + set(CMAKE_OBJCXX_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_OBJCXX_FLAGS_RELEASE}") + endif() + set(CMAKE_C_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}" CACHE INTERNAL + "Flags used by the compiler for all C link types.") + set(CMAKE_CXX_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}" CACHE INTERNAL + "Flags used by the compiler for all CXX link types.") + if(NAMED_LANGUAGE_SUPPORT_INT) + set(CMAKE_OBJC_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_OBJC_LINK_FLAGS}" CACHE INTERNAL + "Flags used by the compiler for all OBJC link types.") + set(CMAKE_OBJCXX_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_OBJCXX_LINK_FLAGS}" CACHE INTERNAL + "Flags used by the compiler for all OBJCXX link types.") + endif() + set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp -arch ${CMAKE_OSX_ARCHITECTURES} ${APPLE_TARGET_TRIPLE_FLAG}" CACHE INTERNAL + "Flags used by the compiler for all ASM build types.") +endif() + +## Print status messages to inform of the current state +message(STATUS "Configuring ${SDK_NAME} build for platform: ${PLATFORM_INT}, architecture(s): ${ARCHS}") +message(STATUS "Using SDK: ${CMAKE_OSX_SYSROOT_INT}") +message(STATUS "Using C compiler: ${CMAKE_C_COMPILER}") +message(STATUS "Using CXX compiler: ${CMAKE_CXX_COMPILER}") +message(STATUS "Using libtool: ${BUILD_LIBTOOL}") +message(STATUS "Using install name tool: ${CMAKE_INSTALL_NAME_TOOL}") +if(DEFINED APPLE_TARGET_TRIPLE) + message(STATUS "Autoconf target triple: ${APPLE_TARGET_TRIPLE}") +endif() +message(STATUS "Using minimum deployment version: ${DEPLOYMENT_TARGET}" + " (SDK version: ${SDK_VERSION})") +if(MODERN_CMAKE) + message(STATUS "Merging integrated CMake 3.14+ iOS,tvOS,watchOS,macOS toolchain(s) with this toolchain!") + if(PLATFORM_INT MATCHES ".*COMBINED") + message(STATUS "Will combine built (static) artifacts into FAT lib...") + endif() +endif() +if(CMAKE_GENERATOR MATCHES "Xcode") + message(STATUS "Using Xcode version: ${XCODE_VERSION_INT}") +endif() +message(STATUS "CMake version: ${CMAKE_VERSION}") +if(DEFINED SDK_NAME_VERSION_FLAGS) + message(STATUS "Using version flags: ${SDK_NAME_VERSION_FLAGS}") +endif() +message(STATUS "Using a data_ptr size of: ${CMAKE_CXX_SIZEOF_DATA_PTR}") +if(ENABLE_BITCODE_INT) + message(STATUS "Bitcode: Enabled") +else() + message(STATUS "Bitcode: Disabled") +endif() + +if(ENABLE_ARC_INT) + message(STATUS "ARC: Enabled") +else() + message(STATUS "ARC: Disabled") +endif() + +if(ENABLE_VISIBILITY_INT) + message(STATUS "Hiding symbols: Disabled") +else() + message(STATUS "Hiding symbols: Enabled") +endif() + +# Set global properties +set_property(GLOBAL PROPERTY PLATFORM "${PLATFORM}") +set_property(GLOBAL PROPERTY APPLE_TARGET_TRIPLE "${APPLE_TARGET_TRIPLE_INT}") +set_property(GLOBAL PROPERTY SDK_VERSION "${SDK_VERSION}") +set_property(GLOBAL PROPERTY XCODE_VERSION "${XCODE_VERSION_INT}") +set_property(GLOBAL PROPERTY OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") + +# Export configurable variables for the try_compile() command. +set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES + PLATFORM + XCODE_VERSION_INT + SDK_VERSION + NAMED_LANGUAGE_SUPPORT + DEPLOYMENT_TARGET + CMAKE_DEVELOPER_ROOT + CMAKE_OSX_SYSROOT_INT + ENABLE_BITCODE + ENABLE_ARC + CMAKE_ASM_COMPILER + CMAKE_C_COMPILER + CMAKE_C_COMPILER_TARGET + CMAKE_CXX_COMPILER + CMAKE_CXX_COMPILER_TARGET + BUILD_LIBTOOL + CMAKE_INSTALL_NAME_TOOL + CMAKE_C_FLAGS + CMAKE_C_DEBUG + CMAKE_C_MINSIZEREL + CMAKE_C_RELWITHDEBINFO + CMAKE_C_RELEASE + CMAKE_CXX_FLAGS + CMAKE_CXX_FLAGS_DEBUG + CMAKE_CXX_FLAGS_MINSIZEREL + CMAKE_CXX_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS_RELEASE + CMAKE_C_LINK_FLAGS + CMAKE_CXX_LINK_FLAGS + CMAKE_ASM_FLAGS +) + +if(NAMED_LANGUAGE_SUPPORT_INT) + list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES + CMAKE_OBJC_FLAGS + CMAKE_OBJC_DEBUG + CMAKE_OBJC_MINSIZEREL + CMAKE_OBJC_RELWITHDEBINFO + CMAKE_OBJC_RELEASE + CMAKE_OBJCXX_FLAGS + CMAKE_OBJCXX_DEBUG + CMAKE_OBJCXX_MINSIZEREL + CMAKE_OBJCXX_RELWITHDEBINFO + CMAKE_OBJCXX_RELEASE + CMAKE_OBJC_LINK_FLAGS + CMAKE_OBJCXX_LINK_FLAGS + ) +endif() + +set(CMAKE_PLATFORM_HAS_INSTALLNAME 1) +set(CMAKE_SHARED_LINKER_FLAGS "-rpath @executable_path/Frameworks -rpath @loader_path/Frameworks") +set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -Wl,-headerpad_max_install_names") +set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -Wl,-headerpad_max_install_names") +set(CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,") +set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,") +set(CMAKE_FIND_LIBRARY_SUFFIXES ".tbd" ".dylib" ".so" ".a") +set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-install_name") + +# Set the find root to the SDK developer roots. +# Note: CMAKE_FIND_ROOT_PATH is only useful when cross-compiling. Thus, do not set on macOS builds. +if(NOT PLATFORM_INT MATCHES "^MAC.*$") + list(APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") + set(CMAKE_IGNORE_PATH "/System/Library/Frameworks;/usr/local/lib;/opt/homebrew" CACHE INTERNAL "") +endif() + +# Default to searching for frameworks first. +IF(NOT DEFINED CMAKE_FIND_FRAMEWORK) + set(CMAKE_FIND_FRAMEWORK FIRST) +ENDIF(NOT DEFINED CMAKE_FIND_FRAMEWORK) + +# Set up the default search directories for frameworks. +if(PLATFORM_INT MATCHES "^MAC_CATALYST") + set(CMAKE_FRAMEWORK_PATH + ${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks + ${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks + ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks + ${CMAKE_FRAMEWORK_PATH} CACHE INTERNAL "") +else() + set(CMAKE_FRAMEWORK_PATH + ${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks + ${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks + ${CMAKE_FRAMEWORK_PATH} CACHE INTERNAL "") +endif() + +# By default, search both the specified iOS SDK and the remainder of the host filesystem. +if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH CACHE INTERNAL "") +endif() +if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH CACHE INTERNAL "") +endif() +if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH CACHE INTERNAL "") +endif() +if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH CACHE INTERNAL "") +endif() + +# +# Some helper-macros below to simplify and beautify the CMakeFile +# + +# This little macro lets you set any Xcode specific property. +macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE XCODE_RELVERSION) + set(XCODE_RELVERSION_I "${XCODE_RELVERSION}") + if(XCODE_RELVERSION_I STREQUAL "All") + set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} "${XCODE_VALUE}") + else() + set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY}[variant=${XCODE_RELVERSION_I}] "${XCODE_VALUE}") + endif() +endmacro(set_xcode_property) + +# This macro lets you find executable programs on the host system. +macro(find_host_package) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE NEVER) + set(_TOOLCHAIN_IOS ${IOS}) + set(IOS OFF) + find_package(${ARGN}) + set(IOS ${_TOOLCHAIN_IOS}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH) +endmacro(find_host_package) diff --git a/ios/plist.in b/ios/plist.in deleted file mode 100644 index f2fb1b9c6..000000000 --- a/ios/plist.in +++ /dev/null @@ -1,54 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDisplayName - $(EXECUTABLE_NAME) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleGetInfoString - - CFBundleIconFile - Icon - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CSResourcesFileMapped - - LSSupportsOpeningDocumentsInPlace - - NSHumanReadableCopyright - - UIFileSharingEnabled - - UILaunchStoryboardName - Launch.storyboard - UIStatusBarStyle - - UISupportedInterfaceOrientations - - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations - - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationLandscapeLeft - - UISupportsDocumentBrowser - - - diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e8f72b132..5206400be 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -309,6 +309,20 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "iOS") $<$>:SPDLOG_ACTIVE_LEVEL=1> __IOS__ ) + + set_xcode_property(${PROJECT_NAME} PRODUCT_BUNDLE_IDENTIFIER ${BUNDLE_ID} All) + + if(NOT SIGN_LIBRARY) + set_target_properties(${PROJECT_NAME} PROPERTIES + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "" + XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO" + ) + + set_target_properties(SDL2 PROPERTIES + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "" + XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO" + ) + endif() else() target_compile_definitions(libultraship PRIVATE ENABLE_OPENGL From 9d2bd9442b24bd1eaa4c233cafbc50f9c00ba8bc Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 25 Apr 2024 22:10:42 -0600 Subject: [PATCH 14/26] Fixed cmake_policy --- CMakeLists.txt | 1 + src/CMakeLists.txt | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d240d351..684a1be41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,5 @@ cmake_minimum_required(VERSION 3.24.0) +set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) option(NON_PORTABLE "Build a non-portable version" OFF) option(SIGN_LIBRARY "Enable xcode signing" OFF) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5206400be..3e89a2186 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -322,6 +322,11 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "iOS") XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "" XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO" ) + + set_target_properties(zip PROPERTIES + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "" + XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO" + ) endif() else() target_compile_definitions(libultraship PRIVATE From 811bc287ed2caeb4a0185f3296c9acf9808405bc Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 25 Apr 2024 22:30:49 -0600 Subject: [PATCH 15/26] Fixed wrong path for *.a files --- .github/workflows/build-validation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-validation.yml b/.github/workflows/build-validation.yml index c2cdafeee..7d4a0567a 100644 --- a/.github/workflows/build-validation.yml +++ b/.github/workflows/build-validation.yml @@ -26,7 +26,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: soh-mac - path: build-cmake/src/*.a + path: build-cmake/src/Debug-iphoneos/*.a if-no-files-found: error build-ios: runs-on: macos-12 From f36d9457426ded7b874191be405dc235e43ff18b Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Thu, 25 Apr 2024 22:41:38 -0600 Subject: [PATCH 16/26] Swapped paths by accident --- .github/workflows/build-validation.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-validation.yml b/.github/workflows/build-validation.yml index 7d4a0567a..71840e365 100644 --- a/.github/workflows/build-validation.yml +++ b/.github/workflows/build-validation.yml @@ -26,7 +26,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: soh-mac - path: build-cmake/src/Debug-iphoneos/*.a + path: build-cmake/src/*.a if-no-files-found: error build-ios: runs-on: macos-12 @@ -45,7 +45,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: soh-ios - path: build-cmake/src/*.a + path: build-cmake/src/Debug-iphoneos/*.a if-no-files-found: error build-linux: runs-on: ubuntu-latest From e083208f6213e991e6af6e65865ff7a8e4ba957c Mon Sep 17 00:00:00 2001 From: Lywx Date: Fri, 26 Apr 2024 00:15:53 -0600 Subject: [PATCH 17/26] Update build-validation.yml --- .github/workflows/build-validation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-validation.yml b/.github/workflows/build-validation.yml index 71840e365..97a54f37e 100644 --- a/.github/workflows/build-validation.yml +++ b/.github/workflows/build-validation.yml @@ -45,7 +45,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: soh-ios - path: build-cmake/src/Debug-iphoneos/*.a + path: build-cmake/src/*/*.a if-no-files-found: error build-linux: runs-on: ubuntu-latest From b8d146cae74df82c70019924189653dae97c9d00 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Fri, 26 Apr 2024 09:49:16 -0600 Subject: [PATCH 18/26] Cleaned comments --- src/graphic/Fast3D/gfx_metal.cpp | 1 + src/window/gui/Gui.cpp | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/graphic/Fast3D/gfx_metal.cpp b/src/graphic/Fast3D/gfx_metal.cpp index 3ea71cfb3..05a9b37e2 100644 --- a/src/graphic/Fast3D/gfx_metal.cpp +++ b/src/graphic/Fast3D/gfx_metal.cpp @@ -187,6 +187,7 @@ static MTL::SamplerAddressMode gfx_cm_to_metal(uint32_t val) { bool Metal_IsSupported() { #ifdef __IOS__ + // iOS always supports Metal and MTLCopyAllDevices is not available return true; #else NS::Array* devices = MTLCopyAllDevices(); diff --git a/src/window/gui/Gui.cpp b/src/window/gui/Gui.cpp index 24630dd23..e19276c26 100644 --- a/src/window/gui/Gui.cpp +++ b/src/window/gui/Gui.cpp @@ -209,7 +209,9 @@ void Gui::ImGuiBackendInit() { case WindowBackend::GX2: ImGui_ImplGX2_Init(); break; -#elif defined(ENABLE_OPENGL) +#endif + +#ifdef defined(ENABLE_OPENGL) case WindowBackend::SDL_OPENGL: #ifdef __APPLE__ ImGui_ImplOpenGL3_Init("#version 410 core"); @@ -461,7 +463,9 @@ void Gui::ImGuiBackendNewFrame() { mImGuiIo->DeltaTime = (float)frametime / 1000.0f / 1000.0f; ImGui_ImplGX2_NewFrame(); break; -#elif defined(ENABLE_OPENGL) +#endif + +#ifdef defined(ENABLE_OPENGL) case WindowBackend::SDL_OPENGL: ImGui_ImplOpenGL3_NewFrame(); break; @@ -471,7 +475,9 @@ void Gui::ImGuiBackendNewFrame() { case WindowBackend::DX11: ImGui_ImplDX11_NewFrame(); break; -#elif defined(__APPLE__) +#endif + +#ifdef defined(__APPLE__) case WindowBackend::SDL_METAL: Metal_NewFrame(mImpl.Metal.Renderer); break; @@ -727,7 +733,9 @@ void Gui::ImGuiRenderDrawData(ImDrawData* data) { case WindowBackend::DX11: ImGui_ImplDX11_RenderDrawData(data); break; -#elif defined(__APPLE__) +#endif + +#ifdef defined(__APPLE__) case WindowBackend::SDL_METAL: Metal_RenderDrawData(data); break; From 15f821943f1130f52da3b683b96a8a973b1a34be Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Fri, 26 Apr 2024 09:51:11 -0600 Subject: [PATCH 19/26] Missing one elif --- src/window/gui/Gui.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/window/gui/Gui.cpp b/src/window/gui/Gui.cpp index e19276c26..83b8aefff 100644 --- a/src/window/gui/Gui.cpp +++ b/src/window/gui/Gui.cpp @@ -723,7 +723,9 @@ void Gui::ImGuiRenderDrawData(ImDrawData* data) { GX2SetScissor(0, 0, mImGuiIo->DisplaySize.x, mImGuiIo->DisplaySize.y); ImGui_ImplWiiU_DrawKeyboardOverlay(); break; -#elif defined(ENABLE_OPENGL) +#endif + +#ifdef defined(ENABLE_OPENGL) case WindowBackend::SDL_OPENGL: ImGui_ImplOpenGL3_RenderDrawData(data); break; From b3b5057030afce80c1e35f3428f86ba0baaf5a10 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Fri, 26 Apr 2024 09:53:03 -0600 Subject: [PATCH 20/26] Fixed wrong ifdefs --- src/window/gui/Gui.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/window/gui/Gui.cpp b/src/window/gui/Gui.cpp index 83b8aefff..0d0256475 100644 --- a/src/window/gui/Gui.cpp +++ b/src/window/gui/Gui.cpp @@ -211,7 +211,7 @@ void Gui::ImGuiBackendInit() { break; #endif -#ifdef defined(ENABLE_OPENGL) +#ifdef ENABLE_OPENGL case WindowBackend::SDL_OPENGL: #ifdef __APPLE__ ImGui_ImplOpenGL3_Init("#version 410 core"); @@ -465,7 +465,7 @@ void Gui::ImGuiBackendNewFrame() { break; #endif -#ifdef defined(ENABLE_OPENGL) +#ifdef ENABLE_OPENGL case WindowBackend::SDL_OPENGL: ImGui_ImplOpenGL3_NewFrame(); break; @@ -477,7 +477,7 @@ void Gui::ImGuiBackendNewFrame() { break; #endif -#ifdef defined(__APPLE__) +#ifdef __APPLE__ case WindowBackend::SDL_METAL: Metal_NewFrame(mImpl.Metal.Renderer); break; @@ -725,21 +725,21 @@ void Gui::ImGuiRenderDrawData(ImDrawData* data) { break; #endif -#ifdef defined(ENABLE_OPENGL) +#ifdef ENABLE_OPENGL case WindowBackend::SDL_OPENGL: ImGui_ImplOpenGL3_RenderDrawData(data); break; #endif -#if defined(ENABLE_DX11) || defined(ENABLE_DX12) - case WindowBackend::DX11: - ImGui_ImplDX11_RenderDrawData(data); +#ifdef __APPLE__ + case WindowBackend::SDL_METAL: + Metal_RenderDrawData(data); break; #endif -#ifdef defined(__APPLE__) - case WindowBackend::SDL_METAL: - Metal_RenderDrawData(data); +#if defined(ENABLE_DX11) || defined(ENABLE_DX12) + case WindowBackend::DX11: + ImGui_ImplDX11_RenderDrawData(data); break; #endif default: From c03eff16acd0ad89c7dbd69b31200ca30551b2e1 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Fri, 26 Apr 2024 13:09:17 -0600 Subject: [PATCH 21/26] Addressed comments on PR --- CMakeLists.txt | 26 +- cmake/dependencies/ios.cmake | 53 +- cmake/ios.toolchain.cmake | 1122 --------------------------- extern/CMakeLists.txt | 2 +- src/CMakeLists.txt | 7 +- src/resource/archive/O2rArchive.cpp | 2 +- src/resource/archive/O2rArchive.h | 1 + 7 files changed, 53 insertions(+), 1160 deletions(-) delete mode 100644 cmake/ios.toolchain.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 684a1be41..5e62aa207 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,11 @@ cmake_minimum_required(VERSION 3.24.0) -set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) option(NON_PORTABLE "Build a non-portable version" OFF) -option(SIGN_LIBRARY "Enable xcode signing" OFF) -option(BUNDLE_ID "Bundle ID for xcode signing" "com.example.libultraship") + +if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + option(SIGN_LIBRARY "Enable xcode signing" OFF) + option(BUNDLE_ID "Bundle ID for xcode signing" "com.example.libultraship") +endif() project(libultraship LANGUAGES C CXX) if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") @@ -12,6 +14,22 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") set(CMAKE_OBJCXX_FLAGS "${CMAKE_OBJCXX_FLAGS} -fobjc-arc") endif() +if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + set(PLATFORM "OS64COMBINED") + include(FetchContent) + FetchContent_Declare(iostoolchain + GIT_REPOSITORY https://github.com/leetal/ios-cmake + GIT_TAG origin/master + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + ) + FetchContent_GetProperties(iostoolchain) + if(NOT iostoolchain_POPULATED) + FetchContent_Populate(iostoolchain) + endif() + include(${iostoolchain_SOURCE_DIR}/ios.toolchain.cmake) +endif() + if (CMAKE_SYSTEM_NAME STREQUAL "Windows") set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") endif() @@ -23,9 +41,7 @@ include(cmake/dependencies/common.cmake) if (CMAKE_SYSTEM_NAME STREQUAL "Android") include(cmake/dependencies/android.cmake) elseif (CMAKE_SYSTEM_NAME STREQUAL "iOS") - set(PLATFORM "OS64") include(cmake/dependencies/ios.cmake) - include(cmake/ios.toolchain.cmake) elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows") include(cmake/dependencies/windows.cmake) endif() diff --git a/cmake/dependencies/ios.cmake b/cmake/dependencies/ios.cmake index cc4843437..0ae20499b 100644 --- a/cmake/dependencies/ios.cmake +++ b/cmake/dependencies/ios.cmake @@ -8,34 +8,37 @@ if (NOT ${SDL2_FOUND}) GIT_TAG release-2.28.1 OVERRIDE_FIND_PACKAGE ) - message("SDL2 not found. Downloading now...") FetchContent_MakeAvailable(SDL2) - message("SDL2 downloaded to " ${FETCHCONTENT_BASE_DIR}/sdl2-src) endif() #=================== nlohmann-json =================== -FetchContent_Declare( - nlohmann_json - GIT_REPOSITORY https://github.com/nlohmann/json.git - GIT_TAG v3.11.3 - OVERRIDE_FIND_PACKAGE -) -message("nlohmann_json not found. Downloading now...") -FetchContent_MakeAvailable(nlohmann_json) -message("nlohmann_json downloaded to " ${nlohmann_json_SOURCE_DIR}) +find_package(nlohmann_json QUIET) +if (NOT ${nlohmann_json_FOUND}) + FetchContent_Declare( + nlohmann_json + GIT_REPOSITORY https://github.com/nlohmann/json.git + GIT_TAG v3.11.3 + OVERRIDE_FIND_PACKAGE + ) + FetchContent_MakeAvailable(nlohmann_json) +endif() #=================== libzip =================== -set(BUILD_TOOLS OFF) -set(BUILD_REGRESS OFF) -set(BUILD_EXAMPLES OFF) -set(BUILD_DOC OFF) -set(BUILD_OSSFUZZ OFF) -set(BUILD_SHARED_LIBS OFF) -FetchContent_Declare( - libzip - GIT_REPOSITORY https://github.com/nih-at/libzip.git - GIT_TAG v1.10.1 - OVERRIDE_FIND_PACKAGE -) -FetchContent_MakeAvailable(libzip) -list(APPEND ADDITIONAL_LIB_INCLUDES ${libzip_SOURCE_DIR}/lib ${libzip_BINARY_DIR}) \ No newline at end of file +find_package(libzip QUIET) +if (NOT ${libzip_FOUND}) + set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) + set(BUILD_TOOLS OFF) + set(BUILD_REGRESS OFF) + set(BUILD_EXAMPLES OFF) + set(BUILD_DOC OFF) + set(BUILD_OSSFUZZ OFF) + set(BUILD_SHARED_LIBS OFF) + FetchContent_Declare( + libzip + GIT_REPOSITORY https://github.com/nih-at/libzip.git + GIT_TAG v1.10.1 + OVERRIDE_FIND_PACKAGE + ) + FetchContent_MakeAvailable(libzip) + list(APPEND ADDITIONAL_LIB_INCLUDES ${libzip_SOURCE_DIR}/lib ${libzip_BINARY_DIR}) +endif() \ No newline at end of file diff --git a/cmake/ios.toolchain.cmake b/cmake/ios.toolchain.cmake deleted file mode 100644 index 379014166..000000000 --- a/cmake/ios.toolchain.cmake +++ /dev/null @@ -1,1122 +0,0 @@ -# This file is part of the ios-cmake project. It was retrieved from -# https://github.com/leetal/ios-cmake.git, which is a fork of -# https://github.com/gerstrong/ios-cmake.git, which is a fork of -# https://github.com/cristeab/ios-cmake.git, which is a fork of -# https://code.google.com/p/ios-cmake/. Which in turn is based off of -# the Platform/Darwin.cmake and Platform/UnixPaths.cmake files which -# are included with CMake 2.8.4 -# -# The ios-cmake project is licensed under the new BSD license. -# -# Copyright (c) 2014, Bogdan Cristea and LTE Engineering Software, -# Kitware, Inc., Insight Software Consortium. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# -# This file is based on the Platform/Darwin.cmake and -# Platform/UnixPaths.cmake files which are included with CMake 2.8.4 -# It has been altered for iOS development. -# -# Updated by Alex Stewart (alexs.mac@gmail.com) -# -# ***************************************************************************** -# Now maintained by Alexander Widerberg (widerbergaren [at] gmail.com) -# under the BSD-3-Clause license -# https://github.com/leetal/ios-cmake -# ***************************************************************************** -# -# INFORMATION / HELP -# -############################################################################### -# OPTIONS # -############################################################################### -# -# PLATFORM: (default "OS64") -# OS = Build for iPhoneOS. -# OS64 = Build for arm64 iphoneOS. -# OS64COMBINED = Build for arm64 x86_64 iphoneOS + iphoneOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step) -# SIMULATOR = Build for x86 i386 iphoneOS Simulator. -# SIMULATOR64 = Build for x86_64 iphoneOS Simulator. -# SIMULATORARM64 = Build for arm64 iphoneOS Simulator. -# SIMULATOR64COMBINED = Build for arm64 x86_64 iphoneOS Simulator. Combined into FAT STATIC lib (supported on 3.14+ of CMakewith "-G Xcode" argument ONLY) -# TVOS = Build for arm64 tvOS. -# TVOSCOMBINED = Build for arm64 x86_64 tvOS + tvOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step) -# SIMULATOR_TVOS = Build for x86_64 tvOS Simulator. -# SIMULATORARM64_TVOS = Build for arm64 tvOS Simulator. -# WATCHOS = Build for armv7k arm64_32 for watchOS. -# WATCHOSCOMBINED = Build for armv7k arm64_32 x86_64 watchOS + watchOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step) -# SIMULATOR_WATCHOS = Build for x86_64 for watchOS Simulator. -# SIMULATORARM64_WATCHOS = Build for arm64 for watchOS Simulator. -# MAC = Build for x86_64 macOS. -# MAC_ARM64 = Build for Apple Silicon macOS. -# MAC_UNIVERSAL = Combined build for x86_64 and Apple Silicon on macOS. -# MAC_CATALYST = Build for x86_64 macOS with Catalyst support (iOS toolchain on macOS). -# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS -# MAC_CATALYST_ARM64 = Build for Apple Silicon macOS with Catalyst support (iOS toolchain on macOS). -# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS -# -# CMAKE_OSX_SYSROOT: Path to the SDK to use. By default this is -# automatically determined from PLATFORM and xcodebuild, but -# can also be manually specified (although this should not be required). -# -# CMAKE_DEVELOPER_ROOT: Path to the Developer directory for the platform -# being compiled for. By default, this is automatically determined from -# CMAKE_OSX_SYSROOT, but can also be manually specified (although this should -# not be required). -# -# DEPLOYMENT_TARGET: Minimum SDK version to target. Default 6.0 on watchOS, 13.0 on tvOS+iOS/iPadOS, 11.0 on macOS, 1.0 on visionOS -# -# NAMED_LANGUAGE_SUPPORT: -# ON (default) = Will require "enable_language(OBJC) and/or enable_language(OBJCXX)" for full OBJC|OBJCXX support -# OFF = Will embed the OBJC and OBJCXX flags into the CMAKE_C_FLAGS and CMAKE_CXX_FLAGS (legacy behavior, CMake version < 3.16) -# -# ENABLE_BITCODE: (ON|OFF) Enables or disables bitcode support. Default OFF -# -# ENABLE_ARC: (ON|OFF) Enables or disables ARC support. Default ON (ARC enabled by default) -# -# ENABLE_VISIBILITY: (ON|OFF) Enables or disables symbol visibility support. Default OFF (visibility hidden by default) -# -# ENABLE_STRICT_TRY_COMPILE: (ON|OFF) Enables or disables strict try_compile() on all Check* directives (will run linker -# to actually check if linking is possible). Default OFF (will set CMAKE_TRY_COMPILE_TARGET_TYPE to STATIC_LIBRARY) -# -# ARCHS: (armv7 armv7s armv7k arm64 arm64_32 i386 x86_64) If specified, will override the default architectures for the given PLATFORM -# OS = armv7 armv7s arm64 (if applicable) -# OS64 = arm64 (if applicable) -# SIMULATOR = i386 -# SIMULATOR64 = x86_64 -# SIMULATORARM64 = arm64 -# TVOS = arm64 -# SIMULATOR_TVOS = x86_64 (i386 has since long been deprecated) -# SIMULATORARM64_TVOS = arm64 -# WATCHOS = armv7k arm64_32 (if applicable) -# SIMULATOR_WATCHOS = x86_64 (i386 has since long been deprecated) -# SIMULATORARM64_WATCHOS = arm64 -# MAC = x86_64 -# MAC_ARM64 = arm64 -# MAC_UNIVERSAL = x86_64 arm64 -# MAC_CATALYST = x86_64 -# MAC_CATALYST_ARM64 = arm64 -# -# NOTE: When manually specifying ARCHS, put a semi-colon between the entries. E.g., -DARCHS="armv7;arm64" -# -############################################################################### -# END OPTIONS # -############################################################################### -# -# This toolchain defines the following properties (available via get_property()) for use externally: -# -# PLATFORM: The currently targeted platform. -# XCODE_VERSION: Version number (not including Build version) of Xcode detected. -# SDK_VERSION: Version of SDK being used. -# OSX_ARCHITECTURES: Architectures being compiled for (generated from PLATFORM). -# APPLE_TARGET_TRIPLE: Used by autoconf build systems. NOTE: If "ARCHS" is overridden, this will *NOT* be set! -# -# This toolchain defines the following macros for use externally: -# -# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE XCODE_VARIANT) -# A convenience macro for setting xcode specific properties on targets. -# Available variants are: All, Release, RelWithDebInfo, Debug, MinSizeRel -# example: set_xcode_property (myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1" "all"). -# -# find_host_package (PROGRAM ARGS) -# A macro used to find executable programs on the host system, not within the -# environment. Thanks to the android-cmake project for providing the -# command. -# - -cmake_minimum_required(VERSION 3.8.0) - -# CMake invokes the toolchain file twice during the first build, but only once during subsequent rebuilds. -if(DEFINED ENV{_IOS_TOOLCHAIN_HAS_RUN}) - return() -endif() -set(ENV{_IOS_TOOLCHAIN_HAS_RUN} true) - -# List of supported platform values -list(APPEND _supported_platforms - "OS" "OS64" "OS64COMBINED" "SIMULATOR" "SIMULATOR64" "SIMULATORARM64" "SIMULATOR64COMBINED" - "TVOS" "TVOSCOMBINED" "SIMULATOR_TVOS" "SIMULATORARM64_TVOS" - "WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS" - "MAC" "MAC_ARM64" "MAC_UNIVERSAL" - "VISIONOS" "SIMULATOR_VISIONOS" "SIMULATOR64_VISIONOS" - "MAC_CATALYST" "MAC_CATALYST_ARM64") - -# Cache what generator is used -set(USED_CMAKE_GENERATOR "${CMAKE_GENERATOR}") - -# Check if using a CMake version capable of building combined FAT builds (simulator and target slices combined in one static lib) -if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14") - set(MODERN_CMAKE YES) -endif() - -# Get the Xcode version being used. -# Problem: CMake runs toolchain files multiple times, but can't read cache variables on some runs. -# Workaround: On the first run (in which cache variables are always accessible), set an intermediary environment variable. -# -# NOTE: This pattern is used in many places in this toolchain to speed up checks of all sorts -if(DEFINED XCODE_VERSION_INT) - # Environment variables are always preserved. - set(ENV{_XCODE_VERSION_INT} "${XCODE_VERSION_INT}") -elseif(DEFINED ENV{_XCODE_VERSION_INT}) - set(XCODE_VERSION_INT "$ENV{_XCODE_VERSION_INT}") -elseif(NOT DEFINED XCODE_VERSION_INT) - find_program(XCODEBUILD_EXECUTABLE xcodebuild) - if(NOT XCODEBUILD_EXECUTABLE) - message(FATAL_ERROR "xcodebuild not found. Please install either the standalone commandline tools or Xcode.") - endif() - execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -version - OUTPUT_VARIABLE XCODE_VERSION_INT - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION_INT "${XCODE_VERSION_INT}") - string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION_INT "${XCODE_VERSION_INT}") - set(XCODE_VERSION_INT "${XCODE_VERSION_INT}" CACHE INTERNAL "") -endif() - -# Assuming that xcode 12.0 is installed you most probably have ios sdk 14.0 or later installed (tested on Big Sur) -# if you don't set a deployment target it will be set the way you only get 64-bit builds -#if(NOT DEFINED DEPLOYMENT_TARGET AND XCODE_VERSION_INT VERSION_GREATER 12.0) -# Temporarily fix the arm64 issues in CMake install-combined by excluding arm64 for simulator builds (needed for Apple Silicon...) -# set(CMAKE_XCODE_ATTRIBUTE_EXCLUDED_ARCHS[sdk=iphonesimulator*] "arm64") -#endif() - -# Check if the platform variable is set -if(DEFINED PLATFORM) - # Environment variables are always preserved. - set(ENV{_PLATFORM} "${PLATFORM}") -elseif(DEFINED ENV{_PLATFORM}) - set(PLATFORM "$ENV{_PLATFORM}") -elseif(NOT DEFINED PLATFORM) - message(FATAL_ERROR "PLATFORM argument not set. Bailing configure since I don't know what target you want to build for!") -endif () - -if(PLATFORM MATCHES ".*COMBINED" AND NOT CMAKE_GENERATOR MATCHES "Xcode") - message(FATAL_ERROR "The combined builds support requires Xcode to be used as a generator via '-G Xcode' command-line argument in CMake") -endif() - -# Safeguard that the platform value is set and is one of the supported values -list(FIND _supported_platforms ${PLATFORM} contains_PLATFORM) -if("${contains_PLATFORM}" EQUAL "-1") - string(REPLACE ";" "\n * " _supported_platforms_formatted "${_supported_platforms}") - message(FATAL_ERROR " Invalid PLATFORM specified! Current value: ${PLATFORM}.\n" - " Supported PLATFORM values: \n * ${_supported_platforms_formatted}") -endif() - -# Check if Apple Silicon is supported -if(PLATFORM MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$|^(MAC_UNIVERSAL)$" AND ${CMAKE_VERSION} VERSION_LESS "3.19.5") - message(FATAL_ERROR "Apple Silicon builds requires a minimum of CMake 3.19.5") -endif() - -# Touch the toolchain variable to suppress the "unused variable" warning. -# This happens if CMake is invoked with the same command line the second time. -if(CMAKE_TOOLCHAIN_FILE) -endif() - -# Fix for PThread library not in path -set(CMAKE_THREAD_LIBS_INIT "-lpthread") -set(CMAKE_HAVE_THREADS_LIBRARY 1) -set(CMAKE_USE_WIN32_THREADS_INIT 0) -set(CMAKE_USE_PTHREADS_INIT 1) - -# Specify named language support defaults. -if(NOT DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16") - set(NAMED_LANGUAGE_SUPPORT ON) - message(STATUS "[DEFAULTS] Using explicit named language support! E.g., enable_language(CXX) is needed in the project files.") -elseif(NOT DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_LESS "3.16") - set(NAMED_LANGUAGE_SUPPORT OFF) - message(STATUS "[DEFAULTS] Disabling explicit named language support. Falling back to legacy behavior.") -elseif(DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_LESS "3.16") - message(FATAL_ERROR "CMake named language support for OBJC and OBJCXX was added in CMake 3.16.") -endif() -set(NAMED_LANGUAGE_SUPPORT_INT ${NAMED_LANGUAGE_SUPPORT} CACHE BOOL - "Whether or not to enable explicit named language support" FORCE) - -# Specify the minimum version of the deployment target. -if(NOT DEFINED DEPLOYMENT_TARGET) - if (PLATFORM MATCHES "WATCHOS") - # Unless specified, SDK version 4.0 is used by default as minimum target version (watchOS). - set(DEPLOYMENT_TARGET "6.0") - elseif(PLATFORM STREQUAL "MAC") - # Unless specified, SDK version 10.13 (High Sierra) is used by default as the minimum target version (macos). - set(DEPLOYMENT_TARGET "11.0") - elseif(PLATFORM STREQUAL "VISIONOS" OR PLATFORM STREQUAL "SIMULATOR_VISIONOS" OR PLATFORM STREQUAL "SIMULATOR64_VISIONOS") - # Unless specified, SDK version 1.0 is used by default as minimum target version (visionOS). - set(DEPLOYMENT_TARGET "1.0") - elseif(PLATFORM STREQUAL "MAC_ARM64") - # Unless specified, SDK version 11.0 (Big Sur) is used by default as the minimum target version (macOS on arm). - set(DEPLOYMENT_TARGET "11.0") - elseif(PLATFORM STREQUAL "MAC_UNIVERSAL") - # Unless specified, SDK version 11.0 (Big Sur) is used by default as minimum target version for universal builds. - set(DEPLOYMENT_TARGET "11.0") - elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64") - # Unless specified, SDK version 13.0 is used by default as the minimum target version (mac catalyst minimum requirement). - set(DEPLOYMENT_TARGET "13.1") - else() - # Unless specified, SDK version 11.0 is used by default as the minimum target version (iOS, tvOS). - set(DEPLOYMENT_TARGET "13.0") - endif() - message(STATUS "[DEFAULTS] Using the default min-version since DEPLOYMENT_TARGET not provided!") -elseif(DEFINED DEPLOYMENT_TARGET AND PLATFORM MATCHES "^MAC_CATALYST" AND ${DEPLOYMENT_TARGET} VERSION_LESS "13.1") - message(FATAL_ERROR "Mac Catalyst builds requires a minimum deployment target of 13.1!") -endif() - -# Store the DEPLOYMENT_TARGET in the cache -set(DEPLOYMENT_TARGET "${DEPLOYMENT_TARGET}" CACHE INTERNAL "") - -# Handle the case where we are targeting iOS and a version above 10.3.4 (32-bit support dropped officially) -if(PLATFORM STREQUAL "OS" AND DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 10.3.4) - set(PLATFORM "OS64") - message(STATUS "Targeting minimum SDK version ${DEPLOYMENT_TARGET}. Dropping 32-bit support.") -elseif(PLATFORM STREQUAL "SIMULATOR" AND DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 10.3.4) - set(PLATFORM "SIMULATOR64") - message(STATUS "Targeting minimum SDK version ${DEPLOYMENT_TARGET}. Dropping 32-bit support.") -endif() - -set(PLATFORM_INT "${PLATFORM}") - -if(DEFINED ARCHS) - string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") -endif() - -# Determine the platform name and architectures for use in xcodebuild commands -# from the specified PLATFORM_INT name. -if(PLATFORM_INT STREQUAL "OS") - set(SDK_NAME iphoneos) - if(NOT ARCHS) - set(ARCHS armv7 armv7s arm64) - set(APPLE_TARGET_TRIPLE_INT arm-apple-ios${DEPLOYMENT_TARGET}) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}) - endif() -elseif(PLATFORM_INT STREQUAL "OS64") - set(SDK_NAME iphoneos) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 10.0) - set(ARCHS arm64) # FIXME: Add arm64e when Apple has fixed the integration issues with it, libarclite_iphoneos.a is currently missing bitcode markers for example - else() - set(ARCHS arm64) - endif() - set(APPLE_TARGET_TRIPLE_INT arm64-apple-ios${DEPLOYMENT_TARGET}) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}) - endif() -elseif(PLATFORM_INT STREQUAL "OS64COMBINED") - set(SDK_NAME iphoneos) - if(MODERN_CMAKE) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 12.0) - set(ARCHS arm64 x86_64) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") - else() - set(ARCHS arm64 x86_64) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64") - endif() - set(APPLE_TARGET_TRIPLE_INT arm64-x86_64-apple-ios${DEPLOYMENT_TARGET}) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}) - endif() - else() - message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the OS64COMBINED setting work") - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR64COMBINED") - set(SDK_NAME iphonesimulator) - if(MODERN_CMAKE) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 12.0) - set(ARCHS arm64 x86_64) # FIXME: Add arm64e when Apple have fixed the integration issues with it, libarclite_iphoneos.a is currently missing bitcode markers for example - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") - else() - set(ARCHS arm64 x86_64) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64") - endif() - set(APPLE_TARGET_TRIPLE_INT aarch64-x86_64-apple-ios${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) - endif() - else() - message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the SIMULATOR64COMBINED setting work") - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR") - set(SDK_NAME iphonesimulator) - if(NOT ARCHS) - set(ARCHS i386) - set(APPLE_TARGET_TRIPLE_INT i386-apple-ios${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) - endif() - message(DEPRECATION "SIMULATOR IS DEPRECATED. Consider using SIMULATOR64 instead.") -elseif(PLATFORM_INT STREQUAL "SIMULATOR64") - set(SDK_NAME iphonesimulator) - if(NOT ARCHS) - set(ARCHS x86_64) - set(APPLE_TARGET_TRIPLE_INT x86_64-apple-ios${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATORARM64") - set(SDK_NAME iphonesimulator) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT arm64-apple-ios${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "TVOS") - set(SDK_NAME appletvos) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT arm64-apple-tvos${DEPLOYMENT_TARGET}) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}) - endif() -elseif (PLATFORM_INT STREQUAL "TVOSCOMBINED") - set(SDK_NAME appletvos) - if(MODERN_CMAKE) - if(NOT ARCHS) - set(ARCHS arm64 x86_64) - set(APPLE_TARGET_TRIPLE_INT arm64-x86_64-apple-tvos${DEPLOYMENT_TARGET}) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvsimulator*] "x86_64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvsimulator*] "x86_64") - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}) - endif() - else() - message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the TVOSCOMBINED setting work") - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR_TVOS") - set(SDK_NAME appletvsimulator) - if(NOT ARCHS) - set(ARCHS x86_64) - set(APPLE_TARGET_TRIPLE_INT x86_64-apple-tvos${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_TVOS") - set(SDK_NAME appletvsimulator) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT arm64-apple-tvos${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "WATCHOS") - set(SDK_NAME watchos) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 10.0) - set(ARCHS armv7k arm64_32) - set(APPLE_TARGET_TRIPLE_INT arm64_32-apple-watchos${DEPLOYMENT_TARGET}) - else() - set(ARCHS armv7k) - set(APPLE_TARGET_TRIPLE_INT arm-apple-watchos${DEPLOYMENT_TARGET}) - endif() - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}) - endif() -elseif(PLATFORM_INT STREQUAL "WATCHOSCOMBINED") - set(SDK_NAME watchos) - if(MODERN_CMAKE) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 10.0) - set(ARCHS armv7k arm64_32 i386) - set(APPLE_TARGET_TRIPLE_INT arm64_32-i386-apple-watchos${DEPLOYMENT_TARGET}) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k arm64_32") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k arm64_32") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386") - else() - set(ARCHS armv7k i386) - set(APPLE_TARGET_TRIPLE_INT arm-i386-apple-watchos${DEPLOYMENT_TARGET}) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386") - endif() - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}) - endif() - else() - message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the WATCHOSCOMBINED setting work") - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS") - set(SDK_NAME watchsimulator) - if(NOT ARCHS) - set(ARCHS i386) - set(APPLE_TARGET_TRIPLE_INT i386-apple-watchos${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_WATCHOS") - set(SDK_NAME watchsimulator) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT arm64-apple-watchos${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR64_VISIONOS") - set(SDK_NAME xrsimulator) - if(NOT ARCHS) - set(ARCHS x86_64) - set(APPLE_TARGET_TRIPLE_INT x86_64-apple-xros${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR_VISIONOS") - set(SDK_NAME xrsimulator) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT arm64-apple-xros${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "VISIONOS") - set(SDK_NAME xros) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT arm64-apple-xros${DEPLOYMENT_TARGET}) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET}) - endif() -elseif(PLATFORM_INT STREQUAL "MAC" OR PLATFORM_INT STREQUAL "MAC_CATALYST") - set(SDK_NAME macosx) - if(NOT ARCHS) - set(ARCHS x86_64) - endif() - string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") - if(PLATFORM_INT STREQUAL "MAC") - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET}) - elseif(PLATFORM_INT STREQUAL "MAC_CATALYST") - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi) - endif() -elseif(PLATFORM_INT MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$") - set(SDK_NAME macosx) - if(NOT ARCHS) - set(ARCHS arm64) - endif() - string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") - if(PLATFORM_INT STREQUAL "MAC_ARM64") - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET}) - elseif(PLATFORM_INT STREQUAL "MAC_CATALYST_ARM64") - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi) - endif() -elseif(PLATFORM_INT STREQUAL "MAC_UNIVERSAL") - set(SDK_NAME macosx) - if(NOT ARCHS) - set(ARCHS "x86_64;arm64") - endif() - string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET}) -else() - message(FATAL_ERROR "Invalid PLATFORM: ${PLATFORM_INT}") -endif() - -string(REPLACE ";" " " ARCHS_SPACED "${ARCHS}") - -if(MODERN_CMAKE AND PLATFORM_INT MATCHES ".*COMBINED" AND NOT CMAKE_GENERATOR MATCHES "Xcode") - message(FATAL_ERROR "The COMBINED options only work with Xcode generator, -G Xcode") -endif() - -if(CMAKE_GENERATOR MATCHES "Xcode" AND PLATFORM_INT MATCHES "^MAC_CATALYST") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") - set(CMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS "macosx") - set(CMAKE_XCODE_ATTRIBUTE_SUPPORTS_MACCATALYST "YES") - if(NOT DEFINED MACOSX_DEPLOYMENT_TARGET) - set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "10.15") - else() - set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "${MACOSX_DEPLOYMENT_TARGET}") - endif() -elseif(CMAKE_GENERATOR MATCHES "Xcode") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") - set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${DEPLOYMENT_TARGET}") - if(NOT PLATFORM_INT MATCHES ".*COMBINED") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=${SDK_NAME}*] "${ARCHS_SPACED}") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=${SDK_NAME}*] "${ARCHS_SPACED}") - endif() -endif() - -# If the user did not specify the SDK root to use, then query xcodebuild for it. -if(DEFINED CMAKE_OSX_SYSROOT_INT) - # Environment variables are always preserved. - set(ENV{_CMAKE_OSX_SYSROOT_INT} "${CMAKE_OSX_SYSROOT_INT}") -elseif(DEFINED ENV{_CMAKE_OSX_SYSROOT_INT}) - set(CMAKE_OSX_SYSROOT_INT "$ENV{_CMAKE_OSX_SYSROOT_INT}") -elseif(NOT DEFINED CMAKE_OSX_SYSROOT_INT) - execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -version -sdk ${SDK_NAME} Path - OUTPUT_VARIABLE CMAKE_OSX_SYSROOT_INT - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() - -if (NOT DEFINED CMAKE_OSX_SYSROOT_INT AND NOT DEFINED CMAKE_OSX_SYSROOT) - message(SEND_ERROR "Please make sure that Xcode is installed and that the toolchain" - "is pointing to the correct path. Please run:" - "sudo xcode-select -s /Applications/Xcode.app/Contents/Developer" - "and see if that fixes the problem for you.") - message(FATAL_ERROR "Invalid CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT} " - "does not exist.") -elseif(DEFINED CMAKE_OSX_SYSROOT_INT) - set(CMAKE_OSX_SYSROOT_INT "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") - # Specify the location or name of the platform SDK to be used in CMAKE_OSX_SYSROOT. - set(CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") -endif() - -# Use bitcode or not -if(NOT DEFINED ENABLE_BITCODE) - message(STATUS "[DEFAULTS] Disabling bitcode support by default. ENABLE_BITCODE not provided for override!") - set(ENABLE_BITCODE OFF) -endif() -set(ENABLE_BITCODE_INT ${ENABLE_BITCODE} CACHE BOOL - "Whether or not to enable bitcode" FORCE) -# Use ARC or not -if(NOT DEFINED ENABLE_ARC) - # Unless specified, enable ARC support by default - set(ENABLE_ARC ON) - message(STATUS "[DEFAULTS] Enabling ARC support by default. ENABLE_ARC not provided!") -endif() -set(ENABLE_ARC_INT ${ENABLE_ARC} CACHE BOOL "Whether or not to enable ARC" FORCE) -# Use hidden visibility or not -if(NOT DEFINED ENABLE_VISIBILITY) - # Unless specified, disable symbols visibility by default - set(ENABLE_VISIBILITY OFF) - message(STATUS "[DEFAULTS] Hiding symbols visibility by default. ENABLE_VISIBILITY not provided!") -endif() -set(ENABLE_VISIBILITY_INT ${ENABLE_VISIBILITY} CACHE BOOL "Whether or not to hide symbols from the dynamic linker (-fvisibility=hidden)" FORCE) -# Set strict compiler checks or not -if(NOT DEFINED ENABLE_STRICT_TRY_COMPILE) - # Unless specified, disable strict try_compile() - set(ENABLE_STRICT_TRY_COMPILE OFF) - message(STATUS "[DEFAULTS] Using NON-strict compiler checks by default. ENABLE_STRICT_TRY_COMPILE not provided!") -endif() -set(ENABLE_STRICT_TRY_COMPILE_INT ${ENABLE_STRICT_TRY_COMPILE} CACHE BOOL - "Whether or not to use strict compiler checks" FORCE) - -# Get the SDK version information. -if(DEFINED SDK_VERSION) - # Environment variables are always preserved. - set(ENV{_SDK_VERSION} "${SDK_VERSION}") -elseif(DEFINED ENV{_SDK_VERSION}) - set(SDK_VERSION "$ENV{_SDK_VERSION}") -elseif(NOT DEFINED SDK_VERSION) - execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -sdk ${CMAKE_OSX_SYSROOT_INT} -version SDKVersion - OUTPUT_VARIABLE SDK_VERSION - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() - -# Find the Developer root for the specific iOS platform being compiled for -# from CMAKE_OSX_SYSROOT. Should be ../../ from SDK specified in -# CMAKE_OSX_SYSROOT. There does not appear to be a direct way to obtain -# this information from xcrun or xcodebuild. -if (NOT DEFINED CMAKE_DEVELOPER_ROOT AND NOT CMAKE_GENERATOR MATCHES "Xcode") - get_filename_component(PLATFORM_SDK_DIR ${CMAKE_OSX_SYSROOT_INT} PATH) - get_filename_component(CMAKE_DEVELOPER_ROOT ${PLATFORM_SDK_DIR} PATH) - if (NOT EXISTS "${CMAKE_DEVELOPER_ROOT}") - message(FATAL_ERROR "Invalid CMAKE_DEVELOPER_ROOT: ${CMAKE_DEVELOPER_ROOT} does not exist.") - endif() -endif() - -# Find the C & C++ compilers for the specified SDK. -if(DEFINED CMAKE_C_COMPILER) - # Environment variables are always preserved. - set(ENV{_CMAKE_C_COMPILER} "${CMAKE_C_COMPILER}") -elseif(DEFINED ENV{_CMAKE_C_COMPILER}) - set(CMAKE_C_COMPILER "$ENV{_CMAKE_C_COMPILER}") - set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) -elseif(NOT DEFINED CMAKE_C_COMPILER) - execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find clang - OUTPUT_VARIABLE CMAKE_C_COMPILER - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) -endif() -if(DEFINED CMAKE_CXX_COMPILER) - # Environment variables are always preserved. - set(ENV{_CMAKE_CXX_COMPILER} "${CMAKE_CXX_COMPILER}") -elseif(DEFINED ENV{_CMAKE_CXX_COMPILER}) - set(CMAKE_CXX_COMPILER "$ENV{_CMAKE_CXX_COMPILER}") -elseif(NOT DEFINED CMAKE_CXX_COMPILER) - execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find clang++ - OUTPUT_VARIABLE CMAKE_CXX_COMPILER - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() -# Find (Apple's) libtool. -if(DEFINED BUILD_LIBTOOL) - # Environment variables are always preserved. - set(ENV{_BUILD_LIBTOOL} "${BUILD_LIBTOOL}") -elseif(DEFINED ENV{_BUILD_LIBTOOL}) - set(BUILD_LIBTOOL "$ENV{_BUILD_LIBTOOL}") -elseif(NOT DEFINED BUILD_LIBTOOL) - execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find libtool - OUTPUT_VARIABLE BUILD_LIBTOOL - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() -# Find the toolchain's provided install_name_tool if none is found on the host -if(DEFINED CMAKE_INSTALL_NAME_TOOL) - # Environment variables are always preserved. - set(ENV{_CMAKE_INSTALL_NAME_TOOL} "${CMAKE_INSTALL_NAME_TOOL}") -elseif(DEFINED ENV{_CMAKE_INSTALL_NAME_TOOL}) - set(CMAKE_INSTALL_NAME_TOOL "$ENV{_CMAKE_INSTALL_NAME_TOOL}") -elseif(NOT DEFINED CMAKE_INSTALL_NAME_TOOL) - execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find install_name_tool - OUTPUT_VARIABLE CMAKE_INSTALL_NAME_TOOL_INT - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - set(CMAKE_INSTALL_NAME_TOOL ${CMAKE_INSTALL_NAME_TOOL_INT} CACHE INTERNAL "") -endif() - -# Configure libtool to be used instead of ar + ranlib to build static libraries. -# This is required on Xcode 7+, but should also work on previous versions of -# Xcode. -get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES) -foreach(lang ${languages}) - set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "${BUILD_LIBTOOL} -static -o " CACHE INTERNAL "") -endforeach() - -# CMake 3.14+ support building for iOS, watchOS, and tvOS out of the box. -if(MODERN_CMAKE) - if(SDK_NAME MATCHES "iphone") - set(CMAKE_SYSTEM_NAME iOS) - elseif(SDK_NAME MATCHES "xros") - set(CMAKE_SYSTEM_NAME visionOS) - elseif(SDK_NAME MATCHES "xrsimulator") - set(CMAKE_SYSTEM_NAME visionOS) - elseif(SDK_NAME MATCHES "macosx") - set(CMAKE_SYSTEM_NAME Darwin) - elseif(SDK_NAME MATCHES "appletv") - set(CMAKE_SYSTEM_NAME tvOS) - elseif(SDK_NAME MATCHES "watch") - set(CMAKE_SYSTEM_NAME watchOS) - endif() - # Provide flags for a combined FAT library build on newer CMake versions - if(PLATFORM_INT MATCHES ".*COMBINED") - set(CMAKE_IOS_INSTALL_COMBINED YES) - if(CMAKE_GENERATOR MATCHES "Xcode") - # Set the SDKROOT Xcode properties to a Xcode-friendly value (the SDK_NAME, E.g, iphoneos) - # This way, Xcode will automatically switch between the simulator and device SDK when building. - set(CMAKE_XCODE_ATTRIBUTE_SDKROOT "${SDK_NAME}") - # Force to not build just one ARCH, but all! - set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH "NO") - endif() - endif() -elseif(NOT DEFINED CMAKE_SYSTEM_NAME AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.10") - # Legacy code path prior to CMake 3.14 or fallback if no CMAKE_SYSTEM_NAME specified - set(CMAKE_SYSTEM_NAME iOS) -elseif(NOT DEFINED CMAKE_SYSTEM_NAME) - # Legacy code path before CMake 3.14 or fallback if no CMAKE_SYSTEM_NAME specified - set(CMAKE_SYSTEM_NAME Darwin) -endif() -# Standard settings. -set(CMAKE_SYSTEM_VERSION ${SDK_VERSION} CACHE INTERNAL "") -set(UNIX ON CACHE BOOL "") -set(APPLE ON CACHE BOOL "") -if(PLATFORM STREQUAL "MAC" OR PLATFORM STREQUAL "MAC_ARM64" OR PLATFORM STREQUAL "MAC_UNIVERSAL") - set(IOS OFF CACHE BOOL "") - set(MACOS ON CACHE BOOL "") -elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64") - set(IOS ON CACHE BOOL "") - set(MACOS ON CACHE BOOL "") -else() - set(IOS ON CACHE BOOL "") -endif() -# Set the architectures for which to build. -set(CMAKE_OSX_ARCHITECTURES ${ARCHS} CACHE INTERNAL "") -# Change the type of target generated for try_compile() so it'll work when cross-compiling, weak compiler checks -if(NOT ENABLE_STRICT_TRY_COMPILE_INT) - set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) -endif() -# All iOS/Darwin specific settings - some may be redundant. -if (NOT DEFINED CMAKE_MACOSX_BUNDLE) - set(CMAKE_MACOSX_BUNDLE YES) -endif() -set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") -set(CMAKE_SHARED_LIBRARY_PREFIX "lib") -set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib") -set(CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES ".tbd" ".so") -set(CMAKE_SHARED_MODULE_PREFIX "lib") -set(CMAKE_SHARED_MODULE_SUFFIX ".so") -set(CMAKE_C_COMPILER_ABI ELF) -set(CMAKE_CXX_COMPILER_ABI ELF) -set(CMAKE_C_HAS_ISYSROOT 1) -set(CMAKE_CXX_HAS_ISYSROOT 1) -set(CMAKE_MODULE_EXISTS 1) -set(CMAKE_DL_LIBS "") -set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ") -set(CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ") -set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}") -set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}") - -if(ARCHS MATCHES "((^|;|, )(arm64|arm64e|x86_64))+") - set(CMAKE_C_SIZEOF_DATA_PTR 8) - set(CMAKE_CXX_SIZEOF_DATA_PTR 8) - if(ARCHS MATCHES "((^|;|, )(arm64|arm64e))+") - set(CMAKE_SYSTEM_PROCESSOR "aarch64") - else() - set(CMAKE_SYSTEM_PROCESSOR "x86_64") - endif() -else() - set(CMAKE_C_SIZEOF_DATA_PTR 4) - set(CMAKE_CXX_SIZEOF_DATA_PTR 4) - set(CMAKE_SYSTEM_PROCESSOR "arm") -endif() - -# Note that only Xcode 7+ supports the newer more specific: -# -m${SDK_NAME}-version-min flags, older versions of Xcode use: -# -m(ios/ios-simulator)-version-min instead. -if(${CMAKE_VERSION} VERSION_LESS "3.11") - if(PLATFORM_INT STREQUAL "OS" OR PLATFORM_INT STREQUAL "OS64") - if(XCODE_VERSION_INT VERSION_LESS 7.0) - set(SDK_NAME_VERSION_FLAGS - "-mios-version-min=${DEPLOYMENT_TARGET}") - else() - # Xcode 7.0+ uses flags we can build directly from SDK_NAME. - set(SDK_NAME_VERSION_FLAGS - "-m${SDK_NAME}-version-min=${DEPLOYMENT_TARGET}") - endif() - elseif(PLATFORM_INT STREQUAL "TVOS") - set(SDK_NAME_VERSION_FLAGS - "-mtvos-version-min=${DEPLOYMENT_TARGET}") - elseif(PLATFORM_INT STREQUAL "SIMULATOR_TVOS") - set(SDK_NAME_VERSION_FLAGS - "-mtvos-simulator-version-min=${DEPLOYMENT_TARGET}") -elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_TVOS") - set(SDK_NAME_VERSION_FLAGS - "-mtvos-simulator-version-min=${DEPLOYMENT_TARGET}") - elseif(PLATFORM_INT STREQUAL "WATCHOS") - set(SDK_NAME_VERSION_FLAGS - "-mwatchos-version-min=${DEPLOYMENT_TARGET}") - elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS") - set(SDK_NAME_VERSION_FLAGS - "-mwatchos-simulator-version-min=${DEPLOYMENT_TARGET}") - elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_WATCHOS") - set(SDK_NAME_VERSION_FLAGS - "-mwatchos-simulator-version-min=${DEPLOYMENT_TARGET}") - elseif(PLATFORM_INT STREQUAL "MAC") - set(SDK_NAME_VERSION_FLAGS - "-mmacosx-version-min=${DEPLOYMENT_TARGET}") - else() - # SIMULATOR or SIMULATOR64 both use -mios-simulator-version-min. - set(SDK_NAME_VERSION_FLAGS - "-mios-simulator-version-min=${DEPLOYMENT_TARGET}") - endif() -elseif(NOT PLATFORM_INT MATCHES "^MAC_CATALYST") - # Newer versions of CMake sets the version min flags correctly, skip this for Mac Catalyst targets - set(CMAKE_OSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET} CACHE INTERNAL "Minimum OS X deployment version") -endif() - -if(DEFINED APPLE_TARGET_TRIPLE_INT) - set(APPLE_TARGET_TRIPLE ${APPLE_TARGET_TRIPLE_INT} CACHE INTERNAL "") - set(CMAKE_C_COMPILER_TARGET ${APPLE_TARGET_TRIPLE}) - set(CMAKE_CXX_COMPILER_TARGET ${APPLE_TARGET_TRIPLE}) - set(CMAKE_ASM_COMPILER_TARGET ${APPLE_TARGET_TRIPLE}) -endif() - -if(PLATFORM_INT MATCHES "^MAC_CATALYST") - set(C_TARGET_FLAGS "-isystem ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/usr/include -iframework ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks") -endif() - -if(ENABLE_BITCODE_INT) - set(BITCODE "-fembed-bitcode") - set(CMAKE_XCODE_ATTRIBUTE_BITCODE_GENERATION_MODE "bitcode") - set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "YES") -else() - set(BITCODE "") - set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO") -endif() - -if(ENABLE_ARC_INT) - set(FOBJC_ARC "-fobjc-arc") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "YES") -else() - set(FOBJC_ARC "-fno-objc-arc") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "NO") -endif() - -if(NAMED_LANGUAGE_SUPPORT_INT) - set(OBJC_VARS "-fobjc-abi-version=2 -DOBJC_OLD_DISPATCH_PROTOTYPES=0") - set(OBJC_LEGACY_VARS "") -else() - set(OBJC_VARS "") - set(OBJC_LEGACY_VARS "-fobjc-abi-version=2 -DOBJC_OLD_DISPATCH_PROTOTYPES=0") -endif() - -if(NOT ENABLE_VISIBILITY_INT) - foreach(lang ${languages}) - set(CMAKE_${lang}_VISIBILITY_PRESET "hidden" CACHE INTERNAL "") - endforeach() - set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "YES") - set(VISIBILITY "-fvisibility=hidden -fvisibility-inlines-hidden") -else() - foreach(lang ${languages}) - set(CMAKE_${lang}_VISIBILITY_PRESET "default" CACHE INTERNAL "") - endforeach() - set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "NO") - set(VISIBILITY "-fvisibility=default") -endif() - -if(DEFINED APPLE_TARGET_TRIPLE) - set(APPLE_TARGET_TRIPLE_FLAG "-target ${APPLE_TARGET_TRIPLE}") -endif() - -#Check if Xcode generator is used since that will handle these flags automagically -if(CMAKE_GENERATOR MATCHES "Xcode") - message(STATUS "Not setting any manual command-line buildflags, since Xcode is selected as the generator. Modifying the Xcode build-settings directly instead.") -else() - set(CMAKE_C_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${OBJC_LEGACY_VARS} ${BITCODE} ${VISIBILITY} ${CMAKE_C_FLAGS}" CACHE INTERNAL - "Flags used by the compiler during all C build types.") - set(CMAKE_C_FLAGS_DEBUG "-O0 -g ${CMAKE_C_FLAGS_DEBUG}") - set(CMAKE_C_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_C_FLAGS_MINSIZEREL}") - set(CMAKE_C_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_C_FLAGS_RELWITHDEBINFO}") - set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_C_FLAGS_RELEASE}") - set(CMAKE_CXX_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${OBJC_LEGACY_VARS} ${BITCODE} ${VISIBILITY} ${CMAKE_CXX_FLAGS}" CACHE INTERNAL - "Flags used by the compiler during all CXX build types.") - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g ${CMAKE_CXX_FLAGS_DEBUG}") - set(CMAKE_CXX_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_CXX_FLAGS_MINSIZEREL}") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") - set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_CXX_FLAGS_RELEASE}") - if(NAMED_LANGUAGE_SUPPORT_INT) - set(CMAKE_OBJC_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} ${FOBJC_ARC} ${OBJC_VARS} ${CMAKE_OBJC_FLAGS}" CACHE INTERNAL - "Flags used by the compiler during all OBJC build types.") - set(CMAKE_OBJC_FLAGS_DEBUG "-O0 -g ${CMAKE_OBJC_FLAGS_DEBUG}") - set(CMAKE_OBJC_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_OBJC_FLAGS_MINSIZEREL}") - set(CMAKE_OBJC_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_OBJC_FLAGS_RELWITHDEBINFO}") - set(CMAKE_OBJC_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_OBJC_FLAGS_RELEASE}") - set(CMAKE_OBJCXX_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} ${FOBJC_ARC} ${OBJC_VARS} ${CMAKE_OBJCXX_FLAGS}" CACHE INTERNAL - "Flags used by the compiler during all OBJCXX build types.") - set(CMAKE_OBJCXX_FLAGS_DEBUG "-O0 -g ${CMAKE_OBJCXX_FLAGS_DEBUG}") - set(CMAKE_OBJCXX_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_OBJCXX_FLAGS_MINSIZEREL}") - set(CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO}") - set(CMAKE_OBJCXX_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_OBJCXX_FLAGS_RELEASE}") - endif() - set(CMAKE_C_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}" CACHE INTERNAL - "Flags used by the compiler for all C link types.") - set(CMAKE_CXX_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}" CACHE INTERNAL - "Flags used by the compiler for all CXX link types.") - if(NAMED_LANGUAGE_SUPPORT_INT) - set(CMAKE_OBJC_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_OBJC_LINK_FLAGS}" CACHE INTERNAL - "Flags used by the compiler for all OBJC link types.") - set(CMAKE_OBJCXX_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_OBJCXX_LINK_FLAGS}" CACHE INTERNAL - "Flags used by the compiler for all OBJCXX link types.") - endif() - set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp -arch ${CMAKE_OSX_ARCHITECTURES} ${APPLE_TARGET_TRIPLE_FLAG}" CACHE INTERNAL - "Flags used by the compiler for all ASM build types.") -endif() - -## Print status messages to inform of the current state -message(STATUS "Configuring ${SDK_NAME} build for platform: ${PLATFORM_INT}, architecture(s): ${ARCHS}") -message(STATUS "Using SDK: ${CMAKE_OSX_SYSROOT_INT}") -message(STATUS "Using C compiler: ${CMAKE_C_COMPILER}") -message(STATUS "Using CXX compiler: ${CMAKE_CXX_COMPILER}") -message(STATUS "Using libtool: ${BUILD_LIBTOOL}") -message(STATUS "Using install name tool: ${CMAKE_INSTALL_NAME_TOOL}") -if(DEFINED APPLE_TARGET_TRIPLE) - message(STATUS "Autoconf target triple: ${APPLE_TARGET_TRIPLE}") -endif() -message(STATUS "Using minimum deployment version: ${DEPLOYMENT_TARGET}" - " (SDK version: ${SDK_VERSION})") -if(MODERN_CMAKE) - message(STATUS "Merging integrated CMake 3.14+ iOS,tvOS,watchOS,macOS toolchain(s) with this toolchain!") - if(PLATFORM_INT MATCHES ".*COMBINED") - message(STATUS "Will combine built (static) artifacts into FAT lib...") - endif() -endif() -if(CMAKE_GENERATOR MATCHES "Xcode") - message(STATUS "Using Xcode version: ${XCODE_VERSION_INT}") -endif() -message(STATUS "CMake version: ${CMAKE_VERSION}") -if(DEFINED SDK_NAME_VERSION_FLAGS) - message(STATUS "Using version flags: ${SDK_NAME_VERSION_FLAGS}") -endif() -message(STATUS "Using a data_ptr size of: ${CMAKE_CXX_SIZEOF_DATA_PTR}") -if(ENABLE_BITCODE_INT) - message(STATUS "Bitcode: Enabled") -else() - message(STATUS "Bitcode: Disabled") -endif() - -if(ENABLE_ARC_INT) - message(STATUS "ARC: Enabled") -else() - message(STATUS "ARC: Disabled") -endif() - -if(ENABLE_VISIBILITY_INT) - message(STATUS "Hiding symbols: Disabled") -else() - message(STATUS "Hiding symbols: Enabled") -endif() - -# Set global properties -set_property(GLOBAL PROPERTY PLATFORM "${PLATFORM}") -set_property(GLOBAL PROPERTY APPLE_TARGET_TRIPLE "${APPLE_TARGET_TRIPLE_INT}") -set_property(GLOBAL PROPERTY SDK_VERSION "${SDK_VERSION}") -set_property(GLOBAL PROPERTY XCODE_VERSION "${XCODE_VERSION_INT}") -set_property(GLOBAL PROPERTY OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") - -# Export configurable variables for the try_compile() command. -set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES - PLATFORM - XCODE_VERSION_INT - SDK_VERSION - NAMED_LANGUAGE_SUPPORT - DEPLOYMENT_TARGET - CMAKE_DEVELOPER_ROOT - CMAKE_OSX_SYSROOT_INT - ENABLE_BITCODE - ENABLE_ARC - CMAKE_ASM_COMPILER - CMAKE_C_COMPILER - CMAKE_C_COMPILER_TARGET - CMAKE_CXX_COMPILER - CMAKE_CXX_COMPILER_TARGET - BUILD_LIBTOOL - CMAKE_INSTALL_NAME_TOOL - CMAKE_C_FLAGS - CMAKE_C_DEBUG - CMAKE_C_MINSIZEREL - CMAKE_C_RELWITHDEBINFO - CMAKE_C_RELEASE - CMAKE_CXX_FLAGS - CMAKE_CXX_FLAGS_DEBUG - CMAKE_CXX_FLAGS_MINSIZEREL - CMAKE_CXX_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS_RELEASE - CMAKE_C_LINK_FLAGS - CMAKE_CXX_LINK_FLAGS - CMAKE_ASM_FLAGS -) - -if(NAMED_LANGUAGE_SUPPORT_INT) - list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES - CMAKE_OBJC_FLAGS - CMAKE_OBJC_DEBUG - CMAKE_OBJC_MINSIZEREL - CMAKE_OBJC_RELWITHDEBINFO - CMAKE_OBJC_RELEASE - CMAKE_OBJCXX_FLAGS - CMAKE_OBJCXX_DEBUG - CMAKE_OBJCXX_MINSIZEREL - CMAKE_OBJCXX_RELWITHDEBINFO - CMAKE_OBJCXX_RELEASE - CMAKE_OBJC_LINK_FLAGS - CMAKE_OBJCXX_LINK_FLAGS - ) -endif() - -set(CMAKE_PLATFORM_HAS_INSTALLNAME 1) -set(CMAKE_SHARED_LINKER_FLAGS "-rpath @executable_path/Frameworks -rpath @loader_path/Frameworks") -set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -Wl,-headerpad_max_install_names") -set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -Wl,-headerpad_max_install_names") -set(CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,") -set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,") -set(CMAKE_FIND_LIBRARY_SUFFIXES ".tbd" ".dylib" ".so" ".a") -set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-install_name") - -# Set the find root to the SDK developer roots. -# Note: CMAKE_FIND_ROOT_PATH is only useful when cross-compiling. Thus, do not set on macOS builds. -if(NOT PLATFORM_INT MATCHES "^MAC.*$") - list(APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") - set(CMAKE_IGNORE_PATH "/System/Library/Frameworks;/usr/local/lib;/opt/homebrew" CACHE INTERNAL "") -endif() - -# Default to searching for frameworks first. -IF(NOT DEFINED CMAKE_FIND_FRAMEWORK) - set(CMAKE_FIND_FRAMEWORK FIRST) -ENDIF(NOT DEFINED CMAKE_FIND_FRAMEWORK) - -# Set up the default search directories for frameworks. -if(PLATFORM_INT MATCHES "^MAC_CATALYST") - set(CMAKE_FRAMEWORK_PATH - ${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks - ${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks - ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks - ${CMAKE_FRAMEWORK_PATH} CACHE INTERNAL "") -else() - set(CMAKE_FRAMEWORK_PATH - ${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks - ${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks - ${CMAKE_FRAMEWORK_PATH} CACHE INTERNAL "") -endif() - -# By default, search both the specified iOS SDK and the remainder of the host filesystem. -if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH CACHE INTERNAL "") -endif() -if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH CACHE INTERNAL "") -endif() -if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH CACHE INTERNAL "") -endif() -if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH CACHE INTERNAL "") -endif() - -# -# Some helper-macros below to simplify and beautify the CMakeFile -# - -# This little macro lets you set any Xcode specific property. -macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE XCODE_RELVERSION) - set(XCODE_RELVERSION_I "${XCODE_RELVERSION}") - if(XCODE_RELVERSION_I STREQUAL "All") - set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} "${XCODE_VALUE}") - else() - set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY}[variant=${XCODE_RELVERSION_I}] "${XCODE_VALUE}") - endif() -endmacro(set_xcode_property) - -# This macro lets you find executable programs on the host system. -macro(find_host_package) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE NEVER) - set(_TOOLCHAIN_IOS ${IOS}) - set(IOS OFF) - find_package(${ARGN}) - set(IOS ${_TOOLCHAIN_IOS}) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH) -endmacro(find_host_package) diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index c48e1501f..79e1764a3 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -2,7 +2,7 @@ find_package(OpenGL QUIET) if (CMAKE_SYSTEM_NAME MATCHES "Windows") find_package(SDL2 CONFIG REQUIRED) -elseif (NOT CMAKE_SYSTEM_NAME STREQUAL "Android" AND NOT CMAKE_SYSTEM_NAME STREQUAL "iOS") +elseif (NOT CMAKE_SYSTEM_NAME STREQUAL "Android") find_package(SDL2 REQUIRED) endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3e89a2186..ac3e1cd39 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -131,12 +131,7 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch") ${CMAKE_CURRENT_SOURCE_DIR}/port/switch/SwitchImpl.cpp ${CMAKE_CURRENT_SOURCE_DIR}/port/switch/SwitchPerformanceProfiles.h ) -elseif (CMAKE_SYSTEM_NAME STREQUAL "Android") - set(Source_Files__Port - ${CMAKE_CURRENT_SOURCE_DIR}/port/mobile/MobileImpl.h - ${CMAKE_CURRENT_SOURCE_DIR}/port/mobile/MobileImpl.cpp - ) -elseif (CMAKE_SYSTEM_NAME STREQUAL "iOS") +elseif (CMAKE_SYSTEM_NAME STREQUAL "Android" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") set(Source_Files__Port ${CMAKE_CURRENT_SOURCE_DIR}/port/mobile/MobileImpl.h ${CMAKE_CURRENT_SOURCE_DIR}/port/mobile/MobileImpl.cpp diff --git a/src/resource/archive/O2rArchive.cpp b/src/resource/archive/O2rArchive.cpp index c9f46ea09..c872fcfd0 100644 --- a/src/resource/archive/O2rArchive.cpp +++ b/src/resource/archive/O2rArchive.cpp @@ -83,4 +83,4 @@ bool O2rArchive::Close() { return true; } -} // namespace LUS \ No newline at end of file +} // namespace LUS diff --git a/src/resource/archive/O2rArchive.h b/src/resource/archive/O2rArchive.h index d395b7d17..50e1b4362 100644 --- a/src/resource/archive/O2rArchive.h +++ b/src/resource/archive/O2rArchive.h @@ -1,4 +1,5 @@ #pragma once + #undef _DLL #include From 9b03bcc93d833cf4a9ab951950092c41a9035ac7 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Fri, 26 Apr 2024 13:09:53 -0600 Subject: [PATCH 22/26] Readded whitespace on Config.h --- src/config/Config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/Config.h b/src/config/Config.h index 7d3190fd3..0dea4c735 100644 --- a/src/config/Config.h +++ b/src/config/Config.h @@ -98,4 +98,4 @@ class Config { bool mIsNewInstance; std::map> mVersionUpdaters; }; -} // namespace LUS \ No newline at end of file +} // namespace LUS From 8038c73e84d46dfc12bf1595f47e52dbcdd1fc7f Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Fri, 26 Apr 2024 13:27:18 -0600 Subject: [PATCH 23/26] Trying to fix libzip --- src/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ac3e1cd39..d72f4c0ac 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -372,6 +372,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang") -Wno-parentheses -Wno-narrowing -Wno-missing-field-initializers + -Wno-implicit-function-declaration $<$:-Wno-int-conversion> ) endif() From d6d5c5d8a7a62b0843aacd070d03d65473a70d9c Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Fri, 26 Apr 2024 13:57:17 -0600 Subject: [PATCH 24/26] Fixed IOS build --- .gitignore | 1 + CMakeLists.txt | 33 +++++++++++++++++---------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 12606242a..12318ab93 100644 --- a/.gitignore +++ b/.gitignore @@ -364,3 +364,4 @@ extern/nlohmann-json/*_jsonConfig* *.pbxproj *.xcworkspace *.xcsettings +build* \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e62aa207..bacdabdff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,7 @@ option(NON_PORTABLE "Build a non-portable version" OFF) if(CMAKE_SYSTEM_NAME STREQUAL "iOS") option(SIGN_LIBRARY "Enable xcode signing" OFF) option(BUNDLE_ID "Bundle ID for xcode signing" "com.example.libultraship") + set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) endif() project(libultraship LANGUAGES C CXX) @@ -14,22 +15,6 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") set(CMAKE_OBJCXX_FLAGS "${CMAKE_OBJCXX_FLAGS} -fobjc-arc") endif() -if(CMAKE_SYSTEM_NAME STREQUAL "iOS") - set(PLATFORM "OS64COMBINED") - include(FetchContent) - FetchContent_Declare(iostoolchain - GIT_REPOSITORY https://github.com/leetal/ios-cmake - GIT_TAG origin/master - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - ) - FetchContent_GetProperties(iostoolchain) - if(NOT iostoolchain_POPULATED) - FetchContent_Populate(iostoolchain) - endif() - include(${iostoolchain_SOURCE_DIR}/ios.toolchain.cmake) -endif() - if (CMAKE_SYSTEM_NAME STREQUAL "Windows") set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") endif() @@ -46,5 +31,21 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows") include(cmake/dependencies/windows.cmake) endif() +if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + set(PLATFORM "OS64COMBINED") + include(FetchContent) + FetchContent_Declare(iostoolchain + GIT_REPOSITORY https://github.com/leetal/ios-cmake + GIT_TAG origin/master + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + ) + FetchContent_GetProperties(iostoolchain) + if(NOT iostoolchain_POPULATED) + FetchContent_Populate(iostoolchain) + endif() + include(${iostoolchain_SOURCE_DIR}/ios.toolchain.cmake) +endif() + add_subdirectory("extern") add_subdirectory("src") From 245a725220cd468f0f10e7f6b65ba47e8aa534d0 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Fri, 26 Apr 2024 17:12:06 -0600 Subject: [PATCH 25/26] Renamed to AppleFolderManager and fixed toolchain hash --- CMakeLists.txt | 2 +- include/libultraship/classes.h | 2 +- src/CMakeLists.txt | 6 +++--- src/Context.cpp | 2 +- src/utils/{OSXFolderManager.h => AppleFolderManager.h} | 9 +++------ src/utils/{OSXFolderManager.mm => AppleFolderManager.mm} | 4 ++-- src/window/Window.cpp | 2 +- 7 files changed, 12 insertions(+), 15 deletions(-) rename src/utils/{OSXFolderManager.h => AppleFolderManager.h} (94%) rename src/utils/{OSXFolderManager.mm => AppleFolderManager.mm} (96%) diff --git a/CMakeLists.txt b/CMakeLists.txt index bacdabdff..dfc6deb42 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,7 +36,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "iOS") include(FetchContent) FetchContent_Declare(iostoolchain GIT_REPOSITORY https://github.com/leetal/ios-cmake - GIT_TAG origin/master + GIT_TAG 06465b27698424cf4a04a5ca4904d50a3c966c45 CONFIGURE_COMMAND "" BUILD_COMMAND "" ) diff --git a/include/libultraship/classes.h b/include/libultraship/classes.h index 7d444f05c..21e1b9e0e 100644 --- a/include/libultraship/classes.h +++ b/include/libultraship/classes.h @@ -36,7 +36,7 @@ #endif #include "audio/SDLAudioPlayer.h" #ifdef __APPLE__ -#include "utils/OSXFolderManager.h" +#include "utils/AppleFolderManager.h" #endif #ifdef __SWITCH__ #include "port/switch/SwitchImpl.h" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d72f4c0ac..ce0f315b8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -102,10 +102,10 @@ target_sources(libultraship PRIVATE ${Source_Files__Window__Gui}) file(GLOB Source_Files__Utils RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "utils/*.h" "utils/*.cpp") if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") - list(APPEND Source_Files__Utils ${CMAKE_CURRENT_SOURCE_DIR}/utils/OSXFolderManager.mm) - set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/utils/OSXFolderManager.mm PROPERTIES COMPILE_FLAGS -fno-objc-arc) + list(APPEND Source_Files__Utils ${CMAKE_CURRENT_SOURCE_DIR}/utils/AppleFolderManager.mm) + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/utils/AppleFolderManager.mm PROPERTIES COMPILE_FLAGS -fno-objc-arc) else() - list(REMOVE_ITEM Header_Files__include ${CMAKE_CURRENT_SOURCE_DIR}/utils/OSXFolderManager.h) + list(REMOVE_ITEM Header_Files__include ${CMAKE_CURRENT_SOURCE_DIR}/utils/AppleFolderManager.h) endif() source_group("utils" FILES ${Source_Files__Utils}) diff --git a/src/Context.cpp b/src/Context.cpp index 55501afda..bb9eb7977 100644 --- a/src/Context.cpp +++ b/src/Context.cpp @@ -12,7 +12,7 @@ #endif #ifdef __APPLE__ -#include "utils/OSXFolderManager.h" +#include "utils/AppleFolderManager.h" #elif defined(__SWITCH__) #include "port/switch/SwitchImpl.h" #elif defined(__WIIU__) diff --git a/src/utils/OSXFolderManager.h b/src/utils/AppleFolderManager.h similarity index 94% rename from src/utils/OSXFolderManager.h rename to src/utils/AppleFolderManager.h index d6be2c6a8..9eb40207f 100644 --- a/src/utils/OSXFolderManager.h +++ b/src/utils/AppleFolderManager.h @@ -1,12 +1,11 @@ // -// OSXFolderManager.h +// AppleFolderManager.h // libultraship // // Created by David Chavez on 28.06.22. // -#ifndef OSXFolderManager_h -#define OSXFolderManager_h +#pragma once #include namespace LUS { @@ -65,6 +64,4 @@ class FolderManager { private: void* m_autoreleasePool; }; -}; // namespace LUS - -#endif /* OSXFolderManager_h */ +}; // namespace LUS \ No newline at end of file diff --git a/src/utils/OSXFolderManager.mm b/src/utils/AppleFolderManager.mm similarity index 96% rename from src/utils/OSXFolderManager.mm rename to src/utils/AppleFolderManager.mm index e27e7c5c2..05833d492 100644 --- a/src/utils/OSXFolderManager.mm +++ b/src/utils/AppleFolderManager.mm @@ -1,11 +1,11 @@ // -// OSXFolderManager.m +// AppleFolderManager.m // libultraship // // Created by David Chavez on 28.06.22. // -#include "OSXFolderManager.h" +#include "AppleFolderManager.h" #import using namespace LUS; diff --git a/src/window/Window.cpp b/src/window/Window.cpp index b72d013d7..7a1b670b3 100644 --- a/src/window/Window.cpp +++ b/src/window/Window.cpp @@ -16,7 +16,7 @@ #include "Context.h" #ifdef __APPLE__ -#include "utils/OSXFolderManager.h" +#include "utils/AppleFolderManager.h" #elif defined(__SWITCH__) #include "port/switch/SwitchImpl.h" #elif defined(__WIIU__) From 868b00cb8d17578cbc5087a1ea43d16467a866ff Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Fri, 26 Apr 2024 19:50:15 -0600 Subject: [PATCH 26/26] Exposed IOS_TOOLCHAIN_FILE --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dfc6deb42..d69a5dfb2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,7 +44,9 @@ if(CMAKE_SYSTEM_NAME STREQUAL "iOS") if(NOT iostoolchain_POPULATED) FetchContent_Populate(iostoolchain) endif() - include(${iostoolchain_SOURCE_DIR}/ios.toolchain.cmake) + set(CMAKE_IOS_TOOLCHAIN_FILE ${iostoolchain_SOURCE_DIR}/ios.toolchain.cmake) + set_property(GLOBAL PROPERTY IOS_TOOLCHAIN_FILE ${CMAKE_IOS_TOOLCHAIN_FILE}) + include(${CMAKE_IOS_TOOLCHAIN_FILE}) endif() add_subdirectory("extern")