You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by lo...@apache.org on 2012/06/12 02:59:22 UTC

[lucy-commits] svn commit: r1349080 - in /lucy/trunk/charmonizer/src/Charmonizer: Core/Compiler.c Core/Compiler.h Probe/SymbolVisibility.c

Author: logie
Date: Tue Jun 12 00:59:22 2012
New Revision: 1349080

URL: http://svn.apache.org/viewvc?rev=1349080&view=rev
Log:
JIRA-237

Modified:
    lucy/trunk/charmonizer/src/Charmonizer/Core/Compiler.c
    lucy/trunk/charmonizer/src/Charmonizer/Core/Compiler.h
    lucy/trunk/charmonizer/src/Charmonizer/Probe/SymbolVisibility.c

Modified: lucy/trunk/charmonizer/src/Charmonizer/Core/Compiler.c
URL: http://svn.apache.org/viewvc/lucy/trunk/charmonizer/src/Charmonizer/Core/Compiler.c?rev=1349080&r1=1349079&r2=1349080&view=diff
==============================================================================
--- lucy/trunk/charmonizer/src/Charmonizer/Core/Compiler.c (original)
+++ lucy/trunk/charmonizer/src/Charmonizer/Core/Compiler.c Tue Jun 12 00:59:22 2012
@@ -42,9 +42,16 @@ static char     *try_obj_name = NULL;
 static char      include_flag[10] = "";
 static char      object_flag[10]  = "";
 static char      exe_flag[10]     = "";
+static char      error_flag[10]   = "";
 static int       defines___GNUC__  = 0;
 static int       defines__MSC_VER  = 0;
 static int       defines___clang__ = 0;
+static int       warnings_as_errors = 0;    
+
+void
+CC_set_warnings_as_errors(const int flag) {
+    warnings_as_errors = flag;
+}
 
 void
 CC_init(const char *compiler_command, const char *compiler_flags) {
@@ -169,7 +176,15 @@ CC_compile_exe(const char *source_path, 
     char    *junk              = (char*)malloc(junk_buf_size);
     size_t   exe_file_buf_len  = sprintf(exe_file, "%s%s", exe_name, exe_ext);
     char    *inc_dir_string    = S_inc_dir_string();
+    if (warnings_as_errors) {
+        if (defines__MSC_VER)  {
+            strcpy(error_flag, "/WX");
+        } else {
+            strcpy(error_flag, "-Werror");
+        }
+    }
     size_t   command_max_size  = strlen(cc_command)
+                                 + strlen(error_flag)
                                  + strlen(source_path)
                                  + strlen(exe_flag)
                                  + exe_file_buf_len
@@ -184,10 +199,11 @@ CC_compile_exe(const char *source_path, 
     Util_write_file(source_path, code);
 
     /* Prepare and run the compiler command. */
-    sprintf(command, "%s %s %s%s %s %s",
-            cc_command, source_path,
-            exe_flag, exe_file,
-            inc_dir_string, cc_flags);
+    sprintf(command, "%s %s %s %s%s %s %s",
+            cc_command, error_flag, 
+            source_path, exe_flag, 
+            exe_file, inc_dir_string, 
+            cc_flags);
     if (Util_verbosity < 2) {
         OS_run_quietly(command);
     }
@@ -226,7 +242,16 @@ CC_compile_obj(const char *source_path, 
     char    *obj_file          = (char*)malloc(obj_file_buf_size);
     size_t   obj_file_buf_len  = sprintf(obj_file, "%s%s", obj_name, obj_ext);
     char    *inc_dir_string    = S_inc_dir_string();
+    if (warnings_as_errors) {
+        if (defines__MSC_VER)  {
+            strcpy(error_flag, "/WX");
+        } else {
+            strcpy(error_flag, "-Werror");
+        }
+    }
+
     size_t   command_max_size  = strlen(cc_command)
+                                 + strlen(error_flag)
                                  + strlen(source_path)
                                  + strlen(object_flag)
                                  + obj_file_buf_len
@@ -241,10 +266,10 @@ CC_compile_obj(const char *source_path, 
     Util_write_file(source_path, code);
 
     /* Prepare and run the compiler command. */
-    sprintf(command, "%s %s %s%s %s %s",
-            cc_command, source_path,
-            object_flag, obj_file,
-            inc_dir_string,
+    sprintf(command, "%s %s %s %s%s %s %s",
+            cc_command, error_flag,
+            source_path, object_flag, 
+            obj_file, inc_dir_string,
             cc_flags);
     if (Util_verbosity < 2) {
         OS_run_quietly(command);

Modified: lucy/trunk/charmonizer/src/Charmonizer/Core/Compiler.h
URL: http://svn.apache.org/viewvc/lucy/trunk/charmonizer/src/Charmonizer/Core/Compiler.h?rev=1349080&r1=1349079&r2=1349080&view=diff
==============================================================================
--- lucy/trunk/charmonizer/src/Charmonizer/Core/Compiler.h (original)
+++ lucy/trunk/charmonizer/src/Charmonizer/Core/Compiler.h Tue Jun 12 00:59:22 2012
@@ -72,6 +72,9 @@ chaz_CC_init(const char *cc_command, con
 void
 chaz_CC_clean_up(void);
 
+void
+chaz_CC_set_warnings_as_errors(const int flag);
+
 #ifdef CHAZ_USE_SHORT_NAMES
   #define CC_compile_exe              chaz_CC_compile_exe
   #define CC_compile_obj              chaz_CC_compile_obj
@@ -80,6 +83,7 @@ chaz_CC_clean_up(void);
   #define CC_test_compile             chaz_CC_test_compile
   #define CC_capture_output           chaz_CC_capture_output
   #define CC_init                     chaz_CC_init
+  #define CC_set_warnings_as_errors   chaz_CC_set_warnings_as_errors
 #endif
 
 #ifdef __cplusplus

Modified: lucy/trunk/charmonizer/src/Charmonizer/Probe/SymbolVisibility.c
URL: http://svn.apache.org/viewvc/lucy/trunk/charmonizer/src/Charmonizer/Probe/SymbolVisibility.c?rev=1349080&r1=1349079&r2=1349080&view=diff
==============================================================================
--- lucy/trunk/charmonizer/src/Charmonizer/Probe/SymbolVisibility.c (original)
+++ lucy/trunk/charmonizer/src/Charmonizer/Probe/SymbolVisibility.c Tue Jun 12 00:59:22 2012
@@ -38,6 +38,7 @@ SymbolVisibility_run(void) {
     char code_buf[sizeof(symbol_exporting_code) + 100];
 
     ConfWriter_start_module("SymbolVisibility");
+    CC_set_warnings_as_errors(1);
 
     /* Windows. */
     if (!can_control_visibility) {
@@ -62,6 +63,7 @@ SymbolVisibility_run(void) {
             ConfWriter_append_conf("#define CHY_IMPORT\n");
         }
     }
+    CC_set_warnings_as_errors(0);
 
     /* Default. */
     if (!can_control_visibility) {