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/01/14 20:20:48 UTC
[lucy-commits] [02/50] git commit: Add Charmonizer probe for math library flags
Add Charmonizer probe for math library flags
Project: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/commit/f5a3106e
Tree: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/tree/f5a3106e
Diff: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/diff/f5a3106e
Branch: refs/heads/master
Commit: f5a3106e95cca1e003b00f52beda89b429cc111d
Parents: f098de3
Author: Nick Wellnhofer <we...@aevum.de>
Authored: Thu Mar 14 13:31:17 2013 +0100
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Thu Mar 14 13:42:59 2013 +0100
----------------------------------------------------------------------
src/Charmonizer/Core/Compiler.c | 6 ++++++
src/Charmonizer/Core/Compiler.h | 5 +++++
src/Charmonizer/Probe/Floats.c | 37 ++++++++++++++++++++++++++++++++++++
src/Charmonizer/Probe/Floats.h | 5 +++++
4 files changed, 53 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/blob/f5a3106e/src/Charmonizer/Core/Compiler.c
----------------------------------------------------------------------
diff --git a/src/Charmonizer/Core/Compiler.c b/src/Charmonizer/Core/Compiler.c
index 13bb0cd..19dbbb1 100644
--- a/src/Charmonizer/Core/Compiler.c
+++ b/src/Charmonizer/Core/Compiler.c
@@ -325,6 +325,12 @@ chaz_CC_capture_output(const char *source, size_t *output_len) {
}
void
+chaz_CC_set_extra_cflags(const char *flags) {
+ free(chaz_CC.extra_cflags);
+ chaz_CC.extra_cflags = chaz_Util_strdup(flags);
+}
+
+void
chaz_CC_add_extra_cflags(const char *flags) {
if (!strlen(chaz_CC.extra_cflags)) {
free(chaz_CC.extra_cflags);
http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/blob/f5a3106e/src/Charmonizer/Core/Compiler.h
----------------------------------------------------------------------
diff --git a/src/Charmonizer/Core/Compiler.h b/src/Charmonizer/Core/Compiler.h
index 69469e6..c398148 100644
--- a/src/Charmonizer/Core/Compiler.h
+++ b/src/Charmonizer/Core/Compiler.h
@@ -68,6 +68,11 @@ chaz_CC_clean_up(void);
void
chaz_CC_set_warnings_as_errors(const int flag);
+/* (Re)set "extra" cflags.
+ */
+void
+chaz_CC_set_extra_cflags(const char *);
+
/* Concatenate onto the end of the "extra" cflags. A space will be inserted
* automatically.
*/
http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/blob/f5a3106e/src/Charmonizer/Probe/Floats.c
----------------------------------------------------------------------
diff --git a/src/Charmonizer/Probe/Floats.c b/src/Charmonizer/Probe/Floats.c
index c45526b..d4e6d58 100644
--- a/src/Charmonizer/Probe/Floats.c
+++ b/src/Charmonizer/Probe/Floats.c
@@ -46,4 +46,41 @@ chaz_Floats_run(void) {
chaz_ConfWriter_end_module();
}
+const char*
+chaz_Floats_math_library_flags(void) {
+ static const char sqrt_code[] =
+ CHAZ_QUOTE( #include <math.h> )
+ CHAZ_QUOTE( #include <stdio.h> )
+ CHAZ_QUOTE( int main(void) { )
+ CHAZ_QUOTE( printf("%p\n", sqrt); )
+ CHAZ_QUOTE( return 0; )
+ CHAZ_QUOTE( } );
+ char *old_extra_cflags;
+ char *output = NULL;
+ size_t output_len;
+
+ output = chaz_CC_capture_output(sqrt_code, &output_len);
+ if (output != NULL) {
+ /* Linking against libm not needed. */
+ free(output);
+ return "";
+ }
+
+ old_extra_cflags = chaz_Util_strdup(chaz_CC_get_extra_cflags());
+ chaz_CC_add_extra_cflags("-lm");
+
+ output = chaz_CC_capture_output(sqrt_code, &output_len);
+
+ /* Restore extra cflags. */
+ chaz_CC_set_extra_cflags(old_extra_cflags);
+ free(old_extra_cflags);
+
+ if (output == NULL) {
+ chaz_Util_die("Don't know how to use math library.");
+ }
+
+ free(output);
+ return "-lm";
+}
+
http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/blob/f5a3106e/src/Charmonizer/Probe/Floats.h
----------------------------------------------------------------------
diff --git a/src/Charmonizer/Probe/Floats.h b/src/Charmonizer/Probe/Floats.h
index 79ad734..605b38f 100644
--- a/src/Charmonizer/Probe/Floats.h
+++ b/src/Charmonizer/Probe/Floats.h
@@ -42,6 +42,11 @@ extern "C" {
void
chaz_Floats_run(void);
+/* Determine which flags are needed to link against the math library.
+ */
+const char*
+chaz_Floats_math_library_flags(void);
+
#ifdef __cplusplus
}
#endif