EMSDK_IMAGE := emscripten/emsdk:6.0.6
EMSDK_DIGEST := sha256:be96eff5810e42c632f3f8b795388a6b596e4fb21ec28b9e1fb1bc49bb3b1eef
TOOLCHAIN_IMAGE := iverilog-emsdk:6.0.6
ROOT := $(abspath ..)
PACKAGE_RUNTIME := $(ROOT)/wasm/package/dist/runtime

.PHONY: configure toolchain build build-local test package package-verify clean

configure:
	cd "$(ROOT)" && autoconf --force

toolchain:
	docker build \
	  --build-arg EMSDK_IMAGE=$(EMSDK_IMAGE)@$(EMSDK_DIGEST) \
	  --tag $(TOOLCHAIN_IMAGE) \
	  --file Dockerfile .

build: toolchain
	@revision="$$(node verify-source.mjs)" && \
	docker run --rm --user "$$(id -u):$$(id -g)" \
	  -e HOME=/tmp \
	  -e EM_CACHE=/src/build/emscripten-cache \
	  -e IVL_WASM_GIT_COMMIT="$$revision" \
	  -e IVL_WASM_SOURCE_VERIFIED="$$revision" \
	  -v "$(ROOT):/src" -w /src $(TOOLCHAIN_IMAGE) \
	  make -C wasm build-local

build-local:
	bash build.sh release

test:
	node --test test/build-layout.test.mjs

package-verify:
	node verify-package.mjs

package: package-verify
	npm --prefix package run build:ts
	cd package && npm pack

clean:
	rm -rf "$(ROOT)/build/wasm-release" "$(ROOT)/build/wasm-debug"
	rm -rf "$(PACKAGE_RUNTIME)"
