MAKEFLAGS := --jobs=$(shell nproc) RELEASE=0 ifeq ($(RELEASE),1) CXX_FLAGS = \ -std=c++23 \ -O3 \ -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/