1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
set(TARGET_FILE @CMAKE_BINARY_DIR@/@CPACK_PACKAGE_FILE_NAME@)
if(SUFFIX)
set(TARGET_FILE ${TARGET_FILE}.${SUFFIX})
endif()
function(SELF_GENERATED)
function(FIND_BUNDLE _name _out_bundle _out_parent_dir)
set(BUNDLE_DIRS "${CONFIG}-iphoneos;${CONFIG}-iphonesimulator;${CONFIG};UninstalledProducts;UninstalledProducts/iphoneos;UninstalledProducts/iphonesimulator")
foreach(dir ${BUNDLE_DIRS})
set(tmpDir @CMAKE_BINARY_DIR@/src/${dir})
set(tmpBundleDir ${tmpDir}/${_name})
if(EXISTS "${tmpBundleDir}")
set(${_out_bundle} "${tmpBundleDir}" PARENT_SCOPE)
set(${_out_parent_dir} "${tmpDir}" PARENT_SCOPE)
break()
endif()
endforeach()
endfunction()
if(INTEGRATED_SDK)
set(Bundle @PROJECT_NAME@2.framework)
else()
set(Bundle @PROJECT_NAME@.app)
endif()
FIND_BUNDLE(${Bundle} BundleDir ParentDir)
if(BundleDir)
message(STATUS "Use bundle: ${BundleDir}")
else()
message(FATAL_ERROR "Bundle directory does not exist")
endif()
if(INTEGRATED_SDK)
configure_file("@CMAKE_SOURCE_DIR@/resources/packaging/ios/module.modulemap" "${BundleDir}/Modules/module.modulemap" COPYONLY)
execute_process(COMMAND ${CMAKE_COMMAND} -E tar cf "${TARGET_FILE}.framework.zip" --format=zip ${Bundle} WORKING_DIRECTORY ${ParentDir})
else()
file(GLOB_RECURSE FILES RELATIVE "${CMAKE_BINARY_DIR}" *.dylib)
foreach(f ${FILES})
get_filename_component(filename_without_dir ${f} NAME)
get_filename_component(filename_stripped ${filename_without_dir} NAME_WE)
message(STATUS "Change @rpath of ${filename_without_dir}")
execute_process(COMMAND install_name_tool -id @rpath/${filename_stripped} ${f})
endforeach()
execute_process(COMMAND ${CMAKE_COMMAND} -DIOS=${IOS} -P ${CMAKE_BINARY_DIR}/SignFiles.cmake WORKING_DIRECTORY ${BundleDir} RESULT_VARIABLE _result)
if(NOT ${_result} EQUAL 0)
message(FATAL_ERROR "Signing failed")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${BundleDir} Payload/${Bundle})
execute_process(COMMAND ${CMAKE_COMMAND} -E tar cf "${TARGET_FILE}.ipa" --format=zip Payload)
execute_process(COMMAND ${CMAKE_COMMAND} -E rm -r Payload)
endif()
FIND_BUNDLE(${Bundle}.dSYM dSYM ParentDir)
if(dSYM)
message(STATUS "Use dSYM: ${dSYM}")
execute_process(COMMAND ${CMAKE_COMMAND} -E tar cf "${TARGET_FILE}.dSYM.zip" --format=zip ${Bundle}.dSYM WORKING_DIRECTORY ${ParentDir})
endif()
if(ParentDir)
file(GLOB SymbolMap "${ParentDir}/*.bcsymbolmap")
if(SymbolMap)
message(STATUS "Use bcsymbolmap: ${SymbolMap}")
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${SymbolMap} ${TARGET_FILE}.bcsymbolmap)
endif()
endif()
endfunction()
function(XCODE_GENERATED)
execute_process(COMMAND ${CMAKE_COMMAND} -E tar cf "${TARGET_FILE}.xcarchive.zip" --format=zip @PROJECT_NAME@.xcarchive)
if(INTEGRATED_SDK)
message(FATAL_ERROR "Not supported")
else()
execute_process(COMMAND ${CMAKE_COMMAND} -E rename @PROJECT_NAME@.ipa ${TARGET_FILE}.ipa)
endif()
endfunction()
if(EXISTS "@CMAKE_BINARY_DIR@/@PROJECT_NAME@.xcarchive")
XCODE_GENERATED()
else()
SELF_GENERATED()
endif()
|