blob: 604c29073e661564f82d67a893ff18f83ddfec0e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# pke-at
PROJ=pke-at
-include config.mk
FLAGS_DEBUG = -O0 -g -DDEBUG
FLAGS_RELEASE_DEBUG = -O2 -g -DDEBUG
FLAGS_RELEASE = -O2 -s -DNDEBUG
BUILD_MODE_FLAGS = $(FLAGS_DEBUG)
define cc-command
$(CC) -std=c2x -c -o $@ $(BUILD_MODE_FLAGS) $(CFLAGS) $(INCS) $<
endef
define cxx-command
$(CXX) -std=c++23 -c -o $@ $(BUILD_MODE_FLAGS) $(CXXFLAGS) $(INCS) $<
endef
.PHONY: default
default: options .WAIT bin/pke-at
.PHONY: prepare
prepare: ## Set up the current directory to build
mkdir -p bin
mkdir -p obj
.PHONY: options
options: prepare .WAIT
@echo "$(PROJ)" build options:
@echo "CFLAGS = $(CFLAGS)"
@echo "CXXFLAGS = $(CXXFLAGS)"
@echo "BUILD_MODE_FLAGS = $(BUILD_MODE_FLAGS)"
@echo "LDFLAGS = $(LDFLAGS)"
@echo "CC = $(CC)"
@echo "CXX = $(CXX)"
obj/%.o : src/%.c | prepare
$(cc-command)
obj/%.o : src/%.cpp | prepare
$(cxx-command)
bin/pke-at: ## Builds the pke-at executable
bin/pke-at: obj/main.o
bin/pke-at: obj/pke-at-settings.o
bin/pke-at: obj/pke-at-common.o
bin/pke-at: obj/pke-at.o
bin/pke-at: obj/level-main.o
$(CXX) -v -std=c++23 $(BUILD_MODE_FLAGS) $(INCS) -Wl,--whole-archive $^ $(LDFLAGS) -Wl,--no-whole-archive $(CXXFLAGS) -o $@
.PHONY: clean
clean:
rm -rf bin
rm -rf obj
rm -rf *.plist
.PHONY: help
help: ## Prints help for targets with comments
@cat $(MAKEFILE_LIST) | grep -E '^[a-zA-Z_-]+:.*?## .*$$' | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|