Shared library flags 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/aa0cee06 Tree: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/tree/aa0cee06 Diff: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/diff/aa0cee06 Branch: refs/heads/solaris_fixes Commit: aa0cee06bf9036a91d6c7ae25f38481c72f3fe0f Parents: ae81736 Author: Nick Wellnhofer <[email protected]> Authored: Tue Aug 19 17:39:40 2014 +0200 Committer: Nick Wellnhofer <[email protected]> Committed: Tue Aug 19 20:02:12 2014 +0200 ---------------------------------------------------------------------- src/Charmonizer/Core/CFlags.c | 40 +++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/blob/aa0cee06/src/Charmonizer/Core/CFlags.c ---------------------------------------------------------------------- diff --git a/src/Charmonizer/Core/CFlags.c b/src/Charmonizer/Core/CFlags.c index 6bd628f..8d5e490 100644 --- a/src/Charmonizer/Core/CFlags.c +++ b/src/Charmonizer/Core/CFlags.c @@ -222,6 +222,9 @@ chaz_CFlags_compile_shared_library(chaz_CFlags *flags) { return; } } + else if (flags->style == CHAZ_CFLAGS_STYLE_SUN_C) { + string = "-KPIC"; + } else { return; } @@ -257,6 +260,9 @@ chaz_CFlags_link_shared_library(chaz_CFlags *flags) { string = "-shared"; } } + else if (flags->style == CHAZ_CFLAGS_STYLE_SUN_C) { + string = "-G"; + } else { chaz_Util_die("Don't know how to link a shared library with '%s'", chaz_CC_get_cc()); @@ -267,25 +273,31 @@ chaz_CFlags_link_shared_library(chaz_CFlags *flags) { void chaz_CFlags_set_shared_library_version(chaz_CFlags *flags, chaz_SharedLib *lib) { - const char *shlib_ext = chaz_OS_shared_lib_ext(); - char *string; - - if (flags->style != CHAZ_CFLAGS_STYLE_GNU - || strcmp(shlib_ext, ".dll") == 0) { - return; - } + if (flags->style == CHAZ_CFLAGS_STYLE_GNU) { + const char *shlib_ext = chaz_OS_shared_lib_ext(); - if (strcmp(chaz_OS_shared_lib_ext(), ".dylib") == 0) { - const char *version = chaz_SharedLib_get_version(lib); - string = chaz_Util_join(" ", "-current_version", version, NULL); + if (strcmp(shlib_ext, ".dylib") == 0) { + const char *version = chaz_SharedLib_get_version(lib); + char *string + = chaz_Util_join(" ", "-current_version", version, NULL); + chaz_CFlags_append(flags, string); + free(string); + } + else if (strcmp(shlib_ext, ".so") == 0) { + char *soname = chaz_SharedLib_major_version_filename(lib); + char *string = chaz_Util_join("", "-Wl,-soname,", soname, NULL); + chaz_CFlags_append(flags, string); + free(string); + free(soname); + } } - else { + else if (flags->style == CHAZ_CFLAGS_STYLE_SUN_C) { char *soname = chaz_SharedLib_major_version_filename(lib); - string = chaz_Util_join("", "-Wl,-soname,", soname, NULL); + char *string = chaz_Util_join(" ", "-h", soname, NULL); + chaz_CFlags_append(flags, string); + free(string); free(soname); } - chaz_CFlags_append(flags, string); - free(string); } void
