Add some Charmonizer functions to work with shared libraries * chaz_CC_shared_obj_cflags * chaz_CC_library_path_flag * chaz_CC_link_with_shared_obj_flag
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/4413eaa1 Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/4413eaa1 Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/4413eaa1 Branch: refs/heads/master Commit: 4413eaa13fd0c70d2b55b6d029dc5466f8a2a768 Parents: 9a4efa6 Author: Nick Wellnhofer <[email protected]> Authored: Mon Mar 11 20:20:45 2013 +0100 Committer: Nick Wellnhofer <[email protected]> Committed: Sun Mar 24 17:13:47 2013 +0100 ---------------------------------------------------------------------- charmonizer/src/Charmonizer/Core/Compiler.c | 45 +++++++++++++++++++++- charmonizer/src/Charmonizer/Core/Compiler.h | 9 ++++ 2 files changed, 53 insertions(+), 1 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy/blob/4413eaa1/charmonizer/src/Charmonizer/Core/Compiler.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/Compiler.c b/charmonizer/src/Charmonizer/Core/Compiler.c index 19dbbb1..a5de6a9 100644 --- a/charmonizer/src/Charmonizer/Core/Compiler.c +++ b/charmonizer/src/Charmonizer/Core/Compiler.c @@ -409,6 +409,19 @@ chaz_CC_msvc_version_num(void) { } const char* +chaz_CC_shared_obj_cflags() { + if (chaz_CC.intval__MSC_VER) { + return ""; + } + else if (chaz_OS_is_darwin()) { + return "-fno-common"; + } + else { + return "-fPIC"; + } +} + +const char* chaz_CC_link_command() { if (chaz_CC.intval__MSC_VER) { return "link"; @@ -429,7 +442,7 @@ chaz_CC_link_shared_obj_flag() { return "/DLL"; } else if (chaz_OS_is_darwin()) { - return "-dynamiclib "; + return "-dynamiclib"; } else { return "-shared"; @@ -446,4 +459,34 @@ chaz_CC_link_output_flag() { } } +char* +chaz_CC_library_path_flag(const char *directory) { + char *flag = (char*)malloc(20 + sizeof(directory)); + if (chaz_CC.intval__MSC_VER) { + if (strcmp(directory, ".") == 0) { + /* The MS linker searches the current directory by default. */ + strcpy(flag, ""); + } + else { + sprintf(flag, "/LIBPATH:%s", directory); + } + } + else { + sprintf(flag, "-L%s", directory); + } + return flag; +} + +char* +chaz_CC_link_with_shared_obj_flag(const char *shared_obj) { + char *flag = (char*)malloc(20 + sizeof(shared_obj)); + if (chaz_CC.intval__MSC_VER) { + sprintf(flag, "%s.lib", shared_obj); + } + else { + sprintf(flag, "-l%s", shared_obj); + } + return flag; +} + http://git-wip-us.apache.org/repos/asf/lucy/blob/4413eaa1/charmonizer/src/Charmonizer/Core/Compiler.h ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/Compiler.h b/charmonizer/src/Charmonizer/Core/Compiler.h index c398148..6fc4a5e 100644 --- a/charmonizer/src/Charmonizer/Core/Compiler.h +++ b/charmonizer/src/Charmonizer/Core/Compiler.h @@ -114,6 +114,9 @@ int chaz_CC_msvc_version_num(void); const char* +chaz_CC_shared_obj_cflags(void); + +const char* chaz_CC_link_command(void); const char* @@ -125,6 +128,12 @@ chaz_CC_link_shared_obj_flag(void); const char* chaz_CC_link_output_flag(void); +char* +chaz_CC_library_path_flag(const char *directory); + +char* +chaz_CC_link_with_shared_obj_flag(const char *shared_obj); + #ifdef __cplusplus } #endif
