Files
MapLibreParticleLab/platform/ios/ios.cmake
2025-02-28 14:25:36 +01:00

129 lines
3.9 KiB
CMake

target_include_directories(
mbgl-core
PRIVATE
${PROJECT_SOURCE_DIR}/platform/ios/src
)
file(GLOB_RECURSE IOS_SDK_SOURCE_FILES
"${PROJECT_SOURCE_DIR}/platform/darwin/src/*.m"
"${PROJECT_SOURCE_DIR}/platform/darwin/src/*.mm"
"${CMAKE_CURRENT_LIST_DIR}/src/*.m"
"${CMAKE_CURRENT_LIST_DIR}/src/*.mm"
)
file(GLOB_RECURSE IOS_SDK_RESOURCE_FILES
"${CMAKE_CURRENT_LIST_DIR}/resources/*"
)
if(NOT MLN_WITH_OPENGL)
list(FILTER IOS_SDK_SOURCE_FILES EXCLUDE REGEX ".*(OpenGL|gl).*")
elseif(NOT MLN_WITH_METAL)
list(FILTER IOS_SDK_SOURCE_FILES EXCLUDE REGEX ".*Metal.*")
endif()
set(FRAMEWORK_BUNDLE_DIR ${CMAKE_CURRENT_BINARY_DIR}/Mapbox.bundle)
find_program(ACTOOL_EXECUTABLE actool
HINTS
/Applications/Xcode.app/Contents/Developer/usr/bin
DOC "Xcode Asset Catalog Compiler (actool)"
)
if(NOT ACTOOL_EXECUTABLE)
message(FATAL_ERROR "Could not find actool. Ensure Xcode is installed.")
endif()
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Mapbox.bundle/Assets.car
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/Mapbox.bundle
COMMAND ${ACTOOL_EXECUTABLE}
--compile ${FRAMEWORK_BUNDLE_DIR}
--platform iphoneos
--minimum-deployment-target 12.0
${CMAKE_CURRENT_LIST_DIR}/resources/Images.xcassets
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_LIST_DIR}/framework/Info-static.plist
${CMAKE_CURRENT_BINARY_DIR}/Mapbox.bundle/Info.plist
DEPENDS ${CMAKE_CURRENT_LIST_DIR}/resources/Images.xcassets
COMMENT "Compiling Images.xcassets into Mapbox.bundle/Assets.car"
)
list(APPEND IOS_SDK_RESOURCE_FILES ${FRAMEWORK_BUNDLE_DIR})
add_custom_target(create-framework-bundle
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Mapbox.bundle/Assets.car
)
add_library(
ios-sdk-static
STATIC ${IOS_SDK_SOURCE_FILES} ${MLN_GENERATED_DARWIN_STYLE_SOURCE}
${IOS_SDK_RESOURCE_FILES}
)
set_source_files_properties(
${FRAMEWORK_BUNDLE_DIR}
PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources"
GENERATED TRUE
)
add_dependencies(ios-sdk-static create-framework-bundle)
set_target_properties(ios-sdk-static PROPERTIES
FRAMEWORK TRUE
# This makes the .framework contain a static library instead of a dynamic one:
XCODE_ATTRIBUTE_MACH_O_TYPE "staticlib"
# Provide a unique bundle identifier
MACOSX_FRAMEWORK_IDENTIFIER "org.maplibre.ios"
# FIXME: versioning
MACOSX_FRAMEWORK_BUNDLE_VERSION "1.0"
MACOSX_FRAMEWORK_SHORT_VERSION_STRING "1.0"
)
if(MLN_WITH_METAL)
message(STATUS "Configuring Metal renderer backend")
target_compile_definitions(
ios-sdk-static
PRIVATE MLN_RENDER_BACKEND_METAL=1
)
endif()
target_include_directories(
ios-sdk-static
PUBLIC ${MLN_GENERATED_DARWIN_CODE_DIR} ${CMAKE_CURRENT_LIST_DIR}/src ${PROJECT_SOURCE_DIR}/platform/darwin/src
PRIVATE ${PROJECT_SOURCE_DIR}/src
)
include("${CMAKE_CURRENT_LIST_DIR}/vendor/calloutview.cmake")
target_link_libraries(
ios-sdk-static
PUBLIC mbgl-core
PRIVATE mbgl-compiler-options mbgl-vendor-calloutview mbgl-vendor-metal-cpp mbgl-vendor-polylabel
"-framework CoreText"
"-framework CoreImage"
"-framework CoreGraphics"
"-framework QuartzCore"
"-framework UIKit"
"-framework MetalKit"
"-framework ImageIO"
)
target_link_options(ios-sdk-static INTERFACE -ObjC)
add_dependencies(ios-sdk-static mbgl-darwin-style-code)
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/app")
set(DEVELOPMENT_TEAM_ID "" CACHE STRING "Apple Development Team ID")
if(NOT DEVELOPMENT_TEAM_ID)
message(STATUS "No Apple Developer Team ID set (-DDEVELOPMENT_TEAM_ID=YOUR_TEAM_ID). Configuring build without signing.")
set(CMAKE_OSX_SYSROOT iphonesimulator)
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO")
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO")
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "")
endif()