cpp.js 1.0.0-beta.7 → 1.0.1

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 (64) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE +1 -1
  3. package/README.md +9 -26
  4. package/package.json +23 -23
  5. package/src/{functions/buildJS.js → actions/buildJs.js} +7 -6
  6. package/src/actions/buildWasm.js +68 -0
  7. package/src/actions/createInterface.js +128 -0
  8. package/src/actions/createLib.js +104 -0
  9. package/src/actions/createXCFramework.js +44 -0
  10. package/src/actions/getAllBridges.js +8 -0
  11. package/src/actions/getCmakeParameters.js +56 -0
  12. package/src/actions/getData.js +28 -0
  13. package/src/actions/getDependLibs.js +19 -0
  14. package/src/{functions → actions}/run.js +118 -64
  15. package/src/assets/CMakeLists.txt +14 -10
  16. package/src/assets/commonBridges.cpp +16 -0
  17. package/src/assets/dist.cmake +1 -1
  18. package/src/assets/ios.toolchain.cmake +4 -4
  19. package/src/bin.js +255 -96
  20. package/src/index.js +13 -63
  21. package/src/integration/getCppJsScript.js +91 -0
  22. package/src/integration/getDependFilePath.js +37 -0
  23. package/src/state/calculateDependencyParameters.js +64 -0
  24. package/src/state/index.js +81 -0
  25. package/src/state/loadConfig.js +104 -0
  26. package/src/utils/downloadAndExtractFile.js +36 -0
  27. package/src/utils/findFiles.js +5 -0
  28. package/src/utils/fixPackageName.js +7 -0
  29. package/src/utils/getAbsolutePath.js +14 -0
  30. package/src/utils/getCMakeListsFilePath.js +17 -0
  31. package/src/utils/getOsUserAndGroupId.js +1 -1
  32. package/src/utils/getParentPath.js +12 -0
  33. package/src/utils/hash.js +20 -0
  34. package/src/utils/loadJs.js +32 -0
  35. package/src/utils/loadJson.js +16 -0
  36. package/src/utils/pullDockerImage.js +2 -2
  37. package/src/utils/systemKeys.js +18 -0
  38. package/src/utils/writeJson.js +9 -0
  39. package/.mocharc.yaml +0 -3
  40. package/src/functions/createBridge.js +0 -37
  41. package/src/functions/createLib.js +0 -44
  42. package/src/functions/createWasm.js +0 -67
  43. package/src/functions/findOrCreateInterfaceFile.js +0 -68
  44. package/src/functions/finishBuild.js +0 -43
  45. package/src/functions/getCmakeParams.js +0 -106
  46. package/src/functions/getData.js +0 -36
  47. package/src/functions/getLibs.js +0 -33
  48. package/src/functions/specs/createBridge.spec.js +0 -51
  49. package/src/functions/specs/findOrCreateInterfaceFile.spec.js +0 -49
  50. package/src/utils/createTempDir.js +0 -15
  51. package/src/utils/findCMakeListsFile.js +0 -16
  52. package/src/utils/getBaseInfo.js +0 -15
  53. package/src/utils/getCliPath.js +0 -12
  54. package/src/utils/getConfig.js +0 -170
  55. package/src/utils/getDirName.js +0 -8
  56. package/src/utils/getPathInfo.js +0 -10
  57. package/src/utils/specs/findCMakeListsFile.spec.js +0 -34
  58. package/src/utils/specs/utils.spec.js +0 -81
  59. package/test/data/sample.cpp +0 -1
  60. package/test/data/sample.h +0 -10
  61. package/test/data/sample.i +0 -12
  62. package/test/data/sample2.ei +0 -12
  63. package/test/data/sample2.h +0 -10
  64. /package/{test/data/sample2.cpp → src/assets/cppjsEmptySource.cpp} +0 -0
@@ -1,11 +1,12 @@
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
- const CROSSCOMPILER = 'aarch64-linux-android33';
8
+ const CROSSCOMPILER_ARM64 = 'aarch64-linux-android33';
9
+ const CROSSCOMPILER_x86_64 = 'x86_64-linux-android33';
9
10
  const ANDROID_NDK = '/opt/android-sdk/ndk/25.2.9519653';
10
11
  const t = `${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin`;
11
12
  const t2 = `${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64`;
@@ -15,11 +16,23 @@ const iosBinPath = `${iOSDevPath}/Toolchains/XcodeDefault.xctoolchain/usr/bin`;
15
16
  const iosSdkPath = `${iOSDevPath}/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk`;
