toolchain: linker options with a $ sign are not supported

As reported in bug #7172 [0], setting BR2_TARGET_LDFLAGS to a value
containing a $ sign can lead to unexpected results.

This is because it is very hard to know when the $ sign gets evaluated:
  - in the Buildroot-level make
  - in the shell called by the Buildroot-level make
  - in the package's own build-system, either at configure time, in the
    Makefile, in a shell in the Makefile...

So, it is very difficult to know how much escaping that would need.

A proposal is to use a shell variable to pass such values unmolested.
But it is not that simple either, since it still contains a $ sign, and
there is not much certainty as to when it would be evaluated.

Instead, just document this limitation, both in the help text for
BR2_TARGET_LDFLAGS, and in the known-issues section in the manual.

Does not really fix #7172, but at least the limitation is documented.

[0] https://bugs.buildroot.org/show_bug.cgi?id=7172

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Mike Zick <minimod@morethan.org>
Reviewed-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Yann E. MORIN 2014-07-31 00:57:15 +02:00 committed by Thomas Petazzoni
parent c9f5a86eae
commit a930d9cef6
2 changed files with 7 additions and 0 deletions

View File

@ -3,6 +3,10 @@
= Known issues = Known issues
* It is not possible to pass extra linker options via +BR2_TARGET_LDFLAGS+
if such options contain a +$+ sign. For example, the following is known
to break: +BR2_TARGET_LDFLAGS="-Wl,-rpath=\'$ORIGIN/../lib'"+
* The +ltp-testsuite+ package does not build with the default uClibc * The +ltp-testsuite+ package does not build with the default uClibc
configuration used by the Buildroot toolchain backend. The LTP configuration used by the Buildroot toolchain backend. The LTP
testsuite uses several functions that are considered obsolete, such testsuite uses several functions that are considered obsolete, such

View File

@ -132,6 +132,9 @@ config BR2_TARGET_LDFLAGS
help help
Extra options to pass to the linker when building for the target. Extra options to pass to the linker when building for the target.
Note that options with a '$' sign (eg. -Wl,-rpath='$ORIGIN/../lib')
are not supported.
config BR2_ECLIPSE_REGISTER config BR2_ECLIPSE_REGISTER
bool "Register toolchain within Eclipse Buildroot plug-in" bool "Register toolchain within Eclipse Buildroot plug-in"
help help