From: Keir Fraser Date: Fri, 5 Mar 2010 14:40:19 +0000 (+0000) Subject: Fix Makefile targets that generate several files at once X-Git-Tag: 4.0.0-rc6~18 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=eccb4696e8b0dfbe12b7983d0ef1bae61aa5f173;p=xen.git Fix Makefile targets that generate several files at once In a few places in the tree the Makefiles have constructs like this: one_file another_file: $(COMMAND_WHICH_GENERATES_BOTH_AT_ONCE) This is wrong, because make will run _two copies_ of the same command at once. This generally causes races and hard-to-reproduce build failures. Notably, `make -j4' at the top level will build stubdom libxc twice simultaneously! In this patch we replace the occurrences of this construct with the correct idiom: one_file: another_file another_file: $(COMMAND_WHICH_GENERATES_BOTH_AT_ONCE) Signed-off-by: Ian Jackson --- diff --git a/stubdom/Makefile b/stubdom/Makefile index 15048f08a1..43e8e9217b 100644 --- a/stubdom/Makefile +++ b/stubdom/Makefile @@ -265,9 +265,11 @@ $(TARGETS_MINIOS): mini-os-%: .PHONY: libxc libxc: libxc-$(XEN_TARGET_ARCH)/libxenctrl.a libxc-$(XEN_TARGET_ARCH)/libxenguest.a -libxc-$(XEN_TARGET_ARCH)/libxenctrl.a libxc-$(XEN_TARGET_ARCH)/libxenguest.a:: cross-zlib +libxc-$(XEN_TARGET_ARCH)/libxenctrl.a: cross-zlib CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) -C libxc-$(XEN_TARGET_ARCH) + libxc-$(XEN_TARGET_ARCH)/libxenguest.a: libxc-$(XEN_TARGET_ARCH)/libxenctrl.a + ####### # ioemu ####### diff --git a/tools/flask/policy/Makefile b/tools/flask/policy/Makefile index 4c0d428b57..e39f0761ea 100644 --- a/tools/flask/policy/Makefile +++ b/tools/flask/policy/Makefile @@ -166,7 +166,8 @@ $(LOADPATH): policy.conf # # Load the binary policy # -reload tmp/load: $(LOADPATH) $(FCPATH) +tmp/load: reload +reload: $(LOADPATH) $(FCPATH) @echo "Loading $(NAME) $(LOADPATH)" $(QUIET) $(LOADPOLICY) $(LOADPATH) @touch tmp/load @@ -205,7 +206,8 @@ tmp/post_te_files.conf: $(POST_TE_FILES) # extract attributes and put them first. extract post te stuff # like genfscon and put last. portcon, nodecon, and netifcon # is delayed since they are generated by m4 -tmp/all_attrs_types.conf tmp/only_te_rules.conf tmp/all_post.conf: tmp/all_te_files.conf tmp/post_te_files.conf +tmp/all_attrs_types.conf tmp/all_post.conf: tmp/only_te_rules.conf +tmp/only_te_rules.conf: tmp/all_te_files.conf tmp/post_te_files.conf $(QUIET) grep ^attribute tmp/all_te_files.conf > tmp/all_attrs_types.conf || true $(QUIET) grep '^type ' tmp/all_te_files.conf >> tmp/all_attrs_types.conf $(QUIET) cat tmp/post_te_files.conf > tmp/all_post.conf diff --git a/tools/xenstat/libxenstat/Makefile b/tools/xenstat/libxenstat/Makefile index b40992959f..44313c77fe 100644 --- a/tools/xenstat/libxenstat/Makefile +++ b/tools/xenstat/libxenstat/Makefile @@ -107,7 +107,8 @@ SWIG_FLAGS=-module xenstat -Isrc # Python bindings PYTHON_VERSION=2.3 PYTHON_FLAGS=-I/usr/include/python$(PYTHON_VERSION) -lpython$(PYTHON_VERSION) -$(PYSRC) $(PYMOD): bindings/swig/xenstat.i +$(PYMOD): $(PYSRC) +$(PYSRC): bindings/swig/xenstat.i swig -python $(SWIG_FLAGS) -outdir $(@D) -o $(PYSRC) $< $(PYLIB): $(PYSRC) @@ -128,7 +129,8 @@ endif # Perl bindings PERL_FLAGS=`perl -MConfig -e 'print "$$Config{ccflags} -I$$Config{archlib}/CORE";'` -$(PERLSRC) $(PERLMOD): bindings/swig/xenstat.i +$(PERLMOD): $(PERLSRC) +$(PERLSRC): bindings/swig/xenstat.i swig -perl $(SWIG_FLAGS) -outdir $(@D) -o $(PERLSRC) $< $(PERLLIB): $(PERLSRC)