aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorAleksey Veresov <aleksey@veresov.pro>2020-02-06 11:27:59 +0300
committerAleksey Veresov <aleksey@veresov.pro>2020-02-06 11:27:59 +0300
commitfca83975899b01c62ede4258f175346b7039be3d (patch)
tree37c2bb8faf95de1252a97942a68183f795eb82a0 /Makefile
parent8ef310a22a54dca7a80947f83f03bc296ab298dd (diff)
parent746c3f3076fe5994f08d729aa1b958465231b0c8 (diff)
downloadmagi-fca83975899b01c62ede4258f175346b7039be3d.tar
magi-fca83975899b01c62ede4258f175346b7039be3d.tar.xz
magi-fca83975899b01c62ede4258f175346b7039be3d.zip
Merge branch 'master' into test
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile41
1 files changed, 32 insertions, 9 deletions
diff --git a/Makefile b/Makefile
index 1934910..db1fefd 100644
--- a/Makefile
+++ b/Makefile
@@ -1,35 +1,58 @@
-# Debug mode:
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+# Compilation Options
+# Debug mode (allowing 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' produces 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