toolchain: expose BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS for all toolchain types
authorMatt Weber <matthew.weber@rockwellcollins.com>
Sun, 27 Oct 2019 20:59:02 +0000 (15:59 -0500)
committerArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Mon, 28 Oct 2019 22:09:33 +0000 (23:09 +0100)
This patch extends the "copy extra GCC libraries to target" feature to
also work for internal toolchains. The variable has been renamed to be
BR2_TOOLCHAIN_EXTRA_LIBS and the configuration option moved under the
generic toolchain package. For external toolchains, the step that does
the copy is still in the copy_toolchain_lib_root() helper which copies
from the sysroot to the target.  For the internal toolchain, the host
gcc-final package does a post install hook to copy the libraries from
the toolchain build folders to both the sysroot and target(!static).

Examples where this can be useful is for adding debug libraries to the
target like the GCC libsanitizer (libasan/liblsan/...).

Cc: Markus Mayer <mmayer@broadcom.com>
Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Config.in.legacy
package/gcc/gcc-final/gcc-final.mk
toolchain/Config.in
toolchain/toolchain-external/pkg-toolchain-external.mk
toolchain/toolchain-external/toolchain-external-custom/Config.in.options

index d4f3d04062f30fd10a84612e222dbbd6f99f7aa5..b3086300e6b649280ee5c16503bb6bd2867667ee 100644 (file)
@@ -146,6 +146,17 @@ endif
 
 comment "Legacy options removed in 2019.11"
 
+config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS
+       string "toolchain-external extra libs option has been renamed"
+       help
+         The option BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS has
+         been renamed to BR2_TOOLCHAIN_EXTRA_LIBS.
+
+config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS_WRAP
+       bool
+       default y if BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS != ""
+       select BR2_LEGACY
+
 config BR2_PACKAGE_PYTHON_PYSNMP_APPS
        bool "python-pysnmp-apps was removed"
        select BR2_LEGACY
index 30fb87856c313adfbe173e6b72c4aa975749a46d..24d034b720b247c565b61782290c0f63d49cb3b9 100644 (file)
@@ -187,6 +187,8 @@ ifeq ($(BR2_GCC_ENABLE_OPENMP),y)
 HOST_GCC_FINAL_USR_LIBS += libgomp
 endif
 
+HOST_GCC_FINAL_USR_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_LIBS))
+
 ifneq ($(HOST_GCC_FINAL_USR_LIBS),)
 define HOST_GCC_FINAL_INSTALL_STATIC_LIBS
        for i in $(HOST_GCC_FINAL_USR_LIBS) ; do \
index c9aa95985f94da438db2e5a302e1370d2f6cc8de..7960131f0c8d9ebbb79b39fcc9bd79101dd210c7 100644 (file)
@@ -221,6 +221,20 @@ config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST
 
          Note: the full set of gconv libs are ~8MiB (on ARM).
 
+config BR2_TOOLCHAIN_EXTRA_LIBS
+       string "Extra toolchain libraries to be copied to target"
+       default BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS if BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS != "" # legacy
+       depends on !BR2_STATIC_LIBS
+       help
+         If your toolchain provides extra libraries that need to be
+         copied to the target filesystem, enter them here, separated
+         by spaces. The library should not include a suffix or any
+         type of pre/post wildcard.
+
+         Examples where this can be useful is for adding debug
+         libraries to the target like the GCC libsanitizer.
+         e.g. "libasan liblsan libtsan libubsan"
+
 # This boolean is true if the toolchain provides a built-in full
 # featured gettext implementation (glibc), and false if only a stub
 # gettext implementation is provided (uclibc, musl)
index 7dfd2bf1bd9e386d6c872006c797e4a723e2fbd5..50cfef23f543bfa5232d60a6aee1df8d2f559be5 100644 (file)
@@ -156,7 +156,7 @@ ifeq ($(BR2_TOOLCHAIN_HAS_DLANG),y)
 TOOLCHAIN_EXTERNAL_LIBS += libgdruntime.so* libgphobos.so*
 endif
 
-TOOLCHAIN_EXTERNAL_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS))
+TOOLCHAIN_EXTERNAL_LIBS += $(addsuffix .so*,$(call qstrip,$(BR2_TOOLCHAIN_EXTRA_LIBS)))
 
 
 #
index a36747f4906867d7ce09417570ec214673194cb4..fd95f8201b5c9610bfacad27ada7b2e9e89e21c5 100644 (file)
@@ -438,12 +438,4 @@ config BR2_TOOLCHAIN_EXTERNAL_OPENMP
          support. If you don't know, leave the default value,
          Buildroot will tell you if it's correct or not.
 
-config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS
-       string "Extra toolchain libraries to be copied to target"
-       help
-         If your external toolchain provides extra libraries that
-         need to be copied to the target filesystem, enter them
-         here, separated by spaces. They will be copied to the
-         target's /lib directory.
-
 endif