Il 10/09/2013 09:16, Fam Zheng ha scritto: > The base point of unnesting is fixed to SRC_PATH: > > define unnest-dir > ... > $(eval include $(SRC_PATH)/$1/Makefile.objs) > ... > endef > > So it can't unnest "../". block-obj-y = ./ makes a little more sense, but > $(obj) can be messed, again.
Right. I was confusing the object directory with the source directory. > Do you think two calls of unnest-vars OK? > > nested-vars = obj-y > dummy := $(call unnest-vars) > include $(SRC_PATH)/Makefile.objs > obj-base := .. > nested-vars = block-obj-y common-obj-y > dummy := $(call unnest-vars) Yeah, that's fine. Perhaps nested-vars and obj-base could become arguments to unnest-vars, too. Paolo >>> +dummy := $(call unnest-vars) >>> >>> all-obj-y = $(obj-y) >>> -all-obj-y += $(addprefix ../, $(common-obj-y)) >>> +all-obj-y += $(addprefix ../, $(common-obj-y) $(block-obj-y)) >>> >>> 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/rules.mak b/rules.mak >>> index 4499745..3ff7d7a 100644 >>> --- a/rules.mak >>> +++ b/rules.mak >>> @@ -103,7 +103,7 @@ clean: clean-timestamp >>> >>> # magic to descend into other directories >>> >>> -obj := . >>> +obj = $(obj-base) >>> old-nested-dirs := >>> >>> define push-var >>> @@ -119,9 +119,11 @@ endef >>> >>> define unnest-dir >>> $(foreach var,$(nested-vars),$(call push-var,$(var),$1/)) >>> -$(eval obj := $(obj)/$1) >>> +$(eval obj-parent-$1 := $(obj)) >>> +$(eval obj := $(if $(obj),$(obj)/$1,$1)) >>> $(eval include $(SRC_PATH)/$1/Makefile.objs) >>> -$(eval obj := $(patsubst %/$1,%,$(obj))) >>> +$(eval obj := $(obj-parent-$1)) >>> +$(eval obj-parent-$1 := ) >>> $(foreach var,$(nested-vars),$(call pop-var,$(var),$1/)) >>> endef >>> >>> diff --git a/tests/Makefile b/tests/Makefile >>> index baba9e9..15ef039 100644 >>> --- a/tests/Makefile >>> +++ b/tests/Makefile >>> @@ -110,6 +110,10 @@ 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 >>> >>> +nested-vars := block-obj-y >>> +obj-base := .. >>> +dummy := $(call unnest-vars) >>> + >>> tests/test-x86-cpuid.o: QEMU_INCLUDES += -I$(SRC_PATH)/target-i386 >>> >>> tests/check-qint$(EXESUF): tests/check-qint.o libqemuutil.a >>> >> > >
