# Thin facade over src/tools/xce-build.sh (which drives meson+ninja directly). # The real build logic lives there and in src/*/meson.build; this file exists # only so `make` / `make test` work out of habit for anyone arriving from the # old make-based layout. Dependency prerequisites and policy: see DEPS.md. PROFILE ?= asan COMPONENT ?= all JOBS ?= BUILD_ARGS := $(COMPONENT) $(PROFILE) ifneq ($(JOBS),) BUILD_ARGS += --jobs $(JOBS) endif .PHONY: all build test debug release clean help all: build build: bash src/tools/xce-build.sh $(BUILD_ARGS) test: bash src/tools/xce-build.sh $(COMPONENT) asan $(if $(JOBS),--jobs $(JOBS),) debug: bash src/tools/xce-build.sh $(COMPONENT) debug $(if $(JOBS),--jobs $(JOBS),) release: bash src/tools/xce-build.sh $(COMPONENT) release $(if $(JOBS),--jobs $(JOBS),) clean: rm -rf src/xce.build src/build.dbg src/build.release help: @echo "Targets:" @echo " make / make build - build all components ($(PROFILE) profile) + run unit tests" @echo " make test - same as build (asan profile runs tests)" @echo " make debug - build without ASAN (-O0 -g3, gdb-friendly, no tests)" @echo " make release - build -O3, no sanitizer (no tests)" @echo " make clean - remove build dirs" @echo "Variables: COMPONENT=all|lib|controller|harness|scheduler|worker|apiserver|xcecli|xceadmin" @echo " PROFILE=asan|debug|release (for build), JOBS=N (parallelism cap)" @echo "Dependency prerequisites and policy: see DEPS.md"