cpp.js 1.0.0-beta.6 → 1.0.0
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/CHANGELOG.md +13 -0
- package/LICENSE +1 -1
- package/README.md +9 -26
- package/package.json +24 -14
- package/src/{functions/buildJS.js → actions/buildJs.js} +7 -6
- package/src/actions/buildWasm.js +68 -0
- package/src/actions/createInterface.js +128 -0
- package/src/actions/createLib.js +104 -0
- package/src/actions/createXCFramework.js +44 -0
- package/src/actions/getAllBridges.js +8 -0
- package/src/actions/getCmakeParameters.js +56 -0
- package/src/actions/getData.js +28 -0
- package/src/actions/getDependLibs.js +19 -0
- package/src/{functions → actions}/run.js +118 -64
- package/src/assets/CMakeLists.txt +14 -10
- package/src/assets/commonBridges.cpp +16 -0
- package/src/assets/dist.cmake +1 -1
- package/src/assets/ios.toolchain.cmake +4 -4
- package/src/bin.js +255 -96
- package/src/index.js +13 -63
- package/src/integration/getCppJsScript.js +91 -0
- package/src/integration/getDependFilePath.js +34 -0
- package/src/state/calculateDependencyParameters.js +64 -0
- package/src/state/index.js +81 -0
- package/src/state/loadConfig.js +104 -0
- package/src/utils/downloadAndExtractFile.js +36 -0
- package/src/utils/findFiles.js +5 -0
- package/src/utils/fixPackageName.js +7 -0
- package/src/utils/getAbsolutePath.js +14 -0
- package/src/utils/getCMakeListsFilePath.js +17 -0
- package/src/utils/getOsUserAndGroupId.js +1 -1
- package/src/utils/getParentPath.js +12 -0
- package/src/utils/hash.js +20 -0
- package/src/utils/loadJs.js +32 -0
- package/src/utils/loadJson.js +16 -0
- package/src/utils/pullDockerImage.js +2 -2
- package/src/utils/systemKeys.js +18 -0
- package/src/utils/writeJson.js +9 -0
- package/.mocharc.yaml +0 -3
- package/src/functions/createBridge.js +0 -37
- package/src/functions/createLib.js +0 -44
- package/src/functions/createWasm.js +0 -67
- package/src/functions/findOrCreateInterfaceFile.js +0 -68
- package/src/functions/finishBuild.js +0 -43
- package/src/functions/getCmakeParams.js +0 -106
- package/src/functions/getData.js +0 -36
- package/src/functions/getLibs.js +0 -33
- package/src/functions/specs/createBridge.spec.js +0 -51
- package/src/functions/specs/findOrCreateInterfaceFile.spec.js +0 -49
- package/src/utils/createTempDir.js +0 -15
- package/src/utils/findCMakeListsFile.js +0 -16
- package/src/utils/getBaseInfo.js +0 -15
- package/src/utils/getCliPath.js +0 -12
- package/src/utils/getConfig.js +0 -170
- package/src/utils/getDirName.js +0 -8
- package/src/utils/getPathInfo.js +0 -10
- package/src/utils/specs/findCMakeListsFile.spec.js +0 -34
- package/src/utils/specs/utils.spec.js +0 -81
- package/test/data/sample.cpp +0 -1
- package/test/data/sample.h +0 -10
- package/test/data/sample.i +0 -12
- package/test/data/sample2.ei +0 -12
- package/test/data/sample2.h +0 -10
- /package/{test/data/sample2.cpp → src/assets/cppjsEmptySource.cpp} +0 -0
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
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
|
|
6
|
-
import
|
|
5
|
+
import { getContentHash } from '../utils/hash.js';
|
|
6
|
+
import state from '../state/index.js';
|
|
7
7
|
|
|
8
|
-
const
|
|
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
|
|
19
|
+
const androidParamsArm64 = [
|
|
19
20
|
'-e', `AR=${t}/llvm-ar`,
|
|
20
21
|
'-e', `AS=${t}/llvm-as`,
|
|
21
|
-
'-e', `CC=${t}/${
|
|
22
|
-
'-e', `CXX=${t}/${
|
|
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
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
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 =
|
|
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',
|
|
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.${
|
|
122
|
-
`-DCMAKE_XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER=org.js.cpp.${
|
|
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
|
-
|
|
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='${
|
|
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.${
|
|
146
|
-
`-DCMAKE_XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER=org.js.cpp.${
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
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 ||
|
|
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
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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
|
-
|
|
236
|
+
...runnerParams,
|
|
208
237
|
'--user', getOsUserAndGroupId(),
|
|
209
|
-
'
|
|
210
|
-
|
|
211
|
-
'-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
...(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
+
}
|
package/src/assets/dist.cmake
CHANGED
|
@@ -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
|