diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2012-07-30 23:57:50 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2012-07-31 00:27:56 +0200 |
commit | bd923ff29e09eee0a6be15813339351cd2175b62 (patch) | |
tree | adcc0d8ccd3606e8afe8270d548ee66fd2268de3 | |
parent | 023b9d33e93ea79b6f81daab82cfdca35360e2d0 (diff) |
build-sys: always create the output directory first
$(MKDIR_P) is added where missing, and rules are standardized on one
form of $(MKDIR_P), to make it easier to spot when it is missing.
Single line $(MKDIR)&&command form is broken into two line form.
https://bugs.freedesktop.org/show_bug.cgi?id=49459
For compilation in a separate build directory to work, when a file is
generated, the rule must include an explicit mkdir first, unless the
file is created at the top level. Even when building in a separate
build-dir, automake would normally create all directories as a side
result of creating the dependencies files. Therefore the bug was only
visible with -C (turning off dependency generation).
-rw-r--r-- | Makefile.am | 57 |
1 files changed, 30 insertions, 27 deletions
diff --git a/Makefile.am b/Makefile.am index e4dfafb4b5..153cfd6432 100644 --- a/Makefile.am +++ b/Makefile.am @@ -677,8 +677,8 @@ CLEANFILES += \ man/index.html man/index.html: make-man-index.py $(XML_FILES) - $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ - $(PYTHON) $^ > $@ + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_GEN)$(PYTHON) $^ > $@ EXTRA_DIST += \ man/index.html @@ -1011,8 +1011,8 @@ libsystemd_core_la_LIBADD = \ $(KMOD_LIBS) src/core/load-fragment-gperf-nulstr.c: src/core/load-fragment-gperf.gperf - $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ - $(AWK) 'BEGIN{ keywords=0 ; FS="," ; print "extern const char load_fragment_gperf_nulstr[];" ; print "const char load_fragment_gperf_nulstr[] ="} ; keyword==1 { print "\"" $$1 "\\0\"" } ; /%%/ { keyword=1} ; END { print ";" }' < $< > $@ + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_GEN)$(AWK) 'BEGIN{ keywords=0 ; FS="," ; print "extern const char load_fragment_gperf_nulstr[];" ; print "const char load_fragment_gperf_nulstr[] ="} ; keyword==1 { print "\"" $$1 "\\0\"" } ; /%%/ { keyword=1} ; END { print ";" }' < $< > $@ EXTRA_DIST += \ src/core/load-fragment-gperf.gperf.m4 @@ -1029,15 +1029,19 @@ BUILT_SOURCES += \ src/core/syscall-to-name.h src/core/syscall-list.txt: Makefile + $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include sys/syscall.h - < /dev/null | $(AWK) '/^#define[ \t]+__NR_[^ ]+[ \t]+[0-9]/ { sub(/__NR_/, "", $$2); print $$2; }' > $@ src/core/syscall-from-name.gperf: src/core/syscall-list.txt Makefile + $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(AWK) 'BEGIN{ print "struct syscall_name { const char* name; int id; };"; print "%null-strings"; print "%%";} { printf "%s, __NR_%s\n", $$1, $$1 }' < $< > $@ src/core/syscall-from-name.h: src/core/syscall-from-name.gperf Makefile + $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_syscall -H hash_syscall_name -p -C < $< > $@ src/core/syscall-to-name.h: src/core/syscall-list.txt Makefile + $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(AWK) 'BEGIN{ print "const char* const syscall_names[] = { "} { printf "[__NR_%s] = \"%s\",\n", $$1, $$1 } END{print "};"}' < $< > $@ # ------------------------------------------------------------------------------ @@ -1515,7 +1519,7 @@ pkginclude_HEADERS += \ # move lib from $(libdir) to $(rootlibdir) and update devel link, if needed libsystemd-daemon-install-hook: if test "$(libdir)" != "$(rootlibdir)"; then \ - mkdir -p $(DESTDIR)$(rootlibdir) && \ + $(MKDIR_P) $(DESTDIR)$(rootlibdir) && \ so_img_name=$$(readlink $(DESTDIR)$(libdir)/libsystemd-daemon.so) && \ so_img_rel_target_prefix=$$(echo $(libdir) | sed 's,\(^/\|\)[^/][^/]*,..,g') && \ ln -sf $$so_img_rel_target_prefix$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/libsystemd-daemon.so && \ @@ -1626,7 +1630,7 @@ CLEANFILES += \ # move lib from $(libdir) to $(rootlibdir) and update devel link, if needed libudev-install-move-hook: if test "$(libdir)" != "$(rootlibdir)"; then \ - mkdir -p $(DESTDIR)$(rootlibdir) && \ + $(MKDIR_P) $(DESTDIR)$(rootlibdir) && \ so_img_name=$$(readlink $(DESTDIR)$(libdir)/libudev.so) && \ so_img_rel_target_prefix=$$(echo $(libdir) | sed 's,\(^/\|\)[^/][^/]*,..,g') && \ ln -sf $$so_img_rel_target_prefix$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/libudev.so && \ @@ -1671,7 +1675,7 @@ man/systemd-udevd-control.socket.8: man/systemd-udevd.service.8 man/systemd-udevd-kernel.socket.8: man/systemd-udevd.service.8 udev-confdirs: - -mkdir -p $(DESTDIR)$(sysconfdir)/udev/rules.d + -$(MKDIR_P) $(DESTDIR)$(sysconfdir)/udev/rules.d INSTALL_DATA_HOOKS += udev-confdirs @@ -1717,10 +1721,10 @@ CLEANFILES += \ units/systemd-udev-settle.service systemd-install-hook: - mkdir -p $(DESTDIR)$(systemunitdir)/sockets.target.wants + $(MKDIR_P) $(DESTDIR)$(systemunitdir)/sockets.target.wants ln -sf ../systemd-udevd-control.socket $(DESTDIR)$(systemunitdir)/sockets.target.wants/systemd-udevd-control.socket ln -sf ../systemd-udevd-kernel.socket $(DESTDIR)$(systemunitdir)/sockets.target.wants/systemd-udevd-kernel.socket - mkdir -p $(DESTDIR)$(systemunitdir)/sysinit.target.wants + $(MKDIR_P) $(DESTDIR)$(systemunitdir)/sysinit.target.wants ln -sf ../systemd-udevd.service $(DESTDIR)$(systemunitdir)/sysinit.target.wants/systemd-udevd.service ln -sf ../systemd-udev-trigger.service $(DESTDIR)$(systemunitdir)/sysinit.target.wants/systemd-udev-trigger.service @@ -1836,7 +1840,8 @@ check_DATA += \ # packed sysfs test tree test/sys: - $(AM_V_GEN)mkdir -p test && tar -C test/ -xJf $(top_srcdir)/test/sys.tar.xz + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_GEN)tar -C test/ -xJf $(top_srcdir)/test/sys.tar.xz test-sys-distclean: -rm -rf test/sys @@ -2002,19 +2007,17 @@ libgudev_1_0_la_LDFLAGS = \ -export-symbols-regex '^g_udev_.*' src/gudev/gudevmarshal.h: src/gudev/gudevmarshal.list + $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)glib-genmarshal $< --prefix=g_udev_marshal --header > $@ src/gudev/gudevmarshal.c: src/gudev/gudevmarshal.list - $(AM_V_GEN)echo "#include \"gudevmarshal.h\"" > $@ && \ + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_GEN)echo '#include "gudevmarshal.h"' > $@ && \ glib-genmarshal $< --prefix=g_udev_marshal --body >> $@ -src/gudev/gudevenumtypes.h: src/gudev/gudevenumtypes.h.template src/gudev/gudevenums.h - $(AM_V_GEN)glib-mkenums --template $^ > \ - $@.tmp && mv $@.tmp $@ - -src/gudev/gudevenumtypes.c: src/gudev/gudevenumtypes.c.template src/gudev/gudevenums.h - $(AM_V_GEN)glib-mkenums --template $^ > \ - $@.tmp && mv $@.tmp $@ +src/gudev/gudevenumtypes.%: src/gudev/gudevenumtypes.%.template src/gudev/gudevenums.h + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_GEN)glib-mkenums --template $^ > $@ if HAVE_INTROSPECTION -include $(INTROSPECTION_MAKEFILE) @@ -2067,7 +2070,7 @@ endif # HAVE_INTROSPECTION # move lib from $(libdir) to $(rootlibdir) and update devel link, if needed libgudev-install-move-hook: if test "$(libdir)" != "$(rootlibdir)"; then \ - mkdir -p $(DESTDIR)$(rootlibdir) && \ + $(MKDIR_P) $(DESTDIR)$(rootlibdir) && \ so_img_name=$$(readlink $(DESTDIR)$(libdir)/libgudev-1.0.so) && \ so_img_rel_target_prefix=$$(echo $(libdir) | sed 's,\(^/\|\)[^/][^/]*,..,g') && \ ln -sf $$so_img_rel_target_prefix$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/libgudev-1.0.so && \ @@ -2202,7 +2205,7 @@ dist_udevkeymapforcerel_DATA = \ keymaps-force-release/common-volume-keys src/udev/keymap/keys.txt: Makefile - $(AM_V_at)mkdir -p src/udev/keymap + $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include linux/input.h - < /dev/null | $(AWK) '/^#define[ \t]+KEY_[^ ]+[ \t]+[0-9]/ { if ($$2 != "KEY_MAX") { print $$2 } }' | sed 's/^KEY_COFFEE$$/KEY_SCREENLOCK/' > $@ src/udev/keymap/keys-from-name.gperf: src/udev/keymap/keys.txt Makefile @@ -2282,7 +2285,7 @@ pkgconfiglib_DATA += \ # move lib from $(libdir) to $(rootlibdir) and update devel link, if needed libsystemd-id128-install-hook: if test "$(libdir)" != "$(rootlibdir)"; then \ - mkdir -p $(DESTDIR)$(rootlibdir) && \ + $(MKDIR_P) $(DESTDIR)$(rootlibdir) && \ so_img_name=$$(readlink $(DESTDIR)$(libdir)/libsystemd-id128.so) && \ so_img_rel_target_prefix=$$(echo $(libdir) | sed 's,\(^/\|\)[^/][^/]*,..,g') && \ ln -sf $$so_img_rel_target_prefix$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/libsystemd-id128.so && \ @@ -2446,7 +2449,7 @@ endif # move lib from $(libdir) to $(rootlibdir) and update devel link, if needed libsystemd-journal-install-hook: if test "$(libdir)" != "$(rootlibdir)"; then \ - mkdir -p $(DESTDIR)$(rootlibdir) && \ + $(MKDIR_P) $(DESTDIR)$(rootlibdir) && \ so_img_name=$$(readlink $(DESTDIR)$(libdir)/libsystemd-journal.so) && \ so_img_rel_target_prefix=$$(echo $(libdir) | sed 's,\(^/\|\)[^/][^/]*,..,g') && \ ln -sf $$so_img_rel_target_prefix$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/libsystemd-journal.so && \ @@ -3172,7 +3175,7 @@ endif # move lib from $(libdir) to $(rootlibdir) and update devel link, if needed libsystemd-login-install-hook: if test "$(libdir)" != "$(rootlibdir)"; then \ - mkdir -p $(DESTDIR)$(rootlibdir) && \ + $(MKDIR_P) $(DESTDIR)$(rootlibdir) && \ so_img_name=$$(readlink $(DESTDIR)$(libdir)/libsystemd-login.so) && \ so_img_rel_target_prefix=$$(echo $(libdir) | sed 's,\(^/\|\)[^/][^/]*,..,g') && \ ln -sf $$so_img_rel_target_prefix$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/libsystemd-login.so && \ @@ -3381,12 +3384,12 @@ src/%.policy.in: src/%.policy.in.in Makefile $(AM_V_GEN)chmod +x $@ src/%.c: src/%.gperf - $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ - $(GPERF) < $< > $@ + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_GEN)$(GPERF) < $< > $@ src/%: src/%.m4 - $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ - $(M4) -P $(M4_DEFINES) < $< > $@ + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_GEN)$(M4) -P $(M4_DEFINES) < $< > $@ M4_PROCESS_SYSTEM = \ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ |