all: clean main tests stress

ghc: clean
	g++ -o main main.cpp -std=c++23 -O3 -Wall -Wextra -Wshadow
	g++ -o ./test/tests ./test/hardcode_tests.cpp -std=c++23 -O3 -Wall -Wextra -Wshadow
	g++ -o ./test/stress ./test/stress.cpp -std=c++23 -O3 -Wall -Wextra -Wshadow

psc: clean
	g++ -o main main.cpp -std=c++2a -O3 -Wall -Wextra -Wshadow -lpthread
	g++ -o ./test/tests ./test/hardcode_tests.cpp -std=c++2a -O3 -Wall -Wextra -Wshadow -lpthread
	g++ -o ./test/stress ./test/stress.cpp -std=c++2a -O3 -Wall -Wextra -Wshadow -lpthread

main: clean_main
	g++-13 -o main main.cpp -std=c++23 -O3 -Wall -Wextra -Wshadow -Wl,-ld_classic

tests: clean_tests
	g++-13 -o ./test/tests ./test/hardcode_tests.cpp -std=c++23 -O3 -Wall -Wextra -Wshadow -Wl,-ld_classic

stress: clean_stress
	g++-13 -o ./test/stress ./test/stress.cpp -std=c++23 -O3 -Wall -Wextra -Wshadow -Wl,-ld_classic

clean: clean_main clean_tests clean_stress

clean_main:
	rm -f main

clean_tests:
	rm -f ./test/tests

clean_stress:
	rm -f ./test/stress