From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35160) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yq0pk-0002op-Dr for qemu-devel@nongnu.org; Wed, 06 May 2015 11:02:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Yq0ph-0007Vw-8h for qemu-devel@nongnu.org; Wed, 06 May 2015 11:02:00 -0400 Received: from mx1.redhat.com ([209.132.183.28]:38496) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yq0ph-0007Va-2L for qemu-devel@nongnu.org; Wed, 06 May 2015 11:01:57 -0400 Date: Wed, 6 May 2015 23:01:49 +0800 From: Fam Zheng Message-ID: <20150506150149.GC1535@ad.nay.redhat.com> References: <1430920000-31229-1-git-send-email-famz@redhat.com> <554A2012.2080109@redhat.com> <20150506142315.GA1535@ad.nay.redhat.com> <554A26EE.7050108@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <554A26EE.7050108@redhat.com> Subject: Re: [Qemu-devel] [PATCH] rules.mak: Force CFLAGS for all objects in DSO List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: Peter Maydell , agraf@suse.de, Michael Tokarev , qemu-devel@nongnu.org, Stefan Weil On Wed, 05/06 16:36, Paolo Bonzini wrote: > > > On 06/05/2015 16:23, Fam Zheng wrote: > >>> > > + $(eval $($v:%.mo=%$(DSOSUF)) $($v) $(foreach o,$($v),$($o-objs)) .PHONY: CFLAGS += -fPIC -DBUILD_DSO) > > ^ ^ ^ ^ > > | | | | > > | | | `- In case all others are empty. > > | | | > > | | `- Expansion of all %.mo-objs so it's a %.o list. > > | | For $v=block-obj-m, this will contain curl.o, iscsi.o, ... > > | | > > | `- %.mo list > > | For $v=block-obj-m, this will contain curl.mo, iscsi.mo, ... > > | > > `- %.so list > > For $v=block-obj-m, this will contain curl.so, iscsi.so, . > > Great. :) You should have used Unicode drawing characters to be > consistent with rules.mak! Well, I'd have to find and read the vim plugin doc to do that again! > > But hopefully the ASCII art is not needed at all. Do we need all of those? > > - foo.mo is a prerequisite of foo.so. You cannot use foo.so (this is > the bug you are fixing) but foo.so doesn't use CFLAGS in its rule, and > you should be able to remove it. > > - can you use foo.mo without hitting the original bug? If so, could you > simply use: > > -%$(DSOSUF): CFLAGS += -fPIC -DBUILD_DSO > +%.mo: CFLAGS += -fPIC -DBUILD_DSO I believe this will propagate the flags correctly. However that will affect non-module build, so I didn't want to do it unconditionally. > > (and if so move the rule down, above "%.mo:")? If you cannot use > foo.mo, foo.mo also doesn't use CFLAGS in its rules, and you should be > able to remove foo.mo too. > > - so the other possibility is to just use $(foreach o,$($v),$($o-objs)). > In this case there's already a convenient $(foreach) just above, and > you can just add another $(eval) inside it. > > - and if that is true, you do not need .PHONY either because you have > $(foreach ... $(eval)) instead of $(eval $(foreach)). > OK. It's been a long day for me, so you can see that I'm going defensive with the code I'm writing, but yes, your last "if" looks about right, except we still need the "$(if $(CONFIG_MODULES),...)". Sanity check: is -fPIC only ever needed in compiling, but not in (partial) linking, right? Fam