From edad5ef7cf81bf080de571320ff610770ebfa745 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Wed, 17 Apr 2024 16:01:28 +0200 Subject: [PATCH] add big makefile for project with report --- c_project_archive_report.mk | 54 +++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 c_project_archive_report.mk diff --git a/c_project_archive_report.mk b/c_project_archive_report.mk new file mode 100644 index 0000000..e5d30fc --- /dev/null +++ b/c_project_archive_report.mk @@ -0,0 +1,54 @@ +CC = gcc +RM = rm -rf +TAR = tar -cf +CP = cp -r +MKDIR = mkdir -p + +SRC_DIR = src +INC_DIR = includes +SOURCES = $(wildcard $(SRC_DIR)/*.c) +OBJETS = $(patsubst %.c,%.o,$(notdir $(SOURCES))) + +CFLAGS = -std=gnu11 -pedantic +LDFLAGS = + +EXE = project +EXE_EXT = .elf + +ARCHIVE = kennel +PDF_DIR = report + +%.o: src/%.c + $(CC) -c $< -o $@ $(CFLAGS) + +compilation: $(OBJETS) + $(CC) -o $(EXE)$(EXE_EXT) $(OBJETS) $(LDFLAGS) + +main: CFLAGS += -O3 +main: compilation + +debug: CFLAGS += -Wall -Wextra -Wshadow -Wcast-align -Wstrict-prototypes +debug: CFLAGS += -fanalyzer -fsanitize=undefined -g -Og +debug: LDFLAGS += -fsanitize=undefined +debug: compilation + +all: + main + +pdf-make: + cd report && \ + $(MAKE) + +pdf-clean: + @cd report && \ + $(MAKE) clean + +clean: pdf-clean + $(RM) $(OBJETS) "$(EXE)$(EXE_EXT)" "$(ARCHIVE).tar" + +archive: pdf-make + $(MKDIR) "$(ARCHIVE)" + $(CP) "$(SRC_DIR)" "$(INC_DIR)" Makefile README \ + "$(wildcard $(PDF_DIR)/*.pdf)" "$(ARCHIVE)" + $(TAR) "$(ARCHIVE).tar" "$(ARCHIVE)" + $(RM) "$(ARCHIVE)"