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.
