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 22:35:30 UTC
[5/9] 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/78e9417a
Tree: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/tree/78e9417a
Diff: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/diff/78e9417a
Branch: refs/heads/master
Commit: 78e9417aaa2836cfbd37dfc65c92fe8ee81dc9fa
Parents: 8136d84
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 22:32:10 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/78e9417a/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/78e9417a/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)";