gnu-libstdc++: --visible-libgnustl-static option

Change-Id: I41bb0f3bb2c0a5dfdb35a945d2f0840bf62063d0
diff --git a/build/tools/build-gnu-libstdc++.sh b/build/tools/build-gnu-libstdc++.sh
index f42240e..927cb86 100755
--- a/build/tools/build-gnu-libstdc++.sh
+++ b/build/tools/build-gnu-libstdc++.sh
@@ -64,6 +64,9 @@
 NO_MAKEFILE=
 register_var_option "--no-makefile" NO_MAKEFILE "Do not use makefile to speed-up build"
 
+VISIBLE_LIBGNUSTL_STATIC=
+register_var_option "--visible-libgnustl-static" VISIBLE_LIBGNUSTL_STATIC "Do not use hidden visibility for libgnustl_static.a"
+
 register_jobs_option
 
 extract_parameters "$@"
@@ -184,13 +187,15 @@
     if [ $LIBTYPE = "static" ]; then
         # Ensure we disable visibility for the static library to reduce the
         # size of the code that will be linked against it.
-        LIBTYPE_FLAGS="--enable-static --disable-shared"
-        if [ $GCC_VERSION = "4.4.3" -o $GCC_VERSION = "4.6" ]; then
-            LIBTYPE_FLAGS=$LIBTYPE_FLAGS" --disable-visibility"
-        else
-            LIBTYPE_FLAGS=$LIBTYPE_FLAGS" --disable-libstdcxx-visibility"
+        if [ -z "$VISIBLE_LIBGNUSTL_STATIC" ] ; then
+            LIBTYPE_FLAGS="--enable-static --disable-shared"
+            if [ $GCC_VERSION = "4.4.3" -o $GCC_VERSION = "4.6" ]; then
+                LIBTYPE_FLAGS=$LIBTYPE_FLAGS" --disable-visibility"
+            else
+                LIBTYPE_FLAGS=$LIBTYPE_FLAGS" --disable-libstdcxx-visibility"
+            fi
+            CXXFLAGS=$CXXFLAGS" -fvisibility=hidden -fvisibility-inlines-hidden"
         fi
-        CXXFLAGS=$CXXFLAGS" -fvisibility=hidden -fvisibility-inlines-hidden"
     else
         LIBTYPE_FLAGS="--disable-static --enable-shared"
         #LDFLAGS=$LDFLAGS" -lsupc++"
diff --git a/build/tools/build-target-prebuilts.sh b/build/tools/build-target-prebuilts.sh
index 725c5c8..4d17e3d 100755
--- a/build/tools/build-target-prebuilts.sh
+++ b/build/tools/build-target-prebuilts.sh
@@ -29,6 +29,9 @@
 PACKAGE_DIR=
 register_var_option "--package-dir=<path>" PACKAGE_DIR "Package toolchain into this directory"
 
+VISIBLE_LIBGNUSTL_STATIC=
+register_var_option "--visible-libgnustl-static" VISIBLE_LIBGNUSTL_STATIC "Do not use hidden visibility for libgnustl_static.a"
+
 register_jobs_option
 
 PROGRAM_PARAMETERS="<toolchain-src-dir>"
@@ -93,6 +96,10 @@
 run $BUILDTOOLS/build-stlport.sh $FLAGS
 fail_panic "Could not build stlport!"
 
+if [ ! -z $VISIBLE_LIBGNUSTL_STATIC ]; then
+    FLAGS=$FLAGS" --visible-libgnustl-static"
+fi
+
 dump "Building $ABIS gnustl binaries..."
 run $BUILDTOOLS/build-gnu-libstdc++.sh $FLAGS "$SRC_DIR"
 fail_panic "Could not build gnustl!"