[Buildroot] [PATCH 1/1] Option to copy Linaro gconv libs to target

Stanislav Vasic svlasic at gmail.com
Sat Nov 2 21:37:16 UTC 2013


This patch adds an option for external Linaro toolchains
which allows buildroot to copy gconv libs to target.

Also exports GCONV_PATH if folder exists on target.
That is needed because some programs (eg. XBMC) dont
see gconv libs if GCONV_PATH is not exported.

Signed-off-by: Stanislav Vasic <svlasic at gmail.com>
---
 system/skeleton/etc/profile                        |  6 ++++++
 toolchain/helpers.mk                               | 12 ++++++++++++
 toolchain/toolchain-external/Config.in             |  6 ++++++
 toolchain/toolchain-external/toolchain-external.mk |  4 ++++
 4 files changed, 28 insertions(+)

diff --git a/system/skeleton/etc/profile b/system/skeleton/etc/profile
index 31d3180..d7fef65 100644
--- a/system/skeleton/etc/profile
+++ b/system/skeleton/etc/profile
@@ -8,6 +8,12 @@ export PATH=\
 /usr/bin/X11:\
 /usr/local/bin
 
+# If gconv folder exists, export GCONV_PATH
+
+if [ -d /usr/lib/gconv ]; then
+    export GCONV_PATH = /usr/lib/gconv
+fi
+
 # If running interactively, then:
 if [ "$PS1" ]; then
 
diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk
index a8944ce..a778cef 100644
--- a/toolchain/helpers.mk
+++ b/toolchain/helpers.mk
@@ -83,6 +83,18 @@ copy_toolchain_lib_root = \
  \
 	echo -n
 
+# Function for Linaro toolchains (EABIhf) that copies gconv libs to target
+# Expects 1 param:
+# $1: toolchain root
+copy_toolchain_gconv = \
+    BASE_DIR="$(strip $1)"; \
+    if [ -d $${BASE_DIR}usr/lib/arm-linux-gnueabihf/gconv ] ; then \
+	mkdir -p $(TARGET_DIR)/usr/lib/gconv ; \
+	cp -r $${BASE_DIR}usr/lib/arm-linux-gnueabihf/gconv/* $(TARGET_DIR)/usr/lib/gconv ; \
+    fi; \
+ \
+    echo -n
+
 #
 # Copy the full external toolchain sysroot directory to the staging
 # dir. The operation of this function is rendered a little bit
diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
index 48b5865..fc328b1 100644
--- a/toolchain/toolchain-external/Config.in
+++ b/toolchain/toolchain-external/Config.in
@@ -864,6 +864,12 @@ config BR2_TOOLCHAIN_EXTERNAL_MUSL
 	bool
 	select BR2_TOOLCHAIN_USES_MUSL
 
+config BR2_TOOLCHAIN_EXTERNAL_LINARO_GCONV
+	bool "Copy GCONV libraries to target"
+	depends on BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_07 \
+	    || BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_08 \
+	    || BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_09
+
 if BR2_TOOLCHAIN_EXTERNAL_CUSTOM
 
 choice
diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
index d41cc7c..c1a3dc7 100644
--- a/toolchain/toolchain-external/toolchain-external.mk
+++ b/toolchain/toolchain-external/toolchain-external.mk
@@ -496,6 +496,10 @@ define TOOLCHAIN_EXTERNAL_INSTALL_CORE
 			echo "Could not find gdbserver in external toolchain" ; \
 			exit 1 ; \
 		fi ; \
+	fi; \
+	if test "$(BR2_TOOLCHAIN_EXTERNAL_LINARO_GCONV)" = "y" ; then \
+		$(call MESSAGE,"Copying external toolchain gconv to target...") ; \
+		$(call copy_toolchain_gconv,$${SYSROOT_DIR}) ; \
 	fi
 endef
 
-- 
1.8.3.2



More information about the buildroot mailing list