


MAKEFLAGS := --jobs=$(shell nproc)

RELEASE=0

ifeq ($(RELEASE),1)

CXX_FLAGS = \
	-std=c++23 \
	-O2 \
	-pedantic -pedantic-errors \
	-Wall -Wextra -Wpedantic -Wconversion -Werror\

else

CXX_FLAGS = \
	-std=c++23 \
	-fsanitize=address,undefined \
	-Og \
	-pedantic -pedantic-errors \
	-Wall -Wextra -Wpedantic -Wconversion -Werror\

endif

CXX = g++

OUT=build/sliger

CXX_HEADERS = $(shell find . -name "*.hpp" -type f -printf '%P\n')

CXX_SOURCES = $(shell find . -name "*.cpp" -type f -printf '%P\n')

CXX_OBJECTS = $(patsubst %.cpp,build/%.o,$(CXX_SOURCES))

all: build_dir $(OUT)

$(OUT): $(CXX_OBJECTS)
	$(CXX) -o $@ $(CXX_FLAGS) $^

build_dir:
	mkdir -p build/

build/%.o: %.cpp $(CXX_HEADERS)
	$(CXX) -c -o $@ $(CXX_FLAGS) $<

clean:
	rm -rf build/

