Add chaz_Probe_msvc_version_num
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/cf67dd85 Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/cf67dd85 Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/cf67dd85 Branch: refs/heads/c-bindings-cfc Commit: cf67dd8522c332a95af0c49ca33d6145a6fb1f8c Parents: 4cbd991 Author: Nick Wellnhofer <[email protected]> Authored: Sun Feb 10 21:21:52 2013 +0100 Committer: Nick Wellnhofer <[email protected]> Committed: Sun Feb 10 21:21:52 2013 +0100 ---------------------------------------------------------------------- charmonizer/src/Charmonizer/Core/Compiler.c | 4 +- charmonizer/src/Charmonizer/Core/Compiler.h | 14 ++++---- charmonizer/src/Charmonizer/Probe.c | 4 +- charmonizer/src/Charmonizer/Probe.h | 4 +- clownfish/compiler/common/charmonizer.main | 14 +++++---- clownfish/runtime/common/charmonizer.main | 28 +++++++++++------- common/charmonizer.main | 34 +++++++++++++--------- 7 files changed, 58 insertions(+), 44 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy/blob/cf67dd85/charmonizer/src/Charmonizer/Core/Compiler.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/Compiler.c b/charmonizer/src/Charmonizer/Core/Compiler.c index 1d3d48a..440afdf 100644 --- a/charmonizer/src/Charmonizer/Core/Compiler.c +++ b/charmonizer/src/Charmonizer/Core/Compiler.c @@ -370,8 +370,8 @@ chaz_CC_gcc_version(void) { } int -chaz_CC_compiler_is_msvc(void) { - return !!chaz_CC.intval__MSC_VER; +chaz_CC_msvc_version_num(void) { + return chaz_CC.intval__MSC_VER; } const char* http://git-wip-us.apache.org/repos/asf/lucy/blob/cf67dd85/charmonizer/src/Charmonizer/Core/Compiler.h ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/Compiler.h b/charmonizer/src/Charmonizer/Core/Compiler.h index a1291dd..2f03178 100644 --- a/charmonizer/src/Charmonizer/Core/Compiler.h +++ b/charmonizer/src/Charmonizer/Core/Compiler.h @@ -90,25 +90,25 @@ const char* chaz_CC_get_extra_cflags(void); int -chaz_CC_gcc_version_num(); +chaz_CC_gcc_version_num(void); const char* -chaz_CC_gcc_version(); +chaz_CC_gcc_version(void); int -chaz_CC_compiler_is_msvc(void); +chaz_CC_msvc_version_num(void); const char* -chaz_CC_link_command(); +chaz_CC_link_command(void); const char* -chaz_CC_link_flags(); +chaz_CC_link_flags(void); const char* -chaz_CC_link_shared_obj_flag(); +chaz_CC_link_shared_obj_flag(void); const char* -chaz_CC_link_output_flag(); +chaz_CC_link_output_flag(void); #ifdef __cplusplus } http://git-wip-us.apache.org/repos/asf/lucy/blob/cf67dd85/charmonizer/src/Charmonizer/Probe.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Probe.c b/charmonizer/src/Charmonizer/Probe.c index c9824f1..c072e7e 100644 --- a/charmonizer/src/Charmonizer/Probe.c +++ b/charmonizer/src/Charmonizer/Probe.c @@ -162,6 +162,6 @@ chaz_Probe_gcc_version(void) { } int -chaz_Probe_compiler_is_msvc(void) { - return chaz_CC_compiler_is_msvc(); +chaz_Probe_msvc_version_num(void) { + return chaz_CC_msvc_version_num(); } http://git-wip-us.apache.org/repos/asf/lucy/blob/cf67dd85/charmonizer/src/Charmonizer/Probe.h ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Probe.h b/charmonizer/src/Charmonizer/Probe.h index 6adad50..9d44efa 100644 --- a/charmonizer/src/Charmonizer/Probe.h +++ b/charmonizer/src/Charmonizer/Probe.h @@ -87,10 +87,10 @@ chaz_Probe_gcc_version_num(void); const char* chaz_Probe_gcc_version(void); -/* Returns true if the compiler is MSVC. +/* Return the integer version of MSVC defined by _MSC_VER */ int -chaz_Probe_compiler_is_msvc(void); +chaz_Probe_msvc_version_num(void); #ifdef __cplusplus } http://git-wip-us.apache.org/repos/asf/lucy/blob/cf67dd85/clownfish/compiler/common/charmonizer.main ---------------------------------------------------------------------- diff --git a/clownfish/compiler/common/charmonizer.main b/clownfish/compiler/common/charmonizer.main index 702312d..27ef71e 100644 --- a/clownfish/compiler/common/charmonizer.main +++ b/clownfish/compiler/common/charmonizer.main @@ -46,16 +46,18 @@ S_add_compiler_flags(struct chaz_CLIArgs *args) { /* Tell GCC explicitly to run with maximum options. */ chaz_CC_add_extra_cflags("-std=gnu99 -D_GNU_SOURCE"); } - else if (chaz_Probe_compiler_is_msvc()) { + else if (chaz_Probe_msvc_version_num()) { /* Compile as C++ under MSVC. */ - chaz_CC_add_extra_cflags("-TP"); + chaz_CC_add_extra_cflags("/TP"); /* Thwart stupid warnings. */ - chaz_CC_add_extra_cflags("-D_CRT_SECURE_NO_WARNINGS"); - chaz_CC_add_extra_cflags("-D_SCL_SECURE_NO_WARNINGS"); + chaz_CC_add_extra_cflags("/D_CRT_SECURE_NO_WARNINGS"); + chaz_CC_add_extra_cflags("/D_SCL_SECURE_NO_WARNINGS"); - /* Redefine 'for' to fix broken 'for' scoping under MSVC6. */ - chaz_CC_add_extra_cflags("-Dfor=\"if(0);else for\""); + if (chaz_Probe_msvc_version_num() < 1300) { + /* Redefine 'for' to fix broken 'for' scoping under MSVC6. */ + chaz_CC_add_extra_cflags("/Dfor=\"if(0);else for\""); + } } } http://git-wip-us.apache.org/repos/asf/lucy/blob/cf67dd85/clownfish/runtime/common/charmonizer.main ---------------------------------------------------------------------- diff --git a/clownfish/runtime/common/charmonizer.main b/clownfish/runtime/common/charmonizer.main index cb3649c..4c72ebe 100644 --- a/clownfish/runtime/common/charmonizer.main +++ b/clownfish/runtime/common/charmonizer.main @@ -55,17 +55,6 @@ S_add_compiler_flags(struct chaz_CLIArgs *args) { /* Only core source files require this -- not our headers and * autogenerated files. */ chaz_CC_add_extra_cflags("-std=gnu99 -D_GNU_SOURCE"); - } - else if (chaz_Probe_compiler_is_msvc()) { - /* Compile as C++ under MSVC. */ - chaz_CC_add_extra_cflags("/TP"); - - /* Thwart stupid warnings. */ - chaz_CC_add_extra_cflags("-D_CRT_SECURE_NO_WARNINGS"); - chaz_CC_add_extra_cflags("-D_SCL_SECURE_NO_WARNINGS"); - - /* Redefine 'for' to fix broken 'for' scoping under MSVC6. */ - chaz_CC_add_extra_cflags("-Dfor=\"if(0);else for\""); /* When compiling for Perl bindings, define HAS_BOOL so that the Perl * headers don't redefine 'bool' in conflict with C++. @@ -77,6 +66,23 @@ S_add_compiler_flags(struct chaz_CLIArgs *args) { chaz_CC_add_extra_cflags("-DHAS_BOOL"); } } + else if (chaz_Probe_msvc_version_num()) { + /* Compile as C++ under MSVC. */ + chaz_CC_add_extra_cflags("/TP"); + + /* Thwart stupid warnings. */ + chaz_CC_add_extra_cflags("/D_CRT_SECURE_NO_WARNINGS"); + chaz_CC_add_extra_cflags("/D_SCL_SECURE_NO_WARNINGS"); + + if (chaz_Probe_msvc_version_num() < 1300) { + /* Redefine 'for' to fix broken 'for' scoping under MSVC6. */ + chaz_CC_add_extra_cflags("/Dfor=\"if(0);else for\""); + } + + if (args->charmony_pm) { + chaz_CC_add_extra_cflags("/DHAS_BOOL"); + } + } } int main(int argc, const char **argv) { http://git-wip-us.apache.org/repos/asf/lucy/blob/cf67dd85/common/charmonizer.main ---------------------------------------------------------------------- diff --git a/common/charmonizer.main b/common/charmonizer.main index b25680e..ba36d25 100644 --- a/common/charmonizer.main +++ b/common/charmonizer.main @@ -54,27 +54,33 @@ S_add_compiler_flags(struct chaz_CLIArgs *args) { /* Only core source files require this -- not our headers and * autogenerated files. */ chaz_CC_add_extra_cflags("-std=gnu99 -D_GNU_SOURCE"); + + /* When compiling for Perl bindings, define HAS_BOOL so that the Perl + * headers don't redefine 'bool' in conflict with C++. + * + * TODO: Compile all files that #include Perl headers separately and + * remove this directive. + */ + if (args->charmony_pm) { + chaz_CC_add_extra_cflags("-DHAS_BOOL"); + } } - else if (chaz_Probe_compiler_is_msvc()) { + else if (chaz_Probe_msvc_version_num()) { /* Compile as C++ under MSVC. */ chaz_CC_add_extra_cflags("/TP"); /* Thwart stupid warnings. */ - chaz_CC_add_extra_cflags("-D_CRT_SECURE_NO_WARNINGS"); - chaz_CC_add_extra_cflags("-D_SCL_SECURE_NO_WARNINGS"); + chaz_CC_add_extra_cflags("/D_CRT_SECURE_NO_WARNINGS"); + chaz_CC_add_extra_cflags("/D_SCL_SECURE_NO_WARNINGS"); - /* Redefine 'for' to fix broken 'for' scoping under MSVC6. */ - chaz_CC_add_extra_cflags("-Dfor=\"if(0);else for\""); - } + if (chaz_Probe_msvc_version_num() < 1300) { + /* Redefine 'for' to fix broken 'for' scoping under MSVC6. */ + chaz_CC_add_extra_cflags("/Dfor=\"if(0);else for\""); + } - /* When compiling for Perl bindings, define HAS_BOOL so that the Perl - * headers don't redefine 'bool' in conflict with C++. - * - * TODO: Compile all files that #include Perl headers separately and - * remove this directive. - */ - if (args->charmony_pm) { - chaz_CC_add_extra_cflags("-DHAS_BOOL"); + if (args->charmony_pm) { + chaz_CC_add_extra_cflags("/DHAS_BOOL"); + } } }
