Files
LNXRNT/kfile.js

153 lines
4.9 KiB
JavaScript
Raw Permalink Normal View History

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);