cpp.js 1.0.0-beta.3 → 1.0.0-beta.31

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.
Files changed (60) hide show
  1. package/README.md +104 -0
  2. package/package.json +24 -14
  3. package/src/{functions/buildJS.js → actions/buildJs.js} +7 -6
  4. package/src/actions/buildWasm.js +68 -0
  5. package/src/actions/createInterface.js +128 -0
  6. package/src/actions/createLib.js +104 -0
  7. package/src/actions/createXCFramework.js +44 -0
  8. package/src/actions/getAllBridges.js +8 -0
  9. package/src/actions/getCmakeParameters.js +56 -0
  10. package/src/actions/getData.js +28 -0
  11. package/src/actions/getDependLibs.js +19 -0
  12. package/src/{functions → actions}/run.js +98 -58
  13. package/src/assets/CMakeLists.txt +14 -10
  14. package/src/assets/commonBridges.cpp +16 -0
  15. package/src/assets/dist.cmake +1 -1
  16. package/src/assets/ios.toolchain.cmake +4 -4
  17. package/src/bin.js +255 -96
  18. package/src/index.js +13 -63
  19. package/src/integration/getCppJsScript.js +91 -0
  20. package/src/integration/getDependFilePath.js +34 -0
  21. package/src/state/calculateDependencyParameters.js +64 -0
  22. package/src/state/index.js +81 -0
  23. package/src/state/loadConfig.js +103 -0
  24. package/src/utils/downloadAndExtractFile.js +36 -0
  25. package/src/utils/fixPackageName.js +7 -0
  26. package/src/utils/getAbsolutePath.js +14 -0
  27. package/src/utils/{findCMakeListsFile.js → getCMakeListsFilePath.js} +5 -4
  28. package/src/utils/getOsUserAndGroupId.js +1 -1
  29. package/src/utils/getParentPath.js +12 -0
  30. package/src/utils/hash.js +20 -0
  31. package/src/utils/loadJs.js +32 -0
  32. package/src/utils/loadJson.js +16 -0
  33. package/src/utils/pullDockerImage.js +2 -2
  34. package/src/utils/systemKeys.js +18 -0
  35. package/src/utils/writeJson.js +9 -0
  36. package/.mocharc.yaml +0 -3
  37. package/src/functions/createBridge.js +0 -37
  38. package/src/functions/createLib.js +0 -44
  39. package/src/functions/createWasm.js +0 -67
  40. package/src/functions/findOrCreateInterfaceFile.js +0 -68
  41. package/src/functions/finishBuild.js +0 -43
  42. package/src/functions/getCmakeParams.js +0 -106
  43. package/src/functions/getData.js +0 -36
  44. package/src/functions/getLibs.js +0 -33
  45. package/src/functions/specs/createBridge.spec.js +0 -51
  46. package/src/functions/specs/findOrCreateInterfaceFile.spec.js +0 -49
  47. package/src/utils/createTempDir.js +0 -15
  48. package/src/utils/getBaseInfo.js +0 -15
  49. package/src/utils/getCliPath.js +0 -12
  50. package/src/utils/getConfig.js +0 -170
  51. package/src/utils/getDirName.js +0 -8
  52. package/src/utils/getPathInfo.js +0 -10
  53. package/src/utils/specs/findCMakeListsFile.spec.js +0 -34
  54. package/src/utils/specs/utils.spec.js +0 -81
  55. package/test/data/sample.cpp +0 -1
  56. package/test/data/sample.h +0 -10
  57. package/test/data/sample.i +0 -12
  58. package/test/data/sample2.ei +0 -12
  59. package/test/data/sample2.h +0 -10
  60. /package/{test/data/sample2.cpp → src/assets/cppjsEmptySource.cpp} +0 -0
@@ -1,9 +1,9 @@
1
- import fs from 'fs';
2
- import { execFileSync } from 'child_process';
1
+ import { execFileSync } from 'node:child_process';
2
+ import fs from 'node:fs';
3
3
  import pullDockerImage, { getDockerImage } from '../utils/pullDockerImage.js';
4
4
  import getOsUserAndGroupId from '../utils/getOsUserAndGroupId.js';
