cpp.js 0.6.1 → 1.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/package.json +10 -3
- package/src/assets/CMakeLists.txt +26 -10
- package/src/assets/browser.js +161 -0
- package/src/assets/dist.cmake +36 -11
- package/src/assets/ios.toolchain.cmake +1145 -0
- package/src/assets/node.js +130 -0
- package/src/bin.js +102 -27
- package/src/functions/buildJS.js +63 -0
- package/src/functions/createBridge.js +16 -17
- package/src/functions/createLib.js +44 -0
- package/src/functions/createWasm.js +61 -192
- package/src/functions/findOrCreateInterfaceFile.js +29 -8
- package/src/functions/finishBuild.js +43 -0
- package/src/functions/getCmakeParams.js +106 -0
- package/src/functions/getData.js +37 -0
- package/src/functions/getLibs.js +33 -0
- package/src/functions/run.js +220 -0
- package/src/functions/specs/createBridge.spec.js +8 -9
- package/src/functions/specs/findOrCreateInterfaceFile.spec.js +12 -12
- package/src/index.js +39 -3
- package/src/utils/createTempDir.js +2 -2
- package/src/utils/findCMakeListsFile.js +3 -3
- package/src/utils/getCliPath.js +4 -5
- package/src/utils/getConfig.js +63 -32
- package/src/utils/getDirName.js +2 -2
- package/src/utils/getOsUserAndGroupId.js +1 -1
- package/src/utils/getPathInfo.js +0 -2
- package/src/utils/pullDockerImage.js +11 -6
- package/src/assets/extern-post.js +0 -14
|
@@ -0,0 +1,1145 @@
|
|
|
1
|
+
# This file is part of the ios-cmake project. It was retrieved from
|
|
2
|
+
# https://github.com/leetal/ios-cmake.git, which is a fork of
|
|
3
|
+
# https://github.com/gerstrong/ios-cmake.git, which is a fork of
|
|
4
|
+
# https://github.com/cristeab/ios-cmake.git, which is a fork of
|
|
5
|
+
# https://code.google.com/p/ios-cmake/. Which in turn is based off of
|
|
6
|
+
# the Platform/Darwin.cmake and Platform/UnixPaths.cmake files which
|
|
7
|
+
# are included with CMake 2.8.4
|
|
8
|
+
#
|
|
9
|
+
# The ios-cmake project is licensed under the new BSD license.
|
|
10
|
+
#
|
|
11
|
+
# Copyright (c) 2014, Bogdan Cristea and LTE Engineering Software,
|
|
12
|
+
# Kitware, Inc., Insight Software Consortium. All rights reserved.
|
|
13
|
+
# Redistribution and use in source and binary forms, with or without
|
|
14
|
+
# modification, are permitted provided that the following conditions
|
|
15
|
+
# are met:
|
|
16
|
+
# 1. Redistributions of source code must retain the above copyright
|
|
17
|
+
# notice, this list of conditions and the following disclaimer.
|
|
18
|
+
#
|
|
19
|
+
# 2. Redistributions in binary form must reproduce the above copyright
|
|
20
|
+
# notice, this list of conditions and the following disclaimer in the
|
|
21
|
+
# documentation and/or other materials provided with the distribution.
|
|
22
|
+
#
|
|
23
|
+
# 3. Neither the name of the copyright holder nor the names of its
|
|
24
|
+
# contributors may be used to endorse or promote products derived from
|
|
25
|
+
# this software without specific prior written permission.
|
|
26
|
+
#
|
|
27
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
28
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
29
|
+
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
30
|
+
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
31
|
+
# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
32
|
+
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
33
|
+
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
34
|
+
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
35
|
+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
36
|
+
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
37
|
+
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
38
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
|
39
|
+
#
|
|
40
|
+
# This file is based on the Platform/Darwin.cmake and
|
|
41
|
+
# Platform/UnixPaths.cmake files which are included with CMake 2.8.4
|
|
42
|
+
# It has been altered for iOS development.
|
|
43
|
+
#
|
|
44
|
+
# Updated by Alex Stewart (alexs.mac@gmail.com)
|
|
45
|
+
#
|
|
46
|
+
# *****************************************************************************
|
|
47
|
+
# Now maintained by Alexander Widerberg (widerbergaren [at] gmail.com)
|
|
48
|
+
# under the BSD-3-Clause license
|
|
49
|
+
# https://github.com/leetal/ios-cmake
|
|
50
|
+
# *****************************************************************************
|
|
51
|
+
#
|
|
52
|
+
# INFORMATION / HELP
|
|
53
|
+
#
|
|
54
|
+
###############################################################################
|
|
55
|
+
# OPTIONS #
|
|
56
|
+
###############################################################################
|
|
57
|
+
#
|
|
58
|
+
# PLATFORM: (default "OS64")
|
|
59
|
+
# OS = Build for iPhoneOS.
|
|
60
|
+
# OS64 = Build for arm64 iphoneOS.
|
|
61
|
+
# 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)
|
|
62
|
+
# SIMULATOR = Build for x86 i386 iphoneOS Simulator.
|
|
63
|
+
# SIMULATOR64 = Build for x86_64 iphoneOS Simulator.
|
|
64
|
+
# SIMULATORARM64 = Build for arm64 iphoneOS Simulator.
|
|
65
|
+
# SIMULATOR64COMBINED = Build for arm64 x86_64 iphoneOS Simulator. Combined into FAT STATIC lib (supported on 3.14+ of CMakewith "-G Xcode" argument ONLY)
|
|
66
|
+
# TVOS = Build for arm64 tvOS.
|
|
67
|
+
# 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)
|
|
68
|
+
# SIMULATOR_TVOS = Build for x86_64 tvOS Simulator.
|
|
69
|
+
# SIMULATORARM64_TVOS = Build for arm64 tvOS Simulator.
|
|
70
|
+
# VISIONOSCOMBINED = Build for arm64 visionOS + visionOS 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)
|
|
71
|
+
# VISIONOS = Build for arm64 visionOS.
|
|
72
|
+
# SIMULATOR_VISIONOS = Build for arm64 visionOS Simulator.
|
|
73
|
+
# WATCHOS = Build for armv7k arm64_32 for watchOS.
|
|
74
|
+
# 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)
|
|
75
|
+
# SIMULATOR_WATCHOS = Build for x86_64 for watchOS Simulator.
|
|
76
|
+
# SIMULATORARM64_WATCHOS = Build for arm64 for watchOS Simulator.
|
|
77
|
+
# MAC = Build for x86_64 macOS.
|
|
78
|
+
# MAC_ARM64 = Build for Apple Silicon macOS.
|
|
79
|
+
# MAC_UNIVERSAL = Combined build for x86_64 and Apple Silicon on macOS.
|
|
80
|
+
# MAC_CATALYST = Build for x86_64 macOS with Catalyst support (iOS toolchain on macOS).
|
|
81
|
+
# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS
|
|
82
|
+
# MAC_CATALYST_ARM64 = Build for Apple Silicon macOS with Catalyst support (iOS toolchain on macOS).
|
|
83
|
+
# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS
|
|
84
|
+
# MAC_CATALYST_UNIVERSAL = Combined build for x86_64 and Apple Silicon on Catalyst.
|
|
85
|
+
#
|
|
86
|
+
# CMAKE_OSX_SYSROOT: Path to the SDK to use. By default this is
|
|
87
|
+
# automatically determined from PLATFORM and xcodebuild, but
|
|
88
|
+
# can also be manually specified (although this should not be required).
|
|
89
|
+
#
|
|
90
|
+
# CMAKE_DEVELOPER_ROOT: Path to the Developer directory for the platform
|
|
91
|
+
# being compiled for. By default, this is automatically determined from
|
|
92
|
+
# CMAKE_OSX_SYSROOT, but can also be manually specified (although this should
|
|
93
|
+
# not be required).
|
|
94
|
+
#
|
|
95
|
+
# 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
|
|
96
|
+
#
|
|
97
|
+
# NAMED_LANGUAGE_SUPPORT:
|
|
98
|
+
# ON (default) = Will require "enable_language(OBJC) and/or enable_language(OBJCXX)" for full OBJC|OBJCXX support
|
|
99
|
+
# OFF = Will embed the OBJC and OBJCXX flags into the CMAKE_C_FLAGS and CMAKE_CXX_FLAGS (legacy behavior, CMake version < 3.16)
|
|
100
|
+
#
|
|
101
|
+
# ENABLE_BITCODE: (ON|OFF) Enables or disables bitcode support. Default OFF
|
|
102
|
+
#
|
|
103
|
+
# ENABLE_ARC: (ON|OFF) Enables or disables ARC support. Default ON (ARC enabled by default)
|
|
104
|
+
#
|
|
105
|
+
# ENABLE_VISIBILITY: (ON|OFF) Enables or disables symbol visibility support. Default OFF (visibility hidden by default)
|
|
106
|
+
#
|
|
107
|
+
# ENABLE_STRICT_TRY_COMPILE: (ON|OFF) Enables or disables strict try_compile() on all Check* directives (will run linker
|
|
108
|
+
# to actually check if linking is possible). Default OFF (will set CMAKE_TRY_COMPILE_TARGET_TYPE to STATIC_LIBRARY)
|
|
109
|
+
#
|
|
110
|
+
# ARCHS: (armv7 armv7s armv7k arm64 arm64_32 i386 x86_64) If specified, will override the default architectures for the given PLATFORM
|
|
111
|
+
# OS = armv7 armv7s arm64 (if applicable)
|
|
112
|
+
# OS64 = arm64 (if applicable)
|
|
113
|
+
# SIMULATOR = i386
|
|
114
|
+
# SIMULATOR64 = x86_64
|
|
115
|
+
# SIMULATORARM64 = arm64
|
|
116
|
+
# TVOS = arm64
|
|
117
|
+
# SIMULATOR_TVOS = x86_64 (i386 has since long been deprecated)
|
|
118
|
+
# SIMULATORARM64_TVOS = arm64
|
|
119
|
+
# WATCHOS = armv7k arm64_32 (if applicable)
|
|
120
|
+
# SIMULATOR_WATCHOS = x86_64 (i386 has since long been deprecated)
|
|
121
|
+
# SIMULATORARM64_WATCHOS = arm64
|
|
122
|
+
# MAC = x86_64
|
|
123
|
+
# MAC_ARM64 = arm64
|
|
124
|
+
# MAC_UNIVERSAL = x86_64 arm64
|
|
125
|
+
# MAC_CATALYST = x86_64
|
|
126
|
+
# MAC_CATALYST_ARM64 = arm64
|
|
127
|
+
# MAC_CATALYST_UNIVERSAL = x86_64 arm64
|
|
128
|
+
#
|
|
129
|
+
# NOTE: When manually specifying ARCHS, put a semi-colon between the entries. E.g., -DARCHS="armv7;arm64"
|
|
130
|
+
#
|
|
131
|
+
###############################################################################
|
|
132
|
+
# END OPTIONS #
|
|
133
|
+
###############################################################################
|
|
134
|
+
#
|
|
135
|
+
# This toolchain defines the following properties (available via get_property()) for use externally:
|
|
136
|
+
#
|
|
137
|
+
# PLATFORM: The currently targeted platform.
|
|
138
|
+
# XCODE_VERSION: Version number (not including Build version) of Xcode detected.
|
|
139
|
+
# SDK_VERSION: Version of SDK being used.
|
|
140
|
+
# OSX_ARCHITECTURES: Architectures being compiled for (generated from PLATFORM).
|
|
141
|
+
# APPLE_TARGET_TRIPLE: Used by autoconf build systems. NOTE: If "ARCHS" is overridden, this will *NOT* be set!
|
|
142
|
+
#
|
|
143
|
+
# This toolchain defines the following macros for use externally:
|
|
144
|
+
#
|
|
145
|
+
# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE XCODE_VARIANT)
|
|
146
|
+
# A convenience macro for setting xcode specific properties on targets.
|
|
147
|
+
# Available variants are: All, Release, RelWithDebInfo, Debug, MinSizeRel
|
|
148
|
+
# example: set_xcode_property (myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1" "all").
|
|
149
|
+
#
|
|
150
|
+
# find_host_package (PROGRAM ARGS)
|
|
151
|
+
# A macro used to find executable programs on the host system, not within the
|
|
152
|
+
# environment. Thanks to the android-cmake project for providing the
|
|
153
|
+
# command.
|
|
154
|
+
#
|
|
155
|
+
|
|
156
|
+
cmake_minimum_required(VERSION 3.8.0)
|
|
157
|
+
|
|
158
|
+
# CMake invokes the toolchain file twice during the first build, but only once during subsequent rebuilds.
|
|
159
|
+
# NOTE: To improve single-library build-times, provide the flag "OS_SINGLE_BUILD" as a build argument.
|
|
160
|
+
if(DEFINED OS_SINGLE_BUILD AND DEFINED ENV{_IOS_TOOLCHAIN_HAS_RUN})
|
|
161
|
+
return()
|
|
162
|
+
endif()
|
|
163
|
+
set(ENV{_IOS_TOOLCHAIN_HAS_RUN} true)
|
|
164
|
+
|
|
165
|
+
# List of supported platform values
|
|
166
|
+
list(APPEND _supported_platforms
|
|
167
|
+
"OS" "OS64" "OS64COMBINED" "SIMULATOR" "SIMULATOR64" "SIMULATORARM64" "SIMULATOR64COMBINED"
|
|
168
|
+
"TVOS" "TVOSCOMBINED" "SIMULATOR_TVOS" "SIMULATORARM64_TVOS"
|
|
169
|
+
"WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS"
|
|
170
|
+
"MAC" "MAC_ARM64" "MAC_UNIVERSAL"
|
|
171
|
+
"VISIONOS" "SIMULATOR_VISIONOS" "VISIONOSCOMBINED"
|
|
172
|
+
"MAC_CATALYST" "MAC_CATALYST_ARM64" "MAC_CATALYST_UNIVERSAL")
|
|
173
|
+
|
|
174
|
+
# Cache what generator is used
|
|
175
|
+
set(USED_CMAKE_GENERATOR "${CMAKE_GENERATOR}")
|
|
176
|
+
|
|
177
|
+
# Check if using a CMake version capable of building combined FAT builds (simulator and target slices combined in one static lib)
|
|
178
|
+
if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14")
|
|
179
|
+
set(MODERN_CMAKE YES)
|
|
180
|
+
endif()
|
|
181
|
+
|
|
182
|
+
# Get the Xcode version being used.
|
|
183
|
+
# Problem: CMake runs toolchain files multiple times, but can't read cache variables on some runs.
|
|
184
|
+
# Workaround: On the first run (in which cache variables are always accessible), set an intermediary environment variable.
|
|
185
|
+
#
|
|
186
|
+
# NOTE: This pattern is used in many places in this toolchain to speed up checks of all sorts
|
|
187
|
+
if(DEFINED XCODE_VERSION_INT)
|
|
188
|
+
# Environment variables are always preserved.
|
|
189
|
+
set(ENV{_XCODE_VERSION_INT} "${XCODE_VERSION_INT}")
|
|
190
|
+
elseif(DEFINED ENV{_XCODE_VERSION_INT})
|
|
191
|
+
set(XCODE_VERSION_INT "$ENV{_XCODE_VERSION_INT}")
|
|
192
|
+
elseif(NOT DEFINED XCODE_VERSION_INT)
|
|
193
|
+
find_program(XCODEBUILD_EXECUTABLE xcodebuild)
|
|
194
|
+
if(NOT XCODEBUILD_EXECUTABLE)
|
|
195
|
+
message(FATAL_ERROR "xcodebuild not found. Please install either the standalone commandline tools or Xcode.")
|
|
196
|
+
endif()
|
|
197
|
+
execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -version
|
|
198
|
+
OUTPUT_VARIABLE XCODE_VERSION_INT
|
|
199
|
+
ERROR_QUIET
|
|
200
|
+
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
201
|
+
string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION_INT "${XCODE_VERSION_INT}")
|
|
202
|
+
string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION_INT "${XCODE_VERSION_INT}")
|
|
203
|
+
set(XCODE_VERSION_INT "${XCODE_VERSION_INT}" CACHE INTERNAL "")
|
|
204
|
+
endif()
|
|
205
|
+
|
|
206
|
+
# Assuming that xcode 12.0 is installed you most probably have ios sdk 14.0 or later installed (tested on Big Sur)
|
|
207
|
+
# if you don't set a deployment target it will be set the way you only get 64-bit builds
|
|
208
|
+
#if(NOT DEFINED DEPLOYMENT_TARGET AND XCODE_VERSION_INT VERSION_GREATER 12.0)
|
|
209
|
+
# Temporarily fix the arm64 issues in CMake install-combined by excluding arm64 for simulator builds (needed for Apple Silicon...)
|
|
210
|
+
# set(CMAKE_XCODE_ATTRIBUTE_EXCLUDED_ARCHS[sdk=iphonesimulator*] "arm64")
|
|
211
|
+
#endif()
|
|
212
|
+
|
|
213
|
+
# Check if the platform variable is set
|
|
214
|
+
if(DEFINED PLATFORM)
|
|
215
|
+
# Environment variables are always preserved.
|
|
216
|
+
set(ENV{_PLATFORM} "${PLATFORM}")
|
|
217
|
+
elseif(DEFINED ENV{_PLATFORM})
|
|
218
|
+
set(PLATFORM "$ENV{_PLATFORM}")
|
|
219
|
+
elseif(NOT DEFINED PLATFORM)
|
|
220
|
+
message(FATAL_ERROR "PLATFORM argument not set. Bailing configure since I don't know what target you want to build for!")
|
|
221
|
+
endif ()
|
|
222
|
+
|
|
223
|
+
if(PLATFORM MATCHES ".*COMBINED" AND NOT CMAKE_GENERATOR MATCHES "Xcode")
|
|
224
|
+
message(FATAL_ERROR "The combined builds support requires Xcode to be used as a generator via '-G Xcode' command-line argument in CMake")
|
|
225
|
+
endif()
|
|
226
|
+
|
|
227
|
+
# Safeguard that the platform value is set and is one of the supported values
|
|
228
|
+
list(FIND _supported_platforms ${PLATFORM} contains_PLATFORM)
|
|
229
|
+
if("${contains_PLATFORM}" EQUAL "-1")
|
|
230
|
+
string(REPLACE ";" "\n * " _supported_platforms_formatted "${_supported_platforms}")
|
|
231
|
+
message(FATAL_ERROR " Invalid PLATFORM specified! Current value: ${PLATFORM}.\n"
|
|
232
|
+
" Supported PLATFORM values: \n * ${_supported_platforms_formatted}")
|
|
233
|
+
endif()
|
|
234
|
+
|
|
235
|
+
# Check if Apple Silicon is supported
|
|
236
|
+
if(PLATFORM MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$|^(MAC_UNIVERSAL)$|^(MAC_CATALYST_UNIVERSAL)$" AND ${CMAKE_VERSION} VERSION_LESS "3.19.5")
|
|
237
|
+
message(FATAL_ERROR "Apple Silicon builds requires a minimum of CMake 3.19.5")
|
|
238
|
+
endif()
|
|
239
|
+
|
|
240
|
+
# Touch the toolchain variable to suppress the "unused variable" warning.
|
|
241
|
+
# This happens if CMake is invoked with the same command line the second time.
|
|
242
|
+
if(CMAKE_TOOLCHAIN_FILE)
|
|
243
|
+
endif()
|
|
244
|
+
|
|
245
|
+
# Fix for PThread library not in path
|
|
246
|
+
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
|
|
247
|
+
set(CMAKE_HAVE_THREADS_LIBRARY 1)
|
|
248
|
+
set(CMAKE_USE_WIN32_THREADS_INIT 0)
|
|
249
|
+
set(CMAKE_USE_PTHREADS_INIT 1)
|
|
250
|
+
|
|
251
|
+
# Specify named language support defaults.
|
|
252
|
+
if(NOT DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16")
|
|
253
|
+
set(NAMED_LANGUAGE_SUPPORT ON)
|
|
254
|
+
message(STATUS "[DEFAULTS] Using explicit named language support! E.g., enable_language(CXX) is needed in the project files.")
|
|
255
|
+
elseif(NOT DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_LESS "3.16")
|
|
256
|
+
set(NAMED_LANGUAGE_SUPPORT OFF)
|
|
257
|
+
message(STATUS "[DEFAULTS] Disabling explicit named language support. Falling back to legacy behavior.")
|
|
258
|
+
elseif(DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_LESS "3.16")
|
|
259
|
+
message(FATAL_ERROR "CMake named language support for OBJC and OBJCXX was added in CMake 3.16.")
|
|
260
|
+
endif()
|
|
261
|
+
set(NAMED_LANGUAGE_SUPPORT_INT ${NAMED_LANGUAGE_SUPPORT} CACHE BOOL
|
|
262
|
+
"Whether or not to enable explicit named language support" FORCE)
|
|
263
|
+
|
|
264
|
+
# Specify the minimum version of the deployment target.
|
|
265
|
+
if(NOT DEFINED DEPLOYMENT_TARGET)
|
|
266
|
+
if (PLATFORM MATCHES "WATCHOS")
|
|
267
|
+
# Unless specified, SDK version 4.0 is used by default as minimum target version (watchOS).
|
|
268
|
+
set(DEPLOYMENT_TARGET "6.0")
|
|
269
|
+
elseif(PLATFORM STREQUAL "MAC")
|
|
270
|
+
# Unless specified, SDK version 10.13 (High Sierra) is used by default as the minimum target version (macos).
|
|
271
|
+
set(DEPLOYMENT_TARGET "11.0")
|
|
272
|
+
elseif(PLATFORM STREQUAL "VISIONOS" OR PLATFORM STREQUAL "SIMULATOR_VISIONOS" OR PLATFORM STREQUAL "VISIONOSCOMBINED")
|
|
273
|
+
# Unless specified, SDK version 1.0 is used by default as minimum target version (visionOS).
|
|
274
|
+
set(DEPLOYMENT_TARGET "1.0")
|
|
275
|
+
elseif(PLATFORM STREQUAL "MAC_ARM64")
|
|
276
|
+
# Unless specified, SDK version 11.0 (Big Sur) is used by default as the minimum target version (macOS on arm).
|
|
277
|
+
set(DEPLOYMENT_TARGET "11.0")
|
|
278
|
+
elseif(PLATFORM STREQUAL "MAC_UNIVERSAL")
|
|
279
|
+
# Unless specified, SDK version 11.0 (Big Sur) is used by default as minimum target version for universal builds.
|
|
280
|
+
set(DEPLOYMENT_TARGET "11.0")
|
|
281
|
+
elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64" OR PLATFORM STREQUAL "MAC_CATALYST_UNIVERSAL")
|
|
282
|
+
# Unless specified, SDK version 13.0 is used by default as the minimum target version (mac catalyst minimum requirement).
|
|
283
|
+
set(DEPLOYMENT_TARGET "13.1")
|
|
284
|
+
else()
|
|
285
|
+
# Unless specified, SDK version 11.0 is used by default as the minimum target version (iOS, tvOS).
|
|
286
|
+
set(DEPLOYMENT_TARGET "13.0")
|
|
287
|
+
endif()
|
|
288
|
+
message(STATUS "[DEFAULTS] Using the default min-version since DEPLOYMENT_TARGET not provided!")
|
|
289
|
+
elseif(DEFINED DEPLOYMENT_TARGET AND PLATFORM MATCHES "^MAC_CATALYST" AND ${DEPLOYMENT_TARGET} VERSION_LESS "13.1")
|
|
290
|
+
message(FATAL_ERROR "Mac Catalyst builds requires a minimum deployment target of 13.1!")
|
|
291
|
+
endif()
|
|
292
|
+
|
|
293
|
+
# Store the DEPLOYMENT_TARGET in the cache
|
|
294
|
+
set(DEPLOYMENT_TARGET "${DEPLOYMENT_TARGET}" CACHE INTERNAL "")
|
|
295
|
+
|
|
296
|
+
# Handle the case where we are targeting iOS and a version above 10.3.4 (32-bit support dropped officially)
|
|
297
|
+
if(PLATFORM STREQUAL "OS" AND DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 10.3.4)
|
|
298
|
+
set(PLATFORM "OS64")
|
|
299
|
+
message(STATUS "Targeting minimum SDK version ${DEPLOYMENT_TARGET}. Dropping 32-bit support.")
|
|
300
|
+
elseif(PLATFORM STREQUAL "SIMULATOR" AND DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 10.3.4)
|
|
301
|
+
set(PLATFORM "SIMULATOR64")
|
|
302
|
+
message(STATUS "Targeting minimum SDK version ${DEPLOYMENT_TARGET}. Dropping 32-bit support.")
|
|
303
|
+
endif()
|
|
304
|
+
|
|
305
|
+
set(PLATFORM_INT "${PLATFORM}")
|
|
306
|
+
|
|
307
|
+
if(DEFINED ARCHS)
|
|
308
|
+
string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
|
|
309
|
+
endif()
|
|
310
|
+
|
|
311
|
+
# Determine the platform name and architectures for use in xcodebuild commands
|
|
312
|
+
# from the specified PLATFORM_INT name.
|
|
313
|
+
if(PLATFORM_INT STREQUAL "OS")
|
|
314
|
+
set(SDK_NAME iphoneos)
|
|
315
|
+
if(NOT ARCHS)
|
|
316
|
+
set(ARCHS armv7 armv7s arm64)
|
|
317
|
+
set(APPLE_TARGET_TRIPLE_INT arm-apple-ios${DEPLOYMENT_TARGET})
|
|
318
|
+
else()
|
|
319
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
|
|
320
|
+
endif()
|
|
321
|
+
elseif(PLATFORM_INT STREQUAL "OS64")
|
|
322
|
+
set(SDK_NAME iphoneos)
|
|
323
|
+
if(NOT ARCHS)
|
|
324
|
+
if (XCODE_VERSION_INT VERSION_GREATER 10.0)
|
|
325
|
+
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
|
|
326
|
+
else()
|
|
327
|
+
set(ARCHS arm64)
|
|
328
|
+
endif()
|
|
329
|
+
set(APPLE_TARGET_TRIPLE_INT arm64-apple-ios${DEPLOYMENT_TARGET})
|
|
330
|
+
else()
|
|
331
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
|
|
332
|
+
endif()
|
|
333
|
+
elseif(PLATFORM_INT STREQUAL "OS64COMBINED")
|
|
334
|
+
set(SDK_NAME iphoneos)
|
|
335
|
+
if(MODERN_CMAKE)
|
|
336
|
+
if(NOT ARCHS)
|
|
337
|
+
if (XCODE_VERSION_INT VERSION_GREATER 12.0)
|
|
338
|
+
set(ARCHS arm64 x86_64)
|
|
339
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64")
|
|
340
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64 arm64")
|
|
341
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64")
|
|
342
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64 arm64")
|
|
343
|
+
else()
|
|
344
|
+
set(ARCHS arm64 x86_64)
|
|
345
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64")
|
|
346
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64")
|
|
347
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64")
|
|
348
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64")
|
|
349
|
+
endif()
|
|
350
|
+
set(APPLE_TARGET_TRIPLE_INT arm64-x86_64-apple-ios${DEPLOYMENT_TARGET})
|
|
351
|
+
else()
|
|
352
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
|
|
353
|
+
endif()
|
|
354
|
+
else()
|
|
355
|
+
message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the OS64COMBINED setting work")
|
|
356
|
+
endif()
|
|
357
|
+
elseif(PLATFORM_INT STREQUAL "SIMULATOR64COMBINED")
|
|
358
|
+
set(SDK_NAME iphonesimulator)
|
|
359
|
+
if(MODERN_CMAKE)
|
|
360
|
+
if(NOT ARCHS)
|
|
361
|
+
if (XCODE_VERSION_INT VERSION_GREATER 12.0)
|
|
362
|
+
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
|
|
363
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "")
|
|
364
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64 arm64")
|
|
365
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "")
|
|
366
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64 arm64")
|
|
367
|
+
else()
|
|
368
|
+
set(ARCHS arm64 x86_64)
|
|
369
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "")
|
|
370
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64")
|
|
371
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "")
|
|
372
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64")
|
|
373
|
+
endif()
|
|
374
|
+
set(APPLE_TARGET_TRIPLE_INT aarch64-x86_64-apple-ios${DEPLOYMENT_TARGET}-simulator)
|
|
375
|
+
else()
|
|
376
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator)
|
|
377
|
+
endif()
|
|
378
|
+
else()
|
|
379
|
+
message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the SIMULATOR64COMBINED setting work")
|
|
380
|
+
endif()
|
|
381
|
+
elseif(PLATFORM_INT STREQUAL "SIMULATOR")
|
|
382
|
+
set(SDK_NAME iphonesimulator)
|
|
383
|
+
if(NOT ARCHS)
|
|
384
|
+
set(ARCHS i386)
|
|
385
|
+
set(APPLE_TARGET_TRIPLE_INT i386-apple-ios${DEPLOYMENT_TARGET}-simulator)
|
|
386
|
+
else()
|
|
387
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator)
|
|
388
|
+
endif()
|
|
389
|
+
message(DEPRECATION "SIMULATOR IS DEPRECATED. Consider using SIMULATOR64 instead.")
|
|
390
|
+
elseif(PLATFORM_INT STREQUAL "SIMULATOR64")
|
|
391
|
+
set(SDK_NAME iphonesimulator)
|
|
392
|
+
if(NOT ARCHS)
|
|
393
|
+
set(ARCHS x86_64)
|
|
394
|
+
set(APPLE_TARGET_TRIPLE_INT x86_64-apple-ios${DEPLOYMENT_TARGET}-simulator)
|
|
395
|
+
else()
|
|
396
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator)
|
|
397
|
+
endif()
|
|
398
|
+
elseif(PLATFORM_INT STREQUAL "SIMULATORARM64")
|
|
399
|
+
set(SDK_NAME iphonesimulator)
|
|
400
|
+
if(NOT ARCHS)
|
|
401
|
+
set(ARCHS arm64)
|
|
402
|
+
set(APPLE_TARGET_TRIPLE_INT arm64-apple-ios${DEPLOYMENT_TARGET}-simulator)
|
|
403
|
+
else()
|
|
404
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator)
|
|
405
|
+
endif()
|
|
406
|
+
elseif(PLATFORM_INT STREQUAL "TVOS")
|
|
407
|
+
set(SDK_NAME appletvos)
|
|
408
|
+
if(NOT ARCHS)
|
|
409
|
+
set(ARCHS arm64)
|
|
410
|
+
set(APPLE_TARGET_TRIPLE_INT arm64-apple-tvos${DEPLOYMENT_TARGET})
|
|
411
|
+
else()
|
|
412
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET})
|
|
413
|
+
endif()
|
|
414
|
+
elseif (PLATFORM_INT STREQUAL "TVOSCOMBINED")
|
|
415
|
+
set(SDK_NAME appletvos)
|
|
416
|
+
if(MODERN_CMAKE)
|
|
417
|
+
if(NOT ARCHS)
|
|
418
|
+
set(ARCHS arm64 x86_64)
|
|
419
|
+
set(APPLE_TARGET_TRIPLE_INT arm64-x86_64-apple-tvos${DEPLOYMENT_TARGET})
|
|
420
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvos*] "arm64")
|
|
421
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvsimulator*] "x86_64 arm64")
|
|
422
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvos*] "arm64")
|
|
423
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvsimulator*] "x86_64 arm64")
|
|
424
|
+
else()
|
|
425
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET})
|
|
426
|
+
endif()
|
|
427
|
+
else()
|
|
428
|
+
message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the TVOSCOMBINED setting work")
|
|
429
|
+
endif()
|
|
430
|
+
elseif(PLATFORM_INT STREQUAL "SIMULATOR_TVOS")
|
|
431
|
+
set(SDK_NAME appletvsimulator)
|
|
432
|
+
if(NOT ARCHS)
|
|
433
|
+
set(ARCHS x86_64)
|
|
434
|
+
set(APPLE_TARGET_TRIPLE_INT x86_64-apple-tvos${DEPLOYMENT_TARGET}-simulator)
|
|
435
|
+
else()
|
|
436
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}-simulator)
|
|
437
|
+
endif()
|
|
438
|
+
elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_TVOS")
|
|
439
|
+
set(SDK_NAME appletvsimulator)
|
|
440
|
+
if(NOT ARCHS)
|
|
441
|
+
set(ARCHS arm64)
|
|
442
|
+
set(APPLE_TARGET_TRIPLE_INT arm64-apple-tvos${DEPLOYMENT_TARGET}-simulator)
|
|
443
|
+
else()
|
|
444
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}-simulator)
|
|
445
|
+
endif()
|
|
446
|
+
elseif(PLATFORM_INT STREQUAL "WATCHOS")
|
|
447
|
+
set(SDK_NAME watchos)
|
|
448
|
+
if(NOT ARCHS)
|
|
449
|
+
if (XCODE_VERSION_INT VERSION_GREATER 10.0)
|
|
450
|
+
set(ARCHS armv7k arm64_32)
|
|
451
|
+
set(APPLE_TARGET_TRIPLE_INT arm64_32-apple-watchos${DEPLOYMENT_TARGET})
|
|
452
|
+
else()
|
|
453
|
+
set(ARCHS armv7k)
|
|
454
|
+
set(APPLE_TARGET_TRIPLE_INT arm-apple-watchos${DEPLOYMENT_TARGET})
|
|
455
|
+
endif()
|
|
456
|
+
else()
|
|
457
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET})
|
|
458
|
+
endif()
|
|
459
|
+
elseif(PLATFORM_INT STREQUAL "WATCHOSCOMBINED")
|
|
460
|
+
set(SDK_NAME watchos)
|
|
461
|
+
if(MODERN_CMAKE)
|
|
462
|
+
if(NOT ARCHS)
|
|
463
|
+
if (XCODE_VERSION_INT VERSION_GREATER 10.0)
|
|
464
|
+
set(ARCHS armv7k arm64_32 i386)
|
|
465
|
+
set(APPLE_TARGET_TRIPLE_INT arm64_32-i386-apple-watchos${DEPLOYMENT_TARGET})
|
|
466
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k arm64_32")
|
|
467
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386")
|
|
468
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k arm64_32")
|
|
469
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386")
|
|
470
|
+
else()
|
|
471
|
+
set(ARCHS armv7k i386)
|
|
472
|
+
set(APPLE_TARGET_TRIPLE_INT arm-i386-apple-watchos${DEPLOYMENT_TARGET})
|
|
473
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k")
|
|
474
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386")
|
|
475
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k")
|
|
476
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386")
|
|
477
|
+
endif()
|
|
478
|
+
else()
|
|
479
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET})
|
|
480
|
+
endif()
|
|
481
|
+
else()
|
|
482
|
+
message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the WATCHOSCOMBINED setting work")
|
|
483
|
+
endif()
|
|
484
|
+
elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS")
|
|
485
|
+
set(SDK_NAME watchsimulator)
|
|
486
|
+
if(NOT ARCHS)
|
|
487
|
+
set(ARCHS i386)
|
|
488
|
+
set(APPLE_TARGET_TRIPLE_INT i386-apple-watchos${DEPLOYMENT_TARGET}-simulator)
|
|
489
|
+
else()
|
|
490
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator)
|
|
491
|
+
endif()
|
|
492
|
+
elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_WATCHOS")
|
|
493
|
+
set(SDK_NAME watchsimulator)
|
|
494
|
+
if(NOT ARCHS)
|
|
495
|
+
set(ARCHS arm64)
|
|
496
|
+
set(APPLE_TARGET_TRIPLE_INT arm64-apple-watchos${DEPLOYMENT_TARGET}-simulator)
|
|
497
|
+
else()
|
|
498
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator)
|
|
499
|
+
endif()
|
|
500
|
+
elseif(PLATFORM_INT STREQUAL "SIMULATOR_VISIONOS")
|
|
501
|
+
set(SDK_NAME xrsimulator)
|
|
502
|
+
if(NOT ARCHS)
|
|
503
|
+
set(ARCHS arm64)
|
|
504
|
+
set(APPLE_TARGET_TRIPLE_INT arm64-apple-xros${DEPLOYMENT_TARGET}-simulator)
|
|
505
|
+
else()
|
|
506
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET}-simulator)
|
|
507
|
+
endif()
|
|
508
|
+
elseif(PLATFORM_INT STREQUAL "VISIONOS")
|
|
509
|
+
set(SDK_NAME xros)
|
|
510
|
+
if(NOT ARCHS)
|
|
511
|
+
set(ARCHS arm64)
|
|
512
|
+
set(APPLE_TARGET_TRIPLE_INT arm64-apple-xros${DEPLOYMENT_TARGET})
|
|
513
|
+
else()
|
|
514
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET})
|
|
515
|
+
endif()
|
|
516
|
+
elseif(PLATFORM_INT STREQUAL "VISIONOSCOMBINED")
|
|
517
|
+
set(SDK_NAME xros)
|
|
518
|
+
if(MODERN_CMAKE)
|
|
519
|
+
if(NOT ARCHS)
|
|
520
|
+
set(ARCHS arm64)
|
|
521
|
+
set(APPLE_TARGET_TRIPLE_INT arm64-apple-xros${DEPLOYMENT_TARGET})
|
|
522
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=xros*] "arm64")
|
|
523
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=xrsimulator*] "arm64")
|
|
524
|
+
else()
|
|
525
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET})
|
|
526
|
+
endif()
|
|
527
|
+
else()
|
|
528
|
+
message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the VISIONOSCOMBINED setting work")
|
|
529
|
+
endif()
|
|
530
|
+
elseif(PLATFORM_INT STREQUAL "MAC" OR PLATFORM_INT STREQUAL "MAC_CATALYST")
|
|
531
|
+
set(SDK_NAME macosx)
|
|
532
|
+
if(NOT ARCHS)
|
|
533
|
+
set(ARCHS x86_64)
|
|
534
|
+
endif()
|
|
535
|
+
string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
|
|
536
|
+
if(PLATFORM_INT STREQUAL "MAC")
|
|
537
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET})
|
|
538
|
+
elseif(PLATFORM_INT STREQUAL "MAC_CATALYST")
|
|
539
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi)
|
|
540
|
+
endif()
|
|
541
|
+
elseif(PLATFORM_INT MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$")
|
|
542
|
+
set(SDK_NAME macosx)
|
|
543
|
+
if(NOT ARCHS)
|
|
544
|
+
set(ARCHS arm64)
|
|
545
|
+
endif()
|
|
546
|
+
string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
|
|
547
|
+
if(PLATFORM_INT STREQUAL "MAC_ARM64")
|
|
548
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET})
|
|
549
|
+
elseif(PLATFORM_INT STREQUAL "MAC_CATALYST_ARM64")
|
|
550
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi)
|
|
551
|
+
endif()
|
|
552
|
+
elseif(PLATFORM_INT STREQUAL "MAC_UNIVERSAL")
|
|
553
|
+
set(SDK_NAME macosx)
|
|
554
|
+
if(NOT ARCHS)
|
|
555
|
+
set(ARCHS "x86_64;arm64")
|
|
556
|
+
endif()
|
|
557
|
+
string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
|
|
558
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET})
|
|
559
|
+
elseif(PLATFORM_INT STREQUAL "MAC_CATALYST_UNIVERSAL")
|
|
560
|
+
set(SDK_NAME macosx)
|
|
561
|
+
if(NOT ARCHS)
|
|
562
|
+
set(ARCHS "x86_64;arm64")
|
|
563
|
+
endif()
|
|
564
|
+
string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
|
|
565
|
+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi)
|
|
566
|
+
else()
|
|
567
|
+
message(FATAL_ERROR "Invalid PLATFORM: ${PLATFORM_INT}")
|
|
568
|
+
endif()
|
|
569
|
+
|
|
570
|
+
string(REPLACE ";" " " ARCHS_SPACED "${ARCHS}")
|
|
571
|
+
|
|
572
|
+
if(MODERN_CMAKE AND PLATFORM_INT MATCHES ".*COMBINED" AND NOT CMAKE_GENERATOR MATCHES "Xcode")
|
|
573
|
+
message(FATAL_ERROR "The COMBINED options only work with Xcode generator, -G Xcode")
|
|
574
|
+
endif()
|
|
575
|
+
|
|
576
|
+
if(CMAKE_GENERATOR MATCHES "Xcode" AND PLATFORM_INT MATCHES "^MAC_CATALYST")
|
|
577
|
+
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
|
|
578
|
+
set(CMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS "macosx")
|
|
579
|
+
set(CMAKE_XCODE_ATTRIBUTE_SUPPORTS_MACCATALYST "YES")
|
|
580
|
+
if(NOT DEFINED MACOSX_DEPLOYMENT_TARGET)
|
|
581
|
+
set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "10.15")
|
|
582
|
+
else()
|
|
583
|
+
set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "${MACOSX_DEPLOYMENT_TARGET}")
|
|
584
|
+
endif()
|
|
585
|
+
elseif(CMAKE_GENERATOR MATCHES "Xcode")
|
|
586
|
+
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
|
|
587
|
+
set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${DEPLOYMENT_TARGET}")
|
|
588
|
+
if(NOT PLATFORM_INT MATCHES ".*COMBINED")
|
|
589
|
+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=${SDK_NAME}*] "${ARCHS_SPACED}")
|
|
590
|
+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=${SDK_NAME}*] "${ARCHS_SPACED}")
|
|
591
|
+
endif()
|
|
592
|
+
endif()
|
|
593
|
+
|
|
594
|
+
# If the user did not specify the SDK root to use, then query xcodebuild for it.
|
|
595
|
+
if(DEFINED CMAKE_OSX_SYSROOT_INT)
|
|
596
|
+
# Environment variables are always preserved.
|
|
597
|
+
set(ENV{_CMAKE_OSX_SYSROOT_INT} "${CMAKE_OSX_SYSROOT_INT}")
|
|
598
|
+
elseif(DEFINED ENV{_CMAKE_OSX_SYSROOT_INT})
|
|
599
|
+
set(CMAKE_OSX_SYSROOT_INT "$ENV{_CMAKE_OSX_SYSROOT_INT}")
|
|
600
|
+
elseif(NOT DEFINED CMAKE_OSX_SYSROOT_INT)
|
|
601
|
+
execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -version -sdk ${SDK_NAME} Path
|
|
602
|
+
OUTPUT_VARIABLE CMAKE_OSX_SYSROOT_INT
|
|
603
|
+
ERROR_QUIET
|
|
604
|
+
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
605
|
+
endif()
|
|
606
|
+
|
|
607
|
+
if (NOT DEFINED CMAKE_OSX_SYSROOT_INT AND NOT DEFINED CMAKE_OSX_SYSROOT)
|
|
608
|
+
message(SEND_ERROR "Please make sure that Xcode is installed and that the toolchain"
|
|
609
|
+
"is pointing to the correct path. Please run:"
|
|
610
|
+
"sudo xcode-select -s /Applications/Xcode.app/Contents/Developer"
|
|
611
|
+
"and see if that fixes the problem for you.")
|
|
612
|
+
message(FATAL_ERROR "Invalid CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT} "
|
|
613
|
+
"does not exist.")
|
|
614
|
+
elseif(DEFINED CMAKE_OSX_SYSROOT_INT)
|
|
615
|
+
set(CMAKE_OSX_SYSROOT_INT "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "")
|
|
616
|
+
# Specify the location or name of the platform SDK to be used in CMAKE_OSX_SYSROOT.
|
|
617
|
+
set(CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "")
|
|
618
|
+
endif()
|
|
619
|
+
|
|
620
|
+
# Use bitcode or not
|
|
621
|
+
if(NOT DEFINED ENABLE_BITCODE)
|
|
622
|
+
message(STATUS "[DEFAULTS] Disabling bitcode support by default. ENABLE_BITCODE not provided for override!")
|
|
623
|
+
set(ENABLE_BITCODE OFF)
|
|
624
|
+
endif()
|
|
625
|
+
set(ENABLE_BITCODE_INT ${ENABLE_BITCODE} CACHE BOOL
|
|
626
|
+
"Whether or not to enable bitcode" FORCE)
|
|
627
|
+
# Use ARC or not
|
|
628
|
+
if(NOT DEFINED ENABLE_ARC)
|
|
629
|
+
# Unless specified, enable ARC support by default
|
|
630
|
+
set(ENABLE_ARC ON)
|
|
631
|
+
message(STATUS "[DEFAULTS] Enabling ARC support by default. ENABLE_ARC not provided!")
|
|
632
|
+
endif()
|
|
633
|
+
set(ENABLE_ARC_INT ${ENABLE_ARC} CACHE BOOL "Whether or not to enable ARC" FORCE)
|
|
634
|
+
# Use hidden visibility or not
|
|
635
|
+
if(NOT DEFINED ENABLE_VISIBILITY)
|
|
636
|
+
# Unless specified, disable symbols visibility by default
|
|
637
|
+
set(ENABLE_VISIBILITY OFF)
|
|
638
|
+
message(STATUS "[DEFAULTS] Hiding symbols visibility by default. ENABLE_VISIBILITY not provided!")
|
|
639
|
+
endif()
|
|
640
|
+
set(ENABLE_VISIBILITY_INT ${ENABLE_VISIBILITY} CACHE BOOL "Whether or not to hide symbols from the dynamic linker (-fvisibility=hidden)" FORCE)
|
|
641
|
+
# Set strict compiler checks or not
|
|
642
|
+
if(NOT DEFINED ENABLE_STRICT_TRY_COMPILE)
|
|
643
|
+
# Unless specified, disable strict try_compile()
|
|
644
|
+
set(ENABLE_STRICT_TRY_COMPILE OFF)
|
|
645
|
+
message(STATUS "[DEFAULTS] Using NON-strict compiler checks by default. ENABLE_STRICT_TRY_COMPILE not provided!")
|
|
646
|
+
endif()
|
|
647
|
+
set(ENABLE_STRICT_TRY_COMPILE_INT ${ENABLE_STRICT_TRY_COMPILE} CACHE BOOL
|
|
648
|
+
"Whether or not to use strict compiler checks" FORCE)
|
|
649
|
+
|
|
650
|
+
# Get the SDK version information.
|
|
651
|
+
if(DEFINED SDK_VERSION)
|
|
652
|
+
# Environment variables are always preserved.
|
|
653
|
+
set(ENV{_SDK_VERSION} "${SDK_VERSION}")
|
|
654
|
+
elseif(DEFINED ENV{_SDK_VERSION})
|
|
655
|
+
set(SDK_VERSION "$ENV{_SDK_VERSION}")
|
|
656
|
+
elseif(NOT DEFINED SDK_VERSION)
|
|
657
|
+
execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -sdk ${CMAKE_OSX_SYSROOT_INT} -version SDKVersion
|
|
658
|
+
OUTPUT_VARIABLE SDK_VERSION
|
|
659
|
+
ERROR_QUIET
|
|
660
|
+
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
661
|
+
endif()
|
|
662
|
+
|
|
663
|
+
# Find the Developer root for the specific iOS platform being compiled for
|
|
664
|
+
# from CMAKE_OSX_SYSROOT. Should be ../../ from SDK specified in
|
|
665
|
+
# CMAKE_OSX_SYSROOT. There does not appear to be a direct way to obtain
|
|
666
|
+
# this information from xcrun or xcodebuild.
|
|
667
|
+
if (NOT DEFINED CMAKE_DEVELOPER_ROOT AND NOT CMAKE_GENERATOR MATCHES "Xcode")
|
|
668
|
+
get_filename_component(PLATFORM_SDK_DIR ${CMAKE_OSX_SYSROOT_INT} PATH)
|
|
669
|
+
get_filename_component(CMAKE_DEVELOPER_ROOT ${PLATFORM_SDK_DIR} PATH)
|
|
670
|
+
if (NOT EXISTS "${CMAKE_DEVELOPER_ROOT}")
|
|
671
|
+
message(FATAL_ERROR "Invalid CMAKE_DEVELOPER_ROOT: ${CMAKE_DEVELOPER_ROOT} does not exist.")
|
|
672
|
+
endif()
|
|
673
|
+
endif()
|
|
674
|
+
|
|
675
|
+
# Find the C & C++ compilers for the specified SDK.
|
|
676
|
+
if(DEFINED CMAKE_C_COMPILER)
|
|
677
|
+
# Environment variables are always preserved.
|
|
678
|
+
set(ENV{_CMAKE_C_COMPILER} "${CMAKE_C_COMPILER}")
|
|
679
|
+
elseif(DEFINED ENV{_CMAKE_C_COMPILER})
|
|
680
|
+
set(CMAKE_C_COMPILER "$ENV{_CMAKE_C_COMPILER}")
|
|
681
|
+
set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})
|
|
682
|
+
elseif(NOT DEFINED CMAKE_C_COMPILER)
|
|
683
|
+
execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find clang
|
|
684
|
+
OUTPUT_VARIABLE CMAKE_C_COMPILER
|
|
685
|
+
ERROR_QUIET
|
|
686
|
+
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
687
|
+
set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})
|
|
688
|
+
endif()
|
|
689
|
+
if(DEFINED CMAKE_CXX_COMPILER)
|
|
690
|
+
# Environment variables are always preserved.
|
|
691
|
+
set(ENV{_CMAKE_CXX_COMPILER} "${CMAKE_CXX_COMPILER}")
|
|
692
|
+
elseif(DEFINED ENV{_CMAKE_CXX_COMPILER})
|
|
693
|
+
set(CMAKE_CXX_COMPILER "$ENV{_CMAKE_CXX_COMPILER}")
|
|
694
|
+
elseif(NOT DEFINED CMAKE_CXX_COMPILER)
|
|
695
|
+
execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find clang++
|
|
696
|
+
OUTPUT_VARIABLE CMAKE_CXX_COMPILER
|
|
697
|
+
ERROR_QUIET
|
|
698
|
+
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
699
|
+
endif()
|
|
700
|
+
# Find (Apple's) libtool.
|
|
701
|
+
if(DEFINED BUILD_LIBTOOL)
|
|
702
|
+
# Environment variables are always preserved.
|
|
703
|
+
set(ENV{_BUILD_LIBTOOL} "${BUILD_LIBTOOL}")
|
|
704
|
+
elseif(DEFINED ENV{_BUILD_LIBTOOL})
|
|
705
|
+
set(BUILD_LIBTOOL "$ENV{_BUILD_LIBTOOL}")
|
|
706
|
+
elseif(NOT DEFINED BUILD_LIBTOOL)
|
|
707
|
+
execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find libtool
|
|
708
|
+
OUTPUT_VARIABLE BUILD_LIBTOOL
|
|
709
|
+
ERROR_QUIET
|
|
710
|
+
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
711
|
+
endif()
|
|
712
|
+
# Find the toolchain's provided install_name_tool if none is found on the host
|
|
713
|
+
if(DEFINED CMAKE_INSTALL_NAME_TOOL)
|
|
714
|
+
# Environment variables are always preserved.
|
|
715
|
+
set(ENV{_CMAKE_INSTALL_NAME_TOOL} "${CMAKE_INSTALL_NAME_TOOL}")
|
|
716
|
+
elseif(DEFINED ENV{_CMAKE_INSTALL_NAME_TOOL})
|
|
717
|
+
set(CMAKE_INSTALL_NAME_TOOL "$ENV{_CMAKE_INSTALL_NAME_TOOL}")
|
|
718
|
+
elseif(NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
|
|
719
|
+
execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find install_name_tool
|
|
720
|
+
OUTPUT_VARIABLE CMAKE_INSTALL_NAME_TOOL_INT
|
|
721
|
+
ERROR_QUIET
|
|
722
|
+
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
723
|
+
set(CMAKE_INSTALL_NAME_TOOL ${CMAKE_INSTALL_NAME_TOOL_INT} CACHE INTERNAL "")
|
|
724
|
+
endif()
|
|
725
|
+
|
|
726
|
+
# Configure libtool to be used instead of ar + ranlib to build static libraries.
|
|
727
|
+
# This is required on Xcode 7+, but should also work on previous versions of
|
|
728
|
+
# Xcode.
|
|
729
|
+
get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
|
|
730
|
+
foreach(lang ${languages})
|
|
731
|
+
set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "${BUILD_LIBTOOL} -static -o <TARGET> <LINK_FLAGS> <OBJECTS> " CACHE INTERNAL "")
|
|
732
|
+
endforeach()
|
|
733
|
+
|
|
734
|
+
# CMake 3.14+ support building for iOS, watchOS, and tvOS out of the box.
|
|
735
|
+
if(MODERN_CMAKE)
|
|
736
|
+
if(SDK_NAME MATCHES "iphone")
|
|
737
|
+
set(CMAKE_SYSTEM_NAME iOS)
|
|
738
|
+
elseif(SDK_NAME MATCHES "xros")
|
|
739
|
+
set(CMAKE_SYSTEM_NAME visionOS)
|
|
740
|
+
elseif(SDK_NAME MATCHES "xrsimulator")
|
|
741
|
+
set(CMAKE_SYSTEM_NAME visionOS)
|
|
742
|
+
elseif(SDK_NAME MATCHES "macosx")
|
|
743
|
+
set(CMAKE_SYSTEM_NAME Darwin)
|
|
744
|
+
elseif(SDK_NAME MATCHES "appletv")
|
|
745
|
+
set(CMAKE_SYSTEM_NAME tvOS)
|
|
746
|
+
elseif(SDK_NAME MATCHES "watch")
|
|
747
|
+
set(CMAKE_SYSTEM_NAME watchOS)
|
|
748
|
+
endif()
|
|
749
|
+
# Provide flags for a combined FAT library build on newer CMake versions
|
|
750
|
+
if(PLATFORM_INT MATCHES ".*COMBINED")
|
|
751
|
+
set(CMAKE_IOS_INSTALL_COMBINED YES)
|
|
752
|
+
if(CMAKE_GENERATOR MATCHES "Xcode")
|
|
753
|
+
# Set the SDKROOT Xcode properties to a Xcode-friendly value (the SDK_NAME, E.g, iphoneos)
|
|
754
|
+
# This way, Xcode will automatically switch between the simulator and device SDK when building.
|
|
755
|
+
set(CMAKE_XCODE_ATTRIBUTE_SDKROOT "${SDK_NAME}")
|
|
756
|
+
# Force to not build just one ARCH, but all!
|
|
757
|
+
set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH "NO")
|
|
758
|
+
endif()
|
|
759
|
+
endif()
|
|
760
|
+
elseif(NOT DEFINED CMAKE_SYSTEM_NAME AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.10")
|
|
761
|
+
# Legacy code path prior to CMake 3.14 or fallback if no CMAKE_SYSTEM_NAME specified
|
|
762
|
+
set(CMAKE_SYSTEM_NAME iOS)
|
|
763
|
+
elseif(NOT DEFINED CMAKE_SYSTEM_NAME)
|
|
764
|
+
# Legacy code path before CMake 3.14 or fallback if no CMAKE_SYSTEM_NAME specified
|
|
765
|
+
set(CMAKE_SYSTEM_NAME Darwin)
|
|
766
|
+
endif()
|
|
767
|
+
# Standard settings.
|
|
768
|
+
set(CMAKE_SYSTEM_VERSION ${SDK_VERSION} CACHE INTERNAL "")
|
|
769
|
+
set(UNIX ON CACHE BOOL "")
|
|
770
|
+
set(APPLE ON CACHE BOOL "")
|
|
771
|
+
if(PLATFORM STREQUAL "MAC" OR PLATFORM STREQUAL "MAC_ARM64" OR PLATFORM STREQUAL "MAC_UNIVERSAL")
|
|
772
|
+
set(IOS OFF CACHE BOOL "")
|
|
773
|
+
set(MACOS ON CACHE BOOL "")
|
|
774
|
+
elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64" OR PLATFORM STREQUAL "MAC_CATALYST_UNIVERSAL")
|
|
775
|
+
set(IOS ON CACHE BOOL "")
|
|
776
|
+
set(MACOS ON CACHE BOOL "")
|
|
777
|
+
elseif(PLATFORM STREQUAL "VISIONOS" OR PLATFORM STREQUAL "SIMULATOR_VISIONOS" OR PLATFORM STREQUAL "VISIONOSCOMBINED")
|
|
778
|
+
set(IOS OFF CACHE BOOL "")
|
|
779
|
+
set(VISIONOS ON CACHE BOOL "")
|
|
780
|
+
else()
|
|
781
|
+
set(IOS ON CACHE BOOL "")
|
|
782
|
+
endif()
|
|
783
|
+
# Set the architectures for which to build.
|
|
784
|
+
set(CMAKE_OSX_ARCHITECTURES ${ARCHS} CACHE INTERNAL "")
|
|
785
|
+
# Change the type of target generated for try_compile() so it'll work when cross-compiling, weak compiler checks
|
|
786
|
+
if(NOT ENABLE_STRICT_TRY_COMPILE_INT)
|
|
787
|
+
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
|
788
|
+
endif()
|
|
789
|
+
# All iOS/Darwin specific settings - some may be redundant.
|
|
790
|
+
if (NOT DEFINED CMAKE_MACOSX_BUNDLE)
|
|
791
|
+
set(CMAKE_MACOSX_BUNDLE YES)
|
|
792
|
+
endif()
|
|
793
|
+
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO")
|
|
794
|
+
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO")
|
|
795
|
+
set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
|
|
796
|
+
set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib")
|
|
797
|
+
set(CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES ".tbd" ".so")
|
|
798
|
+
set(CMAKE_SHARED_MODULE_PREFIX "lib")
|
|
799
|
+
set(CMAKE_SHARED_MODULE_SUFFIX ".so")
|
|
800
|
+
set(CMAKE_C_COMPILER_ABI ELF)
|
|
801
|
+
set(CMAKE_CXX_COMPILER_ABI ELF)
|
|
802
|
+
set(CMAKE_C_HAS_ISYSROOT 1)
|
|
803
|
+
set(CMAKE_CXX_HAS_ISYSROOT 1)
|
|
804
|
+
set(CMAKE_MODULE_EXISTS 1)
|
|
805
|
+
set(CMAKE_DL_LIBS "")
|
|
806
|
+
set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
|
|
807
|
+
set(CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ")
|
|
808
|
+
set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}")
|
|
809
|
+
set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}")
|
|
810
|
+
|
|
811
|
+
if(ARCHS MATCHES "((^|;|, )(arm64|arm64e|x86_64))+")
|
|
812
|
+
set(CMAKE_C_SIZEOF_DATA_PTR 8)
|
|
813
|
+
set(CMAKE_CXX_SIZEOF_DATA_PTR 8)
|
|
814
|
+
if(ARCHS MATCHES "((^|;|, )(arm64|arm64e))+")
|
|
815
|
+
set(CMAKE_SYSTEM_PROCESSOR "aarch64")
|
|
816
|
+
else()
|
|
817
|
+
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
|
|
818
|
+
endif()
|
|
819
|
+
else()
|
|
820
|
+
set(CMAKE_C_SIZEOF_DATA_PTR 4)
|
|
821
|
+
set(CMAKE_CXX_SIZEOF_DATA_PTR 4)
|
|
822
|
+
set(CMAKE_SYSTEM_PROCESSOR "arm")
|
|
823
|
+
endif()
|
|
824
|
+
|
|
825
|
+
# Note that only Xcode 7+ supports the newer more specific:
|
|
826
|
+
# -m${SDK_NAME}-version-min flags, older versions of Xcode use:
|
|
827
|
+
# -m(ios/ios-simulator)-version-min instead.
|
|
828
|
+
if(${CMAKE_VERSION} VERSION_LESS "3.11")
|
|
829
|
+
if(PLATFORM_INT STREQUAL "OS" OR PLATFORM_INT STREQUAL "OS64")
|
|
830
|
+
if(XCODE_VERSION_INT VERSION_LESS 7.0)
|
|
831
|
+
set(SDK_NAME_VERSION_FLAGS
|
|
832
|
+
"-mios-version-min=${DEPLOYMENT_TARGET}")
|
|
833
|
+
else()
|
|
834
|
+
# Xcode 7.0+ uses flags we can build directly from SDK_NAME.
|
|
835
|
+
set(SDK_NAME_VERSION_FLAGS
|
|
836
|
+
"-m${SDK_NAME}-version-min=${DEPLOYMENT_TARGET}")
|
|
837
|
+
endif()
|
|
838
|
+
elseif(PLATFORM_INT STREQUAL "TVOS")
|
|
839
|
+
set(SDK_NAME_VERSION_FLAGS
|
|
840
|
+
"-mtvos-version-min=${DEPLOYMENT_TARGET}")
|
|
841
|
+
elseif(PLATFORM_INT STREQUAL "SIMULATOR_TVOS")
|
|
842
|
+
set(SDK_NAME_VERSION_FLAGS
|
|
843
|
+
"-mtvos-simulator-version-min=${DEPLOYMENT_TARGET}")
|
|
844
|
+
elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_TVOS")
|
|
845
|
+
set(SDK_NAME_VERSION_FLAGS
|
|
846
|
+
"-mtvos-simulator-version-min=${DEPLOYMENT_TARGET}")
|
|
847
|
+
elseif(PLATFORM_INT STREQUAL "WATCHOS")
|
|
848
|
+
set(SDK_NAME_VERSION_FLAGS
|
|
849
|
+
"-mwatchos-version-min=${DEPLOYMENT_TARGET}")
|
|
850
|
+
elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS")
|
|
851
|
+
set(SDK_NAME_VERSION_FLAGS
|
|
852
|
+
"-mwatchos-simulator-version-min=${DEPLOYMENT_TARGET}")
|
|
853
|
+
elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_WATCHOS")
|
|
854
|
+
set(SDK_NAME_VERSION_FLAGS
|
|
855
|
+
"-mwatchos-simulator-version-min=${DEPLOYMENT_TARGET}")
|
|
856
|
+
elseif(PLATFORM_INT STREQUAL "MAC")
|
|
857
|
+
set(SDK_NAME_VERSION_FLAGS
|
|
858
|
+
"-mmacosx-version-min=${DEPLOYMENT_TARGET}")
|
|
859
|
+
else()
|
|
860
|
+
# SIMULATOR or SIMULATOR64 both use -mios-simulator-version-min.
|
|
861
|
+
set(SDK_NAME_VERSION_FLAGS
|
|
862
|
+
"-mios-simulator-version-min=${DEPLOYMENT_TARGET}")
|
|
863
|
+
endif()
|
|
864
|
+
elseif(NOT PLATFORM_INT MATCHES "^MAC_CATALYST")
|
|
865
|
+
# Newer versions of CMake sets the version min flags correctly, skip this for Mac Catalyst targets
|
|
866
|
+
set(CMAKE_OSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET} CACHE INTERNAL "Minimum OS X deployment version")
|
|
867
|
+
endif()
|
|
868
|
+
|
|
869
|
+
if(DEFINED APPLE_TARGET_TRIPLE_INT)
|
|
870
|
+
set(APPLE_TARGET_TRIPLE ${APPLE_TARGET_TRIPLE_INT} CACHE INTERNAL "")
|
|
871
|
+
set(CMAKE_C_COMPILER_TARGET ${APPLE_TARGET_TRIPLE})
|
|
872
|
+
set(CMAKE_CXX_COMPILER_TARGET ${APPLE_TARGET_TRIPLE})
|
|
873
|
+
set(CMAKE_ASM_COMPILER_TARGET ${APPLE_TARGET_TRIPLE})
|
|
874
|
+
endif()
|
|
875
|
+
|
|
876
|
+
if(PLATFORM_INT MATCHES "^MAC_CATALYST")
|
|
877
|
+
set(C_TARGET_FLAGS "-isystem ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/usr/include -iframework ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks")
|
|
878
|
+
endif()
|
|
879
|
+
|
|
880
|
+
if(ENABLE_BITCODE_INT)
|
|
881
|
+
set(BITCODE "-fembed-bitcode")
|
|
882
|
+
set(CMAKE_XCODE_ATTRIBUTE_BITCODE_GENERATION_MODE "bitcode")
|
|
883
|
+
set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "YES")
|
|
884
|
+
else()
|
|
885
|
+
set(BITCODE "")
|
|
886
|
+
set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO")
|
|
887
|
+
endif()
|
|
888
|
+
|
|
889
|
+
if(ENABLE_ARC_INT)
|
|
890
|
+
set(FOBJC_ARC "-fobjc-arc")
|
|
891
|
+
set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "YES")
|
|
892
|
+
else()
|
|
893
|
+
set(FOBJC_ARC "-fno-objc-arc")
|
|
894
|
+
set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "NO")
|
|
895
|
+
endif()
|
|
896
|
+
|
|
897
|
+
if(NAMED_LANGUAGE_SUPPORT_INT)
|
|
898
|
+
set(OBJC_VARS "-fobjc-abi-version=2 -DOBJC_OLD_DISPATCH_PROTOTYPES=0")
|
|
899
|
+
set(OBJC_LEGACY_VARS "")
|
|
900
|
+
else()
|
|
901
|
+
set(OBJC_VARS "")
|
|
902
|
+
set(OBJC_LEGACY_VARS "-fobjc-abi-version=2 -DOBJC_OLD_DISPATCH_PROTOTYPES=0")
|
|
903
|
+
endif()
|
|
904
|
+
|
|
905
|
+
if(NOT ENABLE_VISIBILITY_INT)
|
|
906
|
+
foreach(lang ${languages})
|
|
907
|
+
set(CMAKE_${lang}_VISIBILITY_PRESET "hidden" CACHE INTERNAL "")
|
|
908
|
+
endforeach()
|
|
909
|
+
set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "YES")
|
|
910
|
+
set(VISIBILITY "-fvisibility=hidden -fvisibility-inlines-hidden")
|
|
911
|
+
else()
|
|
912
|
+
foreach(lang ${languages})
|
|
913
|
+
set(CMAKE_${lang}_VISIBILITY_PRESET "default" CACHE INTERNAL "")
|
|
914
|
+
endforeach()
|
|
915
|
+
set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "NO")
|
|
916
|
+
set(VISIBILITY "-fvisibility=default")
|
|
917
|
+
endif()
|
|
918
|
+
|
|
919
|
+
if(DEFINED APPLE_TARGET_TRIPLE)
|
|
920
|
+
set(APPLE_TARGET_TRIPLE_FLAG "-target ${APPLE_TARGET_TRIPLE}")
|
|
921
|
+
endif()
|
|
922
|
+
|
|
923
|
+
#Check if Xcode generator is used since that will handle these flags automagically
|
|
924
|
+
if(CMAKE_GENERATOR MATCHES "Xcode")
|
|
925
|
+
message(STATUS "Not setting any manual command-line buildflags, since Xcode is selected as the generator. Modifying the Xcode build-settings directly instead.")
|
|
926
|
+
else()
|
|
927
|
+
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
|
|
928
|
+
"Flags used by the compiler during all C build types.")
|
|
929
|
+
set(CMAKE_C_FLAGS_DEBUG "-O0 -g ${CMAKE_C_FLAGS_DEBUG}")
|
|
930
|
+
set(CMAKE_C_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_C_FLAGS_MINSIZEREL}")
|
|
931
|
+
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
|
|
932
|
+
set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_C_FLAGS_RELEASE}")
|
|
933
|
+
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
|
|
934
|
+
"Flags used by the compiler during all CXX build types.")
|
|
935
|
+
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g ${CMAKE_CXX_FLAGS_DEBUG}")
|
|
936
|
+
set(CMAKE_CXX_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_CXX_FLAGS_MINSIZEREL}")
|
|
937
|
+
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
|
938
|
+
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_CXX_FLAGS_RELEASE}")
|
|
939
|
+
if(NAMED_LANGUAGE_SUPPORT_INT)
|
|
940
|
+
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
|
|
941
|
+
"Flags used by the compiler during all OBJC build types.")
|
|
942
|
+
set(CMAKE_OBJC_FLAGS_DEBUG "-O0 -g ${CMAKE_OBJC_FLAGS_DEBUG}")
|
|
943
|
+
set(CMAKE_OBJC_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_OBJC_FLAGS_MINSIZEREL}")
|
|
944
|
+
set(CMAKE_OBJC_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_OBJC_FLAGS_RELWITHDEBINFO}")
|
|
945
|
+
set(CMAKE_OBJC_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_OBJC_FLAGS_RELEASE}")
|
|
946
|
+
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
|
|
947
|
+
"Flags used by the compiler during all OBJCXX build types.")
|
|
948
|
+
set(CMAKE_OBJCXX_FLAGS_DEBUG "-O0 -g ${CMAKE_OBJCXX_FLAGS_DEBUG}")
|
|
949
|
+
set(CMAKE_OBJCXX_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_OBJCXX_FLAGS_MINSIZEREL}")
|
|
950
|
+
set(CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO}")
|
|
951
|
+
set(CMAKE_OBJCXX_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_OBJCXX_FLAGS_RELEASE}")
|
|
952
|
+
endif()
|
|
953
|
+
set(CMAKE_C_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}" CACHE INTERNAL
|
|
954
|
+
"Flags used by the compiler for all C link types.")
|
|
955
|
+
set(CMAKE_CXX_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}" CACHE INTERNAL
|
|
956
|
+
"Flags used by the compiler for all CXX link types.")
|
|
957
|
+
if(NAMED_LANGUAGE_SUPPORT_INT)
|
|
958
|
+
set(CMAKE_OBJC_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_OBJC_LINK_FLAGS}" CACHE INTERNAL
|
|
959
|
+
"Flags used by the compiler for all OBJC link types.")
|
|
960
|
+
set(CMAKE_OBJCXX_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_OBJCXX_LINK_FLAGS}" CACHE INTERNAL
|
|
961
|
+
"Flags used by the compiler for all OBJCXX link types.")
|
|
962
|
+
endif()
|
|
963
|
+
set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp -arch ${CMAKE_OSX_ARCHITECTURES} ${APPLE_TARGET_TRIPLE_FLAG}" CACHE INTERNAL
|
|
964
|
+
"Flags used by the compiler for all ASM build types.")
|
|
965
|
+
endif()
|
|
966
|
+
|
|
967
|
+
## Print status messages to inform of the current state
|
|
968
|
+
message(STATUS "Configuring ${SDK_NAME} build for platform: ${PLATFORM_INT}, architecture(s): ${ARCHS}")
|
|
969
|
+
message(STATUS "Using SDK: ${CMAKE_OSX_SYSROOT_INT}")
|
|
970
|
+
message(STATUS "Using C compiler: ${CMAKE_C_COMPILER}")
|
|
971
|
+
message(STATUS "Using CXX compiler: ${CMAKE_CXX_COMPILER}")
|
|
972
|
+
message(STATUS "Using libtool: ${BUILD_LIBTOOL}")
|
|
973
|
+
message(STATUS "Using install name tool: ${CMAKE_INSTALL_NAME_TOOL}")
|
|
974
|
+
if(DEFINED APPLE_TARGET_TRIPLE)
|
|
975
|
+
message(STATUS "Autoconf target triple: ${APPLE_TARGET_TRIPLE}")
|
|
976
|
+
endif()
|
|
977
|
+
message(STATUS "Using minimum deployment version: ${DEPLOYMENT_TARGET}"
|
|
978
|
+
" (SDK version: ${SDK_VERSION})")
|
|
979
|
+
if(MODERN_CMAKE)
|
|
980
|
+
message(STATUS "Merging integrated CMake 3.14+ iOS,tvOS,watchOS,macOS toolchain(s) with this toolchain!")
|
|
981
|
+
if(PLATFORM_INT MATCHES ".*COMBINED")
|
|
982
|
+
message(STATUS "Will combine built (static) artifacts into FAT lib...")
|
|
983
|
+
endif()
|
|
984
|
+
endif()
|
|
985
|
+
if(CMAKE_GENERATOR MATCHES "Xcode")
|
|
986
|
+
message(STATUS "Using Xcode version: ${XCODE_VERSION_INT}")
|
|
987
|
+
endif()
|
|
988
|
+
message(STATUS "CMake version: ${CMAKE_VERSION}")
|
|
989
|
+
if(DEFINED SDK_NAME_VERSION_FLAGS)
|
|
990
|
+
message(STATUS "Using version flags: ${SDK_NAME_VERSION_FLAGS}")
|
|
991
|
+
endif()
|
|
992
|
+
message(STATUS "Using a data_ptr size of: ${CMAKE_CXX_SIZEOF_DATA_PTR}")
|
|
993
|
+
if(ENABLE_BITCODE_INT)
|
|
994
|
+
message(STATUS "Bitcode: Enabled")
|
|
995
|
+
else()
|
|
996
|
+
message(STATUS "Bitcode: Disabled")
|
|
997
|
+
endif()
|
|
998
|
+
|
|
999
|
+
if(ENABLE_ARC_INT)
|
|
1000
|
+
message(STATUS "ARC: Enabled")
|
|
1001
|
+
else()
|
|
1002
|
+
message(STATUS "ARC: Disabled")
|
|
1003
|
+
endif()
|
|
1004
|
+
|
|
1005
|
+
if(ENABLE_VISIBILITY_INT)
|
|
1006
|
+
message(STATUS "Hiding symbols: Disabled")
|
|
1007
|
+
else()
|
|
1008
|
+
message(STATUS "Hiding symbols: Enabled")
|
|
1009
|
+
endif()
|
|
1010
|
+
|
|
1011
|
+
# Set global properties
|
|
1012
|
+
set_property(GLOBAL PROPERTY PLATFORM "${PLATFORM}")
|
|
1013
|
+
set_property(GLOBAL PROPERTY APPLE_TARGET_TRIPLE "${APPLE_TARGET_TRIPLE_INT}")
|
|
1014
|
+
set_property(GLOBAL PROPERTY SDK_VERSION "${SDK_VERSION}")
|
|
1015
|
+
set_property(GLOBAL PROPERTY XCODE_VERSION "${XCODE_VERSION_INT}")
|
|
1016
|
+
set_property(GLOBAL PROPERTY OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}")
|
|
1017
|
+
|
|
1018
|
+
# Export configurable variables for the try_compile() command.
|
|
1019
|
+
set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
|
|
1020
|
+
PLATFORM
|
|
1021
|
+
XCODE_VERSION_INT
|
|
1022
|
+
SDK_VERSION
|
|
1023
|
+
NAMED_LANGUAGE_SUPPORT
|
|
1024
|
+
DEPLOYMENT_TARGET
|
|
1025
|
+
CMAKE_DEVELOPER_ROOT
|
|
1026
|
+
CMAKE_OSX_SYSROOT_INT
|
|
1027
|
+
ENABLE_BITCODE
|
|
1028
|
+
ENABLE_ARC
|
|
1029
|
+
CMAKE_ASM_COMPILER
|
|
1030
|
+
CMAKE_C_COMPILER
|
|
1031
|
+
CMAKE_C_COMPILER_TARGET
|
|
1032
|
+
CMAKE_CXX_COMPILER
|
|
1033
|
+
CMAKE_CXX_COMPILER_TARGET
|
|
1034
|
+
BUILD_LIBTOOL
|
|
1035
|
+
CMAKE_INSTALL_NAME_TOOL
|
|
1036
|
+
CMAKE_C_FLAGS
|
|
1037
|
+
CMAKE_C_DEBUG
|
|
1038
|
+
CMAKE_C_MINSIZEREL
|
|
1039
|
+
CMAKE_C_RELWITHDEBINFO
|
|
1040
|
+
CMAKE_C_RELEASE
|
|
1041
|
+
CMAKE_CXX_FLAGS
|
|
1042
|
+
CMAKE_CXX_FLAGS_DEBUG
|
|
1043
|
+
CMAKE_CXX_FLAGS_MINSIZEREL
|
|
1044
|
+
CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
|
1045
|
+
CMAKE_CXX_FLAGS_RELEASE
|
|
1046
|
+
CMAKE_C_LINK_FLAGS
|
|
1047
|
+
CMAKE_CXX_LINK_FLAGS
|
|
1048
|
+
CMAKE_ASM_FLAGS
|
|
1049
|
+
)
|
|
1050
|
+
|
|
1051
|
+
if(NAMED_LANGUAGE_SUPPORT_INT)
|
|
1052
|
+
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
|
|
1053
|
+
CMAKE_OBJC_FLAGS
|
|
1054
|
+
CMAKE_OBJC_DEBUG
|
|
1055
|
+
CMAKE_OBJC_MINSIZEREL
|
|
1056
|
+
CMAKE_OBJC_RELWITHDEBINFO
|
|
1057
|
+
CMAKE_OBJC_RELEASE
|
|
1058
|
+
CMAKE_OBJCXX_FLAGS
|
|
1059
|
+
CMAKE_OBJCXX_DEBUG
|
|
1060
|
+
CMAKE_OBJCXX_MINSIZEREL
|
|
1061
|
+
CMAKE_OBJCXX_RELWITHDEBINFO
|
|
1062
|
+
CMAKE_OBJCXX_RELEASE
|
|
1063
|
+
CMAKE_OBJC_LINK_FLAGS
|
|
1064
|
+
CMAKE_OBJCXX_LINK_FLAGS
|
|
1065
|
+
)
|
|
1066
|
+
endif()
|
|
1067
|
+
|
|
1068
|
+
set(CMAKE_PLATFORM_HAS_INSTALLNAME 1)
|
|
1069
|
+
set(CMAKE_SHARED_LINKER_FLAGS "-rpath @executable_path/Frameworks -rpath @loader_path/Frameworks")
|
|
1070
|
+
set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -Wl,-headerpad_max_install_names")
|
|
1071
|
+
set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -Wl,-headerpad_max_install_names")
|
|
1072
|
+
set(CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,")
|
|
1073
|
+
set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,")
|
|
1074
|
+
set(CMAKE_FIND_LIBRARY_SUFFIXES ".tbd" ".dylib" ".so" ".a")
|
|
1075
|
+
set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-install_name")
|
|
1076
|
+
|
|
1077
|
+
# Set the find root to the SDK developer roots.
|
|
1078
|
+
# Note: CMAKE_FIND_ROOT_PATH is only useful when cross-compiling. Thus, do not set on macOS builds.
|
|
1079
|
+
if(NOT PLATFORM_INT MATCHES "^MAC.*$")
|
|
1080
|
+
list(APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "")
|
|
1081
|
+
set(CMAKE_IGNORE_PATH "/System/Library/Frameworks;/usr/local/lib;/opt/homebrew" CACHE INTERNAL "")
|
|
1082
|
+
endif()
|
|
1083
|
+
|
|
1084
|
+
# Default to searching for frameworks first.
|
|
1085
|
+
IF(NOT DEFINED CMAKE_FIND_FRAMEWORK)
|
|
1086
|
+
set(CMAKE_FIND_FRAMEWORK FIRST)
|
|
1087
|
+
ENDIF(NOT DEFINED CMAKE_FIND_FRAMEWORK)
|
|
1088
|
+
|
|
1089
|
+
# Set up the default search directories for frameworks.
|
|
1090
|
+
if(PLATFORM_INT MATCHES "^MAC_CATALYST")
|
|
1091
|
+
set(CMAKE_FRAMEWORK_PATH
|
|
1092
|
+
${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks
|
|
1093
|
+
${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks
|
|
1094
|
+
${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks
|
|
1095
|
+
${CMAKE_FRAMEWORK_PATH} CACHE INTERNAL "")
|
|
1096
|
+
else()
|
|
1097
|
+
set(CMAKE_FRAMEWORK_PATH
|
|
1098
|
+
${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks
|
|
1099
|
+
${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks
|
|
1100
|
+
${CMAKE_FRAMEWORK_PATH} CACHE INTERNAL "")
|
|
1101
|
+
endif()
|
|
1102
|
+
|
|
1103
|
+
# By default, search both the specified iOS SDK and the remainder of the host filesystem.
|
|
1104
|
+
if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM)
|
|
1105
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH CACHE INTERNAL "")
|
|
1106
|
+
endif()
|
|
1107
|
+
if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
|
|
1108
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH CACHE INTERNAL "")
|
|
1109
|
+
endif()
|
|
1110
|
+
if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
|
|
1111
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH CACHE INTERNAL "")
|
|
1112
|
+
endif()
|
|
1113
|
+
if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
|
|
1114
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH CACHE INTERNAL "")
|
|
1115
|
+
endif()
|
|
1116
|
+
|
|
1117
|
+
#
|
|
1118
|
+
# Some helper-macros below to simplify and beautify the CMakeFile
|
|
1119
|
+
#
|
|
1120
|
+
|
|
1121
|
+
# This little macro lets you set any Xcode specific property.
|
|
1122
|
+
macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE XCODE_RELVERSION)
|
|
1123
|
+
set(XCODE_RELVERSION_I "${XCODE_RELVERSION}")
|
|
1124
|
+
if(XCODE_RELVERSION_I STREQUAL "All")
|
|
1125
|
+
set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} "${XCODE_VALUE}")
|
|
1126
|
+
else()
|
|
1127
|
+
set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY}[variant=${XCODE_RELVERSION_I}] "${XCODE_VALUE}")
|
|
1128
|
+
endif()
|
|
1129
|
+
endmacro(set_xcode_property)
|
|
1130
|
+
|
|
1131
|
+
# This macro lets you find executable programs on the host system.
|
|
1132
|
+
macro(find_host_package)
|
|
1133
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
1134
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
|
|
1135
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
|
|
1136
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE NEVER)
|
|
1137
|
+
set(_TOOLCHAIN_IOS ${IOS})
|
|
1138
|
+
set(IOS OFF)
|
|
1139
|
+
find_package(${ARGN})
|
|
1140
|
+
set(IOS ${_TOOLCHAIN_IOS})
|
|
1141
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH)
|
|
1142
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
|
|
1143
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
|
|
1144
|
+
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)
|
|
1145
|
+
endmacro(find_host_package)
|