| |
| |
| |
| |
| |
|
|
| #include "minimum_runtime_check.js" |
|
|
| #if MODULARIZE |
| var Module = moduleArg; |
| #elif USE_CLOSURE_COMPILER |
| |
| var Module; |
| |
| |
| if (!Module) Module = |
| #if AUDIO_WORKLET |
| globalThis.{{{ EXPORT_NAME }}} || |
| #endif |
| {"__EMSCRIPTEN_PRIVATE_MODULE_EXPORT_NAME_SUBSTITUTION__":1}; |
|
|
| #elif ENVIRONMENT_MAY_BE_NODE || ENVIRONMENT_MAY_BE_SHELL |
|
|
| |
| |
| |
| |
| var Module = globalThis.{{{ EXPORT_NAME }}} || {}; |
|
|
| #else |
| var Module = {{{ EXPORT_NAME }}}; |
| #endif |
|
|
| #if ENVIRONMENT_MAY_BE_NODE |
| var ENVIRONMENT_IS_NODE = {{{ nodeDetectionCode() }}}; |
| #endif |
|
|
| #if ENVIRONMENT_MAY_BE_SHELL |
| var ENVIRONMENT_IS_SHELL = !!globalThis.read; |
| #endif |
|
|
| #if ASSERTIONS || PTHREADS |
| #if !ENVIRONMENT_MAY_BE_NODE && !ENVIRONMENT_MAY_BE_SHELL |
| var ENVIRONMENT_IS_WEB = true |
| #elif ENVIRONMENT.length == 1 |
| var ENVIRONMENT_IS_WEB = {{{ ENVIRONMENT[0] === 'web' }}}; |
| #elif ENVIRONMENT_MAY_BE_SHELL && ENVIRONMENT_MAY_BE_NODE |
| var ENVIRONMENT_IS_WEB = !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_SHELL; |
| #elif ENVIRONMENT_MAY_BE_SHELL |
| var ENVIRONMENT_IS_WEB = !ENVIRONMENT_IS_SHELL; |
| #else |
| var ENVIRONMENT_IS_WEB = !ENVIRONMENT_IS_NODE; |
| #endif |
| #endif |
|
|
| #if ENVIRONMENT_MAY_BE_WORKER || (PTHREADS || WASM_WORKERS) |
| var ENVIRONMENT_IS_WORKER = !!globalThis.WorkerGlobalScope; |
| #endif |
|
|
| #if ENVIRONMENT_MAY_BE_NODE && (PTHREADS || WASM_WORKERS) |
| if (ENVIRONMENT_IS_NODE) { |
| var worker_threads = require('node:worker_threads'); |
| globalThis.Worker = worker_threads.Worker; |
| ENVIRONMENT_IS_WORKER = !worker_threads.isMainThread; |
| } |
| #endif |
|
|
| #if AUDIO_WORKLET |
| var ENVIRONMENT_IS_AUDIO_WORKLET = !!globalThis.AudioWorkletGlobalScope; |
| #endif |
|
|
| #if AUDIO_WORKLET && WASM_WORKERS |
| var ENVIRONMENT_IS_WASM_WORKER = {{{ wasmWorkerDetection() }}} || ENVIRONMENT_IS_AUDIO_WORKLET; |
| #elif WASM_WORKERS |
| var ENVIRONMENT_IS_WASM_WORKER = {{{ wasmWorkerDetection() }}}; |
| #endif |
|
|
| #if WASM_WORKERS && ENVIRONMENT_MAY_BE_NODE |
| if (ENVIRONMENT_IS_NODE) { |
| |
| |
| ENVIRONMENT_IS_WASM_WORKER = worker_threads.workerData == 'em-ww' |
| } |
| #endif |
|
|
| #if ASSERTIONS && ENVIRONMENT_MAY_BE_NODE && ENVIRONMENT_MAY_BE_SHELL |
| if (ENVIRONMENT_IS_NODE && ENVIRONMENT_IS_SHELL) { |
| throw new Error('unclear environment'); |
| } |
| #endif |
|
|
| |
| |
| |
| |
|
|
| #if ENVIRONMENT_MAY_BE_NODE && PTHREADS |
| |
| |
| |
| |
| |
| |
| var defaultPrint = console.log.bind(console); |
| var defaultPrintErr = console.error.bind(console); |
| if (ENVIRONMENT_IS_NODE) { |
| var fs = require('node:fs'); |
| defaultPrint = (...args) => fs.writeSync(1, args.join(' ') + '\n'); |
| defaultPrintErr = (...args) => fs.writeSync(2, args.join(' ') + '\n'); |
| } |
| var out = defaultPrint; |
| var err = defaultPrintErr; |
| #else |
| var out = (...args) => console.log(...args); |
| var err = (...args) => console.error(...args); |
| #endif |
|
|
| |
| |
| |
| function ready() { |
| #if MODULARIZE |
| readyPromiseResolve?.(Module); |
| #endif |
| #if INVOKE_RUN && HAS_MAIN |
| {{{ runIfMainThread("run();") }}} |
| #elif ASSERTIONS |
| out('ready() called, and INVOKE_RUN=0. The runtime is now ready for you to call run() to invoke application _main(). You can also override ready() in a --pre-js file to get this signal as a callback') |
| #endif |
| #if PTHREADS |
| |
| if (ENVIRONMENT_IS_PTHREAD) { |
| startWorker(); |
| } |
| #endif |
| } |
|
|
| #if ENVIRONMENT_MAY_BE_NODE |
| var isFileURI = (filename) => filename.startsWith('file://'); |
| var readAsync, readBinary; |
| #include "node_shell_read.js" |
| #endif |
|
|
| #if PTHREADS |
| |
| |
| var ENVIRONMENT_IS_PTHREAD = ENVIRONMENT_IS_WORKER && {{{ pthreadDetection() }}}; |
|
|
| #if !MODULARIZE |
| |
| |
| var _scriptName = globalThis.document?.currentScript?.src; |
| #endif |
|
|
| #if ENVIRONMENT_MAY_BE_NODE |
| if (ENVIRONMENT_IS_NODE) { |
| ENVIRONMENT_IS_WORKER = !worker_threads.isMainThread; |
| |
| |
| ENVIRONMENT_IS_PTHREAD = ENVIRONMENT_IS_WORKER && worker_threads.workerData == 'em-pthread' |
| #if !EXPORT_ES6 |
| _scriptName = __filename; |
| #endif |
| } else |
| #endif |
| if (ENVIRONMENT_IS_WORKER) { |
| _scriptName = self.location.href; |
| } |
| #endif |
|
|
| |
| |
| {{{ preJS() }}} |
|
|
| #if !SINGLE_FILE |
|
|
| #if PTHREADS |
| if (!ENVIRONMENT_IS_PTHREAD) { |
| #endif |
|
|
| #if ENVIRONMENT_MAY_BE_NODE && ((WASM == 1 && !WASM2JS) || WASM == 2) |
| |
|
|
| if (ENVIRONMENT_IS_NODE) { |
| var fs = require('node:fs'); |
| #if WASM == 2 |
| if (globalThis.WebAssembly) Module['wasm'] = fs.readFileSync(__dirname + '/{{{ TARGET_BASENAME }}}.wasm'); |
| else eval(fs.readFileSync(__dirname + '/{{{ TARGET_BASENAME }}}.wasm.js')+''); |
| #else |
| #if !WASM2JS |
| Module['wasm'] = fs.readFileSync(__dirname + '/{{{ TARGET_BASENAME }}}.wasm'); |
| #endif |
| #endif |
| } |
| #endif |
|
|
| #if ENVIRONMENT_MAY_BE_SHELL && ((WASM == 1 && !WASM2JS) || WASM == 2) |
| if (ENVIRONMENT_IS_SHELL) { |
| #if WASM == 2 |
| if (globalThis.WebAssembly) Module['wasm'] = read('{{{ TARGET_BASENAME }}}.wasm', 'binary'); |
| else eval(read('{{{ TARGET_BASENAME }}}.wasm.js')+''); |
| #else |
| #if !WASM2JS |
| Module['wasm'] = read('{{{ TARGET_BASENAME }}}.wasm', 'binary'); |
| #endif |
| #endif |
| } |
| #endif |
|
|
| #if PTHREADS |
| } |
| #endif |
|
|
| #endif |
|
|
|
|