From a70f6b1a70aa1c31cedd3659e070bc46a8722fc1 Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Thu, 29 Oct 2009 21:47:37 +0000 Subject: tests: CodeWarrior and BCC supported git-svn-id: http://pugixml.googlecode.com/svn/trunk@195 99668b35-9821-0410-8761-19e4c4f06640 --- Jamfile.jam | 2 +- Jamrules.jam | 78 ++++++++++++++++++++++++++++++++++++++++-- tests/main.cpp | 7 +++- tests/test.hpp | 10 ++++-- tests/test_document.cpp | 2 ++ tests/test_dom_traverse.cpp | 2 ++ tests/test_xpath_operators.cpp | 4 +++ 7 files changed, 98 insertions(+), 7 deletions(-) diff --git a/Jamfile.jam b/Jamfile.jam index 6908c9f..b66b04c 100644 --- a/Jamfile.jam +++ b/Jamfile.jam @@ -27,7 +27,7 @@ defines -= "" ; # options if ( $(defines) ) { - BUILD = build/$(toolset)/$(defines:J=-)/$(configuration) ; + BUILD = build/$(toolset)/$(defines:J=_)/$(configuration) ; } else { diff --git a/Jamrules.jam b/Jamrules.jam index 8733b25..307e192 100644 --- a/Jamrules.jam +++ b/Jamrules.jam @@ -30,7 +30,7 @@ if ( $(toolset:I=^mingw) ) actions LinkAction { - "%$(toolset)_PATH%\bin\g++" $(>) -o $(<) $(LDFLAGS) + "%$(toolset)_PATH%\bin\g++" $(>) -o $(<) -static-libgcc $(LDFLAGS) } actions CoverageAction @@ -110,7 +110,7 @@ else if ( $(toolset) = "ic8" ) actions ObjectAction { - "%$(toolset)_PATH%\bin\icl.exe" /W4 /WX /Wport /Qwd981,444,280,383,909,304,167 /I"%$(msvc)_PATH%\include" /I"%$(toolset)_PATH%\include" /c $(>) /Fo$(<) /nologo $(CCFLAGS) + "%$(toolset)_PATH%\bin\icl.exe" /W4 /WX /Wport /Qwd981,444,280,383,909,304,167,177 /I"%$(msvc)_PATH%\include" /I"%$(toolset)_PATH%\include" /c $(>) /Fo$(<) /nologo $(CCFLAGS) } actions LibraryAction @@ -164,6 +164,80 @@ else if ( $(toolset:I=^dmc) ) { } } +else if ( $(toolset:I=^cw) ) +{ + cw_bin = "%$(toolset)_PATH%\\Other Metrowerks Tools\\Command Line Tools" ; + CCFLAGS += -D$(defines) ; + + if ( $(configuration) = "debug" ) + { + CCFLAGS += -D_DEBUG ; + } + else + { + CCFLAGS += -DNDEBUG -O4 ; + } + + if ( PUGIXML_NO_EXCEPTIONS in $(defines) ) + { + CCFLAGS += -Cpp_exceptions off ; + } + + actions ObjectAction + { + "$(cw_bin)\mwcc.exe" -c -cwd include -ansi strict -iso_templates on -msext off -w all,cmdline,iserror,nonotused,nonotinlined,noimplicitconv,nounwanted $(>) -o $(<) $(CCFLAGS) + } + + actions LibraryAction + { + "$(cw_bin)\mwld.exe" -library -o $(<) $(>) + } + + actions LinkAction + { + "$(cw_bin)\mwld.exe" -subsystem console -o $(<) $(>) $(LDFLAGS) + } + + actions CoverageAction + { + } +} +else if ( $(toolset:I=^bcc) ) +{ + CCFLAGS += -D$(defines) ; + + if ( $(configuration) = "debug" ) + { + CCFLAGS += -D_DEBUG ; + } + else + { + CCFLAGS += -DNDEBUG -Ox ; + } + + actions ObjectAction + { + "%$(toolset)_PATH%\bin\bcc32.exe" $(CCFLAGS) -c -q -Q -fp -w -w! -w-8026 -w-8027 -w-8091 -w-8004 -o $(<) $(>) + } + + actions LibraryAction + { + "%$(toolset)_PATH%\bin\tlib.exe" /C $(<:\\) -+$(>:\\) + } + + actions LinkAction + { + "%$(toolset)_PATH%\bin\ilink32.exe" -L"%$(toolset)_PATH%\lib" -Tpe -ap -Gn -x -c "%$(toolset)_PATH%\lib\c0x32.obj" $(>:\\) , $(<:\\) , , $(LDFLAGS:\\) cw32 import32 + } + + actions CoverageAction + { + } +} +else +{ + exit "Unknown toolset $(toolset)!" ; +} actions screenoutput RunAction { diff --git a/tests/main.cpp b/tests/main.cpp index 07263a3..eb47401 100644 --- a/tests/main.cpp +++ b/tests/main.cpp @@ -3,6 +3,7 @@ #include #include +#include #include test_runner* test_runner::_tests = 0; @@ -47,7 +48,7 @@ static void replace_memory_management() pugi::set_memory_management_functions(custom_allocate, custom_deallocate); } -#if defined(_MSC_VER) && _MSC_VER > 1200 && _MSC_VER < 1400 && !defined(__INTEL_COMPILER) +#if defined(_MSC_VER) && _MSC_VER > 1200 && _MSC_VER < 1400 && !defined(__INTEL_COMPILER) && !defined(__DMC__) namespace std { _CRTIMP2 _Prhand _Raise_handler; @@ -103,6 +104,10 @@ static bool run_test(test_runner* test) int main() { +#ifdef __BORLANDC__ + _control87(MCW_EM | PC_53, MCW_EM | MCW_PC); +#endif + replace_memory_management(); unsigned int total = 0; diff --git a/tests/test.hpp b/tests/test.hpp index c59bb1c..e29e5c9 100644 --- a/tests/test.hpp +++ b/tests/test.hpp @@ -12,6 +12,10 @@ typedef int intptr_t; #include #include +#if defined(__MWERKS__) || defined(__BORLANDC__) +#include // intptr_t +#endif + #include inline bool test_string_equal(const char* lhs, const char* rhs) @@ -70,7 +74,7 @@ inline bool test_xpath_number_nan(const pugi::xml_node& node, const char* query) double r = q.evaluate_number(node); -#ifdef _MSC_VER +#if defined(_MSC_VER) || defined(__BORLANDC__) return _isnan(r) != 0; #else return r != r; @@ -156,8 +160,8 @@ struct dummy_fixture {}; #define CHECK_JOIN2(text, file, line) CHECK_JOIN(text, file, line) #define CHECK_TEXT(condition, text) if (condition) ; else longjmp(test_runner::_failure, (int)(intptr_t)(CHECK_JOIN2(text, " at "__FILE__ ":", __LINE__))) -#if defined(_MSC_VER) && _MSC_VER == 1200 -# define STR(value) "??" // MSVC 6.0 has troubles stringizing stuff with strings w/escaping inside +#if (defined(_MSC_VER) && _MSC_VER == 1200) || defined(__MWERKS__) +# define STR(value) "??" // MSVC 6.0 and CodeWarrior have troubles stringizing stuff with strings w/escaping inside #else # define STR(value) #value #endif diff --git a/tests/test_document.cpp b/tests/test_document.cpp index d52635c..b9095cf 100644 --- a/tests/test_document.cpp +++ b/tests/test_document.cpp @@ -4,6 +4,8 @@ #include #include +#include + #ifdef _MSC_VER #pragma warning(disable: 4996) #endif diff --git a/tests/test_dom_traverse.cpp b/tests/test_dom_traverse.cpp index eef3e83..0caef27 100644 --- a/tests/test_dom_traverse.cpp +++ b/tests/test_dom_traverse.cpp @@ -1,5 +1,7 @@ #include "common.hpp" +#include + #include #include #include diff --git a/tests/test_xpath_operators.cpp b/tests/test_xpath_operators.cpp index 8a83723..de18070 100644 --- a/tests/test_xpath_operators.cpp +++ b/tests/test_xpath_operators.cpp @@ -10,6 +10,10 @@ # define MSVC6_NAN_BUG // IC8 seems to have the same bug as MSVC6 does #endif +#if defined(__BORLANDC__) +# define MSVC6_NAN_BUG // BCC seems to have the same bug as MSVC6 does +#endif + TEST_XML(xpath_operators_arithmetic, "1023") { xml_node c; -- cgit v1.2.3