wasmux
Version:
WebAssembly toolchain for compiling libc and kernel into system-level WASM modules
56 lines (45 loc) • 1.24 kB
JavaScript
export default (mk) => {
const headers = [
];
const sources = [
"src/InstanceExit.cpp",
"src/InstancePerform.cpp",
"src/StartKernel.cpp",
"src/KernelVersion.cpp",
"src/syscall.cpp",
];
const includes = [
mk.BINARY_DIR.join("include"),
mk.SOURCE_DIR.join("include"),
];
const libraries = [
mk.target("wasmux"),
];
if (mk.SYSTEM_PROCESSOR.match(/wasm(32|64)/)) {
sources.push("src/StartKernel.S");
}
if (mk.SYSTEM_NAME === "Windows") {
sources.push(
"src/StartWindows.cpp",
"src/kernel.lds",
);
mk.EXE_LINKER_FLAGS.push(
"-Wl,--stack,65536",
"-Wl,--script=" + mk.SOURCE_DIR.join("src/kapsule.lds"),
);
}
mk.EXE_LINKER_FLAGS.push(
"-Wl,--Map=" + mk.BINARY_DIR.join("kapsule.map"),
);
const kapsule = mk.addExecutable("kapsule", headers, sources);
kapsule.addIncludes(includes);
kapsule.addLibraries(libraries);
mk.install(kapsule, "/boot");
if (mk.SYSTEM_PROCESSOR.match(/wasm(32|64)/)) {
kapsule.addLinkOptions("-Wl,--export=_start_kernel");
const waeditor = mk.findProgram("waeditor");
if (waeditor) {
kapsule.addPostBuild(waeditor, [ "--add-user-memory", kapsule.targetFile ]);
}
}
}