

export CXX
export CXXFLAGS
export AR


all: src


src: FORCE
	$(MAKE) -C src


tests: FORCE
	$(MAKE) -C src
	$(MAKE) -C tests


tests-gcc15: FORCE
	env CXX=g++15 CXXFLAGS="-Wl,-rpath=/usr/local/lib/gcc15/ -Wall -pedantic -O0 -g3 -std=c++23 -fmax-errors=1 -I../src -I/usr/local/include" $(MAKE) -C src
	env CXX=g++15 CXXFLAGS="-Wl,-rpath=/usr/local/lib/gcc15/ -Wall -pedantic -O0 -g3 -std=c++23 -fmax-errors=1 -I../src -I/usr/local/include" $(MAKE) -C tests


tests-clang: FORCE
	env CXX=clang++ CXXFLAGS="-Wall -pedantic -O0 -g3 -std=c++23 -I../src -I/usr/local/include" $(MAKE) -C src
	env CXX=clang++ CXXFLAGS="-Wall -pedantic -O0 -g3 -std=c++23 -I../src -I/usr/local/include" $(MAKE) -C tests


tests-clang-sa: FORCE
	env CXX=clang++ CXXFLAGS="-fsanitize=address -Wall -pedantic -O0 -g3 -std=c++23 -I../src -I/usr/local/include" $(MAKE) -C src
	env CXX=clang++ CXXFLAGS="-fsanitize=address -Wall -pedantic -O0 -g3 -std=c++23 -I../src -I/usr/local/include" $(MAKE) -C tests


tests-clang-sm: FORCE
	env CXX=clang++ CXXFLAGS="-fsanitize=memory -Wall -pedantic -O3 -g3 -std=c++23 -I../src -I/usr/local/include" $(MAKE) -C src
	env CXX=clang++ CXXFLAGS="-fsanitize=memory -Wall -pedantic -O3 -g3 -std=c++23 -I../src -I/usr/local/include" $(MAKE) -C tests


tests-clang-su: FORCE
	env CXX=clang++ CXXFLAGS="-fsanitize=undefined -Wall -pedantic -O3 -g3 -std=c++23 -I../src -I/usr/local/include" $(MAKE) -C src
	env CXX=clang++ CXXFLAGS="-fsanitize=undefined -Wall -pedantic -O3 -g3 -std=c++23 -I../src -I/usr/local/include" $(MAKE) -C tests


clean: FORCE
	$(MAKE) -C src clean
	$(MAKE) -C tests clean


depend: FORCE
	$(MAKE) -C src depend
	$(MAKE) -C tests depend


clangd: FORCE
	@.templates/install_clangd.sh


forceclangd: FORCE
	@.templates/install_clangd.sh force


qtcreator: clangd
	@.templates/install_qtcreator.sh


forceqtcreator: forceclangd
	@.templates/install_qtcreator.sh force


FORCE:

