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