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. -Inanosim 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 .SECONDARY: .SUFFIXES: .have_submodules: git submodule update --init --recursive @touch $@ -include .have_submodules 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 > $@