2025-01-29 10:55:49 +01:00
|
|
|
const fs = require('fs');
|
|
|
|
|
const path = require('path');
|
|
|
|
|
|
|
|
|
|
let flags = {
|
2026-02-20 23:40:15 -08:00
|
|
|
name: 'Leenkx-RunT',
|
2025-01-29 10:55:49 +01:00
|
|
|
package: 'org.leenkx',
|
|
|
|
|
release: process.argv.indexOf("--debug") == -1,
|
|
|
|
|
with_audio: true,
|
|
|
|
|
with_worker: true,
|
2026-02-20 23:40:15 -08:00
|
|
|
with_compute: true,
|
|
|
|
|
with_networking: true,
|
|
|
|
|
with_viewport: true,
|
|
|
|
|
with_uws: false,
|
|
|
|
|
debug_network: false
|
2025-01-29 10:55:49 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const system = platform === Platform.Windows ? "win32" :
|
|
|
|
|
platform === Platform.Linux ? "linux" :
|
|
|
|
|
platform === Platform.OSX ? "macos" :
|
|
|
|
|
platform === Platform.Wasm ? "wasm" :
|
|
|
|
|
platform === Platform.Android ? "android" :
|
|
|
|
|
platform === Platform.iOS ? "ios" :
|
2026-02-20 23:40:15 -08:00
|
|
|
"unknown";
|
2025-01-29 10:55:49 +01:00
|
|
|
|
|
|
|
|
const build = flags.release ? 'release' : 'debug';
|
|
|
|
|
let root = __dirname;
|
|
|
|
|
const libdir = root + '/v8/libraries/' + system + '/' + build + '/';
|
|
|
|
|
|
|
|
|
|
let project = new Project(flags.name);
|
|
|
|
|
await project.addProject('Kinc');
|
|
|
|
|
project.cppStd = "c++17";
|
|
|
|
|
project.setDebugDir('Deployment');
|
|
|
|
|
|
|
|
|
|
if (fs.existsSync(process.cwd() + '/icon.png')) {
|
|
|
|
|
project.icon = path.relative(__dirname, process.cwd()) + '/icon.png';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (flags.with_audio) {
|
|
|
|
|
project.addDefine('WITH_AUDIO');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (flags.with_compute) {
|
|
|
|
|
project.addDefine('WITH_COMPUTE');
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-20 23:40:15 -08:00
|
|
|
if (flags.with_networking) {
|
|
|
|
|
project.addDefine('WITH_NETWORKING');
|
|
|
|
|
project.addDefine('WITH_SSL');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (flags.with_uws) {
|
|
|
|
|
project.addDefine('WITH_UWS');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (flags.debug_network) {
|
|
|
|
|
project.addDefine('DEBUG_NETWORK');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (flags.with_viewport && (platform === Platform.Windows || platform === Platform.Linux || platform === Platform.OSX)) {
|
|
|
|
|
project.addDefine('WITH_VIEWPORT');
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-29 10:55:49 +01:00
|
|
|
project.addFile('Sources/main.cpp');
|
|
|
|
|
|
2026-02-20 23:40:15 -08:00
|
|
|
|
|
|
|
|
if(flags.with_networking){
|
|
|
|
|
if (flags.with_uws) {
|
|
|
|
|
project.addIncludeDir('uWebSockets/uSockets/src');
|
|
|
|
|
project.addFile('Sources/uws_websocket_bridge.h');
|
|
|
|
|
project.addFile('Sources/uws_websocket_bridge.cpp');
|
|
|
|
|
project.addFile('Sources/uws_websocket_v8_bindings.h');
|
|
|
|
|
project.addFile('Sources/uws_websocket_v8_bindings.cpp');
|
|
|
|
|
project.addFile('uWebSockets/uSockets/src/bsd.c');
|
|
|
|
|
project.addFile('uWebSockets/uSockets/src/context.c');
|
|
|
|
|
project.addFile('uWebSockets/uSockets/src/loop.c');
|
|
|
|
|
project.addFile('uWebSockets/uSockets/src/socket.c');
|
|
|
|
|
project.addFile('uWebSockets/uSockets/src/udp.c');
|
|
|
|
|
} else {
|
|
|
|
|
project.addFile('Sources/async_engine.h');
|
|
|
|
|
project.addFile('Sources/async_engine.cpp');
|
|
|
|
|
project.addFile('Sources/connection_pool.h');
|
|
|
|
|
project.addFile('Sources/connection_pool.cpp');
|
|
|
|
|
project.addFile('Sources/global_thread_pool.h');
|
|
|
|
|
project.addFile('Sources/global_thread_pool.cpp');
|
|
|
|
|
project.addFile('Sources/websocket_v8_bindings.h');
|
|
|
|
|
project.addFile('Sources/websocket_v8_bindings.cpp');
|
|
|
|
|
project.addFile('Sources/websocket_bridge.h');
|
|
|
|
|
project.addFile('Sources/websocket_bridge.cpp');
|
|
|
|
|
project.addFile('Sources/websocket_config.h');
|
|
|
|
|
project.addFile('Sources/websocket.h');
|
|
|
|
|
project.addFile('Sources/websocket.cpp');
|
|
|
|
|
project.addFile('Sources/thread_pool.h');
|
|
|
|
|
project.addFile('Sources/socket_v8_bindings.h');
|
|
|
|
|
project.addFile('Sources/socket_v8_bindings.cpp');
|
|
|
|
|
project.addFile('Sources/socket_optimization.h');
|
|
|
|
|
project.addFile('Sources/socket_bridge.h');
|
|
|
|
|
project.addFile('Sources/socket_bridge.cpp');
|
|
|
|
|
project.addFile('Sources/lockfree_queue.h');
|
|
|
|
|
project.addFile('Sources/httprequest.h');
|
|
|
|
|
project.addFile('Sources/httprequest.cpp');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (flags.with_viewport && (platform === Platform.Windows || platform === Platform.Linux || platform === Platform.OSX)) {
|
|
|
|
|
project.addFile('Sources/viewport_server.h');
|
|
|
|
|
project.addFile('Sources/viewport_server.cpp');
|
|
|
|
|
}
|
|
|
|
|
if (flags.with_networking && platform !== Platform.Windows) {
|
|
|
|
|
project.addLib('ssl');
|
|
|
|
|
project.addLib('crypto');
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-29 10:55:49 +01:00
|
|
|
if (flags.with_worker) {
|
|
|
|
|
project.addDefine('WITH_WORKER');
|
|
|
|
|
project.addFile('Sources/worker.h');
|
|
|
|
|
project.addFile('Sources/worker.cpp');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
project.addIncludeDir('v8/include');
|
|
|
|
|
|
|
|
|
|
if (platform === Platform.Windows) {
|
|
|
|
|
project.addLib('Dbghelp'); // Stack walk
|
|
|
|
|
project.addLib('Dwmapi'); // DWMWA_USE_IMMERSIVE_DARK_MODE
|
|
|
|
|
project.addLib('winmm'); // timeGetTime for V8
|
|
|
|
|
project.addLib(libdir + 'v8_monolith');
|
|
|
|
|
if (!flags.release) {
|
|
|
|
|
project.addDefine('_HAS_ITERATOR_DEBUGGING=0');
|
|
|
|
|
project.addDefine('_ITERATOR_DEBUG_LEVEL=0');
|
|
|
|
|
}
|
2026-02-20 23:40:15 -08:00
|
|
|
if (flags.with_networking) {
|
|
|
|
|
project.addLib('ws2_32');
|
|
|
|
|
project.addLib('crypt32');
|
|
|
|
|
project.addLib('secur32');
|
|
|
|
|
}
|
2025-01-29 10:55:49 +01:00
|
|
|
}
|
|
|
|
|
else if (platform === Platform.Linux) {
|
|
|
|
|
project.addLib('v8_monolith -L' + libdir);
|
|
|
|
|
project.addDefine("KINC_NO_WAYLAND");
|
2026-02-20 23:40:15 -08:00
|
|
|
if (flags.with_networking) {
|
|
|
|
|
project.addLib('pthread');
|
|
|
|
|
}
|
2025-01-29 10:55:49 +01:00
|
|
|
}
|
|
|
|
|
else if (platform === Platform.OSX) {
|
|
|
|
|
project.addLib('v8/libraries/macos/release/libv8_monolith.a');
|
2026-02-20 23:40:15 -08:00
|
|
|
if (flags.with_networking) {
|
|
|
|
|
project.addLib('-framework Foundation');
|
|
|
|
|
project.addLib('-framework Security');
|
|
|
|
|
project.addLib('-framework SystemConfiguration');
|
|
|
|
|
}
|
2025-01-29 10:55:49 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
project.flatten();
|
|
|
|
|
resolve(project);
|