16
17
  const iosSimSdkPath = `${iOSDevPath}/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk`;
17
18
 
18
- const androidParams = [
19
+ const androidParamsArm64 = [
19
20
  '-e', `AR=${t}/llvm-ar`,
20
21
  '-e', `AS=${t}/llvm-as`,
21
- '-e', `CC=${t}/${CROSSCOMPILER}-clang`,
22
- '-e', `CXX=${t}/${CROSSCOMPILER}-clang++`,
22
+ '-e', `CC=${t}/${CROSSCOMPILER_ARM64}-clang`,
23
+ '-e', `CXX=${t}/${CROSSCOMPILER_ARM64}-clang++`,
24
+ '-e', `LD=${t}/ld`,
25
+ '-e', `RANLIB=${t}/llvm-ranlib`,
26
+ '-e', `STRIP=${t}/llvm-strip`,
27
+ '-e', `NM=${t}/nm`,
28
+ '-e', `CFLAGS=--sysroot=${t2}/sysroot`,
29
+ ];
30
+
31
+ const androidParamsX86_64 = [
32
+ '-e', `AR=${t}/llvm-ar`,
33
+ '-e', `AS=${t}/llvm-as`,
34
+ '-e', `CC=${t}/${CROSSCOMPILER_x86_64}-clang`,
35
+ '-e', `CXX=${t}/${CROSSCOMPILER_x86_64}-clang++`,
23
36
  '-e', `LD=${t}/ld`,
24
37
  '-e', `RANLIB=${t}/llvm-ranlib`,
25
38
  '-e', `STRIP=${t}/llvm-strip`,
@@ -66,22 +79,17 @@ const iosParams = [
66
79
  '-e', `LDFLAGS="${IOS_HOST_FLAGS}"`,
67
80
  ]; */
68
81
 
69
- function getParentPath(path) {
70
- const pathArray = path.split('/');
71
- pathArray.pop();
72
- return pathArray.join('/');
73
- }
82
+ export default function run(program, params = [], platformPrefix = null, platform = null, dockerOptions = {}) {
83
+ const buildPath = platformPrefix ? `${state.config.paths.build}/${platformPrefix}/${platform}` : state.config.paths.build;
84
+ if (!fs.existsSync(buildPath)) {
85
+ fs.mkdirSync(buildPath, { recursive: true });
86
+ }
74
87
 
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
88
+ const [basePlatform, ...arch] = (platform || 'unknown-unknown').split('-'); // Emscripten-x86_64, Android-arm64-v8a, iOS-iphoneos, iOS-iphonesimulator
77
89
  if (basePlatform !== 'iOS' || program !== null) {
78
90
  pullDockerImage();
79
91
  }
80
92
 
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
93
  let dProgram = program;
86
94
  let dParams = params;
87
95
  let platformParams = [];
@@ -96,11 +104,12 @@ export default function run(compiler, program, params = [], dockerOptions = {})
96
104
  break;
97
105
  case 'Android':
98
106
  [dProgram, ...dParams] = params;
99
- platformParams = androidParams;
107
+ platformParams = arch[0] === 'x86_64' ? androidParamsX86_64 : androidParamsArm64;
100
108
  if (dProgram === 'cmake') {
101
109
  dParams = [
102
110
  ...dParams,
103
- '-DCMAKE_SYSTEM_NAME=Android', '-DCMAKE_SYSTEM_VERSION=33', '-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a',
111
+ '-DCMAKE_SYSTEM_NAME=Android', '-DCMAKE_SYSTEM_VERSION=33',
112
+ `-DCMAKE_ANDROID_ARCH_ABI=${arch[0] === 'x86_64' ? 'x86_64' : 'arm64-v8a'}`,
104
113
  `-DCMAKE_ANDROID_NDK=${ANDROID_NDK}`,
105
114
  ];
106
115
  }
@@ -118,14 +127,14 @@ export default function run(compiler, program, params = [], dockerOptions = {})
118
127
  '-DFRAMEWORK=TRUE',
119
128
  '-DCMAKE_OSX_DEPLOYMENT_TARGET=13.0',
120
129
  '-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}`,
130
+ `-DMACOSX_FRAMEWORK_IDENTIFIER=org.js.cpp.${state.config.general.name}`,
131
+ `-DCMAKE_XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER=org.js.cpp.${state.config.general.name}`,
123
132
  `-DCMAKE_OSX_SYSROOT='${arch[0] === 'iphoneos' ? iosSdkPath : iosSimSdkPath}'`,
124
133
  `-DCMAKE_OSX_ARCHITECTURES=${arch[0] === 'iphoneos' ? 'arm64;arm64e' : 'arm64;arm64e;x86_64'}`,
125
134
  `-DCMAKE_C_FLAGS=${arch[0] === 'iphoneos' ? '-fembed-bitcode' : '-fembed-bitcode-marker'}`,
126
135
  `-DCMAKE_CXX_FLAGS=${arch[0] === 'iphoneos' ? '-fembed-bitcode' : '-fembed-bitcode-marker'}`,
127
136
  '-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY=\'iPhone Developer\'',
128
- '-DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=7ZZLDWBUVT',
137
+ `-DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=${state.config.system.XCODE_DEVELOPMENT_TEAM}`,
129
138
  ];
130
139
  }
131
140
  } else if (dProgram === 'ios-cmake') {
@@ -134,7 +143,7 @@ export default function run(compiler, program, params = [], dockerOptions = {})
134
143
  if (dParams[0] !== '--build' && dParams[0] !== '--install') {
135
144
  dParams = [
136
145
  ...dParams,
137
- `-DCMAKE_TOOLCHAIN_FILE='${compiler.config.paths.cli}/assets/ios.toolchain.cmake'`,
146
+ `-DCMAKE_TOOLCHAIN_FILE='${state.config.paths.cli}/assets/ios.toolchain.cmake'`,
138
147
  `-DPLATFORM=${arch[0] === 'iphoneos' ? 'OS64' : 'SIMULATORARM64'}`,
139
148
  `-DARCHS=${arch[0] === 'iphoneos' ? 'arm64;arm64e' : 'arm64;arm64e;x86_64'}`,
140
149
  '-DENABLE_BITCODE=TRUE',
@@ -142,14 +151,14 @@ export default function run(compiler, program, params = [], dockerOptions = {})
142
151
  '-DFRAMEWORK=TRUE',
143
152
  '-DCMAKE_OSX_DEPLOYMENT_TARGET=13.0',
144
153
  '-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}`,
154
+ `-DMACOSX_FRAMEWORK_IDENTIFIER=org.js.cpp.${state.config.general.name}`,
155
+ `-DCMAKE_XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER=org.js.cpp.${state.config.general.name}`,
147
156
  `-DCMAKE_OSX_SYSROOT='${arch[0] === 'iphoneos' ? iosSdkPath : iosSimSdkPath}'`,
148
157
  `-DCMAKE_OSX_ARCHITECTURES=${arch[0] === 'iphoneos' ? 'arm64;arm64e' : 'arm64;arm64e;x86_64'}`,
149
158
  `-DCMAKE_C_FLAGS=${arch[0] === 'iphoneos' ? '-fembed-bitcode' : '-fembed-bitcode-marker'}`,
150
159
  `-DCMAKE_CXX_FLAGS=${arch[0] === 'iphoneos' ? '-fembed-bitcode' : '-fembed-bitcode-marker'}`,
151
160
  '-DCMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY=\'iPhone Developer\'',
152
- '-DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=7ZZLDWBUVT',
161
+ `-DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=${state.config.system.XCODE_DEVELOPMENT_TEAM}`,
153
162
  ];
154
163
  }
155
164
  }
