Ian Jackson
2012-Sep-11 17:13 UTC
[PATCH v2] libxl: Fix missing dependency in api check rule
Without this, the api check cpp run might happen before the various autogenerated files which are #include by libxl.h are ready. We need to remove the api-ok file from AUTOINCS to avoid a circular dependency. Instead, we list it explicitly as a dependency of the object files. The result is that the api check is the last thing to be done before make considers the preparation done and can start work on compiling .c files into .o''s. Reported-by: Olaf Hering <olaf@aepfle.de> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com> --- v2: Remove .api-ok from AUTOINCS instead of using $(filter-out...) tools/libxl/Makefile | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/libxl/Makefile b/tools/libxl/Makefile index a9d9ec6..0986901 100644 --- a/tools/libxl/Makefile +++ b/tools/libxl/Makefile @@ -74,8 +74,7 @@ LIBXL_OBJS += _libxl_types.o libxl_flask.o _libxl_types_internal.o $(LIBXL_OBJS): CFLAGS += $(CFLAGS_libxenctrl) $(CFLAGS_libxenguest) $(CFLAGS_libxenstore) $(CFLAGS_libblktapctl) -include $(XEN_ROOT)/tools/config.h AUTOINCS= libxlu_cfg_y.h libxlu_cfg_l.h _libxl_list.h _paths.h \ - _libxl_save_msgs_callout.h _libxl_save_msgs_helper.h \ - libxl.api-ok + _libxl_save_msgs_callout.h _libxl_save_msgs_helper.h AUTOSRCS= libxlu_cfg_y.c libxlu_cfg_l.c AUTOSRCS += _libxl_save_msgs_callout.c _libxl_save_msgs_helper.c LIBXLU_OBJS = libxlu_cfg_y.o libxlu_cfg_l.o libxlu_cfg.o \ @@ -102,7 +101,8 @@ testidl.c: libxl_types.idl gentest.py libxl.h $(AUTOINCS) all: $(CLIENTS) libxenlight.so libxenlight.a libxlutil.so libxlutil.a \ $(AUTOSRCS) $(AUTOINCS) -$(LIBXL_OBJS) $(LIBXLU_OBJS) $(XL_OBJS) $(SAVE_HELPER_OBJS): $(AUTOINCS) +$(LIBXL_OBJS) $(LIBXLU_OBJS) $(XL_OBJS) $(SAVE_HELPER_OBJS): \ + $(AUTOINCS) libxl.api-ok %.c %.h:: %.y @rm -f $*.[ch] @@ -119,7 +119,7 @@ libxl.api-ok: check-libxl-api-rules _libxl.api-for-check $(PERL) $^ touch $@ -_%.api-for-check: %.h +_%.api-for-check: %.h $(AUTOINCS) $(CC) $(CPPFLAGS) $(CFLAGS) $(CFLAGS_$*.o) -c -E $< $(APPEND_CFLAGS) \ -DLIBXL_EXTERNAL_CALLERS_ONLY=LIBXL_EXTERNAL_CALLERS_ONLY \ >$@.new -- tg: (0730dd5..) t/xen/xl.make-api-depend-fix (depends on: base)
Olaf Hering
2012-Sep-11 18:54 UTC
Re: [PATCH v2] libxl: Fix missing dependency in api check rule
On Tue, Sep 11, Ian Jackson wrote:> Without this, the api check cpp run might happen before the various > autogenerated files which are #include by libxl.h are ready.The package still builds fine with this patch. Tested-by: Olaf Hering <olaf@aepfle.de>
Ian Campbell
2012-Sep-14 09:07 UTC
Re: [PATCH v2] libxl: Fix missing dependency in api check rule
On Tue, 2012-09-11 at 18:13 +0100, Ian Jackson wrote:> Without this, the api check cpp run might happen before the various > autogenerated files which are #include by libxl.h are ready. > > We need to remove the api-ok file from AUTOINCS to avoid a circular > dependency. Instead, we list it explicitly as a dependency of the > object files. The result is that the api check is the last thing to > be done before make considers the preparation done and can start work > on compiling .c files into .o''s. > > Reported-by: Olaf Hering <olaf@aepfle.de> > Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>Acked + Tested by Olaf + applied. Thanks.> > --- > v2: Remove .api-ok from AUTOINCS instead of using $(filter-out...) > > tools/libxl/Makefile | 8 ++++---- > 1 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/tools/libxl/Makefile b/tools/libxl/Makefile > index a9d9ec6..0986901 100644 > --- a/tools/libxl/Makefile > +++ b/tools/libxl/Makefile > @@ -74,8 +74,7 @@ LIBXL_OBJS += _libxl_types.o libxl_flask.o _libxl_types_internal.o > $(LIBXL_OBJS): CFLAGS += $(CFLAGS_libxenctrl) $(CFLAGS_libxenguest) $(CFLAGS_libxenstore) $(CFLAGS_libblktapctl) -include $(XEN_ROOT)/tools/config.h > > AUTOINCS= libxlu_cfg_y.h libxlu_cfg_l.h _libxl_list.h _paths.h \ > - _libxl_save_msgs_callout.h _libxl_save_msgs_helper.h \ > - libxl.api-ok > + _libxl_save_msgs_callout.h _libxl_save_msgs_helper.h > AUTOSRCS= libxlu_cfg_y.c libxlu_cfg_l.c > AUTOSRCS += _libxl_save_msgs_callout.c _libxl_save_msgs_helper.c > LIBXLU_OBJS = libxlu_cfg_y.o libxlu_cfg_l.o libxlu_cfg.o \ > @@ -102,7 +101,8 @@ testidl.c: libxl_types.idl gentest.py libxl.h $(AUTOINCS) > all: $(CLIENTS) libxenlight.so libxenlight.a libxlutil.so libxlutil.a \ > $(AUTOSRCS) $(AUTOINCS) > > -$(LIBXL_OBJS) $(LIBXLU_OBJS) $(XL_OBJS) $(SAVE_HELPER_OBJS): $(AUTOINCS) > +$(LIBXL_OBJS) $(LIBXLU_OBJS) $(XL_OBJS) $(SAVE_HELPER_OBJS): \ > + $(AUTOINCS) libxl.api-ok > > %.c %.h:: %.y > @rm -f $*.[ch] > @@ -119,7 +119,7 @@ libxl.api-ok: check-libxl-api-rules _libxl.api-for-check > $(PERL) $^ > touch $@ > > -_%.api-for-check: %.h > +_%.api-for-check: %.h $(AUTOINCS) > $(CC) $(CPPFLAGS) $(CFLAGS) $(CFLAGS_$*.o) -c -E $< $(APPEND_CFLAGS) \ > -DLIBXL_EXTERNAL_CALLERS_ONLY=LIBXL_EXTERNAL_CALLERS_ONLY \ > >$@.new