Il 11/09/2013 07:38, Fam Zheng ha scritto: > Makefile.target includes rule.mak and unnested common-obj-y, then prefix > them with '../', this will ignore object specific QEMU_CFLAGS in subdir > Makefile.objs: > > $(obj)/curl.o: QEMU_CFLAGS += $(CURL_CFLAGS) > > Because $(obj) here is './block', instead of '../block'. This doesn't > hurt compiling because we basically build all .o from top Makefile, > before entering Makefile.target, but it will affact arriving per-object > libs support. > > The starting point of $(obj) is passed in as argument of unnest-vars, as > well as nested variables, so that different Makefiles can pass in a > right value. > > Signed-off-by: Fam Zheng <f...@redhat.com> > --- > Makefile | 16 +++++++++++++++- > Makefile.objs | 16 +--------------- > Makefile.target | 16 +++++++++++++--- > configure | 1 + > rules.mak | 12 +++++++----- > tests/Makefile | 2 ++ > 6 files changed, 39 insertions(+), 24 deletions(-)
Just two questions... > diff --git a/Makefile.target b/Makefile.target > index 9a49852..1d92523 100644 > --- a/Makefile.target > +++ b/Makefile.target > @@ -143,13 +143,23 @@ endif # CONFIG_SOFTMMU > # Workaround for http://gcc.gnu.org/PR55489, see configure. > %/translate.o: QEMU_CFLAGS += $(TRANSLATE_OPT_CFLAGS) > > -nested-vars += obj-y > +dummy := $(call unnest-vars,,obj-y) > > -# This resolves all nested paths, so it must come last > +# we are making another call to unnest-vars with different vars, protect > obj-y, > +# it can be overriden in subdir Makefile.objs > +obj-y-save := $(obj-y) > + > +block-obj-y := > +common-obj-y := > include $(SRC_PATH)/Makefile.objs > +dummy := $(call unnest-vars,..,block-obj-y common-obj-y) > + > +# Now restore obj-y > +obj-y := $(obj-y-save) > > all-obj-y = $(obj-y) > -all-obj-y += $(addprefix ../, $(common-obj-y)) > +all-obj-y += $(addprefix ../, $(common-obj-y) $(block-obj-y)) Why is addprefix still needed? > > ifndef CONFIG_HAIKU > LIBS+=-lm > diff --git a/configure b/configure > index e989609..cc3cd4d 100755 > --- a/configure > +++ b/configure > @@ -2251,6 +2251,7 @@ fi > if $pkg_config --atleast-version=$glib_req_ver gthread-2.0; then > glib_cflags=`$pkg_config --cflags gthread-2.0` > glib_libs=`$pkg_config --libs gthread-2.0` > + CFLAGS="$glib_cflags $CFLAGS" > LIBS="$glib_libs $LIBS" > libs_qga="$glib_libs $libs_qga" > else > diff --git a/tests/Makefile b/tests/Makefile > index baba9e9..1b4048c 100644 > --- a/tests/Makefile > +++ b/tests/Makefile > @@ -110,6 +110,8 @@ test-qapi-obj-y = tests/test-qapi-visit.o > tests/test-qapi-types.o > $(test-obj-y): QEMU_INCLUDES += -Itests > QEMU_CFLAGS += -I$(SRC_PATH)/tests > > +dummy := $(call unnest-vars,..,block-obj-y) > + And why is this needed, since tests/Makefile is included from the top directory? Paolo > tests/test-x86-cpuid.o: QEMU_INCLUDES += -I$(SRC_PATH)/target-i386 > > tests/check-qint$(EXESUF): tests/check-qint.o libqemuutil.a >