aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-03-05 14:40:19 +0000
committerKeir Fraser <keir.fraser@citrix.com>2010-03-05 14:40:19 +0000
commiteccb4696e8b0dfbe12b7983d0ef1bae61aa5f173 (patch)
treee3a0433d71f64d89eaa22f6dca662b24cc99312e
parent2fcc5699d4f9f43e6edc78271123e42d051a0edc (diff)
downloadxen-eccb4696e8b0dfbe12b7983d0ef1bae61aa5f173.tar.gz
xen-eccb4696e8b0dfbe12b7983d0ef1bae61aa5f173.tar.bz2
xen-eccb4696e8b0dfbe12b7983d0ef1bae61aa5f173.zip
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 <ian.jackson@eu.citrix.com>
-rw-r--r--stubdom/Makefile4
-rw-r--r--tools/flask/policy/Makefile6
-rw-r--r--tools/xenstat/libxenstat/Makefile6
3 files changed, 11 insertions, 5 deletions
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)