Some more progress in cmake
Still have errors, currently not using apple-compile.sh building completely using cmake.
This commit is contained in:
parent
008592f13b
commit
c8dd12eb20
6 changed files with 306 additions and 22 deletions
|
|
@ -278,9 +278,7 @@ if(ANDROID)
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
qt_add_executable(${PROJECT} ${SOURCES} ${HEADERS} ${RESOURCES} ${QRC})
|
|
||||||
qt_add_translations(${PROJECT} TS_FILES
|
|
||||||
${CMAKE_CURRENT_LIST_DIR}/translations/amneziavpn_ru.ts)
|
|
||||||
|
|
||||||
if(IOS)
|
if(IOS)
|
||||||
message("Client iOS build")
|
message("Client iOS build")
|
||||||
|
|
@ -296,10 +294,12 @@ if(IOS)
|
||||||
find_library(FW_STOREKIT StoreKit)
|
find_library(FW_STOREKIT StoreKit)
|
||||||
find_library(FW_USERNOTIFICATIONS UserNotifications)
|
find_library(FW_USERNOTIFICATIONS UserNotifications)
|
||||||
|
|
||||||
set(LIBS ${LIBS} FW_AUTHENTICATIONSERVICES FW_UIKIT FW_FOUNDATION FW_STOREKIT FW_USERNOTIFICATIONS)
|
set(LIBS ${LIBS} ${FW_AUTHENTICATIONSERVICES} ${FW_UIKIT} ${FW_FOUNDATION} ${FW_STOREKIT} ${FW_USERNOTIFICATIONS})
|
||||||
|
|
||||||
add_compile_definitions(MVPN_IOS)
|
add_compile_definitions(MVPN_IOS)
|
||||||
|
|
||||||
|
message("shahzain ${CMAKE_CURRENT_LIST_DIR}")
|
||||||
|
|
||||||
set(HEADERS ${HEADERS}
|
set(HEADERS ${HEADERS}
|
||||||
${CMAKE_CURRENT_LIST_DIR}/protocols/ios_vpnprotocol.h
|
${CMAKE_CURRENT_LIST_DIR}/protocols/ios_vpnprotocol.h
|
||||||
${CMAKE_CURRENT_LIST_DIR}/platforms/ios/iosnotificationhandler.h
|
${CMAKE_CURRENT_LIST_DIR}/platforms/ios/iosnotificationhandler.h
|
||||||
|
|
@ -332,10 +332,8 @@ if(IOS)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
set_target_properties(${PROJECT} PROPERTIES XCODE_ATTRIBUTE_ENABLE_BITCODE "NO")
|
|
||||||
add_subdirectory(ios/networkextension)
|
|
||||||
add_dependencies(${PROJECT} networkextension)
|
|
||||||
set_target_properties(${PROJECT} PROPERTIES XCODE_EMBED_APP_EXTENSIONS networkextension)
|
|
||||||
|
|
||||||
# Q_ENABLE_BITCODE.value = NO
|
# Q_ENABLE_BITCODE.value = NO
|
||||||
# Q_ENABLE_BITCODE.name = ENABLE_BITCODE
|
# Q_ENABLE_BITCODE.name = ENABLE_BITCODE
|
||||||
|
|
@ -348,21 +346,21 @@ if(CMAKE_OSX_SYSROOT STREQUAL "iphoneos")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
set_target_properties(${PROJECT} PROPERTIES XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "org.amnezia.${PROJECT}"
|
|
||||||
OUTPUT_NAME "AmneziaVPN"
|
|
||||||
XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1"
|
|
||||||
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "X7UJ388FXK"
|
|
||||||
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/ios/app/Info.plist
|
|
||||||
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Development")
|
|
||||||
|
|
||||||
find_library(LIB_LIBCRYPTO NAMES "libcrypto.a"
|
# find_library(LIB_LIBCRYPTO NAMES "libcrypto.a"
|
||||||
PATHS ${PROJECT_SOURCE_DIR}/3rd/OpenSSL/lib/ios/iphone/ NO_DEFAULT_PATH)
|
# PATHS ${PROJECT_SOURCE_DIR}/3rd/OpenSSL/lib/ios/iphone/ NO_DEFAULT_PATH)
|
||||||
|
|
||||||
|
#find_library(LIB_SSL NAMES "libssl.a"
|
||||||
|
# PATHS ${PROJECT_SOURCE_DIR}/3rd/OpenSSL/lib/ios/iphone/ NO_DEFAULT_PATH)
|
||||||
|
|
||||||
|
|
||||||
find_library(LIB_SSL NAMES "libssl.a"
|
|
||||||
PATHS ${PROJECT_SOURCE_DIR}/3rd/OpenSSL/lib/ios/iphone/ NO_DEFAULT_PATH)
|
|
||||||
|
|
||||||
#set(LIBS ${LIBS} LIB_LIBCRYPTO LIB_SSL)
|
#set(LIBS ${LIBS} LIB_LIBCRYPTO LIB_SSL)
|
||||||
|
|
||||||
|
# target_link_libraries(${PROJECT} PRIVATE ${LIB_LIBCRYPTO})
|
||||||
|
|
||||||
|
# target_link_libraries(${PROJECT} PRIVATE ${LIB_SSL})
|
||||||
|
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
@ -394,8 +392,91 @@ endif()
|
||||||
# }
|
# }
|
||||||
#endif()
|
#endif()
|
||||||
|
|
||||||
|
|
||||||
|
qt_add_executable(${PROJECT} ${SOURCES} ${HEADERS} ${RESOURCES} ${QRC})
|
||||||
|
qt_add_translations(${PROJECT} TS_FILES
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/translations/amneziavpn_ru.ts)
|
||||||
|
|
||||||
# NETWORKEXTENSION=1
|
# NETWORKEXTENSION=1
|
||||||
|
|
||||||
|
if(IOS)
|
||||||
|
enable_language(OBJC)
|
||||||
|
enable_language(OBJCXX)
|
||||||
|
enable_language(Swift)
|
||||||
|
include(src/cmake/osxtools.cmake)
|
||||||
|
|
||||||
|
set_target_properties(${PROJECT} PROPERTIES XCODE_ATTRIBUTE_ENABLE_BITCODE "NO")
|
||||||
|
|
||||||
|
|
||||||
|
set_target_properties(${PROJECT} PROPERTIES XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "org.amnezia.${PROJECT}"
|
||||||
|
XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1"
|
||||||
|
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "X7UJ388FXK"
|
||||||
|
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Development")
|
||||||
|
set(LIBS ${LIBS}
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/3rd/OpenSSL/lib/ios/iphone/libcrypto.a
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/3rd/OpenSSL/lib/ios/iphone/libssl.a)
|
||||||
|
|
||||||
|
target_include_directories(${PROJECT} PRIVATE ${Qt6Gui_PRIVATE_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
set_target_properties(${PROJECT} PROPERTIES
|
||||||
|
XCODE_ATTRIBUTE_SWIFT_VERSION "5.0"
|
||||||
|
XCODE_ATTRIBUTE_CLANG_ENABLE_MODULES "YES"
|
||||||
|
XCODE_ATTRIBUTE_SWIFT_OBJC_BRIDGING_HEADER "${CMAKE_SOURCE_DIR}/platforms/ios/WireGuard-Bridging-Header.h"
|
||||||
|
XCODE_ATTRIBUTE_SWIFT_PRECOMPILE_BRIDGING_HEADER "NO"
|
||||||
|
XCODE_ATTRIBUTE_SWIFT_OPTIMIZATION_LEVEL "-Onone"
|
||||||
|
XCODE_ATTRIBUTE_SWIFT_OBJC_INTERFACE_HEADER_NAME "AmneziaVPN-Swift.h"
|
||||||
|
)
|
||||||
|
|
||||||
|
set_target_properties(${PROJECT} PROPERTIES
|
||||||
|
OUTPUT_NAME "AmneziaVPN"
|
||||||
|
MACOSX_BUNDLE ON
|
||||||
|
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/ios/app/Info.plist.in
|
||||||
|
MACOSX_BUNDLE_BUNDLE_NAME "AmneziaVPN"
|
||||||
|
MACOSX_BUNDLE_BUNDLE_VERSION "${BUILD_ID}"
|
||||||
|
MACOSX_BUNDLE_COPYRIGHT "MPL-2.0"
|
||||||
|
MACOSX_BUNDLE_GUI_IDENTIFIER "${BUILD_IOS_APP_IDENTIFIER}"
|
||||||
|
MACOSX_BUNDLE_INFO_STRING "AmneziaVPN"
|
||||||
|
MACOSX_BUNDLE_LONG_VERSION_STRING "${CMAKE_PROJECT_VERSION}-${BUILD_ID}"
|
||||||
|
MACOSX_BUNDLE_SHORT_VERSION_STRING "${CMAKE_PROJECT_VERSION}"
|
||||||
|
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${BUILD_IOS_APP_IDENTIFIER}"
|
||||||
|
XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_SOURCE_DIR}/ios/app/main.entitlements"
|
||||||
|
XCODE_ATTRIBUTE_MARKETING_VERSION "${CMAKE_PROJECT_VERSION}"
|
||||||
|
XCODE_GENERATE_SCHEME TRUE
|
||||||
|
)
|
||||||
|
target_include_directories(${PROJECT} PRIVATE ${CMAKE_SOURCE_DIR})
|
||||||
|
|
||||||
|
target_compile_options(${PROJECT} PRIVATE
|
||||||
|
-DGROUP_ID=\"${BUILD_IOS_GROUP_IDENTIFIER}\"
|
||||||
|
-DVPN_NE_BUNDLEID=\"${BUILD_IOS_APP_IDENTIFIER}.network-extension\"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
target_sources(${PROJECT} PRIVATE
|
||||||
|
${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/Shared/Keychain.swift
|
||||||
|
${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/WireGuardKit/IPAddressRange.swift
|
||||||
|
${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/WireGuardKit/InterfaceConfiguration.swift
|
||||||
|
${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/Shared/Model/NETunnelProviderProtocol+Extension.swift
|
||||||
|
${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/WireGuardKit/TunnelConfiguration.swift
|
||||||
|
${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/Shared/Model/TunnelConfiguration+WgQuickConfig.swift
|
||||||
|
${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/WireGuardKit/Endpoint.swift
|
||||||
|
${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/Shared/Model/String+ArrayConversion.swift
|
||||||
|
${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/WireGuardKit/PeerConfiguration.swift
|
||||||
|
${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/WireGuardKit/DNSServer.swift
|
||||||
|
${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/WireGuardApp/LocalizationHelper.swift
|
||||||
|
${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/Shared/FileManager+Extension.swift
|
||||||
|
${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/WireGuardKitC/x25519.c
|
||||||
|
${CMAKE_SOURCE_DIR}/3rd/wireguard-apple/Sources/WireGuardKit/PrivateKey.swift
|
||||||
|
)
|
||||||
|
|
||||||
|
target_sources(${PROJECT} PRIVATE
|
||||||
|
platforms/ios/iosvpnprotocol.swift
|
||||||
|
platforms/ios/ioslogger.swift
|
||||||
|
)
|
||||||
|
add_subdirectory(ios/networkextension)
|
||||||
|
add_dependencies(${PROJECT} networkextension)
|
||||||
|
set_target_properties(${PROJECT} PROPERTIES XCODE_EMBED_APP_EXTENSIONS networkextension)
|
||||||
|
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
if(ANDROID)
|
if(ANDROID)
|
||||||
|
|
|
||||||
53
client/ios/app/Info.plist.in
Normal file
53
client/ios/app/Info.plist.in
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleAllowMixedLocalizations</key>
|
||||||
|
<true/>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>en</string>
|
||||||
|
<key>CFBundleDisplayName</key>
|
||||||
|
<string>${QT_INTERNAL_DOLLAR_VAR}{PRODUCT_NAME}</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
|
||||||
|
<key>ITSAppUsesNonExemptEncryption</key>
|
||||||
|
<false/>
|
||||||
|
<key>LSRequiresIPhoneOS</key>
|
||||||
|
<true/>
|
||||||
|
<key>LSSupportsOpeningDocumentsInPlace</key>
|
||||||
|
<false/>
|
||||||
|
<key>UILaunchStoryboardName</key>
|
||||||
|
<string>AmneziaVPNLaunchScreen</string>
|
||||||
|
<key>UIRequiredDeviceCapabilities</key>
|
||||||
|
<array/>
|
||||||
|
<key>UIRequiresFullScreen</key>
|
||||||
|
<true/>
|
||||||
|
<key>UISupportedInterfaceOrientations</key>
|
||||||
|
<array>
|
||||||
|
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||||
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
|
</array>
|
||||||
|
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||||
|
<array/>
|
||||||
|
<key>UIUserInterfaceStyle</key>
|
||||||
|
<string>Light</string>
|
||||||
|
<key>com.wireguard.ios.app_group_id</key>
|
||||||
|
<string>group.org.amnezia.amneziavpn</string>
|
||||||
|
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
#include "wireguard-go-version.h"
|
#include "3rd/wireguard-apple/Sources/WireGuardKitGo/wireguard-go-version.h"
|
||||||
#include "3rd/wireguard-apple/Sources/WireGuardKitC/WireGuardKitC.h"
|
#include "3rd/wireguard-apple/Sources/WireGuardKitC/WireGuardKitC.h"
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ public class Logger {
|
||||||
appVersion += " (\(appBuild))"
|
appVersion += " (\(appBuild))"
|
||||||
}
|
}
|
||||||
|
|
||||||
let goBackendVersion = WIREGUARD_GO_VERSION
|
let goBackendVersion = "1"
|
||||||
Logger.global?.log(message: "App version: \(appVersion); Go backend version: \(goBackendVersion)")
|
Logger.global?.log(message: "App version: \(appVersion); Go backend version: \(goBackendVersion)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,12 @@
|
||||||
|
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
||||||
|
|
||||||
#include "ipaddressrange.h"
|
#include "platforms/ios/ipaddressrange.h"
|
||||||
#include "ios_vpnprotocol.h"
|
#include "ios_vpnprotocol.h"
|
||||||
#include "core/errorstrings.h"
|
#include "core/errorstrings.h"
|
||||||
#include "AmneziaVPN-Swift.h"
|
#include "AmneziaVPN-Swift.h"
|
||||||
|
#include "UIKit/UIKit.h"
|
||||||
|
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
|
|
||||||
148
client/src/cmake/osxtools.cmake
Normal file
148
client/src/cmake/osxtools.cmake
Normal file
|
|
@ -0,0 +1,148 @@
|
||||||
|
if(NOT APPLE)
|
||||||
|
message(FATAL_ERROR "OSX Tools are only supported on Apple targets")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_COLOR_MAKEFILE)
|
||||||
|
set(COMMENT_ECHO_COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --blue --bold)
|
||||||
|
else()
|
||||||
|
set(COMMENT_ECHO_COMMAND ${CMAKE_COMMAND} -E echo)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CODE_SIGN_IDENTITY)
|
||||||
|
find_program(CODESIGN_BIN NAMES codesign)
|
||||||
|
if(NOT CODESIGN_BIN)
|
||||||
|
messsage(FATAL_ERROR "Cannot sign code, could not find 'codesign' executable")
|
||||||
|
endif()
|
||||||
|
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
## A helper to copy files into the application bundle
|
||||||
|
function(osx_bundle_files TARGET)
|
||||||
|
cmake_parse_arguments(BUNDLE
|
||||||
|
""
|
||||||
|
"DESTINATION"
|
||||||
|
"FILES"
|
||||||
|
${ARGN})
|
||||||
|
|
||||||
|
if(NOT BUNDLE_DESTINATION)
|
||||||
|
set(BUNDLE_DESTINATION Resources)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
foreach(FILE ${BUNDLE_FILES})
|
||||||
|
add_custom_command(TARGET ${TARGET} POST_BUILD
|
||||||
|
COMMAND_EXPAND_LISTS
|
||||||
|
COMMAND ${COMMENT_ECHO_COMMAND} "Bundling ${FILE}"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_BUNDLE_CONTENT_DIR:${TARGET}>/${BUNDLE_DESTINATION}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy ${FILE} $<TARGET_BUNDLE_CONTENT_DIR:${TARGET}>/${BUNDLE_DESTINATION}/
|
||||||
|
)
|
||||||
|
endforeach()
|
||||||
|
endfunction(osx_bundle_files)
|
||||||
|
|
||||||
|
## A helper to bundle an asset catalog.
|
||||||
|
function(osx_bundle_assetcatalog TARGET)
|
||||||
|
cmake_parse_arguments(XCASSETS
|
||||||
|
""
|
||||||
|
"CATALOG;PLATFORM"
|
||||||
|
"DEVICES"
|
||||||
|
${ARGN})
|
||||||
|
|
||||||
|
if(XCASSETS_PLATFORM)
|
||||||
|
set(XCASSETS_TARGET_ARGS --platform ${XCASSETS_PLATFORM})
|
||||||
|
elseif(IOS)
|
||||||
|
set(XCASSETS_TARGET_ARGS --platform iphoneos)
|
||||||
|
else()
|
||||||
|
set(XCASSETS_TARGET_ARGS --platform macosx)
|
||||||
|
endif()
|
||||||
|
foreach(DEVNAME ${XCASSETS_DEVICES})
|
||||||
|
list(APPEND XCASSETS_TARGET_ARGS --target-device ${DEVNAME})
|
||||||
|
endforeach()
|
||||||
|
list(APPEND XCASSETS_TARGET_ARGS --minimum-deployment-target ${CMAKE_OSX_DEPLOYMENT_TARGET})
|
||||||
|
|
||||||
|
## Compile the asset catalog
|
||||||
|
set(XCASSETS_GEN_PLIST ${CMAKE_CURRENT_BINARY_DIR}/xcassets_generated_info.plist)
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/xcassets/Assets.car ${XCASSETS_GEN_PLIST}
|
||||||
|
MAIN_DEPENDENCY ${XCASSETS_CATALOG}/Contents.json
|
||||||
|
COMMENT "Building asset catalog"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/xcassets
|
||||||
|
COMMAND actool --output-format human-readable-text --notices --warnings
|
||||||
|
${XCASSETS_TARGET_ARGS}
|
||||||
|
--app-icon AppIcon
|
||||||
|
--output-partial-info-plist ${XCASSETS_GEN_PLIST}
|
||||||
|
--development-region en --enable-on-demand-resources NO
|
||||||
|
--compile ${CMAKE_CURRENT_BINARY_DIR}/xcassets ${XCASSETS_CATALOG}
|
||||||
|
)
|
||||||
|
|
||||||
|
## Patch the asset catalog into the target bundle.
|
||||||
|
if(NOT IOS)
|
||||||
|
set(XCASSETS_RESOURCE_DIR "Resources")
|
||||||
|
endif()
|
||||||
|
add_custom_command(TARGET ${TARGET} POST_BUILD
|
||||||
|
COMMENT "Bundling asset catalog"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_BINARY_DIR}/xcassets $<TARGET_BUNDLE_CONTENT_DIR:${TARGET}>/${XCASSETS_RESOURCE_DIR}
|
||||||
|
COMMAND ${CMAKE_SOURCE_DIR}/scripts/macos/merge_plist.py ${XCASSETS_GEN_PLIST} -o $<TARGET_BUNDLE_CONTENT_DIR:${TARGET}>/Info.plist
|
||||||
|
)
|
||||||
|
|
||||||
|
target_sources(${TARGET} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/xcassets/Assets.car)
|
||||||
|
set_source_files_properties(
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/xcassets/Assets.car
|
||||||
|
${XCASSETS_GEN_PLIST}
|
||||||
|
PROPERTIES
|
||||||
|
GENERATED TRUE
|
||||||
|
HEADER_FILE_ONLY TRUE
|
||||||
|
)
|
||||||
|
|
||||||
|
target_sources(${TARGET} PRIVATE ${XCASSETS_GEN_PLIST})
|
||||||
|
set_source_files_properties(${XCASSETS_GEN_PLIST} PROPERTIES GENERATED TRUE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
## A helper to code-sign an executable.
|
||||||
|
function(osx_codesign_target TARGET)
|
||||||
|
## Xcode should perform automatic code-signing for us.
|
||||||
|
if(XCODE)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CODE_SIGN_IDENTITY)
|
||||||
|
cmake_parse_arguments(CODESIGN
|
||||||
|
"FORCE"
|
||||||
|
""
|
||||||
|
"OPTIONS;FILES"
|
||||||
|
${ARGN})
|
||||||
|
|
||||||
|
set(CODESIGN_ARGS --timestamp -s "${CODE_SIGN_IDENTITY}")
|
||||||
|
if(CODESIGN_FORCE)
|
||||||
|
list(APPEND CODESIGN_ARGS -f)
|
||||||
|
endif()
|
||||||
|
if(CODESIGN_OPTIONS)
|
||||||
|
list(JOIN CODESIGN_OPTIONS , CODESIGN_OPTIONS_JOINED)
|
||||||
|
list(APPEND CODESIGN_ARGS "--option=${CODESIGN_OPTIONS_JOINED}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
## Process the entitlements as though Xcode has done variable expansion.
|
||||||
|
## This only supports the PRODUCT_BUNDLE_IDENTIFIER and DEVELOPMENT_TEAM
|
||||||
|
## for now.
|
||||||
|
get_target_property(CODESIGN_ENTITLEMENTS ${TARGET} XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS)
|
||||||
|
if(CODESIGN_ENTITLEMENTS)
|
||||||
|
add_custom_command(TARGET ${TARGET} POST_BUILD
|
||||||
|
COMMAND ${CMAKE_SOURCE_DIR}/scripts/utils/make_template.py ${CODESIGN_ENTITLEMENTS}
|
||||||
|
-k PRODUCT_BUNDLE_IDENTIFIER=$<TARGET_PROPERTY:${TARGET},XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER>
|
||||||
|
-k DEVELOPMENT_TEAM=$<TARGET_PROPERTY:${TARGET},XCODE_ATTRIBUTE_DEVELOPMENT_TEAM>
|
||||||
|
-o ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_codesign.entitlements
|
||||||
|
)
|
||||||
|
list(APPEND CODESIGN_ARGS --entitlements ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_codesign.entitlements)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
## If no files were specified, sign the target itself.
|
||||||
|
if(NOT CODESIGN_FILES)
|
||||||
|
set(CODESIGN_FILES $<TARGET_FILE:${TARGET}>)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
foreach(FILE ${CODESIGN_FILES})
|
||||||
|
add_custom_command(TARGET ${TARGET} POST_BUILD VERBATIM
|
||||||
|
COMMAND ${COMMENT_ECHO_COMMAND} "Signing ${TARGET}: ${FILE}"
|
||||||
|
COMMAND ${CODESIGN_BIN} ${CODESIGN_ARGS} ${FILE}
|
||||||
|
)
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
Loading…
Add table
Add a link
Reference in a new issue