From 55e11567a2eabcc1f34955062cef5610d16400fb Mon Sep 17 00:00:00 2001 From: Aleksey Veresov Date: Mon, 3 Feb 2020 21:01:22 +0300 Subject: [magi] Makefile update. --- Makefile | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 1934910..d57c2d1 100644 --- a/Makefile +++ b/Makefile @@ -1,35 +1,58 @@ -# Debug mode: +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Compilation Options +# Debug mode (uncoment to be able to debug the library via gdb): # DEBUG = yes - +# Specify your favourite C compiler here (e.g. tcc): CC = gcc + + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Preparations LIB = libmagi.a +# Compile under the most strict conditions: CFLAGS = -xc -ansi -pedantic -Wall +# Debug and optimisation are not compatible: ifeq '$(DEBUG)' 'yes' CFLAGS += -g -O0 else CFLAGS += -O3 endif +# Object files listing: SRC_DIR = src SRC = $(wildcard $(SRC_DIR)/*.c) OBJ = $(SRC:.c=.o) +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Targets +# 'make' will produce library by default: default: $(LIB) -ifneq "clean" "$(MAKECMDGOALS)" --include deps.mk -endif +# Cleaning means removing everything automatically produced: +clean: + rm -f $(OBJ) $(LIB) deps.mk -deps.mk: $(SRC) - $(CC) -MM $^ > $@ +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Compilation +# Compile object files from corresponding source and header: %.o: %.c %.h $(CC) $(CFLAGS) -c $< -o $@ +# Packing object files into library: $(LIB): $(OBJ) ar rcs $@ $^ -clean: - rm -f $(OBJ) $(LIB) deps.mk + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Dependencies +# Generating dependencies description file: +deps.mk: $(SRC) + $(CC) -MM $^ > $@ + +# While cleaning we need to remove it, not include: +ifneq "clean" "$(MAKECMDGOALS)" +-include deps.mk +endif -- cgit v1.2.3