about summary refs log tree commit diff stats
path: root/templates/c/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'templates/c/Makefile')
-rw-r--r--templates/c/Makefile60
1 files changed, 60 insertions, 0 deletions
diff --git a/templates/c/Makefile b/templates/c/Makefile
new file mode 100644
index 0000000..4a37b4b
--- /dev/null
+++ b/templates/c/Makefile
@@ -0,0 +1,60 @@
+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)
+
+
+$(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)