mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-16 21:00:14 +00:00
* initial commit for Node.js binding * add c++ code * add inference session impl * e2e working * add settings.json * add test data * adjust binding declaration * refine tensor constructor declaration * update tests * enable onnx tests * simply refine readme * refine cpp impl * refine tests * formatting * add linting * move bin folder * fix linux build * manually update test filter list * update C++ API headers: fix crash in release build * make (manually) prebuild work * add test into prepack script * specify prebuild runtime type (N-API) * build.ts: update rebuild and include regex * fix lazy load on electron.js * update dev version, git link and binary host * support session options and run options * bump dev version * update README * add 1 example * move folder * adjust path * update document for examples * rename example 01 * add example 02 * add session option: log severity level * add example 04 * resolve comments * fix typo * remove double guard in header files * add copyright banner * move BUILD outside from README * consume test filter list from onnxruntime
51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
import {execSync, spawnSync} from 'child_process';
|
|
import * as fs from 'fs-extra';
|
|
import * as path from 'path';
|
|
|
|
// command line flags
|
|
const DEBUG = process.argv.slice(2).indexOf('--debug') !== -1;
|
|
const REBUILD = process.argv.slice(2).indexOf('--rebuild') !== -1;
|
|
const USE_PREBUILD = process.argv.slice(2).indexOf('--prebuild') !== -1;
|
|
|
|
// build path
|
|
const ROOT_FOLDER = path.join(__dirname, '..');
|
|
const BIN_FOLDER = path.join(ROOT_FOLDER, 'bin');
|
|
const PREBUILDS_FOLDER = path.join(ROOT_FOLDER, 'prebuilds');
|
|
|
|
const NPM_BIN_FOLDER = execSync('npm bin', {encoding: 'utf8'}).trim();
|
|
const CMAKE_JS_FULL_PATH = path.join(NPM_BIN_FOLDER, 'cmake-js');
|
|
const PREBUILD_FULL_PATH = path.join(NPM_BIN_FOLDER, 'prebuild');
|
|
|
|
// if rebuild, clean up the dist folders
|
|
if (REBUILD) {
|
|
fs.removeSync(BIN_FOLDER);
|
|
if (USE_PREBUILD) {
|
|
fs.removeSync(PREBUILDS_FOLDER);
|
|
}
|
|
}
|
|
|
|
let command: string;
|
|
let args: string[];
|
|
if (USE_PREBUILD) {
|
|
command = PREBUILD_FULL_PATH;
|
|
args = ['--backend', 'cmake-js', '--runtime', 'napi', '--include-regex', '"\\.+"', '--prepack', '"npm test"'];
|
|
if (DEBUG) {
|
|
args.push('--debug');
|
|
}
|
|
|
|
} else {
|
|
command = CMAKE_JS_FULL_PATH;
|
|
args = [(REBUILD ? 'rebuild' : 'compile'), '--arch=x64', '--CDnapi_build_version=3'];
|
|
if (DEBUG) {
|
|
args.push('-D');
|
|
}
|
|
}
|
|
|
|
// launch cmake-js/prebuild
|
|
const proc = spawnSync(command, args, {shell: true, stdio: 'inherit', cwd: ROOT_FOLDER});
|
|
if (proc.status !== 0) {
|
|
if (proc.error) {
|
|
console.error(proc.error);
|
|
}
|
|
process.exit(proc.status === null ? undefined : proc.status);
|
|
}
|