aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2010-09-20 16:57:08 +0100
committerJan Beulich <jbeulich@novell.com>2010-09-20 16:57:08 +0100
commit1e7aadfdffeee8f6f62c7f06a34966d62d2c297f (patch)
tree3ccf4895d1ccba659f17723f318e125ed6e511cd
parenta11b6c53f6f178978f67a906a54ed6952cd6f048 (diff)
downloadxen-1e7aadfdffeee8f6f62c7f06a34966d62d2c297f.tar.gz
xen-1e7aadfdffeee8f6f62c7f06a34966d62d2c297f.tar.bz2
xen-1e7aadfdffeee8f6f62c7f06a34966d62d2c297f.zip
libxl: fix Makefiles for autogenerated code (use multi-target patterns)
Building in a tree with read-only source files failed because the flex/ bison generated files are left in place. All of the source files (instead of all of the object files) were depending on libxl.h (in particular forcing the needless re-generation of the flex/bison generated files). For _libxl_types.[ch] a single non-pattern rule was used. For non- pattern rules with multiple targets, other than for pattern ones, the body gets executed once for each target, causing problems when building with -j<n>, <n> >= 2. Convert this rule to a pattern one. The flex/bison generated headers pointlessly depended on the corresponding source files. Use multiple-target pattern rules instead. It would also have been nice if the minimal flex/bison versions needed to successfully build libxl were documented: neither flex 2.5.31 nor bison 2.1 (as found e.g. on SLE10) is sufficient. Signed-off-by: Jan Beulich <jbeulich@novell.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
-rw-r--r--tools/libxl/Makefile25
1 files changed, 11 insertions, 14 deletions
diff --git a/tools/libxl/Makefile b/tools/libxl/Makefile
index a14724d0cb..9f74d4b284 100644
--- a/tools/libxl/Makefile
+++ b/tools/libxl/Makefile
@@ -42,18 +42,15 @@ XL_OBJS = xl.o xl_cmdimpl.o xl_cmdtable.o
all: $(CLIENTS) libxenlight.so libxenlight.a libxlutil.so libxlutil.a \
$(AUTOSRCS) $(AUTOINCS)
-$(AUTOINCS): $(AUTOSRCS)
-
-#%_y.h: %_y.c
-#%_l.h: %_l.c
-
$(LIBXLU_OBJS): $(AUTOINCS)
-%.c: %.y
- $(BISON) --output=$@ $<
+%.c %.h: %.y
+ @rm -f $*.[ch]
+ $(BISON) --output=$*.c $<
-%.c: %.l
- $(FLEX) --header-file=$*.h --outfile=$@ $<
+%.c %.h: %.l
+ @rm -f $*.[ch]
+ $(FLEX) --header-file=$*.h --outfile=$*.c $<
genpath-target = $(call buildmakevars2file,_libxl_paths.h)
$(eval $(genpath-target))
@@ -66,12 +63,12 @@ libxl_paths.c: _libxl_paths.h
libxl.h: _libxl_types.h
-$(LIBXL_OBJS:%.o=%.c) $(LIBXLU_OBJS:%.o=%.c) $(XL_OBJS:%.o=%.c): libxl.h
+$(LIBXL_OBJS) $(LIBXLU_OBJS) $(XL_OBJS): libxl.h
-_libxl_types.h _libxl_types.c: libxl.idl gentypes.py libxltypes.py
- $(PYTHON) gentypes.py libxl.idl __libxl_types.h __libxl_types.c
- mv __libxl_types.h _libxl_types.h
- mv __libxl_types.c _libxl_types.c
+_libxl_%.h _libxl_%.c: libxl.idl gen%.py libxl%.py
+ $(PYTHON) gen$*.py libxl.idl __libxl_$*.h __libxl_$*.c
+ mv __libxl_$*.h _libxl_$*.h
+ mv __libxl_$*.c _libxl_$*.c
libxenlight.so: libxenlight.so.$(MAJOR)
ln -sf $< $@