Repository: lucy-charmonizer
Updated Branches:
  refs/heads/master 5a65b5eba -> b04beeb77


Fix CHY_IMPORT under MinGW

Under MinGW, symbols with dllimport storage class aren't constant. If a
global variable is initialized to such a symbol, an "initializer
element is not constant" error results. Omitting dllimport works, but
has a small performance penalty.


Project: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/commit/b04beeb7
Tree: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/tree/b04beeb7
Diff: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/diff/b04beeb7

Branch: refs/heads/master
Commit: b04beeb77f4ac3a105fabc984491949deb71ffb5
Parents: 5a65b5e
Author: Nick Wellnhofer <[email protected]>
Authored: Mon Jul 21 22:32:47 2014 +0200
Committer: Nick Wellnhofer <[email protected]>
Committed: Mon Jul 21 22:32:47 2014 +0200

----------------------------------------------------------------------
 src/Charmonizer/Probe/SymbolVisibility.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/blob/b04beeb7/src/Charmonizer/Probe/SymbolVisibility.c
----------------------------------------------------------------------
diff --git a/src/Charmonizer/Probe/SymbolVisibility.c 
b/src/Charmonizer/Probe/SymbolVisibility.c
index 6639a4f..e97f49a 100644
--- a/src/Charmonizer/Probe/SymbolVisibility.c
+++ b/src/Charmonizer/Probe/SymbolVisibility.c
@@ -47,7 +47,19 @@ chaz_SymbolVisibility_run(void) {
         if (chaz_CC_test_compile(code_buf)) {
             can_control_visibility = true;
             chaz_ConfWriter_add_def("EXPORT", export_win);
-            chaz_ConfWriter_add_def("IMPORT", "__declspec(dllimport)");
+            if (chaz_CC_gcc_version_num()) {
+                /*
+                 * Under MinGW, symbols with dllimport storage class aren't
+                 * constant. If a global variable is initialized to such a
+                 * symbol, an "initializer element is not constant" error
+                 * results. Omitting dllimport works, but has a small
+                 * performance penalty.
+                 */
+                chaz_ConfWriter_add_def("IMPORT", NULL);
+            }
+            else {
+                chaz_ConfWriter_add_def("IMPORT", "__declspec(dllimport)");
+            }
         }
     }
 

Reply via email to