BUILD := build override PACKAGES := fmt WARNINGS := -Wall -Werror OPTIMIZE := -O3 -flto DEBUG := -g CXX := g++ CXXFLAGS := $(WARNINGS) $(OPTIMIZE) $(DEBUG) SED := sed XXD := xxd override CXXFLAGS += -std=c++20 override COMPILE_FLAGS := -MMD -MP -I. override LINK_FLAGS := ifneq "$(strip $(PACKAGES))" "" override COMPILE_FLAGS += $(shell pkg-config --cflags $(PACKAGES)) override LINK_FLAGS += -Wl,--start-group $(shell pkg-config --libs $(PACKAGES)) -Wl,--end-group endif default: $(BUILD)/procmodel .PHONY: default clean: rm -rf $(BUILD) .PHONY: clean .SUFFIXES: override SOURCES := $(shell find -\( -name build -prune -\) -o -\( -name \*.cpp -print -\)) override OBJECTS := $(addprefix $(BUILD)/, $(addsuffix .o, $(basename $(SOURCES)))) override DEPENDS := $(addprefix $(BUILD)/, $(addsuffix .d, $(basename $(SOURCES)))) -include $(DEPENDS) $(BUILD)/%.o: %.cpp @mkdir -p $(dir $@) $(CXX) $(CXXFLAGS) $(COMPILE_FLAGS) -c -o $@ $< $(BUILD)/procmodel: $(OBJECTS) @mkdir -p $(dir $@) $(CXX) $(CXXFLAGS) -o $@ -Wl,--start-group $+ -Wl,--end-group $(LINK_FLAGS) $(BUILD)/%.bin: %.hex @mkdir -p $(dir $@) $(SED) -e "s/\\s*#.*//" $< | $(XXD) -r -p > $@