[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] rules.mak: Force CFLAGS for all objects in DSO
From: |
Fam Zheng |
Subject: |
Re: [Qemu-devel] [PATCH] rules.mak: Force CFLAGS for all objects in DSO |
Date: |
Wed, 6 May 2015 23:01:49 +0800 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
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
Re: [Qemu-devel] [PATCH] rules.mak: Force CFLAGS for all objects in DSO, Alexander Graf, 2015/05/06