5
- import getBaseInfo from '../utils/getBaseInfo.js';
6
- import getPathInfo from '../utils/getPathInfo.js';
5
+ import { getContentHash } from '../utils/hash.js';
6
+ import state from '../state/index.js';
7
7
 
8
8
  const CROSSCOMPILER = 'aarch64-linux-android33';
9
9
  const ANDROID_NDK = '/opt/android-sdk/ndk/25.2.9519653';
@@ -66,22 +66,17 @@ const iosParams = [
66
66
  '-e', `LDFLAGS="${IOS_HOST_FLAGS}"`,
67
67
  ]; */
68
68
 
69
- function getParentPath(path) {
70
- const pathArray = path.split('/');
71
- pathArray.pop();
72
- return pathArray.join('/');
73
- }
69
+ export default function run(program, params = [], platformPrefix = null, platform = null, dockerOptions = {}) {
70
+ const buildPath = platformPrefix ? `${state.config.paths.build}/${platformPrefix}/${platform}` : state.config.paths.build;
71
+ if (!fs.existsSync(buildPath)) {
72
+ fs.mkdirSync(buildPath, { recursive: true });
73
+ }
74
74
 
75
- export default function run(compiler, program, params = [], dockerOptions = {}) {
76
- const [basePlatform, ...arch] = (compiler.platform || 'unknown-unknown').split('-'); // Emscripten-x86_64, Android-arm64-v8a, iOS-iphoneos, iOS-iphonesimulator
75
+ const [basePlatform, ...arch] = (platform || 'unknown-unknown').split('-'); // Emscripten-x86_64, Android-arm64-v8a, iOS-iphoneos, iOS-iphonesimulator
77
76
  if (basePlatform !== 'iOS' || program !== null) {
78
77
  pullDockerImage();
79
78
  }
80
79
 
81
- const base = getBaseInfo(compiler.config.paths.base);
82
- const temp = getPathInfo(compiler.config.paths.temp, compiler.config.paths.base);
83
-
84
- const cMakeParentPath = getParentPath(compiler.config.paths.cmake);
85
80
  let dProgram = program;
86
81
  let dParams = params;
87
82
  let platformParams = [];
@@ -118,14 +113,14 @@ export default function run(compiler, program, params = [], dockerOptions = {})
118
113
  '-DFRAMEWORK=TRUE',
119
114
  '-DCMAKE_OSX_DEPLOYMENT_TARGET=13.0',
120
115
  '-DCMAKE_SYSTEM_NAME=iOS',
121
- `-DMACOSX_FRAMEWORK_IDENTIFIER=org.js.cpp.${compiler.config.general.name}`,
122
- `-DCMAKE_XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER=org.js.cpp.${compiler.config.general.name}`,
116
+ `-DMACOSX_FRAMEWORK_IDENTIFIER=org.js.cpp.${state.config.general.name}`,
117
+ `-DCMAKE_XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER=org.js.cpp.${state.config.general.name}`,
123
118
  `-DCMAKE_OSX_SYSROOT='${arch[0] === 'iphoneos' ? iosSdkPath : iosSimSdkPath}'`,
124
119
  `-DCMAKE_OSX_ARCHITECTURES=${arch[0] === 'iphoneos' ? 'arm64;arm64e' : 'arm64;arm64e;x86_64'}`,
125
120
  `-DCMAKE_C_FLAGS=${arch[0] === 'iphoneos' ? '-fembed-bitcode' : '-fembed-bitcode-marker'}`,
126
121
  `-DCMAKE_CXX_FLAGS=${arch[0] === 'iphoneos' ? '-fembed-bitcode' : '-fembed-bitcode-marker'}`,
127
122
  '-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY=\'iPhone Developer\'',
128
- '-DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=7ZZLDWBUVT',
123
+ `-DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=${state.config.system.XCODE_DEVELOPMENT_TEAM}`,
129
124
  ];
130
125
  }
