summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile56
1 files changed, 56 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..158ca72
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,56 @@
+# 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/pke-at.o
+ $(CXX) -v -std=c++23 $(BUILD_MODE_FLAGS) $(INCS) $^ $(LDFLAGS) $(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}'
+