Build gabi and stlport static library with default hidden visibility
Also Add new flags --visible-libgabixx-static and --visible-libstlport-static
to previous behavior
Change-Id: I9b91cf5d1904b5eb9666ca561d93030242ef0bf5
diff --git a/build/tools/build-gabi++.sh b/build/tools/build-gabi++.sh
index a7d3689..f6eef6b 100755
--- a/build/tools/build-gabi++.sh
+++ b/build/tools/build-gabi++.sh
@@ -60,6 +60,9 @@
NO_MAKEFILE=
register_var_option "--no-makefile" NO_MAKEFILE "Do not use makefile to speed-up build"
+VISIBLE_LIBGABIXX_STATIC=
+register_var_option "--visible-libgabixx-static" VISIBLE_LIBGABIXX_STATIC "Do not use hidden visibility for libgabi++_static.a"
+
register_jobs_option
extract_parameters "$@"
@@ -107,12 +110,18 @@
MAKEFILE=
fi
+# build_gabixx_libs_for_abi
+# $1: ABI
+# $2: build directory
+# $3: build type: "static" or "shared"
+# $4: (optional) installation directory
build_gabixx_libs_for_abi ()
{
local ARCH BINPREFIX
local ABI=$1
local BUILDDIR="$2"
- local DSTDIR="$3"
+ local TYPE="$3"
+ local DSTDIR="$4"
local SRC OBJ OBJECTS CFLAGS CXXFLAGS
mkdir -p "$BUILDDIR"
@@ -129,20 +138,27 @@
builder_set_dstdir "$DSTDIR"
builder_cflags "$GABIXX_CFLAGS"
- builder_cxxflags "$GABIXX_CXXFLAGS"
+ if [ "$TYPE" = "static" -a -z "$VISIBLE_LIBGABIXX_STATIC" ]; then
+ builder_cxxflags "$GABIXX_CXXFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
+ else
+ builder_cxxflags "$GABIXX_CXXFLAGS"
+ fi
builder_ldflags "$GABIXX_LDFLAGS"
builder_sources $GABIXX_SOURCES
- log "Building $DSTDIR/libgabi++_static.a"
- builder_static_library libgabi++_static
-
- log "Building $DSTDIR/libgabi++_shared.so"
- builder_shared_library libgabi++_shared
+ if [ "$TYPE" = "static" ]; then
+ log "Building $DSTDIR/libgabi++_static.a"
+ builder_static_library libgabi++_static
+ else
+ log "Building $DSTDIR/libgabi++_shared.so"
+ builder_shared_library libgabi++_shared
+ fi
builder_end
}
for ABI in $ABIS; do
- build_gabixx_libs_for_abi $ABI "$BUILD_DIR/$ABI"
+ build_gabixx_libs_for_abi $ABI "$BUILD_DIR/$ABI/shared" "shared"
+ build_gabixx_libs_for_abi $ABI "$BUILD_DIR/$ABI/static" "static"
done
# If needed, package files into tarballs
diff --git a/build/tools/build-stlport.sh b/build/tools/build-stlport.sh
index b6ca60d..c319849 100755
--- a/build/tools/build-stlport.sh
+++ b/build/tools/build-stlport.sh
@@ -60,6 +60,9 @@
NO_MAKEFILE=
register_var_option "--no-makefile" NO_MAKEFILE "Do not use makefile to speed-up build"
+VISIBLE_LIBSTLPORT_STATIC=
+register_var_option "--visible-libstlport-static" VISIBLE_LIBSTLPORT_STATIC "Do not use hidden visibility for libstlport_static.a"
+
register_jobs_option
extract_parameters "$@"
@@ -140,12 +143,18 @@
MAKEFILE=
fi
+# build_stlport_libs_for_abi
+# $1: ABI
+# $2: build directory
+# $3: build type: "static" or "shared"
+# $4: (optional) installation directory
build_stlport_libs_for_abi ()
{
local ARCH BINPREFIX SYSROOT
local ABI=$1
local BUILDDIR="$2"
- local DSTDIR="$3"
+ local TYPE="$3"
+ local DSTDIR="$4"
local SRC OBJ OBJECTS CFLAGS CXXFLAGS
mkdir -p "$BUILDDIR"
@@ -163,7 +172,11 @@
builder_set_srcdir "$GABIXX_SRCDIR"
builder_cflags "$GABIXX_CFLAGS"
- builder_cxxflags "$GABIXX_CXXFLAGS"
+ if [ "$TYPE" = "static" -a -z "$VISIBLE_LIBSTLPORT_STATIC" ]; then
+ builder_cxxflags "$GABIXX_CXXFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
+ else
+ builder_cxxflags "$GABIXX_CXXFLAGS"
+ fi
builder_ldflags "$GABIXX_LDFLAGS"
builder_sources $GABIXX_SOURCES
@@ -171,19 +184,26 @@
builder_reset_cflags
builder_cflags "$STLPORT_CFLAGS"
builder_reset_cxxflags
- builder_cxxflags "$STLPORT_CXXFLAGS"
+ if [ "$TYPE" = "static" -a -z "$VISIBLE_LIBSTLPORT_STATIC" ]; then
+ builder_cxxflags "$STLPORT_CXXFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
+ else
+ builder_cxxflags "$STLPORT_CXXFLAGS"
+ fi
builder_sources $STLPORT_SOURCES
- log "Building $DSTDIR/libstlport_static.a"
- builder_static_library libstlport_static
-
- log "Building $DSTDIR/libstlport_shared.so"
- builder_shared_library libstlport_shared
+ if [ "$TYPE" = "static" ]; then
+ log "Building $DSTDIR/libstlport_static.a"
+ builder_static_library libstlport_static
+ else
+ log "Building $DSTDIR/libstlport_shared.so"
+ builder_shared_library libstlport_shared
+ fi
builder_end
}
for ABI in $ABIS; do
- build_stlport_libs_for_abi $ABI "$BUILD_DIR/$ABI"
+ build_stlport_libs_for_abi $ABI "$BUILD_DIR/$ABI/shared" "shared"
+ build_stlport_libs_for_abi $ABI "$BUILD_DIR/$ABI/static" "static"
done
# If needed, package files into tarballs