@@ -157,64 +166,109 @@ export default function run(compiler, program, params = [], dockerOptions = {})
157
166
  default:
158
167
  }
159
168
  }
160
- if (basePlatform === 'iOS' && program === null) {
169
+
170
+ const env = {};
171
+ let runner = 'DOCKER';
172
+ if ((basePlatform === 'iOS' && program === null) || state.config.system.RUNNER === 'LOCAL') {
173
+ runner = 'LOCAL';
174
+ }
175
+
176
+ if (runner === 'LOCAL') {
161
177
  const allowedEnv = [
162
178
  '^PWD$', '^SHELL$', '^LC_CTYPE$', '^PATH$', '^HOME$', '^TMPDIR$', '^USER$',
163
179
  '^PODS_*', '^CONFIGURATION_BUILD_DIR$', '^UNLOCALIZED_RESOURCES_FOLDER_PATH$',
164
180
  ];
165
- const env = {};
166
181
  Object.entries(process.env).forEach(([key, value]) => {
167
182
  if (allowedEnv.some((e) => key.match(e))) {
168
183
  env[key] = value;
169
184
  }
170
185
  });
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;
186
+ }
187
+
188
+ const pParams = [...platformParams, ...(dockerOptions.params || [])];
189
+ for (let i = 0; i < pParams.length; i += 2) {
190
+ if (pParams[i] === '-e') {
191
+ const [key, ...rest] = pParams[i + 1].split('=');
192
+ const value = rest.join('=');
193
+ if (['CFLAGS', 'CXXFLAGS', 'CPPFLAGS', 'LDFLAGS'].includes(key)) {
194
+ let v = value;
195
+ if (v.startsWith('\'') || v.startsWith('"')) {
196
+ v = v.substring(1, v.length - 1);
185
197
  }
198
+ if (env[key]) env[key] += ` ${v}`;
199
+ else env[key] = v;
200
+ } else {
201
+ env[key] = value;
186
202
  }
187
203
  }
204
+ }
188
205
 
206
+ let fileExecParams;
207
+ if (runner === 'LOCAL') {
189
208
  env.PATH = `/opt/homebrew/bin:${env.PATH}`;
190
209
 
191
210
  const options = {
192
- cwd: dockerOptions.workdir || `/tmp/cppjs/live/${temp.relative}`,
193
- stdio: dockerOptions.console ? 'inherit' : 'pipe',
211
+ cwd: dockerOptions.workdir || buildPath,
212
+ stdio: dockerOptions.console ? 'inherit' : ['ignore', 'pipe', 'pipe'],
194
213
  env,
195
214
  };
215
+ fileExecParams = [dProgram, dParams, options];
216
+ } else if (runner === 'DOCKER') {
217
+ const dockerEnv = [];
218
+ Object.entries(env).forEach(([key, value]) => {
219
+ dockerEnv.push('-e', `${key}=${value}`);
220
+ });
221
+ const options = { cwd: buildPath, stdio: dockerOptions.console ? 'inherit' : ['ignore', 'pipe', 'pipe'] };
196
222
 
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');
223
+ let runnerParams = [];
224
+ let imageOrContainer = null;
225
+ if (state.config.system.RUNNER === 'DOCKER_RUN') {
226
+ imageOrContainer = getDockerImage();
227
+ runnerParams = ['run', '--rm', '-v', `${state.config.paths.base}:/tmp/cppjs/live`];
228
+ } else if (state.config.system.RUNNER === 'DOCKER_EXEC') {
229
+ imageOrContainer = `${getDockerImage()}-${getContentHash(state.config.paths.base)}`.replace('/', '-').replace(':', '-');
230
+ runnerParams = ['exec'];
231
+ } else {
232
+ throw new Error(`The runner ${state.config.system.RUNNER} is invalid.`);
233
+ }
202
234
 
203
- execFileSync(dProgram, dParams, options);
204
- } else {
205
- const options = { cwd: temp.absolute, stdio: dockerOptions.console ? 'inherit' : 'pipe' };
206
235
  const args = [
207
- 'run',
236
+ ...runnerParams,
208
237
  '--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,
238
+ '--workdir', replaceBasePathForDocker(dockerOptions.workdir || buildPath),
239
+ ...replaceBasePathForDocker(dockerEnv),
240
+ // '-e', replaceBasePathForDocker(`CCACHE_DIR=${state.config.paths.build}/ccache`),
241
+ imageOrContainer,
242
+ replaceBasePathForDocker(dProgram),
243
+ ...replaceBasePathForDocker(dParams),
217
244
  ];
218
- execFileSync('docker', args, options);
245
+ fileExecParams = ['docker', args, options];
246
+ } else {
247
+ throw new Error(`The runner ${state.config.system.RUNNER} or command is invalid.`);
248
+ }
249
+
250
+ try {
251
+ execFileSync(...fileExecParams);
252
+ } catch (e) {
253
+ console.log(e?.stdout?.toString() || 'stdout is empty');
254
+ console.error(e?.stderr?.toString() || 'stderr is empty');
255
+ console.error('An error occurred while running the application. Please check the logs for more details.');
256
+ process.exit();
257
+ }
258
+ }
259
+
260
+ function replaceBasePathForDocker(data) {
261
+ if (typeof data === 'string' || data instanceof String) {
262
+ return data.replaceAll(state.config.paths.base, '/tmp/cppjs/live');
263
+ }
264
+ if (Array.isArray(data)) {
265
+ return data.map((d) => replaceBasePathForDocker(d));
266
+ }
267
+ if (typeof value === 'object' && data !== null) {
268
+ const newData = {};
269
+ Object.entries(data).forEach(([key, value]) => {
270
+ newData[key] = replaceBasePathForDocker(value);
271
+ });
219
272
  }
273
+ return data;
220
274
  }
@@ -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