From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48297) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VJIpt-000789-OO for qemu-devel@nongnu.org; Tue, 10 Sep 2013 03:58:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VJIpi-0000Tc-VK for qemu-devel@nongnu.org; Tue, 10 Sep 2013 03:58:09 -0400 Received: from mail-qc0-x22c.google.com ([2607:f8b0:400d:c01::22c]:60820) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VJIpi-0000TT-RW for qemu-devel@nongnu.org; Tue, 10 Sep 2013 03:57:58 -0400 Received: by mail-qc0-f172.google.com with SMTP id l13so1908040qcy.31 for ; Tue, 10 Sep 2013 00:57:57 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <522ED10A.1080107@redhat.com> Date: Tue, 10 Sep 2013 09:58:02 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1378774978-22602-1-git-send-email-famz@redhat.com> <1378774978-22602-2-git-send-email-famz@redhat.com> <522EBD6E.5080400@redhat.com> <20130910071611.GA21082@T430s.nay.redhat.com> In-Reply-To: <20130910071611.GA21082@T430s.nay.redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC PATCH v3 1/5] make.rule: fix $(obj) to a real relative path List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: famz@redhat.com Cc: peter.maydell@linaro.org, mjt@tls.msk.ru, qemu-devel@nongnu.org, stefanha@redhat.com, vilanova@ac.upc.edu, rth@twiddle.net 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 >>> >> > >