citadel/Makefile: parallelizable build with wildcards
authorArt Cancro <ajc@citadel.org>
Mon, 10 Jul 2023 21:45:45 +0000 (12:45 -0900)
committerArt Cancro <ajc@citadel.org>
Mon, 10 Jul 2023 21:45:45 +0000 (12:45 -0900)
citadel/Makefile

index e9226bdd51b4b6a66b7f21325eb43815304cf539..9f260add0cd6a951f3181c4465b258b20513fa5e 100644 (file)
@@ -13,12 +13,23 @@ include config.mk
 all := citserver setup ctdlmigrate sendcommand citmail chkpw chkpwd
 all: $(all)
 
-citserver: server/*.c server/modules/*/*.c config.mk server/*.h
+SRCDIRS := $(wildcard server server/modules/*)
+SOURCES := $(wildcard server/*.c server/modules/*/*.c)
+OBJECTS := $(patsubst %.c,%.o,$(SOURCES))
+
+citserver: $(OBJECTS)
        cc ${CFLAGS} \
-               server/*.c server/modules/*/*.c \
-               ${LDFLAGS} -lresolv -lcitadel -lpthread -lz -lical -lldap -lcrypt -lexpat -lcurl -ldb \
+               $(OBJECTS) \
+               ${LDFLAGS} \
+               -lresolv -lcitadel -lpthread -lz -lical -lldap -lcrypt -lexpat -lcurl -ldb \
                -o citserver
 
+$(SOURCES): server/*.h server/modules/*/*.h
+       touch $@
+
+%.o: %.c
+       cc ${CFLAGS} -c $< -o $@
+
 setup: utils/setup.c server/citadel_dirs.c utils/*.h server/*.h
        cc ${CFLAGS} ${LDFLAGS} utils/setup.c -lcitadel -o setup