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

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)
	g++ -o $@ $(CXX_FLAGS) $^

build_dir:
	mkdir -p build/

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

clean:
	rm -rf build/