Support for rpath linker flag
Project: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/commit/6ea06d33 Tree: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/tree/6ea06d33 Diff: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/diff/6ea06d33 Branch: refs/heads/master Commit: 6ea06d3395ee7fde85b934da5015b6aee06a9987 Parents: 78d051f Author: Nick Wellnhofer <wellnho...@aevum.de> Authored: Wed Jul 6 15:49:21 2016 +0200 Committer: Nick Wellnhofer <wellnho...@aevum.de> Committed: Wed Jul 6 17:02:50 2016 +0200 ---------------------------------------------------------------------- src/Charmonizer/Core/CFlags.c | 21 +++++++++++++++++++++ src/Charmonizer/Core/CFlags.h | 3 +++ 2 files changed, 24 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/blob/6ea06d33/src/Charmonizer/Core/CFlags.c ---------------------------------------------------------------------- diff --git a/src/Charmonizer/Core/CFlags.c b/src/Charmonizer/Core/CFlags.c index a1f4684..ea07dc1 100644 --- a/src/Charmonizer/Core/CFlags.c +++ b/src/Charmonizer/Core/CFlags.c @@ -349,6 +349,27 @@ chaz_CFlags_add_external_lib(chaz_CFlags *flags, const char *library) { } void +chaz_CFlags_add_rpath(chaz_CFlags *flags, const char *path) { + char *string; + + if (chaz_CC_binary_format() != CHAZ_CC_BINFMT_ELF) { return; } + + if (flags->style == CHAZ_CFLAGS_STYLE_GNU) { + string = chaz_Util_join("", "-Wl,-rpath,", path, NULL); + } + else if (flags->style == CHAZ_CFLAGS_STYLE_SUN_C) { + string = chaz_Util_join(" ", "-R", path, NULL); + } + else { + chaz_Util_die("Don't know how to set rpath with '%s'", + chaz_CC_get_cc()); + } + + chaz_CFlags_append(flags, string); + free(string); +} + +void chaz_CFlags_enable_code_coverage(chaz_CFlags *flags) { if (flags->style == CHAZ_CFLAGS_STYLE_GNU) { chaz_CFlags_append(flags, "--coverage"); http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/blob/6ea06d33/src/Charmonizer/Core/CFlags.h ---------------------------------------------------------------------- diff --git a/src/Charmonizer/Core/CFlags.h b/src/Charmonizer/Core/CFlags.h index ec699df..d88abbf 100644 --- a/src/Charmonizer/Core/CFlags.h +++ b/src/Charmonizer/Core/CFlags.h @@ -93,6 +93,9 @@ void chaz_CFlags_add_external_lib(chaz_CFlags *flags, const char *library); void +chaz_CFlags_add_rpath(chaz_CFlags *flags, const char *path); + +void chaz_CFlags_enable_code_coverage(chaz_CFlags *flags); #ifdef __cplusplus