57 lines
2.4 KiB
Makefile
57 lines
2.4 KiB
Makefile
SHELL := /bin/bash
|
|
.PHONY: build serve clone-kernel clone-engine clone-wasm clone-web clone-viewer
|
|
|
|
FORGE := https://gitaec.org/rvba
|
|
BIMR_KERNEL := bimr-kernel
|
|
BIMR_KERNEL_REMOTE := $(FORGE)/bimr-kernel.git
|
|
BIMR_ENGINE := bimr-engine
|
|
BIMR_ENGINE_REMOTE := $(FORGE)/bimr-engine.git
|
|
BIMR_WASM := bimr-wasm
|
|
BIMR_WASM_REMOTE := $(FORGE)/bimr-wasm.git
|
|
BIMR_WEB := bimr-web
|
|
BIMR_WEB_REMOTE := $(FORGE)/bimr-web.git
|
|
IFC5_SRC := bimr-viewer-ifcx/src
|
|
IFC5_REMOTE := $(FORGE)/bimr-viewer-ifcx.git
|
|
|
|
# Prerequisites: Rust (with the wasm32 target), Node.js + pnpm on PATH,
|
|
# wasm-bindgen CLI and wasm-opt.
|
|
WASM_BINDGEN := $(HOME)/.cargo/bin/wasm-bindgen
|
|
WASM_OPT := $(shell command -v wasm-opt 2>/dev/null || ls -d $(HOME)/.cache/.wasm-pack/wasm-opt-*/bin/wasm-opt 2>/dev/null | head -1)
|
|
WASM_BINDGEN_VERSION := 0.2.114
|
|
|
|
build: clone-kernel clone-engine clone-wasm clone-web clone-viewer
|
|
cargo build --release --manifest-path $(BIMR_ENGINE)/Cargo.toml
|
|
@test -f $(WASM_BINDGEN) || cargo install wasm-bindgen-cli --version $(WASM_BINDGEN_VERSION)
|
|
@test -n "$(WASM_OPT)" || (echo "wasm-opt not found — see bimr-factory Makefile install-wasm-opt" >&2; exit 1)
|
|
cargo build --release --target wasm32-unknown-unknown --manifest-path $(BIMR_WASM)/Cargo.toml
|
|
$(WASM_BINDGEN) --target web --out-dir $(BIMR_WASM)/pkg \
|
|
$(BIMR_WASM)/target/wasm32-unknown-unknown/release/bimr_wasm.wasm
|
|
$(WASM_OPT) -O $(BIMR_WASM)/pkg/bimr_wasm_bg.wasm -o $(BIMR_WASM)/pkg/bimr_wasm_bg.wasm
|
|
$(MAKE) -C $(BIMR_WEB) build-web
|
|
@echo "→ $(BIMR_ENGINE)/target/release/bimr-cli"
|
|
@echo "→ $(BIMR_WASM)/pkg/"
|
|
@echo "→ $(BIMR_WEB)/dist/"
|
|
|
|
serve: clone-web clone-engine clone-wasm clone-viewer build
|
|
@echo "→ http://localhost:5173/editor/"
|
|
$(MAKE) -C $(BIMR_WEB) serve
|
|
|
|
clone-kernel:
|
|
@test -d $(BIMR_KERNEL) || git clone $(BIMR_KERNEL_REMOTE) $(BIMR_KERNEL)
|
|
@git -C $(BIMR_KERNEL) pull --ff-only 2>/dev/null || true
|
|
|
|
clone-engine:
|
|
@test -d $(BIMR_ENGINE) || git clone $(BIMR_ENGINE_REMOTE) $(BIMR_ENGINE)
|
|
@git -C $(BIMR_ENGINE) pull --ff-only 2>/dev/null || true
|
|
|
|
clone-wasm:
|
|
@test -d $(BIMR_WASM) || git clone $(BIMR_WASM_REMOTE) $(BIMR_WASM)
|
|
@git -C $(BIMR_WASM) pull --ff-only 2>/dev/null || true
|
|
|
|
clone-web:
|
|
@test -d $(BIMR_WEB) || git clone $(BIMR_WEB_REMOTE) $(BIMR_WEB)
|
|
@git -C $(BIMR_WEB) pull --ff-only 2>/dev/null || true
|
|
|
|
clone-viewer:
|
|
@test -d bimr-viewer-ifcx || \
|
|
git clone $(IFC5_REMOTE) bimr-viewer-ifcx
|