Re: Recommended way to pass CFLAGS/LDFLAGS through libtool

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2018-04-09 05:21, Daniel P. Berrangé wrote:
> On Mon, Apr 09, 2018 at 04:21:54AM -0500, Yaakov Selkowitz wrote:
>> On 2018-04-09 03:59, Florian Weimer wrote:
>>> Is there a recommend way to get libtool to pass through all flags
>>> specified in CFLAGS and LDFLAGS unchanged, and have the GCC compiler
>>> driver sort out which flags to pass to the compiler/assembler/linker?
>>
>> $ libtool --mode=compile --help
>> [snip]
>> This mode accepts the following additional options:
>> [snip]
>>   -Wc,FLAG          pass FLAG directly to the compiler
>>
>> $ libtool --mode=link --help
>> [snip]
>> The following components of LINK-COMMAND are treated specially:
>> [snip]
>>   -Wc,FLAG
>>   -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
>>   -Wl,FLAG
>>   -Xlinker FLAG     pass linker-specific FLAG directly to the linker
>>
>> But, often when this happens, it is the fault of a poorly written
>> configure.ac or Makefile.am.  Where exactly are you seeing an issue?
> 
> Even if you use -Wl,FLAG, libtool may well still screw it up, because it
> arbitrarily re-orders all -Wl,FLAG args to come after/ the -lLIB args.
> This breaks flags which are position sensitive like -Wl,--as-needed
> eg
> 
>   libdemo_la_LDFLAGS = -Wl,--as-needed -lm -Wl,--no-as-needed -lvirt
> 
> will get turned into
> 
>   gcc .... -lm -lvirt -Wl,--as-needed -Wl,--no-as-needed

True, if you need to preserve order you need to use -Wl, for each such
argument, e.g.:

  libdemo_la_LDFLAGS = -Xlinker --as-needed -Xlinker -lm -Xlinker
--no-as-needed -lvirt

or:

  libdemo_la_LDFLAGS = -Wl,--as-needed,-lm,--no-as-needed -lvirt

Failure to do so would qualify as "a poorly written Makefile.am".

-- 
Yaakov Selkowitz
Software Engineer - Platform Enablement Group
Red Hat, Inc.
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux