You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2012/12/13 03:27:50 UTC
[lucy-commits] [7/12] git commit: refs/heads/chaz_compiler_flags - Add
`extra_cflags` to Charmonizer's Compiler.
Add `extra_cflags` to Charmonizer's Compiler.
In addition to the CFLAGS passed to Charmonizer on the command line
(which represent the fixed compilation environment), make it possible to
add an additional set of flags from within the application.
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/09544fd6
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/09544fd6
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/09544fd6
Branch: refs/heads/chaz_compiler_flags
Commit: 09544fd6061c50dea722f41a653b4e27d0ab06bc
Parents: e913498
Author: Marvin Humphrey <ma...@rectangular.com>
Authored: Tue Dec 11 13:55:03 2012 -0800
Committer: Marvin Humphrey <ma...@rectangular.com>
Committed: Tue Dec 11 13:55:03 2012 -0800
----------------------------------------------------------------------
charmonizer/src/Charmonizer/Core/Compiler.c | 38 +++++++++++++++++++---
charmonizer/src/Charmonizer/Core/Compiler.h | 11 ++++++
2 files changed, 44 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy/blob/09544fd6/charmonizer/src/Charmonizer/Core/Compiler.c
----------------------------------------------------------------------
diff --git a/charmonizer/src/Charmonizer/Core/Compiler.c b/charmonizer/src/Charmonizer/Core/Compiler.c
index 92024ff..a084893 100644
--- a/charmonizer/src/Charmonizer/Core/Compiler.c
+++ b/charmonizer/src/Charmonizer/Core/Compiler.c
@@ -35,6 +35,7 @@ chaz_CC_detect_known_compilers(void);
static struct {
char *cc_command;
char *cc_flags;
+ char *extra_cflags;
char *try_exe_name;
char *try_obj_name;
char include_flag[10];
@@ -77,9 +78,10 @@ chaz_CC_init(const char *compiler_command, const char *compiler_flags) {
if (chaz_Util_verbosity) { printf("Creating compiler object...\n"); }
- /* Assign. */
+ /* Assign, init. */
chaz_CC.cc_command = chaz_Util_strdup(compiler_command);
chaz_CC.cc_flags = chaz_Util_strdup(compiler_flags);
+ chaz_CC.extra_cflags = chaz_Util_strdup("");
/* Set names for the targets which we "try" to compile. */
{
@@ -167,6 +169,7 @@ void
chaz_CC_clean_up(void) {
free(chaz_CC.cc_command);
free(chaz_CC.cc_flags);
+ free(chaz_CC.extra_cflags);
free(chaz_CC.try_obj_name);
free(chaz_CC.try_exe_name);
}
@@ -186,6 +189,7 @@ chaz_CC_compile_exe(const char *source_path, const char *exe_name,
+ strlen(chaz_CC.exe_flag)
+ exe_file_buf_len
+ strlen(chaz_CC.cc_flags)
+ + strlen(chaz_CC.extra_cflags)
+ 200; /* command start, _charm_run, etc. */
char *command = (char*)malloc(command_max_size);
int result;
@@ -194,11 +198,11 @@ chaz_CC_compile_exe(const char *source_path, const char *exe_name,
chaz_Util_write_file(source_path, code);
/* Prepare and run the compiler command. */
- sprintf(command, "%s %s %s %s%s %s",
+ sprintf(command, "%s %s %s %s%s %s %s",
chaz_CC.cc_command, chaz_CC.error_flag,
source_path, chaz_CC.exe_flag,
exe_file,
- chaz_CC.cc_flags);
+ chaz_CC.cc_flags, chaz_CC.extra_cflags);
if (chaz_Util_verbosity < 2) {
chaz_OS_run_quietly(command);
}
@@ -242,6 +246,7 @@ chaz_CC_compile_obj(const char *source_path, const char *obj_name,
+ strlen(chaz_CC.object_flag)
+ obj_file_buf_len
+ strlen(chaz_CC.cc_flags)
+ + strlen(chaz_CC.extra_cflags)
+ 200; /* command start, _charm_run, etc. */
char *command = (char*)malloc(command_max_size);
int result;
@@ -250,11 +255,11 @@ chaz_CC_compile_obj(const char *source_path, const char *obj_name,
chaz_Util_write_file(source_path, code);
/* Prepare and run the compiler command. */
- sprintf(command, "%s %s %s %s %s%s %s",
+ sprintf(command, "%s %s %s %s %s%s %s %s",
chaz_CC.cc_command, chaz_CC.no_link_flag, chaz_CC.error_flag,
source_path, chaz_CC.object_flag,
obj_file,
- chaz_CC.cc_flags);
+ chaz_CC.cc_flags, chaz_CC.extra_cflags);
if (chaz_Util_verbosity < 2) {
chaz_OS_run_quietly(command);
}
@@ -319,6 +324,29 @@ chaz_CC_capture_output(const char *source, size_t *output_len) {
return captured_output;
}
+void
+chaz_CC_add_extra_cflags(const char *flags) {
+ if (!strlen(chaz_CC.extra_cflags)) {
+ free(chaz_CC.extra_cflags);
+ chaz_CC.extra_cflags = chaz_Util_strdup(flags);
+ }
+ else {
+ size_t size = strlen(chaz_CC.extra_cflags)
+ + 1 // Space separation
+ + strlen(flags)
+ + 1; // NULL termination
+ char *newflags = (char*)malloc(size);
+ sprintf(newflags, "%s %s", chaz_CC.extra_cflags, flags);
+ free(chaz_CC.extra_cflags);
+ chaz_CC.extra_cflags = newflags;
+ }
+}
+
+const char*
+chaz_CC_get_extra_cflags(void) {
+ return chaz_CC.extra_cflags;
+}
+
int
chaz_CC_gcc_version_num(void) {
return 10000 * chaz_CC.intval___GNUC__
http://git-wip-us.apache.org/repos/asf/lucy/blob/09544fd6/charmonizer/src/Charmonizer/Core/Compiler.h
----------------------------------------------------------------------
diff --git a/charmonizer/src/Charmonizer/Core/Compiler.h b/charmonizer/src/Charmonizer/Core/Compiler.h
index 71a2f6c..3e67c83 100644
--- a/charmonizer/src/Charmonizer/Core/Compiler.h
+++ b/charmonizer/src/Charmonizer/Core/Compiler.h
@@ -68,6 +68,17 @@ chaz_CC_clean_up(void);
void
chaz_CC_set_warnings_as_errors(const int flag);
+/* Concatenate onto the end of the "extra" cflags. A space will be inserted
+ * automatically.
+ */
+void
+chaz_CC_add_extra_cflags(const char *);
+
+/* Accessor for `extra_cflags`.
+ */
+const char*
+chaz_CC_get_extra_cflags(void);
+
int
chaz_CC_gcc_version_num();