summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile52
1 files changed, 52 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..863826d
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,52 @@
1BUILD := build
2
3override PACKAGES := fmt
4
5WARNINGS := -Wall -Werror
6OPTIMIZE := -Og -flto
7DEBUG := -g
8
9CXX := g++
10CXXFLAGS := $(WARNINGS) $(OPTIMIZE) $(DEBUG)
11
12SED := sed
13
14XXD := xxd
15
16override CXXFLAGS += -std=c++20
17
18override COMPILE_FLAGS := -MMD -MP -I.
19override LINK_FLAGS :=
20
21ifneq "$(strip $(PACKAGES))" ""
22 override COMPILE_FLAGS += $(shell pkg-config --cflags $(PACKAGES))
23 override LINK_FLAGS += -Wl,--start-group $(shell pkg-config --libs $(PACKAGES)) -Wl,--end-group
24endif
25
26default: $(BUILD)/minigolf
27.PHONY: default
28
29clean:
30 rm -rf $(BUILD)
31.PHONY: clean
32
33.SUFFIXES:
34
35override SOURCES := $(shell find -\( -name build -prune -\) -o -\( -name \*.cpp -print -\))
36
37override OBJECTS := $(addprefix $(BUILD)/, $(addsuffix .o, $(basename $(SOURCES))))
38override DEPENDS := $(addprefix $(BUILD)/, $(addsuffix .d, $(basename $(SOURCES))))
39
40-include $(DEPENDS)
41
42$(BUILD)/%.o: %.cpp
43 @mkdir -p $(dir $@)
44 $(CXX) $(CXXFLAGS) $(COMPILE_FLAGS) -c -o $@ $<
45
46$(BUILD)/minigolf: $(OBJECTS)
47 @mkdir -p $(dir $@)
48 $(CXX) $(CXXFLAGS) -o $@ -Wl,--start-group $+ -Wl,--end-group $(LINK_FLAGS)
49
50$(BUILD)/%.bin: %.hex
51 @mkdir -p $(dir $@)
52 $(SED) -e "s/\\s*#.*//" $< | $(XXD) -r -p > $@