[Fedora-packaging] Macro %{optflags}

Ralf Corsepius rc040203 at freenet.de
Thu Sep 16 14:09:57 UTC 2010


On 09/16/2010 03:49 PM, Sergio Belkin wrote:
> 2010/9/15 Ralf Corsepius<rc040203 at freenet.de>:
>> On 09/15/2010 05:02 PM, Sergio Belkin wrote:
>>>
>>> Hi,
>>>
>>> Does Makefile flags from the tarball overrides %{optflags} ?
>>
>> This question can't be answered.
>>
>> %{optflags} and Makefiles actually are entirely unrelated.
>>
>> How to communicate %{optflags} to Makefiles can vary largely between
>> rpm.specs and is part of the job package maintainers are supposed to take
>> care of.
>>
>> Ralf
>>
>
> Well I am really newbie packaging,
Everybody is a newbie, somewhere ;)

> As rpm command:
> rpm --eval "%{optflags}"
> -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
> -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686
> -mtune=atom -fasynchronous-unwind-tables
>
> but Makefile contains:
>
> CXXFLAGS=-ansi  -Wall -Wno-deprecated
 >
> So, what of these flags are commited?
To be able to help, you'd have to provide further details about the 
package you are trying to package, because there are several way to 
communicate %{optflags} to a package's build-system.

E.g.

* Plain simple Makefile:
Override the make-variable to receive %optflags from the environment at 
make-time:

make CFLAGS="%{optflags}"

* Modern autotools:
Pass optflags as args at configure-time:
.../configure CFLAGS="%{optflags}"

* Old autotools:
Pass from the environment:
CFLAGS="%{optflags}" .../configure

* Poorly written Makefiles which don't allow overriding from the 
environment:
Textual substitution before runming make:

sed -i -e "s,^CFLAGS.*,CFLAGS = %{optflags}," Makefile
make ....

etc. etc.

Also note that the name of the make-variable to take %optflags may vary. 
In most cases it's CFLAGS, in c++-projects it's often CXXFLAGS.


Ralf








More information about the packaging mailing list