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:27 UTC
[2/9] git commit: Shared library flags for Sun C
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/5b8f2b8c
Tree: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/tree/5b8f2b8c
Diff: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/diff/5b8f2b8c
Branch: refs/heads/master
Commit: 5b8f2b8cca8c6d467c9f7ca1a161e5cc1dcce88c
Parents: 97e1047
Author: Nick Wellnhofer <we...@aevum.de>
Authored: Tue Aug 19 17:39:40 2014 +0200
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Tue Aug 19 22:32:10 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/5b8f2b8c/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