131
126
  } else if (dProgram === 'ios-cmake') {
@@ -134,7 +129,7 @@ export default function run(compiler, program, params = [], dockerOptions = {})
134
129
  if (dParams[0] !== '--build' && dParams[0] !== '--install') {
135
130
  dParams = [
136
131
  ...dParams,
137
- `-DCMAKE_TOOLCHAIN_FILE='${compiler.config.paths.cli}/assets/ios.toolchain.cmake'`,
132
+ `-DCMAKE_TOOLCHAIN_FILE='${state.config.paths.cli}/assets/ios.toolchain.cmake'`,
138
133
  `-DPLATFORM=${arch[0] === 'iphoneos' ? 'OS64' : 'SIMULATORARM64'}`,
139
134
  `-DARCHS=${arch[0] === 'iphoneos' ? 'arm64;arm64e' : 'arm64;arm64e;x86_64'}`,
140
135
  '-DENABLE_BITCODE=TRUE',
@@ -142,14 +137,14 @@ export default function run(compiler, program, params = [], dockerOptions = {})
142
137
  '-DFRAMEWORK=TRUE',
143
138
  '-DCMAKE_OSX_DEPLOYMENT_TARGET=13.0',
144
139
  '-DCMAKE_SYSTEM_NAME=iOS',
145
- `-DMACOSX_FRAMEWORK_IDENTIFIER=org.js.cpp.${compiler.config.general.name}`,
146
- `-DCMAKE_XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER=org.js.cpp.${compiler.config.general.name}`,
140
+ `-DMACOSX_FRAMEWORK_IDENTIFIER=org.js.cpp.${state.config.general.name}`,
141
+ `-DCMAKE_XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER=org.js.cpp.${state.config.general.name}`,
147
142
  `-DCMAKE_OSX_SYSROOT='${arch[0] === 'iphoneos' ? iosSdkPath : iosSimSdkPath}'`,
148
143
  `-DCMAKE_OSX_ARCHITECTURES=${arch[0] === 'iphoneos' ? 'arm64;arm64e' : 'arm64;arm64e;x86_64'}`,
149
144
  `-DCMAKE_C_FLAGS=${arch[0] === 'iphoneos' ? '-fembed-bitcode' : '-fembed-bitcode-marker'}`,
150
145
  `-DCMAKE_CXX_FLAGS=${arch[0] === 'iphoneos' ? '-fembed-bitcode' : '-fembed-bitcode-marker'}`,
151
146
  '-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY=\'iPhone Developer\'',
152
- '-DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=7ZZLDWBUVT',
147
+ `-DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=${state.config.system.XCODE_DEVELOPMENT_TEAM}`,
153
148
  ];
154
149
  }
155
150
  }
@@ -157,64 +152,109 @@ export default function run(compiler, program, params = [], dockerOptions = {})
157
152
  default:
158
153
  }
159
154
  }
