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


  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@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org

Reply via email to