Toolchain-ios-xcode.cmake 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. # Usage:
  2. # cmake .. -DDEPS_PATH=/path/to/dependencies -DIOS_ASSETS=/path/to/generated/assets -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-ios-xcode.cmake -G Xcode
  3. # Need to use ../android/generate_assets.sh for assets first
  4. # In Xcode you need to choose Product -> Scheme -> supertuxkart
  5. # And then Signing & Capabilities choose a suitable team
  6. # You may need to use another bundle identifier as the current one is already used by STK team
  7. # You can also use -DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=xxxxxxxxxx to specify team
  8. # Increase every upload to App store
  9. SET(IOS_BUILD_VERSION 26)
  10. # Get SDK path
  11. execute_process(COMMAND xcodebuild -version -sdk iphoneos Path
  12. OUTPUT_VARIABLE CMAKE_OSX_SYSROOT_IOS
  13. ERROR_QUIET
  14. OUTPUT_STRIP_TRAILING_WHITESPACE)
  15. execute_process(COMMAND xcodebuild -version -sdk iphonesimulator Path
  16. OUTPUT_VARIABLE CMAKE_OSX_SYSROOT_SIMULATOR
  17. ERROR_QUIET
  18. OUTPUT_STRIP_TRAILING_WHITESPACE)
  19. execute_process(COMMAND xcodebuild -sdk ${CMAKE_OSX_SYSROOT} -version SDKVersion
  20. OUTPUT_VARIABLE SDK_VERSION
  21. ERROR_QUIET
  22. OUTPUT_STRIP_TRAILING_WHITESPACE)
  23. if (NOT DEFINED CMAKE_OSX_SYSROOT_IOS OR NOT DEFINED CMAKE_OSX_SYSROOT_SIMULATOR OR NOT DEFINED SDK_VERSION)
  24. message(FATAL_ERROR "Cannot find iphoneos or iphonesimulator sdk location and their version info.")
  25. else()
  26. message(STATUS "Using SDK path: ${CMAKE_OSX_SYSROOT_IOS}.")
  27. endif()
  28. set(CMAKE_OSX_SYSROOT "iphoneos" CACHE INTERNAL "")
  29. # Manaully set the values for both arm64 and simulator
  30. set(JPEG_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libjpeg.a CACHE STRING "")
  31. set(JPEG_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include CACHE STRING "")
  32. set(ZLIB_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libz.a CACHE STRING "")
  33. set(ZLIB_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include CACHE STRING "")
  34. set(PNG_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libpng16.a CACHE STRING "")
  35. set(PNG_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include CACHE STRING "")
  36. set(PNG_PNG_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include CACHE STRING "")
  37. set(OGGVORBIS_OGG_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libogg.a CACHE STRING "")
  38. set(OGGVORBIS_OGG_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include/ogg CACHE STRING "")
  39. set(OGGVORBIS_VORBIS_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libvorbis.a CACHE STRING "")
  40. set(OGGVORBIS_VORBIS_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include/vorbis CACHE STRING "")
  41. set(OGGVORBIS_VORBISFILE_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libvorbisfile.a CACHE STRING "")
  42. set(OGGVORBIS_VORBISFILE_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include/vorbis CACHE STRING "")
  43. set(OGGVORBIS_VORBISENC_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libvorbisenc.a CACHE STRING "")
  44. set(OGGVORBIS_VORBISENC_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include/vorbis CACHE STRING "")
  45. set(HARFBUZZ_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libharfbuzz.a CACHE STRING "")
  46. set(HARFBUZZ_INCLUDEDIR ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include CACHE STRING "")
  47. set(FREETYPE_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libfreetype.a CACHE STRING "")
  48. set(FREETYPE_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include/freetype2 CACHE STRING "")
  49. set(CURL_LIBRARY "${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libcurl.a;${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libmbedtls.a;${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libmbedx509.a;${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libmbedcrypto.a" CACHE STRING "")
  50. set(CURL_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include CACHE STRING "")
  51. set(MBEDCRYPTO_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libmbedcrypto.a CACHE STRING "")
  52. set(MBEDTLS_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include CACHE STRING "")
  53. set(SDL2_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libSDL2.a CACHE STRING "")
  54. set(SDL2_INCLUDEDIR ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include/SDL2 CACHE STRING "")
  55. set(LIBSAMPLERATE_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libsamplerate.a CACHE STRING "")
  56. set(LIBSAMPLERATE_INCLUDEDIR ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include CACHE STRING "")
  57. set(MOLTENVK_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libMoltenVK.a CACHE STRING "")
  58. set(VULKAN_INCLUDEDIR ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include CACHE STRING "")
  59. set(LIBASTCENC_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libastcenc.a CACHE STRING "")
  60. set(LIBASTCENC_INCLUDEDIR ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include CACHE STRING "")
  61. set(SHADERC_LIBRARY ${PROJECT_SOURCE_DIR}/dependencies\${EFFECTIVE_PLATFORM_NAME}/lib/libshaderc_combined.a CACHE STRING "")
  62. set(SHADERC_INCLUDEDIR ${PROJECT_SOURCE_DIR}/dependencies-iphoneos/include CACHE STRING "")
  63. # For universal iOS and simulator
  64. set(LIBRESOLV_LIBRARY -lresolv CACHE STRING "")
  65. set(PTHREAD_LIBRARY -lpthread CACHE STRING "")
  66. # Standard config
  67. set(CMAKE_SYSTEM_VERSION ${SDK_VERSION} CACHE INTERNAL "")
  68. set(UNIX TRUE CACHE BOOL "")
  69. set(APPLE TRUE CACHE BOOL "")
  70. set(IOS TRUE CACHE BOOL "")
  71. set(CMAKE_AR ar CACHE FILEPATH "" FORCE)
  72. set(CMAKE_RANLIB ranlib CACHE FILEPATH "" FORCE)
  73. set(CMAKE_STRIP strip CACHE FILEPATH "" FORCE)
  74. # Set the architectures for which to build
  75. set(CMAKE_OSX_ARCHITECTURES "arm64 x86_64" CACHE STRING "Build architecture for iOS")
  76. set(CMAKE_C_SIZEOF_DATA_PTR 8)
  77. set(CMAKE_CXX_SIZEOF_DATA_PTR 8)
  78. set(CMAKE_SYSTEM_PROCESSOR "arm64")
  79. set(CMAKE_SYSTEM_NAME iOS CACHE INTERNAL "" FORCE)
  80. # Change the type of target generated for try_compile() so it'll work when cross-compiling
  81. set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
  82. # All iOS/Darwin specific settings - some may be redundant.
  83. set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
  84. set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib")
  85. set(CMAKE_SHARED_MODULE_PREFIX "lib")
  86. set(CMAKE_SHARED_MODULE_SUFFIX ".so")
  87. set(CMAKE_C_COMPILER_ABI ELF)
  88. set(CMAKE_CXX_COMPILER_ABI ELF)
  89. set(CMAKE_C_HAS_ISYSROOT 1)
  90. set(CMAKE_CXX_HAS_ISYSROOT 1)
  91. set(CMAKE_MODULE_EXISTS 1)
  92. set(CMAKE_DL_LIBS "")
  93. set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
  94. set(CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ")
  95. set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}")
  96. set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}")
  97. # Fixed variables in iOS STK
  98. set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC NO CACHE INTERNAL "")
  99. set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN YES CACHE INTERNAL "")
  100. set(USE_WIIUSE FALSE CACHE BOOL "")
  101. set(USE_SQLITE3 FALSE CACHE BOOL "")
  102. set(USE_CRYPTO_OPENSSL FALSE CACHE BOOL "")
  103. set(IOS_LAUNCHSCREEN ${DEPS_PATH}/ios-icon/launch_screen.storyboard)
  104. set(IOS_IMAGES_XCASSETS ${DEPS_PATH}/ios-icon/Images.xcassets)
  105. set(SDK_NAME_VERSION_FLAGS "-miphoneos-version-min=9.0")
  106. set(CMAKE_OSX_DEPLOYMENT_TARGET 9.0 CACHE STRING "Set CMake deployment target" FORCE)
  107. set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64")
  108. set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64")
  109. set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64")
  110. set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64")
  111. set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym" CACHE INTERNAL "")
  112. # Replace the above two with these if you use an apple silicon
  113. #set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "arm64")
  114. #set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "arm64")