You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by nw...@apache.org on 2014/08/19 20:11:34 UTC

[5/8] git commit: Symbol visibility for Sun C

Symbol visibility for Sun C


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

Branch: refs/heads/solaris_fixes
Commit: 82cb0cbab12b82f217cf46bb6355be20272d010a
Parents: e5df698
Author: Nick Wellnhofer <we...@aevum.de>
Authored: Tue Aug 19 17:10:27 2014 +0200
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Tue Aug 19 20:02:11 2014 +0200

----------------------------------------------------------------------
 src/Charmonizer/Core/CFlags.c            | 13 ++++++++++---
 src/Charmonizer/Probe/SymbolVisibility.c | 12 ++++++++++++
 2 files changed, 22 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/blob/82cb0cba/src/Charmonizer/Core/CFlags.c
----------------------------------------------------------------------
diff --git a/src/Charmonizer/Core/CFlags.c b/src/Charmonizer/Core/CFlags.c
index a0542d7..8627fca 100644
--- a/src/Charmonizer/Core/CFlags.c
+++ b/src/Charmonizer/Core/CFlags.c
@@ -224,9 +224,16 @@ 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");
+    if (flags->style == CHAZ_CFLAGS_STYLE_GNU) {
+        if (strcmp(chaz_OS_shared_lib_ext(), ".dll") != 0) {
+            chaz_CFlags_append(flags, "-fvisibility=hidden");
+        }
+    }
+    else if (flags->style == CHAZ_CFLAGS_STYLE_SUN_C) {
+        if (chaz_CC_sun_c_version_num() >= 0x550) {
+            /* Sun Studio 8. */
+            chaz_CFlags_append(flags, "-xldscope=hidden");
+        }
     }
 }
 

http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/blob/82cb0cba/src/Charmonizer/Probe/SymbolVisibility.c
----------------------------------------------------------------------
diff --git a/src/Charmonizer/Probe/SymbolVisibility.c b/src/Charmonizer/Probe/SymbolVisibility.c
index e97f49a..73fdaf4 100644
--- a/src/Charmonizer/Probe/SymbolVisibility.c
+++ b/src/Charmonizer/Probe/SymbolVisibility.c
@@ -39,6 +39,18 @@ chaz_SymbolVisibility_run(void) {
     chaz_ConfWriter_start_module("SymbolVisibility");
     chaz_CFlags_set_warnings_as_errors(temp_cflags);
 
+    /* Sun C. */
+    if (!can_control_visibility) {
+        char export_sun[] = "__global";
+        sprintf(code_buf, chaz_SymbolVisibility_symbol_exporting_code,
+                export_sun);
+        if (chaz_CC_test_compile(code_buf)) {
+            can_control_visibility = true;
+            chaz_ConfWriter_add_def("EXPORT", export_sun);
+            chaz_ConfWriter_add_def("IMPORT", export_sun);
+        }
+    }
+
     /* Windows. */
     if (!can_control_visibility) {
         char export_win[] = "__declspec(dllexport)";