CXX = g++ CXXFLAGS = -Wall -Wextra -std=c++20 -march=native CXXFLAGS += -D_DEFAULT_SOURCE LDFLAGS = -lpng BIN = buddhabrot OBJDIR = .obj ifneq ($(DEBUG),) CXXFLAGS += -Og -g -fsanitize=address LDFLAGS += -fsanitize=address else CXXFLAGS += -O3 endif SOURCES := $(wildcard *.cpp) OBJECTS := $(patsubst %.cpp,$(OBJDIR)/%.o,$(SOURCES)) HEADERS := $(wildcard *.h) .PHONY: all clean all: $(BIN) clean: rm -rf $(BIN) $(OBJDIR) $(BIN): $(OBJECTS) $(CXX) -o $@ $^ $(LDFLAGS) $(OBJDIR)/%.o: %.cpp $(HEADERS) | $(OBJDIR) $(CXX) $(CXXFLAGS) -c -o $@ $< $(OBJDIR): mkdir $@