const WASM_SRC = resolve(__dirname, '../deps/llhttp')
const WASM_OUT = resolve(__dirname, '../lib/llhttp')
const DOCKERFILE = resolve(__dirname, './Dockerfile')
+const { CLANG } = process.env
let platform = process.env.WASM_PLATFORM
if (!platform && process.argv[2]) {
process.exit(0)
}
-// Gather information about the tools used for the build
-const buildInfo = execSync('apk info -v').toString()
-if (!buildInfo.includes('wasi-sdk')) {
- console.log('Failed to generate build environment information')
- process.exit(-1)
-}
-writeFileSync(join(WASM_OUT, 'wasm_build_env.txt'), buildInfo)
-
// Build wasm binary
-execSync(`clang \
- --sysroot=/usr/share/wasi-sysroot \
+execSync(`${CLANG} \
+ -nodefaultlibs \
+ --sysroot=/usr \
-target wasm32-unknown-wasi \
-Ofast \
-fno-exceptions \
-fvisibility=hidden \
-mexec-model=reactor \
+ -Wl,-lc \
-Wl,-error-limit=0 \
-Wl,-O3 \
-Wl,--lto-O3 \
)
// Build wasm simd binary
-execSync(`clang \
- --sysroot=/usr/share/wasi-sysroot \
+execSync(`${CLANG} \
+ -nodefaultlibs \
+ --sysroot=/usr \
-target wasm32-unknown-wasi \
-msimd128 \
-Ofast \
-fno-exceptions \
-fvisibility=hidden \
-mexec-model=reactor \
+ -Wl,-lc \
-Wl,-error-limit=0 \
-Wl,-O3 \
-Wl,--lto-O3 \
git checkout main
generate:
- npx ts-node bin/generate.ts
+ ts-node bin/generate.ts
install: build/libllhttp.a build/libllhttp.so
$(INSTALL) -d $(DESTDIR)$(INCLUDEDIR)
mkdirSync(join(WASM_SRC, 'build'));
process.exit(0);
} catch (error: unknown) {
+// @ts-ignore
if (isErrorWithCode(error) && error.code !== 'EEXIST') {
throw error;
}
try {
mkdirSync(WASM_OUT);
} catch (error: unknown) {
+// @ts-ignore
if (isErrorWithCode(error) && error.code !== 'EEXIST') {
throw error;
}
// Build wasm binary
execSync(
`clang \
- --sysroot=/usr/share/wasi-sysroot \
+ -nodefaultlibs \
+ --sysroot=/usr \
-target wasm32-unknown-wasi \
-Ofast \
-fno-exceptions \
-fvisibility=hidden \
-mexec-model=reactor \
+ -Wl,-lc \
-Wl,-error-limit=0 \
-Wl,-O3 \
-Wl,--lto-O3 \