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)"); + } } }
