cc/gcc: CC_STATIC_LIBSTDCXX 'depends on' CONFIGURE_has_static_libstdcpp

Hide the staticaly linked libstdc++ option if the static libstdc++ is not
present, detected at configure time.

Add a blind option that says whether static linking is possible at all.
It defaults to 'y', but depends on the needed CONFIGURE_* options. For
now, it only depends on static libtdc++, but new dependencies can be
easily added.

Hide the global static toolchain option behind this new option.

Original patch by Bryan Hundven <bryanhundven@gmail.com>

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
This commit is contained in:
Yann E. MORIN" 2011-06-02 19:50:12 +02:00
parent 203f2d36ba
commit 08ebd6ec3d
3 changed files with 18 additions and 0 deletions

View File

@ -44,6 +44,7 @@ config CC_STATIC_LIBSTDCXX
bool
prompt "Link libstdc++ statically into the gcc binary"
default y
depends on CONFIGURE_has_static_libstdcxx
depends on CC_GCC_4_4_or_later
help
Newer gcc versions use the PPL library which is C++ code. Statically

View File

@ -46,10 +46,19 @@ config SYSROOT_DIR_PREFIX
In fact, the sysroot path is constructed as:
${CT_PREFIX_DIR}/${CT_TARGET}/${CT_SYSROOT_DIR_PREFIX}/${CT_SYSROOT_NAME}
# In case we need to add more conditions to enable static
# toolchain, we'll be adding them here
config STATIC_TOOLCHAIN_POSSIBLE
bool
default y
depends on CONFIGURE_has_static_libstdcxx
# Add new deps here! :-)
config STATIC_TOOLCHAIN
bool
prompt "Build Static Toolchain (EXPERIMENTAL)"
depends on EXPERIMENTAL
depends on STATIC_TOOLCHAIN_POSSIBLE
help
Build static host binaries.

8
configure vendored
View File

@ -437,6 +437,14 @@ stdcxx_libs="$( for x in so dylib a; do \
has_or_abort lib="${stdcxx_libs}" \
err="'libstdc++' shared library was not found"
# Yes, we may be checking twice for libstdc++.a
# The first is because we need one instance of libstdc++ (shared or static)
# because it is needed for PPL; the second is because the static version is
# required for static-linking, and if missing, the option is removed.
has_or_warn lib="libstdc++.a" \
err="static 'libstdc++' is needed to statically link the toolchain's executables" \
kconfig=has_static_libstdcxx
#---------------------------------------------------------------------
# Compute the version string