const fs = require('fs'); const path = require('path'); let flags = { name: 'Leenkx-RunT', package: 'org.leenkx', release: process.argv.indexOf("--debug") == -1, with_audio: true, with_worker: true, with_compute: true, with_networking: true, with_viewport: true, with_uws: false, debug_network: false }; 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" : "unknown"; 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'); } 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'); } project.addFile('Sources/main.cpp'); 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'); } 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'); } if (flags.with_networking) { project.addLib('ws2_32'); project.addLib('crypt32'); project.addLib('secur32'); } } else if (platform === Platform.Linux) { project.addLib('v8_monolith -L' + libdir); project.addDefine("KINC_NO_WAYLAND"); if (flags.with_networking) { project.addLib('pthread'); } } else if (platform === Platform.OSX) { project.addLib('v8/libraries/macos/release/libv8_monolith.a'); if (flags.with_networking) { project.addLib('-framework Foundation'); project.addLib('-framework Security'); project.addLib('-framework SystemConfiguration'); } } project.flatten(); resolve(project);