chiark / gitweb /
Makefile: fix prerequisits for $(PROGRAMS)
[elogind.git] / Makefile
index f34befd9996a58187ac09d024483aa48f724981f..07f57519ab64c6b1d63f4af01231af7a98b393b5 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -60,7 +60,6 @@ HEADERS = \
        udev.h                          \
        udev_utils.h                    \
        udev_rules.h                    \
        udev.h                          \
        udev_utils.h                    \
        udev_rules.h                    \
-       udev_version.h                  \
        udev_db.h                       \
        udev_sysfs.h                    \
        logging.h                       \
        udev_db.h                       \
        udev_sysfs.h                    \
        logging.h                       \
@@ -86,8 +85,10 @@ UDEV_OBJS = \
 LIBUDEV = libudev.a
 
 MAN_PAGES = \
 LIBUDEV = libudev.a
 
 MAN_PAGES = \
+       udev.8                          \
        udevmonitor.8                   \
        udevd.8                         \
        udevmonitor.8                   \
        udevd.8                         \
+       udevsend.8                      \
        udevtest.8                      \
        udevinfo.8                      \
        udevstart.8
        udevtest.8                      \
        udevinfo.8                      \
        udevstart.8
@@ -227,19 +228,27 @@ all: $(KLCC) $(PROGRAMS) $(MAN_PAGES)
        done;
 .PHONY: all
 
        done;
 .PHONY: all
 
-$(PROGRAMS): $(HOST_PROGS) $(KLCC) $(HEADERS) $(GEN_HEADERS) $(LIBSYSFS) $(LIBUDEV)
-       $(QUIET) $(CC) $(CFLAGS) -c -o $@.o $@.c
-       $(QUIET) $(LD) $(LDFLAGS) -o $@ $@.o $(LIBUDEV) $(LIBSYSFS) $(LIB_OBJS)
+# clear implicit rules
+.SUFFIXES:
+
+# build the objects
+%.o: %.c
+       $(QUIET) $(CC) -c $(CFLAGS) $< -o $@
+
+# "Static Pattern Rule" to build all programs
+$(PROGRAMS): %: $(HOST_PROGS) $(KLCC) $(HEADERS) $(GEN_HEADERS) $(LIBSYSFS) $(LIBUDEV) %.o
+       $(QUIET) $(LD) $(LDFLAGS) $@.o -o $@ $(LIBUDEV) $(LIBSYSFS) $(LIB_OBJS)
        $(QUIET) $(STRIPCMD) $@
 
        $(QUIET) $(STRIPCMD) $@
 
-# our own copy of klibc if KLCC is specified it will not be used
+# our own copy of klibc, it is not used if KLCC is given
 $(KLCC):
 $(KLCC):
-       $(MAKE) -j1 -C klibc KRNLSRC=$(KERNEL_DIR) SUBDIRS=klibc TESTS= \
+       $(MAKE) -C klibc KRNLSRC=$(KERNEL_DIR) SUBDIRS=klibc TESTS= \
                         SHLIBDIR=$(KLIBC_INSTALL)/lib \
                         INSTALLDIR=$(KLIBC_INSTALL) \
                         bindir=$(KLIBC_INSTALL)/bin \
                         mandir=$(KLIBC_INSTALL)/man all install
        -find $(KLIBC_INSTALL)/include -name SCCS -print| xargs rm -rf
                         SHLIBDIR=$(KLIBC_INSTALL)/lib \
                         INSTALLDIR=$(KLIBC_INSTALL) \
                         bindir=$(KLIBC_INSTALL)/bin \
                         mandir=$(KLIBC_INSTALL)/man all install
        -find $(KLIBC_INSTALL)/include -name SCCS -print| xargs rm -rf
+.NOTPARALLEL: $(KLCC)
 
 $(UDEV_OBJS): $(KLCC)
 $(LIBUDEV): $(HOST_PROGS) $(HEADERS) $(GEN_HEADERS) $(UDEV_OBJS)
 
 $(UDEV_OBJS): $(KLCC)
 $(LIBUDEV): $(HOST_PROGS) $(HEADERS) $(GEN_HEADERS) $(UDEV_OBJS)
@@ -274,9 +283,6 @@ udev_version.h:
        xmlto man $?
 .PRECIOUS: %.8
 
        xmlto man $?
 .PRECIOUS: %.8
 
-.c.o:
-       $(QUIET) $(CC) $(CFLAGS) -c -o $@ $<
-
 ccdv: ccdv.c
        @$(HOSTCC) -O1 ccdv.c -o ccdv
 .SILENT: ccdv
 ccdv: ccdv.c
        @$(HOSTCC) -O1 ccdv.c -o ccdv
 .SILENT: ccdv
@@ -320,8 +326,8 @@ install-man:
        $(INSTALL_DATA) -D udevtest.8 $(DESTDIR)$(mandir)/man8/udevtest.8
        $(INSTALL_DATA) -D udevstart.8 $(DESTDIR)$(mandir)/man8/udevstart.8
        $(INSTALL_DATA) -D udevd.8 $(DESTDIR)$(mandir)/man8/udevd.8
        $(INSTALL_DATA) -D udevtest.8 $(DESTDIR)$(mandir)/man8/udevtest.8
        $(INSTALL_DATA) -D udevstart.8 $(DESTDIR)$(mandir)/man8/udevstart.8
        $(INSTALL_DATA) -D udevd.8 $(DESTDIR)$(mandir)/man8/udevd.8
+       $(INSTALL_DATA) -D udevsend.8 $(DESTDIR)$(mandir)/man8/udevsend.8
        $(INSTALL_DATA) -D udevmonitor.8 $(DESTDIR)$(mandir)/man8/udevmonitor.8
        $(INSTALL_DATA) -D udevmonitor.8 $(DESTDIR)$(mandir)/man8/udevmonitor.8
-       - ln -f -s udevd.8 $(DESTDIR)$(mandir)/man8/udevsend.8
        - ln -f -s udevd.8 $(DESTDIR)$(mandir)/man8/udevcontrol.8
 .PHONY: install-man
 
        - ln -f -s udevd.8 $(DESTDIR)$(mandir)/man8/udevcontrol.8
 .PHONY: install-man