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 2016/07/06 15:40:20 UTC
[2/2] lucy-clownfish git commit: Use rpath for test executable
Use rpath for test executable
Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/be1957bf
Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/be1957bf
Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/be1957bf
Branch: refs/heads/master
Commit: be1957bfb5a645167d1dfbe2da1aff4d016bb7e2
Parents: f5e6cdd
Author: Nick Wellnhofer <we...@aevum.de>
Authored: Wed Jul 6 17:30:32 2016 +0200
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Wed Jul 6 17:37:56 2016 +0200
----------------------------------------------------------------------
compiler/common/charmonizer.c | 29 +++++++++++++++++++++++++
runtime/common/charmonizer.c | 42 +++++++++++++++++++++++++++---------
runtime/common/charmonizer.main | 13 +++--------
3 files changed, 64 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/be1957bf/compiler/common/charmonizer.c
----------------------------------------------------------------------
diff --git a/compiler/common/charmonizer.c b/compiler/common/charmonizer.c
index 19eff00..c224853 100644
--- a/compiler/common/charmonizer.c
+++ b/compiler/common/charmonizer.c
@@ -112,6 +112,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);
#endif /* H_CHAZ_CFLAGS */
@@ -2024,6 +2027,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");
@@ -5088,6 +5112,11 @@ chaz_MakeFile_write(chaz_MakeFile *self) {
chaz_Util_die("Can't open Makefile\n");
}
+ if (chaz_Make.shell_type == CHAZ_OS_CMD_EXE) {
+ /* Make sure that mingw32-make uses the cmd.exe shell. */
+ fprintf(out, "SHELL = cmd\n");
+ }
+
for (i = 0; self->vars[i]; i++) {
chaz_MakeVar *var = self->vars[i];
fprintf(out, "%s = %s\n", var->name, var->value);
http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/be1957bf/runtime/common/charmonizer.c
----------------------------------------------------------------------
diff --git a/runtime/common/charmonizer.c b/runtime/common/charmonizer.c
index fda1309..5bce6b4 100644
--- a/runtime/common/charmonizer.c
+++ b/runtime/common/charmonizer.c
@@ -112,6 +112,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);
#endif /* H_CHAZ_CFLAGS */
@@ -2024,6 +2027,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");
@@ -5088,6 +5112,11 @@ chaz_MakeFile_write(chaz_MakeFile *self) {
chaz_Util_die("Can't open Makefile\n");
}
+ if (chaz_Make.shell_type == CHAZ_OS_CMD_EXE) {
+ /* Make sure that mingw32-make uses the cmd.exe shell. */
+ fprintf(out, "SHELL = cmd\n");
+ }
+
for (i = 0; self->vars[i]; i++) {
chaz_MakeVar *var = self->vars[i];
fprintf(out, "%s = %s\n", var->name, var->value);
@@ -9044,8 +9073,6 @@ cfish_MakeFile_write_c_test_rules(cfish_MakeFile *self) {
chaz_CFlags *link_cflags;
chaz_MakeRule *rule;
- const char *test_command;
-
exe = chaz_MakeFile_add_exe(self->makefile, "t", "test_cfish");
chaz_MakeBinary_add_src_file(exe, "t", "test_cfish.c");
chaz_MakeFile_add_rule(self->makefile, "$(TEST_CFISH_EXE_OBJS)",
@@ -9053,16 +9080,11 @@ cfish_MakeFile_write_c_test_rules(cfish_MakeFile *self) {
link_cflags = chaz_MakeBinary_get_link_flags(exe);
chaz_CFlags_add_shared_lib(link_cflags, NULL, "cfish",
cfish_major_version);
+ chaz_CFlags_add_rpath(link_cflags, "\"$$PWD\"");
chaz_MakeBinary_add_prereq(exe, "$(CFISH_SHARED_LIB)");
rule = chaz_MakeFile_add_rule(self->makefile, "test", "$(TEST_CFISH_EXE)");
- if (chaz_CC_binary_format() == CHAZ_CC_BINFMT_ELF) {
- test_command = "LD_LIBRARY_PATH=. $(TEST_CFISH_EXE)";
- }
- else {
- test_command = "$(TEST_CFISH_EXE)";
- }
- chaz_MakeRule_add_command(rule, test_command);
+ chaz_MakeRule_add_command(rule, "$(TEST_CFISH_EXE)");
if (chaz_OS_shell_type() == CHAZ_OS_POSIX) {
const char *valgrind_command;
@@ -9091,7 +9113,7 @@ cfish_MakeFile_write_c_test_rules(cfish_MakeFile *self) {
"lcov"
" --zerocounters"
" --directory $(BASE_DIR)");
- chaz_MakeRule_add_command(rule, test_command);
+ chaz_MakeRule_add_command(rule, "$(TEST_CFISH_EXE)");
chaz_MakeRule_add_command(rule,
"lcov"
" --capture"
http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/be1957bf/runtime/common/charmonizer.main
----------------------------------------------------------------------
diff --git a/runtime/common/charmonizer.main b/runtime/common/charmonizer.main
index 7c8bdc7..e777c52 100644
--- a/runtime/common/charmonizer.main
+++ b/runtime/common/charmonizer.main
@@ -464,8 +464,6 @@ cfish_MakeFile_write_c_test_rules(cfish_MakeFile *self) {
chaz_CFlags *link_cflags;
chaz_MakeRule *rule;
- const char *test_command;
-
exe = chaz_MakeFile_add_exe(self->makefile, "t", "test_cfish");
chaz_MakeBinary_add_src_file(exe, "t", "test_cfish.c");
chaz_MakeFile_add_rule(self->makefile, "$(TEST_CFISH_EXE_OBJS)",
@@ -473,16 +471,11 @@ cfish_MakeFile_write_c_test_rules(cfish_MakeFile *self) {
link_cflags = chaz_MakeBinary_get_link_flags(exe);
chaz_CFlags_add_shared_lib(link_cflags, NULL, "cfish",
cfish_major_version);
+ chaz_CFlags_add_rpath(link_cflags, "\"$$PWD\"");
chaz_MakeBinary_add_prereq(exe, "$(CFISH_SHARED_LIB)");
rule = chaz_MakeFile_add_rule(self->makefile, "test", "$(TEST_CFISH_EXE)");
- if (chaz_CC_binary_format() == CHAZ_CC_BINFMT_ELF) {
- test_command = "LD_LIBRARY_PATH=. $(TEST_CFISH_EXE)";
- }
- else {
- test_command = "$(TEST_CFISH_EXE)";
- }
- chaz_MakeRule_add_command(rule, test_command);
+ chaz_MakeRule_add_command(rule, "$(TEST_CFISH_EXE)");
if (chaz_OS_shell_type() == CHAZ_OS_POSIX) {
const char *valgrind_command;
@@ -511,7 +504,7 @@ cfish_MakeFile_write_c_test_rules(cfish_MakeFile *self) {
"lcov"
" --zerocounters"
" --directory $(BASE_DIR)");
- chaz_MakeRule_add_command(rule, test_command);
+ chaz_MakeRule_add_command(rule, "$(TEST_CFISH_EXE)");
chaz_MakeRule_add_command(rule,
"lcov"
" --capture"