Compile C library with hidden symbols

Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/e0577808
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/e0577808
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/e0577808

Branch: refs/heads/chaz-cflags
Commit: e0577808a73d1bf204df148bca8a302c610e9888
Parents: 01ecac1
Author: Nick Wellnhofer <[email protected]>
Authored: Wed Apr 3 22:46:51 2013 +0200
Committer: Nick Wellnhofer <[email protected]>
Committed: Wed Apr 3 22:46:51 2013 +0200

----------------------------------------------------------------------
 charmonizer/src/Charmonizer/Core/CFlags.c |    8 ++++++++
 charmonizer/src/Charmonizer/Core/CFlags.h |    3 +++
 common/charmonizer.main                   |    1 +
 3 files changed, 12 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy/blob/e0577808/charmonizer/src/Charmonizer/Core/CFlags.c
----------------------------------------------------------------------
diff --git a/charmonizer/src/Charmonizer/Core/CFlags.c 
b/charmonizer/src/Charmonizer/Core/CFlags.c
index 180427e..3e2a2cc 100644
--- a/charmonizer/src/Charmonizer/Core/CFlags.c
+++ b/charmonizer/src/Charmonizer/Core/CFlags.c
@@ -195,6 +195,14 @@ chaz_CFlags_compile_shared_library(chaz_CFlags *flags) {
 }
 
 void
+chaz_CFlags_hide_symbols(chaz_CFlags *flags) {
+    if (flags->style == CHAZ_CFLAGS_STYLE_GNU
+        && strcmp(chaz_OS_shared_lib_ext(), ".dll") != 0) {
+        chaz_CFlags_append(flags, "-fvisibility=hidden");
+    }
+}
+
+void
 chaz_CFlags_link_shared_library(chaz_CFlags *flags) {
     const char *string;
     if (flags->style == CHAZ_CFLAGS_STYLE_MSVC) {

http://git-wip-us.apache.org/repos/asf/lucy/blob/e0577808/charmonizer/src/Charmonizer/Core/CFlags.h
----------------------------------------------------------------------
diff --git a/charmonizer/src/Charmonizer/Core/CFlags.h 
b/charmonizer/src/Charmonizer/Core/CFlags.h
index 4e712ed..2b4ffe6 100644
--- a/charmonizer/src/Charmonizer/Core/CFlags.h
+++ b/charmonizer/src/Charmonizer/Core/CFlags.h
@@ -71,6 +71,9 @@ void
 chaz_CFlags_compile_shared_library(chaz_CFlags *flags);
 
 void
+chaz_CFlags_hide_symbols(chaz_CFlags *flags);
+
+void
 chaz_CFlags_link_shared_library(chaz_CFlags *flags);
 
 void

http://git-wip-us.apache.org/repos/asf/lucy/blob/e0577808/common/charmonizer.main
----------------------------------------------------------------------
diff --git a/common/charmonizer.main b/common/charmonizer.main
index c3274b9..4e41d74 100644
--- a/common/charmonizer.main
+++ b/common/charmonizer.main
@@ -190,6 +190,7 @@ S_write_makefile() {
     chaz_CFlags_enable_optimization(extra_cflags);
     chaz_CFlags_disable_strict_aliasing(extra_cflags);
     chaz_CFlags_compile_shared_library(extra_cflags);
+    chaz_CFlags_hide_symbols(extra_cflags);
 
     /* TODO: This makes extra_cflags and subsequent probes unusable. Find a
      * better way to get flags for include dirs.

Reply via email to