include ../build/Makefile-vars # Notes: # - using -OReleaseSmall or -OReleaseFast with zig v 0.10.0-dev.4161+dab5bb924 cause a segfault. # - using -OReleaseSafe breaks some tests. # - the default -ODebug works fine with all tests passing. I'm fine with this settting, since this code # is really a wrapper layer to the underlying C library between Javascript and WASM, and the # Javascript overhead is orders of magnitude more. OPTS = -mcpu=baseline -ODebug all: ${DIST}/.built include ../build/Makefile-rules ${DIST}/.built: dist/index.js dist/aarch64-macos.node dist/x86_64-macos.node dist/aarch64-linux-gnu.node dist/x86_64-linux-gnu.node touch dist/.built build/headers: rm -rf ${BUILD}/headers mkdir -p ${BUILD}/headers curl --silent --progress-bar --output ${BUILD}/headers.tar.gz `node -p 'process.release.headersUrl'` cd ${BUILD} && tar xf headers.tar.gz -C headers --strip-components=1 rm ${BUILD}/headers.tar.gz dist/index.js: src/index.ts node_modules pnpm exec tsc -b # Make an "automatic rules pattern". dist/%.node: build/headers $(shell find src/*.zig -type f) cd ../build && make zig mkdir -p ${DIST} zig build-lib ${OPTS} --cache-dir ${BUILD}/zig-cache -dynamic -lc -isystem ${BUILD}/headers/include/node ${SRC}/lib.zig -fallow-shlib-undefined -target $* -femit-bin=$@ dist/aarch64-macos.node: dist/x86_64-macos.node: dist/aarch64-linux-gnu.node: dist/x86_64-linux-gnu.node: test: all pnpm exec tsc -b @# We are not using GitHub actions right now... @# The GitHub actions test running crashes for some reason with caching enable, so we disable it @# for "make test"; do "npm run test" for the 2x faster cached testing. @# pnpm run test-no-cache pnpm run test