From a93c561921b79e5f27b986292fe70dce1879f91e Mon Sep 17 00:00:00 2001
From: Aleksey Veresov <aleksey@veresov.pro>
Date: Fri, 21 Feb 2020 18:09:22 +0300
Subject: [magi]

---
 Makefile | 33 +++++++++++++++------------------
 1 file changed, 15 insertions(+), 18 deletions(-)

(limited to 'Makefile')

diff --git a/Makefile b/Makefile
index f25e658..93f4a2d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,10 @@
-### TODO: Partial compilation (e.g. cgi+urlenc, but without fcgi)
 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
 #     Compilation Options
 # Debug mode (allowing to debug the library via gdb):
 # DEBUG   = yes
-# Specify your favourite C compiler here (e.g. tcc):
+# Optional modules (remove unwanted ones):
+MODULES = cgi fastcgi loadfile urlenc
+# Specify your favourite C compiler here:
 CC      = gcc
 
 
@@ -20,9 +21,17 @@ else
 CFLAGS += -O3
 endif
 
+# Interfacial files to compile:
+INTER   = cookie error file param request response $(MODULES)
+
 # Object files listing:
+INC_DIR = include/magi
 SRC_DIR = src
-SRC     = $(wildcard $(SRC_DIR)/*.c)
+INTER_H = $(foreach name,$(INTER),$(INC_DIR)/$(name).h)
+INTER_C = $(foreach name,$(INTER),$(SRC_DIR)/$(name).c)
+INNER_H = $(wildcard $(SRC_DIR)/*.h)
+INNER_C = $(INNER_H:.h=.c)
+SRC     = $(INTER_C) $(INNER_C)
 OBJ     = $(SRC:.c=.o)
 
 
@@ -33,27 +42,15 @@ default: $(LIB)
 
 # Cleaning means removing everything automatically produced:
 clean:
-	rm -f $(OBJ) $(LIB) deps.mk
+	rm -f $(OBJ) $(LIB)
 
 
 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
 #     Compilation
 # Compile object files from corresponding source and header:
-%.o: %.c %.h
-	$(CC) $(CFLAGS) -c $< -o $@
+%.o: %.c
+	$(CC) $(CFLAGS) -I $(INC_DIR) -c $< -o $@
 
 # Packing object files into library:
 $(LIB): $(OBJ)
 	ar rcs $@ $^
-
-
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-#     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