Rejigger the Makefile
authorMichael Spang <mspang@csclub.uwaterloo.ca>
Sat, 31 Jan 2009 03:38:02 +0000 (22:38 -0500)
committerMichael Spang <mspang@csclub.uwaterloo.ca>
Sat, 31 Jan 2009 03:45:10 +0000 (22:45 -0500)
It just wasn't complicated enough.

src/Makefile

index 5924dca..5402b77 100644 (file)
@@ -4,32 +4,50 @@ INCLUDES := -I../include $(shell krb5-config --cflags)
 override LDFLAGS += -std=gnu99 $(INCLUDES)
 override CFLAGS  += -std=gnu99 $(INCLUDES)
 
-LIBCEO_OBJECTS := util.o common.o config.o parser.o ldap.o krb5.o kadm.o addhomedir.o
-LIBCEO_LDFLAGS := -lldap $(shell krb5-config --libs krb5 kadm-client)
-
 DESTDIR :=
-PREFIX := /usr/local
-
-all: addmember addclub
+PREFIX  := /usr/local
+
+BIN_PROGS := addmember addclub zfsaddhomedir
+EXT_PROGS := config-test
+
+LIBCEO_OBJECTS := common.o addhomedir.o
+LIBCEO_LDFLAGS :=
+LIBCEO_PROGS   := addmember addclub
+LDAP_OBJECTS   := ldap.o
+LDAP_LDFLAGS   := -lldap
+LDAP_PROGS     := addmember addclub
+KRB5_OBJECTS   := krb5.o kadm.o
+KRB5_LDFLAGS   := $(shell krb5-config --libs krb5 kadm-client)
+KRB5_PROGS     := addmember addclub
+CONFIG_OBJECTS := config.o parser.o
+CONFIG_LDFLAGS :=
+CONFIG_PROGS   := $(OLDCEO_PROGS) $(LDAP_PROGS) $(KRB5_PROGS) $(NET_PROGS)
+UTIL_OBJECTS   := util.o
+UTIL_PROGS     := config-test zfsaddhomedir $(CONFIG_PROGS)
+
+all: $(BIN_PROGS) $(LIB_PROGS) $(EXT_PROGS)
 
 clean:
-       rm -f addmember addclub zfsaddhomedir config-test *.o
-
-addmember: $(LIBCEO_OBJECTS) addmember.o
-       $(CC) $(LDFLAGS) $(LIBCEO_LDFLAGS) $^ -o $@
-
-addclub: $(LIBCEO_OBJECTS) addclub.o
-       $(CC) $(LDFLAGS) $(LIBCEO_LDFLAGS) $^ -o $@
-
-zfsaddhomedir: util.o zfsaddhomedir.o
-       $(CC) $(LDFLAGS) $^ -o $@
+       rm -f $(ALL_PROGS) $(EXT_PROGS) *.o
 
-config-test: config-test.o parser.o util.o
-       $(CC) $(LDFLAGS) $^ -o $@
+config-test: config-test.o parser.o
 
 config.o: config.h config-vars.h
 
-install: addmember addclub
+install:
        install -d $(DESTDIR)$(PREFIX)/bin
        install addmember addclub $(DESTDIR)$(PREFIX)/bin
 
+$(LIBCEO_PROGS): LDFLAGS += $(LIBCEO_LDFLAGS)
+$(LIBCEO_PROGS): $(LIBCEO_OBJECTS)
+$(LDAP_PROGS):   LDFLAGS += $(LDAP_LDFLAGS)
+$(LDAP_PROGS):   $(LDAP_OBJECTS)
+$(KRB5_PROGS):   LDFLAGS += $(KRB5_LDFLAGS)
+$(KRB5_PROGS):   $(KRB5_OBJECTS)
+$(CONFIG_PROGS): LDFLAGS += $(CONFIG_LDFLAGS)
+$(CONFIG_PROGS): $(CONFIG_OBJECTS)
+$(UTIL_PROGS):   LDFLAGS += $(UTIL_LDFLAGS)
+$(UTIL_PROGS):   $(UTIL_OBJECTS)
+
+.PHONY: clean all
+.SECONDARY: zfsaddhomedir.o addmember.o addclub.o