qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]