160
- if (basePlatform === 'iOS' && program === null) {
155
+
156
+ const env = {};
157
+ let runner = 'DOCKER';
158
+ if ((basePlatform === 'iOS' && program === null) || state.config.system.RUNNER === 'LOCAL') {
159
+ runner = 'LOCAL';
160
+ }
161
+
162
+ if (runner === 'LOCAL') {
161
163
  const allowedEnv = [
162
164
  '^PWD$', '^SHELL$', '^LC_CTYPE$', '^PATH$', '^HOME$', '^TMPDIR$', '^USER$',
163
165
  '^PODS_*', '^CONFIGURATION_BUILD_DIR$', '^UNLOCALIZED_RESOURCES_FOLDER_PATH$',
164
166
  ];
165
- const env = {};
166
167
  Object.entries(process.env).forEach(([key, value]) => {
167
168
  if (allowedEnv.some((e) => key.match(e))) {
168
169
  env[key] = value;
169
170
  }
170
171
  });
171
- const pParams = [...platformParams, ...(dockerOptions.params || [])];
172
- for (let i = 0; i < pParams.length; i += 2) {
173
- if (pParams[i] === '-e') {
174
- const [key, ...rest] = pParams[i + 1].split('=');
175
- const value = rest.join('=');
176
- if (['CFLAGS', 'CXXFLAGS', 'LDFLAGS'].includes(key)) {
177
- let v = value;
178
- if (v.startsWith('\'') || v.startsWith('"')) {
179
- v = v.substring(1, v.length - 1);
180
- }
181
- if (env[key]) env[key] += ` ${v}`;
182
- else env[key] = v;
183
- } else {
184
- env[key] = value;
172
+ }
173
+
174
+ const pParams = [...platformParams, ...(dockerOptions.params || [])];
175
+ for (let i = 0; i < pParams.length; i += 2) {
176
+ if (pParams[i] === '-e') {
177
+ const [key, ...rest] = pParams[i + 1].split('=');
178
+ const value = rest.join('=');
179
+ if (['CFLAGS', 'CXXFLAGS', 'CPPFLAGS', 'LDFLAGS'].includes(key)) {
180
+ let v = value;
181
+ if (v.startsWith('\'') || v.startsWith('"')) {
182
+ v = v.substring(1, v.length - 1);
185
183
  }
184
+ if (env[key]) env[key] += ` ${v}`;
185
+ else env[key] = v;
186
+ } else {
187
+ env[key] = value;
186
188
  }
187
189
  }
190
+ }
188
191
 
192
+ let fileExecParams;
193
+ if (runner === 'LOCAL') {
189
194
  env.PATH = `/opt/homebrew/bin:${env.PATH}`;
190
195
 
191
196
  const options = {
192
- cwd: dockerOptions.workdir || `/tmp/cppjs/live/${temp.relative}`,
193
- stdio: dockerOptions.console ? 'inherit' : 'pipe',
197
+ cwd: dockerOptions.workdir || buildPath,
198
+ stdio: dockerOptions.console ? 'inherit' : ['ignore', 'pipe', 'pipe'],
194
199
  env,
195
200
  };
201
+ fileExecParams = [dProgram, dParams, options];
202
+ } else if (runner === 'DOCKER') {
203
+ const dockerEnv = [];
204
+ Object.entries(env).forEach(([key, value]) => {
205
+ dockerEnv.push('-e', `${key}=${value}`);
206
+ });
207
+ const options = { cwd: buildPath, stdio: dockerOptions.console ? 'inherit' : ['ignore', 'pipe', 'pipe'] };
196
208
 
197
- if (!fs.existsSync('/tmp/cppjs')) fs.mkdirSync('/tmp/cppjs');
198
- if (fs.existsSync('/tmp/cppjs/live')) fs.unlinkSync('/tmp/cppjs/live');
199
- fs.symlinkSync(base.withoutSlash, '/tmp/cppjs/live');
200
- if (!fs.existsSync('/tmp/cppjs/cli')) fs.symlinkSync(compiler.config.paths.cli, '/tmp/cppjs/cli');
201
- if (!fs.existsSync('/tmp/cppjs/cmake')) fs.symlinkSync(cMakeParentPath, '/tmp/cppjs/cmake');
209
+ let runnerParams = [];
210
+ let imageOrContainer = null;
211
+ if (state.config.system.RUNNER === 'DOCKER_RUN') {
212
+ imageOrContainer = getDockerImage();
213
+ runnerParams = ['run', '--rm', '-v', `${state.config.paths.base}:/tmp/cppjs/live`];
214
+ } else if (state.config.system.RUNNER === 'DOCKER_EXEC') {
215
+ imageOrContainer = `${getDockerImage()}-${getContentHash(state.config.paths.base)}`.replace('/', '-').replace(':', '-');
216
+ runnerParams = ['exec'];
217
+ } else {
218
+ throw new Error(`The runner ${state.config.system.RUNNER} is invalid.`);
219
+ }
202
220
 
203
- execFileSync(dProgram, dParams, options);
204
- } else {
205
- const options = { cwd: temp.absolute, stdio: dockerOptions.console ? 'inherit' : 'pipe' };
206
221
  const args = [
207
- 'run',
222
+ ...runnerParams,
208
223
  '--user', getOsUserAndGroupId(),
209
- '-v', `${base.withoutSlash}:/tmp/cppjs/live`,
210
- '-v', `${compiler.config.paths.cli}:/tmp/cppjs/cli`,
211
- '-v', `${cMakeParentPath}:/tmp/cppjs/cmake`,
212
- '--workdir', dockerOptions.workdir || `/tmp/cppjs/live/${temp.relative}`,
213
- ...platformParams,
214
- ...(dockerOptions.params || []),
215
- getDockerImage(),
216
- dProgram, ...dParams,
224
+ '--workdir', replaceBasePathForDocker(dockerOptions.workdir || buildPath),
225
+ ...replaceBasePathForDocker(dockerEnv),
226
+ // '-e', replaceBasePathForDocker(`CCACHE_DIR=${state.config.paths.build}/ccache`),
227
+ imageOrContainer,
228
+ replaceBasePathForDocker(dProgram),
229
+ ...replaceBasePathForDocker(dParams),
217
230
  ];
218
- execFileSync('docker', args, options);
231
+ fileExecParams = ['docker', args, options];
232
+ } else {
233
+ throw new Error(`The runner ${state.config.system.RUNNER} or command is invalid.`);
234
+ }
235
+
236
+ try {
237
+ execFileSync(...fileExecParams);
238
+ } catch (e) {
239
+ console.log(e?.stdout?.toString() || 'stdout is empty');
240
+ console.error(e?.stderr?.toString() || 'stderr is empty');
241
+ console.error('An error occurred while running the application. Please check the logs for more details.');
242
+ process.exit();
243
+ }
244
+ }
245
+
246
+ function replaceBasePathForDocker(data) {
247
+ if (typeof data === 'string' || data instanceof String) {
248
+ return data.replaceAll(state.config.paths.base, '/tmp/cppjs/live');
249
+ }
250
+ if (Array.isArray(data)) {
251
+ return data.map((d) => replaceBasePathForDocker(d));
252
+ }
253
+ if (typeof value === 'object' && data !== null) {
254
+ const newData = {};
255
+ Object.entries(data).forEach(([key, value]) => {
256
+ newData[key] = replaceBasePathForDocker(value);
257
+ });
219
258
  }
259
+ return data;
220
260
  }
@@ -26,10 +26,12 @@ if (BUILD_SOURCE)
26
26
  endif(BUILD_SOURCE)
27
27
 
28
28
  if (BUILD_BRIDGE)
29
- file(GLOB BRIDGE_SRC_FILES "${BRIDGE_DIR}/*.i.cpp")
29
+ file(GLOB BRIDGE_SRC_FILES "${BRIDGE_DIR}/*.i.cpp;${EXTERNAL_BRIDGE_GLOB}")
30
30
  endif(BUILD_BRIDGE)
31
31
 
32
- set(SRC_FILES "${BUILD_SRC_FILES}" "${BRIDGE_SRC_FILES}")
32
+ file(GLOB_RECURSE EXTERNAL_SRC_FILES ${EXTERNAL_NATIVE_GLOB})
33
+
34
+ set(SRC_FILES "${BUILD_SRC_FILES}" "${BRIDGE_SRC_FILES}" "${EXTERNAL_SRC_FILES}")
33
35
  add_library("${PROJECT_NAME}" "${BUILD_TYPE}" ${SRC_FILES})
34
36
 
35
37
  set(EXTRA_LINK_LIBRARIES "")
@@ -44,15 +46,17 @@ endif()
44
46
  file(GLOB_RECURSE HEADER_FILES ${HEADER_GLOB})
45
47
  target_include_directories("${PROJECT_NAME}" PUBLIC "${HEADER_DIR}")
46
48
 
49
+ install(TARGETS "${PROJECT_NAME}" DESTINATION "lib")
50
+ if(NOT "${HEADER_FILES}" STREQUAL "")
51
+ target_sources("${PROJECT_NAME}"
52
+ PUBLIC FILE_SET HEADERS
53
+ BASE_DIRS "${HEADER_DIR}"
54
+ FILES "${HEADER_FILES}")
55
+ install(TARGETS "${PROJECT_NAME}" FILE_SET HEADERS DESTINATION "include")
56
+ endif()
57
+
47
58
  if (BUILD_SOURCE)
48
- install(TARGETS "${PROJECT_NAME}" DESTINATION "lib")
49
- if(NOT "${HEADER_FILES}" STREQUAL "")
50
- target_sources("${PROJECT_NAME}"
51
- PUBLIC FILE_SET HEADERS
52
- BASE_DIRS "${HEADER_DIR}"
53
- FILES "${HEADER_FILES}")
54
- install(TARGETS "${PROJECT_NAME}" FILE_SET HEADERS DESTINATION "include")
55
- endif()
59
+
56
60
  endif(BUILD_SOURCE)
57
61
  unset(BUILD_SOURCE CACHE)
58
62
 
@@ -0,0 +1,16 @@
1
+ #include <emscripten/bind.h>
2
+
3
+ EMSCRIPTEN_BINDINGS(CommonBridges) {
4
+ emscripten::register_vector<char>("VectorChar");
5
+ emscripten::register_vector<short>("VectorShort");
6
+ emscripten::register_vector<int>("VectorInt");
7
+ emscripten::register_vector<int64_t>("VectorInt64");
8
+ emscripten::register_vector<float>("VectorFloat");
9
+ emscripten::register_vector<double>("VectorDouble");
10
+ emscripten::register_vector<std::string>("VectorString");
11
+
12
+ emscripten::register_map<int,int>("MapIntInt");
13
+ emscripten::register_map<int,std::string>("MapIntString");
14
+ emscripten::register_map<std::string,std::string>("MapStringString");
15
+ emscripten::register_map<std::string,int>("MapStringInt");
16
+ }
@@ -9,7 +9,7 @@ if(ANDROID)
9
9
  set(PACKAGE_DIR "${PROJECT_SOURCE_DIR}/${PACKAGE_HOST}/lib")
10
10
  elseif(APPLE)
11
11
  if (CMAKE_SYSTEM_NAME STREQUAL "iOS")
12
- set(PACKAGE_DIR "${PROJECT_SOURCE_DIR}")
12
+ set(PACKAGE_DIR "${PROJECT_SOURCE_DIR}/../..")
13
13
  else()
14
14
  set(PACKAGE_HOST "${CMAKE_SYSTEM_NAME}-${CMAKE_HOST_SYSTEM_PROCESSOR}")
15
15
  set(PACKAGE_DIR "${PROJECT_SOURCE_DIR}/${PACKAGE_HOST}/lib")
@@ -168,7 +168,7 @@ list(APPEND _supported_platforms
168
168
  "TVOS" "TVOSCOMBINED" "SIMULATOR_TVOS" "SIMULATORARM64_TVOS"
169
169
  "WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS"
170
170
  "MAC" "MAC_ARM64" "MAC_UNIVERSAL"
171
- "VISIONOS" "SIMULATOR_VISIONOS" "VISIONOSCOMBINED"
171
+ "VISIONOS" "SIMULATOR_VISIONOS" "VISIONOSCOMBINED"
172
172
  "MAC_CATALYST" "MAC_CATALYST_ARM64" "MAC_CATALYST_UNIVERSAL")
173
173
 
174
174
  # Cache what generator is used
@@ -316,7 +316,7 @@ if(PLATFORM_INT STREQUAL "OS")
316
316
  set(ARCHS armv7 armv7s arm64)
317
317
  set(APPLE_TARGET_TRIPLE_INT arm-apple-ios${DEPLOYMENT_TARGET})
318
318
  else()
319
- set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
319
+ set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
320
320
  endif()
321
321
  elseif(PLATFORM_INT STREQUAL "OS64")
322
322
  set(SDK_NAME iphoneos)
@@ -1049,7 +1049,7 @@ set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
1049
1049
  )
1050
1050
 
1051
1051
  if(NAMED_LANGUAGE_SUPPORT_INT)
1052
- list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
1052
+ list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
1053
1053
  CMAKE_OBJC_FLAGS
1054
1054
  CMAKE_OBJC_DEBUG
1055
1055
  CMAKE_OBJC_MINSIZEREL
@@ -1087,7 +1087,7 @@ IF(NOT DEFINED CMAKE_FIND_FRAMEWORK)
1087
1087
  ENDIF(NOT DEFINED CMAKE_FIND_FRAMEWORK)
1088
1088
 
1089
1089
  # Set up the default search directories for frameworks.
1090
- if(PLATFORM_INT MATCHES "^MAC_CATALYST")
1090
+ if(PLATFORM_INT MATCHES "^MAC_CATALYST")
1091
1091
  set(CMAKE_FRAMEWORK_PATH
1092
1092
  ${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks
1093
1093
  ${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks