libpng: use GCC visibility to reduce shared library size
The change introduced the implementation for macro PNG_IMPEXP by using
GCC visibility in defaulting of "hidden" attribute.
Experiment on HTC Passion:
target file; out/target/product/passion/system/lib/libskia.so
(libpng was statically linked to libskia.so)
before: 1117888 bytes
after: 1113780 bytes
Code size reduction = 4108 bytes
Change-Id: I9b718a6a5710268dbb945feea3b64ca3fa393b94
diff --git a/Android.mk b/Android.mk
index 2a6eb43..d5c81d7 100644
--- a/Android.mk
+++ b/Android.mk
@@ -22,7 +22,8 @@
pngwtran.c \
pngwutil.c
-common_CFLAGS := ## -fomit-frame-pointer
+common_CFLAGS := \
+ -fvisibility=hidden ## -fomit-frame-pointer
common_C_INCLUDES += \
diff --git a/pngconf.h b/pngconf.h
index defc16d..5760ba3 100644
--- a/pngconf.h
+++ b/pngconf.h
@@ -1505,7 +1505,11 @@
# define PNGAPI
#endif
#ifndef PNG_IMPEXP
-# define PNG_IMPEXP
+# if ((__GNUC__-0) * 10 + __GNUC_MINOR__-0 >= 33)
+# define PNG_IMPEXP __attribute__((visibility ("default")))
+# else
+# define PNG_IMPEXP
+# endif
#endif
#ifdef PNG_BUILDSYMS