SHELL = bash

.PHONY: all build check check-format clean distclean\
	doc release debug stresstest test

all: build

export BUILDTYPE ?= debugoptimized
export BUILDDIR = build-$(BUILDTYPE)

NINJA_BIN ?= ninja
NINJA := $(NINJA_BIN) $(EXTRA_NINJA_ARGS)

build:
	[[ -L build ]] || ./tools/prepare-build-dir
	$(NINJA) -C $@

release:
	rm -f build
	$(MAKE) build BUILDTYPE=$@

debug:
	rm -f build
	$(MAKE) build BUILDTYPE=$@

SMOKE_TEST_NINJA_TARGETS += iwyu

smoke-test: all check-format
	cd build && meson test --suite smoke
	$(NINJA) -C build $(SMOKE_TEST_NINJA_TARGETS)


TEST_NINJA_TARGETS += test

doc: all
	$(NINJA) -C build doc/html

check: test

test: all
	$(NINJA) -C build $(TEST_NINJA_TARGETS)

clean:
	rm -f build
	rm -rf build-*

distclean: clean
	./scripts/dependencyManager.sh -v clean
	./scripts/versionManager.sh -v clean
	git clean -x -d -f

check-format:
	./tools/check-format

stresstest: test
	./stresstest/stresstest.sh build/tests/simplest_fib_test