about summary refs log tree commit diff stats
path: root/templates/c/makefile
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-04-02 01:15:39 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-04-02 01:15:39 +0200
commit90a1bd9dc21fea8a1ba8532d2cba957b7f14bec5 (patch)
tree23832b309922ece496faf484975ff5b446bcb965 /templates/c/makefile
parentfeat(common/init): Add a shell script, that populates variables (diff)
downloadflake-templates-90a1bd9dc21fea8a1ba8532d2cba957b7f14bec5.tar.gz
flake-templates-90a1bd9dc21fea8a1ba8532d2cba957b7f14bec5.zip
fix(templates/c): Make the `makefile` more standards complying
Diffstat (limited to 'templates/c/makefile')
-rw-r--r--templates/c/makefile63
1 files changed, 63 insertions, 0 deletions
diff --git a/templates/c/makefile b/templates/c/makefile
new file mode 100644
index 0000000..e5577c4
--- /dev/null
+++ b/templates/c/makefile
@@ -0,0 +1,63 @@
+PREFIX    := /usr/local
+BINPREFIX := $(DESTDIR)$(PREFIX)/bin
+MANPREFIX := $(DESTDIR)$(PREFIX)/share/man/man1
+
+BIN_NAME := TODO
+# The trailing slash is important
+BUILD_DIR := ./target/
+BIN_PATH := $(BUILD_DIR)$(BIN_NAME)
+
+
+SRC := $(wildcard src/*.c)
+OBJ := $(SRC:.c=.o)
+DEP := $(OBJ:.o=.d)
+
+LIBS :=
+
+ALL_CFLAGS  := -O3 -MMD -Wall -Wextra -Wno-unused-parameter $(CFLAGS) $(CPPFLAGS)
+ALL_LDFLAGS := $(addprefix -l,$(LIBS)) -L $(LD_LIBRARY_PATH) $(LDFLAGS)
+
+default: all
+
+all: $(BIN_NAME)
+
+$(BIN_NAME): $(OBJ)
+	$(CC) $(addprefix $(BUILD_DIR),$(notdir $(OBJ))) -o $(addprefix $(BUILD_DIR),$(notdir $(BIN_NAME))) $(ALL_CFLAGS) $(ALL_LDFLAGS)
+
+$(OBJ): $(SRC)
+	mkdir --parents $(BUILD_DIR)
+	$(CC) -c $< -o $(addprefix $(BUILD_DIR),$(notdir $(OBJ))) $(ALL_CFLAGS)
+
+manual:
+	mkdir --parents $(BUILD_DIR)docs
+	pandoc "./docs/$(BIN_NAME).1.md" -s -t man > $(BUILD_DIR)docs/$(BIN_NAME).1
+
+.PHONY : clean options install memory_leak_test
+options:
+	@echo "PREFIX    = $(PREFIX)"
+	@echo "BINPREFIX = $(BINPREFIX)"
+	@echo "MANPREFIX = $(MANPREFIX)"
+	@echo ""
+	@echo "BIN_NAME = $(BIN_NAME)"
+	@echo "BUILD_DIR = $(BUILD_DIR)"
+	@echo "BIN_PATH = $(BIN_PATH)"
+	@echo ""
+	@echo "SRC = $(SRC)"
+	@echo "OBJ = $(OBJ)"
+	@echo "DEP = $(DEP)"
+	@echo ""
+	@echo "LIBS = $(LIBS)"
+	@echo ""
+	@echo "ALL_CFLAGS  = $(ALL_CFLAGS)"
+	@echo "ALL_LDFLAGS = $(ALL_LDFLAGS)"
+	@echo ""
+
+clean :
+	rm --recursive $(BUILD_DIR)
+
+install: $(BIN_NAME) manual
+	install -D $(BUILD_DIR)docs/$(BIN_NAME).1  $(MANPREFIX)/$(BIN_NAME);
+	install -D $(BUILD_DIR)$(BIN_NAME)  $(BINPREFIX)/$(BIN_NAME);
+
+memory_leak_test:
+	sh ./scripts/valgrind_test.sh $(BIN_NAME)