]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
merge in cppunit test support. see lib/tests for examples of use
authorrobertc <>
Tue, 24 Aug 2004 06:21:08 +0000 (06:21 +0000)
committerrobertc <>
Tue, 24 Aug 2004 06:21:08 +0000 (06:21 +0000)
523 files changed:
lib/cppunit-1.10.0/AUTHORS [new file with mode: 0644]
lib/cppunit-1.10.0/BUGS [new file with mode: 0644]
lib/cppunit-1.10.0/COPYING [new file with mode: 0644]
lib/cppunit-1.10.0/ChangeLog [new file with mode: 0644]
lib/cppunit-1.10.0/CodingGuideLines.txt [new file with mode: 0644]
lib/cppunit-1.10.0/INSTALL [new file with mode: 0644]
lib/cppunit-1.10.0/INSTALL-WIN32.txt [new file with mode: 0644]
lib/cppunit-1.10.0/INSTALL-unix [new file with mode: 0644]
lib/cppunit-1.10.0/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/NEWS [new file with mode: 0644]
lib/cppunit-1.10.0/README [new file with mode: 0644]
lib/cppunit-1.10.0/THANKS [new file with mode: 0644]
lib/cppunit-1.10.0/TODO [new file with mode: 0644]
lib/cppunit-1.10.0/aclocal.m4 [new file with mode: 0644]
lib/cppunit-1.10.0/config/ac_create_prefix_config_h.m4 [new file with mode: 0644]
lib/cppunit-1.10.0/config/ac_cxx_have_sstream.m4 [new file with mode: 0644]
lib/cppunit-1.10.0/config/ac_cxx_have_strstream.m4 [new file with mode: 0644]
lib/cppunit-1.10.0/config/ac_cxx_namespaces.m4 [new file with mode: 0644]
lib/cppunit-1.10.0/config/ac_cxx_rtti.m4 [new file with mode: 0644]
lib/cppunit-1.10.0/config/ac_cxx_string_compare_string_first.m4 [new file with mode: 0644]
lib/cppunit-1.10.0/config/ac_dll.m4 [new file with mode: 0644]
lib/cppunit-1.10.0/config/ax_cxx_gcc_abi_demangle.m4 [new file with mode: 0644]
lib/cppunit-1.10.0/config/bb_enable_doxygen.m4 [new file with mode: 0644]
lib/cppunit-1.10.0/config/config.guess [new file with mode: 0755]
lib/cppunit-1.10.0/config/config.h.in [new file with mode: 0644]
lib/cppunit-1.10.0/config/config.sub [new file with mode: 0755]
lib/cppunit-1.10.0/config/depcomp [new file with mode: 0755]
lib/cppunit-1.10.0/config/install-sh [new file with mode: 0755]
lib/cppunit-1.10.0/config/ltmain.sh [new file with mode: 0644]
lib/cppunit-1.10.0/config/missing [new file with mode: 0755]
lib/cppunit-1.10.0/config/mkinstalldirs [new file with mode: 0755]
lib/cppunit-1.10.0/configure [new file with mode: 0755]
lib/cppunit-1.10.0/configure.in [new file with mode: 0644]
lib/cppunit-1.10.0/contrib/bc5/bcc-makefile.zip [new file with mode: 0644]
lib/cppunit-1.10.0/contrib/msvc/AddingUnitTestMethod.dsm [new file with mode: 0644]
lib/cppunit-1.10.0/contrib/msvc/CppUnit.WWTpl [new file with mode: 0644]
lib/cppunit-1.10.0/contrib/msvc/readme.txt [new file with mode: 0644]
lib/cppunit-1.10.0/contrib/xml-xsl/report.xsl [new file with mode: 0644]
lib/cppunit-1.10.0/contrib/xml-xsl/tests.xml [new file with mode: 0644]
lib/cppunit-1.10.0/cppunit-config.1 [new file with mode: 0644]
lib/cppunit-1.10.0/cppunit-config.in [new file with mode: 0644]
lib/cppunit-1.10.0/cppunit.m4 [new file with mode: 0644]
lib/cppunit-1.10.0/cppunit.spec [new file with mode: 0644]
lib/cppunit-1.10.0/cppunit.spec.in [new file with mode: 0644]
lib/cppunit-1.10.0/doc/Doxyfile.in [new file with mode: 0644]
lib/cppunit-1.10.0/doc/FAQ [new file with mode: 0644]
lib/cppunit-1.10.0/doc/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/doc/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/doc/Money.dox [new file with mode: 0644]
lib/cppunit-1.10.0/doc/cookbook.dox [new file with mode: 0644]
lib/cppunit-1.10.0/doc/footer.html [new file with mode: 0644]
lib/cppunit-1.10.0/doc/header.html [new file with mode: 0644]
lib/cppunit-1.10.0/doc/other_documentation.dox [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerListener.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerListener.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerModel.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerModel.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerPlugIn.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerPlugIn.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerXmlHook.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerXmlHook.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/ReadMe.txt [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/Timer.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/Timer.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/WinNtTimer.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/ClockerPlugIn/WinNtTimer.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/DumperPlugIn/DumperListener.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/DumperPlugIn/DumperListener.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/DumperPlugIn/DumperPlugIn.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/DumperPlugIn/DumperPlugIn.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/DumperPlugIn/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/examples/DumperPlugIn/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/examples/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/examples/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/BaseTestCase.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/BaseTestCase.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/CoreSuite.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.dsw [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestPlugIn.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestPlugIn.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestSuite.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/ExceptionTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/ExceptionTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/ExceptionTestCaseDecoratorTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/ExceptionTestCaseDecoratorTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/ExtensionSuite.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/FailureException.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/HelperMacrosTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/HelperMacrosTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/HelperSuite.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/MessageTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/MessageTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/MockFunctor.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/MockProtector.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/MockTestCase.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/MockTestCase.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/MockTestListener.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/MockTestListener.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/OrthodoxTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/OrthodoxTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/OutputSuite.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/RepeatedTestTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/RepeatedTestTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/StringToolsTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/StringToolsTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/SubclassedTestCase.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/SubclassedTestCase.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/SynchronizedTestResult.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestAssertTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestAssertTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestCallerTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestCallerTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestCaseTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestCaseTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestDecoratorTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestDecoratorTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestFailureTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestFailureTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestPathTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestPathTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestResultCollectorTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestResultCollectorTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestResultTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestResultTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestSetUpTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestSetUpTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestSuiteTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestSuiteTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TestTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/ToolsSuite.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TrackedTestCase.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/TrackedTestCase.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/UnitTestToolSuite.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/XmlElementTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/XmlElementTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/XmlOutputterTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/XmlOutputterTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiser.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiser.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiserTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiserTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/examples.dsw [new file with mode: 0644]
lib/cppunit-1.10.0/examples/examples.opt [new file with mode: 0644]
lib/cppunit-1.10.0/examples/hierarchy/BoardGame.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/hierarchy/BoardGame.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/hierarchy/BoardGameTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/hierarchy/Chess.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/hierarchy/Chess.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/hierarchy/ChessTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/hierarchy/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/examples/hierarchy/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/examples/hierarchy/hierarchy.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/hierarchy/hierarchy.dsw [new file with mode: 0644]
lib/cppunit-1.10.0/examples/hierarchy/main.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/money/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/examples/money/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/examples/money/Money.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/money/MoneyApp.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/money/MoneyTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/money/MoneyTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/money/StdAfx.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/money/StdAfx.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/money/configure.in [new file with mode: 0644]
lib/cppunit-1.10.0/examples/money/money.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/money/money.dsw [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsw [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.rc [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestAppDlg.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestAppDlg.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/ReadMe.txt [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/Resource.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/StdAfx.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/StdAfx.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/res/CppUnitTestApp.ico [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/res/CppUnitTestApp.rc2 [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/ExampleTestCase.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/ExampleTestCase.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.dsw [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.rc [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppDoc.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppDoc.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppView.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppView.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/MainFrm.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/MainFrm.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/Resource.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/StdAfx.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/StdAfx.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostApp.ico [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostApp.rc2 [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostAppDoc.ico [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/res/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/HostApp/res/Toolbar.bmp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/msvc6/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/examples/qt/Example.pro [new file with mode: 0644]
lib/cppunit-1.10.0/examples/qt/ExampleTestCase.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/qt/ExampleTestCase.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/qt/Main.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/qt/build.bat [new file with mode: 0755]
lib/cppunit-1.10.0/examples/qt/run.bat [new file with mode: 0755]
lib/cppunit-1.10.0/examples/simple/ExampleTestCase.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/simple/ExampleTestCase.h [new file with mode: 0644]
lib/cppunit-1.10.0/examples/simple/Main.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/simple/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/examples/simple/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/examples/simple/SimplePlugIn.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/simple/simple.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/examples/simple/simple_plugin.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/include/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/include/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/AdditionalMessage.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/Asserter.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/BriefTestProgressListener.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/CompilerOutputter.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/Exception.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/Message.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/Outputter.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/Portability.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/Protector.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/SourceLine.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/SynchronizedObject.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/Test.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TestAssert.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TestCaller.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TestCase.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TestComposite.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TestFailure.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TestFixture.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TestLeaf.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TestListener.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TestPath.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TestResult.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TestResultCollector.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TestRunner.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TestSuccessListener.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TestSuite.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TextOutputter.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TextTestProgressListener.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TextTestResult.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/TextTestRunner.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/XmlOutputter.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/XmlOutputterHook.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/config/CppUnitApi.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/config/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/config/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/config/SelectDllLoader.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/config/config-bcb5.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/config/config-mac.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/config/config-msvc6.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/AutoRegisterSuite.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/ExceptionTestCaseDecorator.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/HelperMacros.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/Orthodox.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/RepeatedTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/TestCaseDecorator.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/TestDecorator.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/TestFactory.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/TestFactoryRegistry.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/TestFixtureFactory.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/TestNamer.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/TestSetUp.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/TestSuiteBuilderContext.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/TestSuiteFactory.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/extensions/TypeInfoHelper.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/plugin/DynamicLibraryManager.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/plugin/DynamicLibraryManagerException.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/plugin/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/plugin/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/plugin/PlugInManager.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/plugin/PlugInParameters.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/plugin/TestPlugIn.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/plugin/TestPlugInDefaultImpl.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/portability/CppUnitDeque.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/portability/CppUnitMap.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/portability/CppUnitSet.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/portability/CppUnitStack.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/portability/CppUnitVector.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/portability/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/portability/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/tools/Algorithm.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/tools/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/tools/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/tools/StringTools.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/tools/XmlDocument.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/tools/XmlElement.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/mfc/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/mfc/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/mfc/MfcTestRunner.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/mfc/TestRunner.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/qt/Config.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/qt/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/qt/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/qt/QtTestRunner.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/qt/TestRunner.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/text/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/text/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/text/TestRunner.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/cppunit/ui/text/TextTestRunner.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/msvc6/DSPlugin/TestRunnerDSPluginVC6.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/msvc6/DSPlugin/TestRunnerDSPluginVC6_i.c [new file with mode: 0644]
lib/cppunit-1.10.0/include/msvc6/testrunner/TestPlugInInterface.h [new file with mode: 0644]
lib/cppunit-1.10.0/include/msvc6/testrunner/TestRunner.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/CppUnitLibraries.dsw [new file with mode: 0644]
lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParser.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParser.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParserTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParserTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTester.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTester.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTesterTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTesterTest.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/src/DllPlugInTester/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/src/DllPlugInTester/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/src/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/src/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/AdditionalMessage.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/Asserter.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/BeOsDynamicLibraryManager.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/BriefTestProgressListener.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/CompilerOutputter.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/DefaultProtector.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/DefaultProtector.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/DllMain.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/DynamicLibraryManager.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/DynamicLibraryManagerException.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/Exception.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/Makefile.am [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/Makefile.in [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/Message.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/PlugInManager.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/PlugInParameters.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/Protector.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/ProtectorChain.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/ProtectorChain.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/ProtectorContext.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/RepeatedTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/ShlDynamicLibraryManager.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/SourceLine.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/StringTools.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/SynchronizedObject.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/Test.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestAssert.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestCase.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestCaseDecorator.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestComposite.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestDecorator.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestFactoryRegistry.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestFailure.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestLeaf.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestNamer.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestPath.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestPlugInDefaultImpl.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestResult.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestResultCollector.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestRunner.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestSetUp.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestSuccessListener.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestSuite.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TestSuiteBuilderContext.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TextOutputter.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TextTestProgressListener.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TextTestResult.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TextTestRunner.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/TypeInfoHelper.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/UnixDynamicLibraryManager.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/Win32DynamicLibraryManager.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/XmlDocument.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/XmlElement.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/XmlOutputter.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/XmlOutputterHook.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/cppunit.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/src/cppunit/cppunit_dll.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/COMHelper.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSAddIn.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSAddIn.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.def [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.rc [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.rgs [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/ReadMe.txt [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/StdAfx.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/StdAfx.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/TestRunnerDSPlugin.idl [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/DSPlugIn.rc2 [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/TBarLrge.bmp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/TBarMedm.bmp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DSPlugIn/resource.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DllPlugInTester/DllPlugInTester.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/DllPlugInTester/DllPlugInTester.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/ReadMe.txt [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/Resource.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/StdAfx.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/StdAfx.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugIn.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugIn.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInException.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInException.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunner.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunner.rc [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerApp.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerApp.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerModel.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerModel.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/TestPlugInRunner.ico [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/TestPlugInRunner.rc2 [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/errortype.bmp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/test_type.bmp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/ActiveTest.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/ActiveTest.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/Change-Diary-ResourceBugFix.txt [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.html [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicBar.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicBar.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicControlsManager.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicControlsManager.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicDialog.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicDialog.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicFormView.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicFormView.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicPropSheet.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicPropSheet.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWnd.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWnd.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWndEx.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWndEx.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCSizeIconCtrl.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCSizeIconCtrl.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC-big.gif [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC-small.gif [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC.html [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlFormatter.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlFormatter.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlSetter.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlSetter.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/MfcSynchronizationObject.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/MfcTestRunner.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/MostRecentTests.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/MostRecentTests.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/MsDevCallerListCtrl.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/MsDevCallerListCtrl.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/ProgressBar.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/ProgressBar.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/Resource.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/ResourceLoaders.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/ResourceLoaders.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/StdAfx.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/StdAfx.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/SynchronizedTestResult.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/TestResultDecorator.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.def [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.dsp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.rc [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerApp.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerApp.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerDlg.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerDlg.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerModel.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerModel.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/TreeHierarchyDlg.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/TreeHierarchyDlg.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/res/TestRunner.rc2 [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/res/errortype.bmp [new file with mode: 0644]
lib/cppunit-1.10.0/src/msvc6/testrunner/res/test_type.bmp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/MostRecentTests.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/MostRecentTests.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/QtTestRunner.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/QtTestRunnerDll.pro [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestBrowserDlgImpl.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestBrowserDlgImpl.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestFailureInfo.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestFailureInfo.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestFailureListViewItem.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestFailureListViewItem.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestListViewItem.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestListViewItem.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerDlgImpl.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerDlgImpl.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerFailureEvent.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerFailureEvent.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModel.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModel.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModelThreadInterface.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModelThreadInterface.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerTestCaseRunEvent.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerTestCaseRunEvent.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThread.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThread.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadEvent.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadEvent.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadFinishedEvent.cpp [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadFinishedEvent.h [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/build [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/build.bat [new file with mode: 0755]
lib/cppunit-1.10.0/src/qttestrunner/qttestrunner.pro [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/testbrowserdlg.ui [new file with mode: 0644]
lib/cppunit-1.10.0/src/qttestrunner/testrunnerdlg.ui [new file with mode: 0644]

diff --git a/lib/cppunit-1.10.0/AUTHORS b/lib/cppunit-1.10.0/AUTHORS
new file mode 100644 (file)
index 0000000..b600073
--- /dev/null
@@ -0,0 +1,6 @@
+Michael Feathers <mfeathers@objectmentor.com> 
+Jerome Lacoste <lacostej@altern.org>          
+E. Sommerlade <eric@sommerla.de>              
+Baptiste Lepilleur <gaiacrtn@free.fr> <blep@sourceforge.net>
+Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+Steve Robbins <smr99@sourceforge.net>
diff --git a/lib/cppunit-1.10.0/BUGS b/lib/cppunit-1.10.0/BUGS
new file mode 100644 (file)
index 0000000..64fb00f
--- /dev/null
@@ -0,0 +1,6 @@
+               KNOWN BUGS
+               ----------
+
+The handling of html and man pages in doc/Makefile.am is
+flawed.  It will not pass "make distcheck".
+
diff --git a/lib/cppunit-1.10.0/COPYING b/lib/cppunit-1.10.0/COPYING
new file mode 100644 (file)
index 0000000..b1e3f5a
--- /dev/null
@@ -0,0 +1,504 @@
+                 GNU LESSER GENERAL PUBLIC LICENSE
+                      Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+\f
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+\f
+                 GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+\f
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+\f
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+\f
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+\f
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+\f
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+\f
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                           NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/lib/cppunit-1.10.0/ChangeLog b/lib/cppunit-1.10.0/ChangeLog
new file mode 100644 (file)
index 0000000..ba1221e
--- /dev/null
@@ -0,0 +1,3277 @@
+2004-06-16 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * release 1.10.0
+
+  * install-UNIX.txt: added some notes concerning Sun CC 5.5 & AIX.
+
+  * examples/*/*.dsp: fixed project settings (rtti not enabled).
+
+2004-03-13 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * release 1.9.14
+
+2004-03-13 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * cppunit-config.in: bug #903363, missing -ldl from the output of
+    cppunit-config --libs. Fixed thanks Eric Blossom patch.
+
+  * examples/qt/Main.cpp:
+  * examples/qt/ExampleTestCase.h: fixed bug #789672: QT example should 
+    use CPPUNIT_NS macro.
+
+  * src/cppunit/UnixDynamicLibraryManager.cpp: applied patch #816563
+    from Gareth Sylvester. Adding RTLD_GLOBAL allows test plug-ins 
+    to provide symbols to shared objects they load themselves.
+
+  * examples/cppunittest/TestAssertTest.h:
+  * examples/cppunittest/TestAssertTest.cpp:
+  * examples/cppunittest/XmlUniformiserTest.h:
+  * examples/cppunittest/XmlUniformiserTest.cpp:
+  * include/cppunit/TestAssert.h: add the exception assertion macros
+    from cppunit 2: CPPUNIT_ASSERT_THROW, CPPUNIT_ASSERT_NO_THROW,
+    CPPUNIT_ASSERT_ASSERTION_FAIL, CPPUNIT_ASSERT_ASSERTION_PASS.
+    Updated unit test to use and test the new macros.
+
+  * include/cppunit/extensions/HelperMacros.h: deprecated the
+    test case factory that check for exception (CPPUNIT_TEST_FAIL &
+    CPPUNIT_TEST_EXCEPTION).
+    
+
+2004-02-20 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * release 1.9.12
+
+2004-02-18 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * configure.in:
+  * makefile.am:
+  * config/ax_cxx_gcc_abi_demangle.m4:
+  * src/cppunit/TypeInfoHelper.cpp: added patch from 
+    Neil Ferguson <nferguso@eso.org> to use gcc c++ abi to demangle typeinfo
+       name when available.
+
+2003-05-15 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/plugin/testplugin.h: fixed bug #767358, wrong
+    preprocessor symbol for SHL_LOADER.
+
+2003-05-15 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/config/config-msvc6.h: changed the compiler outputter 
+    default format (CPPUNIT_COMPILER_LOCATION_FORMAT) for Visual Studio 7.0.
+    Assertion now appears in the task list.
+
+2003-05-07 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/extensions/Makefile.am: removed TestSuiteBuilder.h
+
+  * Makefile.am
+  * configure.in
+  * config/ac_dll.m4
+  * examples/cppunittest/Makefile.am
+  * examples/hierarchy/Makefile.am
+  * examples/money/Makefile.am
+  * examples/simple/Makefile.am
+  * include/cppunit/config/SelectDllLoader.h
+  * include/cppunit/plugin/TestPlugIn.h
+  * include/cppunit/tools/Algorithm.h
+  * src/DllPlugInTester/Makefile.am
+  * src/cppunit/Makefile.am
+  * src/cppunit/TestDecorator.cpp
+  * src/cppunit/ShlDynamicLibraryManager.cpp
+  * src/cppunit/UnixDynamicLibraryManager.cpp
+  * src/cppunit/Win32DynamicLibraryManager.cpp: applied patch from 
+    Abdessattar Sassi <abdesassi@users.sourceforge.net> to add support
+    for plug-in to hp-ux (patch #721546).
+
+  * INSTALL-unix: added build instruction for HP-UX.
+
+2003-04-06 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/extensions/TestSuiteBuilder.h: removed (unused)
+
+2003-03-31 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * src/cppunit/DynamicLibraryManager.cpp: fixed compilation issue on Mingw
+    (bug #711583)
+
+2003-03-20 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/extensions/TestNamer.h:
+  * src/cppunit/TestNamer.cpp: Fixed bug #704684, TestNamer has non-virtual
+    destructor.
+
+2003-03-15 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * src/msvc6/testrunner/DynamicWindow/cdxCDynamicWndEx.cpp:
+  * examples/msvc6/CppUnitTestApp/CppUnitTestApp.cpp:
+  * examples/msvc6/HostApp/HostApp.cpp:
+  * src/msvc6/testpluginrunner/TestPlugInRunnerApp.cpp: fixed compatibility
+    issues with vc7 MFC.
+
+  * include/cppunit/tools/Algorithm.h:
+  * examples/cppunittest/XmlOutputterTest.cpp:
+  * examples/cppunittest/XmlUniformiser.*:
+  * src/cppunit/CompilerOutputter.cpp:
+  * src/cppunit/ProtectorChain.cpp:
+  * src/cppunit/StringTools.cpp:
+  * src/cppunit/TestPath.cpp:
+  * src/cppunit/TypeInfoHelper.cpp:
+  * src/cppunit/XmlElement.cpp:
+  * src/cppunit/XmlOutputter.cpp: 
+  * src/DllPlugInTester/CommandLineParser.h:
+  * src/msvc6/testrunner/TestRunnerDlg.cpp: switched to using unsigned index in loop to
+    avoid signed/unsigned warning in vc7.
+
+  * include/cppunit/extension/ExceptionTestCaseDecorator.h: removed dll export
+    on template (caused link error on vc7).
+
+2003-03-11 Baptiste Lepilleur <gaiacrtn@free.fr>
+  * config/bb_enable_doxygen.m4:
+  * doc/Makefile.am: applied Luke Dunstan's fix for bug #700730 (spaces not
+    allowed in doxygen path)
+
+  * src/cppunit/XmlElement.cpp:
+  * src/examples/cppunittest/XmlUniformser.cpp: fixed bug #676505 (no space
+    between attributes of XmlElement).
+
+  * include/cppunit/tools/Algorithm.h:
+  * src/cppunit/TestResult.cpp:
+  * src/msvc6/testrunner/TestRunnerModel.cpp: added removeFromSequence 
+    algorithm in Algorithm.h to fix STLPort compatibility issue 
+       (std::remove use the one of cstdio instead of algorithm). Bug #694971.
+
+  * src/examples/cppunittest/TrackedTestCase.cpp:
+  * src/examples/cppunittest/CppUnitTestMain.cpp:
+  * src/examples/money/Money.h: partially applied patch #699794. Fixed 
+    compilation issues with Borland C++ 6.
+
+2003-01-23 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/extensions/TestNamer.h: fixed bug #662666 (missing include
+    for typeinfo).
+
+2002-12-12 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * src/cppunit/TestResult.cpp: TestFailure are no longer passed as temporary,
+    but explicitely instantiated on the stack. Work around AIX compiler bug.
+
+2002-12-03 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/TextTestResult.h: added missing dll export for 
+    operator << (bug #610119).
+
+2002-12-02 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/plugin/DynamicLibraryManagerException.h: added constructor
+    to fix compilation issues on recents version of gcc and sun CC (bug #619059)
+
+  * include/cppunit/input/XmlInputHelper.h: added.
+
+  * src/cppunit/XmlOuputter.cpp: use iterator instead of const_iterator.
+
+  * src/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWnd.cpp: added call to
+    IsUp() in cdxCDynamicWnd::DoOnGetMinMaxInfo() before calling 
+    GetBorderSize() which caused an assertion. Bug #643612.
+
+2002-09-10 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/extensions/TestSuiteBuilderContext.h:
+  * src/cppunit/TestSuiteBuilderContext.cpp: added addProperty() and
+    getStringProperty(). Added macros CPPUNIT_TEST_SUITE_PROPERTY.
+
+  * src/msvc6/testrunner/TestRunnerDlg.cpp: integrated Tim Threlkeld's
+    bug fix #610162: browse button was disabled if history was empty.
+
+  * src/msvc6/testrunner/DynamicWindow/cdxCSizeIconCtrl.cpp: integrated 
+    Tim Threlkeld's bug fix #610191: common control were not initialized.
+
+  * include/cppunit/extensions/ExceptionTestCaseDecorator.h: bug #603172,
+    missing Message construction.
+
+  * src/cppunit/DefaultProtector.cpp: bug #603172. Fixed missing ';'.
+
+  * src/cppunit/TestCase.cpp: bug #603671. Removed unguarded typeinfo
+    include.
+
+  * examples/cppunittests/*Suite.h: bug #603666. Added missing Portability.h
+    include.
+
+2002-09-01 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/ui/text/TextTestRunner.h: fixed header guards.
+
+2002-08-29 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/TestResult.h:
+  * src/cppunit/TestResult.cpp: fixed shouldStop() bug.
+
+2002-08-29 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/CompilerOutputter.h:
+  * include/cppunit/Exception.h:
+  * include/cppunit/Protector.h:
+  * include/cppunit/TestListener.h:
+  * include/cppunit/TestPath.h:
+  * include/cppunit/TestResult.h:
+  * include/cppunit/TestRunner.h:
+  * include/cppunit/XmlOutputter.h:
+  * include/cppunit/plugin/DynamicLibraryManager.h:
+  * include/cppunit/plugin/PlugInManager.h:
+  * include/cppunit/plugin/PlugInParameters.h:
+  * include/cppunit/TestPlugIn.h:
+  * src/cppunit/DefaultProtector.h:
+  * src/cppunit/ProtectorChain.h:
+  * src/cppunit/ProtectorContext.h:
+  * src/cppunit/TestCase.cpp:
+  * src/cppunit/TestResult.cpp: fixed a dew documentation bugs.
+
+  * include/cppunit/TestResult.h:
+  * src/cppunit/TestResult.cpp: moved documentation to header.
+
+2002-08-29 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/Asserter.h:
+  * include/cppunit/Message.h:
+  * include/cppunit/extensions/TestNamer.h:
+  * include/cppunit/extensions/TestSuiteBuilder.h:
+  * include/cppunit/tools/XmlDocument.h:
+  * include/cppunit/tools/XmlElement.h: Fixed a few documentation bugs.
+
+2002-08-28 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/Portability.h: added CPPUNIT_STATIC_CAST.
+
+  * include/cppunit/extensions/TestFixtureFactory.h: extracted from
+    HelperMacros.h. Added template class ConcretTestFixtureFactory.
+
+  * include/cppunit/extensions/TestSuiteBuilderContext.h:
+  * src/cppunit/TestSuiteBuilderContext.cpp: added. Context used
+    to add test case to the fixture suite. Prevent future 
+    compatibility break for custom test API.
+
+  * include/cppunit/extensions/HelperMacros.h: mostly rewritten. No
+    longer use TestSuiteBuilder. Added support for abstract test fixture
+    through macro CPPUNIT_TEST_SUITE_END_ABSTRACT. Made custom test API
+    easier to use.
+
+  * examples/cppunittest/HelperMacrosTest.h:
+  * examples/cppunittest/HelperMacrosTest.cpp: updated against 
+    HelperMacros.h changes.
+
+2002-08-27 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * CodingGuideLines.txt: updated for OS/390 C++ limitation.
+
+  * examples/cppunittests/MockFunctor.h: added. Mock Functor to help 
+    testing.
+
+  * examples/cppunittests/MockProtector.h: qdded. Mock Protector to help
+    testing.
+
+  * examples/cppunittests/TestResultTest.h
+  * examples/cppunittests/TestResultTest.cpp: added tests for 
+    pushProtector(), popProtector() and protect().
+
+  * include/cppunit/TestAssert.h: removed default message value from
+    assertEquals(). Caused compilation error on OS/390.
+
+  * include/cppunit/plugin/PlugInParameters.h:
+  * src/cppunit/PlugInParameters.cpp: renamed commandLine() to 
+    getCommandLine().
+
+  * src/msvc6/testrunner/TestRunnerDlg.h:
+  * src/msvc6/testrunner/TestRunnerDlg.cpp: bug fix, disabled Browse
+    button while running tests.
+
+2002-08-22  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * cppunit.m4: Doc fix: MINIMUM-VERSION is not optional when using
+       this macro.
+
+2002-08-04 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * src/cppunit/XmlDocument.cpp: fixed compatility bug with C++ builder.
+
+  * include/cppunit/plugin/Parameters.h: renamed PlugInParameters.h.
+
+  * src/cppunit/PlugInParameter.cpp: added. Implementation of class
+    PlugInParameters.
+
+  * examples/DumperPlugIn/DumperPlugIn.cpp:
+  * examples/ClockerPlugIn/ClockerPlugIn.cpp:
+  * src/DllPlugInTester/CommandLineParser.h:
+  * src/DllPlugInTester/CommandLineParser.cpp:
+  * include/cppunit/plugin/TestPlugInDefaultImpl.h:
+  * src/cppunit/TestPlugInDefaultImpl.cpp:
+  * include/cppunit/plugin/PlugInManager.h:
+  * src/cppunit/PlugInManager.cpp: updated against PlugInParameter
+    change.
+
+2002-08-03 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/XmlOutputterHook.h: integrated Stephan Stapel
+       documentation update.
+
+2002-08-03 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/Exception.h:
+  * src/cppunit/Exception.h: added setMessage().
+
+  * include/cppunit/Protector.h:
+  * src/cppunit/Protector.cpp: added class ProtectorGuard. Change the
+    reportXXX() method to support Exception passing and SourceLine.
+
+  * include/cppunit/TestCaller.h: removed 'expect exception' features.
+    It is now handled by ExceptionTestCaseDecorator and TestCaller no
+    longer need default template argument support.
+
+  * include/cppunit/TestCase.h:
+  * include/cppunit/extensions/TestCaller.h: runTest() is now public
+    instead of protected, so that it can be decorated.
+
+  * include/cppunit/TestResult.h:
+  * src/cppunit/TestResult.h: added pushProtector() and popProtector()
+    methods. This allow user to specify their own exception trap when
+    running test case.
+
+  * include/cppunit/extensions/TestDecorator.h:
+  * src/cppunit/TestDecorator.cpp: added. Extracted from TestDecorator.h.
+    The test passed to the constructor is now owned by the decorator.
+
+  * include/cppunit/extensions/TestCaseDecorator.h:
+  * src/cppunit/TestCaseDecorator.cpp: added. Decorator for TestCase
+    setUp(), tearDown() and runTest().
+
+  * include/cppunit/extensions/ExceptionTestCaseDecorator.h: added. 
+    TestCaseDecorator to expect that a specific exception is thrown.
+
+  * include/cppunit/extensions/HelperMacros.h: updated against TestCaller
+    change.
+
+  * src/cppunit/DefaultFunctor.h: fixed bug (did not return underlying
+    test return code).
+
+  * src/cppunit/ProtectorChain.cpp: fixed bug in chaing return code.
+
+  * src/cppunit/DefaultFunctor.h: fixed bug.
+
+  * src/msvc6/testrunner/ActiveTest.h:
+  * src/msvc6/testrunner/ActiveTest.cpp: updated against 
+    TestCaseDecorator ownership policy change. Moved inline functions
+    to .cpp.
+
+  * examples/cppunittest/TestSetUpTest.cpp: updated to use MockTestCase
+    and against the new ownership policy.
+
+  * examples/cppunittest/TestDecoratorTest.cpp:
+  * examples/cppunittest/RepeatedTestTest.cpp: updated against 
+    TestDecorator ownership policy change.
+
+  * examples/cppunittest/ExceptionTestCaseDecoratorTest.h:
+  * examples/cppunittest/ExceptionTestCaseDecoratorTest.cpp: added. Unit 
+    tests for ExceptionTestCaseDecoratorTest.
+
+2002-07-16 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/Protector.h:
+  * src/cppunit/Protector.cpp: added. Base class for protectors.
+
+  * src/cppunit/DefaultProtector.h:
+  * src/cppunit/DefaultProtector.cpp: added. Implementation of the default
+    protector used to catch std::exception and any other exception.
+
+  * src/cppunit/ProtectorChain.h:
+  * src/cppunit/ProtectorChain.cpp: added. Implementation of a chain of
+    protector, allowing catching custom exception and implementation of
+    expected exception.
+
+  * src/cppunit/TestCase.cpp:
+  * src/cppunit/TestResult.cpp: updated to use protector.
+
+2002-07-14 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * CodingGuideLines.txt: added. CppUnit's coding guidelines for portability.
+
+  * include/cppunit/portability/CppUnitStack.h: added. wrapper for std::stack.
+
+  * include/cppunit/portability/CppUnitSet.h: added. wrapper for std::set.
+
+  * include/cppunit/ui/text/TestRunner.h: fixed namespace definition for
+    deprecated TestRunner.
+
+  * include/cppunit/TestAssert.h:
+  * src/cppunit/TestAssert.cpp: removed old deprecated functions that did
+    not use SourceLine. Moved assertEquals() and assertDoubleEquals() into
+    CppUnit namespace.
+
+  * src/cppunit/TestFactoryRegistry.cpp: use CppUnitMap instead of std::map.
+
+  * src/DllPlugInTester/CommandLineParser.h: use CppUnitDeque instead 
+    std::deque.
+
+  * examples/cppunittest/*.h:
+  * examples/cppunittest/*.cpp: removed all usage of CppUnitTest namespace.
+    Everything is now in global space.
+
+  * examples/*/*.h:
+  * examples/*/*.cpp: replaced usage of CppUnit:: with CPPUNIT_NS::.
+
+  * examples/ClockerPlugIn/ClockerModel.h: use CppUnit STL wrapper instead
+    of STL container.
+
+2002-07-13 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/ui/text/TestRunner.h: 
+  * src/cppunit/TextTestRunner.cpp: Renamed TextUi::TestRunner 
+    TextTestRunner and moved it to the CppUnit namespace. Added 
+    a deprecated typedef for compatibility with previous version.
+
+  * include/cppunit/ui/text/TextTestRunner.h: added.
+
+  * include/cppunit/ui/mfc/TestRunner.h:
+  * src/cppunit/msvc6/testrunner/TestRunner.cpp: Renamed MfcUi::TestRunner
+    MfcTestRunner. Added deprecated typedef for compatibility. Renamed
+    TestRunner.cpp to MfcTestRunner.cpp.
+
+  * include/cppunit/ui/mfc/MfcTestRunner.h: added.
+
+  * include/cppunit/ui/qt/TestRunner.h:
+  * src/qttestrunner/TestRunner.cpp: renamed QtUi::TestRunner QtTestRunner
+    and moved it to CppUnit namespace. Added a deprecated typedef for
+    compatibility. Renamed TestRunner.cpp to QtTestRunner.cpp.
+
+  * include/cppunit/ui/qt/TestRunner.h:
+  * src/qttestrunner/TestRunner.h: Moved TestRunner to CppUnit namespace 
+    and renamed it QtTestRunner. Added deprecated typedef for compatibility.
+
+  * include/cppunit/Asserter.h:
+  * src/cppunit/Asserter.cpp: changed namespace Asserter to a struct and
+    made all methods static.
+
+  * include/cppunit/extensions/HelperMacros.h:
+  * include/cppunit/extensions/SourceLine.h:
+  * include/cppunit/extensions/TestAssert.h:
+  * include/cppunit/extensions/TestPlugIn.h: 
+  * include/cppunit/Portability.h: changed CPPUNIT_NS(symbol) to a
+    symbol macro that expand either to CppUnit or nothing. The symbol is
+    no longer a parameter.
+
+  * include/cppunit/portability/CppUnitVector.h:
+  * include/cppunit/portability/CppUnitDeque.h:
+  * include/cppunit/portability/CppUnitMap.h: added. STL Wrapper for
+    compilers that do not support template default argumenent and need
+    the allocator to be passed when instantiating STL container.
+
+  * examples/cppunittest/*.h:
+  * examples/cppunittest/*.cpp:
+  * src/msvc6/testrunner/*.h:
+  * src/msvc6/testrunner/*.cpp:
+  * src/msvc6/testpluginrunner/*.h:
+  * src/msvc6/testpluginrunner/*.cpp:
+  * src/qttestrunner/*.h:
+  * src/qttestrunner/*.cpp: replaced occurence of CppUnit:: by CPPUNIT_NS.
+
+  * src/cppunit/TestSuite.h: 
+  replaced occurence of std::vector by CppUnitVector.
+
+2002-07-12 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/config/Portability.h: If the compiler does not support
+    namespace (CPPUNIT_HAVE_NAMESPACES=0), define CPPUNIT_NO_STD_NAMESPACE
+    and CPPUNIT_NO_NAMESPACE. If CPPUNIT_NO_STD_NAMESPACE is defined, then
+    CppUnit assumes that STL are in the global namespace. If 
+    CPPUNIT_NO_NAMESPACE is defined, then CppUnit classes are placed in the
+    global namespace instead of the CppUnit namespace.
+
+  * include/cppunit/config/config-bcb5.h:
+  * include/cppunit/config/config-msvc6.h: added definition of macro
+    CPPUNIT_HAVE_NAMESPACES.
+
+  * include/cppunit/tools/StringTools.h: use CPPUNIT_WRAP_COLUMN as default
+    parameter value for wrap().
+
+  * include/cppunit/*/*.h:
+  * src/cppunit/*.cpp: changed all CppUnit namespace declaration to use
+    macros CPPUNIT_NS_BEGIN and CPPUNIT_NS_END. Also, changed reference
+    to CppUnit namespace (essentially in macros) using CPPUNIT_NS macro.
+
+  * doc/doxyfile.in:
+  * doc/CppUnit-Win.dox: updated doxygen configuration files so that
+    CPPUNIT_NS_BEGIN and CPPUNIT_NS_END macros are expanded. This help
+    generates the documentation using the CppUnit namespace.
+
+2002-07-11 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/Portability.h: added macro CPPUNIT_CONST_CAST.
+
+  * src/cppunit/Exception.cpp:
+  * src/cppunit/Test.cpp:
+  * examples/cppunittest/MockTestCase.cpp: replaced usage of const_cast with
+    CPPUNIT_CONST_CAST.
+
+  * include/cppunit/Test.h:
+  * src/cppunit/Test.cpp: made findTestPath(), findTest() and resolvePath()
+    const methods.
+
+2002-07-10 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/extensions/AutoRegisterSuite.h:
+  * include/cppunit/extensions/Orthodox.h:
+  * include/cppunit/extensions/TestSuiteBuilder.h:
+  * include/cppunit/extensions/TestSuiteFactory.h:
+  * include/cppunit/TestCaller.h:
+  * examples/hierarchy/BoardGameTest.h:
+  * examples/hierarchy/ChessTest.h: replaced usage of 'typename' in template
+    declaration with 'class'.
+
+  * include/cppunit/ui/text/TestRunner.h:
+  * src/cppunit/TextTestRunner.cpp: updated to use the generic TestRunner.
+    Removed methods runTestByName() and runTest(). Inherits 
+    CppUnit::TestRunner.
+
+  * include/cppunit/extensions/TestSuiteBuilder.h: removed templatized method
+    addTestCallerForException(). It is no longer used since release 1.9.8.
+
+  * examples/cppunittest/MockTestCase.h
+  * examples/cppunittest/MockTestCase.cpp: removed the usage of 'mutable'
+    keyword.
+
+2002-07-04 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * src/msvc6/DSPlugIn/DSPlugIn.dsp: updated so that only the release
+    configuration get copied to the lib/ directory.
+
+2002-07-03 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/XmlOutputter.h: fixed XmlOutputter constructed default
+    value initializatino which caused compilation error with BC5.
+
+  * src/cppunit/PlugInManager.cpp: added missing CPPUNIT_NO_TESTPLUGIN guard.
+
+  * src/msvc6/testrunner/TestRunner.dsp:
+  * src/msvc6/testrunner/TestRunner.rc:
+  * src/msvc6/testrunner/TestRunnerDlg.cpp:
+  * src/msvc6/testrunner/TestRunnerDlg.h:
+  * src/msvc6/testrunner/TreeHierarchyDlg.cpp:
+  * src/msvc6/testrunner/TreeHierarchyDlg.h:
+  * src/msvc6/testpluginrunner/TestPlugInRunner.dsp:
+  * src/msvc6/testpluginrunner/TestPlugInRunner.rc:
+  * src/msvc6/testpluginrunner/TestPlugInRunnerApp.cpp:
+  * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp:
+  * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h: applied Steven Mitter
+    patch to fix bug #530426 (conflict between TestRunner and host 
+    application's resources). Adapted patch to compile work with Unicode.
+
+  * src/msvc6/testrunner/ResourceLoaders.h:
+  * src/msvc6/testrunner/ResourceLoaders.cpp:
+  * src/msvc6/testrunner/Change-Diary-ResourceBugFix.txt: added, from
+    Steven Mitter's patch. Simplified loadCString() to compile with Unicode.
+
+  * src/cppunit/cppunit.dsp:
+  * src/cppunit/cppunit_dll.dsp:
+  * src/DllPlugInTester/DllPlugInTester.dsp:
+  * src/msvc6/testrunner/TestRunner.dsp:
+  * src/msvc6/testpluginrunner/TestPlugInRunner.dsp: all lib, dll and exe are
+    now created in the intermediate directory. A post-build rule is used to
+    copy them to the lib/ directory.
+
+2002-06-17 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/AdditionalMessage.h:
+  * src/cppunit/AdditionalMessage.cpp: added. Class to help passing 
+    additional message parameter.
+
+  * include/cppunit/Asserter.h: added makeExpected(), makeActual() and
+    makeNotEqualMessage(). Removed methods made unnecessary by the
+    use of AdditionalMessage.
+
+  * include/cppunit/Portability.h: added CPPUNIT_WRAP_COLUMN to define
+    CppUnit default wrap column.
+
+  * src/cppunit/CompilerOutputter.cpp: use CPPUNIT_WRAP_COLUMN instead
+    of hard-coded value.
+
+2002-06-16 Baptiste Lepilleur <gaiacrtn@free.fr>
+  
+  * bumped version to 1.9.9
+
+  * release 1.9.8
+
+  * include/cppunit/plugin/TestPlugIn.h: updated documentation.
+
+  * include/cppunit/tools/XmlDocument.h: updated documentation.
+
+  * include/cppunit/tools/StringTools.h:
+  * src/cppunit/StringTools.cpp: added split() and wrap() functions.
+
+  * include/cppunit/CompilerOutputter.h:
+  * src/cppunit/CompilerOutputter.cpp: extracted wrap() and 
+    splitMessageIntoLines() to StringTools.
+
+  * include/cppunit/XmlOutputterHook.h:
+  * src/cppunit/XmlOutputterHook.cpp: removed rooNode parameter from
+    beginDocument() and endDocument(). It can be retreive from document.
+    Renamed 'node' occurences to 'element'.
+
+  * include/cppunit/XmlOutputter.h:
+  * src/cppunit/XmlOutputter.cpp: updated against 
+    XmlOutputterHook changes. Renamed 'node' occurences to 'element'.
+
+  * src/cppunit/Message.cpp:
+  * src/cppunit/XmlElement.cpp: added missing include <stdexcept>
+
+  * examples/ClockerPlugIn/ClockerXmlHook.h:
+  * examples/ClockerPlugIn/ClockerXmlHook.cpp: updated against 
+    XmlOutputterHook changes.
+
+  * examples/cppunittest/MessageTest.cpp: removed std::string() from
+    assertion. Somehow gcc can't parse it. Added missing include <stdexcept>.
+
+  * examples/cppunittest/XmlElement.cpp: added missing include <stdexcept>.
+
+  * examples/cppunittest/XmlElementTest.h:
+  * examples/cppunittest/XmlElementTest.cpp: Renamed 'node' occurences 
+    to 'element'.
+
+  * examples/cppunittest/XmlOutputterTest.cpp: updated against 
+    XmlOutputterHook changes.
+
+  * examples/cppunittest/StringToolsTest.h:
+  * examples/cppunittest/StringToolsTest.cpp: added. Unit tests for 
+    StringTools. Turn out that VC++ dismiss empty lines in tools output, 
+    which is the reason why empty lines where not printed in 
+    CompilerOutputter.
+
+2002-06-14 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/plugin/PlugInManager.h:
+  * src/cppunit/PlugInManager.cpp: added two methods to use the plug-in
+    interface for Xml Outputter hooks.
+
+  * include/cppunit/plugin/TestPlugIn.h: added two methods to the plug-in
+    interface for Xml Outputter hooks.
+
+  * include/cppunit/plugin/TestPlugInAdapter.h:
+  * src/cppunit/plugin/TestPlugInAdapter.cpp: renamed TestPlugInDefaultImpl.
+    Added empty implementation for Xml outputter hook methods.
+
+  * include/cppunit/tools/StringTools.h:
+  * src/cppunit/tools/StringTools.cpp: added. Functions to manipulate string
+    (conversion, wrapping...)
+
+  * include/cppunit/tools/XmlElement.h:
+  * src/cppunit/XmlElement.cpp: renamed addNode() to addElement(). Added
+    methods to walk and modify XmlElement (for hook). Added documentation.
+    Use StringTools.
+
+  * include/cppunit/XmlOutputter.h:
+  * src/cppunit/XmlOutputter.cpp: added hook calls & management.
+
+  * include/cppunit/XmlOutputterHook.h:
+  * src/cppunit/XmlOutputterHook.cpp: added. Hook to customize XML output.
+
+  * src/DllPlugInTester/DllPlugInTester.cpp: call plug-in XmlOutputterHook
+    when writing XML output. Modified so that memory is freed before 
+    unloading the test plug-in (caused crash when freeing the XmlDocument).
+
+  * examples/ReadMe.txt:
+  * examples/ClockerPlugIn/ReadMe.txt: added details about the plug-in
+    (usage, xml content...)
+
+  * examples/ClockerPlugIn/ClockerModel.h:
+  * examples/ClockerPlugIn/ClockerModel.cpp: extracted from ClockerListener.
+    Represents the test hierarchy and tracked time for each test.
+
+  * examples/ClockerPlugIn/ClockerListener.h:
+  * examples/ClockerPlugIn/ClockerListener.cpp: extracted test hierarchy
+    tracking to ClockerModel. Replaced the 'flat' view option with a 'text'
+    option to print the timed test tree to stdout.
+
+  * examples/ClockerPlugIn/ClockerPlugIn.cpp: updated to hook the XML
+    output and use the new classes.
+
+  * examples/ClockerPlugIn/ClockerXmlHook.h:
+  * examples/ClockerPlugIn/ClockerXmlHook.cpp: added. XmlOutputterHook to
+    includes the timed test hierarchy and test timing in the XML output.
+
+  * examples/cppunittest/XmlElementTest.h:
+  * examples/cppunittest/XmlElementTest.cpp: added new test cases.
+
+  * examples/cppunittest/XmlOutputterTest.h:
+  * examples/cppunittest/XmlOutputterTest.cpp: added tests for 
+    XmlOutputterHook.
+
+2002-06-14 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * src/cppunit/TypeInfoHelper.cpp: added work around for bug #565481.
+    gcc 3.0 RTTI name() returns the type prefixed with a number (the
+    length of the type). The work around strip the number.
+
+  * src/msvc6/testpluginrunner/TestPlugInRunnerApp.cpp: registry key is now
+    set. Allow to save settings.
+
+  * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h:
+  * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp: added layout 
+    initialization for resizing.
+
+  * src/msvc6/testpluginrunner/TestPlugRunner.rc:
+  * src/msvc6/testpluginrunner/TestPlugInRunner.dsp: added TestRunner 
+    project files. Somehow I can't get cdxCDynamicDialog to compile
+    as a MFC extension. Included all sources files and resources
+    as a very dirt work around.
+
+  * src/msvc6/testrunner/TestRunnerDlg.h:
+  * src/msvc6/testrunner/TestRunnerDlg.cpp:
+  * src/msvc6/testrunner/TestRunnerModel.h: those classes are no longer
+    exported in the MFC extension. See TestPlugInRunner issue with
+    cdxCDynamicDialog.
+
+  * include/cppunit/Message.h:
+  * include/cppunit/TestPath.h:
+  * include/cppunit/TestResult.h:
+  * include/cppunit/TestResultCollector.h:
+  * include/cppunit/TestSuite.h:
+  * include/cppunit/TestFactoryRegistry.h:
+  * include/cppunit/XmlElement.h:
+  * include/cppunit/TypeInfoHelper.h: commented out STL template export
+    in DLL. This caused conflicts when instantiting the same template in
+    a user project.
+
+2002-06-14 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * src/cppunit/CompilerOutputter.cpp: fixed bug #549762 (line wrap).
+
+  * src/msvc6/testrunner/DynamicWindow/*: added. Dynamic Window library
+    from Hans Bühler (hans.buehler@topmail.de) to resize window.
+
+  * src/msvc6/testrunner/TestRunnerModel.h:
+  * src/msvc6/testrunner/TestRunnerModel.cpp: removed dialog bounds from
+    settings. Added public registry keys for cppunit, main dialog, and
+    browse dialog.
+
+  * src/msvc6/testrunner/TreeHierarchyDlg.h:
+  * src/msvc6/testrunner/TreeHierarchyDlg.cpp: dialog is now resizable.
+    Window placement is stored and restored.
+
+  * src/msvc6/testrunner/TestRunnerDlg.h:
+  * src/msvc6/testrunner/TestRunnerDlg.cpp: replaced dialog resizing code
+    by usage of Hans Bühler's Dynamic Window library. Dialog placement
+    is stored/restored by that library. ProgressBar is now a child window.
+    Added edit field to see the details of the failure. List on show
+    the short description of the failure.
+
+  * src/msvc6/testrunner/ProgressBar.h:
+  * src/msvc6/testrunner/ProgressBar.cpp: is now a CWnd.
+
+  * src/msvc6/testrunner/TestRunner.rc: named all static fill ID for resizing.
+    Added an invisble static field for progress bar placement.
+
+2002-06-13 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * doc/other_documentation.dox: fixed some typos.
+
+  * include/cppunit/NotEqualException.h:
+  * src/cppunit/NotEqualException.cpp: removed.
+
+  * include/cppunit/Exception.h:
+  * src/cppunit/Exception.cpp: removed 'type' related stuffs.
+
+  * include/cppunit/TextTestResult.h:
+  * src/cppunit/TextTestResult.cpp: delegate printing to TextOutputter.
+
+  * examples/simple/ExampleTestCase.h:
+  * examples/simple/ExampleTestCase.cpp: reindented.
+
+  * src/qttestrunner/build:
+  * src/qttestrunner/qttestrunner.pro:
+  * src/qttestrunner/TestBrowserDlgImpl.h:
+  * src/qttestrunner/TestRunnerModel.h: applied Thomas Neidhart's patch,
+    'Some minor fixes to compile QTTestrunner under Linux.'.
+
+2002-06-13 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/Asserter.h:
+  * src/cppunit/Asserter.cpp: added functions that take a Message as a 
+    parameter. Existing function have a short description indicating
+    an assertion failure.
+
+  * include/cppunit/CompilerOuputter.h:
+  * src/cppunit/CompilerOuputter.cpp: removed printNotEqualMessage() and
+    printDefaultMessage(). Updated to use Message.
+
+  * include/cppunit/Message.h:
+  * src/cppunit/Message.cpp: added. Represents a message associated to an 
+    Exception.
+
+  * include/cppunit/Exception.h:
+  * src/cppunit/Exception.cpp: the message associated to the exception is now
+    stored as a Message instead of a string.
+
+  * include/cppunit/NotEqualException.cpp: constructs a Message instead of a
+    string.
+
+  * include/cppunit/TestAssert.h:
+  * src/cppunit/TestAssert.cpp: updated to use Asserter functions that
+    take a message when pertinent (CPPUNIT_FAIL...).
+
+  * include/cppunit/TestCaller.h:
+  * src/cppunit/TestCaller.cpp: exception not caught failure has a better
+    short description.
+
+  * src/cppunit/TestCase.cpp: better short description when setUp() or
+    tearDown() fail.
+
+  * src/msvc6/testrunner/TestRunnerDlg.cpp: replace '/n' in failure message
+    with space.
+
+  * examples/cppunittest/ExceptionTest.cpp:
+  * examples/cppunittest/NotEqualExceptionTest.cpp:
+  * examples/cppunittest/TestCallerTest.cpp:
+  * examples/cppunittest/TestFailureTest.cpp:
+  * examples/cppunittest/TestResultCollectorTest.h:
+  * examples/cppunittest/TestResultCollectorTest.cpp:
+  * examples/cppunittest/TestResultTest.cpp:
+  * examples/cppunittest/XmlOutputterTest.h:
+  * examples/cppunittest/XmlOutputterTest.cpp: updated to use Exception/Message.
+
+  * examples/cppunittest/MessageTest.h:
+  * examples/cppunittest/MessageTest.cpp: added. Unit test for Message.
+
+2002-06-11 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * install-unix: added some hints extracted from bug #544684 on how to compile
+    for Solaris/Forte C++ compiler.
+
+  * TODO: cleaned-up and added new things.
+
+  * include/cppunit/extensions/HelperMacros.h: CPPUNIT_TEST_SUITE now declares
+    a class named ThisTestFixtureFactory which is a wrapper for the fixture
+    factory. This removes the need to cast the fixture to the correct type when
+    using the factory. Updated other macros implementation to use this new
+    factory. Modified CPPUNIT_TEST_CUSTOM(S) macros to use this new factory
+    class. Added macro CPPUNIT_TEST_ADD to help create new macros like
+    CPPUNIT_TEST_xxx.
+
+  * examples/cppunittest/HelperMacrosTest.h:
+  * examples/cppunittest/HelperMacrosTest.cpp: added unit tests for
+    CPPUNIT_TEST_CUSTOM, CPPUNIT_TEST_CUSTOMS and CPPUNIT_TEST_ADD.
+
+2002-06-01 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * doc/cookbook.dox: fixed bug.
+
+  * install-unix: added compilation instruction for Solaris/Sun 6.0
+
+2002-05-25 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/extensions/TestSuiteBuilder.h: updated to use TestNamer. Removed
+    template method addTestCallerForException() which should solve the compilation
+    issue with Sun 5.0/6.0 compiler.
+
+  * include/cppunit/extensions/HelperMacros.h: updated against TestSuiteBuilder
+    change. Added CPPUNIT_TEST_CUSTOM and CPPUNIT_TEST_CUSTOMS to add custom 
+    tests to the fixture suite.
+  
+  * include/cppunit/extensions/TestNamer.h:
+  * src/cppunit/TestNamer.cpp: added, TestNamer to name test case and fixture.
+
+2002-05-23 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * include/cppunit/XmlOutputter.h:
+  * src/cppunit/XmlOutputter.cpp: extracted class XmlOutputter::Node to 
+  XmlElement. Extracted xml 'prolog' generation to XmlDocument.
+
+  * include/cppunit/tools/XmlElement.h:
+  * src/cppunit/tools/XmlElement.cpp: added, extracted from XmlOutputter::Node.
+
+  * include/cppunit/tools/XmlDocument.h:
+  * src/cppunit/tools/XmlDocument.cpp: added, extracted from XmlOutputter. Handle
+  XML document prolog (encoding & style-sheet) and manage the root element.
+
+  * src/DllPlugInTester/DllPlugInTester.cpp: bug fix, flag --xsl was ignored.
+
+  * examples/cppunittest/XmlOutputterTest.h:
+  * examples/cppunittest/XmlOutputterTest.cpp: updated for XmlOuputter changes.
+  extracted tests for XmlOutputter::Node to XmlElementTest
+
+  * examples/cppunittest/XmlElementTest.h:
+  * examples/cppunittest/XmlElementTest.cpp: added, tests extracted from
+  XmlOutputterTest.
+
+2002-05-21 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+  * src/msvc6/testrunner/MsDevCallerListCtrl.h:
+  * src/msvc6/testrunner/MsDevCallerListCtrl.cpp:
+  * src/msvc6/testrunner/Resource.h:
+  * src/msvc6/testrunner/TestRunner.rc:
+  * src/msvc6/testrunner/TestRunnerDlg.cpp:
+  * src/msvc6/testrunner/TestRunnerModel.h:
+  * src/msvc6/testpluginrunner/TestPlugInRunner.rc:
+  * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp:
+  * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h:
+  * src/msvc6/testpluginrunner/TestPlugInRunnerModel.cpp: integrated patch from 
+  Marco Welti (Welti@GretagMacbeth.ch) with a few clean up.
+  Display the name of the test being run during above the progress bar. Allow the
+  VC++ add-ins to works with TestPlugInRunner (COM init). DLL name can be specified
+  on the command line after flag '-testsuite'. Display wait cursor, clear and reload
+  history when reloading DLL.
+
+  * THANKS: added Marco Welti to the list.
+
+2002-05-07 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * src/DllPlugInTester/CommandLineParser.cpp: fixed compilation issue.
+
+       * src/msvc6/TestRunner/ActiveTest.h:
+       * src/msvc6/TestRunner/ActiveTest.cpp: reindented. bugfix: thread
+       handle resource leak (bug #553424).
+
+2002-04-25 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * src/cppunit/XmlOutputter.cpp: bugfix, use ISO-8859-1 encoding if an
+         empty string is given.
+
+       * src/DllPlugInTester/CommandLineParser.h:
+       * src/DllPlugInTester/CommandLineParser.cpp:
+       * src/DllPlugInTester/DllPlugInTester.cpp: added option -w to wait for
+         the user to press a key before exiting (Philippe Lavoie patch, 
+         with change).
+
+2002-04-22 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/plugin/DynamicLibraryManagerException.h: removed
+         trailing ',' in enum.
+
+       * examples/ClockerPlugIn/ClockerListener.cpp: bugfix, average test
+         case time computation.
+
+2002-04-21 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * bumped version to 1.9.7
+
+       * comitted stuffs I forgot to in 1.9.6.
+
+2002-04-21 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * contrib/bc5/bcc-makefile.zip: updated, generic makefile for
+         Borland 5.5, contributed by project cuppa.
+
+       * examples/cppunittest/*Suite.h: integrated Jeffrey Morgan's patch,
+         to remove warning with gcc.
+
+       * release 1.9.6
+
+2002-04-21 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * src/DllPlugInTester/makefile.am: removed ld.so from LDADD flags.
+
+       * src/DllPlugInTester/CommandLineParser.h:
+       * src/DllPlugInTester/CommandLineParser.cpp: rewrote, fixed problem
+         with double quotes in command line...
+
+       * src/DllPlugInTester/CommandLineParserTest.h:
+       * src/DllPlugInTester/CommandLineParserTest.cpp:
+       * src/DllPlugInTester/DllPlugInTesterTest.cpp: added, unit tests for
+         CommandLineParser.
+
+       * src/msvc6/TestPlugIn/*: removed.
+
+       * examples/Money/*: added. New 'hello world' example.
+
+       * doc/Money.dox: added. Article that go along with the Money example.
+
+2002-04-21 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * THANKS: updated
+
+       * src/cppunit/DynamicLibraryManager.cpp: bugfix: did not pass
+         library name to exception.
+
+       * include/cppunit/TestPath.h:
+       * src/cppunit/TestPath.cpp: changed into value object.
+
+       * src/cppunit/BeosDynamicLibraryManager.cpp: integrated patch from
+         Shibu Yoshiki for BeOS ('cuppa' project team).
+
+       * src/DllPlugInTester/CommandLineParser.h:
+       * src/DllPlugInTester/CommandLineParser.cpp: added. Command line
+         parsing.
+
+       * src/DllPlugInTester/DllPlugInTester.cpp: full command line support
+         with parameters for plug-ins.
+
+       * src/DllPlugInTester/makefile.am:
+       * examples/simple/makefile.am:
+       * examples/cppunittest/makefile.am: integrated Jeffrey Morgan's patch,
+         Unix side should be working again.
+
+       * examples/ReadMe.txt: added. Brief description of each example.
+
+       * examples/cppunittest/CppUnitTestPlugIn.cpp:
+       * examples/cppunittest/CppUnitTestPlugIn.dsp: added. New project to
+         build CppUnit's test suite as a test plug-in.
+
+       * examples/cppunittest/CppUnitTestSuite.cpp: updated. Use new
+         helper macros to create the test suite hierarchy.
+
+       * examples/simple/simple_plugin.opt: added. Contains debug tab
+         settings.
+
+       * examples/ClockerPlugIn/ClockerListener.cpp:
+       * examples/ClockerPlugIn/ClockerListener.h:
+       * examples/ClockerPlugIn/Timer.cpp:
+       * examples/ClockerPlugIn/Timer.h:
+       * examples/ClockerPlugIn/WinNtTimer.cpp:
+       * examples/ClockerPlugIn/WinNtTimer.h:
+       * examples/ClockerPlugIn/ClockerPlugIn.cpp:
+       * examples/ClockerPlugIn/ClockerPlugIn.dsp: added. test listener 
+         plug-in that times tests.
+
+       * examples/DumperPlugIn/DumperListener.cpp:
+       * examples/DumperPlugIn/DumperListener.h:
+       * examples/DumperPlugIn/DumperPlugIn.cpp:
+       * examples/DumperPlugIn/DumperPlugIn.dsp: added. test listener 
+         plug-in that dump the test tree.
+
+
+2002-04-19 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * src/cppunit/PlugInManager.cpp: fixed bug in unload().
+
+       * include/cppunit/TypeInfoHelper.h:
+       * src/cppunit/TypeInfoHelper.cpp: Implementation is now always available
+         is CPPUNIT_HAVE_RTTI is not 0. This removes the need to use
+         different libraries. CPPUNIT_USE_TYPEINFO_NAME can be set on a 
+         case by case basis for HelperMacros.
+
+       * src/cppunit/TestFactoryRegistry.cpp: removed unused include of
+         TypeInfoHelper.h.
+
+       * include/cppunit/TextTestProgressListener.h:
+       * src/cppunit/TextTestProgressListener.cpp: used endTest() instead
+         of done() to finalize.
+
+       * src/msvc6/TestPlugInRunner/TestPlugIn.h:
+       * src/msvc6/TestPlugInRunner/TestPlugIn.cpp: updated to use the
+         new test plug-in system.
+
+       * examples/simple/SimplePlugIn.cpp:
+       * examples/simple/simple_plugin.dsp: crossplatform test plug-in
+         example using 'simple'.
+
+       * examples/msvc6/EasyTestPlugIn/*: projects replaced with the 
+         crossplatform projecct examples/simple/simple_plugin.dsp.
+
+2002-04-19 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * configure.in: added some makefile.am
+
+       * contrib/readme.txt: updated.
+
+       * contrib/bc5/bc5-makefile.zip: added borland 5.5 makefile. Contributed by
+         project cuppa.
+
+       * src/cppunit/TypeInfoHelper.cpp: fixed implementation to be more
+         portable.
+
+
+2002-04-18 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * bumped version to 1.9.3
+
+       * FAQ: added question about 4786 warning on VC++.
+
+       * NEWS: updated.
+
+       * contrib/msvc/readme.txt: moved to contrib/readme.txt.
+
+       * contrib/xml-xsl/report.xsl: added XML style sheet contributed by 
+       'cuppa' project team (http://sourceforge.jp/projects/cuppa/)
+
+       * examples/cppunittest/TestResultTest.h:
+       * examples/cppunittest/TestResultTest.cpp: added tests for 
+         startTestRun()/endTestRun().
+
+       * examples/simple/*: added. A simple example.
+
+       * include/cppunit/BriefTestProgressListener.h:
+       * src/cppunit/BriefTestProgressListener.cpp: added. Verbose progess listener
+         that print the test name before running the test.
+
+       * include/cppunit/TestListener.h: added startTestRun()/endTestRun().
+
+       * include/cppunit/TestResult.h:
+       * src/cppunit/TestResult.cpp: added runTest(), to be called to run
+         a test by test runner.
+
+       * src/cppunit/TextTestRunner.cpp:
+       * src/cppunit/TestRunner.cpp: updated to use TestResult::runTest().
+
+       * include/cppunit/plugin/PlugInManager.h:
+       * src/cppunit/PlugInManager.cpp: added. Managers for all loaded plug-ins.
+
+       * include/cppunit/plugin/TestPlugInDefaultImpl.h:
+       * src/cppunit/TestPlugInDefaultImpl.cpp: renamed TestPlugInAdapter. All 
+         implementations are empty.
+
+       * include/cppunit/plugin/TestPlugInSuite.h: removed.
+       * src/cppunit/TestPlugInSuite.cpp: removed. Replaced by PlugInManager.
+
+       * include/cppunit/plugin/TestPlugIn.h: rewrote the plug-in interface to 
+         provide more versatility. updated macros to match new interface.
+
+       * include/cppunit/extensions/TestFactoryRegistry.h:
+       * include/cppunit/extensions/TestFactoryRegistry.cpp: Added unregisterFactory(). 
+         Added convenience method addRegistry(). Rewrote registry life cycle 
+         management. AutoRegisterSuite can now detect that the registry has been
+         destroy and not call to it to unregister its test factory.
+
+       * include/cppunit/extensions/AutoRegisterTest.h: on destruction, the registered
+         factory is unregistered from the registry.
+
+       * include/cppunit/extensions/HelperMacros.h: added macros
+         CPPUNIT_REGISTRY_ADD_TO_DEFAULT and CPPUNIT_REGISTRY_ADD to help
+         build test suite hierarchy.
+
+       * src/cppunit/msvc/DllPlugInTester/*: moved to src/cppunit/DllPlugInTester/.
+
+       * src/cppunit/DllPlugInTester/DllPlugInTester.cpp: removed UNICODE stuffs. Use
+         the PlugInManager instead of PlugInTestSuite. Simplified: only one test on
+         command line, but many DLL can be specified. Added configurations to link
+         against cppunit dll, those are now the default configuration (static linking
+         don't make much sense for plug-in).
+
+2002-04-15 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * release 1.9.2.
+
+       * NEWS: updated.
+
+       * configure.in: added include/cppunit/config/Makefile and 
+         include/cppunit/plugin/Makefile to the list of target.
+
+       * doc/CppUnit-win.dox: enabled generation of HTML Help documentation.
+
+       * include/cppunit/config/Makefile.am:
+       * include/cppunit/plugin/Makefile.am: added.
+
+       * include/cppunit/config-bcb5.h:
+       * include/cppunit/config-msvc6.h:
+       * include/cppunit/config-mac.h: moved to include/cppunit/config/.
+
+       * include/cppunit/Portability.h: updated config files location. Added macros
+         CPPUNIT_STRINGIZE and CPPUNIT_JOIN (implementation adapted from boost.org).
+         Added macro CPPUNIT_MAKE_UNIQUE_NAME.
+
+       * include/cppunit/Test.h: modified methods order.
+
+       * include/cppunit/extensions/HelperMacros.h: renamed macro 
+         __CPPUNIT_MAKE_UNIQUE_NAME to CPPUNIT_MAKE_UNIQUE_NAME and moved its 
+         definition to include/cppunit/Portability.h.
+
+       * include/cppunit/extensions/TestDecorator.h: Inherits Test instead of TestLeaf.
+
+       * include/cppunit/plugin/DynamicLibraryManager.h:
+       * src/cppunit/DynamicLibraryManager.cpp: added. DLL manager (load & lookup
+         symbol).
+
+       * src/cppunit/BeOsDynamicLibraryManager.cpp:
+       * src/cppunit/UnixDynamicLibraryManager.cpp:
+       * src/cppunit/Win32DynamicLibraryManager.cpp: added. Implementation of 
+         platform dependent methods of DynamicLibraryManager.
+
+       * include/cppunit/plugin/DynamicLibraryManagerException.h:
+       * src/cppunit/DynamicLibraryManagerException.cpp: added. Exception thrown
+         by DynamicLibraryManager.
+
+       * include/cppunit/plugin/TestPlugIn.h: added. CppUnitTestPlugIn interface
+         definition. Helper macros to implements plug-in.
+
+       * include/cppunit/plugin/TestPlugInSuite.h:
+       * src/cppunit/plugin/TestPlugInSuite.cpp: added. A suite to wrap a test
+         plug-in.
+
+       * include/cppunit/plugin/TestPlugInDefaultImpl.h:
+       * src/cppunit/TestPlugInDefaultImpl.cpp: added. A default implementation
+         of the test plug-in interface.
+
+       * src/msvc6/DllPlugInTester/DllPlugInTester.cpp: updated to use the
+         new TestPlugIn.
+
+       * examples/cppunittest/TestResultCollectorTest.cpp: fixed typo.
+
+2002-04-14 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * NEWS: updated.
+
+       * include/cppunit/TestSucessListener.h:
+       * src/cppunit/TestSucessListener.cpp: renamed TestSuccessListener
+
+       * doc/cookbook.dox:
+       * src/msvc6/DllPlugInTester/DllPlugInTester.cpp:
+       * examples/cppunittest/TestResultCollectorTest.h:
+       * examples/cppunittest/TestResultCollectorTest.cpp:
+       * examples/cppunittest/XmlOutputterTest.h:
+       * examples/cppunittest/XmlOutputterTest.cpp:
+       * include/cppunit/CompilerOutputter.h:
+       * include/cppunit/TestListener.h:
+       * include/cppunit/XmlOutputter.h:
+       * src/cppunit/XmlOutputter.cpp:
+       * src/cppunit/CompilerOutputter.cpp: fixed 'success' typo (was misspelled
+       'sucess').
+
+       * include/cppunit/TestResultCollector.h:
+       * src/cppunit/TestResultCollector.cpp: updated (renaming of 
+         TestSucessListener).
+
+       * src/cppunit/XmlOutputter.cpp:
+       * examples/cppunittest/XmlOutputterTest.cpp: Changed SucessfulTests tag to
+       SucessfulTests.
+
+2002-04-13 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/XmlOutputter.h:
+       * src/cppunit/XmlOutputter.cpp: Made XML output more human readable. Idented element.
+
+       * examples/cppunittest/XmlUniformiser.h:
+       * examples/cppunittest/XmlUniformiser.cpp:
+       * examples/cppunittest/XmlUniformiserTest.cpp: modified to ignore trailing space
+         at the end of element content.
+
+2002-04-13 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * Snapshot 1.9.0
+
+       * NEWS: updated
+
+       * doc/other_documentation.dox: addded new module for test plug-in.
+
+       * include/msvc6/DSPlugin/TestRunnerDSPlugin.h:
+       * include/msvc6/DSPlugin/TestRunnerDSPlugin_i.c: added. Those file are
+         generated by project src/msvc/DSPlugin. They are provided to allow
+         compilation of TestRunner without compiling DSPlugIn which does not 
+         build on VC++ 7.
+
+       * examples/examples.dsw: removed DSPlugIn for workspace (fail to build 
+         with VC++ 7). Added DllPlugInTester.dsp to workspace.
+
+       * examples/msvc6/TestPlugIn/TestPlugIn.dsp: added post-build unit testing
+         using the new DllPlugInTester.
+
+       * examples/msvc6/EasyTestPlugIn/*: a new project that
+         demonstrates the use of CPPUNIT_TESTPLUGIN_IMPL to create a test plug-in.
+         
+       * src/cppunit/cppunit.dsw:
+       * src/TestPlugInRunner.dsw:
+       * src/TestRunner.dsw: removed. Should use src/CppUnitLibraries.dsw instead.
+
+       * include/cppunit/ui/text/TestRunner.h:
+       * src/cppunit/TextTestRunner.cpp: removed findTestName() method. Replaced
+         by Test::findTest().
+
+       * src/msvc6/DSPlugIn/DSPlugIn.dsp:
+       * src/msvc6/DSPlugIn/DSAddIn.h: changed include for add-in. MIDL generates
+         files in sub-directory ToAddToDistribution. Generated file should be 
+         copied to include/msvc6/DSPlugin when modified. This remove the dependecy
+         of MfcTestRunner on DSPlugIn.
+
+       * src/msvc6/testrunner/ListCtrlFormatter.h:
+       * src/msvc6/testrunner/ListCtrlFormatter.cpp: added GetNextColumnIndex().
+
+       * src/msvc6/testrunner/src/TestRunnerDlg.h:
+       * src/msvc6/testrunner/src/TestRunnerDlg.cpp: set column number in 
+         MsDevCallerListCtrl when initializing the list.
+
+       * src/msvc6/testrunner/src/MsDevCallerListCtrl.h:
+       * src/msvc6/testrunner/src/MsDevCallerListCtrl.cpp: column indexes for 
+         file and line number are no longer static. Added methods to set those 
+         indexes. Changed DSPlugIn header name.
+
+       * include/msvc6/testrunner/TestPlugInInterface.h: fixed inclusion of
+         windows header for WINAPI. Added macro CPPUNIT_TESTPLUGIN_IMPL to
+         automatically implements a test plug-in.
+
+       * src/msvc6/DllPlugInTester/*: added new project. A application to test DLL
+         and report using CompilerOutputter. Target for post-build testing and 
+         debugging of DLL.
+         
+
+2002-04-13 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/CompilerOutputter.h:
+       * src/cppunit/CompilerOutputter.h: deprecated defaultOuputter(). Added 
+         setLocationFormat() and format specifiation in constructor. A string
+         that represent the location format is used to output the location. 
+         Default format is defined by CPPUNIT_COMPILER_LOCATION_FORMAT.
+
+       * include/cppunit/config-msvc6.h:
+       * include/cppunit/Portability.h: added CPPUNIT_COMPILER_LOCATION_FORMAT.
+         Use gcc location format if VC++ is not detected.
+
+       * include/cppunit/Test.h: fixed documentation.
+
+       * include/cppunit/TestListener.h: added startSuite() and endSuite() 
+         callbacks. Added new example to documentation.
+
+       * include/cppunit/TestResult.h:
+       * src/cppunit/TestResult.cpp:
+       * include/cppunit/TestComposite.h:
+       * src/cppunit/TestComposite.cpp: Updated to inform the listeners.
+
+       * src/qttestrunner/TestBrowserDlgImpl.cpp: used Test new composite
+         interface instead of RTTI to explore the test hierarchy.
+
+       * examples/cppunittest/MockTestListener.h:
+       * examples/cppunittest/MockTestListener.cpp: updated,added support for
+         startSuite() and endSuite().
+
+       * examples/cppunittest/TestResultTest.h:
+       * examples/cppunittest/TestResultTest.cpp: added tests for startSuite() 
+         and endSuite().
+
+2002-04-12 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * Makefile.am: added examples/qt to tar ball release.
+
+       * TODO: heavily updated.
+
+       * contrib/msvc/CppUnit*.wwtpl: changed base class for unit test to TestFixture.
+
+       * include/cppunit/Test.h: removed toString() method. Not used by the framework
+         and source of confusions with getName().
+         Added getChildTestCount() and getChildTestAt(), introducing the composite pattern
+         at top level. Added utility methods findTest() and findTestPath().
+
+       * src/cppunit/Test.cpp: added. Implementation of new utility methods.
+
+       * include/cppunit/TestCase.h:
+       * src/cppunit/TestCase.cpp: inherits TestLeaf. Removed toString(), run(void) and
+         defaultResult(). Removed default constructor.
+
+       * src/cppunit/TestCase.cpp:
+       * src/cppunit/TestSuite.cpp: fixed some includes that used "" instead of <>.
+
+       * include/cppunit/TestComposite.h:
+       * src/cppunit/TestComposite.cpp: added. Common implementation of Test for composite
+         tests (TestSuite).
+
+       * include/cppunit/TestFailure.h:
+       * src/cppunit/TestFailure.cpp: removed toString().
+
+       * include/cppunit/TestLeaf.h:
+       * src/cppunit/TestLeaf.cpp: added. Common implementation of Test for single test
+         (TestCase).
+
+       * include/cppunit/TestListener.h: added TimingListener example to documentation.
+
+       * include/cppunit/TestPath.h: 
+       * src/cppunit/TestPath.cpp: added. List of test traversed to access a test in the
+         test hierarchy.
+
+       * include/cppunit/TestRunner.h: added. Generic TestRunner.
+
+       * src/cppunit/TestRunner.cpp: moved to TextTestRunner.cpp. Added new implementation
+         of includecppunit/TestRunner.h.
+
+       * include/cppunit/TestSuite.h:
+       * src/cppunit/TestSuite.cpp: inherits TestComposite and implements new Test 
+         interface. Removed toString().
+
+       * src/cppunit/TextTestRunner.cpp: moved from TestRunner.cpp. Implementation of
+         include/cppunit/ui/text/TestRunner.h.
+
+       * include/cppunit/extensions/RepeatedTest.h:
+       * src/cppunit/RepeatedTest.cpp: removed toString().
+
+       * include/cppunit/extensions/TestDecorator.h: inherits TestLeaf. 
+         Removed toString()
+
+       * include/cppunit/XmlOutputter.h:
+       * src/cppunit/XmlOutputter.cpp:
+       * examples/cppunittest/XmlOutputterTest.cpp:
+       * examples/cppunittest/XmlOutputterTest.h: XML outputter now escape node content.
+         Add unit test for that bug (#540944). Added style sheet support. Modified
+         XML structure: failure message as its own element.
+
+       * src/msvc/testrunner/TestRunnerModel.h:
+       * src/msvc/testrunner/TestRunnerModel.cpp: used Test::findTest() to find a test
+         by name instead of using RTTI. Added toAnsiString() for convertion when 
+         compiling as UNICODE.
+
+       * src/msvc/testrunner/TreeHierarchyDlg.h:
+       * src/msvc/testrunner/TreeHierarchyDlg.cpp: used new composite interface of Test
+         to explorer the test hierarchy instead of RTTI.
+
+       * examples/cppunittest/TestPathTest.h:
+       * examples/cppunittest/TestPathTest.cpp: added, unit tests for TestPath.
+
+       * examples/cppunittest/TestCaseTest.h:
+       * examples/cppunittest/TestCaseTest.cpp: added test for TestLeaf.
+
+       * examples/cppunittest/TestSuiteTest.h:
+       * examples/cppunittest/TestSuiteTest.cpp: added test for TestComposite and 
+         new Test interface.
+
+2002-04-11 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * configure.in: bumped version to 1.9.0
+       
+       * NEWS: added version 1.9.0
+
+2002-04-11 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * doc/FAQ: removed question about the Exception::operator =() problem.
+
+       * release 1.8.0
+
+2002-04-11  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * include/cppunit/ui/mfc/Makefile.am:
+       * include/cppunit/ui/qt/Makefile.am:
+       * include/cppunit/ui/text/Makefile.am: Set the libcppunitincludedir
+       variable.  Correct case of header file ui/qt/Config.h.
+
+       * configure.in: Output the new include/*/Makefiles.
+
+2002-04-10 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * Makefile.am: removed directory cppunitui from copy when making
+       the dist.
+
+       * include/cppunit/ui: added Makefile.am for dist and install.
+
+2002-04-10 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunitui/: moved to include/cppunit/ui (fix unix
+       install problem).
+
+       * doc/cookbook.dox:
+       * examples/cppunittest/CppUnitTestMain.cpp:
+       * examples/msvc/CppUnitTestApp/HostApp.cpp:
+       * examples/msvc/HostApp/HostApp.cpp:
+       * examples/qt/Main.Cpp:
+       * examples/src/cppunit/TestRunner.cpp:
+       * examples/src/msvc6/TestRunner/TestRunner.cpp:
+       * examples/src/qttestrunner/TestRunner.cpp: updated to use
+       <cppunit/ui/...> instead of <cppunitui/...> in include directives.
+
+       * doc/CppUnit-win.dox: generated documentation give the include
+       path at the bottom of the page for each class.
+
+       * NEWS: added compatibility break for 1.7.10 users.
+
+2002-04-05 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * examples/cppunittest/CppUnitTestMain.cpp: never wait for a key press.
+
+2002-04-04 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * NEW: added CPPUNIT_ASSERT_EQUAL_MESSAGE compatiblity break.
+
+       * include/cppunit/TestAssert.h: changed arguments order for
+       CPPUNIT_ASSERT_EQUAL_MESSAGE. 'message' is now the first argument
+       instead of the last (like CPPUNIT_ASSERT_MESSAGE).
+
+       * examples/cppunittest/MockTestCase.cpp:
+       * examples/cppunittest/MockTestListener.cpp: updated to reflect
+       change on CPPUNIT_ASSERT_EQUAL_MESSAGE.
+
+2002-03-28 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * configure.in: bumped version to 1.7.11
+
+2002-03-28 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * doc/cookbook.html: removed. Replaced by cookbook.doc.
+
+       * doc/cookbook.dox: added, conversion of cookbook.html to Doxygen
+       format.
+
+       * doc/other_documentation.dox: added groups definition.
+
+       * doc/Makefile.am: replaced cookbook.html by cookbook.dox
+
+       * doc/Doxyfile.in: added predefined CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION.
+       Replaced cookbook.html by cookbook.dox.
+
+       * include/cppunitui/mfc/TestRunner.h: added, extracted from
+       include/msvc6/testrunner/TestRunner.h. Moved class TestRunner to
+       namespace CppUnit::MfcUi.
+
+       * include/msvc6/testrunner/TestRunner.h: deprecated. A simple
+       typedef to CppUnit::MfcUi::TestRunner.
+
+       * include/textui/TestRuner.h: added, extracted from
+       include/cppunit/TextTestRunner.h.
+
+       * src/cppunit/TextTestRunner.cpp: renamed TestRunner.cpp. Moved
+       into namespace CppUnit::TextUi.
+
+       * src/msvc6/testruner/TestRunner.cpp: moved into namespace
+       CppUnit::MfcUi.
+
+       * src/cppunit/CompilerOutputter.cpp: removed printing "- " before
+       NotEqualException addional message, for consistency between
+       different TestRunner (Mfc,Text...)
+
+       * include/cppunit/Asserter.h:
+       * include/cppunit/CompilerOutputter.h:
+       * include/cppunit/Exception.h:
+       * include/cppunit/NotEqualException.h:
+       * include/cppunit/Outputter.h:
+       * include/cppunit/SourceLine.h:
+       * include/cppunit/TestAssert.h:
+       * include/cppunit/TestCaller.h:
+       * include/cppunit/TestFailure.h:
+       * include/cppunit/TestFixture.h:
+       * include/cppunit/TestListener.h:
+       * include/cppunit/TestResult.h:
+       * include/cppunit/TestResultCollector.h:
+       * include/cppunit/TestSucessListener.h:
+       * include/cppunit/TestSuite.h:
+       * include/cppunit/TextTestProgressListener.h:
+       * include/cppunit/TextTestRunner.h:
+       * include/cppunit/XmlOutputter.h:
+       * include/cppunit/extensions/AutoRegisterSuite.h:
+       * include/cppunit/extensions/HelperMacros.h:
+       * include/cppunit/extensions/TestFactoryRegistry.h:
+       * include/cppunit/extensions/TestSuiteBuilder.h:
+       * include/cppunit/extensions/TestSuiteFactory.h: doc
+       update. organization in groups.
+
+       * examples/msvc6/CppUnitTestApp/CppUnitTestApp.cpp:
+       * examples/msvc6/HostApp/HostApp.cpp: updated to use 
+       CppUnit::MfcUi::TestRunner.
+
+       * examples/cppunittest/CppUnitTestMain.cpp: updated to use 
+       CppUnit::TextUi::TestRunner.
+
+2002-03-27 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/msvc/testrunner/TestRunner.h: updated doc. reindented.
+
+       * include/cppunit/Asserter.h:
+       * include/cppunit/Asserter.cpp:
+       * include/cppunit/TestResultCollector.h:
+       * include/cppunit/TestResult.h:
+       * include/cppunit/SynchronizedObject.h:
+       * include/cppunit/extensions/TestCaller.h: doc update.
+
+       * include/cppunitui/qt/TestRunner.h: doc update.
+
+2002-03-27 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * makefile.am: added src/CppUnitLibraries.dsw, new contribution, and
+       src/qttestrunner.
+
+       * TODO: updated (doc).
+
+       * contrib/msvc/AddingUnitTestMethod.dsm: added, submitted by 
+       bloodchen@hotmail.com.
+
+       * constrib/msvc/readme.txt: updated.
+
+       * include/cppunit/TestAsserter.h:
+       * include/cppunit/SourceLine.h: updated doc.
+
+       * include/cppunit/TestCaller.h: reindented. updated doc.
+
+       * include/cppunit/extensions/HelperMacros.h: relaxed constraint on fixture.
+       Fixture base class may be TestFixture instead of TestCase.
+
+       * include/cppunit/TestCase.h: 
+       * src/cppunit/TestCase.h: TestCase inherits TestFixture for setUp() and
+       tearDown() definition. Moved documentation to TestFixture.
+
+       * include/cppunit/TestFixture.h: updated documentation.
+
+       * include/cppunit/TestRegistry.h:
+       * src/cppunit/TestRegistry.cpp: Removed. Replaced by TestFactoryRegistry.
+
+       * include/cppunit/TextTestRunner.h:
+       * src/cppunit/TextTestRunner.cpp: made printing progress using a 
+       TextTestProgressListener optional.
+
+       * examples/cppunittest/ExceptionTest.h:
+       * examples/cppunittest/HelperMacrosTest.h:
+       * examples/cppunittest/HelperMacrosTest.cpp:
+       * examples/cppunittest/NotEqualException.h:
+       * examples/cppunittest/OrthodoxTest.h:
+       * examples/cppunittest/RepeatedTest.h:
+       * examples/cppunittest/TestAssertTest.h:
+       * examples/cppunittest/TestCallerTest.h:
+       * examples/cppunittest/TestDecoratorTest.h:
+       * examples/cppunittest/TestFailureTest.h:
+       * examples/cppunittest/TestResultCollectorTest.h:
+       * examples/cppunittest/TestResultTest.h:
+       * examples/cppunittest/TestSetUpTest.h:
+       * examples/cppunittest/TestSuiteTest.h:
+       * examples/cppunittest/XmlOutputterTest.h:
+       * examples/cppunittest/XmlOutputterTest.cpp:
+       * examples/cppunittest/XmlUniformizerTest.h:
+       * examples/cppunittest/XmlUniformizerTest.cpp: changed base class for fixture
+       from TestCase to TestFixture.
+
+       * examples/hierarchy/BoardGameTest.h:
+       * examples/hierarchy/ChessTest.h:
+       * examples/hierarchy/main.cpp: updated to use HelperMacros for correct 
+       fixture instantiation (the ChessBoard::testReset test case was using 
+       BoardGame fixture instance instead of ChessBoard).
+
+2002-03-26 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * configure.in: bumped version to 1.7.9
+
+2002-03-26 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * src/msvc6/testpluginrunner/TestPlugInRunner.dsp: fixed release configuration.
+
+2002-03-25 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/makefile.am: removed TestRegistry.h
+       
+       * include/cppunit/TestRegistry.h: removed. Obsolete, replaced by 
+       TestFactoryRegistry.
+
+       * src/cppunit/makefile.am: removed TestRegistry.cpp. Added cppunit_dll.dsp.
+
+       * include/cppunit/CompilerOutputter.h:
+       * include/cppunit/NotEqualException.h:
+       * include/cppunit/SynchronizedObject.h:
+       * include/cppunit/TestFixture.h:
+       * include/cppunit/TestListener.h:
+       * include/cppunit/TestResult.h:
+       * include/cppunit/TestSucessListener.h:
+       * include/cppunit/TextOutputter.h:
+       * include/cppunit/TextTestProgressListener.h:
+       * include/cppunit/TextTestResult.h:
+       * include/cppunit/XmlOutputter.h:
+       * include/cppunit/extensions/TestFactory.h:
+       * include/cppunit/extensions/TestFactoryRegistry.h:
+       * include/cppunit/extensions/TestSuiteBuilder.h:
+       * include/cppunit/extensions/TestSuiteFactory.h: minor doc update.
+
+       * include/cppunit/TestFixture.h: added DLL export.
+
+       * include/cppunit/msvc6/TestPlugInInterface.h: updated doc. Added automatic
+       exportation of TestPlugIn publishing function.
+
+       * src/cppunit/TestCase.cpp:
+       * include/cppunit/TestCase.h: inherits setUp() and tearDown() from 
+       class TestFixture.
+
+2002-03-25 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * configure.in: bumped version to 1.7.7
+
+2002-03-25 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/config-msvc6.h:
+       * include/cppunit/Portability.h
+       * include/cppunit/extensions/TestFactoryRegistry.h
+       * include/cppunit/TestResult.h
+       * include/cppunit/TestResultCollector.h
+       * include/cppunit/TestSuite.h
+       * include/cppunit/TextTestRunner.h
+       * include/cppunit/XmlOutputter.h: removed warning when compiling CppUnit 
+       as DLL.
+
+       * src/cppunit/DllMain.cpp: added some defines to speed up compilation a bit.
+
+2002-03-25 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * INSTALL-WIN32.txt: updated for MFC Unicode TestRunner.
+
+       * src/msvc6/testrunner/TestRunner.dsp: added Unicode configurations.
+
+       * src/msvc6/testrunner/ListCtrlSetter.cpp:
+       * src/msvc6/testrunner/ListCtrlSetter.h: replaced usage of std::string by 
+       CString for easier ansi/unicode switch.
+
+       * src/msvc6/testrunner/MsDevCallerListCtrl.cpp:
+       * src/msvc6/testrunner/TestRunnerDlg.cpp:
+       * src/msvc6/testrunner/TestRunnerModel.cpp:
+       * src/msvc6/testrunner/TestRunnerModel.h:
+       * src/msvc6/testrunner/TreeHierarchyDlg.cpp: made changes to compile with 
+       either ANSI and UNICODE support.
+
+       * examples/msvc6/HostApp/HostApp.cpp:
+       * examples/msvc6/HostApp/HostApp.h:
+       * examples/msvc6/HostApp/HostAppDoc.cpp:
+       * examples/msvc6/HostApp/HostAppDoc.h: moved TestRunner execution to 
+       HostApp::RunUnitTests() and removed the MainFrame application window.
+
+       * examples/msvc6/HostApp/HostApp.dsp: added Unicode configurations.
+
+2002-03-24 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * INSTALL-WIN32.txt: added some info to build cppunit as a DLL.
+
+       * include/cppunit/config-msvc6.h: added definition of macro CPPUNIT_API 
+       when building or linking DLL. Defined CPPUNIT_BUILD_DLL when building, and
+       CPPUNIT_DLL when linking.
+
+       * include/cppunit/Portability.h: added empty definition of macro 
+       CPPUNIT_API when not building or using CppUnit as a DLL. When any of 
+       those symbol is defined, the symbol CPPUNIT_NEED_DLL_DECL is set to 1.
+
+       * include/cppunit/extensions/RepeatedTest.h:
+       * include/cppunit/extensions/TestDecorator.h:
+       * include/cppunit/extensions/TestSetUp.h:
+       * include/cppunit/TestCaller.h
+       * include/cppunit/extensions/TestFactory.h
+       * include/cppunit/extensions/TestFactoryRegistry.h
+       * include/cppunit/extensions/TypeInfoHelper.h
+       * include/cppunit/Asserter.h
+       * include/cppunit/Exception.h
+       * include/cppunit/NotEqualException.h
+       * include/cppunit/SourceLine.h
+       * include/cppunit/SynchronizedObject.h
+       * include/cppunit/Test.h
+       * include/cppunit/TestAssert.h
+       * include/cppunit/TestCase.h
+       * include/cppunit/TestFailure.h
+       * include/cppunit/TestListener.h
+       * include/cppunit/TestResult.h
+       * include/cppunit/TestSuite.h
+       * include/cppunit/CompilerOutputter.h
+       * include/cppunit/Outputter.h
+       * include/cppunit/TestResultCollector.h
+       * include/cppunit/TestSuccessListener.h
+       * include/cppunit/TextOutputter.h
+       * include/cppunit/TextTestProgressListener.h
+       * include/cppunit/TextTestResult.h
+       * include/cppunit/TextTestRunner.h
+       * include/cppunit/XmlOutputter.h: added CPPUNIT_API for DLL export.
+       
+       * include/cppunit/TestSuite.h:
+       * src/cppunit/TestSuite.cpp: reindented
+
+       * include/cppunit/extensions/TestSetUp.h:
+       * src/cppunit/TestSetUp.cpp: added .cpp. extracted inline method and moved
+       them to cpp file.
+
+       * src/cppunit/DllMain.cpp: added, contains Dll entry point.
+
+2002-03-06 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * src/cppunit/TextTestProgressListener.cpp: flush the stream after each
+       progess step.
+
+2002-03-03 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * configure.in: updated version number to 1.7.4
+
+2002-03-03 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/makefile.am:
+       * src/cppunit/makefile.am: added missing SynchronizedObject and 
+       TextOutputter.h.
+
+       * generated 1.7.3 tar ball.
+
+2002-02-29 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * inclued/cppunit/XmlOutputter.h:
+       * inclued/cppunit/XmlOutputter.cpp: added optional parameter to constructor
+       to specify the encoding.
+
+       * configure.in: updated version number to 1.7.3
+
+2002-02-28 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * NEW: updated and restructured.
+
+       * include/cppunit/CompilerOutputter.h: 
+       * src/cppunit/CompilerOutputter.cpp: 
+       updated against TestResultChange. Changed TestResult to TestResultCollector.
+
+       * include/cppunit/extensions/HelperMacros.h: minor documentation fix.
+
+       * include/cppunit/Outputter.h: added. Abstract base class for all Outputter.
+
+       * include/cppunit/Portability.h: made the fix on OStringStream suggested by
+       Bob Summerwill to remove level 4 warning with VC++.
+
+       * include/cppunit/TestAssert.h: added macro CPPUNIT_ASSERT_EQUAL_MESSAGE.
+
+       * src/cppunit/TestFailure.cpp:
+       * include/cppunit/TestFailure.h: added method clone() to duplicate a 
+       failure. Made all method virtual.
+
+       * include/cppunit/TestListener.h: changed signature of addFailure() to
+       addFailure( const TestFailure &failure ). Failure is now only a temporary
+       object.
+
+       * include/cppunit/Outputter.h: added. Abstract base class for all 
+       outputter. Used by TextTestRunner.
+
+       * include/cppunit/SynchronizedObject.h:
+       * src/cppunit/SynchronizedObject.cpp: added. Class extracted from 
+       TestResult. Base class for objects that can be accessed from different
+       threads.
+
+       * include/cppunit/TestResult.h: TestFailure.h is no longer included.
+
+       * include/cppunit/TestResult.h: 
+       * src/cppunit/TestResult.cpp: extracted all methods related to keeping track
+       of the result to the new TestResultCollector class which is a TestListener.
+
+       * include/cppunit/TestResultCollector.h: 
+       * src/cppunit/TestResultCollector.cpp: added. TestListener which kept track
+       of the result of the test run. All failure/error, and tests are tracked.
+
+       * include/cppunit/TestSucessListener.h:
+       * src/cppunit/TestSucessListener.cpp: added. TestListener extracted from
+       TestResult. Is responsible for wasSucessful().
+
+       * include/cppunit/TestCase.h:
+       * src/cppunit/TestCase.cpp: reindented.
+
+       * include/cppunit/TextOutputter.h:
+       * src/cppunit/TextOutputter.cpp: added. Copied from the deprecated 
+       TextTestResult and modified to act as an Ouputter.
+
+       * include/cppunit/TextTestProgressListener.h:
+       * src/cppunit/TextTestProgressListener.cpp: Copied from the deprecated
+       TextTestResult and modified to print the dot while the test are running.
+
+       * include/cppunit/TextTestResult.h: 
+       * src/cppunit/TextTestResult.cpp: updated against TestResult change. 
+       No compatiblity break. Deprecated.
+
+       * include/cppunit/TextTestRunner.h:
+       * src/cppunit/TextTestRunner.cpp: updated to work with the new TestResult.
+       Use TextTestProgressListener and TextOutputter instead of TextTestResult.
+       Any outputter with interface Outputter can be used to print the test result
+       (CompilerOutputter, XmlOutputter, TextOutputter...)
+
+       * include/cppunit/XmlOutputter.h:
+       * src/cppunit/XmlOutputter.cpp: updated against TestResultChange. 
+       Changed TestResult to TestResultCollector.
+
+       * src/msvc6/TestRunnerDlg.h:
+       * src/msvc6/TestRunnerDlg.cpp: fixed the 'fullrowselect' feature of the 
+       list view. The dialog is a TestListener itself, it no longer use the 
+       GUITestResult class.
+
+       * src/msvc6/TestRunner.rc: moved the "autorun test button" in such a way that
+       it did not overlap the progress bar anymore.
+
+       * src/msvc6/MfcSynchronizationObject.h: added. Generic SynchronizedObject
+       lock for MFC.
+
+       * src/msvc6/GUITestResult.h :
+       * src/msvc6/GUITestResult.cpp : removed.
+
+       * src/qttestrunner/TestRunnerModel.h:
+       * src/qttestrunner/TestRunnerModel.cpp: changed addFailure() signature to
+       reflect change on TestListener.
+
+       * examples/cppunittest/CppUnitTestMain.cpp: updated to use the new Outputter 
+       abstraction and TextTestRunner facilities.
+
+       * examples/cppunittest/FailingTestCase.h:
+       * examples/cppunittest/FailingTestCase.cpp: removed. Replaced by MockTestCase.
+
+       * examples/cppunittest/FailingTestCase.h:
+       * examples/cppunittest/FailingTestCase.h:
+
+       * examples/cppunittest/HelperMacrosTest.h:
+       * examples/cppunittest/HelperMacrosTest.cpp: Updated against TestResult change.
+       Use MockTestListener instead of TestResult to check for sucess or failure.
+
+       * examples/cppunittest/MockTestListener.h:
+       * examples/cppunittest/MockTestListener.cpp: the class now behave like a mock
+       object.
+
+       * examples/cppunittest/MockTestCase.h:
+       * examples/cppunittest/MockTestCase.cpp: added. Mock TestCase object.
+
+       * examples/cppunittest/OrthodoxTest.h:
+       * examples/cppunittest/OrthodoxTest.cpp: Updated against TestResult change.
+       Use MockTestListener instead of TestResult to check for sucess or failure.
+
+       * examples/cppunittest/SynchronizedTestResult.h: Updated against TestResult 
+       change.
+
+       * examples/cppunittest/TestCallerTest.h:
+       * examples/cppunittest/TestCallerTest.cpp: Updated against TestResult change.
+       Use MockTestListener instead of TestResult.
+
+       * examples/cppunittest/TestCaseTest.h:
+       * examples/cppunittest/TestCaseTest.cpp: Updated against TestResult change. 
+       Use MockTestListener and MockTestCase instead of FailingTestCase and TestResult.
+
+       * examples/cppunittest/TestDecoratorTest.h:
+       * examples/cppunittest/TestDecoratorTest.cpp: Updated against TestResult change.
+       Use MockTestCase instead of FailingTestCase.
+
+       * examples/cppunittest/TestListenerTest.h:
+       * examples/cppunittest/TestListenerTest.cpp: removed. Those unit tests have been 
+       rewrote and moved to TestResultTest.
+
+       * examples/cppunittest/TestResultTest.h:
+       * examples/cppunittest/TestResultTest.cpp: Updated to test the new interface.
+       Tests from TestListenerTest have been moved here.
+
+       * examples/cppunittest/TestResultCollectorTest.h:
+       * examples/cppunittest/TestResultCollectorTest.cpp: added. Tests for the class 
+       that been extracted from TestResult.
+
+       * examples/cppunittest/TestSetUpTest.h:
+       * examples/cppunittest/TestSetUpTest.cpp: renamed SetUp inner class to MockSetUp.
+       Changed interface to be more akin to a Mock object.
+
+       * examples/cppunittest/TestSuiteTest.h:
+       * examples/cppunittest/TestSuiteTest.cpp: Updated against TestResult change, 
+       and rewrote to use MockTestCase instead of FailingTestCase.
+
+       * examples/cppunittest/XmlOutputterTest.h:
+       * examples/cppunittest/XmlOutputterTest.cpp: Updated against TestResult change.
+       Added some utility methods to make the update easier.
+
+2001-10-28  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * INSTALL-unix: Add note about cygwin.
+
+2001-10-24 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp:
+       * examples/msvc6/HostApp/HostApp.dsp: use custom file build instead
+       of post-build/pre-link step to copy the TestRunner DLL to the 
+       Release/Debug directory.
+
+       * src/msvc6/ProgressBar.cpp:
+       * src/msvc6/ProgressBar.h:
+       * src/msvc6/TestRunner.rc:
+       * src/msvc6/TestRunnerDlg.cpp:
+       * src/msvc6/TestRunnerDlg.h:
+       * src/msvc6/testRunner.dsp:
+       * src/msvc6/TestRunnerModel.cpp:
+       * src/msvc6/TestRunnerModel.h: included Gigi Sayfan (gigi@morphink.com)
+       patch. The dialog can now be resized, and list view columns and dialog
+       sizes are saved.
+
+       * src/msvc6/ProgressBar.cpp:
+       * src/msvc6/ProgressBar.h: Minor refactoring.
+
+       * THANKS: added Gigi Sayfan to the list.
+
+2001-10-21  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * configure.in: Bump version to 1.7.2.
+
+       * Release 1.7.1 (alpha).
+
+       * Merged changes from cvs BRANCH_1_6; details follow.
+
+       * examples/cppunittest/TestSetUpTest.h (class SetUp): Add
+       namespace qualifier to CppUnit::TestSetup() constructor call.
+
+       * include/cppunit/Makefile.am (dist-hook): Restore hook to
+       remove config-auto.h from distribution.
+
+       * doc/Makefile.am: Move the definition of htmldir inside if DOC
+       conditional.  Add "else" branch to conditional with dummy targets
+       for install-data-hook and uninstall-local.  Move all-local outside
+       the conditional, and move "dox" target into both branches of the
+       conditional.
+
+2001-10-20  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * examples/cppunittest/Makefile.am (cppunittestmain_SOURCES):
+       Include XmlUnformiserTest files.
+
+       * doc/Doxyfile.in (GENERATE_MAN): Do not generate man pages.
+       * doc/Makefile.am: Do not make man directories.
+
+2001-10-19 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/Exception.h:
+       * src/cppunit/Exception.cpp: what(), added back the throw() qualifier.
+
+2001-10-14 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunitui/* : added, Qt TestRunner.
+
+       * examples/qt/* : added, example showing the use of Qt TestRunner.
+
+       * src/qttestrunner : added, source of the Qt TestRunner DLL.
+
+2001-10-08  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * src/cppunit/Exception.cpp (what): Remove "throw()" qualifier, to
+       match earlier change to header.
+
+2001-10-07 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/CompilerTestResultOutputter.h :
+       renamed CompilerOutputter.h
+
+       * src/cppunit/CompilerTestResultOutputter.cpp : 
+       renamed CompilerOutputter.cpp
+
+       * include/cppunit/CompilerTestResultOutputter.h :
+       * src/cppunit/CompilerTestResultOutputter.cpp : ajust max line length
+       for wrapping. Added static factory method defaultOutputter(). Print 
+       the number of test runs on success. 
+
+       * include/cppunit/CompilerTestResultOutputter.h : renamed
+       CompilerOutputter.h.
+
+       * src/cppunit/CompilerTestResultOutputter.cpp : renamed
+       CompilerOutputter.cpp.
+
+       * examples/cppunittest/CppUnitTestMain.cpp : use factory method 
+       CompilerTestResultOutputter::defaultOutputter().
+
+       * src/msvc6/DSPlugIn/DSPlugIn.dsp : removed COM registration in 
+       post-build step. IT is automatically done by VC++ when the add-in is
+       added. Caused build to failed if the add-in was used in VC++.
+
+       * NEWS : updated.
+
+       * src/cppunit/TestAssert.cpp : modified deprecated assert 
+       implementations to use Asserter.
+
+       * examples/cppunittest/XmlTestResultOutputterTest.h : 
+       renamed XmlOutputterTest.h.
+
+       * examples/cppunittest/XmlTestResultOutputterTest.cpp : 
+       renamed XmlOutputterTest.cpp.
+
+       * NEWS :
+       * examples/cppunittest/CppUnitTestMain.cpp :
+       * examples/cppunittest/CppUnitTestMain.dsp :
+       * examples/cppunittest/Makefile.am :
+       * examples/cppunittest/XmlTestResultOutputterTest.h :
+       * examples/cppunittest/XmlTestResultOutputterTest.cpp :
+       * examples/msvc6/CppUniTestApp/CppUnitTestApp.dsp
+       * include/cppunit/CompilerOutputter.h :
+       * include/cppunit/Makefile.am :
+       * include/cppunit/XmlTestResultOutputter.h :
+       * src/cppunit/CompilerOutputter.cpp :
+       * src/cppunit/cppunit.dsp :
+       * src/cppunit/Makefile.am :
+       * src/cppunit/XmlTestResultOutputter.cpp : change due to renaming
+       CompilerTestResultOutputter to CompilerOutputter, 
+       XmlTestResultOutputter to XmlOuputter, XmlTestResultOutputterTest
+       to XmlOutputterTest.
+
+2001-10-06 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/CompilerTestResultOutputter.h :
+       * src/cppunit/CompilerTestResultOutputter.cpp : added. Output result
+       in a compiler compatible format.
+
+       * src/cppunit/CppUnit.dsp :
+       * include/cppunit/MakeFile.am :
+       * src/cppunit/MakeFile.am : added CompilerTestResultOutputter.cpp
+       and CompilerTestResultOutputter.h.
+
+       * examples/cppunittest/CppUnitTestMain.cpp : if -selftest is specified
+       on the command line, no standard test result are printed, but compiler
+       compatible result at printed.
+
+       * examples/cppunittest/CppUnitTestMain.dsp : added post-build step to
+       run the test suite with -selftest.
+
+       * NEWS : updated.
+
+       * src/cppunit/TextTestRunner.cpp : skip a line after printing 
+       progress.
+
+2001-10-06 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * examples/cppunittest/CppUnitTestMain.cpp : application returns
+       0 is test suite run sucessfuly, 1 otherwise.
+
+       * src/cppunit/Exception.cpp : bug fix, operator =() with VC++. 
+       Removed call to std::exception::operator =() which is bugged
+       on VC++.
+
+       * doc/FAQ : added a note explaining why the test 
+       ExceptionTest.testAssignment used to fail.
+
+       * NEWS : updated and detailed.
+
+       * include/cppunit/TestResult.h :
+       * src/cppunit/TestResult.cpp : added reset().
+
+       * include/cppunit/TextTestRunner.h :
+       * src/cppunit/TextTestRunner.cpp : Constructor take an optional
+       TextTestRestult. The TextTestResult remain alive as long as
+       the runner. Added result() to retreive the result. Printing the
+       result is now optinal (enabled by default).
+
+2001-10-05 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/Asserter.h :
+       * src/cppunit/Asserter.cpp : added. Helper to create assertion macros.
+
+       * src/cppunit/cppunit.dsp :
+       * src/cppunit/Makefile.am :
+       * include/cppunit/Makefile.am : added Asserter.h and Asserter.cpp.
+
+       * include/cppunit/Exception.h :
+       * src/cppunit/Exception.cpp : added constructor that take a 
+       SourceLine argument. Deprecated static constant and old constructor.
+       Fixed some constness issues.
+
+       * examples/cppunittest/ExceptionTest.cpp : Refactored.
+
+       * NEWS : partially updated (need to be more detailed)
+
+       * include/cppunit/NotEqualException.h :
+       * src/cppunit/NotEqualException.cpp : added constructor that take a 
+       SourceLine argument. Deprecated old constructor. Added a third element
+       to compose message.
+
+       * examples/cppunittest/NotEqualExceptionTest.cpp : moved to "Core"
+       suite. Added test for SourceLine() and additionalMessage(). 
+       Refactored.
+
+       * include/cppunit/SourceLine.h :
+       * src/cppunit/SourceLine.cpp : added. Result of applying 
+       IntroduceParameterObject refactoring on filename & line number...
+
+       * include/cppunit/TestAssert.h : 
+       * src/cppunit/TestAssert.cpp : deprecated old assert functions.
+       added functions assertEquals() and assertDoubleEquals() which use
+       SourceLine.
+
+       * src/cppunit/TestCase.cpp : Modified for SourceLine.
+
+       * include/cppunit/TestFailure.h :
+       * src/cppunit/TestFailure.cpp : added failedTestName(), and 
+       sourceLine().
+
+       * src/msvc6/testrunner/TestRunnerDlg.cpp : modified to use SourceLine.
+
+       * include/cppunit/TextTestResult.h :
+       * src/cppunit/TextTestResult.cpp : corrected include order and
+       switched to angled brackets. Refactored. Don't print failure location
+       if not available. Not equal failure dump additional message if 
+       available.
+
+       * src/cppunit/TextTestRunner.cpp : run() now returns a boolean to
+       indicate if the run was sucessful.
+
+       * src/cppunit/XmlTestResultOutputter.cpp : replaced itoa() with
+       OStringStream. Refactored.
+
+       * examples/cppunittest/XmlUniformiser.h :
+       * examples/cppunittest/XmlUniformiser.cpp : 
+       CPPUNITTEST_ASSERT_XML_EQUAL capture failure location. Refactored
+       checkXmlEqual().
+
+       * examples/cppunittest/XmlUniformiserTest.h :
+       * examples/cppunittest/XmlUniformiserTest.cpp : added test for
+       CPPUNITTEST_ASSERT_XML_EQUAL.
+
+       * include/cppunit/XmlTestResultOutputter.h :
+       * src/cppunit/XmlTestResultOutputter.cpp : updated to use SourceLine.
+
+2001-10-05 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * NEWS : updated.
+
+       * include/cppunit/Exception.h : added include Portability.h.
+
+       * include/cppunit/TestResult.* : changed TestFailures to a deque.
+       added tests().
+
+       * examples/cppunittest/CppUnitTest.dsp : 
+       * examples/cppunittest/MakeFile.am : 
+       * examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp : Added 
+       XmlTestResultOutputterTest.*, XmlUniformiser.*, XmlUniformiserTest.*,
+       UnitTestToolSuite.h, OutputSuite.h.
+
+       * examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp : revised project
+       folders structure. Added missing NoteEqualExceptionTest.*.
+
+       * examples/cppunittest/CppUnitTestSuite.cpp : added 'Output' and
+       'UnitTestTool' suites.
+
+       * src/cppunit/cppunit.dsp: removed estring.h. Revised project folders
+       structure. Removed TestRegistry.*. Added TestSetUp.h, 
+       XmlTestResultOutputter.*. 
+
+       * src/cppunit/MakeFile.am: added XmlTestResultOutputter.*.
+
+       * src/testrunner/TestRunnerDlg.cpp: removed disabled code.
+
+2001-10-03 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/TestFailure.cpp :
+       * include/cppunit/TestFailure.h : fixed some constness issues. Added
+       argument to indicate the type of failure to constructor. Added
+       isError().
+
+       * include/cppunit/TestListener.h : removed addError(). addFailure()
+       now take a TestFailure as argument.
+
+       * include/cppunit/TestResult.h :
+       * include/cppunit/TestResult.cpp : removed errors(). Refactored. Fixed
+       some constness issues. Added typedef TestFailures for vector returned 
+       by failures(). failures() returns a const reference on the list of 
+       failure. added testFailuresTotal(). Constructor can take an optional 
+       synchronization object.
+
+       * include/cppunit/TextTestResult.h :
+       * include/cppunit/TextTestResult.cpp : removed printErrors(). 
+       Refactored. Updated to suit new TestResult, errors and failures are
+       reported in the same list.
+
+       * examples/cppunittest/TestFailureTest.cpp :
+       * examples/cppunittest/TestFailureTest.h : modified to use the new
+       TestFailure constructor. Added one test.
+
+       * examples/cppunittest/TestListenerTest.cpp: removed addError(). 
+       Refactored to suit new TestListener.
+
+       * examples/cppunittest/TestResultTest.h :
+       * examples/cppunittest/TestResultTest.cpp : modified to suit the
+       new TestResult. 
+
+2001-10-02 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/extensions/TestFactoryRegistry.h
+       * src/cppunit/TestFactoryRegistry.cpp : fixed memory leaks that 
+       occured when a TestFactoryRegistry was registered into another
+       TestFactoryRegistry.
+
+       * include/cppunit/extensions/AutoRegisterSuite.h : updated doc.
+
+       * include/cppunit/extensions/HelperMacros.h : added macro
+       CPPUNIT_TEST_SUITE_NAMED_REGISTRATION to register a suite into
+       a named suite. Updated doc.
+
+       * examples/cppunittest/CoreSuite.h:
+       * examples/cppunittest/ExtensionSuite.h:
+       * examples/cppunittest/HelperSuite.h: added, declaration of suite for
+       use with CPPUNIT_TEST_SUITE_NAMED_REGISTRATION.
+
+       * examples/cppunittest/makefile.am : added HelperSuite.h, CoreSuite.h,
+       ExtensionSuite.h, CppUnitTestSuite.h and CppUnitTestSuite.cpp.
+
+       * examples/cppunittest/CppUnitTestSuite.*: added.
+
+       * examples/cppunittest/ExceptionTest.cpp:
+       * examples/cppunittest/TestAssertTest.cpp:
+       * examples/cppunittest/TestCaseTest.cpp: 
+       * examples/cppunittest/TestFailureTest.cpp:
+       * examples/cppunittest/TestListenerTest.cpp:
+       * examples/cppunittest/TestResultTest.cpp:
+       * examples/cppunittest/TestSuiteTest.cpp: moved into named suite
+       "Core" using CPPUNIT_TEST_SUITE_NAMED_REGISTRATION.
+
+       * examples/cppunittest/OrthodoxTest.cpp:
+       * examples/cppunittest/RepeatedTest.cpp:
+       * examples/cppunittest/TestDecoratorTest.cpp:
+       * examples/cppunittest/TestSetUpTest.cpp: moved into named suite
+       "Extension" using CPPUNIT_TEST_SUITE_NAMED_REGISTRATION.
+
+       * examples/cppunittest/HelperMacrosTest.cpp:
+       * examples/cppunittest/TestCallerTest.cpp: moved into named suite
+       "Helper" using CPPUNIT_TEST_SUITE_NAMED_REGISTRATION.
+
+       * examples/cppunittest/CppUnitTest.dsp : 
+       * examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp : added 
+       Makefile.am, HelperSuite.h, CoreSuite.h, ExtensionSuite.h,
+       CppUnitTestSuite.h and CppUnitTestSuite.cpp.
+
+2001-10-01 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * NEWS : updated.
+
+       * doc/other_documentation.dox : added all the authors to the list of
+       authors.
+
+       * examples/cppunittest/HelperMacrosTest.*: added unit tests for
+       CPPUNIT_TEST_FAIL & CPPUNIT_TEST_EXCEPTION.
+
+       * examples/cppunittest/TestAssertTest.*: added unit tests for
+       CPPUNIT_FAIL. Corrected spelling error. Relaxed constraint on message
+       produced by CPPUNIT_ASSERT_MESSAGE. Refactored some tests.
+
+       * include/cppunit/extensions/HelperMacros.h : added macro
+       CPPUNIT_TEST_EXCEPTION to create a test case for the specified method
+       that must throw an exception of the specified type.
+
+       * include/cppunit/extensions/TestSuiteBuilder.h : made
+       makeTestName() public.  Added addTestCallerForException() to add a
+       test case expecting an exception of the specified type to be
+       caught.
+
+       * include/cppunit/TestAssert.h : added macro CPPUNIT_FAIL as a 
+       shortcut for CPPUNIT_ASSERT_MESSAGE( message, false ).
+
+2001-09-30  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * configure.in: Set version to 1.7.0.
+
+2001-09-30  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * Release 1.6.1.
+
+       * doc/footer.html: Do not meddle with font size.
+
+       * doc/header.html: Add link to FAQ.  Do not meddle with font size.
+
+       * doc/Doxyfile.in (PROJECT_NAME): Set to "CppUnit", to be
+       consistent on capitalization.
+       (PROJECT_NUMBER): Include "Version" in the string.
+
+       * doc/Makefile.am (EXTRA_DIST): Distribute FAQ.
+
+       * Makefile.am (EXTRA_DIST): Distribute contrib/msvc/CppUnit.WWTpl
+       and contrib/msvc/readme.txt.
+       (dist-hook): Change line endings of these files.
+
+       * include/cppunit/extensions/RepeatedTest.h
+       * src/cppunit/RepeatedTest.cpp (countTestCases, toString): 
+       Add const qualifier to function.
+
+2001-09-30 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * contrib/msvc/CppUnit.WWTpl: added, template for WorkSpace Whiz! 
+       to create new classes and unit tests.
+
+       * doc/FAQ:
+       * INSTALL-WIN32.txt: moved FAQ from install-WIN32 to that file. Added
+       a generic question to hint at the helper macros.
+
+       * include/cppunit/extensions/HelperMacros.h: bug #464844, moved
+       declaration of ThisTestCaseFactory from CPPUNIT_TEST_SUITE_END to
+       CPPUNIT_TEST_SUITE where the Fixture class name is available from
+       the macro parameter.
+
+2001-09-30  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * include/cppunit/config-mac.h: New.  Macintosh configuration,
+       courtesy of Duane Murphy.
+
+       * include/cppunit/Portability.h: Move <string> include inside
+       #if-block that needs it.
+
+       * doc/Makefile.am (doc-dist): Creates tar file of HTML doc files.
+       Remove all wildcarded filenames.  Do not bother with manpages.
+
+       * Makefile.am (EXTRA_DIST): Distribute INSTALL-unix and
+       cppunit-config.1.
+       (man_MANS): Install cppunit-config.1.
+       (doc-dist): Use "make doc-dist" in doc directory.
+
+       * cppunit-config.1: Document --prefix and --exec-prefix.
+
+       * cppunit-config.in (Usage): Remove "[LIBRARIES]" from help string.
+
+2001-09-29  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * configure.in: Set version to 1.6.1.
+
+2001-09-29 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * example/cppunittest/TestCaller.*: remove some memory leaks.
+       TestCaller exception catching features is now tested correctly.
+       Previous test tested nothing!
+
+2001-09-23  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * configure.in: Set version to 1.6.0.
+
+       * Makefile.am (EXTRA_DIST): Add BUGS.
+
+       * NEWS: Incorporate Baptiste's notes.
+
+       * BUGS: New file for list of known bugs.
+
+       * README: Note about file BUGS.
+
+2001-09-24 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/TestAssert.h : changed header order to remove
+       warning on VC++
+
+       * include/cppunit/TestCaller.h : bugfix: threw 'new Exception'
+       instead of 'Exception'.
+
+2001-09-23  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * doc/footer.html: Put devel list in mailto tag.
+
+       * doc/Makefile.am (man_MANS): Restore ability to install manpages.
+       (htmldir): HTML pages installed under $(pkgdatadir).
+
+       * doc/other_documentation.dox: Reference cookbook.html
+       in same directory.  Remove obsolete text.
+
+       * configure.in: Do not set CFLAGS; remove --enable-debug-mode.
+
+       * include/cppunit/Portability.h: 
+       * include/cppunit/extensions/HelperMacros.h: Allow user
+       to request the old-style CU_TEST family of macros.
+
+       * doc/Doxyfile.in (EXCLUDE_PATTERNS): Remove estring.h.
+
+       * README: Add contact and bug-reporting info.
+
+       * INSTALL-unix: New.  Move the unix install notes here
+       from README.
+
+       * AUTHORS: Put myself on the list.
+
+2001-09-21 Baptiste Lepilleur <gaiacrtn@free.fr>
+       
+       * include/cppunit/TestFailure.h : made destructor virtual.
+
+       * INSTALL-WIN32.txt : added some more infos about DSPlugIn.
+
+       * src/msvc6/DSPlugIn/DSPlugIn.rgs: added some registry data
+       that where missing to register the COM object.
+
+       * src/msvc6/DSPlugIn/DSPlugIn.rc: updated some dll version info.
+
+       * src/msvc6/DSPlugIn/DSPlugIn.dsp: fixed the custom build step to
+       register the DLL using regsvr32.exe. Added a post-build step to 
+       copy the dll to the lib/ directory. This prevent a blocking 
+       compilation error if the DLL is in use by VC++.
+
+2001-09-20  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * Makefile.am (snapshot): Replace "date -I" GNUism with portable
+       specification for ISO date format.
+       (dist-hook): Correct rule to change line endings for INSTALL-WIN32.txt.
+
+       * include/cppunit/Portability.h: 
+       * config/ac_cxx_have_strstream.m4 (AC_CXX_HAVE_STRSTREAM): Extend
+       to check for and use <strstream> in preference to <strstream.h>.
+       Patrick Hartling reports the former is required for the SGI
+       MIPSpro 7.3.1.2 compiler.
+
+2001-09-19 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * examples/cppunittest/makefile.am : added TestSetupTest.(cpp/h)
+
+       * examples/examples.dsw: removed some unnecessary dependencies. 
+
+       * examples/msvc6/HostApp/HostApp.dsp: fixed release configuration
+
+       * src/msvc6/DSPlugIn/DSPlugIn.dsp: fixed release configuration, and
+       disabled the custom build command that does not work.
+
+       * include/cppunit/extensions/HelperMacros.h: reordered header to remove
+       some warning with VC++.
+
+       * INSTALL-WIN32.txt : detailed what was in each project. Added a FAQ 
+       about the failing test case in cppunittest.
+
+2001-09-19  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * README: Describe how to check if libtool is fixed.
+
+       * Makefile.am (dist-hook): Include INSTALL-WIN32.txt in the list
+       of files to convert to MSDOS line endings.
+       (snapshot): Use ISO-8601 compliant date for filename.
+       (ACLOCAL_AMFLAGS): Specify local directory.
+
+2001-09-18  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * include/cppunit/TextTestResult.h: Change include from <iosfwd>
+       to <iostream>.  Sugggested by Peer Sommerlund.
+
+       * include/cppunit/Portability.h: Qualify ostrstream with std.
+       Suggested by Patrick Hartling.
+
+2001-09-18 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * examples/examples.dsw:
+       * examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsw:
+       * examples/msvc6/HostApp/HostApp.dsw:
+       * examples/msvc6/TestPlugIn/TestPlugIn.dsw: Added missing
+       project dependency.
+
+       * src/msvc6/DSPlugIn/DSPlugIn.dsp: fixed *.tlb output directory.
+
+       * include/msvc6/testrunner/TestPlugInInterface.h: does not define
+       NOMINMAX if already defined.
+
+2001-09-17 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * Makefile.am: Added INSTALL-WIN32.txt to EXTRA_DIST.
+
+       * INSTALL-WIN32.txt: added, short documentation for CppUnit and VC++.
+
+       * include/cppunit/extensions/HelperMacros.h: bug #448363, removed 
+       an extraneous ';' at the end of CPPUNIT_TEST_SUITE_END macro.
+
+       * examples/cppunittest/TestCallerTest.cpp: bug #448332, fixed
+       memory leaks.
+
+       * src/msvc6/testrunner/TestRunnerDlg.h:
+       * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h:
+       * src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp: change to define
+       IDD to a dummy value when subclassing the dialog.
+
+       * src/cppunit/cppunit.dsp:
+       * src/msvc6/testrunner/TestRunner.dsp:
+       * src/msvc6/testpluginrunner/TestPlugInRunner.dsp:
+       * examples/cppunitttest/CppUnitTestMain.dsp:
+       * examples/hierarchy.dsp:
+       * examples/msvc6/TestPlugIn/TestPlugIn.dsp:
+       * examples/msvc6/HostApp/HostApp.dsp: all configurations can be compiled.
+
+       * src/msvc6/testpluginrunner/TestPlugInRunner.dsw: added dependency to
+       cppunit.dsp and TestRunner.dsp.
+
+2001-09-16  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * Revert TestFixture-related changes from 2001-07-15:
+
+       * src/cppunit/cppunit.dsp (SOURCE): Remove TestFixture.h.
+
+       * src/cppunit/TestCase.cpp (setUp, tearDown): Restore function
+       bodies.
+
+       * include/cppunit/TestCase.h (class TestCase): Do not derive
+       from class TestFixture.  Restore member functions setUp()
+       and tearDown().
+
+       * include/cppunit/TestCaller.h: Do not include
+       <cppunit/TestFixture.h>.
+
+       * include/cppunit/Makefile.am (libcppunitinclude_HEADERS): Remove
+       TestFixture.h.
+
+2001-09-14 Baptiste Lepilleur <gaiacrtn@free.fr>
+       * src/msvc6/testrunner/TestRunner.dsp: fixed release configuration.
+
+       * src/msvc6/testrunner/TestRunner.dsw: added DSPlugIn.dsp. TestRunner
+       depends on DSPlugIn.
+
+       * src/msvc6/testrunner/TestRunner.cpp:
+       * src/msvc6/testrunner/TestRunnerDlg.h:
+       * src/msvc6/testrunner/TestRunnerDlg.cpp: 
+       * src/msvc6/testrunner/MsDevCallerListCtrl.cpp: 
+       * src/msvc6/testrunner/MsDevCallerListCtrl.h:
+       * src/msvc6/DSPlugIn/*: integrated patch from 
+       Patrick Berny (PPBerny@web.de). An add-ins for VC++. Double-cliking
+       a failed test in the TestRunner, VC++ will open the source file and 
+       go to the failure location.
+
+       * src/cppunit/Exception.cpp:
+       * include/cppunit/Exception.h: compile fix, call to overrided
+       operator = of parent class failed. Using typedef to the parent
+       class fix that.
+
+       * src/cppunit/cppunit.dsp: added TestFixture.h
+
+       * src/cppunit/TestFactoryRegistry.cpp: removed <utility> which isn't
+       needed any more.
+
+       * include/cppunit/TestCase.h:
+       * include/cppunit/TestSuite.h:
+       * include/cppunit/extensions/TestFactoryRegistry.h: added
+       include <Portability.h> before any other includes to remove warning
+       with VC++.
+
+       * include/cppunit/Portability.h: moved platform specific includes at 
+       the beginning of the header. fixed CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION 
+       declaration.
+
+       * include/cppunit/config-msvc6.h: removed pragma once (useless, should 
+       be put in each header to have an effect).
+
+2001-08-07  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * doc/Makefile.am: Add workaround for broken Doxygen.
+
+       * src/cppunit/TextTestResult.cpp (operator<<): Remove CppUnit::
+       prefix.
+
+       * configure.in: Add check for <cmath>.
+       * src/cppunit/TestAssert.cpp: Use <math.h> if <cmath> not
+       available.
+       * src/cppunit/TestCase.cpp: Do not include <cmath>.
+
+       * include/cppunit/config-bcb5.h (HAVE_CMATH): 
+       * include/cppunit/config-msvc6.h (HAVE_CMATH): Add.
+
+       * src/cppunit/Exception.cpp: Qualify std::exception.
+
+       * examples/cppunittest/OrthodoxTest.h (TestCase): Add assignment
+       operator.  MIPSpro fails to compile without one.
+
+       * Makefile.am: Removed automake conditional "DOC".
+       * doc/Makefile.am: Placed "DOC" conditional around
+       rules that invoke Doxygen.
+
+       * config/Makefile.am: Removed.
+       * configure.in: Do not create config/Makefile.
+       * Makefile.am (EXTRA_DIST): Distribute config/*.m4.
+       (SUBDIRS): Do not descend into config.
+
+2001-07-15  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * include/cppunit/TestFixture.h: New.  Declare class TextFixture.
+
+       * include/cppunit/TestCaller.h:
+       * include/cppunit/TestCase.h:
+       * src/cppunit/TestCase.cpp: 
+       * include/cppunit/Makefile.am: Subclass TestCase from TestFixture.
+
+2001-07-14  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * include/cppunit/Exception.h:
+       * include/cppunit/Test.h:
+       * include/cppunit/TestCaller.h:
+       * include/cppunit/TestCase.h:
+       * include/cppunit/TestFailure.h:
+       * include/cppunit/TestListener.h:
+       * include/cppunit/TestSuite.h:
+       * include/cppunit/extensions/RepeatedTest.h:
+       * include/cppunit/extensions/TestDecorator.h:
+       * src/cppunit/TestCase.cpp:  Add documentation.
+
+2001-07-13  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * examples/cppunittest/TestAssertTest.h:
+       * examples/cppunittest/TestAssertTest.cpp: Add tests 
+       for CPPUNIT_ASSERT_EQUAL.
+
+2001-07-12  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * configure.in: Set to version 1.5.6.  On the assumption that
+       backwards compatibility has been broken (though I'm not certain),
+       set the binary age and interface age to zero.
+
+       * examples/cppunittest/TestFailureTest.h:
+       * include/cppunit/Exception.h:
+       * include/cppunit/NotEqualException.h:
+       * src/cppunit/Exception.cpp:
+       * src/cppunit/NotEqualException.cpp: Add "throw()" to overridden
+       std::exception destructors; required for GCC 3.0.
+
+2001-07-07  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * include/cppunit/Makefile.am: Clean config-auto.h using
+       DISTCLEANFILES.
+
+       * doc/Makefile.am: Temporarily disable manpage installation.  
+       Fix html installation to ensure files removed by uninstall.
+
+       * src/cppunit/estring.h: Removed.
+
+       * src/cppunit/Makefile.am:
+       * src/cppunit/TestCase.cpp:
+       * src/cppunit/TextTestResult.cpp: Recode to avoid use of estring.
+
+       * examples/cppunittest/OrthodoxTest.h: Add const qualifier
+       to operator== methods.
+
+       * include/cppunit/config-bcb5.h:
+       * include/cppunit/config-msvc6.h: Define CPPUNIT_HAVE_SSTREAM to 1.
+
+       * config/ac_cxx_have_sstream.m4: New.  Defines macro
+       AC_CXX_HAVE_SSTREAM.  Taken from the autoconf archive.
+
+       * config/ac_cxx_have_strstream.m4: New.  Copy of above,
+       modified to check for presence of strstream; defines
+       macro AC_CXX_HAVE_STRSTREAM.
+
+       * configure.in: Invoke AC_CXX_HAVE_SSTREAM and
+       AC_CXX_HAVE_STRSTREAM.
+
+       * include/cppunit/Portability.h: Define class
+       CppUnit::OStringStream.
+
+       * include/cppunit/TestAssert.h:
+       * src/cppunit/TestFactoryRegistry.cpp: Replace std::ostringstream
+       by CppUnit::OStringStream.
+
+
+2001-07-06  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * configure.in: Add --disable-typeinfo-name option.
+
+       * README: Add note about new configure option.
+
+       * configure.in: Remove AM_DISABLE_STATIC.
+
+       * INSTALL: Update to version from autoconf 2.50.
+
+2001-07-05  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * include/cppunit/Portability.h: Remove definition of
+       CPPUNIT_USE_TYPEINFO.
+
+       * configure.in: Define USE_TYPEINFO_NAME in config.h.
+
+       * include/cppunit/config-msvc6.h (CPPUNIT_USE_TYPEINFO_NAME): 
+       * include/cppunit/config-bcb5.h (CPPUNIT_USE_TYPEINFO_NAME): Add
+       definition.
+
+       * include/cppunit/TestCaller.h: 
+       * include/cppunit/extensions/TypeInfoHelper.h: 
+       * include/cppunit/extensions/TestSuiteBuilder.h: 
+       * include/cppunit/extensions/HelperMacros.h: 
+       * src/cppunit/TypeInfoHelper.cpp: 
+       * src/cppunit/TestFactoryRegistry.cpp: 
+       * src/cppunit/TestCase.cpp (toString): 
+       Switch from CPPUNIT_USE_TYPEINFO to CPPUNIT_USE_TYPEINFO_NAME.
+
+       * src/cppunit/TestAssert.cpp: Remove include of estring.h.
+
+       * configure.in: Invoke AC_PROG_CC to workaround a automake
+       bug.  Move probes for CC/CXX ahead of the libtool macros.
+
+       * examples/hierarchy/Makefile.am: 
+       * examples/cppunittest/Makefile.am: 
+       * src/cppunit/Makefile.am (INCLUDES): Search
+       $(top_builddir)/include for <cppunit/config-auto.h>.
+
+2001-06-27 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp:
+       moved dll copy from post-build to custom build setting, so that the 
+       dll is copied even if the CppUnitTestApp was not modified.
+
+       * examples/msvc6/TestPlugIn/: a new example of test plug in.
+
+       * src/msvc6/TestRunner/ListCtrlFormatter.*
+       * src/msvc6/TestRunner/ListCtrlSetter.*:
+       added, helper to manipulate list control.
+
+       * src/msvc6/TestRunner/TestRunnerDlg.*: change to make the error list 
+       more compact. text moved to string resources. icons added for typ
+       test tfailure type.
+
+       * src/msvc6/TestRunner/MostRecentTests.*: added, classes that will
+       replace the current implementation of MRU test which make it hard
+       to subclass the dialog.
+
+       * src/msvc6/TestRunner/res/errortype.bmp: added, bitmap with error
+       types (failure and error).
+
+       * src/msvc6/TestPlugInRunner/: A test runner to run test plug in.
+       Test plug in are DLL that publish a specified plug in interface.
+       Those DLL are loaded and reloaded by the TestPlugInRunner to run
+       tests. This remove the need to wrap DLL with a executable to test
+       them.
+
+       * src/cppunit/cppunit.dsp: 
+       removed config.h from project
+       added Portability.h and config-msvc6.h
+
+       * include/cppunit/config-msvc6.h:
+       undef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST
+
+
+2001-06-20  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * autogen.sh: Stop when tool fails.  Try /usr/local/share/aclocal
+       only if aclocal fails without it.
+
+       * README.CVS: New.
+
+2001-06-18  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * include/cppunit/Portability.h (CPPUNIT_USE_TYPEINFO):
+       (CPPUNIT_ENABLE_NAKED_ASSERT):
+       (CPPUNIT_HAVE_CPP_SOURCEANNOTATION): Fix setting of
+       default values.
+
+2001-06-17  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * configure.in: Require autoconf 2.50 or better.
+
+2001-06-17 Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+
+       * configure.in: moved config.h from include/ to config/
+
+       * configure.in: added AC_CREATE_PREFIX_CONFIG_H call
+       
+       * config/ac_create_prefix_config_h.m4: added
+
+       * configure.in: removed include/cppunit/config.h from AC_OUTPUT
+       * include/cppunit/config.h.in: obsoleted by
+       AC_CREATE_PREFIX_CONFIG_H macro.
+       
+       * configure.in:
+       * config/bb_enable_doxygen.m4: moved doxygen stuff into 
+       BB_ENABLE_DOXYGEN macro
+
+       * include/cppunit/Makefile.am: removed config.h, added config-auto.h,
+       config-msvc6.h, config-bcb5.h, Portability.h
+       
+       * include/cppunit/Makefile.am: added dist-hook to exclude 
+       config-auto.h from dist tar
+       
+       * include/cppunit/TestAssert.h:
+       * include/cppunit/extensions/TypeInfoHelper.h:
+       * include/cppunit/extensions/TestSuiteBuilder.h:
+       * include/cppunit/extensions/HelperMacros.h:
+       * src/cppunit/TypeInfoHelper.cpp:
+       * src/cppunit/TestRegistry.cpp:
+       * src/cppunit/TestFactoryRegistry.cpp:
+       * src/cppunit/TestCase.cpp: replaced #include of <config.h> with 
+       <cppunit/Portability.h>
+       
+       * src/cppunit/TypeInfoHelper.cpp: use new macro name 
+       CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST
+       
+
+2001-06-12 Baptiste Lepilleur <gaiacrtn@free.fr>
+       
+       * include/cppunit/NotEqualException.h
+       * src/cppunit/NotEqualException.h:
+       Fixed constructor and operator = (aren't unit test nice?). Added 
+       methods expectedValue() and actualValue().
+
+       * include/cppunit/TestAssert.h:
+       * src/cppunit/TestAssert.cpp:
+       Use NotEqualException to report equality failure.
+
+       * src/cppunit/TestFactoryRegistry.cpp: fixed makeTest(). It did not use m_name for
+       naming the suite.
+
+       * src/cppunit/TestResult.cpp:
+       Report expect/was on different line for assertEquals failure.
+
+       * examples/cppunittest/NotEqualExceptionTest.*: added unit tests for
+       NotEqualException. 
+
+       * examples/cppunittest/OrthodoxTest.*: operator ! use explicit construction.
+
+       * examples/msvc6/CppUnitTestApp/CppUnitTestApp.cpp: modified so that the dialog
+       is not displayed after the tests are run.
+
+2001-06-11  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * examples/cppunittest/TestResultTest.cpp (testAddTwoErrors,
+       testAddTwoFailures): Replace vector::at() with more portable
+       vector::operator[]; GCC doesn't have the former.
+
+       * include/cppunit/extensions/TestDecorator.h (countTestCases):
+       Declare return type.
+
+       * src/cppunit/Makefile.am (libcppunit_la_SOURCES): Add
+       TestAssert.cpp, RepeatedTest.cpp.
+
+       * include/cppunit/TestCaller.h (NoExceptionExpected): Fix
+       constructor name.
+
+2001-06-11 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * include/cppunit/Exception.h: now inherit from std::exception
+       instead of ::exception. Added clone(), type(), and isInstanceOf()
+       methods for subclassing support. Changed UNKNOWNLINENUMBER type to
+       long for consistence with lineNumber().
+
+       * include/cppunit/NotEqualException.h: addded, exception to be
+       used with assertEquals().
+
+       * include/cppunit/TestAssert.h: changed TestAssert into a
+       namespace instead of a class. This remove the need of template
+       member methods and does not cause compiler internal error on
+       VC++. Macro CPPUNIT_ASSERT_MESSAGE has been added to fail test
+       with a specified message.
+
+       * include/cppunit/TestCaller.h: added "Expected exception"
+       support.  Based on Tim Jansen patch (#403745), but use a traits
+       instead of RTTI to distingh between "No expected exception" and
+       "Excepted exception".  Exception type name is reported using RTTI
+       if CPPUNIT_USE_TYPEINFO is defined.
+
+       * include/cppunit/extensions/HelperMacros.h: static method suite()
+       implemented by CPPUNIT_TEST_SUITE_END macro now returns a
+       TestSuite instead of a Test.
+
+       * include/cppunit/extensions/RepeatedTest.h: corrected
+       countTestCases, operator = declaration.
+
+       * include/cppunit/extensions/TestDecorator.h: removed const from
+       run() method. Did not match run() declaration of Test class.
+
+       * include/cppunit/extensions/TestFactory.h: fixed a comment.
+
+       * include/cppunit/extensions/TestSetup.h: corrected run() method
+       declaration. Methods setUp() and tearDown() were not declared
+       virtual.
+
+       * include/cppunit/extensions/TestSuiteBuilder.h: added a method
+       addTestCaller() which take a pointer on a fixture.
+
+       * include/cppunit/NotEqualException.cpp: addded, exception to be
+       used with assertEquals().
+
+       * src/cppunit/RepeatedTest.cpp: added to reduce header dependency
+       (TestResult.h was missing).
+
+       * src/cppunit/TestAssert.cpp: added to put non template functions
+       there.
+       
+       * src/cppunit/TestCase.cpp: added std:: prefix to catch
+       (exception& e). Integrated a modified version of Tim Jansen patch
+       (#403745) for TestCase to make the unit test (TestCaseTest)
+       pass. If the setUp() fail then neither the runTest() nor the
+       tearDown() method is called.
+
+       * examples/examples.dsw: added cppunittest projects to workspace.
+
+       * examples/cppunittest/TestResultTest.*: renamed
+       TestListenerTest.*
+
+       * examples/cppunittest/*: added unit tests for: HelperMacros,
+       TestAssert, TestCaller, TestCase, TestFailure, TestResult,
+       TestSuite, TestDecoratorTest, TestSetUp, RepeatedTestTest,
+       Orthodox, Exception.
+
+2001-06-05 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * src/cppunit/TypeInfoHelper.cpp: removed #include <config.h>,
+       cppunit/config.h was already included.
+
+       * src/cppunit/cppunit.dsp: removed TestAssert.cpp from project.
+
+       * added/updated .cvsignore files for beter handling of windows
+       projects.
+
+       * added include/cppunit/config.h with a default configuration for
+       VC++ 6.0.
+
+       * include/cppunit/.cvsignore: removed config.h from the list of
+       ignored file.
+
+       * renamed VC++ configurations without RTTI from "Debug No
+       CU_USE_TYPEINFO" to "Debug Crossplatform".
+
+       * include/cppunit/TestAssert.h: added include <math.h> for fabs().
+
+2001-06-02  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * src/cppunit/Exception.cpp: Remove unnecessary namespace
+       declaration; it confuses Doxygen.
+
+2001-06-02  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * configure.in: Add AC_CXX_STRING_COMPARE_STRING_FIRST.
+
+       * autogen.sh: Add "-I config" to aclocal flags, to pick up 
+       the new .m4 files.
+
+       * config/ac_cxx_namespaces.m4: New.  Taken from
+       http://cryp.to/autoconf-archive.
+
+       * config/ac_cxx_string_compare_string_first.m4: New.  Detect
+       if std::string::compare() takes string argument first.
+
+2001-06-02  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * include/cppunit/TestAssert.h: Declare generic assertion_traits
+       class.  Replace notEqualsMessage functions for long and double by
+       a generic, template function.  Replace assertEquals for longs by a
+       generic template function.  Inline all class methods.  Define new
+       assertion macros CPPUNIT_ASSERT, CPPUNIT_ASSERT_EQUAL, and
+       CPPUNIT_ASSERT_DOUBLES_EQUAL; the old names are available by
+       editing <cppunit/config.h>.
+
+       * src/cppunit/TestAssert.cpp: Removed.  Move code to inline
+       functions.
+
+       * config/ac_cxx_rtti.m4: New.  Taken from
+       http://cryp.to/autoconf-archive.
+
+       * include/cppunit/config.h.in: New.  Input file for installable,
+       generated config.h file.
+
+       * configure.in: Use AC_CXX_RTTI; generate include/cppunit/config.h.
+
+       * include/cppunit/extensions/HelperMacros.h: 
+       * include/cppunit/extensions/TestSuiteBuilder.h:
+       * include/cppunit/extensions/TypeInfoHelper.h:
+       * src/cppunit/TestCase.cpp:
+       * src/cppunit/TestFactoryRegistry.cpp:
+       * src/cppunit/TypeInfoHelper.cpp:
+       Use "#if CPPUNIT_USE_TYPEINFO" rather than "#ifdef".
+
+       * src/cppunit/TypeInfoHelper.cpp: Allow for std::string::compare()
+       that takes the string in the first argument.
+
+       * doc/cookbook.html:
+       * examples/cppunittest/TestCallerTest.cpp:
+       * examples/cppunittest/TestResultTest.cpp:
+       * examples/hierarchy/BoardGameTest.h:
+       * examples/hierarchy/ChessTest.h:
+       * examples/msvc6/HostApp/ExampleTestCase.cpp:
+       * include/cppunit/TestCase.h: 
+       * include/cppunit/extensions/Orthodox.h:
+       Replace assert by CPPUNIT_ASSERT.
+       Replace assertLongsEqual by CPPUNIT_ASSERT_EQUAL.
+       Replace assertDoublesEqual by CPPUNIT_ASSERT_DOUBLES_EQUAL.
+
+       * * (CU_TEST_SUITE, CU_TEST, CU_TEST_SUITE_END,
+       CU_TEST_SUITE_REGISTRATION): Replace prefix CU_ with CPPUNIT_.
+       
+       * examples/cppunittest/.cvsignore: Add UNIX generated files.
+
+2001-06-01 Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+
+       * examples/cppunittest/Makefile.am: added
+
+       * configure.in: added examples/cppunittest/Makefile to AC_OUTPUT.
+
+       * examples/cppunittest/TestCallerTest (suite),
+       examples/cppunittest/TestResultTest (suite): fixed 'ISO C++ 
+       forbids taking the address of a bound member function to form 
+       a pointer to member function' bug reported by g++.
+
+       * examples/cppunittest/TestCallerTest (suite),
+       examples/cppunittest/TestResultTest (suite): removed dependency on
+       RTTI.
+       
+2001-06-01 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * added project cppunittest to examples/: unit tests to test cppunit.
+       The main file is CppUnitTestMain.cpp. Unit tests have been implemented
+       for TestCaller and TestListener.
+
+       * added project CppUnitTestApp to examples/msvc6: graphical runner 
+       for cppunittest. 
+
+       * added TestListener to TestResult. It is a port of junit 
+       TestListener.
+
+       * updated some .cvsignore to ignore files generated with VC++.
+
+2001-05-30 Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+
+       * src/cppunit/TestCase.cpp (toString): put type_info in std 
+       namespace and inside CU_USE_TYPEINFO ifdef.
+       
+2001-05-29  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * examples/hierarchy/main.cpp: Remove extraneous includes.
+
+       * src/cppunit/TextTestResult.cpp (addError, addFailure): Do not
+       emit a newline.
+
+       * include/cppunit/extensions/HelperMacros.h: Rework documentation.
+       (CU_TEST_SUITE): Move definition of member function suite() ...
+       (CU_TEST_SUITE_END): ... to here.
+       (CU_TEST): Use '&' to take address of member function
+       "testMethod".
+
+       * include/cppunit/extensions/AutoRegisterSuite.h: Declare "factory"
+       as a TestFactory*.
+
+2001-05-28  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * doc/other_documentation.dox: Don't include "CppUnit" in
+       anchor text, since Doxygen puts its own anchor around it.
+
+       * doc/Makefile.am (html/index.html): Depend on
+       other_documentation.dox.
+
+       * doc/Doxyfile.in (EXCLUDE): Move config.h and estring.h to
+       EXCLUDE_PATTERNS; they were not being excluded.
+
+       * ChangeLog: Reformat all entries to start with <TAB>.  See
+       <http://www.red-bean.com/cvs2cl/changelogs.html> for change log
+       format.
+
+       * doc/cookbook.html: Update all code examples, except for TestRunner
+       section.
+
+2001-05-23 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * Updated CU_TEST_SUITE macro documentation. It is now stated
+       explicitly that you do not need to specify template parameter as
+       macro argument.  The documentation example has been updated to
+       reflect that.
+
+2001-05-23 Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+
+       * autogen.sh: added '--add-missing' option to automake.
+       * autogen.sh: added '--force' option to libtoolize and removed 
+         '--copy'.
+       * config: removed generated files from CVS.
+
+2001-05-20 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * Fixed bug #424320 (VC++ TestRunner): access violation caused by
+       NULL pointer in history list. NULL pointer are not added to the
+       history anymore.
+
+2001-05-19 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * Added some items to the TODO list for VC++ TestRunner.
+  
+       * "Debug" configuration is now the default configuration in VC++
+       project.
+  
+       * Modified sort order in the test browser of VC++ TestRunner so
+       that tests are in the same order as in the suite. Suites are still
+       sorted alphabetically.
+  
+       * Merged Steve M. Robbins patch to replace assertImplementation
+       with assert in hierarchy example.
+  
+       * Added a TextTestRunner to runner tests. It is based on Michael
+       Feather's version, but have been rewriten.
+  
+       * Removed traces that printed the test name in TextTestResult
+       while running.
+  
+       * Added the test name to error and failure report in
+       TextTestResult.
+  
+       * Updated hierarchy example to use TextTestRunner.
+
+2001-05-18 Baptiste Lepilleur <gaiacrtn@free.fr>
+
+       * Symbol CU_USE_TYPEINFO must be defined instead of USE_TYPEINFO
+       to compile RTTI.
+  
+       * Added back default constructor to TestSuiteBuilder which use
+       RTTI.  It is available only if CU_USE_TYPEINFO is defined.
+  
+       * Moved TypeInfoHelper.h from src/cppunit to
+       include/cppunit/extensions.
+  
+       * Macro CU_TEST_SUITE in HelperMacros.h now use TestSuiteBuilder
+       default constructor if CU_USE_TYPEINFO is defined, otherwise it
+       use the type name given to the CU_TEST_SUITE macro.
+  
+       * TestFactoryRegistry::registerFactory(factory) now generate a
+       dummy name based on a serial number instead of using RTTI. The
+       macro CU_TEST_SUITE_REGISTRATION and class AutoRegisterSuite can
+       now when CU_USE_TYPEINFO is not defined.
+  
+       * Added a new Configuration named "Debug Without CU_USE_TYPEINFO"
+       to msvc6 projects. The flag CU_USE_TYPEINFO is not defined in that
+       configuration.
+
+2001-05-17  Steve M. Robbins  <steve@nyongwa.montreal.qc.ca>
+
+       * Makefile.am (dist-hook): Copy files relative to $(top_srcdir).
+
+       * doc/Makefile.am: Generated doc files depend on Doxyfile.
+
+       * doc/Doxyfile.in: Use autoconf substitutions in file names.
+
+       * examples/hierarchy/Makefile.am (check_PROGRAMS): Build hierarchy
+          with "make check", not "make all".
+
+       * examples/hierarchy/Makefile.am (INCLUDES): 
+
+       * src/cppunit/Makefile.am (INCLUDES): Search in 
+         $(top_srcdir)/include.
+
+       * Added .cvsignore files.
+
+2001-05-16 Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+
+       * Merged Debian packaging support files by Christian Leutloff from
+       debian package version 1.5.4-2.  Added make target 'debian' for
+       debian package creation.
+       
+2001-05-09 Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+
+       * Release as 1.5.5.
+
+       * Finished CppUnitW 1.2 merge.  Removed RTTI depency from
+       TestSuite.  Added TestCaller constructor for calling methods in
+       existing TestCases.
+       
+2001-04-29 Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+
+       * Merged Baptiste Lepilleurs CppUnitW 1.2. Some differences:
+       TypeInfo stuff (in TestSuite) compiled in only if USE_TYPEINFO is
+       set.  TestSuite.getTests now returns a const ref instead of taking
+       a ref as parameter.  Removed auto_ptr stuff from
+       TestFactoryRegistry: auto_ptr cannot be used in containers.
+       
+2001-04-28 Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+
+       * Merged MSVC++ specific TestRunner and example adapted from
+       Micheal Feathers version by Baptiste Lepilleur.
+
+       * Moved cppunit subdir into src.
+       
+2001-04-24 Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+
+       * Merged Baptiste Lepilleurs patch for TestRegistry: now TestCases
+       do not automatically register with the Registry anymore.
+
+       * Added extension headers from Micheal Feathers port to
+       include/cppunit/extensions.
+       
+2001-04-19 Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+
+       * Added MSVC++ workspace and project files, submitted by Baptiste
+       Lepilleur.
+       
+2001-04-15 Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+
+       * Moved public headers from cppunit into new subdir
+       include/cppunit.  This should make more clear which headers are
+       used internally only (like estring.h).
+       
+       * Moved autoconf auxiliary stuff into new subdir config, to make
+       the top dir less crowded.
+
+       * Prefixed std:: to cerr, cout and endl.
+       
+2001-04-14 Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+
+       * Release as 1.5.4
+       
+       * Added support for RPM generation.
+       
+       * Added autoconf support for Doxygen document generation: Doxygen
+       and GraphViz dot are automatically detected and LaTeX and HTML can
+       be switch on or off.
+       
+       * cppunit/TextTestResult.cpp: changed cout to stream.  Fixes bug
+       #232636
+
+       * cppunit/TextTestReulst.cpp: add '#include <iostream>'.  Fixes
+       bug #223290
+       
+       * cppunit/*.cpp: removed bogus 'inline' specifiers.  Fixes bug
+       #224542 and #223291.
+
+       * doc/header.html: corrected link to CppUnit project page Fixes
+       bug #414073
+
+       * cppunit/*.cpp, examples/hierarchy/main.cpp: removed all 'using
+       namespace ...' occurences.
+       
+2001-01-31 Tim Jansen <timj@systembureau.com>
+
+       * cppunit/TestCase.cpp, cppunit/TestCase.h, cppunit/TestSuite.h,
+       cppunit/TestSuite.cpp: applied patch #402271 by bwithrow.  Fixes
+       bug #220207
+
+       * cppunit/TestSuite.cpp (deleteContents): clear vector after
+       contents have been deleted (so there are no invalid pointers in
+       the vector) Patch #403540 / #403542
+       
+       * cppunit/TestCaller.h: create Fixture with empty constructor so
+       that only the TestCaller but not the Fixture instance is
+       registered in the TestRegistry Patch #403541 / #403542
+
+       * examples/hierarchy/BoardGameTest.h,
+       examples/hierarchy/ChessTest.h, examples/hierarchy/main.cpp:
+       initialize example TestCases with TestSuite so that the
+       TestCallers are registered in the TestRegistry Patch
+       #403542. Fixes bug #415249
+       * cppunit/TestCaller.h, cppunit/TestCase.cpp, cppunit/TestCase.h:
+       changed documentation; made hopefully clearer which constructor
+       registers the instance in the TestRegistry; corrected syntax in
+       code example Patch #403542.
diff --git a/lib/cppunit-1.10.0/CodingGuideLines.txt b/lib/cppunit-1.10.0/CodingGuideLines.txt
new file mode 100644 (file)
index 0000000..5651ee8
--- /dev/null
@@ -0,0 +1,61 @@
+CppUnit's coding guidelines for portability:
+--------------------------------------------
+
+- don't explicitly declare CppUnit namespace, instead use macro
+  CPPUNIT_NS_BEGIN and CPPUNIT_NS_END.
+
+- don't explicitly use 'CppUnit' to refer to class in CppUnit namespace,
+  instead use macro CPPUNIT_NS which expands to either 'CppUnit' or 
+  nothing depending on the configuration.
+
+- don't use the 'using directive', always use full qualification. For STL,
+  always use std::.
+
+- don't use C++ style cast directly, instead use CppUnit's cast macro
+  (CPPUNIT_CONST_CAST).
+
+- don't use the mutable keyword, instead do a const cast.
+
+- don't use the typename keyword in template declaration, instead use 'class'.
+
+- don't make use of RTTI (typeid) or dynamic_cast mandatory.
+
+- don't use STL container directly, instead use CppUnit's wrapper located
+  in include/cppunit/portability. This help support compilers that don't 
+  support default template parameter and require an allocator to be 
+  specified.
+
+- don't use default template parameters. If needed, use STLPort wrapper
+  technic (see include/cppunit/portability/).
+
+- don't use templatized member functions (template method declared inside a
+  class), instead declares them as simple template functions (even
+  mainstream compiler such as VC++ 6 as trouble with them).
+
+- don't use default parameter value in template function. Not supported
+  by all compiler (on OS/390 for instance).
+
+- don't use STL container at() method, instead use the array accessor [].
+  at() is not supported on some gcc versions.
+
+- dereferencing containers must be done by (*ref_ptr).data instead of
+  ref_ptr->data.
+
+In brief, it should be possible to compile CppUnit on a C++ compiler that do
+not have the following features:
+- C++ style cast
+- mutable and typename keyword
+- RTTI
+- template default parameters
+- templatized member functions (that is a template function declared within a
+  class).
+- namespace
+
+As such, usage of those features should always be optional.
+
+Following those guidelines should allow to compile on most compilers, as long
+as STL are available (in std namespace or not), with some form of strstream and
+iostream, as well as exception support.
+
+--
+Baptiste Lepilleur <gaiacrtn@free.fr>
diff --git a/lib/cppunit-1.10.0/INSTALL b/lib/cppunit-1.10.0/INSTALL
new file mode 100644 (file)
index 0000000..666ffd9
--- /dev/null
@@ -0,0 +1,226 @@
+Basic Installation
+==================
+
+   These are generic installation instructions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for variables by setting
+them in the environment.  You can do that on the command line like this:
+
+     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+   *Note Environment Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory.  After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+   By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of host the package
+will run on.  Usually `configure' can figure that out, but if it prints
+a message saying it cannot guess the host type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the `--target=TYPE' option to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the host
+platform (i.e., that on which the generated programs will eventually be
+run) with `--host=TYPE'.  In this case, you should also specify the
+build platform with `--build=TYPE', because, in this case, it may not
+be possible to guess the build platform (it sometimes involves
+compiling and running simple test programs, and this can't be done if
+the compiler is a cross compiler).
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Environment Variables
+=====================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to configure.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+will cause the specified gcc to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+
diff --git a/lib/cppunit-1.10.0/INSTALL-WIN32.txt b/lib/cppunit-1.10.0/INSTALL-WIN32.txt
new file mode 100644 (file)
index 0000000..428bff0
--- /dev/null
@@ -0,0 +1,198 @@
+Frequently Asked Questions: See doc/FAQ\r
+\r
+\r
+At the current time, the only supported WIN32 platform is \r
+Microsoft Visual C++. You must have VC++ 6.0 at least.\r
+\r
+Quick Steps to compile & run a sample using the GUI TestRunner:\r
+- Open examples/examples.dsw in VC++ (contains all the samples)\r
+- Make HostApp the Active project\r
+- Compile\r
+- in VC++, Tools/Customize.../Add-ins and macro files/Browse...\r
+- select the file lib/TestRunnerDSPlugIn.dll and press ok to register\r
+  the add-ins (double-click on failure = open file in VC++).\r
+- Run the project\r
+\r
+\r
+Project build Target:\r
+---------------------\r
+\r
+Framework & tools:\r
+\r
+* cppunit (cppunit.lib) : unit testing framework library, the one you use \r
+to write unit tests.\r
+\r
+* cppunit_dll(cppunit_dll.dll/lib) : same as above, but build as a DLL.\r
+\r
+* DllPlugInTester(DllPlugInTester.exe) : test plug-in runner executable.\r
+Use this to test DLL in your post-build step, or debug them.\r
+\r
+* TestRunner (testrunner.dll) : a MFC extension DLL to run and browser unit \r
+tests from a GUI.\r
+\r
+* DSPlugIn (lib/TestRunnerDSPlugIn.dll) : a VC++ add-in used by \r
+testrunner.dll. If you double-click on a failure in the MFC TestRunner,\r
+a running instance of VC++ will open the file and highlight the line.\r
+\r
+* TestPlugInRunner : (Warning: experimental) a VC++ \r
+application to run test plug-in. A test plug-in is a DLL that publish a \r
+specified interface. This application is still incomplete (the auto-reload \r
+feature is missing).\r
+\r
+All libraries are placed in the lib/ directory.\r
+\r
+\r
+Examples:\r
+---------\r
+\r
+* CppUnitTestMain : the actual test suite use to test CppUnit. Use a \r
+TextTestRunner, and post-build testing with CompilterOutputter. Configuration\r
+to link against cppunit static library and cppunit dll library.\r
+\r
+* CppUnitTestApp : contains the same test suite as CppUnitTestMain, but\r
+run them using the MFC TestRunner.\r
+\r
+* hierarchy : a sample demonstrating how to sublcass test (you might rather\r
+want to use HelperMacros.h and the CPPUNIT_TEST_SUB_SUITE macro which does\r
+it in a 'cleaner' way. That sample has not been updated for a long time).\r
+\r
+* HostApp : a sample using the MFC TestRunner demonstrating different test\r
+failure. Also demonstrates the MFC Unicode TestRunner.\r
+\r
+* Money : an example that come along with the Money article of the \r
+documentation. Probably what you want to look at if you are a newbie.\r
+\r
+\r
+Configuration:\r
+--------------\r
+\r
+CppUnit and TestRunner comes with 3 configurations.\r
+\r
+* Release (): Multihtreaded DLL, release mode\r
+* Debug (d): Debug Multithreaded DLL, debug mode\r
+* Unicode Release (u): Unicode Multihtreaded DLL, release mode\r
+* Unicode Debug (ud): Unicode Debug Multithreaded DLL, debug mode\r
+\r
+For CppUnit, when building as dll, "dll" is appended to the 'suffix'.\r
+\r
+The letters enclosed in brackets indicates the suffix added to\r
+the library name. For example, the debug configuration cppunit static library\r
+name is cppunitd.lib. The debug configuration cppunit dll name is cppunitd_dll.lib.\r
+\r
+\r
+Building:\r
+---------\r
+\r
+* Open the src/CppUnitLibraries.dsw workspace in VC++.\r
+* In the 'Build' menu, select 'Batch Build...'\r
+* In the batch build dialog, select all projects and press the build button.\r
+* The resulting libraries can be found in the lib/ directory.\r
+\r
+\r
+Testing:\r
+--------\r
+\r
+* Open the workspace examples/Examples.dsw.\r
+* Make CppUnitTestApp the active project.\r
+* Select the configuration you build the library for.\r
+* Compile and run the project. The TestRunner GUI should appear.\r
+\r
+\r
+Libraries:\r
+----------\r
+\r
+All the compiled libraries and DLL can be found in the 'lib' directory.\r
+Most libraries can be build from src/CppUnitLibraries.dsw workspace.\r
+\r
+lib\:\r
+cppunit.lib                            : CppUnit static library "Multithreaded DLL"\r
+cppunitd.lib                   : CppUnit static library "Debug Multithreaded DLL"\r
+cppunit_dll.dll                        : CppUnit dynamic library (DLL) "Multithreaded DLL"\r
+cppunit_dll.lib                        : CppUnit dynamic import library "Multithreaded DLL"\r
+cppunitd_dll.dll               : CppUnit dynamic library (DLL) "Debug Multithreaded DLL"\r
+cppunitd_dll.lib               : CppUnit dynamic import library "Debug Multithreaded DLL"\r
+qttestrunner.dll               : QT TestRunner dynamic library (DLL) "Multithreaded DLL"\r
+qttestrunner.lib               : QT TestRunner import library "Multithreaded DLL"\r
+testrunner.dll                 : MFC TestRunner dynamic library (DLL) "Multithreaded DLL"\r
+testrunner.lib                 : MFC TestRunner import library "Multithreaded DLL"\r
+testrunnerd.dll                        : MFC TestRunner dynamic library (DLL) "Debug Multithreaded DLL"\r
+testrunnerd.lib                        : MFC TestRunner import library "Debug Multithreaded DLL"\r
+testrunneru.dll                        : MFC Unicode TestRunner dynamic library (DLL) "Multithreaded DLL"\r
+testrunneru.lib                        : MFC Unicode TestRunner import library "Multithreaded DLL"\r
+testrunnerud.dll               : MFC Unicode TestRunner dynamic library (DLL) "Debug Multithreaded DLL"\r
+testrunnerud.lib               : MFC Unicode TestRunner import library "Debug Multithreaded DLL"\r
+TestRunnerDSPlugIn.dll : The add-in you register in VC++.\r
+\r
+Notes that when you are using CppUnit DLL (cppunit*_dll.dll), you must link \r
+against the associated import library and define the pre-processor symbol \r
+CPPUNIT_DLL in your project.\r
+\r
+\r
+Tools:\r
+------\r
+\r
+CppUnit provides a generic test runner for test plug-in: DllPlugInTester.\r
+It can be found in the lib/ directory. It requires cppunit*_dll.dll\r
+\r
+lib/:\r
+DllPlugInTester_dll.exe  : test plug-in runner, "Multithreaded DLL", cppunit_dll.dll\r
+DllPlugInTesterd_dll.exe : test plug-in runner, "Debug Multithreaded DLL", cppunitd_dll.dll\r
+DllPlugInTester.exe  : test plug-in runner, "Multithreaded DLL", static link cppunit.lib\r
+DllPlugInTesterd.exe : test plug-in runner, "Debug Multithreaded DLL", static link cppunitd.lib\r
+\r
+Notes that the DllPlugInTester(d).exe version of this tools does not allow\r
+to use the automatic test registration that comes along with test plug-in.\r
+You probably don't want to use them unless you really now what you are doing.\r
+\r
+\r
+Using CppUnit:\r
+--------------\r
+\r
+* Writing unit tests:\r
+  To write unit tests, you need to link against cppunitXX.lib, where\r
+  XX is the chosen configuration suffix letters. \r
+  CppUnit include directory must be in the include search path.\r
+  You can do that by adding the include directory in \r
+  Project Settings/C++/Preprocessor/Additional include directories,\r
+  or Tools/Options/Directories/Include.\r
+\r
+  Quick steps:\r
+  - link lib/cppunitXX.lib\r
+  - include/ must be in the include search path\r
+\r
+* Using the TestRunner GUI:\r
+  To use the test runner GUI you need to link against testrunnerXX.lib\r
+  and cppunitXX.lib, where XX is the chosen configuration suffix \r
+  letters. testrunner.dll must be in the path when your program is\r
+  run (the Debug/Release directory, your project dsp directory, or\r
+  in a directory specified in the PATH environment variable).\r
+  One of the easiest way to do that is to either add a post-build\r
+  command or add the testrunner.dll which is in the lib/ directory\r
+  to your project and define a custom build step that copy the\r
+  dll to your "Intermediate" directory (Debug or Release usually).\r
+\r
+  Since the TestRunner GUI is a MFC extension DLL, it can access\r
+  the CWinApp of the using application. Settings are stored using \r
+  the application registry key. That means that "most recently used\r
+  test" settings are different for each application.\r
+\r
+  Quick steps:\r
+  - link lib/cppunitXX.lib and lib/testrunnerXX.lib\r
+  - include/ must be in the include search path\r
+  - lib/testrunnerXX.dll must be available to run your project\r
+\r
+* Using the DSPlugIn:\r
+  You must register the plug-in with VC++. This is done in \r
+  Tools/Customize/Add-ins and Macro files, selecting browse and\r
+  selecting lib/TestRunnerDSPlugIn.dll (you can register the release\r
+  or the debug version, both work).\r
+\r
+  If an instance of VC++ is running and you double-click on a failure,\r
+  VC++ will open the file and select the failure line.\r
+\r
+* Using the Test Plug In Runner:\r
+  Your DLL must export a function that implement the interface\r
+defined in include/msvc6/testrunner/TestPlugInInterface.h.\r
+See examples/msvc6/TestPlugIn/TestPlugInInterfaceImpl.* for an example.\r
+Be warned, that runner is still experimental and have not been tested\r
+much.\r
diff --git a/lib/cppunit-1.10.0/INSTALL-unix b/lib/cppunit-1.10.0/INSTALL-unix
new file mode 100644 (file)
index 0000000..52b4d8b
--- /dev/null
@@ -0,0 +1,121 @@
+See the file INSTALL for basic instructions.  A short explanation for
+each non-standard configure option follows.
+
+  --disable-typeinfo-name 
+
+Some output from the library will use a class name to distinguish
+between tests.  Normally, the Run-Time Type Information (RTTI) system
+is used (specifically, the type_info::name() function) to generate the
+name.  Some compilers return human-readable names via this interface.
+Other compilers do not.
+
+If your compiler does not generate a pleasing class name, specify
+this option; the names will be generated by other means.  The names
+are used only for diagnostic purposes -- no functionality will be
+lost nor gained by using this option.
+
+
+
+               System Notes
+               ------------
+
+cygwin
+------
+
+We have a number of reports that the shared library fails to
+build properly.  This may manifest itself as a failure to
+build and run the test suite ("make check").
+
+The workaround is to build a static library only.  Configure using
+
+    ./configure --disable-shared
+
+Then build normally.
+
+
+
+DEC alpha with cxx V6.1-029 and RogueWave STL
+---------------------------------------------
+
+A user reports that you have to issue the command
+
+    export DEC_CXX="-D__USE_STD_IOSTREAM -D__STD_MS"
+
+in order to get ostream defined in namespace std.  Otherwise, the
+build reports the following error.
+
+    Cannot define CppUnit::OStringStream
+
+
+
+If the compiler complains about 'exception', it may help to
+re-run configure with
+
+       CPPFLAGS='-U_OSF_SOURCE'
+
+on the configure line.  Please let us know about your experiences
+with this platform so that we can keep this information up-to-date.
+
+
+
+IRIX 6 / MIPSpro compiler
+-------------------------
+
+The MIPSpro compiler requires the "-LANG:std" flag to enable the
+standard C++ library.  You must set the CC variable when you configure,
+as follows
+       ./configure CC='CC -LANG:std'
+
+There is a bug in released versions of libtool prevents the -LANG flag
+from being properly passed during the linking stage.  To check if you
+have this bug, examine the output of "grep 'no.*irix' libtool".  If
+you see a line like "no/*-*-irix*)" then you suffer from the bug.  [A
+fixed version of libtool will look like "no/*-*-irix* | /*-*-irix*)".]
+
+If your libtool script suffers from the bug, open it in an editor,
+find the first line that contains "with_gcc", and change it to
+read "with_gcc=no".
+
+The MIPSpro version 7.30 is able to compile cppunit proper, but will
+fail to compile the example testsuite.  I am assuming this is due
+to known bugs in the compiler (7.30 is not the latest version). 
+The library appears to function OK.  Please let us know if you find
+it otherwise.
+
+
+Solaris/Sun CC compiler
+-----------------------
+
+Use the following configure line:
+
+./configure CXX=CC CXXFLAGS="-pta -instances=static -mt 
+-xtarget=generic -g -features=no%transitions 
+-xildoff" LD=CC LDFLAGS=-xildoff
+
+In Forte C++ compiler for Solaris all the linking has to go via
+CC and ar, ld should not be run directly. For archive use CC -xar and
+for linking and generating the .so use  CC -G 
+
+Notes: CC 5.5 don't need that much flag to compile correctly. Though, I'm not
+sure what are the required one.
+
+
+AIX
+---
+
+./configure --disable-shared
+
+The autogen tools don't seem to generate correctly script to handle dynamic linking.
+If anyone know how to get it working, please contact us.
+
+
+HP-UX
+-----
+Use the following options with configure to 
+enable the use of aCC and cc for the compilation of 
+CppUnit: 
+./configure --enable-hpuxshl CC=cc CXX=aCC CXXFLAGS="-AA"
+
+AA sets all the necessary flags to enable namespaces, 
+stl v2,.... 
+
diff --git a/lib/cppunit-1.10.0/Makefile.am b/lib/cppunit-1.10.0/Makefile.am
new file mode 100644 (file)
index 0000000..9a88a6a
--- /dev/null
@@ -0,0 +1,75 @@
+AUTOMAKE_OPTIONS = 1.4
+ACLOCAL_AMFLAGS = -I config
+
+SUBDIRS = src include examples doc
+
+bin_SCRIPTS = cppunit-config
+man_MANS = cppunit-config.1
+
+
+EXTRA_DIST = BUGS INSTALL-unix INSTALL-WIN32.txt CodingGuideLines.txt  \
+       cppunit-config.1                                                \
+       cppunit.m4 cppunit.spec.in cppunit.spec         \
+       $(m4sources)                                                    \
+       contrib/msvc/CppUnit.WWTpl                                  \
+       contrib/msvc/readme.txt                         \
+       contrib/msvc/AddingUnitTestMethod.dsm           \
+       contrib/bc5/bcc-makefile.zip \
+       contrib/xml-xsl/tests.xml \
+       contrib/xml-xsl/report.xsl \
+       src/CppUnitLibraries.dsw
+
+m4sources = \
+       config/ac_create_prefix_config_h.m4             \
+       config/ac_cxx_have_sstream.m4                   \
+       config/ac_cxx_have_strstream.m4                 \
+       config/ax_cxx_gcc_abi_demangle.m4               \
+       config/ac_cxx_namespaces.m4                     \
+       config/ac_cxx_rtti.m4                           \
+       config/ac_cxx_string_compare_string_first.m4    \
+       config/bb_enable_doxygen.m4                     \
+       config/ac_dll.m4
+
+m4datadir = $(datadir)/aclocal
+m4data_DATA = cppunit.m4
+
+# Not sure what is creating the timestamp file.
+# The so_locations file only happens on IRIX.
+DISTCLEANFILES = config/stamp-h1 so_locations
+
+dist-hook:
+       cp -dpR $(top_srcdir)/src/msvc6 $(distdir)/src
+       cp -dpR $(top_srcdir)/src/qttestrunner $(distdir)/src
+       cp -dpR $(top_srcdir)/include/msvc6 $(distdir)/include 
+       cp -dpR $(top_srcdir)/examples/msvc6 $(distdir)/examples
+       cp -dpR $(top_srcdir)/examples/qt $(distdir)/examples
+       mkdir $(distdir)/lib
+       find $(distdir) -name CVS | xargs rm -rf
+       perl -pi -e 's/\n/\r\n/g' `find $(distdir) -name '*.ds?'` \
+               $(distdir)/contrib/msvc/*                         \
+               $(distdir)/INSTALL-WIN32.txt
+
+.PHONY: release snapshot rpm docs doc-dist
+
+release:
+       rm -rf .deps */.deps
+       $(MAKE) distcheck
+
+snapshot:
+       $(MAKE) dist distdir=$(PACKAGE)-`date +%Y-%m-%d`
+
+rpm: dist
+       rpm -ta $(PACKAGE)-$(VERSION).tar.gz
+       mv -f /usr/src/redhat/SRPMS/$(PACKAGE)-$(VERSION)-*.rpm .
+       mv -f /usr/src/redhat/RPMS/*/$(PACKAGE)-$(VERSION)-*.rpm .
+       mv -f /usr/src/redhat/RPMS/*/$(PACKAGE)-doc-$(VERSION)-*.rpm .
+
+debian:
+       chmod a+x debian/rules
+       dpkg-buildpackage -rfakeroot -sa -us -uc -tc 
+
+doc-dist:
+       $(MAKE) -C doc doc-dist
+       mv -f doc/$(PACKAGE)-docs-$(VERSION).tar.gz .
+
+
diff --git a/lib/cppunit-1.10.0/Makefile.in b/lib/cppunit-1.10.0/Makefile.in
new file mode 100644 (file)
index 0000000..2e2b0ad
--- /dev/null
@@ -0,0 +1,743 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+AUTOMAKE_OPTIONS = 1.4
+ACLOCAL_AMFLAGS = -I config
+
+SUBDIRS = src include examples doc
+
+bin_SCRIPTS = cppunit-config
+man_MANS = cppunit-config.1
+
+EXTRA_DIST = BUGS INSTALL-unix INSTALL-WIN32.txt CodingGuideLines.txt  \
+       cppunit-config.1                                                \
+       cppunit.m4 cppunit.spec.in cppunit.spec         \
+       $(m4sources)                                                    \
+       contrib/msvc/CppUnit.WWTpl                                  \
+       contrib/msvc/readme.txt                         \
+       contrib/msvc/AddingUnitTestMethod.dsm           \
+       contrib/bc5/bcc-makefile.zip \
+       contrib/xml-xsl/tests.xml \
+       contrib/xml-xsl/report.xsl \
+       src/CppUnitLibraries.dsw
+
+
+m4sources = \
+       config/ac_create_prefix_config_h.m4             \
+       config/ac_cxx_have_sstream.m4                   \
+       config/ac_cxx_have_strstream.m4                 \
+       config/ax_cxx_gcc_abi_demangle.m4               \
+       config/ac_cxx_namespaces.m4                     \
+       config/ac_cxx_rtti.m4                           \
+       config/ac_cxx_string_compare_string_first.m4    \
+       config/bb_enable_doxygen.m4                     \
+       config/ac_dll.m4
+
+
+m4datadir = $(datadir)/aclocal
+m4data_DATA = cppunit.m4
+
+# Not sure what is creating the timestamp file.
+# The so_locations file only happens on IRIX.
+DISTCLEANFILES = config/stamp-h1 so_locations
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES = cppunit.spec cppunit-config
+SCRIPTS = $(bin_SCRIPTS)
+
+DIST_SOURCES =
+
+NROFF = nroff
+MANS = $(man_MANS)
+DATA = $(m4data_DATA)
+
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+       ps-recursive install-info-recursive uninstall-info-recursive \
+       all-recursive install-data-recursive install-exec-recursive \
+       installdirs-recursive install-recursive uninstall-recursive \
+       check-recursive installcheck-recursive
+DIST_COMMON = README ./config/config.h.in AUTHORS COPYING ChangeLog \
+       INSTALL Makefile.am Makefile.in NEWS THANKS TODO aclocal.m4 \
+       config/config.guess config/config.sub config/depcomp \
+       config/install-sh config/ltmain.sh config/missing \
+       config/mkinstalldirs configure configure.in cppunit-config.in \
+       cppunit.spec.in
+DIST_SUBDIRS = $(SUBDIRS)
+all: all-recursive
+
+.SUFFIXES:
+
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
+
+$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       $(SHELL) ./config.status --recheck
+$(srcdir)/configure:  $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+       cd $(srcdir) && $(AUTOCONF)
+
+$(ACLOCAL_M4):  configure.in config/ac_create_prefix_config_h.m4 config/ac_cxx_have_sstream.m4 config/ac_cxx_have_strstream.m4 config/ac_cxx_namespaces.m4 config/ac_cxx_rtti.m4 config/ac_cxx_string_compare_string_first.m4 config/ac_dll.m4 config/ax_cxx_gcc_abi_demangle.m4 config/bb_enable_doxygen.m4
+       cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+config/config.h: config/stamp-h1
+       @if test ! -f $@; then \
+         rm -f config/stamp-h1; \
+         $(MAKE) config/stamp-h1; \
+       else :; fi
+
+config/stamp-h1: $(srcdir)/./config/config.h.in $(top_builddir)/config.status
+       @rm -f config/stamp-h1
+       cd $(top_builddir) && $(SHELL) ./config.status config/config.h
+
+$(srcdir)/./config/config.h.in:  $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+       cd $(top_srcdir) && $(AUTOHEADER)
+       touch $(srcdir)/./config/config.h.in
+
+distclean-hdr:
+       -rm -f config/config.h config/stamp-h1
+cppunit.spec: $(top_builddir)/config.status cppunit.spec.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
+cppunit-config: $(top_builddir)/config.status cppunit-config.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
+binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+install-binSCRIPTS: $(bin_SCRIPTS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(bindir)
+       @list='$(bin_SCRIPTS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         if test -f $$d$$p; then \
+           f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+           echo " $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f"; \
+           $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f; \
+         else :; fi; \
+       done
+
+uninstall-binSCRIPTS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_SCRIPTS)'; for p in $$list; do \
+         f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+         echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
+         rm -f $(DESTDIR)$(bindir)/$$f; \
+       done
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+
+man1dir = $(mandir)/man1
+install-man1: $(man1_MANS) $(man_MANS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(man1dir)
+       @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+       for i in $$l2; do \
+         case "$$i" in \
+           *.1*) list="$$list $$i" ;; \
+         esac; \
+       done; \
+       for i in $$list; do \
+         if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+         else file=$$i; fi; \
+         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+         case "$$ext" in \
+           1*) ;; \
+           *) ext='1' ;; \
+         esac; \
+         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+         inst=`echo $$inst | sed -e 's/^.*\///'`; \
+         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+         echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
+         $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
+       done
+uninstall-man1:
+       @$(NORMAL_UNINSTALL)
+       @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+       for i in $$l2; do \
+         case "$$i" in \
+           *.1*) list="$$list $$i" ;; \
+         esac; \
+       done; \
+       for i in $$list; do \
+         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+         case "$$ext" in \
+           1*) ;; \
+           *) ext='1' ;; \
+         esac; \
+         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+         inst=`echo $$inst | sed -e 's/^.*\///'`; \
+         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+         echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
+         rm -f $(DESTDIR)$(man1dir)/$$inst; \
+       done
+m4dataDATA_INSTALL = $(INSTALL_DATA)
+install-m4dataDATA: $(m4data_DATA)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(m4datadir)
+       @list='$(m4data_DATA)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(m4dataDATA_INSTALL) $$d$$p $(DESTDIR)$(m4datadir)/$$f"; \
+         $(m4dataDATA_INSTALL) $$d$$p $(DESTDIR)$(m4datadir)/$$f; \
+       done
+
+uninstall-m4dataDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(m4data_DATA)'; for p in $$list; do \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " rm -f $(DESTDIR)$(m4datadir)/$$f"; \
+         rm -f $(DESTDIR)$(m4datadir)/$$f; \
+       done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+       @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       if (etags --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+       else \
+         include_option=--include; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -f $$subdir/TAGS && \
+             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = .
+distdir = $(PACKAGE)-$(VERSION)
+
+am__remove_distdir = \
+  { test ! -d $(distdir) \
+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr $(distdir); }; }
+
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+
+distdir: $(DISTFILES)
+       $(am__remove_distdir)
+       mkdir $(distdir)
+       $(mkinstalldirs) $(distdir)/. $(distdir)/./config $(distdir)/config $(distdir)/contrib/bc5 $(distdir)/contrib/msvc $(distdir)/contrib/xml-xsl $(distdir)/doc $(distdir)/src
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d $(distdir)/$$subdir \
+           || mkdir $(distdir)/$$subdir \
+           || exit 1; \
+           (cd $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$(top_distdir)" \
+               distdir=../$(distdir)/$$subdir \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-hook
+       -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r $(distdir)
+dist-gzip: distdir
+       $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       $(am__remove_distdir)
+
+dist dist-all: distdir
+       $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+       $(am__remove_distdir)
+       GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
+       chmod -R a-w $(distdir); chmod a+w $(distdir)
+       mkdir $(distdir)/_build
+       mkdir $(distdir)/_inst
+       chmod a-w $(distdir)
+       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+         && cd $(distdir)/_build \
+         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+           $(DISTCHECK_CONFIGURE_FLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) dvi \
+         && $(MAKE) $(AM_MAKEFLAGS) check \
+         && $(MAKE) $(AM_MAKEFLAGS) install \
+         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+               distuninstallcheck \
+         && chmod -R a-w "$$dc_install_base" \
+         && ({ \
+              (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+             } || { rm -rf "$$dc_destdir"; exit 1; }) \
+         && rm -rf "$$dc_destdir" \
+         && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
+         && rm -f $(distdir).tar.gz \
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+       $(am__remove_distdir)
+       @echo "$(distdir).tar.gz is ready for distribution" | \
+         sed 'h;s/./=/g;p;x;p;x'
+distuninstallcheck:
+       @cd $(distuninstallcheck_dir) \
+       && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+          || { echo "ERROR: files left after uninstall:" ; \
+               if test -n "$(DESTDIR)"; then \
+                 echo "  (check DESTDIR support)"; \
+               fi ; \
+               $(distuninstallcheck_listfiles) ; \
+               exit 1; } >&2
+distcleancheck: distclean
+       @if test '$(srcdir)' = . ; then \
+         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+         exit 1 ; \
+       fi
+       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+         || { echo "ERROR: files left in build directory after distclean:" ; \
+              $(distcleancheck_listfiles) ; \
+              exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(SCRIPTS) $(MANS) $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+       $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir) $(DESTDIR)$(m4datadir)
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-m4dataDATA install-man
+
+install-exec-am: install-binSCRIPTS
+
+install-info: install-info-recursive
+
+install-man: install-man1
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -rf $(top_srcdir)/autom4te.cache
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-binSCRIPTS uninstall-info-am \
+       uninstall-m4dataDATA uninstall-man
+
+uninstall-info: uninstall-info-recursive
+
+uninstall-man: uninstall-man1
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+       clean-generic clean-libtool clean-recursive ctags \
+       ctags-recursive dist dist-all dist-gzip distcheck distclean \
+       distclean-generic distclean-hdr distclean-libtool \
+       distclean-recursive distclean-tags distcleancheck distdir \
+       distuninstallcheck dvi dvi-am dvi-recursive info info-am \
+       info-recursive install install-am install-binSCRIPTS \
+       install-data install-data-am install-data-recursive \
+       install-exec install-exec-am install-exec-recursive \
+       install-info install-info-am install-info-recursive \
+       install-m4dataDATA install-man install-man1 install-recursive \
+       install-strip installcheck installcheck-am installdirs \
+       installdirs-am installdirs-recursive maintainer-clean \
+       maintainer-clean-generic maintainer-clean-recursive mostlyclean \
+       mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+       pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \
+       tags-recursive uninstall uninstall-am uninstall-binSCRIPTS \
+       uninstall-info-am uninstall-info-recursive uninstall-m4dataDATA \
+       uninstall-man uninstall-man1 uninstall-recursive
+
+
+dist-hook:
+       cp -dpR $(top_srcdir)/src/msvc6 $(distdir)/src
+       cp -dpR $(top_srcdir)/src/qttestrunner $(distdir)/src
+       cp -dpR $(top_srcdir)/include/msvc6 $(distdir)/include 
+       cp -dpR $(top_srcdir)/examples/msvc6 $(distdir)/examples
+       cp -dpR $(top_srcdir)/examples/qt $(distdir)/examples
+       mkdir $(distdir)/lib
+       find $(distdir) -name CVS | xargs rm -rf
+       perl -pi -e 's/\n/\r\n/g' `find $(distdir) -name '*.ds?'` \
+               $(distdir)/contrib/msvc/*                         \
+               $(distdir)/INSTALL-WIN32.txt
+
+.PHONY: release snapshot rpm docs doc-dist
+
+release:
+       rm -rf .deps */.deps
+       $(MAKE) distcheck
+
+snapshot:
+       $(MAKE) dist distdir=$(PACKAGE)-`date +%Y-%m-%d`
+
+rpm: dist
+       rpm -ta $(PACKAGE)-$(VERSION).tar.gz
+       mv -f /usr/src/redhat/SRPMS/$(PACKAGE)-$(VERSION)-*.rpm .
+       mv -f /usr/src/redhat/RPMS/*/$(PACKAGE)-$(VERSION)-*.rpm .
+       mv -f /usr/src/redhat/RPMS/*/$(PACKAGE)-doc-$(VERSION)-*.rpm .
+
+debian:
+       chmod a+x debian/rules
+       dpkg-buildpackage -rfakeroot -sa -us -uc -tc 
+
+doc-dist:
+       $(MAKE) -C doc doc-dist
+       mv -f doc/$(PACKAGE)-docs-$(VERSION).tar.gz .
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/NEWS b/lib/cppunit-1.10.0/NEWS
new file mode 100644 (file)
index 0000000..c470217
--- /dev/null
@@ -0,0 +1,971 @@
+  New in CppUnit 1.10.0 (same as 1.9.14):
+  --------------------------------------
+
+* Assertions
+
+  - Ported exception assertion macros from cppunit 2 to the 1.9.x series:
+    CPPUNIT_ASSERT_THROW, CPPUNIT_ASSERT_NO_THROW, 
+    CPPUNIT_ASSERT_ASSERTION_FAIL, CPPUNIT_ASSERT_ASSERTION_PASS.
+
+* Deprecated:
+
+  - The helper macros: CPPUNIT_TEST_FAIL & CPPUNIT_TEST_EXCEPTION have
+    been deprecated. Use the new exception assertion macros instead.
+
+* Bug Fix:
+
+  - cppunit-config: bug #903363, missing -ldl from the output of
+    cppunit-config --libs. Fixed thanks Eric Blossom patch.
+
+  - test plug-in(unix): Adding RTLD_GLOBAL allows test plug-ins 
+    to provide symbols to shared objects they load themselves.
+    Thanks goes to Gareth Sylvester for this patch (#816563).
+
+
+  New in CppUnit 1.9.12:
+  ---------------------
+
+* Test Plug-in
+
+  - added support contributed support for UNIX systems that
+    have libdld and not libdl (e.g. hp-ux). Contributed by
+    Abdessattar Sassi.
+
+* RTTI
+
+  - TypeInfoHelper now used gcc c++ abi to demangle typeinfo name thanks to
+    Neil Ferguson contribution.
+
+* Bug Fix:
+
+  - MFC TestRunner: integrated bug fix from Tim Threlkeld for bug 
+    #610191 and #610162. Fixed assertion when minizing dialog 
+    (bug #643612).
+
+  - XMLOutputter: Fixed bug #676505: no space inserted between attributes
+    of XmlElement.
+
+  - CppUnit portability: fixed many mistakes relating to compilation
+    without type info or namespace reported by Philip Craig.
+
+  - Missing destructor with no throw specification for 
+    DynamicLibraryManagerException. Bug #619059.
+
+  - Fixed missing export for operator <<(TextTestResult). Bug #610119.
+
+  - Missing include for typeinfo in TestNamer.h. Bug #662666.
+
+* Compilation
+
+  - Fixed compilation issues for Borland C++ 6 and STLPort. Bug #694971,
+    #699794 and #662666.
+
+  - Fixed compilation issues for AIX.
+
+  - Fixed compilation issues for Visual C++ .NET 2002.
+
+  - Fixed doxygen usage in mingw environment (space not allowed in 
+    doxygen path). Bug #700730.
+
+  - Fixed compilation issue for mingw (bug #711583).
+
+
+  New in CppUnit 1.9.10:
+  ---------------------
+
+  - Major portability improvement
+  - Protector
+  - HelperMacros
+  - MFC TestRunner bug fixes
+  - Failure diagnostic
+  - Asserter
+
+* Major portability improvement:
+
+  - Much work has been done to reduce C++ feature requirement to compile
+    CppUnit. It should now be possible to compile CppUnit on most 
+    compilers, as long as STL are available (in std namespace or not), 
+    with some form of strstream and iostream, as well as exception support.
+    See CodingGuideLines.txt for details.
+
+* Protector
+
+  - Protector can be passed to the TestResult to 'protect' call to
+    setUp(), runTest() and tearDown() method. With this, it is easy to
+    capture exceptions which do not have std::exception as a base class,
+    such as CException or RWXMsg for example. TestResult and Protector 
+    class documentation. Look at src/cppunit/DefaultProtector.cpp for
+    an example of implementation.
+
+* Helper macros
+
+  - Mostly rewritten. It no longer use TestSuiteBuilder. A new object
+    TestSuiteBuilderContext was introduced. It is used to name test case,
+    create test fixture instance and add test to the fixture suite. It
+    is now much more easier to add custom test cases using
+    CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS. Should also prevent most 
+    compability break concerning that macro.
+
+  - Useful typedef are now public: TestFixtureType, ParentTestFixtureType.
+
+  - New typedef for custom test method parameter: 
+    typedef TestSuiteBuilderContext<TestFixtureType> 
+       TestSuiteBuilderContextType;
+
+  - added support for abstract test fixture with
+    CPPUNIT_TEST_SUITE_END_ABSTRACT(). See documentation for further
+    detail.
+
+* Failure diagnostic
+
+  - setUp() and tearDown() now provides a detailed diagnostic of the
+    failure (assertion, exception...)
+
+  - If RTTI is allowed to extract type info, CppUnit will report the
+    actual exception type in the diagnostic.
+
+* Asserter:
+  
+  - A new AdditionalMessage class has been introduced. It is used for
+    assertion that takes an additional 'message' argument 
+    (CPPUNIT_ASSERT_MESSAGE...). Since this macro has an implicit 
+    constructor that take a string, which creates a Message with the 
+    specified string as detail. That way, additional message can be a 
+    single string or a complex Message object. See documentation for 
+    example of use.
+
+* Bug Fix:
+
+  - MFC TestRunner: bug #530426 (conflict between TestRunner and host 
+    application's resources). A huge thanks to Steven Mitter for that one.
+
+  - MFC TestRunner: Browse button is now disabled while running test.
+
+* Deprecated
+
+  - CppUnit::TextUi::TestRunner moved to CppUnit::TextTestRunner.
+  - CppUnit::MfcUi::TestRunner moved to CppUnit::MfcTestRunner.
+  - CppUnit::QtUi::TestRunner moved to CppUnit::QtTestRunner.
+
+* Compatiblity break:
+
+  - CppUnitTextUi::TestRunner, removed runTestByName() and runTest().
+  - TestSuiteBuilder: removed templatized method 
+    addTestCallerForException(). See implementation of 
+    CPPUNIT_TEST_EXCEPTION implementation for an alternative.
+  - TestAssert: removed deprecated functions (those not using SourceLine) 
+    assertImplementation(), assertNotEqualImplementation(), 
+    assertEquals(). Moved non deprecated functions assertEquals() and
+    assertEquals() into CppUnit namespace.
+  - Plug-ins 'Parameters' typedef has been replaced by class 
+    PlugInParameters. The method commandLine() returns what used to be in
+    Parameters[0]. This should avoid future compatibility break when the 
+    parameters passing API will be defined.
+  - TestPlugIn::initialize() now takes a PlugInParameters in argument 
+    instead of a Parameters.
+  - template <class T> void assertEquals() no longer has a default message 
+    value (no impact, unless you used this function directly instead of
+    assertion macros).
+  - HelperMacros: renamed CPPUNIT_TEST_ADD to 
+    CPPUNIT_TEST_SUITE_ADD_TEST.
+  - HelperMacros: removed CPPUNIT_TEST_CUSTOM. Instead use 
+    CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS and call context.addTest() 
+    passing the test that was returned.
+  - HelperMacros: renamed CPPUNIT_TEST_CUSTOMS to 
+    CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS. Changed method signature to
+    static void aMethodName( TestSuiteBuilderContextType &context ).
+    You can replace the 3 previous parameters by context. (See 
+    documentation for further detail).
+
+
+
+  New in CppUnit 1.9.8:
+  ---------------------
+
+  - New custom test macros for fixture suite
+  - Exception message are now structured
+  - Added detail field to MFC TestRunner
+  - New XmlDocument class to easily create new XML output format
+  - XmlOutputter customization
+  - Test plug-in XMLOutputter hook
+  - ClockerPlugIn example includes test time in XML output
+  - DllPlugInTester allows test plug-in to hook the XmlOutputter
+  - Configurable CompilerOutputter wrapping
+
+* New custom test macros
+
+  - 3 new macros have been added for use when declaring test fixture suite:
+    - CPPUNIT_TEST_CUSTOM : to specify a method that returns an instance of 
+      Test to add to the suite
+    - CPPUNIT_TEST_CUSTOM : to specify a method that add some tests to the 
+      suite
+    - CPPUNIT_TEST_ADD : to add a test to the suite. Used this to create custom 
+      CPPUNIT_TEST_xxx macros.
+
+    See macros documentation for examples and details.
+
+* Exception message
+
+  - Exception message are now stored in a Message object instead of a string.
+    A message is composed of two items:
+    - a short description (~20/30 characters)
+    - a list of detail strings
+
+    The short description is used to indicate how the detail strings should be
+    interpreted. It usually indicates the failure types, such as
+    "assertion failed", "forced failure", "unexpected exception caught",
+    "equality assertion failed"... It should not contains new line characters 
+    (\n).
+
+    Detail strings are used to provide more information about the failure. It
+    can contains the asserted expression, the expected and actual values in an
+    equality assertion, some addional messages... Detail strings can contains
+    new line characters (\n).
+
+    This change allow ouputters to deal with all failure the same way (there is
+    no special case for the equality assertion any more).
+
+* New XmlDocument class to easily create new XML output format
+
+  - Classes XmlDocument and XmlElement where extracted from XmlOutputter. This
+    help writing outputters that use a completly different XML format.
+
+  - XmlDocument represents a XML file, and XmlElement represents a XML element.
+
+* XmlOutputter customization
+
+  - Xml output can be customized using XmlOutputterHook. To do so, subclass
+    XmlOutputterHook and register it to the XmlOutputter with addHook() before
+    call XmlOutputter::write().
+
+    Hook can be used to add some datas to the XmlDocument or the XmlElement of
+    a specific hook. Methods have been added to XmlElement to help navigating
+    and modifying the XmlDocument.
+
+    See ClockerPlugIn example.
+
+* MFC TestRunner
+
+  - The name of the test is displayed just before being run.
+  - Browse Test Hierarchy dialog is resizable.
+  - Better (and cleaner) handling of windows resizing
+  - Failure list now only show the short description of the failure.
+  - Edit field added to display the details of the selected failure.
+
+* MFC test plug-in runner (TestPlugInRunner):
+  
+  - command line: a dll name can be specified on the command after -testsuite:
+    example: TestPlugInRunnerd.exe -testsuite Simpled.dll
+
+  - Layout configuration is stored/restored.
+
+* Test plug-in XML output Hook
+
+  - TestPlugIn interface provides a mean for plug-in to register hook for
+    XML output. Practically, this allow plug-in to add specific data to the
+    output. See ClockerPlugIn example, which add timing datas to the xml
+    output.
+
+* DllPlugInTester:
+
+  - added option -w / --wait to wait for the user to press a key before exiting.
+
+  - plug-in can now provides XmlOutputterHook to add specific datas to the 
+    XML ouput. See ClockerPlugIn example.
+
+* CompilerOutputter wrapping is parametrized
+
+  - Wrap column can be set with setWrapColumn(). Default is now 79 instead of 80.
+
+  - Wrapping can be disabled with setNoWrap().
+
+* Examples:
+
+  - ClockerPlugIn: the example now use the new XmlOutputterHook. Test time are
+    now included in the XML output. See examples/ClockerPlugIn/ReadMe.txt for
+    details.
+
+* Bug Fix:
+
+  - CompilerOutputter: fixed wrapping issues (UT magic!)
+
+  - DllPlugInTester: use ISO-LATIN1 encoding if none is given. Flag --xsl was
+    ignored.
+
+  - MfcUi plug-in runner (TesTPlugInRunner): better handling of history when
+    loading and reloading a dll. 
+
+  - Qt Test Runner: minor bug fixes. Should compile on Unix.
+
+  - XmlOutputter: use the default encoding if an empty string is given as
+    encoding
+
+* Compatibility Break:
+
+  - CompilerOutputter: removed printNotEqualMessage() and printDefaultMessage().
+    No longer needed since Exception message are processed in a generic way.
+    Removed wrap(). Extracted to StringTools.
+
+  - Exception constructor takes a Message instead of a string. Notes that the
+    first argument in Message constructor is a short description, not the message.
+    Therefore, the change will usualy have the following form:
+      Exception( Message( "assertion failed", oldMessage ) );
+    You may want to use Asserter functions instead of constructing and throwing
+    the exception manually.
+
+  - TestPlugInAdapter: renamed TestPlugInDefaultImpl.
+
+  - TestSuiteBuilder: removed default constructor. All remaining constructors
+    take an additional argument of type TestNamer used to specify the fixture
+    named and generate test case name. Remove template method 
+    addTestCallerForException(). Use addTest() instead (see 
+    CPPUNIT_TEST_EXCEPTION implementation).
+
+  - TextTestResult: most printing method were removed. This task is now delegated
+    to TextOuputter.
+
+  - XmlElement: renamed addNode() to addElement().
+
+  - XmlOutputter: removed methods writeProlog() and writeTestResult() which
+    are replaced by XmlDocument. Renamed makeRootNode() to setRootNode(). It
+    no longer returns the root node, but set the root node of the XML document.
+
+  - XmlOuputter::Node: class has been extracted and renamed XmlElement.
+
+* Deprecated:
+
+  - Asserter: all functions that use a string for the failure message. Construct
+    a Message instead (see Exception constructor compatiblity break and
+    Exception message feature).
+
+
+  New in CppUnit 1.9.6:
+  ---------------------
+
+  - DllPlugInTester can be parametrized from command line
+  - Two test listener plug-in examples
+  - An 'hello world' example & getting started document : Money
+  - Contribution: generic makefile for Borland 5.5 free compiler.
+  - Bug fixes
+
+* DllPlugInTester:
+
+  - Advanced command line to support miscellaneous listener outputer.
+    Parameters can now be passed to test plug-in:
+
+    -c --compiler
+      Use CompilerOutputter
+    -x --xml [filename]
+      Use XmlOutputter (if filename is omitted, then output to cout or
+      cerr.
+    -s --xsl stylesheet
+      XML style sheet for XML Outputter
+    -e --encoding encoding
+      XML file encoding (UTF8, shift_jis, ISO-8859-1...)
+    -b --brief-progress
+      Use BriefTestProgressListener (default is TextTestProgressListener)
+    -n --no-progress
+      Show no test progress (disable default TextTestProgressListener)
+    -t --text
+      Use TextOutputter
+    -o --cout
+      Ouputters output to cout instead of the default cerr.
+    filename[="options"]
+      Many filenames can be specified. They are the name of the 
+      test plug-ins to load. Optional plug-ins parameters can be 
+      specified after the filename by adding '='.
+    [:testpath]
+      Optional. Only one test path can be specified. It must 
+      be prefixed with ':'. See TestPath constructor for syntax.
+
+    'parameters' (test plug-in or XML filename, test path...) may contains 
+    spaces if double quoted. Quote may be escaped with \".
+
+    Some examples of command lines:
+DllPlugInTesterd_dll.exe -b -x tests.xml -c simple_plugind.dll CppUnitTestPlugInd.dll
+    Will load 2 tests plug-ins (available in lib/), use the brief test
+    progress, output the result in XML in file tests.xml and also
+    output the result using the compiler outputter.
+
+DllPlugInTesterd_dll.exe ClockerPlugInd.dll="flat" -n CppUnitTestPlugInd.dll
+    Will load the 2 test plug-ins, and pass the parameter string "flat"
+    to the Clocker plug-in, disable test progress. Clocker being a test
+    listener plug-ins (it doesn't implements any tests, it just register
+    a TestListener), this is equivalent to say 'run all the test
+    of CppUnitTestPlugIn and use ClockerPlugIn as a TestLisener'.
+
+DllPlugInTesterd_dll.exe CppUnitTestPlugInd.dll :Core
+    Will run the test named "Core" (a suite in the present case ) of the 
+    test plug-in.
+
+* Documentation
+
+  - New getting started documentation. Not completed yet, but probably
+    a good complement to the current cookbook. Explore the creation
+    of the Money example.
+
+* Examples
+
+  - Money (examples/Money): the 'hello world' example. Unit tests for 
+    a simple Money class.
+
+  - DllPlugInTesterTest (src/DllPlugInTester/DllPlugInTester.dsp):
+    unit tests for CommandLineParser. Not really an example, but only
+    slightly more complex than Money.
+
+  - ClockerPlugIn (examples/ClockerPlugIn): a test listener plug-in 
+    that track tests and test suites running time. Parameter: "flat" 
+    for a reporting with a flattened tree.
+
+  - DumperPlugIn (examples/DumperPlugIn): a test listener plug-in that 
+    dump the test tree as it run. Paramater: "flat" for a reporting 
+    with a flattened tree.
+
+  - CppUnitTestPlugIn (examples/cppunitest/CppUnitTestPlugIn.dsp):
+    CppUnit's test suite as a test plug-in.
+
+* Contribution
+
+  - Contributed by project cuppa team (http://sourceforge.jp/projects/cuppa/):
+
+  - Makefile for CppUnit with Borland C++ 5.5 free compiler: does not
+    depend on a specific CppUnit version.
+
+* Compatiblity breaks
+
+  - DllPlugInTester: (1.9.4 only), should add -c to DllPlugInTester 
+    command line.
+
+* Bug Fix:
+
+  - DynamicLibaryManager did not report the library name when loading a
+    a library.
+
+  - BeosDynamicLibraryManager: fixed thanks to Shibu Yoshiki 
+    ('cuppa' project team).
+
+  - Broken build on Unix should be fixed for most (thanks to 
+    Jeffrey Morgan).
+
+
+  New in CppUnit 1.9.4:
+  ----------------------
+
+  - More versatile, easier to make test plug-in.
+  - A PlugInManager to manage multiple test plug-ins.
+  - Crossplatform test plug-in runner.
+  - Crossplatform test plug-in example.
+  - A brief progress listener 
+  - Easier test hierarchy creation
+  - Improved documentation.
+  - Tracking of test run start/end.
+  - Contribution: XML style sheet & borland 5.5 makefile.
+  - Help needed on the Unix side!
+
+* Buildling on Unix:
+
+  - I did not get any feed back on the previous build issue on Unix. Using
+    a simple autobook example was useless to try to solve the problem. Here
+  is the issue:
+
+  CppUnit library build fine, it is the example I'm having trouble with.
+
+  Since the test plug-in have been added, CppUnit use the function
+  dlopen(), dlsym() and dlclose() on unix to load/unload the plug-in.
+
+  Those functions apparently requires to link another library when
+  building an exectuable. Here is was should be done:
+  - linking against the said library for each example.
+  - generates the shared library for the examples/simple/simple_plugin 
+    example (source files are ExampleTestCase.cpp, ExampleTestCase.cpp 
+    and SimplePlugIn.cpp).
+  - if possible, makes the above optionnal if --disable-test-plug-in 
+    is defined:
+    - don't link the dlXXX library 
+    - don't compile the plug-in example
+    - add #define CPPUNIT_NO_TESTPLUGIN 1 to the config file
+
+  Contact me on the mailing-list for more details.
+
+* TestPlugIn:
+
+  - A simple fact I realised while testing: if you link your test plug-in 
+    against the DLL version of cppunit (or shared library on Unix), then
+  test registered to the TestFactoryRegistry (it is what's hide behind
+  CPPUNIT_TEST_SUITE_REGISTRATION) are automatically shared. Changes
+  have been made to support that usage (CppUnit was crashing badly).
+  Using the TestFactoryRegistry provides much more flexiblity that
+  providing a single suite for the plug-in. As such:
+
+  - CppUnit plug-in should be linked against the dll version of CppUnit library.
+
+  - Plug-in should register their tests using the CPPUNIT_TEST_SUITE_xxx macros.
+
+  - 'homemade' suite can still be registred to the TestFactoryRegistry that is
+     passed as parameter on plug-in initialization. Notes that you must 
+   unregister those suites during plug-in uninitialization, otherwise on
+   destruction, the TestFactoryRegistry will attempt to destroy them... Your
+   plug-in would have been already unloaded...
+
+  - Plug-in can accept parameters on initialization (notes that the Parameters
+    object is far from being stabilized, but whatever form it takes, it will be
+  a list of string).
+    
+  - Plug-in can register their one listener for a test run. This means that you
+    can extends 'DllPlugInTester' by creating test plug-in... This also means
+  than you can listen to startTestRun()/endTestRun() to do some global
+  setUp/tearDown (to initialize globales resources, such as COM...)
+
+  - Why all this fuss around test plug-in ? Test plug-in are the incarnation of
+    an old concept: testable components...
+
+* PlugInManager:
+
+  - The PlugInManager is used to load/unload plug-ins. It takes care of all
+    the 'plug-in' protocol and makes it easy to use multiple plug-ins at the
+  same time. It dispatches the addListener()/removeListener() message to
+  each plug-in.
+
+* Crossplatform test plug-in runner (src/DllPlugInRunner):
+
+  - This application can be used to run your test plug-ins. It can load
+    multiple test plug-ins and run all or a specific test in the test
+  hierarchy returned by TestFactoryRegistry::getRegistry().makeTest().
+
+  - Plug-in loaded by the plug-in may also be custom TestListener.
+
+  - It can be use for post-build check and to debug the plug-in.
+
+  - Why use it? It keep you away from CppUnit API changes!
+
+* Easier test hierarchy creation (TestFactoryRegistry/HelperMacros):
+
+  - added method addRegistry(name) to add a named registry to the registry.
+    see TestFactoryRegistry for an example of use.
+
+  - added macros CPPUNIT_REGISTRY_ADD( which, to ) and 
+    CPPUNIT_REGISTRY_ADD_TO_DEFAULT( which ) to create test hierarchy at static
+  initialization (in the spirit of CPPUNIT_TEST_SUITE_xxx() macros).
+
+* VerboseTestProgressListener:
+
+  - A new TestListener that prints the test name before running it. Most useful when
+    a test crashing, mean a application crash.
+
+* Documentation:
+
+  - More details about the test plug-in, how to use it, how does it works...
+    See module/Writing Test Plug-in.
+
+* Examples:
+
+  - examAdded crossplatform simple example. Equivalent to VC++ HostApp example.
+  - examples/simple: a very simple example, demonstrating the use of CppUnit
+    with a single TestFixture. Demonstrate both how to build an application
+  using TestRunner, and how to build a test plug-in to use with the
+  test plug-in runner.
+
+* Contribution
+
+  - Contributed by project cuppa team (http://sourceforge.jp/projects/cuppa/):
+
+  - XML style sheet: transform CppUnit XML output into HTML.
+  - Makefile for CppUnit with Borland C++ 5.5 free compiler.
+
+* Behavior changes:
+
+  - Test runner should call TestResult::runTest() to run the 'top level' test. This
+    will inform the TestListener of the test run start/end.
+
+* Compatiblity break:
+
+  - TestFactoryRegistry don't own register test anymore. AutoRegisterSuite has
+    been updated to preverse its apparent behavior. It should be of concern
+  if you created and registered custom TestFactory.
+
+  - Removed TextTestProgressListener::done(). No longer needed, it listens
+    for endTestRun().
+
+* Compatiblity Break for 1.9.2 users:
+
+  - TestPlugIn.h: CppUnitTestPlugIn as been completly rewritten.
+
+  - TestPlugIn.h: macro CPPUNIT_PLUGIN_IMPLEMENT() don't take any arguments.
+
+  - TestSuitePlugIn: removed. A similar functionnality is provided by 
+    PlugInManager.
+
+  - TestPlugInDefaultImpl: renamed TestPlugInAdapter. It does not implements
+    any default behavior anymore.
+
+  - DllPlugInRunner: no longer support multiple specific tests. The test path must
+    be prefixed with ':'. Release and Debug configuration links against cppunit_dll.
+
+* Bug Fix:
+
+  - Crash when linking CppUnit DLL within another DLL that registered test. Caused
+    by the destruction of tests registered to TestFactoryRegistry. Fixed by
+  providing a register/unregister interface and removing the ownership of 
+  TestFactory to TestFactoryRegistry.
+
+
+  New in CppUnit 1.9.2:
+  ----------------------
+
+  In short:
+  - Cleaner XML output
+  - Crossplatform Test plug-in
+  - TestPlugInSuite to wrap test plug-in
+  - More TestPlugIn documentation.
+
+* TestPlugIn:
+  - The test plug-in functionnality has been rewritten from scrash. 
+    TestPlugIn related macro are now crossplatform (exporting the plug-in
+  function from the dynamic library...).
+
+  - Class DynamicLibraryManager provides a generic way to access dynamic 
+    library. Platform specific implementation provided for WIN32, unix, BeOs.
+  Can be very easily ported to new platform.
+  
+  - A More flexible and hopefully extensible interface has been introduced
+    (CppUnitPlugIn). 
+  
+  - A default implementation using the test factory registry is provided 
+    (TestPlugInDefaultImpl). Can be easily customized.
+
+  - The one line test plug-in declaration was renamed CPPUNIT_PLUGIN_IMPLEMENT.
+
+  See modules/Writing Test Plug-in documentation and examples/EasyTestPlugIn.
+
+* XmlOutputter:
+
+  - XML output is now indented. Nodes that don't have children are one line 
+    tag. The output can now easily be read.
+
+* Compatibility break:
+
+  - class TestSucessListener was renamed to TestSuccessListener.
+
+  - XmlOutput: renamed tag <SuccessfulTests> to <SuccessfulTests>
+
+  - Global fix of the 'success' typo (was misspelled 'sucess'). Main impacts are listed
+    above, but check your own code in case you override some protected/private methods.
+
+  - TestPlugInInterface (include/msvc6/TestPlugInInterface.h): this header and class
+    are now obsolete. You should use include/cppunit/plugin/TestPlugIn.h instead.
+  Macro CPPUNIT_TESTPLUGIN_IMPL have been replaced by CPPUNIT_PLUGIN_IMPLEMENT.
+
+  - TestDecorator inherits Test instead of TestLeaf.
+
+  - DllPlugInTester only run DLL implementing the new new TestPlugIn interface.
+
+
+  New in CppUnit 1.9.0:
+  ----------------------
+
+  In short:
+  - Exploration of the test hierarchy without RTTI support
+  - Utility methods to find a test in the hierarchy
+  - TestPath to store/load the path to a specific test in the hierarchy
+  - Generic TestRunner
+  - Style sheet support added to XML ouput.
+  - CompilerOutputter supports run-time parametrization of error location format.
+  - Tracking of test suite run.
+  - Debugging and post-build testing of DLL using DllPlugInTester.
+  - Easy creation a test plug-in and test plug-in new example
+
+* Test:
+
+  - Exploration of the test hierarchy without RTTI support:
+    Added Test::getChildTestCount() and Test::getChildTestAt() to walk the test hierarchy
+  without RTTI.
+
+  - Utility methods to find a test in the hierarchy:
+  Added Test::findTest(), Test::findTestPath() and Test::resolveTestPath().
+
+* TestPath:
+
+  - A new class that store the path to a specific test (list of pointer). Can be
+    converted into a string and constructed from a string. Typically used with 
+  TestRunner.
+
+* TestListener:
+
+  - Added startSuite() and endSuite() callback that are called before and after a
+    test suite runs its child tests. See TestListener for detail and new example.
+
+* CompilerOutputter:
+
+  - Support run-time parametrization of compiler error format. Support for gcc error
+    format added. See CompilerOutputter::setLocationFormat().
+
+* XmlOutputter:
+
+  - Added style sheet support.
+
+  - XML structure change (see Compatibility break)
+
+* DllPlugInTester: (src/msvc6/DllPlugInTester, in src/CppUnitLibraries.dsw)
+
+  - An application to load a DLL test plug-in and run the specified test. Test
+    result are reported using a CompilerOutputter. It can be used for post-build
+  testing, but to debug DLL too! See examples/msvc6/TestPlugIn/TestPlugIn.dsp
+  which demonstrate both.
+
+* TestPlugInInterface (include/msvc6/TestPlugInInterface.h):
+
+  - Easy creation a test plug-in with the new macro CPPUNIT_TESTPLUGIN_IMPL
+    that implements and exports everything for you. 
+  See examples/msvc6/EasyTestPlugIn for an example.
+
+
+* Compatibility break:
+
+  - Test::toString() has been removed. Applies to all subclass of Test. 
+    It was not used by the framework and was source of confusion with getName().
+
+  - TestCase::run(void) and TestCase::defaultResult() have been removed. Using the
+    run() method with a TestResult instead.
+
+  - XmlOutput: added a message element to the XML structure. The message associated
+    to a failure is now in the content of <Message> element instead of in the content
+  of the <FailedTest> element.
+  Changed from:
+        <FailedTest id="6">
+          <Name>test6</Name>
+          <FailureType>Error</FailureType>
+          error2
+        </FailedTest>
+  To:
+        <FailedTest id="6">
+          <Name>test6</Name>
+          <FailureType>Error</FailureType>
+          <Message>error2</Message>
+        </FailedTest>
+
+
+* Deprecated:
+
+  - CompilerOutputter::defaultOutputter(): use default constructor instead.
+
+
+* Bug fix:
+
+  - XmlOutputter: did not escape content (bug #540944).
+
+  - Included qt/examples in distribution
+
+  - Removed dependency of MfcTestRunner on DSPlugIn. It should now compile with
+    VC++ 7.
+
+
+  New in CppUnit 1.8.0:
+  ----------------------
+
+  In short:
+  - new assertions
+  - new facilities to write custom assertions
+  - new macros to define test case in your fixture
+  - registration of test fixture in named suite
+  - xml & compiler format test result output
+  - a new graphic test runner for the QT library
+  - MFC test runner window is resizable
+  - cppunit as a DLL
+  - Unicode support for MFC test runner.
+  - architecture clean-up: TestResultCollector extracted from TestResult.
+  - architecture clean-up: TestFixture extracted from TestCase.
+  - cookbook and documentation updated.
+
+* New assertion (TestAssert.h):
+
+  CPPUNIT_FAIL(message) : equivalent to CPPUNIT_ASSERT_MESSAGE( message, false )
+
+  CPPUNIT_ASSERT_EQUAL_MESSAGE( expectedValue, actualValue, additionalMessage ):
+  behave like CPPUNIT_ASSERT_EQUAL but allow to add some contextual information.
+
+* New macros to write test case (HelperMacros.h):
+
+  CPPUNIT_TEST_EXCEPTION that expect an exception of a specified type to
+  be thrown.
+
+  CPPUNIT_TEST_FAIL that expect a test to fail.
+
+  CPPUNIT_TEST_SUITE_NAMED_REGISTRATION to register a suite in a named suite. See
+  cppunittest example for a demo.
+
+* TextTestRunner (TextTestRunner.h):
+  -run() returns a boolean indicating is the run was successful.
+  -the constructor and setOutputter() allow you do define a specific outputter
+  to print the test result (CompilerOutputter, TextOutputter, XmlOutputter...)
+  -result() provide access to the result of the test run.
+  -eventManager() give access to the TestResult, allowing you to register others
+  TestListener.
+
+* TestResult (TestResult.h):
+  - That class has been splitted in two: TestResult and TestResultCollector.
+
+  - TestResult manages the TestListener (registration and event dispatch), as
+  well as the stop flag indicating if the current test run should be interrupted.
+  All other responsabilites have been moved to TestResultCollector.
+
+  - TestResult no longer hold the result of the test run (this is done by
+  TestResultCollector which is a TestListener).
+
+* TestListener (TestListener.h):
+  - all failures and errors are reported using a single method:
+    virtual void addFailure( const TestFailure &failure )
+  => the failure object life time is limited to that of the method call.
+  Use TestFailure::isError() to distinguish error from failure.
+  Use TestFailure::clone() to obtain a duplicate of the failure.
+
+* New helpers to construct your own assertion (Asserter.h):
+
+  It is now very easy to create your own assertion macro with failure
+  location.
+
+  Asserter namespace contains functions used to construct and throw exception
+  to report failure. See Asserter documentation for an example of usage, and
+  examples/cppunittest/XmlUniformiser.h for a real life example.
+
+  CPPUNIT_SOURCELINE() macro have been added (SourceLine.h). It captures the 
+  failure location in a SourceLine object. Use it to write your own macros.
+
+  Asserter namespace contains functions used to construct and throw exception
+  to report failure. See Asserter documentation for an example of usage, and
+  examples/cppunittest/XmlUniformiser.h for a real life example.
+
+* TestListener (TestListener.h):
+
+  - TestSucesssListener : a simple listener that checks if a test has failed.
+
+  - TestResultCollector : store all the test result. This class has been 
+  extracted from the hold TestResult class.
+
+  - TextTestProgressListener : print dot on cout to each time a test ends.
+  Letter 'F' and 'E' are printed when a failure or an error occurs.
+
+* Output (Outputter.h):
+
+  - XML output: You can dump the TestResult as an XML document using 
+  XmlOutputter. See examples/cppunittest/XmlOutputterTest.cpp for document
+  structure and usage.
+
+  - Compiler compatible output : CompilerOutputter print the result in a 
+  compiler compatible format. You can use your IDE to jump to the first 
+  failure. See examples/cppunittest/CppUniTestMain.cpp for an example of usage.
+
+  - Text output : replace the deprecated TextTestResult. Print the result in
+  a human readable format.
+
+* NotEqualException constructor take an additional message (usually used to
+point out where the difference occured between the expected and actual value)
+that can be retreived with additionalMessage(). See Asserter documentation for
+an example of usage.
+
+* CppUnit
+
+  - CppUnit can be compiled as a DLL (WIN32 platform). 
+  DLL can be generated by the cppunit_dll.dsp project. You must define the 
+  pre-processor symbol CPPUNIT_DLL when linking against CppUnit DLL.
+  See cppunittests examples for an example.
+
+* TestRunner
+
+  - Qt TestRunner : a test runner for the Qt library (http://www.trolltech.com).
+    See examples/qt for an example of use.
+
+  - MFC TestRunner : the dialog can now be resized. List view column sizes, 
+  as well as the dialog size, are saved. Unicode configurations have been added.
+
+* Deprecated
+
+  - TextTestResult : use the test listener TextTestProgressListener and the
+  ouputter TextOuputter instead.
+
+  - Methods having fileName, lineNumber as parameter. Usually replaced by
+  a similar method that take a SourceLine parameter. Exception and
+  TestAssert are impacted.
+
+  - TestRegistryFactory::registerFactory( const std::string &name,
+                                          TestFactory *factory ).
+  
+    You must define the symbol CPPUNIT_ENABLE_SOURCELINE_DEPRECATED to enable
+  old Exception constructor, UNKNOWNFILENAME and UNKNOWNLINENUMBER, as well
+  as function defined in the TestAssert namespace. The exception construction
+  and throwing as been moved to Asserter namespace.
+
+* Compatibility break:
+
+  TestResult has been splitted in two class. TestResultCollector compatibility
+  breaks refer to the methods that were previously in TestResult.
+
+  - TestListener::addError() was removed. addFailure() is used to report
+any kind of failure.
+  - TestResultCollector::errors() was removed. Use failures() instead.
+  - TestResultCollector::failures() now reports all kind of failures.
+  - TestResultCollector::failures() returns a const reference.
+  - void TestListener::addFailure( TestFailure *failure ) was removed.
+  - void TestListener::addError( TestFailure *failure ) signature changed.
+
+  - CPPUNIT_ASSERT_EQUAL_MESSAGE: changed arguments order. 'message' is now 
+    the first argument instead of the last (like CPPUNIT_ASSERT_MESSAGE).
+  Notes that CPPUNIT_ASSERT_EQUAL was introduced in release 1.7.3.
+
+  - directory for TestRunners as moved from cppunitui/ to cppunit/ui/ (concern
+  only users of release 1.7.10)
+
+* Bug fix:
+  - test ExceptionTest.testAssignment() don't fail anymore on VC++. See FAQ
+    for detail.
+
+
+  New in CppUnit 1.6.1
+  --------------------
+
+* This is a bug-fixing release.
+
+
+  New in CppUnit 1.6.0
+  --------------------
+
+* All CppUnit macros now begin with "CPPUNIT_".  
+
+  Macros CU_TEST_SUITE, CU_TEST, CU_TEST_SUITE_END, CU_TEST_SUB_SUITE,
+  and CU_TEST_SUITE_REGISTRATION are renamed but are otherwise unchanged;
+  they take the same arguments, and have the same effect.  The old-style
+  macros can be used if your sources #define CPPUNIT_ENABLE_CU_TEST_MACROS
+  to 1 before including any CppUnit headers.
+
+  Macros assert, assertEqual, and assertDoublesEqual, have been replaced
+  by CPPUNIT_ASSERT, CPPUNIT_ASSERT_EQUAL, and CPPUNIT_ASSERT_DOUBLES_EQUAL,
+  respectively.  Macro assertLongsEqual is replaced by CPPUNIT_ASSERT_EQUAL.
+  The old assert macros can be used if your sources #define
+  CPPUNIT_ENABLE_NAKED_ASSERT to 1 before including any CppUnit headers.
+
+  The old macro names are deprecated and will vanish in a future version
+  of CppUnit.
+
+
+* Equality assertion CPPUNIT_ASSERT_EQUAL(expected,actual) can test
+  any type of expression.  The types of "expected" and "actual" must
+  be the same; use a cast if necessary.
+
+
+* Equality tested using CPPUNIT_ASSERT_EQUAL may be re-defined using
+  a traits class.  Ditto for the string representation used in the
+  diagnostic messages.
+
+
+* New assertion with arbitrary message: CPPUNIT_ASSERT_MESSAGE.
+
+
+* A test case obtained using class TestCaller may check that
+  a particular exception is thrown.
+
+
+* CppUnit has a test suite for itself!
+
+
+* VC++ integration for MFC TestRunner.
+
diff --git a/lib/cppunit-1.10.0/README b/lib/cppunit-1.10.0/README
new file mode 100644 (file)
index 0000000..a27c545
--- /dev/null
@@ -0,0 +1,19 @@
+               CppUnit --- The C++ Unit Test Library
+               -------------------------------------
+                   http://cppunit.sourceforge.net
+
+
+CppUnit is the C++ port of the famous JUnit framework for unit
+testing.
+
+For MSWindows installation notes, see INSTALL-WIN32.txt.
+For other systems -- including cygwin -- see INSTALL and INSTALL-unix.
+
+
+Bug reports are welcome.  Please use the SourceForge bug tracking
+system at http://sourceforge.net/projects/cppunit/.  Bugs that already
+appear in the file BUGS do not need to be reported.
+
+Email to the current maintainers may be sent to
+<cppunit-devel@lists.sourceforge.net>.
+
diff --git a/lib/cppunit-1.10.0/THANKS b/lib/cppunit-1.10.0/THANKS
new file mode 100644 (file)
index 0000000..7a44587
--- /dev/null
@@ -0,0 +1,21 @@
+Tim Jansen <timj@systembureau.com>
+Christian Leutloff <leutloff@debian.org>
+Steve M. Robbins <steven.robbins@videotron.ca>
+Patrick Berny <PPBerny@web.de>
+Patrick Hartling
+Peer Sommerlund
+Duane Murphy <duanem@users.sourceforge.net>
+Gigi Sayfan <gigi@morphink.com>
+Armin "bored" Michel <bored@sourceforge.net>
+Jeffrey Morgan <kuzman@zoominternet.net>
+'cuppa' project team (http://sourceforge.jp/projects/cuppa/)
+Phil Verghese <philv@users.sourceforge.net>
+Lavoie Philippe <lavoie@yukon.genie.uottawa.ca>
+Pavel Zabelin
+Marco Welti <Welti@GretagMacbeth.ch>
+Thomas Neidhart
+Hans Bühler <hans.buehler@topmail.de> (Dynamic Window library used by MFC UI)
+John Sisson
+Steven Mitter <smitter@iicm.tu-graz.ac.at>
+Stephan Stapel <stephan.stapel@web.de>
+Abdessattar Sassi <abdesassi@users.sourceforge.net> (hp-ux plug-in support)
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/TODO b/lib/cppunit-1.10.0/TODO
new file mode 100644 (file)
index 0000000..8776334
--- /dev/null
@@ -0,0 +1,44 @@
+* Bugs:
+Asserter::makeNotEqualMessage() strip the shortDescription of the additional message.
+
+* CppUnit:
+  - Extends CompilerOutputter to a generic text outputter that can use a format string
+    to display both the location of the failure and the message.
+  - STL concept checker.
+  - Memory leak tracking: setUp/tearDown should be leak safe if no failure occured.
+
+* UnitTest
+  - add tests for XmlOutputter::setStyleSheet (current assertion macro strip <?...> when
+    testing )
+  - add tests for TestRunner, TextUi::TestRunner, CompilerOutputter.
+  - add tests for test plug-in
+
+* VC++ TestRunner:
+  - Modify MfcUi::TestRunner to expose TestResult (which allow specific TestListener
+    for global initialization).
+  - Update MfcTestRunner to use TestPath to store test in the registry
+  - [DONE] Add "details" field to show detail of the selected failed test:
+    - suite and test name,
+    - failure message. If possible separate "was" and "expected" in the
+      forthcoming assertEquals() to make comparison easier,
+    - source file location. 
+    
+* Documentation:
+       CookBook:
+       - how to create simple test cases (with CppUnit namespace)
+         - test case using only CPPUINT_ASSERT
+         - test case using CPPUNIT_ASSERT_EQUAL
+         - advanced assertions with the CPPUNIT_ASSERT_MESSAGE
+       - Helper Macros for convenience
+       - Creating a suite
+       - Composing a suite from more suites (i.e. compose tests for n modules to
+         form a big test for the whole program)
+       - customizing output using an user defined TestListener
+         - how to write the TestListener (subclass of TestListener)
+         - how to hook it in
+       - how to use the GUI
+         - MSVC++ special stuff
+       - other custmization stuff I haven't understood yet
+
+       CppUnit: architecture overview.
+
diff --git a/lib/cppunit-1.10.0/aclocal.m4 b/lib/cppunit-1.10.0/aclocal.m4
new file mode 100644 (file)
index 0000000..fcf87b4
--- /dev/null
@@ -0,0 +1,7073 @@
+# generated automatically by aclocal 1.7.6 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*-
+
+# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+AC_PREREQ([2.52])
+
+# serial 6
+
+# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake.                            -*- Autoconf -*-
+
+# This macro actually does too much some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 10
+
+AC_PREREQ([2.54])
+
+# Autoconf 2.50 wants to disallow AM_ names.  We explicitly allow
+# the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG(AMTAR, tar)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                  [_AM_DEPENDENCIES(CC)],
+                  [define([AC_PROG_CC],
+                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                  [_AM_DEPENDENCIES(CXX)],
+                  [define([AC_PROG_CXX],
+                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $1 | $1:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright 2002  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+        [AM_AUTOMAKE_VERSION([1.7.6])])
+
+# Helper functions for option handling.                    -*- Autoconf -*-
+
+# Copyright 2001, 2002  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+#
+# Check to make sure that the build environment is sane.
+#
+
+# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+#  -*- Autoconf -*-
+
+
+# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# AM_AUX_DIR_EXPAND
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+# Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])
+
+AC_DEFUN([AM_AUX_DIR_EXPAND], [
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# AM_PROG_INSTALL_STRIP
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+#                                                          -*- Autoconf -*-
+# Copyright (C) 2003  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 1
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# serial 5                                             -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      : > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking Speeds up one-time builds
+  --enable-dependency-tracking  Do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])
+])
+
+# Generate code to set up dependency tracking.   -*- Autoconf -*-
+
+# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+#serial 2
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`AS_DIRNAME("$mf")`
+  else
+    continue
+  fi
+  grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
+  # Extract the definition of DEP_FILES from the Makefile without
+  # running `make'.
+  DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n -e '/^U = / s///p' < "$mf"`
+  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
+  # We invoke sed twice because it is the simplest approach to
+  # changing $(DEPDIR) to its actual value in the expansion.
+  for file in `sed -n -e '
+    /^DEP_FILES = .*\\\\$/ {
+      s/^DEP_FILES = //
+      :loop
+       s/\\\\$//
+       p
+       n
+       /\\\\$/ b loop
+      p
+    }
+    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`AS_DIRNAME(["$file"])`
+    AS_MKDIR_P([$dirpart/$fdir])
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Check to see how 'make' treats includes.     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# AM_CONDITIONAL                                              -*- Autoconf -*-
+
+# Copyright 1997, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 5
+
+AC_PREREQ(2.52)
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+        [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.])
+fi])])
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+# serial 47 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+         [],
+         [m4_define([AC_PROVIDE_IFELSE],
+                [m4_ifdef([AC_PROVIDE_$1],
+                          [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+  AC_PROVIDE_IFELSE([AC_PROG_CXX],
+    [AC_LIBTOOL_CXX],
+    [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+  ])])
+dnl And a similar setup for Fortran 77 support
+  AC_PROVIDE_IFELSE([AC_PROG_F77],
+    [AC_LIBTOOL_F77],
+    [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+  AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+    [AC_LIBTOOL_GCJ],
+    [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+      [AC_LIBTOOL_GCJ],
+      [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+       [AC_LIBTOOL_GCJ],
+      [ifdef([AC_PROG_GCJ],
+            [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+       ifdef([A][M_PROG_GCJ],
+            [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+       ifdef([LT_AC_PROG_GCJ],
+            [define([LT_AC_PROG_GCJ],
+               defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+# Same as above, but do not quote variable references.
+[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    ;;
+  *)
+    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    AC_PATH_MAGIC
+  fi
+  ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+    [AC_HELP_STRING([--disable-libtool-lock],
+       [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+    [AC_HELP_STRING([--with-pic],
+       [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [pic_mode="$withval"],
+    [pic_mode=default])
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_AC_SYS_COMPILER
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+            [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+        [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X[$]1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+[$]*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    IFS="$lt_save_ifs"
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+        test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+        echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+        test "X$echo_testing_string" = "X$echo_test_string"; then
+       # Cool, printf works
+       :
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+          test "X$echo_testing_string" = 'X\t' &&
+          echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+          test "X$echo_testing_string" = "X$echo_test_string"; then
+       CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+       export CONFIG_SHELL
+       SHELL="$CONFIG_SHELL"
+       export SHELL
+       echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+          test "X$echo_testing_string" = 'X\t' &&
+          echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+          test "X$echo_testing_string" = "X$echo_test_string"; then
+       echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      else
+       # maybe with a smaller string...
+       prev=:
+
+       for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+         if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+         then
+           break
+         fi
+         prev="$cmd"
+       done
+
+       if test "$prev" != 'sed 50q "[$]0"'; then
+         echo_test_string=`eval $prev`
+         export echo_test_string
+         exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+       else
+         # Oops.  We lost completely, so just stick with echo.
+         echo=echo
+       fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+    [AC_HELP_STRING([--disable-libtool-lock],
+       [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *ELF-32*)
+      HPUX_IA64_MODE="32"
+      ;;
+    *ELF-64*)
+      HPUX_IA64_MODE="64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+   if test "$lt_cv_prog_gnu_ld" = yes; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -melf32bsmip"
+      ;;
+    *N32*)
+      LD="${LD-ld} -melf32bmipn32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -melf64bmip"
+      ;;
+    esac
+   else
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+   fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case "`/usr/bin/file conftest.o`" in
+    *32-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_i386"
+          ;;
+        ppc64-*linux*|powerpc64-*linux*)
+          LD="${LD-ld} -m elf32ppclinux"
+          ;;
+        s390x-*linux*)
+          LD="${LD-ld} -m elf_s390"
+          ;;
+        sparc64-*linux*)
+          LD="${LD-ld} -m elf32_sparc"
+          ;;
+      esac
+      ;;
+    *64-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          LD="${LD-ld} -m elf64_s390"
+          ;;
+        sparc*-*linux*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+  ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#              [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+  ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       $2=yes
+     fi
+   fi
+   $rm conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    ifelse([$5], , :, [$5])
+else
+    ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                          [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+     else
+       $2=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    ifelse([$4], , :, [$4])
+else
+    ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  testring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+ *)
+    # If test is not a shell built-in, we'll probably end up computing a
+    # maximum length that is only half of the actual maximum length, but
+    # we can't tell.
+    while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$testring" 2>/dev/null` \
+              = "XX$testring") >/dev/null 2>&1 &&
+           new_result=`expr "X$testring" : ".*" 2>&1` &&
+           lt_cv_sys_max_cmd_len=$new_result &&
+           test $i != 17 # 1/2 MB should be enough
+    do
+      i=`expr $i + 1`
+      testring=$testring$testring
+    done
+    testring=
+    # Add a significant safety factor because C++ compilers can tack on massive
+    # amounts of additional arguments before passing them to the linker.
+    # It appears as though 1/2 is a usable value.
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# --------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                           ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}]
+EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_unknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# -------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+               [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+   ;;
+    
+  *)
+    AC_CHECK_FUNC([shl_load],
+         [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+           [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+       [AC_CHECK_FUNC([dlopen],
+             [lt_cv_dlopen="dlopen"],
+         [AC_CHECK_LIB([dl], [dlopen],
+               [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+           [AC_CHECK_LIB([svld], [dlopen],
+                 [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+             [AC_CHECK_LIB([dld], [dld_link],
+                   [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+             ])
+           ])
+         ])
+       ])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+         lt_cv_dlopen_self, [dnl
+         _LT_AC_TRY_DLOPEN_SELF(
+           lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+           lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+         lt_cv_dlopen_self_static, [dnl
+         _LT_AC_TRY_DLOPEN_SELF(
+           lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+           lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   # According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+   # that will create temporary files in the current directory regardless of
+   # the output directory.  Thus, making CWD read-only will cause this test
+   # to fail, enabling locking or at least warning the user not to do parallel
+   # builds.
+   chmod -w .
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest* out/*
+   rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+   test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \
+   test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_AC_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         AC_MSG_RESULT([yes])
+       else
+  AC_MSG_RESULT([no])
+fi
+       ;;
+   *)
+  AC_MSG_RESULT([no])
+    ;;
+  esac  
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+       :
+      else
+       can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  # FIXME: Relying on posixy $() will cause problems for
+  #        cross-compilation, but unfortunately the echo tests do not
+  #        yet detect zsh echo's removal of \ escapes.
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then 
+  sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  case $LD in # libtool.m4 will add one of these switches to LD
+  *"-m elf_x86_64"*|*"-m elf64ppc"*|*"-m elf64_s390"*|*"-m elf64_sparc"*)
+    sys_lib_dlsearch_path_spec="/lib64 /usr/lib64"
+    sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64"
+    ;;
+  esac
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+    [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+        [include additional configurations @<:@automatic@:>@])],
+    [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    AC_MSG_WARN([output file `$ofile' does not exist])
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+    else
+      AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+    fi
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+    "") ;;
+    *)  AC_MSG_ERROR([invalid tag name: $tagname])
+       ;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      AC_MSG_ERROR([tag name \"$tagname\" already exists])
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      CXX)
+       if test -n "$CXX" && test "X$CXX" != "Xno"; then
+         AC_LIBTOOL_LANG_CXX_CONFIG
+       else
+         tagname=""
+       fi
+       ;;
+
+      F77)
+       if test -n "$F77" && test "X$F77" != "Xno"; then
+         AC_LIBTOOL_LANG_F77_CONFIG
+       else
+         tagname=""
+       fi
+       ;;
+
+      GCJ)
+       if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+         AC_LIBTOOL_LANG_GCJ_CONFIG
+       else
+         tagname=""
+       fi
+       ;;
+
+      RC)
+       AC_LIBTOOL_LANG_RC_CONFIG
+       ;;
+
+      *)
+       AC_MSG_ERROR([Unsupported tag name: $tagname])
+       ;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    AC_MSG_ERROR([unable to update list of available tagged configurations.])
+  fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 dll's
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+    [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+       [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_shared=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+#- set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+    [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+       [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_static=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_static=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+    [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_fast_install=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+   [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="ifelse([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the path to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+    [AC_HELP_STRING([--with-gnu-ld],
+       [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi4*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin* | mingw* | pw32*)
+  # win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='win32_libid'
+  ;;
+
+darwin* | rhapsody*)
+  # this will be overwritten by pass_all, but leave it in just in case
+  lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  case "$host_os" in
+  rhapsody* | darwin1.[[012]])
+    lt_cv_file_magic_test_file=`/System/Library/Frameworks/System.framework/System`
+    ;;
+  *) # Darwin 1.3 on
+    lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
+    ;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case "$host_cpu" in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+  irix5* | nonstopux*)
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
+    ;;
+  *)
+    case $LD in
+    *-32|*"-32 ") libmagic=32-bit;;
+    *-n32|*"-n32 ") libmagic=N32;;
+    *-64|*"-64 ") libmagic=64-bit;;
+    *) libmagic=never-match;;
+    esac
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1"
+    ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  case $host_cpu in
+  alpha* | hppa* | i*86 | ia64* | m68* | mips | mipsel | powerpc* | sparc* | s390* | sh* | x86_64)
+    lt_cv_deplibs_check_method=pass_all ;;
+  *)
+    # glibc up to 2.1.1 does not perform some relocations on ARM
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+openbsd*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
+  else
+    lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  # this will be overridden with pass_all, but let us keep it just in case
+  lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  lt_cv_file_magic_test_file=/lib/libc.so
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the path to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+    if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+      */dev/null* | *'Invalid file or object type'*)
+       lt_cv_path_NM="$tmp_nm -B"
+       break
+        ;;
+      *)
+       case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+       */dev/null*)
+         lt_cv_path_NM="$tmp_nm -p"
+         break
+         ;;
+       *)
+         lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+         continue # so that we can try to find one that supports BSD flags
+         ;;
+       esac
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+])# AC_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments.  Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called.  If
+# DIRECTORY is not provided, it is assumed to be `libltdl'.  LIBLTDL will
+# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with
+# '${top_srcdir}/' (note the single quotes!).  If your package is not
+# flat and you're not using automake, define top_builddir and
+# top_srcdir appropriately in the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  case $enable_ltdl_convenience in
+  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+  "") enable_ltdl_convenience=yes
+      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+  esac
+  LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+  LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  # For backwards non-gettext consistent compatibility...
+  INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments.  Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called.  If
+# DIRECTORY is not provided and an installed libltdl is not found, it is
+# assumed to be `libltdl'.  LIBLTDL will be prefixed with '${top_builddir}/'
+# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
+# quotes!).  If your package is not flat and you're not using automake,
+# define top_builddir and top_srcdir appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  AC_CHECK_LIB(ltdl, lt_dlinit,
+  [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+  [if test x"$enable_ltdl_install" = xno; then
+     AC_MSG_WARN([libltdl not installed, but installation disabled])
+   else
+     enable_ltdl_install=yes
+   fi
+  ])
+  if test x"$enable_ltdl_install" = x"yes"; then
+    ac_configure_args="$ac_configure_args --enable-ltdl-install"
+    LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+    LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  else
+    ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+    LIBLTDL="-lltdl"
+    LTDLINCL=
+  fi
+  # For backwards non-gettext consistent compatibility...
+  INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,CXX" | sed 's/^,//'`])
+])# _LT_AC_LANG_CXX
+
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,F77" | sed 's/^,//'`])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+    [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+      [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+        [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+          [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,GCJ" | sed 's/^,//'`])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# --------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=`echo "$tagnames,RC" | sed 's/^,//'`])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+#
+# Check for any special shared library compilation flags.
+#
+_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
+if test "$GCC" = no; then
+  case $host_os in
+  sco3.2v5*)
+    _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
+    ;;
+  esac
+fi
+if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
+  AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
+  if echo "$old_CC $old_CFLAGS " | grep "[[    ]]$]_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[[      ]]" >/dev/null; then :
+  else
+    AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
+    _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
+  fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
+  _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+  $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
+  [],
+  [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+# Report which librarie types wil actually be built
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+  darwin* | rhapsody*)
+  if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then 
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    case "$host_os" in
+    rhapsody* | darwin1.[[012]])
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+      ;;
+    esac
+    # FIXME: Relying on posixy $() will cause problems for
+    #        cross-compilation, but unfortunately the echo tests do not
+    #        yet detect zsh echo's removal of \ escapes.  Also zsh mangles
+    #         `"' quotes if we put them in here... so don't!
+               output_verbose_link_cmd='echo'
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
+    _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags'
+    # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+                 _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+                 _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    _LT_AC_TAGVAR(hardcode_direct, $1)=no
+    _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+    fi
+    ;;  
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+  unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+  lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+  unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+  AC_PROG_LD
+
+  # Check if GNU C++ uses GNU ld as the underlying linker, since the
+  # archiving commands below assume that GNU ld is being used.
+  if test "$with_gnu_ld" = yes; then
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+    #     investigate it a little bit more. (MM)
+    wlarc='${wl}'
+
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+       grep 'no-whole-archive' > /dev/null; then
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    with_gnu_ld=no
+    wlarc=
+
+    # A generic and very simple default shared library creation
+    # command for GNU C++ for the case where it uses the native
+    # linker, instead of GNU ld.  If possible, this setting should
+    # overridden to take advantage of the native linker features on
+    # the platform it is being used on.
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+  fi
+
+  # Commands to make compiler produce verbose output that lists
+  # what "hidden" libraries, object files and flags are used when
+  # linking a shared library.
+  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+  GXX=no
+  with_gnu_ld=no
+  wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+       for ld_flag in $LDFLAGS; do
+         case $ld_flag in
+         *-brtl*)
+           aix_use_runtimelinking=yes
+           break
+           ;;
+         esac
+       done
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    _LT_AC_TAGVAR(archive_cmds, $1)=''
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+    if test "$GXX" = yes; then
+      case $host_os in aix4.[012]|aix4.[012].*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+       collect2name=`${CC} -print-prog-name=collect2`
+       if test -f "$collect2name" && \
+          strings "$collect2name" | grep resolve_lib_name >/dev/null
+       then
+         # We have reworked collect2
+         _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+       else
+         # We have old collect2
+         _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+         _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+       fi
+      esac
+      shared_flag='-shared'
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+       shared_flag='-G'
+      else
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag='${wl}-G'
+       else
+         shared_flag='${wl}-bM:SRE'
+       fi
+      fi
+    fi
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      _LT_AC_SYS_LIBPATH_AIX
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+       _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+       # Determine the default libpath from the value encoded in an empty executable.
+       _LT_AC_SYS_LIBPATH_AIX
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+       # Warning - without using the other run time loading flags,
+       # -berok will link without error, but may produce a broken library.
+       _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+       _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+       # -bexpall does not export symbols beginning with underscore (_)
+       _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+       # Exported symbols can be pulled into shared objects from archives
+       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+       _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+       # This is similar to how AIX traditionally builds it's shared libraries.
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+  chorus*)
+    case $cc_basename in
+      *)
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+    esac
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+    # as there is no search path for DLLs.
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+    _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+    _LT_AC_TAGVAR(always_export_symbols, $1)=no
+    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+      # If the export-symbols file already is a .def file (1st line
+      # is EXPORTS), use it as is; otherwise, prepend...
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+       cp $export_symbols $output_objdir/$soname.def;
+      else
+       echo EXPORTS > $output_objdir/$soname.def;
+       cat $export_symbols >> $output_objdir/$soname.def;
+      fi~
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+  ;;
+
+  darwin* | rhapsody*)
+   if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then 
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    case "$host_os" in
+    rhapsody* | darwin1.[[012]])
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+      ;;
+    esac
+       lt_int_apple_cc_single_mod=no
+       output_verbose_link_cmd='echo'
+       if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+         lt_int_apple_cc_single_mod=yes
+       fi
+       if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+       else
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      fi
+      _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags'
+
+    # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+        _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      else
+        _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      fi
+        _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    _LT_AC_TAGVAR(hardcode_direct, $1)=no
+    _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+   fi 
+    ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++)
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+      ghcx)
+       # Green Hills C++ Compiler
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+    esac
+    ;;
+  freebsd[12]*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  freebsd-elf*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    ;;
+  freebsd*)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+                               # but as the default
+                               # location of the library.
+
+    case $cc_basename in
+    CC)
+      # FIXME: insert proper C++ library support
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    aCC)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      #
+      # There doesn't appear to be a way to prevent this compiler from
+      # explicitly linking system object files so we need to strip them
+      # from the output so that they don't get included in the library
+      # dependencies.
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | egrep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+        # FIXME: insert proper C++ library support
+        _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      case "$host_cpu" in
+      hppa*64*)
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+        ;;
+      ia64*)
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+        ;;
+      *)
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+       _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        ;;
+      esac
+    fi
+    case "$host_cpu" in
+    hppa*64*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+    ia64*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+                                             # but as the default
+                                             # location of the library.
+      ;;
+    *)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+                                             # but as the default
+                                             # location of the library.
+      ;;
+    esac
+
+    case $cc_basename in
+      CC)
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+      aCC)
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+         ;;
+       *)
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+         ;;
+       esac
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+       ;;
+      *)
+       if test "$GXX" = yes; then
+         if test $with_gnu_ld = no; then
+           case "$host_cpu" in
+           ia64*|hppa*64*)
+             _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+             ;;
+           *)
+             _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+             ;;
+           esac
+         fi
+       else
+         # FIXME: insert proper C++ library support
+         _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       fi
+       ;;
+    esac
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC)
+       # SGI C++
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+       # Archives containing C++ object files must be created using
+       # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+       # necessary to make sure instantiated templates are included
+       # in the archive.
+       _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+       ;;
+      *)
+       if test "$GXX" = yes; then
+         if test "$with_gnu_ld" = no; then
+           _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+         else
+           _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+         fi
+       fi
+       _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+       ;;
+    esac
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+    ;;
+  linux*)
+    case $cc_basename in
+      KCC)
+       # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+       # KCC will only create a shared library if the output file
+       # ends with ".so" (or ".sl" for HP-UX), so rename the library
+       # to its proper name (with version) after linking.
+       _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+       _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+       # Archives containing C++ object files must be created using
+       # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+       _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+       ;;
+      icpc)
+       # Intel C++
+       with_gnu_ld=yes
+       _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+       _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+       ;;
+      cxx)
+       # Compaq C++
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+       runpath_var=LD_RUN_PATH
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+       ;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx)
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+    esac
+    ;;
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    fi
+    # Workaround some broken pre-1.5 toolchains
+    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+    ;;
+  osf3*)
+    case $cc_basename in
+      KCC)
+       # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+       # KCC will only create a shared library if the output file
+       # ends with ".so" (or ".sl" for HP-UX), so rename the library
+       # to its proper name (with version) after linking.
+       _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+       # Archives containing C++ object files must be created using
+       # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+       _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+       ;;
+      RCC)
+       # Rational C++ 2.4.1
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+      cxx)
+       _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+       ;;
+      *)
+       if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+         _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+         _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+         # Commands to make compiler produce verbose output that lists
+         # what "hidden" libraries, object files and flags are used when
+         # linking a shared library.
+         output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+       else
+         # FIXME: insert proper C++ library support
+         _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       fi
+       ;;
+    esac
+    ;;
+  osf4* | osf5*)
+    case $cc_basename in
+      KCC)
+       # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+       # KCC will only create a shared library if the output file
+       # ends with ".so" (or ".sl" for HP-UX), so rename the library
+       # to its proper name (with version) after linking.
+       _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+       # Archives containing C++ object files must be created using
+       # the KAI C++ compiler.
+       _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+       ;;
+      RCC)
+       # Rational C++ 2.4.1
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+      cxx)
+       _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+         echo "-hidden">> $lib.exp~
+         $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
+         $rm $lib.exp'
+
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+       ;;
+      *)
+       if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+         _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+         _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+         # Commands to make compiler produce verbose output that lists
+         # what "hidden" libraries, object files and flags are used when
+         # linking a shared library.
+         output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+       else
+         # FIXME: insert proper C++ library support
+         _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       fi
+       ;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  sco*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    case $cc_basename in
+      CC)
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+    esac
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC)
+       # Sun C++ 4.x
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+      lcc)
+       # Lucid
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC)
+       # Sun C++ 4.2, 5.x and Centerline C++
+       _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+       $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+       case $host_os in
+         solaris2.[0-5] | solaris2.[0-5].*) ;;
+         *)
+           # The C++ compiler is used as linker so we must use $wl
+           # flag to pass the commands to the underlying system
+           # linker.
+           # Supported since Solaris 2.6 (maybe 2.5.1?)
+           _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+           ;;
+       esac
+       _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+       # Archives containing C++ object files must be created using
+       # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+       # necessary to make sure instantiated templates are included
+       # in the archive.
+       _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+       ;;
+      gcx)
+       # Green Hills C++ Compiler
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+       # The C++ compiler must be used to create the archive.
+       _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+       ;;
+      *)
+       # GNU C++ compiler with Solaris linker
+       if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+         _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+         if $CC --version | grep -v '^2\.7' > /dev/null; then
+           _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+           _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+         else
+           # g++ 2.7 appears to require `-G' NOT `-shared' on this
+           # platform.
+           _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+           _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+         fi
+
+         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+       fi
+       ;;
+    esac
+    ;;
+  sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    ;;
+  tandem*)
+    case $cc_basename in
+      NCC)
+       # NonStop-UX NCC 3.20
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       ;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+# ------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library.  It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+  for p in `eval $output_verbose_link_cmd`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" \
+         || test $p = "-R"; then
+        prev=$p
+        continue
+       else
+        prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+        case $p in
+        -L* | -R*)
+          # Internal compiler library paths should come after those
+          # provided the user.  The postdeps already come after the
+          # user supplied libs so there is no need to process them.
+          if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+            _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+          else
+            _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+          fi
+          ;;
+        # The "-l" case would never come before the object being
+        # linked, so don't bother handling this case.
+        esac
+       else
+        if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
+          _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+        else
+          _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+        fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+        pre_test_object_deps_done=yes
+        continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+        if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+          _LT_AC_TAGVAR(predep_objects, $1)="$p"
+        else
+          _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+        fi
+       else
+        if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+          _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+        else
+          _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
+        fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$rm -f confest.$objext
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix4*)
+  test "$enable_shared" = yes && enable_static=no
+  ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars.  Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi  
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS AS EGREP RANLIB LN_S LTCC NM SED SHELL \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    _LT_AC_TAGVAR(compiler, $1) \
+    _LT_AC_TAGVAR(CC, $1) \
+    _LT_AC_TAGVAR(LD, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+    _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+    _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+    _LT_AC_TAGVAR(old_archive_cmds, $1) \
+    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+    _LT_AC_TAGVAR(predep_objects, $1) \
+    _LT_AC_TAGVAR(postdep_objects, $1) \
+    _LT_AC_TAGVAR(predeps, $1) \
+    _LT_AC_TAGVAR(postdeps, $1) \
+    _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+    _LT_AC_TAGVAR(archive_cmds, $1) \
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+    _LT_AC_TAGVAR(postinstall_cmds, $1) \
+    _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+    _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+    _LT_AC_TAGVAR(no_undefined_flag, $1) \
+    _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+    _LT_AC_TAGVAR(hardcode_automatic, $1) \
+    _LT_AC_TAGVAR(module_cmds, $1) \
+    _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+    _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+    _LT_AC_TAGVAR(exclude_expsyms, $1) \
+    _LT_AC_TAGVAR(include_expsyms, $1); do
+
+    case $var in
+    _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+    _LT_AC_TAGVAR(archive_cmds, $1) | \
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+    _LT_AC_TAGVAR(module_cmds, $1) | \
+    _LT_AC_TAGVAR(module_expsym_cmds, $1) | \   
+    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+    _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\[$]0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+    ;;
+  esac
+
+ifelse([$1], [],
+  [cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  AC_MSG_NOTICE([creating $ofile])],
+  [cfgfile="$ofile"])
+
+  cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS=$lt_AS
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext='$shrext'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+])
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  test -f Makefile && make "$ltmain"
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+  AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris* | sysv5*)
+  symcode='[[BDT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGISTW]]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Write the raw and C identifiers.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[     ]]\($symcode$symcode*\)[[       ]][[    ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+      else
+       rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if grep ' nm_test_var$' "$nlist" >/dev/null; then
+       if grep ' nm_test_func$' "$nlist" >/dev/null; then
+         cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+         # Now generate the symbol file.
+         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+         cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+         $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+         cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+         # Now try linking the two files.
+         mv conftest.$ac_objext conftstm.$ac_objext
+         lt_save_LIBS="$LIBS"
+         lt_save_CFLAGS="$CFLAGS"
+         LIBS="conftstm.$ac_objext"
+         CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+         if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+           pipe_works=yes
+         fi
+         LIBS="$lt_save_LIBS"
+         CFLAGS="$lt_save_CFLAGS"
+       else
+         echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+       fi
+      else
+       echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | os2* | pw32*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       ;;
+      *)
+       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+       ;;
+      esac
+      ;;
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix4* | aix5*)
+       # All AIX code is PIC.
+       if test "$host_cpu" = ia64; then
+         # AIX 5 now supports IA64 processor
+         _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+       else
+         _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+       fi
+       ;;
+      chorus*)
+       case $cc_basename in
+       cxch68)
+         # Green Hills C++ Compiler
+         # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+         ;;
+       esac
+       ;;
+      dgux*)
+       case $cc_basename in
+         ec++)
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           ;;
+         ghcx)
+           # Green Hills C++ Compiler
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      freebsd*)
+       # FreeBSD uses GNU C++
+       ;;
+      hpux9* | hpux10* | hpux11*)
+       case $cc_basename in
+         CC)
+           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+           if test "$host_cpu" != ia64; then
+             _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+           fi
+           ;;
+         aCC)
+           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+           case "$host_cpu" in
+           hppa*64*|ia64*)
+             # +Z the default
+             ;;
+           *)
+             _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+             ;;
+           esac
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      irix5* | irix6* | nonstopux*)
+       case $cc_basename in
+         CC)
+           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           # CC pic flag -KPIC is the default.
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      linux*)
+       case $cc_basename in
+         KCC)
+           # KAI C++ Compiler
+           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+           ;;
+         icpc)
+           # Intel C++
+           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+           ;; 
+         cxx)
+           # Compaq C++
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+           _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      lynxos*)
+       ;;
+      m88k*)
+       ;;
+      mvs*)
+       case $cc_basename in
+         cxx)
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      netbsd*)
+       ;;
+      osf3* | osf4* | osf5*)
+       case $cc_basename in
+         KCC)
+           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+           ;;
+         RCC)
+           # Rational C++ 2.4.1
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         cxx)
+           # Digital/Compaq C++
+           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+           _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      psos*)
+       ;;
+      sco*)
+       case $cc_basename in
+         CC)
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      solaris*)
+       case $cc_basename in
+         CC)
+           # Sun C++ 4.2, 5.x and Centerline C++
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+           ;;
+         gcx)
+           # Green Hills C++ Compiler
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sunos4*)
+       case $cc_basename in
+         CC)
+           # Sun C++ 4.x
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           ;;
+         lcc)
+           # Lucid
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      tandem*)
+       case $cc_basename in
+         NCC)
+           # NonStop-UX NCC 3.20
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      unixware*)
+       ;;
+      vxworks*)
+       ;;
+      *)
+       _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+       ;;
+    esac
+  fi
+],
+[
+  if test "$GCC" = yes; then
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+       ;;
+      esac
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    newsos6)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    linux*)
+      case $CC in
+      icc|ecc)
+       _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      ccc)
+        _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
+      ;;
+
+    solaris*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sunos4*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    uts4*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+    _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+    [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix4* | aix5*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+    else
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+],[
+  runpath_var=
+  _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+  _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_AC_TAGVAR(archive_cmds, $1)=
+  _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+  _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+  _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+  _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+  _LT_AC_TAGVAR(module_cmds, $1)=
+  _LT_AC_TAGVAR(module_expsym_cmds, $1)=  
+  _LT_AC_TAGVAR(always_export_symbols, $1)=no
+  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_AC_TAGVAR(include_expsyms, $1)=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(always_export_symbols, $1)=no
+      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+       cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sunos4*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then
+      runpath_var=LD_RUN_PATH
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+      fi
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+       # On IA64, the linker does run time linking by default, so we don't
+       # have to do anything special.
+       aix_use_runtimelinking=no
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+         _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+       else
+         _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+       fi
+       aix_use_runtimelinking=no
+
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+       esac
+
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      _LT_AC_TAGVAR(archive_cmds, $1)=''
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+      if test "$GCC" = yes; then
+       case $host_os in aix4.[012]|aix4.[012].*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" && \
+          strings "$collect2name" | grep resolve_lib_name >/dev/null
+         then
+         # We have reworked collect2
+         _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+         else
+         # We have old collect2
+         _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+         _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+         fi
+       esac
+       shared_flag='-shared'
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+       if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+       fi
+       fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       _LT_AC_SYS_LIBPATH_AIX
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+       if test "$host_cpu" = ia64; then
+         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+         _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+         _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an empty executable.
+        _LT_AC_SYS_LIBPATH_AIX
+        _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+         _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+         # -bexpall does not export symbols beginning with underscore (_)
+         _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+         # Exported symbols can be pulled into shared objects from archives
+         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+         _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+         # This is similar to how AIX traditionally builds it's shared libraries.
+         _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      # see comment about different semantics on the GNU ld section
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    bsdi4*)
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+      # FIXME: Should let the user specify the lib program.
+      _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    darwin* | rhapsody*)
+    if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then 
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      case "$host_os" in
+      rhapsody* | darwin1.[[012]])
+       _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
+       ;;
+      *) # Darwin 1.3 on
+       test -z ${LD_TWOLEVEL_NAMESPACE} && _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+       ;;
+      esac
+      # FIXME: Relying on posixy $() will cause problems for
+      #        cross-compilation, but unfortunately the echo tests do not
+      #        yet detect zsh echo's removal of \ escapes.  Also zsh mangles
+      #               `"' quotes if we put them in here... so don't!
+       lt_int_apple_cc_single_mod=no
+       output_verbose_link_cmd='echo'
+       if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+         lt_int_apple_cc_single_mod=yes
+       fi
+       if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+       else
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      fi
+      _LT_AC_TAGVAR(module_cmds, $1)='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+        if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        else
+          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        fi
+          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+    fi  
+      ;;
+
+    dgux*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    freebsd1*)
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+         ;;
+       *)
+         _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       case "$host_cpu" in
+       hppa*64*)
+         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+         _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+         _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+         _LT_AC_TAGVAR(hardcode_direct, $1)=no
+         _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+         ;;
+       ia64*)
+         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+         _LT_AC_TAGVAR(hardcode_direct, $1)=no
+         _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+         ;;
+       *)
+         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+         _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+         _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+         _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+         ;;
+       esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    openbsd*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+       _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      else
+       case $host_os in
+        openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+          _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+          _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+          ;;
+        *)
+          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+          _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+          ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+       _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+       $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    sco3.2v5*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+      if test "$GCC" = yes; then
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+         $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+       $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+      esac
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+         _LT_AC_TAGVAR(hardcode_direct, $1)=no
+        ;;
+       motorola)
+         _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[[78]]* | unixware7*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv5*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+  fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $_LT_AC_TAGVAR(archive_cmds, $1) in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+  
+      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+        _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+        if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+        then
+         _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+        else
+         _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+        fi
+        _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+      ;;
+    esac
+  fi
+  ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL],   [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED],  [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC],  [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD],        [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM],        [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+  test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+  AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+AC_DEFUN([LT_AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && break
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+SED=$lt_cv_path_SED
+])
+AC_MSG_RESULT([$SED])
+])
+
+
+# AC_LTDL_DLLIB
+# -------------
+AC_DEFUN([AC_LTDL_DLLIB],
+[LIBADD_DL=
+AC_SUBST(LIBADD_DL)
+
+AC_CHECK_FUNC([shl_load],
+      [AC_DEFINE([HAVE_SHL_LOAD], [1],
+                [Define if you have the shl_load function.])],
+  [AC_CHECK_LIB([dld], [shl_load],
+       [AC_DEFINE([HAVE_SHL_LOAD], [1],
+                  [Define if you have the shl_load function.])
+       LIBADD_DL="$LIBADD_DL -ldld"],
+    [AC_CHECK_LIB([dl], [dlopen],
+         [AC_DEFINE([HAVE_LIBDL], [1],
+                    [Define if you have the libdl library or equivalent.])
+         LIBADD_DL="-ldl"],
+      [AC_TRY_LINK([#if HAVE_DLFCN_H
+#  include <dlfcn.h>
+#endif
+      ],
+       [dlopen(0, 0);],
+           [AC_DEFINE([HAVE_LIBDL], [1],
+                      [Define if you have the libdl library or equivalent.])],
+       [AC_CHECK_LIB([svld], [dlopen],
+             [AC_DEFINE([HAVE_LIBDL], [1],
+                        [Define if you have the libdl library or equivalent.])
+             LIBADD_DL="-lsvld"],
+         [AC_CHECK_LIB([dld], [dld_link],
+               [AC_DEFINE([HAVE_DLD], [1],
+                          [Define if you have the GNU dld library.])
+               LIBADD_DL="$LIBADD_DL -ldld"
+          ])
+        ])
+      ])
+    ])
+  ])
+])
+
+if test "x$ac_cv_func_dlopen" = xyes || test "x$ac_cv_lib_dl_dlopen" = xyes; then
+ LIBS_SAVE="$LIBS"
+ LIBS="$LIBS $LIBADD_DL"
+ AC_CHECK_FUNCS(dlerror)
+ LIBS="$LIBS_SAVE"
+fi
+])# AC_LTDL_DLLIB
+
+AC_DEFUN(BB_ENABLE_DOXYGEN,
+[
+AC_ARG_ENABLE(doxygen, [  --enable-doxygen        enable documentation generation with doxygen (auto)])
+AC_ARG_ENABLE(dot, [  --enable-dot            use 'dot' to generate graphs in doxygen (auto)])              
+AC_ARG_ENABLE(html-docs, [  --enable-html-docs      enable HTML generation with doxygen (yes)], [], [ enable_html_docs=yes])              
+AC_ARG_ENABLE(latex-docs, [  --enable-latex-docs     enable LaTeX documentation generation with doxygen (no)], [], [ enable_latex_docs=no])              
+if test "x$enable_doxygen" = xno; then
+        enable_doc=no
+else 
+        AC_PATH_PROG(DOXYGEN, doxygen, , $PATH)
+        if test "x$DOXYGEN" = x; then
+                if test "x$enable_doxygen" = xyes; then
+                        AC_MSG_ERROR([could not find doxygen])
+                fi
+                enable_doc=no
+        else
+                enable_doc=yes
+                AC_PATH_PROG(DOT, dot, , $PATH)
+        fi
+fi
+AM_CONDITIONAL(DOC, test x$enable_doc = xyes)
+
+if test x$DOT = x; then
+        if test "x$enable_dot" = xyes; then
+                AC_MSG_ERROR([could not find dot])
+        fi
+        enable_dot=no
+else
+        enable_dot=yes
+fi
+AC_SUBST(enable_dot)
+AC_SUBST(enable_html_docs)
+AC_SUBST(enable_latex_docs)
+])
+
+dnl @synopsis AC_CXX_RTTI
+dnl
+dnl If the compiler supports Run-Time Type Identification (typeinfo
+dnl header and typeid keyword), define HAVE_RTTI.
+dnl
+dnl @version $Id: aclocal.m4,v 1.1 2004/08/24 00:21:08 robertc Exp $
+dnl @author Luc Maisonobe
+dnl
+AC_DEFUN([AC_CXX_RTTI],
+[AC_CACHE_CHECK(whether the compiler supports Run-Time Type Identification,
+ac_cv_cxx_rtti,
+[AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <typeinfo>
+class Base { public :
+             Base () {}
+             virtual int f () { return 0; }
+           };
+class Derived : public Base { public :
+                              Derived () {}
+                              virtual int f () { return 1; }
+                            };
+],[Derived d;
+Base *ptr = &d;
+return typeid (*ptr) == typeid (Derived);
+],
+ ac_cv_cxx_rtti=yes, ac_cv_cxx_rtti=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_rtti" = yes; then
+  AC_DEFINE(HAVE_RTTI,1,
+            [define if the compiler supports Run-Time Type Identification])
+fi
+])
+
+dnl @synopsis AX_CXX_GCC_ABI_DEMANGLE
+dnl
+dnl If the compiler supports GCC C++ ABI name demangling (has header cxxabi.h 
+dnl and abi::__cxa_demangle() function), define HAVE_GCC_ABI_DEMANGLE
+dnl
+dnl Adapted from AC_CXX_RTTI by Luc Maisonobe
+dnl
+dnl @version $Id: aclocal.m4,v 1.1 2004/08/24 00:21:08 robertc Exp $
+dnl @author Neil Ferguson <nferguso@eso.org>
+dnl
+AC_DEFUN([AX_CXX_GCC_ABI_DEMANGLE],
+[AC_CACHE_CHECK(whether the compiler supports GCC C++ ABI name demangling, 
+ac_cv_cxx_gcc_abi_demangle,
+[AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <typeinfo>
+#include <cxxabi.h>
+#include <string>
+
+template<typename TYPE>
+class A {};
+],[A<int> instance;
+int status = 0;
+char* c_name = 0;
+
+c_name = abi::__cxa_demangle(typeid(instance).name(), 0, 0, &status);
+        
+std::string name(c_name);
+free(c_name);
+
+return name == "A<int>";
+],
+ ac_cv_cxx_gcc_abi_demangle=yes, ac_cv_cxx_gcc_abi_demangle=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_gcc_abi_demangle" = yes; then
+  AC_DEFINE(HAVE_GCC_ABI_DEMANGLE,1,
+            [define if the compiler supports GCC C++ ABI name demangling]) 
+fi
+])
+
+dnl @synopsis AC_CXX_STRING_COMPARE_STRING_FIRST
+dnl
+dnl If the standard library string::compare() function takes the
+dnl string as its first argument, define FUNC_STRING_COMPARE_STRING_FIRST to 1.
+dnl
+dnl @author Steven Robbins
+dnl
+AC_DEFUN([AC_CXX_STRING_COMPARE_STRING_FIRST],
+[AC_CACHE_CHECK(whether std::string::compare takes a string in argument 1,
+ac_cv_cxx_string_compare_string_first,
+[AC_REQUIRE([AC_CXX_NAMESPACES])
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <string>
+#ifdef HAVE_NAMESPACES
+using namespace std;
+#endif],[string x("hi"); string y("h");
+return x.compare(y,0,1) == 0;],
+ ac_cv_cxx_string_compare_string_first=yes, 
+ ac_cv_cxx_string_compare_string_first=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_string_compare_string_first" = yes; then
+  AC_DEFINE(FUNC_STRING_COMPARE_STRING_FIRST,1,
+            [define if library uses std::string::compare(string,pos,n)])
+fi
+])
+
+dnl @synopsis AC_CXX_NAMESPACES
+dnl
+dnl If the compiler can prevent names clashes using namespaces, define
+dnl HAVE_NAMESPACES.
+dnl
+dnl @version $Id: aclocal.m4,v 1.1 2004/08/24 00:21:08 robertc Exp $
+dnl @author Luc Maisonobe
+dnl
+AC_DEFUN([AC_CXX_NAMESPACES],
+[AC_CACHE_CHECK(whether the compiler implements namespaces,
+ac_cv_cxx_namespaces,
+[AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([namespace Outer { namespace Inner { int i = 0; }}],
+                [using namespace Outer::Inner; return i;],
+ ac_cv_cxx_namespaces=yes, ac_cv_cxx_namespaces=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_namespaces" = yes; then
+  AC_DEFINE(HAVE_NAMESPACES,1,[define to 1 if the compiler implements namespaces])
+fi
+])
+
+dnl @synopsis AC_CXX_HAVE_SSTREAM
+dnl
+dnl If the C++ library has a working stringstream, define HAVE_SSTREAM.
+dnl
+dnl @author Ben Stanley
+dnl @version $Id: aclocal.m4,v 1.1 2004/08/24 00:21:08 robertc Exp $
+dnl
+AC_DEFUN([AC_CXX_HAVE_SSTREAM],
+[AC_CACHE_CHECK(whether the compiler has stringstream,
+ac_cv_cxx_have_sstream,
+[AC_REQUIRE([AC_CXX_NAMESPACES])
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <sstream>
+#ifdef HAVE_NAMESPACES
+using namespace std;
+#endif],[stringstream message; message << "Hello"; return 0;],
+ ac_cv_cxx_have_sstream=yes, ac_cv_cxx_have_sstream=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_have_sstream" = yes; then
+  AC_DEFINE(HAVE_SSTREAM,1,[define if the compiler has stringstream])
+fi
+])
+
+dnl @synopsis AC_CXX_HAVE_STRSTREAM
+dnl
+dnl If the C++ library has a working strstream, define HAVE_CLASS_STRSTREAM.
+dnl
+dnl Adapted from ac_cxx_have_sstream.m4 by Steve Robbins
+dnl
+AC_DEFUN([AC_CXX_HAVE_STRSTREAM],
+[AC_CACHE_CHECK(whether the library defines class strstream,
+ac_cv_cxx_have_class_strstream,
+[AC_REQUIRE([AC_CXX_NAMESPACES])
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_CHECK_HEADERS(strstream)
+ AC_TRY_COMPILE([
+#if HAVE_STRSTREAM
+#  include <strstream>
+#else
+#  include <strstream.h>
+#endif
+#ifdef HAVE_NAMESPACES
+using namespace std;
+#endif],[ostrstream message; message << "Hello"; return 0;],
+ ac_cv_cxx_have_class_strstream=yes, ac_cv_cxx_have_class_strstream=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_have_class_strstream" = yes; then
+  AC_DEFINE(HAVE_CLASS_STRSTREAM,1,[define if the library defines strstream])
+fi
+])
+
+dnl @synopsis AC_CREATE_PREFIX_CONFIG_H [(OUTPUT-HEADER [,PREFIX [,ORIG-HEADER]])]
+dnl
+dnl this is a new variant from ac_prefix_config_
+dnl   this one will use a lowercase-prefix if
+dnl   the config-define was starting with a lowercase-char, e.g. 
+dnl   #define const or #define restrict or #define off_t
+dnl   (and this one can live in another directory, e.g. testpkg/config.h
+dnl    therefore I decided to move the output-header to be the first arg)
+dnl
+dnl takes the usual config.h generated header file; looks for each of
+dnl the generated "#define SOMEDEF" lines, and prefixes the defined name
+dnl (ie. makes it "#define PREFIX_SOMEDEF". The result is written to
+dnl the output config.header file. The PREFIX is converted to uppercase 
+dnl for the conversions. 
+dnl
+dnl default OUTPUT-HEADER = $PACKAGE-config.h
+dnl default PREFIX = $PACKAGE
+dnl default ORIG-HEADER, derived from OUTPUT-HEADER
+dnl         if OUTPUT-HEADER has a "/", use the basename
+dnl         if OUTPUT-HEADER has a "-", use the section after it.
+dnl         otherwise, just config.h
+dnl
+dnl In most cases, the configure.in will contain a line saying
+dnl         AC_CONFIG_HEADER(config.h) 
+dnl somewhere *before* AC_OUTPUT and a simple line saying
+dnl        AC_PREFIX_CONFIG_HEADER
+dnl somewhere *after* AC_OUTPUT.
+dnl
+dnl example:
+dnl   AC_INIT(config.h.in)        # config.h.in as created by "autoheader"
+dnl   AM_INIT_AUTOMAKE(testpkg, 0.1.1)   # "#undef VERSION" and "PACKAGE"
+dnl   AM_CONFIG_HEADER(config.h)         #                in config.h.in
+dnl   AC_MEMORY_H                        # "#undef NEED_MEMORY_H"
+dnl   AC_C_CONST_H                       # "#undef const"
+dnl   AC_OUTPUT(Makefile)                # creates the "config.h" now
+dnl   AC_CREATE_PREFIX_CONFIG_H          # creates "testpkg-config.h"
+dnl         and the resulting "testpkg-config.h" contains lines like
+dnl   #ifndef TESTPKG_VERSION 
+dnl   #define TESTPKG_VERSION "0.1.1"
+dnl   #endif
+dnl   #ifndef TESTPKG_NEED_MEMORY_H 
+dnl   #define TESTPKG_NEED_MEMORY_H 1
+dnl   #endif
+dnl   #ifndef _testpkg_const 
+dnl   #define _testpkg_const const
+dnl   #endif
+dnl
+dnl   and this "testpkg-config.h" can be installed along with other
+dnl   header-files, which is most convenient when creating a shared
+dnl   library (that has some headers) where some functionality is
+dnl   dependent on the OS-features detected at compile-time. No
+dnl   need to invent some "testpkg-confdefs.h.in" manually. :-)
+dnl
+dnl @version $Id: aclocal.m4,v 1.1 2004/08/24 00:21:08 robertc Exp $
+dnl @author Guido Draheim <guidod@gmx.de>
+
+AC_DEFUN([AC_CREATE_PREFIX_CONFIG_H],
+[changequote({, })dnl 
+ac_prefix_conf_OUT=`echo ifelse($1, , $PACKAGE-config.h, $1)`
+ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e 'y:abcdefghijklmnopqrstuvwxyz./,-:ABCDEFGHIJKLMNOPQRSTUVWXYZ____:'`
+ac_prefix_conf_PKG=`echo ifelse($2, , $PACKAGE, $2)`
+ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:'`
+ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e 'y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:'  -e '/^[0-9]/s/^/_/'`
+ac_prefix_conf_INP=`echo ifelse($3, , _, $3)`
+if test "$ac_prefix_conf_INP" = "_"; then
+   case $ac_prefix_conf_OUT in
+      */*) ac_prefix_conf_INP=`basename $ac_prefix_conf_OUT` 
+      ;;
+      *-*) ac_prefix_conf_INP=`echo $ac_prefix_conf_OUT | sed -e 's/[a-zA-Z0-9_]*-//'`
+      ;;
+      *) ac_prefix_conf_INP=config.h
+      ;;
+   esac
+fi
+changequote([, ])dnl
+if test -z "$ac_prefix_conf_PKG" ; then
+   AC_MSG_ERROR([no prefix for _PREFIX_PKG_CONFIG_H])
+else
+  AC_MSG_RESULT(creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines)
+  if test -f $ac_prefix_conf_INP ; then
+    AS_DIRNAME([/* automatically generated */], $ac_prefix_conf_OUT)
+changequote({, })dnl 
+    echo '#ifndef '$ac_prefix_conf_DEF >$ac_prefix_conf_OUT
+    echo '#define '$ac_prefix_conf_DEF' 1' >>$ac_prefix_conf_OUT
+    echo ' ' >>$ac_prefix_conf_OUT
+    echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$ac_prefix_conf_OUT
+
+    echo 's/#undef  *\([A-Z_]\)/#undef '$ac_prefix_conf_UPP'_\1/' >conftest.sed
+    echo 's/#undef  *\([a-z]\)/#undef '$ac_prefix_conf_LOW'_\1/' >>conftest.sed
+    echo 's/#define  *\([A-Z_][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_UPP"_\\1 \\" >>conftest.sed
+    echo '#define '$ac_prefix_conf_UPP"_\\1 \\2 \\" >>conftest.sed
+    echo '#endif/' >>conftest.sed
+    echo 's/#define  *\([a-z][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_LOW"_\\1 \\" >>conftest.sed
+    echo '#define '$ac_prefix_conf_LOW"_\\1 \\2 \\" >>conftest.sed
+    echo '#endif/' >>conftest.sed
+    sed -f conftest.sed $ac_prefix_conf_INP >>$ac_prefix_conf_OUT
+    echo ' ' >>$ac_prefix_conf_OUT
+    echo '/*' $ac_prefix_conf_DEF '*/' >>$ac_prefix_conf_OUT
+    echo '#endif' >>$ac_prefix_conf_OUT
+changequote([, ])dnl
+  else
+    AC_MSG_ERROR([input file $ac_prefix_conf_IN does not exist, dnl
+    skip generating $ac_prefix_conf_OUT])
+  fi
+  rm -f conftest.* 
+fi])
+           
+
diff --git a/lib/cppunit-1.10.0/config/ac_create_prefix_config_h.m4 b/lib/cppunit-1.10.0/config/ac_create_prefix_config_h.m4
new file mode 100644 (file)
index 0000000..cfc70b1
--- /dev/null
@@ -0,0 +1,107 @@
+dnl @synopsis AC_CREATE_PREFIX_CONFIG_H [(OUTPUT-HEADER [,PREFIX [,ORIG-HEADER]])]
+dnl
+dnl this is a new variant from ac_prefix_config_
+dnl   this one will use a lowercase-prefix if
+dnl   the config-define was starting with a lowercase-char, e.g. 
+dnl   #define const or #define restrict or #define off_t
+dnl   (and this one can live in another directory, e.g. testpkg/config.h
+dnl    therefore I decided to move the output-header to be the first arg)
+dnl
+dnl takes the usual config.h generated header file; looks for each of
+dnl the generated "#define SOMEDEF" lines, and prefixes the defined name
+dnl (ie. makes it "#define PREFIX_SOMEDEF". The result is written to
+dnl the output config.header file. The PREFIX is converted to uppercase 
+dnl for the conversions. 
+dnl
+dnl default OUTPUT-HEADER = $PACKAGE-config.h
+dnl default PREFIX = $PACKAGE
+dnl default ORIG-HEADER, derived from OUTPUT-HEADER
+dnl         if OUTPUT-HEADER has a "/", use the basename
+dnl         if OUTPUT-HEADER has a "-", use the section after it.
+dnl         otherwise, just config.h
+dnl
+dnl In most cases, the configure.in will contain a line saying
+dnl         AC_CONFIG_HEADER(config.h) 
+dnl somewhere *before* AC_OUTPUT and a simple line saying
+dnl        AC_PREFIX_CONFIG_HEADER
+dnl somewhere *after* AC_OUTPUT.
+dnl
+dnl example:
+dnl   AC_INIT(config.h.in)        # config.h.in as created by "autoheader"
+dnl   AM_INIT_AUTOMAKE(testpkg, 0.1.1)   # "#undef VERSION" and "PACKAGE"
+dnl   AM_CONFIG_HEADER(config.h)         #                in config.h.in
+dnl   AC_MEMORY_H                        # "#undef NEED_MEMORY_H"
+dnl   AC_C_CONST_H                       # "#undef const"
+dnl   AC_OUTPUT(Makefile)                # creates the "config.h" now
+dnl   AC_CREATE_PREFIX_CONFIG_H          # creates "testpkg-config.h"
+dnl         and the resulting "testpkg-config.h" contains lines like
+dnl   #ifndef TESTPKG_VERSION 
+dnl   #define TESTPKG_VERSION "0.1.1"
+dnl   #endif
+dnl   #ifndef TESTPKG_NEED_MEMORY_H 
+dnl   #define TESTPKG_NEED_MEMORY_H 1
+dnl   #endif
+dnl   #ifndef _testpkg_const 
+dnl   #define _testpkg_const const
+dnl   #endif
+dnl
+dnl   and this "testpkg-config.h" can be installed along with other
+dnl   header-files, which is most convenient when creating a shared
+dnl   library (that has some headers) where some functionality is
+dnl   dependent on the OS-features detected at compile-time. No
+dnl   need to invent some "testpkg-confdefs.h.in" manually. :-)
+dnl
+dnl @version $Id: ac_create_prefix_config_h.m4,v 1.1 2004/08/24 00:21:09 robertc Exp $
+dnl @author Guido Draheim <guidod@gmx.de>
+
+AC_DEFUN([AC_CREATE_PREFIX_CONFIG_H],
+[changequote({, })dnl 
+ac_prefix_conf_OUT=`echo ifelse($1, , $PACKAGE-config.h, $1)`
+ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e 'y:abcdefghijklmnopqrstuvwxyz./,-:ABCDEFGHIJKLMNOPQRSTUVWXYZ____:'`
+ac_prefix_conf_PKG=`echo ifelse($2, , $PACKAGE, $2)`
+ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:'`
+ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e 'y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:'  -e '/^[0-9]/s/^/_/'`
+ac_prefix_conf_INP=`echo ifelse($3, , _, $3)`
+if test "$ac_prefix_conf_INP" = "_"; then
+   case $ac_prefix_conf_OUT in
+      */*) ac_prefix_conf_INP=`basename $ac_prefix_conf_OUT` 
+      ;;
+      *-*) ac_prefix_conf_INP=`echo $ac_prefix_conf_OUT | sed -e 's/[a-zA-Z0-9_]*-//'`
+      ;;
+      *) ac_prefix_conf_INP=config.h
+      ;;
+   esac
+fi
+changequote([, ])dnl
+if test -z "$ac_prefix_conf_PKG" ; then
+   AC_MSG_ERROR([no prefix for _PREFIX_PKG_CONFIG_H])
+else
+  AC_MSG_RESULT(creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines)
+  if test -f $ac_prefix_conf_INP ; then
+    AS_DIRNAME([/* automatically generated */], $ac_prefix_conf_OUT)
+changequote({, })dnl 
+    echo '#ifndef '$ac_prefix_conf_DEF >$ac_prefix_conf_OUT
+    echo '#define '$ac_prefix_conf_DEF' 1' >>$ac_prefix_conf_OUT
+    echo ' ' >>$ac_prefix_conf_OUT
+    echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$ac_prefix_conf_OUT
+
+    echo 's/#undef  *\([A-Z_]\)/#undef '$ac_prefix_conf_UPP'_\1/' >conftest.sed
+    echo 's/#undef  *\([a-z]\)/#undef '$ac_prefix_conf_LOW'_\1/' >>conftest.sed
+    echo 's/#define  *\([A-Z_][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_UPP"_\\1 \\" >>conftest.sed
+    echo '#define '$ac_prefix_conf_UPP"_\\1 \\2 \\" >>conftest.sed
+    echo '#endif/' >>conftest.sed
+    echo 's/#define  *\([a-z][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_LOW"_\\1 \\" >>conftest.sed
+    echo '#define '$ac_prefix_conf_LOW"_\\1 \\2 \\" >>conftest.sed
+    echo '#endif/' >>conftest.sed
+    sed -f conftest.sed $ac_prefix_conf_INP >>$ac_prefix_conf_OUT
+    echo ' ' >>$ac_prefix_conf_OUT
+    echo '/*' $ac_prefix_conf_DEF '*/' >>$ac_prefix_conf_OUT
+    echo '#endif' >>$ac_prefix_conf_OUT
+changequote([, ])dnl
+  else
+    AC_MSG_ERROR([input file $ac_prefix_conf_IN does not exist, dnl
+    skip generating $ac_prefix_conf_OUT])
+  fi
+  rm -f conftest.* 
+fi])
+           
diff --git a/lib/cppunit-1.10.0/config/ac_cxx_have_sstream.m4 b/lib/cppunit-1.10.0/config/ac_cxx_have_sstream.m4
new file mode 100644 (file)
index 0000000..3d09263
--- /dev/null
@@ -0,0 +1,24 @@
+dnl @synopsis AC_CXX_HAVE_SSTREAM
+dnl
+dnl If the C++ library has a working stringstream, define HAVE_SSTREAM.
+dnl
+dnl @author Ben Stanley
+dnl @version $Id: ac_cxx_have_sstream.m4,v 1.1 2004/08/24 00:21:09 robertc Exp $
+dnl
+AC_DEFUN([AC_CXX_HAVE_SSTREAM],
+[AC_CACHE_CHECK(whether the compiler has stringstream,
+ac_cv_cxx_have_sstream,
+[AC_REQUIRE([AC_CXX_NAMESPACES])
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <sstream>
+#ifdef HAVE_NAMESPACES
+using namespace std;
+#endif],[stringstream message; message << "Hello"; return 0;],
+ ac_cv_cxx_have_sstream=yes, ac_cv_cxx_have_sstream=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_have_sstream" = yes; then
+  AC_DEFINE(HAVE_SSTREAM,1,[define if the compiler has stringstream])
+fi
+])
diff --git a/lib/cppunit-1.10.0/config/ac_cxx_have_strstream.m4 b/lib/cppunit-1.10.0/config/ac_cxx_have_strstream.m4
new file mode 100644 (file)
index 0000000..232a3d6
--- /dev/null
@@ -0,0 +1,29 @@
+dnl @synopsis AC_CXX_HAVE_STRSTREAM
+dnl
+dnl If the C++ library has a working strstream, define HAVE_CLASS_STRSTREAM.
+dnl
+dnl Adapted from ac_cxx_have_sstream.m4 by Steve Robbins
+dnl
+AC_DEFUN([AC_CXX_HAVE_STRSTREAM],
+[AC_CACHE_CHECK(whether the library defines class strstream,
+ac_cv_cxx_have_class_strstream,
+[AC_REQUIRE([AC_CXX_NAMESPACES])
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_CHECK_HEADERS(strstream)
+ AC_TRY_COMPILE([
+#if HAVE_STRSTREAM
+#  include <strstream>
+#else
+#  include <strstream.h>
+#endif
+#ifdef HAVE_NAMESPACES
+using namespace std;
+#endif],[ostrstream message; message << "Hello"; return 0;],
+ ac_cv_cxx_have_class_strstream=yes, ac_cv_cxx_have_class_strstream=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_have_class_strstream" = yes; then
+  AC_DEFINE(HAVE_CLASS_STRSTREAM,1,[define if the library defines strstream])
+fi
+])
diff --git a/lib/cppunit-1.10.0/config/ac_cxx_namespaces.m4 b/lib/cppunit-1.10.0/config/ac_cxx_namespaces.m4
new file mode 100644 (file)
index 0000000..eb675e4
--- /dev/null
@@ -0,0 +1,22 @@
+dnl @synopsis AC_CXX_NAMESPACES
+dnl
+dnl If the compiler can prevent names clashes using namespaces, define
+dnl HAVE_NAMESPACES.
+dnl
+dnl @version $Id: ac_cxx_namespaces.m4,v 1.1 2004/08/24 00:21:09 robertc Exp $
+dnl @author Luc Maisonobe
+dnl
+AC_DEFUN([AC_CXX_NAMESPACES],
+[AC_CACHE_CHECK(whether the compiler implements namespaces,
+ac_cv_cxx_namespaces,
+[AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([namespace Outer { namespace Inner { int i = 0; }}],
+                [using namespace Outer::Inner; return i;],
+ ac_cv_cxx_namespaces=yes, ac_cv_cxx_namespaces=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_namespaces" = yes; then
+  AC_DEFINE(HAVE_NAMESPACES,1,[define to 1 if the compiler implements namespaces])
+fi
+])
diff --git a/lib/cppunit-1.10.0/config/ac_cxx_rtti.m4 b/lib/cppunit-1.10.0/config/ac_cxx_rtti.m4
new file mode 100644 (file)
index 0000000..996e019
--- /dev/null
@@ -0,0 +1,34 @@
+dnl @synopsis AC_CXX_RTTI
+dnl
+dnl If the compiler supports Run-Time Type Identification (typeinfo
+dnl header and typeid keyword), define HAVE_RTTI.
+dnl
+dnl @version $Id: ac_cxx_rtti.m4,v 1.1 2004/08/24 00:21:09 robertc Exp $
+dnl @author Luc Maisonobe
+dnl
+AC_DEFUN([AC_CXX_RTTI],
+[AC_CACHE_CHECK(whether the compiler supports Run-Time Type Identification,
+ac_cv_cxx_rtti,
+[AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <typeinfo>
+class Base { public :
+             Base () {}
+             virtual int f () { return 0; }
+           };
+class Derived : public Base { public :
+                              Derived () {}
+                              virtual int f () { return 1; }
+                            };
+],[Derived d;
+Base *ptr = &d;
+return typeid (*ptr) == typeid (Derived);
+],
+ ac_cv_cxx_rtti=yes, ac_cv_cxx_rtti=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_rtti" = yes; then
+  AC_DEFINE(HAVE_RTTI,1,
+            [define if the compiler supports Run-Time Type Identification])
+fi
+])
diff --git a/lib/cppunit-1.10.0/config/ac_cxx_string_compare_string_first.m4 b/lib/cppunit-1.10.0/config/ac_cxx_string_compare_string_first.m4
new file mode 100644 (file)
index 0000000..a1cb7a2
--- /dev/null
@@ -0,0 +1,27 @@
+dnl @synopsis AC_CXX_STRING_COMPARE_STRING_FIRST
+dnl
+dnl If the standard library string::compare() function takes the
+dnl string as its first argument, define FUNC_STRING_COMPARE_STRING_FIRST to 1.
+dnl
+dnl @author Steven Robbins
+dnl
+AC_DEFUN([AC_CXX_STRING_COMPARE_STRING_FIRST],
+[AC_CACHE_CHECK(whether std::string::compare takes a string in argument 1,
+ac_cv_cxx_string_compare_string_first,
+[AC_REQUIRE([AC_CXX_NAMESPACES])
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <string>
+#ifdef HAVE_NAMESPACES
+using namespace std;
+#endif],[string x("hi"); string y("h");
+return x.compare(y,0,1) == 0;],
+ ac_cv_cxx_string_compare_string_first=yes, 
+ ac_cv_cxx_string_compare_string_first=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_string_compare_string_first" = yes; then
+  AC_DEFINE(FUNC_STRING_COMPARE_STRING_FIRST,1,
+            [define if library uses std::string::compare(string,pos,n)])
+fi
+])
diff --git a/lib/cppunit-1.10.0/config/ac_dll.m4 b/lib/cppunit-1.10.0/config/ac_dll.m4
new file mode 100644 (file)
index 0000000..ad7438a
--- /dev/null
@@ -0,0 +1,47 @@
+
+# AC_LTDL_DLLIB
+# -------------
+AC_DEFUN([AC_LTDL_DLLIB],
+[LIBADD_DL=
+AC_SUBST(LIBADD_DL)
+
+AC_CHECK_FUNC([shl_load],
+      [AC_DEFINE([HAVE_SHL_LOAD], [1],
+                [Define if you have the shl_load function.])],
+  [AC_CHECK_LIB([dld], [shl_load],
+       [AC_DEFINE([HAVE_SHL_LOAD], [1],
+                  [Define if you have the shl_load function.])
+       LIBADD_DL="$LIBADD_DL -ldld"],
+    [AC_CHECK_LIB([dl], [dlopen],
+         [AC_DEFINE([HAVE_LIBDL], [1],
+                    [Define if you have the libdl library or equivalent.])
+         LIBADD_DL="-ldl"],
+      [AC_TRY_LINK([#if HAVE_DLFCN_H
+#  include <dlfcn.h>
+#endif
+      ],
+       [dlopen(0, 0);],
+           [AC_DEFINE([HAVE_LIBDL], [1],
+                      [Define if you have the libdl library or equivalent.])],
+       [AC_CHECK_LIB([svld], [dlopen],
+             [AC_DEFINE([HAVE_LIBDL], [1],
+                        [Define if you have the libdl library or equivalent.])
+             LIBADD_DL="-lsvld"],
+         [AC_CHECK_LIB([dld], [dld_link],
+               [AC_DEFINE([HAVE_DLD], [1],
+                          [Define if you have the GNU dld library.])
+               LIBADD_DL="$LIBADD_DL -ldld"
+          ])
+        ])
+      ])
+    ])
+  ])
+])
+
+if test "x$ac_cv_func_dlopen" = xyes || test "x$ac_cv_lib_dl_dlopen" = xyes; then
+ LIBS_SAVE="$LIBS"
+ LIBS="$LIBS $LIBADD_DL"
+ AC_CHECK_FUNCS(dlerror)
+ LIBS="$LIBS_SAVE"
+fi
+])# AC_LTDL_DLLIB
diff --git a/lib/cppunit-1.10.0/config/ax_cxx_gcc_abi_demangle.m4 b/lib/cppunit-1.10.0/config/ax_cxx_gcc_abi_demangle.m4
new file mode 100644 (file)
index 0000000..c924f99
--- /dev/null
@@ -0,0 +1,40 @@
+dnl @synopsis AX_CXX_GCC_ABI_DEMANGLE
+dnl
+dnl If the compiler supports GCC C++ ABI name demangling (has header cxxabi.h 
+dnl and abi::__cxa_demangle() function), define HAVE_GCC_ABI_DEMANGLE
+dnl
+dnl Adapted from AC_CXX_RTTI by Luc Maisonobe
+dnl
+dnl @version $Id: ax_cxx_gcc_abi_demangle.m4,v 1.1 2004/08/24 00:21:09 robertc Exp $
+dnl @author Neil Ferguson <nferguso@eso.org>
+dnl
+AC_DEFUN([AX_CXX_GCC_ABI_DEMANGLE],
+[AC_CACHE_CHECK(whether the compiler supports GCC C++ ABI name demangling, 
+ac_cv_cxx_gcc_abi_demangle,
+[AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <typeinfo>
+#include <cxxabi.h>
+#include <string>
+
+template<typename TYPE>
+class A {};
+],[A<int> instance;
+int status = 0;
+char* c_name = 0;
+
+c_name = abi::__cxa_demangle(typeid(instance).name(), 0, 0, &status);
+        
+std::string name(c_name);
+free(c_name);
+
+return name == "A<int>";
+],
+ ac_cv_cxx_gcc_abi_demangle=yes, ac_cv_cxx_gcc_abi_demangle=no)
+ AC_LANG_RESTORE
+])
+if test "$ac_cv_cxx_gcc_abi_demangle" = yes; then
+  AC_DEFINE(HAVE_GCC_ABI_DEMANGLE,1,
+            [define if the compiler supports GCC C++ ABI name demangling]) 
+fi
+])
diff --git a/lib/cppunit-1.10.0/config/bb_enable_doxygen.m4 b/lib/cppunit-1.10.0/config/bb_enable_doxygen.m4
new file mode 100644 (file)
index 0000000..7ab38f0
--- /dev/null
@@ -0,0 +1,34 @@
+AC_DEFUN(BB_ENABLE_DOXYGEN,
+[
+AC_ARG_ENABLE(doxygen, [  --enable-doxygen        enable documentation generation with doxygen (auto)])
+AC_ARG_ENABLE(dot, [  --enable-dot            use 'dot' to generate graphs in doxygen (auto)])              
+AC_ARG_ENABLE(html-docs, [  --enable-html-docs      enable HTML generation with doxygen (yes)], [], [ enable_html_docs=yes])              
+AC_ARG_ENABLE(latex-docs, [  --enable-latex-docs     enable LaTeX documentation generation with doxygen (no)], [], [ enable_latex_docs=no])              
+if test "x$enable_doxygen" = xno; then
+        enable_doc=no
+else 
+        AC_PATH_PROG(DOXYGEN, doxygen, , $PATH)
+        if test "x$DOXYGEN" = x; then
+                if test "x$enable_doxygen" = xyes; then
+                        AC_MSG_ERROR([could not find doxygen])
+                fi
+                enable_doc=no
+        else
+                enable_doc=yes
+                AC_PATH_PROG(DOT, dot, , $PATH)
+        fi
+fi
+AM_CONDITIONAL(DOC, test x$enable_doc = xyes)
+
+if test x$DOT = x; then
+        if test "x$enable_dot" = xyes; then
+                AC_MSG_ERROR([could not find dot])
+        fi
+        enable_dot=no
+else
+        enable_dot=yes
+fi
+AC_SUBST(enable_dot)
+AC_SUBST(enable_html_docs)
+AC_SUBST(enable_latex_docs)
+])
diff --git a/lib/cppunit-1.10.0/config/config.guess b/lib/cppunit-1.10.0/config/config.guess
new file mode 100755 (executable)
index 0000000..c8fc683
--- /dev/null
@@ -0,0 +1,1417 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+timestamp='2003-07-02'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+       for c in cc gcc c89 c99 ; do
+         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+            CC_FOR_BUILD="$c"; break ;
+         fi ;
+       done ;
+       if test x"$CC_FOR_BUILD" = x ; then
+         CC_FOR_BUILD=no_compiler_found ;
+       fi
+       ;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+       PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case "${UNAME_MACHINE}" in
+    i?86)
+       test -z "$VENDOR" && VENDOR=pc
+       ;;
+    *)
+       test -z "$VENDOR" && VENDOR=unknown
+       ;;
+esac
+test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+       # NetBSD (nbsd) targets should (where applicable) match one or
+       # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+       # switched to ELF, *-*-netbsd* would select the old
+       # object file format.  This provides both forward
+       # compatibility and a consistent mechanism for selecting the
+       # object file format.
+       #
+       # Note: NetBSD doesn't particularly care about the vendor
+       # portion of the name.  We always set it to "unknown".
+       sysctl="sysctl -n hw.machine_arch"
+       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+       case "${UNAME_MACHINE_ARCH}" in
+           armeb) machine=armeb-unknown ;;
+           arm*) machine=arm-unknown ;;
+           sh3el) machine=shl-unknown ;;
+           sh3eb) machine=sh-unknown ;;
+           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+       esac
+       # The Operating System including object format, if it has switched
+       # to ELF recently, or will in the future.
+       case "${UNAME_MACHINE_ARCH}" in
+           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+               eval $set_cc_for_build
+               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+                       | grep __ELF__ >/dev/null
+               then
+                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+                   # Return netbsd for either.  FIX?
+                   os=netbsd
+               else
+                   os=netbsdelf
+               fi
+               ;;
+           *)
+               os=netbsd
+               ;;
+       esac
+       # The OS release
+       # Debian GNU/NetBSD machines have a different userland, and
+       # thus, need a distinct triplet. However, they do not need
+       # kernel version information, so it can be replaced with a
+       # suitable tag, in the style of linux-gnu.
+       case "${UNAME_VERSION}" in
+           Debian*)
+               release='-gnu'
+               ;;
+           *)
+               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+               ;;
+       esac
+       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+       # contains redundant information, the shorter form:
+       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+       echo "${machine}-${os}${release}"
+       exit 0 ;;
+    amiga:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    arc:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    hp300:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mac68k:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    macppc:OpenBSD:*:*)
+       echo powerpc-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvme68k:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvme88k:OpenBSD:*:*)
+       echo m88k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvmeppc:OpenBSD:*:*)
+       echo powerpc-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    pmax:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    sgi:OpenBSD:*:*)
+       echo mipseb-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    sun3:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    *:OpenBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    alpha:OSF1:*:*)
+       if test $UNAME_RELEASE = "V4.0"; then
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+       fi
+       # According to Compaq, /usr/sbin/psrinfo has been available on
+       # OSF/1 and Tru64 systems produced since 1995.  I hope that
+       # covers most systems running today.  This code pipes the CPU
+       # types through head -n 1, so we only detect the type of CPU 0.
+       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+       case "$ALPHA_CPU_TYPE" in
+           "EV4 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "EV4.5 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "LCA4 (21066/21068)")
+               UNAME_MACHINE="alpha" ;;
+           "EV5 (21164)")
+               UNAME_MACHINE="alphaev5" ;;
+           "EV5.6 (21164A)")
+               UNAME_MACHINE="alphaev56" ;;
+           "EV5.6 (21164PC)")
+               UNAME_MACHINE="alphapca56" ;;
+           "EV5.7 (21164PC)")
+               UNAME_MACHINE="alphapca57" ;;
+           "EV6 (21264)")
+               UNAME_MACHINE="alphaev6" ;;
+           "EV6.7 (21264A)")
+               UNAME_MACHINE="alphaev67" ;;
+           "EV6.8CB (21264C)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8AL (21264B)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8CX (21264D)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.9A (21264/EV69A)")
+               UNAME_MACHINE="alphaev69" ;;
+           "EV7 (21364)")
+               UNAME_MACHINE="alphaev7" ;;
+           "EV7.9 (21364A)")
+               UNAME_MACHINE="alphaev79" ;;
+       esac
+       # A Vn.n version is a released version.
+       # A Tn.n version is a released field test version.
+       # A Xn.n version is an unreleased experimental baselevel.
+       # 1.2 uses "1.2" for uname -r.
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       exit 0 ;;
+    Alpha*:OpenVMS:*:*)
+       echo alpha-hp-vms
+       exit 0 ;;
+    Alpha\ *:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # Should we change UNAME_MACHINE based on the output of uname instead
+       # of the specific Alpha model?
+       echo alpha-pc-interix
+       exit 0 ;;
+    21064:Windows_NT:50:3)
+       echo alpha-dec-winnt3.5
+       exit 0 ;;
+    Amiga*:UNIX_System_V:4.0:*)
+       echo m68k-unknown-sysv4
+       exit 0;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-amigaos
+       exit 0 ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-morphos
+       exit 0 ;;
+    *:OS/390:*:*)
+       echo i370-ibm-openedition
+       exit 0 ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+       echo arm-acorn-riscix${UNAME_RELEASE}
+       exit 0;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+       echo hppa1.1-hitachi-hiuxmpp
+       exit 0;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+       if test "`(/bin/universe) 2>/dev/null`" = att ; then
+               echo pyramid-pyramid-sysv3
+       else
+               echo pyramid-pyramid-bsd
+       fi
+       exit 0 ;;
+    NILE*:*:*:dcosx)
+       echo pyramid-pyramid-svr4
+       exit 0 ;;
+    DRS?6000:unix:4.0:6*)
+       echo sparc-icl-nx6
+       exit 0 ;;
+    DRS?6000:UNIX_SV:4.2*:7*)
+       case `/usr/bin/uname -p` in
+           sparc) echo sparc-icl-nx7 && exit 0 ;;
+       esac ;;
+    sun4H:SunOS:5.*:*)
+       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    i86pc:SunOS:5.*:*)
+       echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    sun4*:SunOS:6*:*)
+       # According to config.sub, this is the proper way to canonicalize
+       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+       # it's likely to be more like Solaris than SunOS4.
+       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    sun4*:SunOS:*:*)
+       case "`/usr/bin/arch -k`" in
+           Series*|S4*)
+               UNAME_RELEASE=`uname -v`
+               ;;
+       esac
+       # Japanese Language versions have a version number like `4.1.3-JL'.
+       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+       exit 0 ;;
+    sun3*:SunOS:*:*)
+       echo m68k-sun-sunos${UNAME_RELEASE}
+       exit 0 ;;
+    sun*:*:4.2BSD:*)
+       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       case "`/bin/arch`" in
+           sun3)
+               echo m68k-sun-sunos${UNAME_RELEASE}
+               ;;
+           sun4)
+               echo sparc-sun-sunos${UNAME_RELEASE}
+               ;;
+       esac
+       exit 0 ;;
+    aushp:SunOS:*:*)
+       echo sparc-auspex-sunos${UNAME_RELEASE}
+       exit 0 ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+       exit 0 ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+       exit 0 ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit 0 ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit 0 ;;
+    powerpc:machten:*:*)
+       echo powerpc-apple-machten${UNAME_RELEASE}
+       exit 0 ;;
+    RISC*:Mach:*:*)
+       echo mips-dec-mach_bsd4.3
+       exit 0 ;;
+    RISC*:ULTRIX:*:*)
+       echo mips-dec-ultrix${UNAME_RELEASE}
+       exit 0 ;;
+    VAX*:ULTRIX*:*:*)
+       echo vax-dec-ultrix${UNAME_RELEASE}
+       exit 0 ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+       echo clipper-intergraph-clix${UNAME_RELEASE}
+       exit 0 ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
+       #if defined (host_mips) && defined (MIPSEB)
+       #if defined (SYSTYPE_SYSV)
+         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_SVR4)
+         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+       #endif
+       #endif
+         exit (-1);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c \
+         && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+         && exit 0
+       echo mips-mips-riscos${UNAME_RELEASE}
+       exit 0 ;;
+    Motorola:PowerMAX_OS:*:*)
+       echo powerpc-motorola-powermax
+       exit 0 ;;
+    Motorola:*:4.3:PL8-*)
+       echo powerpc-harris-powermax
+       exit 0 ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+       echo powerpc-harris-powermax
+       exit 0 ;;
+    Night_Hawk:Power_UNIX:*:*)
+       echo powerpc-harris-powerunix
+       exit 0 ;;
+    m88k:CX/UX:7*:*)
+       echo m88k-harris-cxux7
+       exit 0 ;;
+    m88k:*:4*:R4*)
+       echo m88k-motorola-sysv4
+       exit 0 ;;
+    m88k:*:3*:R3*)
+       echo m88k-motorola-sysv3
+       exit 0 ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+       then
+           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+              [ ${TARGET_BINARY_INTERFACE}x = x ]
+           then
+               echo m88k-dg-dgux${UNAME_RELEASE}
+           else
+               echo m88k-dg-dguxbcs${UNAME_RELEASE}
+           fi
+       else
+           echo i586-dg-dgux${UNAME_RELEASE}
+       fi
+       exit 0 ;;
+    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
+       echo m88k-dolphin-sysv3
+       exit 0 ;;
+    M88*:*:R3*:*)
+       # Delta 88k system running SVR3
+       echo m88k-motorola-sysv3
+       exit 0 ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+       echo m88k-tektronix-sysv3
+       exit 0 ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+       echo m68k-tektronix-bsd
+       exit 0 ;;
+    *:IRIX*:*:*)
+       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+       exit 0 ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+       echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
+       exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+       echo i386-ibm-aix
+       exit 0 ;;
+    ia64:AIX:*:*)
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+       exit 0 ;;
+    *:AIX:2:3)
+       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+               eval $set_cc_for_build
+               sed 's/^                //' << EOF >$dummy.c
+               #include <sys/systemcfg.h>
+
+               main()
+                       {
+                       if (!__power_pc())
+                               exit(1);
+                       puts("powerpc-ibm-aix3.2.5");
+                       exit(0);
+                       }
+EOF
+               $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+               echo rs6000-ibm-aix3.2.5
+       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+               echo rs6000-ibm-aix3.2.4
+       else
+               echo rs6000-ibm-aix3.2
+       fi
+       exit 0 ;;
+    *:AIX:*:[45])
+       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+               IBM_ARCH=rs6000
+       else
+               IBM_ARCH=powerpc
+       fi
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+       exit 0 ;;
+    *:AIX:*:*)
+       echo rs6000-ibm-aix
+       exit 0 ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+       echo romp-ibm-bsd4.4
+       exit 0 ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+       exit 0 ;;                           # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+       echo rs6000-bull-bosx
+       exit 0 ;;
+    DPX/2?00:B.O.S.:*:*)
+       echo m68k-bull-sysv3
+       exit 0 ;;
+    9000/[34]??:4.3bsd:1.*:*)
+       echo m68k-hp-bsd
+       exit 0 ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+       echo m68k-hp-bsd4.4
+       exit 0 ;;
+    9000/[34678]??:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       case "${UNAME_MACHINE}" in
+           9000/31? )            HP_ARCH=m68000 ;;
+           9000/[34]?? )         HP_ARCH=m68k ;;
+           9000/[678][0-9][0-9])
+               if [ -x /usr/bin/getconf ]; then
+                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+               fi
+               if [ "${HP_ARCH}" = "" ]; then
+                   eval $set_cc_for_build
+                   sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+               {
+               case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+               case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+               case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+                   switch (bits)
+                       {
+                       case 64: puts ("hppa2.0w"); break;
+                       case 32: puts ("hppa2.0n"); break;
+                       default: puts ("hppa2.0"); break;
+                       } break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+                   puts ("hppa2.0"); break;
+              #endif
+               default: puts ("hppa1.0"); break;
+               }
+                  exit (0);
+              }
+EOF
+                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+                   test -z "$HP_ARCH" && HP_ARCH=hppa
+               fi ;;
+       esac
+       if [ ${HP_ARCH} = "hppa2.0w" ]
+       then
+           # avoid double evaluation of $set_cc_for_build
+           test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
+           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+           then
+               HP_ARCH="hppa2.0w"
+           else
+               HP_ARCH="hppa64"
+           fi
+       fi
+       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+       exit 0 ;;
+    ia64:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       echo ia64-hp-hpux${HPUX_REV}
+       exit 0 ;;
+    3050*:HI-UX:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <unistd.h>
+       int
+       main ()
+       {
+         long cpu = sysconf (_SC_CPU_VERSION);
+         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+            results, however.  */
+         if (CPU_IS_PA_RISC (cpu))
+           {
+             switch (cpu)
+               {
+                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+                 default: puts ("hppa-hitachi-hiuxwe2"); break;
+               }
+           }
+         else if (CPU_IS_HP_MC68K (cpu))
+           puts ("m68k-hitachi-hiuxwe2");
+         else puts ("unknown-hitachi-hiuxwe2");
+         exit (0);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+       echo unknown-hitachi-hiuxwe2
+       exit 0 ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+       echo hppa1.1-hp-bsd
+       exit 0 ;;
+    9000/8??:4.3bsd:*:*)
+       echo hppa1.0-hp-bsd
+       exit 0 ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+       echo hppa1.0-hp-mpeix
+       exit 0 ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+       echo hppa1.1-hp-osf
+       exit 0 ;;
+    hp8??:OSF1:*:*)
+       echo hppa1.0-hp-osf
+       exit 0 ;;
+    i*86:OSF1:*:*)
+       if [ -x /usr/sbin/sysversion ] ; then
+           echo ${UNAME_MACHINE}-unknown-osf1mk
+       else
+           echo ${UNAME_MACHINE}-unknown-osf1
+       fi
+       exit 0 ;;
+    parisc*:Lites*:*:*)
+       echo hppa1.1-hp-lites
+       exit 0 ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+       echo c1-convex-bsd
+        exit 0 ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+        exit 0 ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+       echo c34-convex-bsd
+        exit 0 ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+       echo c38-convex-bsd
+        exit 0 ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+       echo c4-convex-bsd
+        exit 0 ;;
+    CRAY*Y-MP:*:*:*)
+       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*[A-Z]90:*:*:*)
+       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+             -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*TS:*:*:*)
+       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*T3E:*:*:*)
+       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*SV1:*:*:*)
+       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    *:UNICOS/mp:*:*)
+       echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' 
+       exit 0 ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit 0 ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+    sparc*:BSD/OS:*:*)
+       echo sparc-unknown-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+    *:BSD/OS:*:*)
+       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+    *:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
+       # Determine whether the default compiler uses glibc.
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <features.h>
+       #if __GLIBC__ >= 2
+       LIBC=gnu
+       #else
+       LIBC=
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+       # GNU/FreeBSD systems have a "k" prefix to indicate we are using
+       # FreeBSD's kernel, but not the complete OS.
+       case ${LIBC} in gnu) kernel_only='k' ;; esac
+       echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+       exit 0 ;;
+    i*:CYGWIN*:*)
+       echo ${UNAME_MACHINE}-pc-cygwin
+       exit 0 ;;
+    i*:MINGW*:*)
+       echo ${UNAME_MACHINE}-pc-mingw32
+       exit 0 ;;
+    i*:PW*:*)
+       echo ${UNAME_MACHINE}-pc-pw32
+       exit 0 ;;
+    x86:Interix*:[34]*)
+       echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+       exit 0 ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+       echo i${UNAME_MACHINE}-pc-mks
+       exit 0 ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+       # UNAME_MACHINE based on the output of uname instead of i386?
+       echo i586-pc-interix
+       exit 0 ;;
+    i*:UWIN*:*)
+       echo ${UNAME_MACHINE}-pc-uwin
+       exit 0 ;;
+    p*:CYGWIN*:*)
+       echo powerpcle-unknown-cygwin
+       exit 0 ;;
+    prep*:SunOS:5.*:*)
+       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    *:GNU:*:*)
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       exit 0 ;;
+    i*86:Minix:*:*)
+       echo ${UNAME_MACHINE}-pc-minix
+       exit 0 ;;
+    arm*:Linux:*:*)
+       echo ${UNAME_MACHINE}-${VENDOR}-linux
+       exit 0 ;;
+    cris:Linux:*:*)
+       echo cris-axis-linux
+       exit 0 ;;
+    ia64:Linux:*:*)
+       echo ${UNAME_MACHINE}-${VENDOR}-linux
+       exit 0 ;;
+    m68*:Linux:*:*)
+       echo ${UNAME_MACHINE}-${VENDOR}-linux
+       exit 0 ;;
+    mips:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef mips
+       #undef mipsel
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+       CPU=mipsel
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+       CPU=mips
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+       test x"${CPU}" != x && echo "${CPU}-${VENDOR}-linux" && exit 0
+       ;;
+    mips64:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef mips64
+       #undef mips64el
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+       CPU=mips64el
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+       CPU=mips64
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+       test x"${CPU}" != x && echo "${CPU}-${VENDOR}-linux" && exit 0
+       ;;
+    ppc:Linux:*:*)
+       echo powerpc-${VENDOR}-linux
+       exit 0 ;;
+    ppc64:Linux:*:*)
+       echo powerpc64-${VENDOR}-linux
+       exit 0 ;;
+    alpha:Linux:*:*)
+       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+         EV5)   UNAME_MACHINE=alphaev5 ;;
+         EV56)  UNAME_MACHINE=alphaev56 ;;
+         PCA56) UNAME_MACHINE=alphapca56 ;;
+         PCA57) UNAME_MACHINE=alphapca56 ;;
+         EV6)   UNAME_MACHINE=alphaev6 ;;
+         EV67)  UNAME_MACHINE=alphaev67 ;;
+         EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+       objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+       if test "$?" = 0 ; then LIBC="-libc1" ; else LIBC="" ; fi
+       echo ${UNAME_MACHINE}-${VENDOR}-linux${LIBC}
+       exit 0 ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+       # Look for CPU level
+       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+         PA7*) echo hppa1.1-${VENDOR}-linux ;;
+         PA8*) echo hppa2.0-${VENDOR}-linux ;;
+         *)    echo hppa-${VENDOR}-linux ;;
+       esac
+       exit 0 ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-${VENDOR}-linux
+       exit 0 ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+       echo ${UNAME_MACHINE}-ibm-linux
+       exit 0 ;;
+    sh64*:Linux:*:*)
+       echo ${UNAME_MACHINE}-${VENDOR}-linux
+       exit 0 ;;
+    sh*:Linux:*:*)
+       echo ${UNAME_MACHINE}-${VENDOR}-linux
+       exit 0 ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+       echo ${UNAME_MACHINE}-${VENDOR}-linux
+       exit 0 ;;
+    x86_64:Linux:*:*)
+       echo x86_64-${VENDOR}-linux
+       exit 0 ;;
+    i*86:Linux:*:*)
+       # The BFD linker knows what the default object file format is, so
+       # first see if it will tell us. cd to the root directory to prevent
+       # problems with other programs or directories called `ld' in the path.
+       # Set LC_ALL=C to ensure ld outputs messages in English.
+       ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+                        | sed -ne '/supported targets:/!d
+                                   s/[         ][      ]*/ /g
+                                   s/.*supported targets: *//
+                                   s/ .*//
+                                   p'`
+        case "$ld_supported_targets" in
+         elf32-i386)
+               TENTATIVE="${UNAME_MACHINE}-${VENDOR}-linux"
+               ;;
+         a.out-i386-linux)
+               echo "${UNAME_MACHINE}-${VENDOR}-linuxaout"
+               exit 0 ;;
+         coff-i386)
+               echo "${UNAME_MACHINE}-${VENDOR}-linuxcoff"
+               exit 0 ;;
+         "")
+               # Either a pre-BFD a.out linker (linuxoldld) or
+               # one that does not give us useful --help.
+               echo "${UNAME_MACHINE}-${VENDOR}-linuxoldld"
+               exit 0 ;;
+       esac
+       # Determine whether the default compiler is a.out or elf
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <features.h>
+       #ifdef __ELF__
+       # ifdef __GLIBC__
+       #  if __GLIBC__ >= 2
+       LIBC=gnu
+       #  else
+       LIBC=gnulibc1
+       #  endif
+       # else
+       LIBC=gnulibc1
+       # endif
+       #else
+       #ifdef __INTEL_COMPILER
+       LIBC=gnu
+       #else
+       LIBC=gnuaout
+       #endif
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+       test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}" | sed 's/linux-gnu/linux/' && exit 0
+       test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+       ;;
+    i*86:DYNIX/ptx:4*:*)
+       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+       # earlier versions are messed up and put the nodename in both
+       # sysname and nodename.
+       echo i386-sequent-sysv4
+       exit 0 ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+       # I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+       exit 0 ;;
+    i*86:OS/2:*:*)
+       # If we were able to find `uname', then EMX Unix compatibility
+       # is probably installed.
+       echo ${UNAME_MACHINE}-pc-os2-emx
+       exit 0 ;;
+    i*86:XTS-300:*:STOP)
+       echo ${UNAME_MACHINE}-unknown-stop
+       exit 0 ;;
+    i*86:atheos:*:*)
+       echo ${UNAME_MACHINE}-unknown-atheos
+       exit 0 ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+       echo i386-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    i*86:*DOS:*:*)
+       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       exit 0 ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+       else
+               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+       fi
+       exit 0 ;;
+    i*86:*:5:[78]*)
+       case `/bin/uname -X | grep "^Machine"` in
+           *486*)           UNAME_MACHINE=i486 ;;
+           *Pentium)        UNAME_MACHINE=i586 ;;
+           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+       esac
+       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+       exit 0 ;;
+    i*86:*:3.2:*)
+       if test -f /usr/options/cb.name; then
+               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+       elif /bin/uname -X 2>/dev/null >/dev/null ; then
+               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+                       && UNAME_MACHINE=i586
+               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+       else
+               echo ${UNAME_MACHINE}-pc-sysv32
+       fi
+       exit 0 ;;
+    pc:*:*:*)
+       # Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+       echo i386-pc-msdosdjgpp
+        exit 0 ;;
+    Intel:Mach:3*:*)
+       echo i386-pc-mach3
+       exit 0 ;;
+    paragon:*:*:*)
+       echo i860-intel-osf1
+       exit 0 ;;
+    i860:*:4.*:*) # i860-SVR4
+       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+       else # Add other i860-SVR4 vendors below as they are discovered.
+         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+       fi
+       exit 0 ;;
+    mini*:CTIX:SYS*5:*)
+       # "miniframe"
+       echo m68010-convergent-sysv
+       exit 0 ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+       echo m68k-convergent-sysv
+       exit 0 ;;
+    M680?0:D-NIX:5.3:*)
+       echo m68k-diab-dnix
+       exit 0 ;;
+    M68*:*:R3V[567]*:*)
+       test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
+       OS_REL=''
+       test -r /etc/.relid \
+       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+         && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+         && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && echo i486-ncr-sysv4 && exit 0 ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+       echo m68k-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    mc68030:UNIX_System_V:4.*:*)
+       echo m68k-atari-sysv4
+       exit 0 ;;
+    TSUNAMI:LynxOS:2.*:*)
+       echo sparc-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    rs6000:LynxOS:2.*:*)
+       echo rs6000-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    SM[BE]S:UNIX_SV:*:*)
+       echo mips-dde-sysv${UNAME_RELEASE}
+       exit 0 ;;
+    RM*:ReliantUNIX-*:*:*)
+       echo mips-sni-sysv4
+       exit 0 ;;
+    RM*:SINIX-*:*:*)
+       echo mips-sni-sysv4
+       exit 0 ;;
+    *:SINIX-*:*:*)
+       if uname -p 2>/dev/null >/dev/null ; then
+               UNAME_MACHINE=`(uname -p) 2>/dev/null`
+               echo ${UNAME_MACHINE}-sni-sysv4
+       else
+               echo ns32k-sni-sysv
+       fi
+       exit 0 ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
+    *:UNIX_System_V:4*:FTX*)
+       # From Gerald Hewes <hewes@openmarket.com>.
+       # How about differentiating between stratus architectures? -djm
+       echo hppa1.1-stratus-sysv4
+       exit 0 ;;
+    *:*:*:FTX*)
+       # From seanf@swdc.stratus.com.
+       echo i860-stratus-sysv4
+       exit 0 ;;
+    *:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo hppa1.1-stratus-vos
+       exit 0 ;;
+    mc68*:A/UX:*:*)
+       echo m68k-apple-aux${UNAME_RELEASE}
+       exit 0 ;;
+    news*:NEWS-OS:6*:*)
+       echo mips-sony-newsos6
+       exit 0 ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+       if [ -d /usr/nec ]; then
+               echo mips-nec-sysv${UNAME_RELEASE}
+       else
+               echo mips-unknown-sysv${UNAME_RELEASE}
+       fi
+        exit 0 ;;
+    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
+       echo powerpc-be-beos
+       exit 0 ;;
+    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
+       echo powerpc-apple-beos
+       exit 0 ;;
+    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
+       echo i586-pc-beos
+       exit 0 ;;
+    SX-4:SUPER-UX:*:*)
+       echo sx4-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    SX-5:SUPER-UX:*:*)
+       echo sx5-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    SX-6:SUPER-UX:*:*)
+       echo sx6-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    Power*:Rhapsody:*:*)
+       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+    *:Rhapsody:*:*)
+       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+    *:Darwin:*:*)
+       case `uname -p` in
+           *86) UNAME_PROCESSOR=i686 ;;
+           powerpc) UNAME_PROCESSOR=powerpc ;;
+       esac
+       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+       exit 0 ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+       UNAME_PROCESSOR=`uname -p`
+       if test "$UNAME_PROCESSOR" = "x86"; then
+               UNAME_PROCESSOR=i386
+               UNAME_MACHINE=pc
+       fi
+       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+       exit 0 ;;
+    *:QNX:*:4*)
+       echo i386-pc-qnx
+       exit 0 ;;
+    NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk${UNAME_RELEASE}
+       exit 0 ;;
+    *:NonStop-UX:*:*)
+       echo mips-compaq-nonstopux
+       exit 0 ;;
+    BS2000:POSIX*:*:*)
+       echo bs2000-siemens-sysv
+       exit 0 ;;
+    DS/*:UNIX_System_V:*:*)
+       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+       exit 0 ;;
+    *:Plan9:*:*)
+       # "uname -m" is not consistent, so use $cputype instead. 386
+       # is converted to i386 for consistency with other x86
+       # operating systems.
+       if test "$cputype" = "386"; then
+           UNAME_MACHINE=i386
+       else
+           UNAME_MACHINE="$cputype"
+       fi
+       echo ${UNAME_MACHINE}-unknown-plan9
+       exit 0 ;;
+    *:TOPS-10:*:*)
+       echo pdp10-unknown-tops10
+       exit 0 ;;
+    *:TENEX:*:*)
+       echo pdp10-unknown-tenex
+       exit 0 ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+       echo pdp10-dec-tops20
+       exit 0 ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+       echo pdp10-xkl-tops20
+       exit 0 ;;
+    *:TOPS-20:*:*)
+       echo pdp10-unknown-tops20
+       exit 0 ;;
+    *:ITS:*:*)
+       echo pdp10-unknown-its
+       exit 0 ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+       exit 0 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+         ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+       printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+       printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+       echo c1-convex-bsd
+       exit 0 ;;
+    c2*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit 0 ;;
+    c34*)
+       echo c34-convex-bsd
+       exit 0 ;;
+    c38*)
+       echo c38-convex-bsd
+       exit 0 ;;
+    c4*)
+       echo c4-convex-bsd
+       exit 0 ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+    ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/lib/cppunit-1.10.0/config/config.h.in b/lib/cppunit-1.10.0/config/config.h.in
new file mode 100644 (file)
index 0000000..0a921df
--- /dev/null
@@ -0,0 +1,94 @@
+/* config/config.h.in.  Generated from configure.in by autoheader.  */
+
+/* define if library uses std::string::compare(string,pos,n) */
+#undef FUNC_STRING_COMPARE_STRING_FIRST
+
+/* define if the library defines strstream */
+#undef HAVE_CLASS_STRSTREAM
+
+/* Define to 1 if you have the <cmath> header file. */
+#undef HAVE_CMATH
+
+/* Define if you have the GNU dld library. */
+#undef HAVE_DLD
+
+/* Define to 1 if you have the `dlerror' function. */
+#undef HAVE_DLERROR
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* define if the compiler supports GCC C++ ABI name demangling */
+#undef HAVE_GCC_ABI_DEMANGLE
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if you have the libdl library or equivalent. */
+#undef HAVE_LIBDL
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* define to 1 if the compiler implements namespaces */
+#undef HAVE_NAMESPACES
+
+/* define if the compiler supports Run-Time Type Identification */
+#undef HAVE_RTTI
+
+/* Define if you have the shl_load function. */
+#undef HAVE_SHL_LOAD
+
+/* define if the compiler has stringstream */
+#undef HAVE_SSTREAM
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <strstream> header file. */
+#undef HAVE_STRSTREAM
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 to use type_info::name() for class names */
+#undef USE_TYPEINFO_NAME
+
+/* Version number of package */
+#undef VERSION
diff --git a/lib/cppunit-1.10.0/config/config.sub b/lib/cppunit-1.10.0/config/config.sub
new file mode 100755 (executable)
index 0000000..9952c14
--- /dev/null
@@ -0,0 +1,1501 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+timestamp='2003-07-04'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit 0;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | kfreebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+       -sun*os*)
+               # Prevent following clause from handling this invalid input.
+               ;;
+       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+       -apple | -axis)
+               os=
+               basic_machine=$1
+               ;;
+       -sim | -cisco | -oki | -wec | -winbond)
+               os=
+               basic_machine=$1
+               ;;
+       -scout)
+               ;;
+       -wrs)
+               os=-vxworks
+               basic_machine=$1
+               ;;
+       -chorusos*)
+               os=-chorusos
+               basic_machine=$1
+               ;;
+       -chorusrdb)
+               os=-chorusrdb
+               basic_machine=$1
+               ;;
+       -hiux*)
+               os=-hiuxwe2
+               ;;
+       -sco5)
+               os=-sco3.2v5
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco4)
+               os=-sco3.2v4
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2.[4-9]*)
+               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2v[4-9]*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco*)
+               os=-sco3.2v2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -udk*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -isc)
+               os=-isc2.2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -clix*)
+               basic_machine=clipper-intergraph
+               ;;
+       -isc*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -lynx*)
+               os=-lynxos
+               ;;
+       -ptx*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+               ;;
+       -windowsnt*)
+               os=`echo $os | sed -e 's/windowsnt/winnt/'`
+               ;;
+       -psos*)
+               os=-psos
+               ;;
+       -mint | -mint[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+       # Recognize the basic CPU types without company name.
+       # Some are omitted here because they have special meanings below.
+       1750a | 580 \
+       | a29k \
+       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+       | c4x | clipper \
+       | d10v | d30v | dlx | dsp16xx \
+       | fr30 | frv \
+       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | i370 | i860 | i960 | ia64 \
+       | ip2k \
+       | m32r | m68000 | m68k | m88k | mcore \
+       | mips | mipsbe | mipseb | mipsel | mipsle \
+       | mips16 \
+       | mips64 | mips64el \
+       | mips64vr | mips64vrel \
+       | mips64orion | mips64orionel \
+       | mips64vr4100 | mips64vr4100el \
+       | mips64vr4300 | mips64vr4300el \
+       | mips64vr5000 | mips64vr5000el \
+       | mipsisa32 | mipsisa32el \
+       | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa64 | mipsisa64el \
+       | mipsisa64sb1 | mipsisa64sb1el \
+       | mipsisa64sr71k | mipsisa64sr71kel \
+       | mipstx39 | mipstx39el \
+       | mn10200 | mn10300 \
+       | msp430 \
+       | ns16k | ns32k \
+       | openrisc | or32 \
+       | pdp10 | pdp11 | pj | pjl \
+       | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+       | pyramid \
+       | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+       | sh64 | sh64le \
+       | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+       | strongarm \
+       | tahoe | thumb | tic4x | tic80 | tron \
+       | v850 | v850e \
+       | we32k \
+       | x86 | xscale | xstormy16 | xtensa \
+       | z8k)
+               basic_machine=$basic_machine-unknown
+               ;;
+       m6811 | m68hc11 | m6812 | m68hc12)
+               # Motorola 68HC11/12.
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+               ;;
+
+       # We use `pc' rather than `unknown'
+       # because (1) that's what they normally are, and
+       # (2) the word "unknown" tends to confuse beginning users.
+       i*86 | x86_64)
+         basic_machine=$basic_machine-pc
+         ;;
+       # Object if more than one company name word.
+       *-*-*)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+       # Recognize the basic CPU types with company name.
+       580-* \
+       | a29k-* \
+       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+       | avr-* \
+       | bs2000-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+       | clipper-* | cydra-* \
+       | d10v-* | d30v-* | dlx-* \
+       | elxsi-* \
+       | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+       | h8300-* | h8500-* \
+       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | i*86-* | i860-* | i960-* | ia64-* \
+       | ip2k-* \
+       | m32r-* \
+       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+       | m88110-* | m88k-* | mcore-* \
+       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+       | mips16-* \
+       | mips64-* | mips64el-* \
+       | mips64vr-* | mips64vrel-* \
+       | mips64orion-* | mips64orionel-* \
+       | mips64vr4100-* | mips64vr4100el-* \
+       | mips64vr4300-* | mips64vr4300el-* \
+       | mips64vr5000-* | mips64vr5000el-* \
+       | mipsisa32-* | mipsisa32el-* \
+       | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa64-* | mipsisa64el-* \
+       | mipsisa64sb1-* | mipsisa64sb1el-* \
+       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+       | mipstx39-* | mipstx39el-* \
+       | msp430-* \
+       | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
+       | orion-* \
+       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+       | pyramid-* \
+       | romp-* | rs6000-* \
+       | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+       | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+       | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+       | tahoe-* | thumb-* \
+       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+       | tron-* \
+       | v850-* | v850e-* | vax-* \
+       | we32k-* \
+       | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+       | xtensa-* \
+       | ymp-* \
+       | z8k-*)
+               ;;
+       # Recognize the various machine names and aliases which stand
+       # for a CPU type and a company and sometimes even an OS.
+       386bsd)
+               basic_machine=i386-unknown
+               os=-bsd
+               ;;
+       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+               basic_machine=m68000-att
+               ;;
+       3b*)
+               basic_machine=we32k-att
+               ;;
+       a29khif)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       adobe68k)
+               basic_machine=m68010-adobe
+               os=-scout
+               ;;
+       alliant | fx80)
+               basic_machine=fx80-alliant
+               ;;
+       altos | altos3068)
+               basic_machine=m68k-altos
+               ;;
+       am29k)
+               basic_machine=a29k-none
+               os=-bsd
+               ;;
+       amd64)
+               basic_machine=x86_64-pc
+               ;;
+       amdahl)
+               basic_machine=580-amdahl
+               os=-sysv
+               ;;
+       amiga | amiga-*)
+               basic_machine=m68k-unknown
+               ;;
+       amigaos | amigados)
+               basic_machine=m68k-unknown
+               os=-amigaos
+               ;;
+       amigaunix | amix)
+               basic_machine=m68k-unknown
+               os=-sysv4
+               ;;
+       apollo68)
+               basic_machine=m68k-apollo
+               os=-sysv
+               ;;
+       apollo68bsd)
+               basic_machine=m68k-apollo
+               os=-bsd
+               ;;
+       aux)
+               basic_machine=m68k-apple
+               os=-aux
+               ;;
+       balance)
+               basic_machine=ns32k-sequent
+               os=-dynix
+               ;;
+       c90)
+               basic_machine=c90-cray
+               os=-unicos
+               ;;
+       convex-c1)
+               basic_machine=c1-convex
+               os=-bsd
+               ;;
+       convex-c2)
+               basic_machine=c2-convex
+               os=-bsd
+               ;;
+       convex-c32)
+               basic_machine=c32-convex
+               os=-bsd
+               ;;
+       convex-c34)
+               basic_machine=c34-convex
+               os=-bsd
+               ;;
+       convex-c38)
+               basic_machine=c38-convex
+               os=-bsd
+               ;;
+       cray | j90)
+               basic_machine=j90-cray
+               os=-unicos
+               ;;
+       crds | unos)
+               basic_machine=m68k-crds
+               ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
+       da30 | da30-*)
+               basic_machine=m68k-da30
+               ;;
+       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+               basic_machine=mips-dec
+               ;;
+       decsystem10* | dec10*)
+               basic_machine=pdp10-dec
+               os=-tops10
+               ;;
+       decsystem20* | dec20*)
+               basic_machine=pdp10-dec
+               os=-tops20
+               ;;
+       delta | 3300 | motorola-3300 | motorola-delta \
+             | 3300-motorola | delta-motorola)
+               basic_machine=m68k-motorola
+               ;;
+       delta88)
+               basic_machine=m88k-motorola
+               os=-sysv3
+               ;;
+       dpx20 | dpx20-*)
+               basic_machine=rs6000-bull
+               os=-bosx
+               ;;
+       dpx2* | dpx2*-bull)
+               basic_machine=m68k-bull
+               os=-sysv3
+               ;;
+       ebmon29k)
+               basic_machine=a29k-amd
+               os=-ebmon
+               ;;
+       elxsi)
+               basic_machine=elxsi-elxsi
+               os=-bsd
+               ;;
+       encore | umax | mmax)
+               basic_machine=ns32k-encore
+               ;;
+       es1800 | OSE68k | ose68k | ose | OSE)
+               basic_machine=m68k-ericsson
+               os=-ose
+               ;;
+       fx2800)
+               basic_machine=i860-alliant
+               ;;
+       genix)
+               basic_machine=ns32k-ns
+               ;;
+       gmicro)
+               basic_machine=tron-gmicro
+               os=-sysv
+               ;;
+       go32)
+               basic_machine=i386-pc
+               os=-go32
+               ;;
+       h3050r* | hiux*)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       h8300hms)
+               basic_machine=h8300-hitachi
+               os=-hms
+               ;;
+       h8300xray)
+               basic_machine=h8300-hitachi
+               os=-xray
+               ;;
+       h8500hms)
+               basic_machine=h8500-hitachi
+               os=-hms
+               ;;
+       harris)
+               basic_machine=m88k-harris
+               os=-sysv3
+               ;;
+       hp300-*)
+               basic_machine=m68k-hp
+               ;;
+       hp300bsd)
+               basic_machine=m68k-hp
+               os=-bsd
+               ;;
+       hp300hpux)
+               basic_machine=m68k-hp
+               os=-hpux
+               ;;
+       hp3k9[0-9][0-9] | hp9[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k2[0-9][0-9] | hp9k31[0-9])
+               basic_machine=m68000-hp
+               ;;
+       hp9k3[2-9][0-9])
+               basic_machine=m68k-hp
+               ;;
+       hp9k6[0-9][0-9] | hp6[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k7[0-79][0-9] | hp7[0-79][0-9])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k78[0-9] | hp78[0-9])
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][13679] | hp8[0-9][13679])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][0-9] | hp8[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hppa-next)
+               os=-nextstep3
+               ;;
+       hppaosf)
+               basic_machine=hppa1.1-hp
+               os=-osf
+               ;;
+       hppro)
+               basic_machine=hppa1.1-hp
+               os=-proelf
+               ;;
+       i370-ibm* | ibm*)
+               basic_machine=i370-ibm
+               ;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+       i*86v32)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv32
+               ;;
+       i*86v4*)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv4
+               ;;
+       i*86v)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv
+               ;;
+       i*86sol2)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-solaris2
+               ;;
+       i386mach)
+               basic_machine=i386-mach
+               os=-mach
+               ;;
+       i386-vsta | vsta)
+               basic_machine=i386-unknown
+               os=-vsta
+               ;;
+       iris | iris4d)
+               basic_machine=mips-sgi
+               case $os in
+                   -irix*)
+                       ;;
+                   *)
+                       os=-irix4
+                       ;;
+               esac
+               ;;
+       isi68 | isi)
+               basic_machine=m68k-isi
+               os=-sysv
+               ;;
+       m88k-omron*)
+               basic_machine=m88k-omron
+               ;;
+       magnum | m3230)
+               basic_machine=mips-mips
+               os=-sysv
+               ;;
+       merlin)
+               basic_machine=ns32k-utek
+               os=-sysv
+               ;;
+       mingw32)
+               basic_machine=i386-pc
+               os=-mingw32
+               ;;
+       miniframe)
+               basic_machine=m68000-convergent
+               ;;
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+       mips3*-*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+               ;;
+       mips3*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+               ;;
+       mmix*)
+               basic_machine=mmix-knuth
+               os=-mmixware
+               ;;
+       monitor)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       morphos)
+               basic_machine=powerpc-unknown
+               os=-morphos
+               ;;
+       msdos)
+               basic_machine=i386-pc
+               os=-msdos
+               ;;
+       mvs)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
+       ncr3000)
+               basic_machine=i486-ncr
+               os=-sysv4
+               ;;
+       netbsd386)
+               basic_machine=i386-unknown
+               os=-netbsd
+               ;;
+       netwinder)
+               basic_machine=armv4l-rebel
+               os=-linux
+               ;;
+       news | news700 | news800 | news900)
+               basic_machine=m68k-sony
+               os=-newsos
+               ;;
+       news1000)
+               basic_machine=m68030-sony
+               os=-newsos
+               ;;
+       news-3600 | risc-news)
+               basic_machine=mips-sony
+               os=-newsos
+               ;;
+       necv70)
+               basic_machine=v70-nec
+               os=-sysv
+               ;;
+       next | m*-next )
+               basic_machine=m68k-next
+               case $os in
+                   -nextstep* )
+                       ;;
+                   -ns2*)
+                     os=-nextstep2
+                       ;;
+                   *)
+                     os=-nextstep3
+                       ;;
+               esac
+               ;;
+       nh3000)
+               basic_machine=m68k-harris
+               os=-cxux
+               ;;
+       nh[45]000)
+               basic_machine=m88k-harris
+               os=-cxux
+               ;;
+       nindy960)
+               basic_machine=i960-intel
+               os=-nindy
+               ;;
+       mon960)
+               basic_machine=i960-intel
+               os=-mon960
+               ;;
+       nonstopux)
+               basic_machine=mips-compaq
+               os=-nonstopux
+               ;;
+       np1)
+               basic_machine=np1-gould
+               ;;
+       nv1)
+               basic_machine=nv1-cray
+               os=-unicosmp
+               ;;
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+       op50n-* | op60c-*)
+               basic_machine=hppa1.1-oki
+               os=-proelf
+               ;;
+       or32 | or32-*)
+               basic_machine=or32-unknown
+               os=-coff
+               ;;
+       OSE68000 | ose68000)
+               basic_machine=m68000-ericsson
+               os=-ose
+               ;;
+       os68k)
+               basic_machine=m68k-none
+               os=-os68k
+               ;;
+       pa-hitachi)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       paragon)
+               basic_machine=i860-intel
+               os=-osf
+               ;;
+       pbd)
+               basic_machine=sparc-tti
+               ;;
+       pbb)
+               basic_machine=m68k-tti
+               ;;
+       pc532 | pc532-*)
+               basic_machine=ns32k-pc532
+               ;;
+       pentium | p5 | k5 | k6 | nexgen | viac3)
+               basic_machine=i586-pc
+               ;;
+       pentiumpro | p6 | 6x86 | athlon | athlon_*)
+               basic_machine=i686-pc
+               ;;
+       pentiumii | pentium2 | pentiumiii | pentium3)
+               basic_machine=i686-pc
+               ;;
+       pentium4)
+               basic_machine=i786-pc
+               ;;
+       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumpro-* | p6-* | 6x86-* | athlon-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium4-*)
+               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pn)
+               basic_machine=pn-gould
+               ;;
+       power)  basic_machine=power-ibm
+               ;;
+       ppc)    basic_machine=powerpc-unknown
+               ;;
+       ppc-*)  basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppcle | powerpclittle | ppc-le | powerpc-little)
+               basic_machine=powerpcle-unknown
+               ;;
+       ppcle-* | powerpclittle-*)
+               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64)  basic_machine=powerpc64-unknown
+               ;;
+       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+               basic_machine=powerpc64le-unknown
+               ;;
+       ppc64le-* | powerpc64little-*)
+               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ps2)
+               basic_machine=i386-ibm
+               ;;
+       pw32)
+               basic_machine=i586-unknown
+               os=-pw32
+               ;;
+       rom68k)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       rm[46]00)
+               basic_machine=mips-siemens
+               ;;
+       rtpc | rtpc-*)
+               basic_machine=romp-ibm
+               ;;
+       s390 | s390-*)
+               basic_machine=s390-ibm
+               ;;
+       s390x | s390x-*)
+               basic_machine=s390x-ibm
+               ;;
+       sa29200)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       sb1)
+               basic_machine=mipsisa64sb1-unknown
+               ;;
+       sb1el)
+               basic_machine=mipsisa64sb1el-unknown
+               ;;
+       sei)
+               basic_machine=mips-sei
+               os=-seiux
+               ;;
+       sequent)
+               basic_machine=i386-sequent
+               ;;
+       sh)
+               basic_machine=sh-hitachi
+               os=-hms
+               ;;
+       sh64)
+               basic_machine=sh64-unknown
+               ;;
+       sparclite-wrs | simso-wrs)
+               basic_machine=sparclite-wrs
+               os=-vxworks
+               ;;
+       sps7)
+               basic_machine=m68k-bull
+               os=-sysv2
+               ;;
+       spur)
+               basic_machine=spur-unknown
+               ;;
+       st2000)
+               basic_machine=m68k-tandem
+               ;;
+       stratus)
+               basic_machine=i860-stratus
+               os=-sysv4
+               ;;
+       sun2)
+               basic_machine=m68000-sun
+               ;;
+       sun2os3)
+               basic_machine=m68000-sun
+               os=-sunos3
+               ;;
+       sun2os4)
+               basic_machine=m68000-sun
+               os=-sunos4
+               ;;
+       sun3os3)
+               basic_machine=m68k-sun
+               os=-sunos3
+               ;;
+       sun3os4)
+               basic_machine=m68k-sun
+               os=-sunos4
+               ;;
+       sun4os3)
+               basic_machine=sparc-sun
+               os=-sunos3
+               ;;
+       sun4os4)
+               basic_machine=sparc-sun
+               os=-sunos4
+               ;;
+       sun4sol2)
+               basic_machine=sparc-sun
+               os=-solaris2
+               ;;
+       sun3 | sun3-*)
+               basic_machine=m68k-sun
+               ;;
+       sun4)
+               basic_machine=sparc-sun
+               ;;
+       sun386 | sun386i | roadrunner)
+               basic_machine=i386-sun
+               ;;
+       sv1)
+               basic_machine=sv1-cray
+               os=-unicos
+               ;;
+       symmetry)
+               basic_machine=i386-sequent
+               os=-dynix
+               ;;
+       t3e)
+               basic_machine=alphaev5-cray
+               os=-unicos
+               ;;
+       t90)
+               basic_machine=t90-cray
+               os=-unicos
+               ;;
+       tic54x | c54x*)
+               basic_machine=tic54x-unknown
+               os=-coff
+               ;;
+       tic55x | c55x*)
+               basic_machine=tic55x-unknown
+               os=-coff
+               ;;
+       tic6x | c6x*)
+               basic_machine=tic6x-unknown
+               os=-coff
+               ;;
+       tx39)
+               basic_machine=mipstx39-unknown
+               ;;
+       tx39el)
+               basic_machine=mipstx39el-unknown
+               ;;
+       toad1)
+               basic_machine=pdp10-xkl
+               os=-tops20
+               ;;
+       tower | tower-32)
+               basic_machine=m68k-ncr
+               ;;
+       udi29k)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       ultra3)
+               basic_machine=a29k-nyu
+               os=-sym1
+               ;;
+       v810 | necv810)
+               basic_machine=v810-nec
+               os=-none
+               ;;
+       vaxv)
+               basic_machine=vax-dec
+               os=-sysv
+               ;;
+       vms)
+               basic_machine=vax-dec
+               os=-vms
+               ;;
+       vpp*|vx|vx-*)
+               basic_machine=f301-fujitsu
+               ;;
+       vxworks960)
+               basic_machine=i960-wrs
+               os=-vxworks
+               ;;
+       vxworks68)
+               basic_machine=m68k-wrs
+               os=-vxworks
+               ;;
+       vxworks29k)
+               basic_machine=a29k-wrs
+               os=-vxworks
+               ;;
+       w65*)
+               basic_machine=w65-wdc
+               os=-none
+               ;;
+       w89k-*)
+               basic_machine=hppa1.1-winbond
+               os=-proelf
+               ;;
+       xps | xps100)
+               basic_machine=xps100-honeywell
+               ;;
+       ymp)
+               basic_machine=ymp-cray
+               os=-unicos
+               ;;
+       z8k-*-coff)
+               basic_machine=z8k-unknown
+               os=-sim
+               ;;
+       none)
+               basic_machine=none-none
+               os=-none
+               ;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+       w89k)
+               basic_machine=hppa1.1-winbond
+               ;;
+       op50n)
+               basic_machine=hppa1.1-oki
+               ;;
+       op60c)
+               basic_machine=hppa1.1-oki
+               ;;
+       romp)
+               basic_machine=romp-ibm
+               ;;
+       rs6000)
+               basic_machine=rs6000-ibm
+               ;;
+       vax)
+               basic_machine=vax-dec
+               ;;
+       pdp10)
+               # there are many clones, so DEC is not a safe bet
+               basic_machine=pdp10-unknown
+               ;;
+       pdp11)
+               basic_machine=pdp11-dec
+               ;;
+       we32k)
+               basic_machine=we32k-att
+               ;;
+       sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+               basic_machine=sh-unknown
+               ;;
+       sh64)
+               basic_machine=sh64-unknown
+               ;;
+       sparc | sparcv9 | sparcv9b)
+               basic_machine=sparc-sun
+               ;;
+       cydra)
+               basic_machine=cydra-cydrome
+               ;;
+       orion)
+               basic_machine=orion-highlevel
+               ;;
+       orion105)
+               basic_machine=clipper-highlevel
+               ;;
+       mac | mpw | mac-mpw)
+               basic_machine=m68k-apple
+               ;;
+       pmac | pmac-mpw)
+               basic_machine=powerpc-apple
+               ;;
+       *-unknown)
+               # Make sure to match an already-canonicalized machine name.
+               ;;
+       *)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+       *-digital*)
+               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+               ;;
+       *-commodore*)
+               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+               ;;
+       *)
+               ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+       # -solaris* is a basic system type, with this one exception.
+       -solaris1 | -solaris1.*)
+               os=`echo $os | sed -e 's|solaris1|sunos4|'`
+               ;;
+       -solaris)
+               os=-solaris2
+               ;;
+       -svr4*)
+               os=-sysv4
+               ;;
+       -unixware*)
+               os=-sysv4.2uw
+               ;;
+       -gnu/linux*)
+               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+               ;;
+       # First accept the basic system types.
+       # The portable systems comes first.
+       # Each alternative MUST END IN A *, to match a version number.
+       # -sysv* is not here because it comes later, after sysvr4.
+       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+             | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+             | -aos* \
+             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+             | -hiux* | -386bsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \
+             | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+             | -chorusos* | -chorusrdb* \
+             | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+             | -mingw32* | -linux* | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+             | -powermax* | -dnix* | -nx6 | -nx7 | -sei*)
+       # Remember, each alternative MUST END IN *, to match a version number.
+               ;;
+       -qnx*)
+               case $basic_machine in
+                   x86-* | i*86-*)
+                       ;;
+                   *)
+                       os=-nto$os
+                       ;;
+               esac
+               ;;
+       -nto-qnx*)
+               ;;
+       -nto*)
+               os=`echo $os | sed -e 's|nto|nto-qnx|'`
+               ;;
+       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+             | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+               ;;
+       -mac*)
+               os=`echo $os | sed -e 's|mac|macos|'`
+               ;;
+       -sunos5*)
+               os=`echo $os | sed -e 's|sunos5|solaris2|'`
+               ;;
+       -sunos6*)
+               os=`echo $os | sed -e 's|sunos6|solaris3|'`
+               ;;
+       -opened*)
+               os=-openedition
+               ;;
+       -wince*)
+               os=-wince
+               ;;
+       -osfrose*)
+               os=-osfrose
+               ;;
+       -osf*)
+               os=-osf
+               ;;
+       -utek*)
+               os=-bsd
+               ;;
+       -dynix*)
+               os=-bsd
+               ;;
+       -acis*)
+               os=-aos
+               ;;
+       -atheos*)
+               os=-atheos
+               ;;
+       -386bsd)
+               os=-bsd
+               ;;
+       -ctix* | -uts*)
+               os=-sysv
+               ;;
+       -nova*)
+               os=-rtmk-nova
+               ;;
+       -ns2 )
+               os=-nextstep2
+               ;;
+       -nsk*)
+               os=-nsk
+               ;;
+       # Preserve the version number of sinix5.
+       -sinix5.*)
+               os=`echo $os | sed -e 's|sinix|sysv|'`
+               ;;
+       -sinix*)
+               os=-sysv4
+               ;;
+       -triton*)
+               os=-sysv3
+               ;;
+       -oss*)
+               os=-sysv3
+               ;;
+       -svr4)
+               os=-sysv4
+               ;;
+       -svr3)
+               os=-sysv3
+               ;;
+       -sysvr4)
+               os=-sysv4
+               ;;
+       # This must come after -sysvr4.
+       -sysv*)
+               ;;
+       -ose*)
+               os=-ose
+               ;;
+       -es1800*)
+               os=-ose
+               ;;
+       -xenix)
+               os=-xenix
+               ;;
+       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+               os=-mint
+               ;;
+       -aros*)
+               os=-aros
+               ;;
+       -kaos*)
+               os=-kaos
+               ;;
+       -none)
+               ;;
+       *)
+               # Get rid of the `-' at the beginning of $os.
+               os=`echo $os | sed 's/[^-]*-//'`
+               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+       *-acorn)
+               os=-riscix1.2
+               ;;
+       arm*-rebel)
+               os=-linux
+               ;;
+       arm*-semi)
+               os=-aout
+               ;;
+    c4x-* | tic4x-*)
+        os=-coff
+        ;;
+       # This must come before the *-dec entry.
+       pdp10-*)
+               os=-tops20
+               ;;
+       pdp11-*)
+               os=-none
+               ;;
+       *-dec | vax-*)
+               os=-ultrix4.2
+               ;;
+       m68*-apollo)
+               os=-domain
+               ;;
+       i386-sun)
+               os=-sunos4.0.2
+               ;;
+       m68000-sun)
+               os=-sunos3
+               # This also exists in the configure program, but was not the
+               # default.
+               # os=-sunos4
+               ;;
+       m68*-cisco)
+               os=-aout
+               ;;
+       mips*-cisco)
+               os=-elf
+               ;;
+       mips*-*)
+               os=-elf
+               ;;
+       or32-*)
+               os=-coff
+               ;;
+       *-tti)  # must be before sparc entry or we get the wrong os.
+               os=-sysv3
+               ;;
+       sparc-* | *-sun)
+               os=-sunos4.1.1
+               ;;
+       *-be)
+               os=-beos
+               ;;
+       *-ibm)
+               os=-aix
+               ;;
+       *-wec)
+               os=-proelf
+               ;;
+       *-winbond)
+               os=-proelf
+               ;;
+       *-oki)
+               os=-proelf
+               ;;
+       *-hp)
+               os=-hpux
+               ;;
+       *-hitachi)
+               os=-hiux
+               ;;
+       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+               os=-sysv
+               ;;
+       *-cbm)
+               os=-amigaos
+               ;;
+       *-dg)
+               os=-dgux
+               ;;
+       *-dolphin)
+               os=-sysv3
+               ;;
+       m68k-ccur)
+               os=-rtu
+               ;;
+       m88k-omron*)
+               os=-luna
+               ;;
+       *-next )
+               os=-nextstep
+               ;;
+       *-sequent)
+               os=-ptx
+               ;;
+       *-crds)
+               os=-unos
+               ;;
+       *-ns)
+               os=-genix
+               ;;
+       i370-*)
+               os=-mvs
+               ;;
+       *-next)
+               os=-nextstep3
+               ;;
+       *-gould)
+               os=-sysv
+               ;;
+       *-highlevel)
+               os=-bsd
+               ;;
+       *-encore)
+               os=-bsd
+               ;;
+       *-sgi)
+               os=-irix
+               ;;
+       *-siemens)
+               os=-sysv4
+               ;;
+       *-masscomp)
+               os=-rtu
+               ;;
+       f30[01]-fujitsu | f700-fujitsu)
+               os=-uxpv
+               ;;
+       *-rom68k)
+               os=-coff
+               ;;
+       *-*bug)
+               os=-coff
+               ;;
+       *-apple)
+               os=-macos
+               ;;
+       *-atari*)
+               os=-mint
+               ;;
+       *)
+               os=-none
+               ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+       *-unknown)
+               case $os in
+                       -riscix*)
+                               vendor=acorn
+                               ;;
+                       -sunos*)
+                               vendor=sun
+                               ;;
+                       -aix*)
+                               vendor=ibm
+                               ;;
+                       -beos*)
+                               vendor=be
+                               ;;
+                       -hpux*)
+                               vendor=hp
+                               ;;
+                       -mpeix*)
+                               vendor=hp
+                               ;;
+                       -hiux*)
+                               vendor=hitachi
+                               ;;
+                       -unos*)
+                               vendor=crds
+                               ;;
+                       -dgux*)
+                               vendor=dg
+                               ;;
+                       -luna*)
+                               vendor=omron
+                               ;;
+                       -genix*)
+                               vendor=ns
+                               ;;
+                       -mvs* | -opened*)
+                               vendor=ibm
+                               ;;
+                       -ptx*)
+                               vendor=sequent
+                               ;;
+                       -vxsim* | -vxworks* | -windiss*)
+                               vendor=wrs
+                               ;;
+                       -aux*)
+                               vendor=apple
+                               ;;
+                       -hms*)
+                               vendor=hitachi
+                               ;;
+                       -mpw* | -macos*)
+                               vendor=apple
+                               ;;
+                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+                               vendor=atari
+                               ;;
+                       -vos*)
+                               vendor=stratus
+                               ;;
+               esac
+               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+               ;;
+esac
+
+echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/lib/cppunit-1.10.0/config/depcomp b/lib/cppunit-1.10.0/config/depcomp
new file mode 100755 (executable)
index 0000000..aea3d00
--- /dev/null
@@ -0,0 +1,472 @@
+#! /bin/sh
+
+# depcomp - compile a program generating dependencies as side-effects
+# Copyright 1999, 2000 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+# `libtool' can also be set to `yes' or `no'.
+
+if test -z "$depfile"; then
+   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
+   dir=`echo "$object" | sed 's,/.*$,/,'`
+   if test "$dir" = "$object"; then
+      dir=
+   fi
+   # FIXME: should be _deps on DOS.
+   depfile="$dir.deps/$base"
+fi
+
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> $depfile
+    echo >> $depfile
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> $depfile
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  This file always lives in the current directory.
+  # Also, the AIX compiler puts `$object:' at the start of each line;
+  # $object doesn't have directory information.
+  stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
+  tmpdepfile="$stripped.u"
+  outname="$stripped.o"
+  if test "$libtool" = yes; then
+    "$@" -Wc,-M
+  else
+    "$@" -M
+  fi
+
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      tmpdepfile1="$dir.libs/$base.lo.d"
+      tmpdepfile2="$dir.libs/$base.d"
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1="$dir$base.o.d"
+      tmpdepfile2="$dir$base.d"
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2"
+      exit $stat
+   fi
+
+   if test -f "$tmpdepfile1"; then
+      tmpdepfile="$tmpdepfile1"
+   else
+      tmpdepfile="$tmpdepfile2"
+   fi
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a space and a tab in the [].
+      sed -e 's,^.*\.[a-z]*:[  ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the proprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no
+  for arg in "$@"; do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix="`echo $object | sed 's/^.*\././'`"
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the proprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the proprocessed file to stdout, regardless of -o,
+  # because we must use -o when running libtool.
+  "$@" || exit $?
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+       set fnord "$@"
+       shift
+       shift
+       ;;
+    *)
+       set fnord "$@" "$arg"
+       shift
+       shift
+       ;;
+    esac
+  done
+  "$@" -E |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::   \1 \\:p' >> "$depfile"
+  echo "       " >> "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
diff --git a/lib/cppunit-1.10.0/config/install-sh b/lib/cppunit-1.10.0/config/install-sh
new file mode 100755 (executable)
index 0000000..6ce63b9
--- /dev/null
@@ -0,0 +1,294 @@
+#!/bin/sh
+#
+# install - install a program, script, or datafile
+#
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+       -c) instcmd=$cpprog
+           shift
+           continue;;
+
+       -d) dir_arg=true
+           shift
+           continue;;
+
+       -m) chmodcmd="$chmodprog $2"
+           shift
+           shift
+           continue;;
+
+       -o) chowncmd="$chownprog $2"
+           shift
+           shift
+           continue;;
+
+       -g) chgrpcmd="$chgrpprog $2"
+           shift
+           shift
+           continue;;
+
+       -s) stripcmd=$stripprog
+           shift
+           continue;;
+
+       -t=*) transformarg=`echo $1 | sed 's/-t=//'`
+           shift
+           continue;;
+
+       -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+           shift
+           continue;;
+
+       *)  if [ x"$src" = x ]
+           then
+               src=$1
+           else
+               # this colon is to work around a 386BSD /bin/sh bug
+               :
+               dst=$1
+           fi
+           shift
+           continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+       echo "$0: no input file specified" >&2
+       exit 1
+else
+       :
+fi
+
+if [ x"$dir_arg" != x ]; then
+       dst=$src
+       src=""
+
+       if [ -d "$dst" ]; then
+               instcmd=:
+               chmodcmd=""
+       else
+               instcmd=$mkdirprog
+       fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad
+# if $src (and thus $dsttmp) contains '*'.
+
+       if [ -f "$src" ] || [ -d "$src" ]
+       then
+               :
+       else
+               echo "$0: $src does not exist" >&2
+               exit 1
+       fi
+
+       if [ x"$dst" = x ]
+       then
+               echo "$0: no destination specified" >&2
+               exit 1
+       else
+               :
+       fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+       if [ -d "$dst" ]
+       then
+               dst=$dst/`basename "$src"`
+       else
+               :
+       fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='
+       '
+IFS="${IFS-$defaultIFS}"
+
+oIFS=$IFS
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS=$oIFS
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+       pathcomp=$pathcomp$1
+       shift
+
+       if [ ! -d "$pathcomp" ] ;
+        then
+               $mkdirprog "$pathcomp"
+       else
+               :
+       fi
+
+       pathcomp=$pathcomp/
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+       $doit $instcmd "$dst" &&
+
+       if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
+       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
+       if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
+       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+       if [ x"$transformarg" = x ]
+       then
+               dstfile=`basename "$dst"`
+       else
+               dstfile=`basename "$dst" $transformbasename |
+                       sed $transformarg`$transformbasename
+       fi
+
+# don't allow the sed command to completely eliminate the filename
+
+       if [ x"$dstfile" = x ]
+       then
+               dstfile=`basename "$dst"`
+       else
+               :
+       fi
+
+# Make a couple of temp file names in the proper directory.
+
+       dsttmp=$dstdir/_inst.$$_
+       rmtmp=$dstdir/_rm.$$_
+
+# Trap to clean up temp files at exit.
+
+       trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+       trap '(exit $?); exit' 1 2 13 15
+
+# Move or copy the file name to the temp name
+
+       $doit $instcmd "$src" "$dsttmp" &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing.  If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+       if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
+       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
+       if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
+       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
+
+# Now remove or move aside any old file at destination location.  We try this
+# two ways since rm can't unlink itself on some systems and the destination
+# file might be busy for other reasons.  In this case, the final cleanup
+# might fail but the new file should still install successfully.
+
+{
+       if [ -f "$dstdir/$dstfile" ]
+       then
+               $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
+               $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
+               {
+                 echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+                 (exit 1); exit
+               }
+       else
+               :
+       fi
+} &&
+
+# Now rename the file to the real destination.
+
+       $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+
+fi &&
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+
+{
+       (exit 0); exit
+}
diff --git a/lib/cppunit-1.10.0/config/ltmain.sh b/lib/cppunit-1.10.0/config/ltmain.sh
new file mode 100644 (file)
index 0000000..8bf1b20
--- /dev/null
@@ -0,0 +1,6291 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell, and then maybe $echo will work.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The name of this program.
+progname=`$echo "$0" | ${SED} 's%^.*/%%'`
+modename="$progname"
+
+# Constants.
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5
+TIMESTAMP=" (1.1220.2.1 2003/04/14 22:48:00)"
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo A|od -x` in
+ *[Cc]1*) # EBCDIC based system
+  SP2NL="tr '\100' '\n'"
+  NL2SP="tr '\r\n' '\100\100'"
+  ;;
+ *) # Assume ASCII based system
+  SP2NL="tr '\040' '\012'"
+  NL2SP="tr '\015\012' '\040\040'"
+  ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+: ${IFS="      "}
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  $echo "$modename: not configured to build any kind of library" 1>&2
+  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit 1
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+win32_libid () {
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+      grep -E 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+      win32_nmres=`eval $NM -f posix -A $1 | \
+       sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
+      if test "X$win32_nmres" = "Ximport" ; then
+        win32_libid_type="x86 archive import"
+      else
+        win32_libid_type="x86 archive static"
+      fi
+    fi
+    ;;
+  *DLL*) 
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $echo $win32_libid_type
+}
+
+# End of Shell function definitions
+#####################################
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    tag)
+      tagname="$arg"
+
+      # Check whether tagname contains only valid characters
+      case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+       $echo "$progname: invalid tag name: $tagname" 1>&2
+       exit 1
+       ;;
+      esac
+
+      case $tagname in
+      CC)
+       # Don't test for the "default" C tag, as we know, it's there, but
+       # not specially marked.
+       ;;
+      *)
+       if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then
+         taglist="$taglist $tagname"
+         # Evaluate the configuration.
+         eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`"
+       else
+         $echo "$progname: ignoring unknown tag $tagname" 1>&2
+       fi
+       ;;
+      esac
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    $echo
+    $echo "Copyright (C) 2003  Free Software Foundation, Inc."
+    $echo "This is free software; see the source for copying conditions.  There is NO"
+    $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+    exit 0
+    ;;
+
+  --config)
+    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0"
+    done
+    exit 0
+    ;;
+
+  --debug)
+    $echo "$progname: enabling shell trace mode"
+    set -x
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    $echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      $echo "enable shared libraries"
+    else
+      $echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      $echo "enable static libraries"
+    else
+      $echo "disable static libraries"
+    fi
+    exit 0
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --preserve-dup-deps) duplicate_deps="yes" ;;
+
+  --quiet | --silent)
+    show=:
+    ;;
+
+  --tag) prevopt="--tag" prev=tag ;;
+  --tag=*)
+    set tag "$optarg" ${1+"$@"}
+    shift
+    prev=tag
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+fi
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+    $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2
+    case $nonopt in
+    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+      mode=link
+      for arg
+      do
+       case $arg in
+       -c)
+          mode=compile
+          break
+          ;;
+       esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+       if test -n "$nonopt"; then
+         $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+       else
+         $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+       fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_output=
+    arg_mode=normal
+    libobj=
+
+    for arg
+    do
+      case "$arg_mode" in
+      arg  )
+       # do not "continue".  Instead, add this to base_compile
+       lastarg="$arg"
+       arg_mode=normal
+       ;;
+
+      target )
+       libobj="$arg"
+       arg_mode=normal
+       continue
+       ;;
+
+      normal )
+       # Accept any command-line options.
+       case $arg in
+       -o)
+         if test -n "$libobj" ; then
+           $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+           exit 1
+         fi
+         arg_mode=target
+         continue
+         ;;
+
+       -static)
+         build_old_libs=yes
+         continue
+         ;;
+
+       -prefer-pic)
+         pic_mode=yes
+         continue
+         ;;
+
+       -prefer-non-pic)
+         pic_mode=no
+         continue
+         ;;
+
+       -Xcompiler)
+         arg_mode=arg  #  the next one goes into the "base_compile" arg list
+         continue      #  The current "srcfile" will either be retained or
+         ;;            #  replaced later.  I would guess that would be a bug.
+
+       -Wc,*)
+         args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+         lastarg=
+         save_ifs="$IFS"; IFS=','
+         for arg in $args; do
+           IFS="$save_ifs"
+
+           # Double-quote args containing other shell metacharacters.
+           # Many Bourne shells cannot handle close brackets correctly
+           # in scan sets, so we specify it separately.
+           case $arg in
+             *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \     ]*|*]*|"")
+             arg="\"$arg\""
+             ;;
+           esac
+           lastarg="$lastarg $arg"
+         done
+         IFS="$save_ifs"
+         lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+         # Add the arguments to base_compile.
+         base_compile="$base_compile $lastarg"
+         continue
+         ;;
+
+       * )
+         # Accept the current argument as the source file.
+         # The previous "srcfile" becomes the current argument.
+         #
+         lastarg="$srcfile"
+         srcfile="$arg"
+         ;;
+       esac  #  case $arg
+       ;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      case $lastarg in
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
+       lastarg="\"$lastarg\""
+       ;;
+      esac
+
+      base_compile="$base_compile $lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      $echo "$modename: you must specify an argument for -Xcompile"
+      exit 1
+      ;;
+    target)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit 1
+      ;;
+    *)
+      # Get the name of the library object.
+      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSifmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.ii) xform=ii ;;
+    *.class) xform=class ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    *.java) xform=java ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit 1
+      ;;
+    esac
+
+    # Infer tagged configuration to use if any are available and
+    # if one wasn't chosen via the "--tag" command line option.
+    # Only attempt this if the compiler in the base compile
+    # command doesn't match the default compiler.
+    if test -n "$available_tags" && test -z "$tagname"; then
+      case $base_compile in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+       for z in $available_tags; do
+         if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
+           # Evaluate the configuration.
+           eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
+           case "$base_compile " in
+           "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*)
+             # The compiler in the base compile command matches
+             # the one in the tagged configuration.
+             # Assume this is the tagged configuration we want.
+             tagname=$z
+             break
+             ;;
+           esac
+         fi
+       done
+       # If $tagname still isn't set, then no tagged configuration
+       # was found and let the user know that the "--tag" command
+       # line option must be used.
+       if test -z "$tagname"; then
+         $echo "$modename: unable to infer tagged configuration"
+         $echo "$modename: specify a tag with \`--tag'" 1>&2
+         exit 1
+#        else
+#          $echo "$modename: using $tagname tagged configuration"
+       fi
+       ;;
+      esac
+    fi
+
+    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$xdir" = "X$obj"; then
+      xdir=
+    else
+      xdir=$xdir/
+    fi
+    lobj=${xdir}$objdir/$objname
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit 1" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit 1" 1 2 15
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$0" "$lockfile" 2>/dev/null; do
+       $show "Waiting for $lockfile to be removed"
+       sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+       $echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $run $rm $removelist
+       exit 1
+      fi
+      $echo $srcfile > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+
+    $run $rm "$libobj" "${libobj}T"
+
+    # Create a libtool object file (analogous to a ".la" file),
+    # but don't create it if we're doing a dry run.
+    test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+       command="$base_compile $srcfile $pic_flag"
+      else
+       # Don't build PIC code
+       command="$base_compile $srcfile"
+      fi
+
+      if test ! -d "${xdir}$objdir"; then
+       $show "$mkdir ${xdir}$objdir"
+       $run $mkdir ${xdir}$objdir
+       status=$?
+       if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
+         exit $status
+       fi
+      fi
+
+      if test -z "$output_obj"; then
+       # Place PIC objects in $objdir
+       command="$command -o $lobj"
+      fi
+
+      $run $rm "$lobj" "$output_obj"
+
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+       test -n "$output_obj" && $run $rm $removelist
+       exit 1
+      fi
+
+      if test "$need_locks" = warn &&
+        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+       $echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $run $rm $removelist
+       exit 1
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+       $show "$mv $output_obj $lobj"
+       if $run $mv $output_obj $lobj; then :
+       else
+         error=$?
+         $run $rm $removelist
+         exit $error
+       fi
+      fi
+
+      # Append the name of the PIC object to the libtool object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+      # Allow error messages only from the first compilation.
+      suppress_output=' >/dev/null 2>&1'
+    else
+      # No PIC object so indicate it doesn't exist in the libtool
+      # object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+       # Don't build PIC code
+       command="$base_compile $srcfile"
+      else
+       command="$base_compile $srcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+       command="$command -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$obj" "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+       $run $rm $removelist
+       exit 1
+      fi
+
+      if test "$need_locks" = warn &&
+        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+       $echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $run $rm $removelist
+       exit 1
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+       $show "$mv $output_obj $obj"
+       if $run $mv $output_obj $obj; then :
+       else
+         error=$?
+         $run $rm $removelist
+         exit $error
+       fi
+      fi
+
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+    else
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+    fi
+
+    $run $mv "${libobj}T" "${libobj}"
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit 0
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    base_compile="$nonopt"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static)
+       if test "X$arg" = "X-all-static"; then
+         if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+           $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+         fi
+         if test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+       else
+         if test -z "$pic_flag" && test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+       fi
+       build_libtool_libs=no
+       build_old_libs=yes
+       prefer_static_libs=yes
+       break
+       ;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      base_compile="$base_compile $arg"
+      shift
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
+       qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+       ;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+       case $prev in
+       output)
+         compile_command="$compile_command @OUTPUT@"
+         finalize_command="$finalize_command @OUTPUT@"
+         ;;
+       esac
+
+       case $prev in
+       dlfiles|dlprefiles)
+         if test "$preload" = no; then
+           # Add the symbol object into the linking commands.
+           compile_command="$compile_command @SYMFILE@"
+           finalize_command="$finalize_command @SYMFILE@"
+           preload=yes
+         fi
+         case $arg in
+         *.la | *.lo) ;;  # We handle these cases below.
+         force)
+           if test "$dlself" = no; then
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
+         self)
+           if test "$prev" = dlprefiles; then
+             dlself=yes
+           elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+             dlself=yes
+           else
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
+         *)
+           if test "$prev" = dlfiles; then
+             dlfiles="$dlfiles $arg"
+           else
+             dlprefiles="$dlprefiles $arg"
+           fi
+           prev=
+           continue
+           ;;
+         esac
+         ;;
+       expsyms)
+         export_symbols="$arg"
+         if test ! -f "$arg"; then
+           $echo "$modename: symbol file \`$arg' does not exist"
+           exit 1
+         fi
+         prev=
+         continue
+         ;;
+       expsyms_regex)
+         export_symbols_regex="$arg"
+         prev=
+         continue
+         ;;
+       inst_prefix)
+         inst_prefix_dir="$arg"
+         prev=
+         continue
+         ;;
+       release)
+         release="-$arg"
+         prev=
+         continue
+         ;;
+       objectlist)
+         if test -f "$arg"; then
+           save_arg=$arg
+           moreargs=
+           for fil in `cat $save_arg`
+           do
+#            moreargs="$moreargs $fil"
+             arg=$fil
+             # A libtool-controlled object.
+
+             # Check to see that this really is a libtool object.
+             if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+               pic_object=
+               non_pic_object=
+
+               # Read the .lo file
+               # If there is no directory component, then add one.
+               case $arg in
+               */* | *\\*) . $arg ;;
+               *) . ./$arg ;;
+               esac
+
+               if test -z "$pic_object" || \
+                  test -z "$non_pic_object" ||
+                  test "$pic_object" = none && \
+                  test "$non_pic_object" = none; then
+                 $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+                 exit 1
+               fi
+
+               # Extract subdirectory from the argument.
+               xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+               if test "X$xdir" = "X$arg"; then
+                 xdir=
+               else
+                 xdir="$xdir/"
+               fi
+
+               if test "$pic_object" != none; then
+                 # Prepend the subdirectory the object is found in.
+                 pic_object="$xdir$pic_object"
+
+                 if test "$prev" = dlfiles; then
+                   if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+                     dlfiles="$dlfiles $pic_object"
+                     prev=
+                     continue
+                   else
+                     # If libtool objects are unsupported, then we need to preload.
+                     prev=dlprefiles
+                   fi
+                 fi
+
+                 # CHECK ME:  I think I busted this.  -Ossama
+                 if test "$prev" = dlprefiles; then
+                   # Preload the old-style object.
+                   dlprefiles="$dlprefiles $pic_object"
+                   prev=
+                 fi
+
+                 # A PIC object.
+                 libobjs="$libobjs $pic_object"
+                 arg="$pic_object"
+               fi
+
+               # Non-PIC object.
+               if test "$non_pic_object" != none; then
+                 # Prepend the subdirectory the object is found in.
+                 non_pic_object="$xdir$non_pic_object"
+
+                 # A standard non-PIC object
+                 non_pic_objects="$non_pic_objects $non_pic_object"
+                 if test -z "$pic_object" || test "$pic_object" = none ; then
+                   arg="$non_pic_object"
+                 fi
+               fi
+             else
+               # Only an error if not doing a dry-run.
+               if test -z "$run"; then
+                 $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+                 exit 1
+               else
+                 # Dry-run case.
+
+                 # Extract subdirectory from the argument.
+                 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+                 if test "X$xdir" = "X$arg"; then
+                   xdir=
+                 else
+                   xdir="$xdir/"
+                 fi
+
+                 pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+                 non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+                 libobjs="$libobjs $pic_object"
+                 non_pic_objects="$non_pic_objects $non_pic_object"
+               fi
+             fi
+           done
+         else
+           $echo "$modename: link input file \`$save_arg' does not exist"
+           exit 1
+         fi
+         arg=$save_arg
+         prev=
+         continue
+         ;;
+       rpath | xrpath)
+         # We need an absolute path.
+         case $arg in
+         [\\/]* | [A-Za-z]:[\\/]*) ;;
+         *)
+           $echo "$modename: only absolute run-paths are allowed" 1>&2
+           exit 1
+           ;;
+         esac
+         if test "$prev" = rpath; then
+           case "$rpath " in
+           *" $arg "*) ;;
+           *) rpath="$rpath $arg" ;;
+           esac
+         else
+           case "$xrpath " in
+           *" $arg "*) ;;
+           *) xrpath="$xrpath $arg" ;;
+           esac
+         fi
+         prev=
+         continue
+         ;;
+       xcompiler)
+         compiler_flags="$compiler_flags $qarg"
+         prev=
+         compile_command="$compile_command $qarg"
+         finalize_command="$finalize_command $qarg"
+         continue
+         ;;
+       xlinker)
+         linker_flags="$linker_flags $qarg"
+         compiler_flags="$compiler_flags $wl$qarg"
+         prev=
+         compile_command="$compile_command $wl$qarg"
+         finalize_command="$finalize_command $wl$qarg"
+         continue
+         ;;
+       xcclinker)
+         linker_flags="$linker_flags $qarg"
+         compiler_flags="$compiler_flags $qarg"
+         prev=
+         compile_command="$compile_command $qarg"
+         finalize_command="$finalize_command $qarg"
+         continue
+         ;;
+       *)
+         eval "$prev=\"\$arg\""
+         prev=
+         continue
+         ;;
+       esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+       if test -n "$link_static_flag"; then
+         compile_command="$compile_command $link_static_flag"
+         finalize_command="$finalize_command $link_static_flag"
+       fi
+       continue
+       ;;
+
+      -allow-undefined)
+       # FIXME: remove this flag sometime in the future.
+       $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+       continue
+       ;;
+
+      -avoid-version)
+       avoid_version=yes
+       continue
+       ;;
+
+      -dlopen)
+       prev=dlfiles
+       continue
+       ;;
+
+      -dlpreopen)
+       prev=dlprefiles
+       continue
+       ;;
+
+      -export-dynamic)
+       export_dynamic=yes
+       continue
+       ;;
+
+      -export-symbols | -export-symbols-regex)
+       if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+         $echo "$modename: more than one -exported-symbols argument is not allowed"
+         exit 1
+       fi
+       if test "X$arg" = "X-export-symbols"; then
+         prev=expsyms
+       else
+         prev=expsyms_regex
+       fi
+       continue
+       ;;
+
+      -inst-prefix-dir)
+       prev=inst_prefix
+       continue
+       ;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+       case $with_gcc/$host in
+       no/*-*-irix* | /*-*-irix*)
+         compile_command="$compile_command $arg"
+         finalize_command="$finalize_command $arg"
+         ;;
+       esac
+       continue
+       ;;
+
+      -L*)
+       dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       *)
+         absdir=`cd "$dir" && pwd`
+         if test -z "$absdir"; then
+           $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+           exit 1
+         fi
+         dir="$absdir"
+         ;;
+       esac
+       case "$deplibs " in
+       *" -L$dir "*) ;;
+       *)
+         deplibs="$deplibs -L$dir"
+         lib_search_path="$lib_search_path $dir"
+         ;;
+       esac
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+         case :$dllsearchpath: in
+         *":$dir:"*) ;;
+         *) dllsearchpath="$dllsearchpath:$dir";;
+         esac
+         ;;
+       esac
+       continue
+       ;;
+
+      -l*)
+       if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+         case $host in
+         *-*-cygwin* | *-*-pw32* | *-*-beos*)
+           # These systems don't actually have a C or math library (as such)
+           continue
+           ;;
+         *-*-mingw* | *-*-os2*)
+           # These systems don't actually have a C library (as such)
+           test "X$arg" = "X-lc" && continue
+           ;;
+         *-*-openbsd* | *-*-freebsd*)
+           # Do not include libc due to us having libc/libc_r.
+           test "X$arg" = "X-lc" && continue
+           ;;
+         *-*-rhapsody* | *-*-darwin1.[012])
+           # Rhapsody C and math libraries are in the System framework
+           deplibs="$deplibs -framework System"
+           continue
+         esac
+       elif test "X$arg" = "X-lc_r"; then
+        case $host in
+        *-*-openbsd* | *-*-freebsd*)
+          # Do not include libc_r directly, use -pthread flag.
+          continue
+          ;;
+        esac
+       fi
+       deplibs="$deplibs $arg"
+       continue
+       ;;
+
+      -module)
+       module=yes
+       continue
+       ;;
+
+      # gcc -m* arguments should be passed to the linker via $compiler_flags
+      # in order to pass architecture information to the linker
+      # (e.g. 32 vs 64-bit).  This may also be accomplished via -Wl,-mfoo
+      # but this is not reliable with gcc because gcc may use -mfoo to
+      # select a different linker, different libraries, etc, while
+      # -Wl,-mfoo simply passes -mfoo to the linker.
+      -m*)
+       # Unknown arguments in both finalize_command and compile_command need
+       # to be aesthetically quoted because they are evaled later.
+       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+       case $arg in
+       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*|"")
+         arg="\"$arg\""
+         ;;
+       esac
+        compile_command="$compile_command $arg"
+        finalize_command="$finalize_command $arg"
+        if test "$with_gcc" = "yes" ; then
+          compiler_flags="$compiler_flags $arg"
+        fi
+        continue
+        ;;
+
+      -shrext)
+       prev=shrext
+       continue
+       ;;
+
+      -no-fast-install)
+       fast_install=no
+       continue
+       ;;
+
+      -no-install)
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+         # The PATH hackery in wrapper scripts is required on Windows
+         # in order for the loader to find any dlls it needs.
+         $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+         $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+         fast_install=no
+         ;;
+       *) no_install=yes ;;
+       esac
+       continue
+       ;;
+
+      -no-undefined)
+       allow_undefined=no
+       continue
+       ;;
+
+      -objectlist)
+       prev=objectlist
+       continue
+       ;;
+
+      -o) prev=output ;;
+
+      -release)
+       prev=release
+       continue
+       ;;
+
+      -rpath)
+       prev=rpath
+       continue
+       ;;
+
+      -R)
+       prev=xrpath
+       continue
+       ;;
+
+      -R*)
+       dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       *)
+         $echo "$modename: only absolute run-paths are allowed" 1>&2
+         exit 1
+         ;;
+       esac
+       case "$xrpath " in
+       *" $dir "*) ;;
+       *) xrpath="$xrpath $dir" ;;
+       esac
+       continue
+       ;;
+
+      -static)
+       # The effects of -static are defined in a previous loop.
+       # We used to do the same as -all-static on platforms that
+       # didn't have a PIC flag, but the assumption that the effects
+       # would be equivalent was wrong.  It would break on at least
+       # Digital Unix and AIX.
+       continue
+       ;;
+
+      -thread-safe)
+       thread_safe=yes
+       continue
+       ;;
+
+      -version-info)
+       prev=vinfo
+       continue
+       ;;
+      -version-number)
+       prev=vinfo
+       vinfo_number=yes
+       continue
+       ;;
+
+      -Wc,*)
+       args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+       arg=
+       save_ifs="$IFS"; IFS=','
+       for flag in $args; do
+         IFS="$save_ifs"
+         case $flag in
+           *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \       ]*|*]*|"")
+           flag="\"$flag\""
+           ;;
+         esac
+         arg="$arg $wl$flag"
+         compiler_flags="$compiler_flags $flag"
+       done
+       IFS="$save_ifs"
+       arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+       ;;
+
+      -Wl,*)
+       args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+       arg=
+       save_ifs="$IFS"; IFS=','
+       for flag in $args; do
+         IFS="$save_ifs"
+         case $flag in
+           *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \       ]*|*]*|"")
+           flag="\"$flag\""
+           ;;
+         esac
+         arg="$arg $wl$flag"
+         compiler_flags="$compiler_flags $wl$flag"
+         linker_flags="$linker_flags $flag"
+       done
+       IFS="$save_ifs"
+       arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+       ;;
+
+      -Xcompiler)
+       prev=xcompiler
+       continue
+       ;;
+
+      -Xlinker)
+       prev=xlinker
+       continue
+       ;;
+
+      -XCClinker)
+       prev=xcclinker
+       continue
+       ;;
+
+      # Some other compiler flag.
+      -* | +*)
+       # Unknown arguments in both finalize_command and compile_command need
+       # to be aesthetically quoted because they are evaled later.
+       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+       case $arg in
+       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*|"")
+         arg="\"$arg\""
+         ;;
+       esac
+       ;;
+
+      *.$objext)
+       # A standard object.
+       objs="$objs $arg"
+       ;;
+
+      *.lo)
+       # A libtool-controlled object.
+
+       # Check to see that this really is a libtool object.
+       if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+         pic_object=
+         non_pic_object=
+
+         # Read the .lo file
+         # If there is no directory component, then add one.
+         case $arg in
+         */* | *\\*) . $arg ;;
+         *) . ./$arg ;;
+         esac
+
+         if test -z "$pic_object" || \
+            test -z "$non_pic_object" ||
+            test "$pic_object" = none && \
+            test "$non_pic_object" = none; then
+           $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+           exit 1
+         fi
+
+         # Extract subdirectory from the argument.
+         xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+         if test "X$xdir" = "X$arg"; then
+           xdir=
+         else
+           xdir="$xdir/"
+         fi
+
+         if test "$pic_object" != none; then
+           # Prepend the subdirectory the object is found in.
+           pic_object="$xdir$pic_object"
+
+           if test "$prev" = dlfiles; then
+             if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+               dlfiles="$dlfiles $pic_object"
+               prev=
+               continue
+             else
+               # If libtool objects are unsupported, then we need to preload.
+               prev=dlprefiles
+             fi
+           fi
+
+           # CHECK ME:  I think I busted this.  -Ossama
+           if test "$prev" = dlprefiles; then
+             # Preload the old-style object.
+             dlprefiles="$dlprefiles $pic_object"
+             prev=
+           fi
+
+           # A PIC object.
+           libobjs="$libobjs $pic_object"
+           arg="$pic_object"
+         fi
+
+         # Non-PIC object.
+         if test "$non_pic_object" != none; then
+           # Prepend the subdirectory the object is found in.
+           non_pic_object="$xdir$non_pic_object"
+
+           # A standard non-PIC object
+           non_pic_objects="$non_pic_objects $non_pic_object"
+           if test -z "$pic_object" || test "$pic_object" = none ; then
+             arg="$non_pic_object"
+           fi
+         fi
+       else
+         # Only an error if not doing a dry-run.
+         if test -z "$run"; then
+           $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+           exit 1
+         else
+           # Dry-run case.
+
+           # Extract subdirectory from the argument.
+           xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+           if test "X$xdir" = "X$arg"; then
+             xdir=
+           else
+             xdir="$xdir/"
+           fi
+
+           pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+           non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+           libobjs="$libobjs $pic_object"
+           non_pic_objects="$non_pic_objects $non_pic_object"
+         fi
+       fi
+       ;;
+
+      *.$libext)
+       # An archive.
+       deplibs="$deplibs $arg"
+       old_deplibs="$old_deplibs $arg"
+       continue
+       ;;
+
+      *.la)
+       # A libtool-controlled library.
+
+       if test "$prev" = dlfiles; then
+         # This library was specified with -dlopen.
+         dlfiles="$dlfiles $arg"
+         prev=
+       elif test "$prev" = dlprefiles; then
+         # The library was specified with -dlpreopen.
+         dlprefiles="$dlprefiles $arg"
+         prev=
+       else
+         deplibs="$deplibs $arg"
+       fi
+       continue
+       ;;
+
+      # Some other compiler argument.
+      *)
+       # Unknown arguments in both finalize_command and compile_command need
+       # to be aesthetically quoted because they are evaled later.
+       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+       case $arg in
+       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*|"")
+         arg="\"$arg\""
+         ;;
+       esac
+       ;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+       compile_command="$compile_command $arg"
+       finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Infer tagged configuration to use if any are available and
+    # if one wasn't chosen via the "--tag" command line option.
+    # Only attempt this if the compiler in the base link
+    # command doesn't match the default compiler.
+    if test -n "$available_tags" && test -z "$tagname"; then
+      case $base_compile in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+       for z in $available_tags; do
+         if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
+           # Evaluate the configuration.
+           eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
+           case $base_compile in
+           "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*)
+             # The compiler in $compile_command matches
+             # the one in the tagged configuration.
+             # Assume this is the tagged configuration we want.
+             tagname=$z
+             break
+             ;;
+           esac
+         fi
+       done
+       # If $tagname still isn't set, then no tagged configuration
+       # was found and let the user know that the "--tag" command
+       # line option must be used.
+       if test -z "$tagname"; then
+         $echo "$modename: unable to infer tagged configuration"
+         $echo "$modename: specify a tag with \`--tag'" 1>&2
+         exit 1
+#       else
+#         $echo "$modename: using $tagname tagged configuration"
+       fi
+       ;;
+      esac
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d "$output_objdir"; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      status=$?
+      if test "$status" -ne 0 && test ! -d "$output_objdir"; then
+       exit $status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    case $host in
+    *cygwin* | *mingw* | *pw32*)
+      # don't eliminate duplcations in $postdeps and $predeps
+      duplicate_compiler_generated_deps=yes
+      ;;
+    *)
+      duplicate_compiler_generated_deps=$duplicate_deps
+      ;;
+    esac
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if test "X$duplicate_deps" = "Xyes" ; then
+       case "$libs " in
+       *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+       esac
+      fi
+      libs="$libs $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+       for pre_post_dep in $predeps $postdeps; do
+         case "$pre_post_deps " in
+         *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+         esac
+         pre_post_deps="$pre_post_deps $pre_post_dep"
+       done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+       passes="conv link"
+       for file in $dlfiles $dlprefiles; do
+         case $file in
+         *.la) ;;
+         *)
+           $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+           exit 1
+           ;;
+         esac
+       done
+       ;;
+    prog)
+       compile_deplibs=
+       finalize_deplibs=
+       alldeplibs=no
+       newdlfiles=
+       newdlprefiles=
+       passes="conv scan dlopen dlpreopen link"
+       ;;
+    *)  passes="conv"
+       ;;
+    esac
+    for pass in $passes; do
+      if test "$linkmode,$pass" = "lib,link" ||
+        test "$linkmode,$pass" = "prog,scan"; then
+       libs="$deplibs"
+       deplibs=
+      fi
+      if test "$linkmode" = prog; then
+       case $pass in
+       dlopen) libs="$dlfiles" ;;
+       dlpreopen) libs="$dlprefiles" ;;
+       link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+       esac
+      fi
+      if test "$pass" = dlopen; then
+       # Collect dlpreopened libraries
+       save_deplibs="$deplibs"
+       deplibs=
+      fi
+      for deplib in $libs; do
+       lib=
+       found=no
+       case $deplib in
+       -l*)
+         if test "$linkmode" != lib && test "$linkmode" != prog; then
+           $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+           continue
+         fi
+         if test "$pass" = conv; then
+           deplibs="$deplib $deplibs"
+           continue
+         fi
+         name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+         for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+           # Search the libtool library
+           lib="$searchdir/lib${name}.la"
+           if test -f "$lib"; then
+             found=yes
+             break
+           fi
+         done
+         if test "$found" != yes; then
+           # deplib doesn't seem to be a libtool library
+           if test "$linkmode,$pass" = "prog,link"; then
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             deplibs="$deplib $deplibs"
+             test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+           fi
+           continue
+         else # deplib is a libtool library
+           # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+           # We need to do some special things here, and not later.
+           if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+             case " $predeps $postdeps " in
+             *" $deplib "*)
+               if (${SED} -e '2q' $lib |
+                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+                 library_names=
+                 old_library=
+                 case $lib in
+                 */* | *\\*) . $lib ;;
+                 *) . ./$lib ;;
+                 esac
+                 for l in $old_library $library_names; do
+                   ll="$l"
+                 done
+                 if test "X$ll" = "X$old_library" ; then # only static version available
+                   found=no
+                   ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+                   test "X$ladir" = "X$lib" && ladir="."
+                   lib=$ladir/$old_library
+                   if test "$linkmode,$pass" = "prog,link"; then
+                     compile_deplibs="$deplib $compile_deplibs"
+                     finalize_deplibs="$deplib $finalize_deplibs"
+                   else
+                     deplibs="$deplib $deplibs"
+                     test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+                   fi
+                   continue
+                 fi
+               fi
+               ;;
+             *) ;;
+             esac
+           fi
+         fi
+         ;; # -l
+       -L*)
+         case $linkmode in
+         lib)
+           deplibs="$deplib $deplibs"
+           test "$pass" = conv && continue
+           newdependency_libs="$deplib $newdependency_libs"
+           newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+           ;;
+         prog)
+           if test "$pass" = conv; then
+             deplibs="$deplib $deplibs"
+             continue
+           fi
+           if test "$pass" = scan; then
+             deplibs="$deplib $deplibs"
+             newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           ;;
+         *)
+           $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+           ;;
+         esac # linkmode
+         continue
+         ;; # -L
+       -R*)
+         if test "$pass" = link; then
+           dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+           # Make sure the xrpath contains only unique directories.
+           case "$xrpath " in
+           *" $dir "*) ;;
+           *) xrpath="$xrpath $dir" ;;
+           esac
+         fi
+         deplibs="$deplib $deplibs"
+         continue
+         ;;
+       *.la) lib="$deplib" ;;
+       *.$libext)
+         if test "$pass" = conv; then
+           deplibs="$deplib $deplibs"
+           continue
+         fi
+         case $linkmode in
+         lib)
+           if test "$deplibs_check_method" != pass_all; then
+             $echo
+             $echo "*** Warning: Trying to link with static lib archive $deplib."
+             $echo "*** I have the capability to make that library automatically link in when"
+             $echo "*** you link to this library.  But I can only do this if you have a"
+             $echo "*** shared version of the library, which you do not appear to have"
+             $echo "*** because the file extensions .$libext of this argument makes me believe"
+             $echo "*** that it is just a static archive that I should not used here."
+           else
+             $echo
+             $echo "*** Warning: Linking the shared library $output against the"
+             $echo "*** static library $deplib is not portable!"
+             deplibs="$deplib $deplibs"
+           fi
+           continue
+           ;;
+         prog)
+           if test "$pass" != link; then
+             deplibs="$deplib $deplibs"
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           continue
+           ;;
+         esac # linkmode
+         ;; # *.$libext
+       *.lo | *.$objext)
+         if test "$pass" = conv; then
+           deplibs="$deplib $deplibs"
+         elif test "$linkmode" = prog; then
+           if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+             # If there is no dlopen support or we're linking statically,
+             # we need to preload.
+             newdlprefiles="$newdlprefiles $deplib"
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             newdlfiles="$newdlfiles $deplib"
+           fi
+         fi
+         continue
+         ;;
+       %DEPLIBS%)
+         alldeplibs=yes
+         continue
+         ;;
+       esac # case $deplib
+       if test "$found" = yes || test -f "$lib"; then :
+       else
+         $echo "$modename: cannot find the library \`$lib'" 1>&2
+         exit 1
+       fi
+
+       # Check to see that this really is a libtool archive.
+       if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+       else
+         $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+         exit 1
+       fi
+
+       ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+       test "X$ladir" = "X$lib" && ladir="."
+
+       dlname=
+       dlopen=
+       dlpreopen=
+       libdir=
+       library_names=
+       old_library=
+       # If the library was installed with an old release of libtool,
+       # it will not redefine variables installed, or shouldnotlink
+       installed=yes
+       shouldnotlink=no
+
+       # Read the .la file
+       case $lib in
+       */* | *\\*) . $lib ;;
+       *) . ./$lib ;;
+       esac
+
+       if test "$linkmode,$pass" = "lib,link" ||
+          test "$linkmode,$pass" = "prog,scan" ||
+          { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+         test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+         test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+       fi
+
+       if test "$pass" = conv; then
+         # Only check for convenience libraries
+         deplibs="$lib $deplibs"
+         if test -z "$libdir"; then
+           if test -z "$old_library"; then
+             $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+             exit 1
+           fi
+           # It is a libtool convenience library, so add in its objects.
+           convenience="$convenience $ladir/$objdir/$old_library"
+           old_convenience="$old_convenience $ladir/$objdir/$old_library"
+           tmp_libs=
+           for deplib in $dependency_libs; do
+             deplibs="$deplib $deplibs"
+              if test "X$duplicate_deps" = "Xyes" ; then
+               case "$tmp_libs " in
+               *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+               esac
+              fi
+             tmp_libs="$tmp_libs $deplib"
+           done
+         elif test "$linkmode" != prog && test "$linkmode" != lib; then
+           $echo "$modename: \`$lib' is not a convenience library" 1>&2
+           exit 1
+         fi
+         continue
+       fi # $pass = conv
+
+    
+       # Get the name of the library we link against.
+       linklib=
+       for l in $old_library $library_names; do
+         linklib="$l"
+       done
+       if test -z "$linklib"; then
+         $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+         exit 1
+       fi
+
+       # This library was specified with -dlopen.
+       if test "$pass" = dlopen; then
+         if test -z "$libdir"; then
+           $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+           exit 1
+         fi
+         if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+           # If there is no dlname, no dlopen support or we're linking
+           # statically, we need to preload.  We also need to preload any
+           # dependent libraries so libltdl's deplib preloader doesn't
+           # bomb out in the load deplibs phase.
+           dlprefiles="$dlprefiles $lib $dependency_libs"
+         else
+           newdlfiles="$newdlfiles $lib"
+         fi
+         continue
+       fi # $pass = dlopen
+
+       # We need an absolute path.
+       case $ladir in
+       [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+       *)
+         abs_ladir=`cd "$ladir" && pwd`
+         if test -z "$abs_ladir"; then
+           $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+           $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+           abs_ladir="$ladir"
+         fi
+         ;;
+       esac
+       laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+       # Find the relevant object directory and library name.
+       if test "X$installed" = Xyes; then
+         if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+           $echo "$modename: warning: library \`$lib' was moved." 1>&2
+           dir="$ladir"
+           absdir="$abs_ladir"
+           libdir="$abs_ladir"
+         else
+           dir="$libdir"
+           absdir="$libdir"
+         fi
+       else
+         dir="$ladir/$objdir"
+         absdir="$abs_ladir/$objdir"
+         # Remove this search path later
+         notinst_path="$notinst_path $abs_ladir"
+       fi # $installed = yes
+       name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+       # This library was specified with -dlpreopen.
+       if test "$pass" = dlpreopen; then
+         if test -z "$libdir"; then
+           $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+           exit 1
+         fi
+         # Prefer using a static library (so that no silly _DYNAMIC symbols
+         # are required to link).
+         if test -n "$old_library"; then
+           newdlprefiles="$newdlprefiles $dir/$old_library"
+         # Otherwise, use the dlname, so that lt_dlopen finds it.
+         elif test -n "$dlname"; then
+           newdlprefiles="$newdlprefiles $dir/$dlname"
+         else
+           newdlprefiles="$newdlprefiles $dir/$linklib"
+         fi
+       fi # $pass = dlpreopen
+
+       if test -z "$libdir"; then
+         # Link the convenience library
+         if test "$linkmode" = lib; then
+           deplibs="$dir/$old_library $deplibs"
+         elif test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$dir/$old_library $compile_deplibs"
+           finalize_deplibs="$dir/$old_library $finalize_deplibs"
+         else
+           deplibs="$lib $deplibs" # used for prog,scan pass
+         fi
+         continue
+       fi
+
+    
+       if test "$linkmode" = prog && test "$pass" != link; then
+         newlib_search_path="$newlib_search_path $ladir"
+         deplibs="$lib $deplibs"
+
+         linkalldeplibs=no
+         if test "$link_all_deplibs" != no || test -z "$library_names" ||
+            test "$build_libtool_libs" = no; then
+           linkalldeplibs=yes
+         fi
+
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           case $deplib in
+           -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+           esac
+           # Need to link against all dependency_libs?
+           if test "$linkalldeplibs" = yes; then
+             deplibs="$deplib $deplibs"
+           else
+             # Need to hardcode shared library paths
+             # or/and link against static libraries
+             newdependency_libs="$deplib $newdependency_libs"
+           fi
+           if test "X$duplicate_deps" = "Xyes" ; then
+             case "$tmp_libs " in
+             *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+             esac
+           fi
+           tmp_libs="$tmp_libs $deplib"
+         done # for deplib
+         continue
+       fi # $linkmode = prog...
+
+       if test "$linkmode,$pass" = "prog,link"; then
+         if test -n "$library_names" &&
+            { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+           # We need to hardcode the library path
+           if test -n "$shlibpath_var"; then
+             # Make sure the rpath contains only unique directories.
+             case "$temp_rpath " in
+             *" $dir "*) ;;
+             *" $absdir "*) ;;
+             *) temp_rpath="$temp_rpath $dir" ;;
+             esac
+           fi
+
+           # Hardcode the library path.
+           # Skip directories that are in the system default run-time
+           # search path.
+           case " $sys_lib_dlsearch_path " in
+           *" $absdir "*) ;;
+           *)
+             case "$compile_rpath " in
+             *" $absdir "*) ;;
+             *) compile_rpath="$compile_rpath $absdir"
+             esac
+             ;;
+           esac
+           case " $sys_lib_dlsearch_path " in
+           *" $libdir "*) ;;
+           *)
+             case "$finalize_rpath " in
+             *" $libdir "*) ;;
+             *) finalize_rpath="$finalize_rpath $libdir"
+             esac
+             ;;
+           esac
+         fi # $linkmode,$pass = prog,link...
+
+         if test "$alldeplibs" = yes &&
+            { test "$deplibs_check_method" = pass_all ||
+              { test "$build_libtool_libs" = yes &&
+                test -n "$library_names"; }; }; then
+           # We only need to search for static libraries
+           continue
+         fi
+       fi
+
+       link_static=no # Whether the deplib will be linked statically
+       if test -n "$library_names" &&
+          { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+         if test "$installed" = no; then
+           notinst_deplibs="$notinst_deplibs $lib"
+           need_relink=yes
+         fi
+         # This is a shared library
+       
+      # Warn about portability, can't link against -module's on some systems (darwin)
+      if test "$shouldnotlink" = yes && test "$pass" = link ; then
+           $echo
+           if test "$linkmode" = prog; then
+             $echo "*** Warning: Linking the executable $output against the loadable module"
+           else
+             $echo "*** Warning: Linking the shared library $output against the loadable module"
+           fi
+           $echo "*** $linklib is not portable!"    
+      fi         
+         if test "$linkmode" = lib &&
+            test "$hardcode_into_libs" = yes; then
+           # Hardcode the library path.
+           # Skip directories that are in the system default run-time
+           # search path.
+           case " $sys_lib_dlsearch_path " in
+           *" $absdir "*) ;;
+           *)
+             case "$compile_rpath " in
+             *" $absdir "*) ;;
+             *) compile_rpath="$compile_rpath $absdir"
+             esac
+             ;;
+           esac
+           case " $sys_lib_dlsearch_path " in
+           *" $libdir "*) ;;
+           *)
+             case "$finalize_rpath " in
+             *" $libdir "*) ;;
+             *) finalize_rpath="$finalize_rpath $libdir"
+             esac
+             ;;
+           esac
+         fi
+
+         if test -n "$old_archive_from_expsyms_cmds"; then
+           # figure out the soname
+           set dummy $library_names
+           realname="$2"
+           shift; shift
+           libname=`eval \\$echo \"$libname_spec\"`
+           # use dlname if we got it. it's perfectly good, no?
+           if test -n "$dlname"; then
+             soname="$dlname"
+           elif test -n "$soname_spec"; then
+             # bleh windows
+             case $host in
+             *cygwin* | mingw*)
+               major=`expr $current - $age`
+               versuffix="-$major"
+               ;;
+             esac
+             eval soname=\"$soname_spec\"
+           else
+             soname="$realname"
+           fi
+
+           # Make a new name for the extract_expsyms_cmds to use
+           soroot="$soname"
+           soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+           newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+           # If the library has no export list, then create one now
+           if test -f "$output_objdir/$soname-def"; then :
+           else
+             $show "extracting exported symbol list from \`$soname'"
+             save_ifs="$IFS"; IFS='~'
+             eval cmds=\"$extract_expsyms_cmds\"
+             for cmd in $cmds; do
+               IFS="$save_ifs"
+               $show "$cmd"
+               $run eval "$cmd" || exit $?
+             done
+             IFS="$save_ifs"
+           fi
+
+           # Create $newlib
+           if test -f "$output_objdir/$newlib"; then :; else
+             $show "generating import library for \`$soname'"
+             save_ifs="$IFS"; IFS='~'
+             eval cmds=\"$old_archive_from_expsyms_cmds\"
+             for cmd in $cmds; do
+               IFS="$save_ifs"
+               $show "$cmd"
+               $run eval "$cmd" || exit $?
+             done
+             IFS="$save_ifs"
+           fi
+           # make sure the library variables are pointing to the new library
+           dir=$output_objdir
+           linklib=$newlib
+         fi # test -n "$old_archive_from_expsyms_cmds"
+
+         if test "$linkmode" = prog || test "$mode" != relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           lib_linked=yes
+           case $hardcode_action in
+           immediate | unsupported)
+             if test "$hardcode_direct" = no; then
+               add="$dir/$linklib"
+               case $host in
+                 *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+                 *-*-darwin* )
+                   # if the lib is a module then we can not link against it, someone
+                   # is ignoring the new warnings I added
+                   if /usr/bin/file -L $add 2> /dev/null | grep "bundle" >/dev/null ; then
+                     $echo "** Warning, lib $linklib is a module, not a shared library"
+                     if test -z "$old_library" ; then
+                       $echo
+                       $echo "** And there doesn't seem to be a static archive available"
+                       $echo "** The link will probably fail, sorry"
+                     else
+                       add="$dir/$old_library"
+                     fi 
+                   fi
+               esac
+             elif test "$hardcode_minus_L" = no; then
+               case $host in
+               *-*-sunos*) add_shlibpath="$dir" ;;
+               esac
+               add_dir="-L$dir"
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = no; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           relink)
+             if test "$hardcode_direct" = yes; then
+               add="$dir/$linklib"
+             elif test "$hardcode_minus_L" = yes; then
+               add_dir="-L$dir"
+               # Try looking first in the location we're being installed to.
+               if test -n "$inst_prefix_dir"; then
+                 case "$libdir" in
+                   [\\/]*)
+                     add_dir="-L$inst_prefix_dir$libdir $add_dir"
+                     ;;
+                 esac
+               fi
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = yes; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           *) lib_linked=no ;;
+           esac
+
+           if test "$lib_linked" != yes; then
+             $echo "$modename: configuration error: unsupported hardcode properties"
+             exit 1
+           fi
+
+           if test -n "$add_shlibpath"; then
+             case :$compile_shlibpath: in
+             *":$add_shlibpath:"*) ;;
+             *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+             esac
+           fi
+           if test "$linkmode" = prog; then
+             test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+             test -n "$add" && compile_deplibs="$add $compile_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+             if test "$hardcode_direct" != yes && \
+                test "$hardcode_minus_L" != yes && \
+                test "$hardcode_shlibpath_var" = yes; then
+               case :$finalize_shlibpath: in
+               *":$libdir:"*) ;;
+               *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+               esac
+             fi
+           fi
+         fi
+
+         if test "$linkmode" = prog || test "$mode" = relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           # Finalize command for both is simple: just hardcode it.
+           if test "$hardcode_direct" = yes; then
+             add="$libdir/$linklib"
+           elif test "$hardcode_minus_L" = yes; then
+             add_dir="-L$libdir"
+             add="-l$name"
+           elif test "$hardcode_shlibpath_var" = yes; then
+             case :$finalize_shlibpath: in
+             *":$libdir:"*) ;;
+             *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+             esac
+             add="-l$name"
+           elif test "$hardcode_automatic" = yes; then
+             if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then
+               add="$inst_prefix_dir$libdir/$linklib"
+             else
+               add="$libdir/$linklib"
+             fi
+           else
+             # We cannot seem to hardcode it, guess we'll fake it.
+             add_dir="-L$libdir"
+             # Try looking first in the location we're being installed to.
+             if test -n "$inst_prefix_dir"; then
+               case "$libdir" in
+                 [\\/]*)
+                   add_dir="-L$inst_prefix_dir$libdir $add_dir"
+                   ;;
+               esac
+             fi
+             add="-l$name"
+           fi
+
+           if test "$linkmode" = prog; then
+             test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+             test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+           fi
+         fi
+       elif test "$linkmode" = prog; then
+         # Here we assume that one of hardcode_direct or hardcode_minus_L
+         # is not unsupported.  This is valid on all known static and
+         # shared platforms.
+         if test "$hardcode_direct" != unsupported; then
+           test -n "$old_library" && linklib="$old_library"
+           compile_deplibs="$dir/$linklib $compile_deplibs"
+           finalize_deplibs="$dir/$linklib $finalize_deplibs"
+         else
+           compile_deplibs="-l$name -L$dir $compile_deplibs"
+           finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+         fi
+       elif test "$build_libtool_libs" = yes; then
+         # Not a shared library
+         if test "$deplibs_check_method" != pass_all; then
+           # We're trying link a shared library against a static one
+           # but the system doesn't support it.
+
+           # Just print a warning and add the library to dependency_libs so
+           # that the program can be linked against the static library.
+           $echo
+           $echo "*** Warning: This system can not link to static lib archive $lib."
+           $echo "*** I have the capability to make that library automatically link in when"
+           $echo "*** you link to this library.  But I can only do this if you have a"
+           $echo "*** shared version of the library, which you do not appear to have."
+           if test "$module" = yes; then
+             $echo "*** But as you try to build a module library, libtool will still create "
+             $echo "*** a static module, that should work as long as the dlopening application"
+             $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+             if test -z "$global_symbol_pipe"; then
+               $echo
+               $echo "*** However, this would only work if libtool was able to extract symbol"
+               $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+               $echo "*** not find such a program.  So, this module is probably useless."
+               $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+             fi
+             if test "$build_old_libs" = no; then
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         else
+           convenience="$convenience $dir/$old_library"
+           old_convenience="$old_convenience $dir/$old_library"
+           deplibs="$dir/$old_library $deplibs"
+           link_static=yes
+         fi
+       fi # link shared/static library?
+
+       if test "$linkmode" = lib; then
+         if test -n "$dependency_libs" &&
+            { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes ||
+              test "$link_static" = yes; }; then
+           # Extract -R from dependency_libs
+           temp_deplibs=
+           for libdir in $dependency_libs; do
+             case $libdir in
+             -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+                  case " $xrpath " in
+                  *" $temp_xrpath "*) ;;
+                  *) xrpath="$xrpath $temp_xrpath";;
+                  esac;;
+             *) temp_deplibs="$temp_deplibs $libdir";;
+             esac
+           done
+           dependency_libs="$temp_deplibs"
+         fi
+
+         newlib_search_path="$newlib_search_path $absdir"
+         # Link against this library
+         test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+         # ... and its dependency_libs
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           newdependency_libs="$deplib $newdependency_libs"
+           if test "X$duplicate_deps" = "Xyes" ; then
+             case "$tmp_libs " in
+             *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+             esac
+           fi
+           tmp_libs="$tmp_libs $deplib"
+         done
+
+         if test "$link_all_deplibs" != no; then
+           # Add the search paths of all dependency libraries
+           for deplib in $dependency_libs; do
+             case $deplib in
+             -L*) path="$deplib" ;;
+             *.la)
+               dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+               test "X$dir" = "X$deplib" && dir="."
+               # We need an absolute path.
+               case $dir in
+               [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+               *)
+                 absdir=`cd "$dir" && pwd`
+                 if test -z "$absdir"; then
+                   $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+                   absdir="$dir"
+                 fi
+                 ;;
+               esac
+               if grep "^installed=no" $deplib > /dev/null; then
+                 path="$absdir/$objdir"
+               else
+                 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+                 if test -z "$libdir"; then
+                   $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+                   exit 1
+                 fi
+                 if test "$absdir" != "$libdir"; then
+                   $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+                 fi
+                 path="$absdir"
+               fi
+               depdepl=
+               case $host in
+               *-*-darwin*)
+                 # we do not want to link against static libs, but need to link against shared
+                 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+                 if test -n "$deplibrary_names" ; then
+                   for tmp in $deplibrary_names ; do
+                     depdepl=$tmp
+                   done
+                   if test -f "$path/$depdepl" ; then
+                     depdepl="$path/$depdepl"
+                  fi
+                   newlib_search_path="$newlib_search_path $path"
+                   path=""
+                 fi
+                 ;;
+               *)
+               path="-L$path"
+               ;;
+               esac 
+               
+               ;;
+                 -l*)
+               case $host in
+               *-*-darwin*)
+                # Again, we only want to link against shared libraries
+                eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+                for tmp in $newlib_search_path ; do
+                    if test -f "$tmp/lib$tmp_libs.dylib" ; then
+                      eval depdepl="$tmp/lib$tmp_libs.dylib"
+                      break
+                    fi  
+         done
+         path=""
+                 ;;
+               *) continue ;;
+               esac              
+               ;;
+             *) continue ;;
+             esac
+             case " $deplibs " in
+             *" $depdepl "*) ;;
+             *) deplibs="$deplibs $depdepl" ;;
+             esac            
+             case " $deplibs " in
+             *" $path "*) ;;
+             *) deplibs="$deplibs $path" ;;
+             esac
+           done
+         fi # link_all_deplibs != no
+       fi # linkmode = lib
+      done # for deplib in $libs
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+       # Link the dlpreopened libraries before other libraries
+       for deplib in $save_deplibs; do
+         deplibs="$deplib $deplibs"
+       done
+      fi
+      if test "$pass" != dlopen; then
+       if test "$pass" != conv; then
+         # Make sure lib_search_path contains only unique directories.
+         lib_search_path=
+         for dir in $newlib_search_path; do
+           case "$lib_search_path " in
+           *" $dir "*) ;;
+           *) lib_search_path="$lib_search_path $dir" ;;
+           esac
+         done
+         newlib_search_path=
+       fi
+
+       if test "$linkmode,$pass" != "prog,link"; then
+         vars="deplibs"
+       else
+         vars="compile_deplibs finalize_deplibs"
+       fi
+       for var in $vars dependency_libs; do
+         # Add libraries to $var in reverse order
+         eval tmp_libs=\"\$$var\"
+         new_libs=
+         for deplib in $tmp_libs; do
+           # FIXME: Pedantically, this is the right thing to do, so
+           #        that some nasty dependency loop isn't accidentally
+           #        broken:
+           #new_libs="$deplib $new_libs"
+           # Pragmatically, this seems to cause very few problems in
+           # practice:
+           case $deplib in
+           -L*) new_libs="$deplib $new_libs" ;;
+           -R*) ;;
+           *)
+             # And here is the reason: when a library appears more
+             # than once as an explicit dependence of a library, or
+             # is implicitly linked in more than once by the
+             # compiler, it is considered special, and multiple
+             # occurrences thereof are not removed.  Compare this
+             # with having the same library being listed as a
+             # dependency of multiple other libraries: in this case,
+             # we know (pedantically, we assume) the library does not
+             # need to be listed more than once, so we keep only the
+             # last copy.  This is not always right, but it is rare
+             # enough that we require users that really mean to play
+             # such unportable linking tricks to link the library
+             # using -Wl,-lname, so that libtool does not consider it
+             # for duplicate removal.
+             case " $specialdeplibs " in
+             *" $deplib "*) new_libs="$deplib $new_libs" ;;
+             *)
+               case " $new_libs " in
+               *" $deplib "*) ;;
+               *) new_libs="$deplib $new_libs" ;;
+               esac
+               ;;
+             esac
+             ;;
+           esac
+         done
+         tmp_libs=
+         for deplib in $new_libs; do
+           case $deplib in
+           -L*)
+             case " $tmp_libs " in
+             *" $deplib "*) ;;
+             *) tmp_libs="$tmp_libs $deplib" ;;
+             esac
+             ;;
+           *) tmp_libs="$tmp_libs $deplib" ;;
+           esac
+         done
+         eval $var=\"$tmp_libs\"
+       done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+       case " $predeps $postdeps $compiler_lib_search_path " in
+       *" $i "*)
+         i=""
+         ;;
+       esac
+       if test -n "$i" ; then
+         tmp_libs="$tmp_libs $i"
+       fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$deplibs"; then
+       $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+       $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+       $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+       $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+       $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+       $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+       name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+       eval shared_ext=\"$shrext\"
+       eval libname=\"$libname_spec\"
+       ;;
+      *)
+       if test "$module" = no; then
+         $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+       fi
+       if test "$need_lib_prefix" != no; then
+         # Add the "lib" prefix for modules if required
+         name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+         eval shared_ext=\"$shrext\"
+         eval libname=\"$libname_spec\"
+       else
+         libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+       fi
+       ;;
+      esac
+
+      if test -n "$objs"; then
+       if test "$deplibs_check_method" != pass_all; then
+         $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+         exit 1
+       else
+         $echo
+         $echo "*** Warning: Linking the shared library $output against the non-libtool"
+         $echo "*** objects $objs is not portable!"
+         libobjs="$libobjs $objs"
+       fi
+      fi
+
+      if test "$dlself" != no; then
+       $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test "$#" -gt 2; then
+       $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+       if test "$build_libtool_libs" = yes; then
+         # Building a libtool convenience library.
+         # Some compilers have problems with a `.al' extension so
+         # convenience libraries should have the same extension an
+         # archive normally would.
+         oldlibs="$output_objdir/$libname.$libext $oldlibs"
+         build_libtool_libs=convenience
+         build_old_libs=yes
+       fi
+
+       if test -n "$vinfo"; then
+         $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+       fi
+
+       if test -n "$release"; then
+         $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+       fi
+      else
+
+       # Parse the version information argument.
+       save_ifs="$IFS"; IFS=':'
+       set dummy $vinfo 0 0 0
+       IFS="$save_ifs"
+
+       if test -n "$8"; then
+         $echo "$modename: too many parameters to \`-version-info'" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+       fi
+
+       # convert absolute version numbers to libtool ages
+       # this retains compatibility with .la files and attempts
+       # to make the code below a bit more comprehensible
+       
+       case $vinfo_number in
+       yes)
+         number_major="$2"
+         number_minor="$3"
+         number_revision="$4"
+         #
+         # There are really only two kinds -- those that
+         # use the current revision as the major version
+         # and those that subtract age and use age as
+         # a minor version.  But, then there is irix
+         # which has an extra 1 added just for fun
+         #
+         case $version_type in
+         darwin|linux|osf|windows)
+           current=`expr $number_major + $number_minor`
+           age="$number_minor"
+           revision="$number_revision"
+           ;;
+         freebsd-aout|freebsd-elf|sunos)
+           current="$number_major"
+           revision="$number_minor"
+           age="0"
+           ;;
+         irix|nonstopux)
+           current=`expr $number_major + $number_minor - 1`
+           age="$number_minor"
+           revision="$number_minor"
+           ;;
+         esac
+         ;;
+       no)
+         current="$2"
+         revision="$3"
+         age="$4"
+         ;;
+       esac
+
+       # Check that each of the things are valid numbers.
+       case $current in
+       0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+       *)
+         $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+         ;;
+       esac
+
+       case $revision in
+       0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+       *)
+         $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+         ;;
+       esac
+
+       case $age in
+       0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+       *)
+         $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+         ;;
+       esac
+
+       if test "$age" -gt "$current"; then
+         $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+       fi
+
+       # Calculate the version variables.
+       major=
+       versuffix=
+       verstring=
+       case $version_type in
+       none) ;;
+
+       darwin)
+         # Like Linux, but with the current version available in
+         # verstring for coding it into the library header
+         major=.`expr $current - $age`
+         versuffix="$major.$age.$revision"
+         # Darwin ld doesn't like 0 for these options...
+         minor_current=`expr $current + 1`
+         verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+         ;;
+
+       freebsd-aout)
+         major=".$current"
+         versuffix=".$current.$revision";
+         ;;
+
+       freebsd-elf)
+         major=".$current"
+         versuffix=".$current";
+         ;;
+
+       irix | nonstopux)
+         major=`expr $current - $age + 1`
+
+         case $version_type in
+           nonstopux) verstring_prefix=nonstopux ;;
+           *)         verstring_prefix=sgi ;;
+         esac
+         verstring="$verstring_prefix$major.$revision"
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$revision
+         while test "$loop" -ne 0; do
+           iface=`expr $revision - $loop`
+           loop=`expr $loop - 1`
+           verstring="$verstring_prefix$major.$iface:$verstring"
+         done
+
+         # Before this point, $major must not contain `.'.
+         major=.$major
+         versuffix="$major.$revision"
+         ;;
+
+       linux)
+         major=.`expr $current - $age`
+         versuffix="$major.$age.$revision"
+         ;;
+
+       osf)
+         major=.`expr $current - $age`
+         versuffix=".$current.$age.$revision"
+         verstring="$current.$age.$revision"
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$age
+         while test "$loop" -ne 0; do
+           iface=`expr $current - $loop`
+           loop=`expr $loop - 1`
+           verstring="$verstring:${iface}.0"
+         done
+
+         # Make executables depend on our current version.
+         verstring="$verstring:${current}.0"
+         ;;
+
+       sunos)
+         major=".$current"
+         versuffix=".$current.$revision"
+         ;;
+
+       windows)
+         # Use '-' rather than '.', since we only want one
+         # extension on DOS 8.3 filesystems.
+         major=`expr $current - $age`
+         versuffix="-$major"
+         ;;
+
+       *)
+         $echo "$modename: unknown library version type \`$version_type'" 1>&2
+         $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+         exit 1
+         ;;
+       esac
+
+       # Clear the version info if we defaulted, and they specified a release.
+       if test -z "$vinfo" && test -n "$release"; then
+         major=
+         case $version_type in
+         darwin)
+           # we can't check for "0.0" in archive_cmds due to quoting
+           # problems, so we reset it completely
+           verstring=
+           ;;
+         *)
+           verstring="0.0"
+           ;;
+         esac
+         if test "$need_version" = no; then
+           versuffix=
+         else
+           versuffix=".0.0"
+         fi
+       fi
+
+       # Remove version info from name if versioning should be avoided
+       if test "$avoid_version" = yes && test "$need_version" = no; then
+         major=
+         versuffix=
+         verstring=""
+       fi
+
+       # Check to see if the archive will have undefined symbols.
+       if test "$allow_undefined" = yes; then
+         if test "$allow_undefined_flag" = unsupported; then
+           $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+           build_libtool_libs=no
+           build_old_libs=yes
+         fi
+       else
+         # Don't allow undefined symbols.
+         allow_undefined_flag="$no_undefined_flag"
+       fi
+      fi
+
+      if test "$mode" != relink; then
+       # Remove our outputs, but don't remove object files since they
+       # may have been created when compiling PIC objects.
+       removelist=
+       tempremovelist=`$echo "$output_objdir/*"`
+       for p in $tempremovelist; do
+         case $p in
+           *.$objext)
+              ;;
+           $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+              removelist="$removelist $p"
+              ;;
+           *) ;;
+         esac
+       done
+       if test -n "$removelist"; then
+         $show "${rm}r $removelist"
+         $run ${rm}r $removelist
+       fi
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+       oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+       # Transform .lo files to .o files.
+       oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      for path in $notinst_path; do
+       lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
+       deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
+       dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+      done
+
+      if test -n "$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       temp_xrpath=
+       for libdir in $xrpath; do
+         temp_xrpath="$temp_xrpath -R$libdir"
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) finalize_rpath="$finalize_rpath $libdir" ;;
+         esac
+       done
+       if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+         dependency_libs="$temp_xrpath $dependency_libs"
+       fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+       case " $dlprefiles $dlfiles " in
+       *" $lib "*) ;;
+       *) dlfiles="$dlfiles $lib" ;;
+       esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+       case "$dlprefiles " in
+       *" $lib "*) ;;
+       *) dlprefiles="$dlprefiles $lib" ;;
+       esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+       if test -n "$rpath"; then
+         case $host in
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+           # these systems don't actually have a c library (as such)!
+           ;;
+         *-*-rhapsody* | *-*-darwin1.[012])
+           # Rhapsody C library is in the System framework
+           deplibs="$deplibs -framework System"
+           ;;
+         *-*-netbsd*)
+           # Don't link with libc until the a.out ld.so is fixed.
+           ;;
+         *-*-openbsd* | *-*-freebsd*)
+           # Do not include libc due to us having libc/libc_r.
+           test "X$arg" = "X-lc" && continue
+           ;;
+         *)
+           # Add libc to deplibs on all other systems if necessary.
+           if test "$build_libtool_need_lc" = "yes"; then
+             deplibs="$deplibs -lc"
+           fi
+           ;;
+         esac
+       fi
+
+       # Transform deplibs into only deplibs that can be linked in shared.
+       name_save=$name
+       libname_save=$libname
+       release_save=$release
+       versuffix_save=$versuffix
+       major_save=$major
+       # I'm not sure if I'm treating the release correctly.  I think
+       # release should show up in the -l (ie -lgmp5) so we don't want to
+       # add it in twice.  Is that correct?
+       release=""
+       versuffix=""
+       major=""
+       newdeplibs=
+       droppeddeps=no
+       case $deplibs_check_method in
+       pass_all)
+         # Don't check for shared/static.  Everything works.
+         # This might be a little naive.  We might want to check
+         # whether the library exists or not.  But this is on
+         # osf3 & osf4 and I'm not really sure... Just
+         # implementing what was already the behavior.
+         newdeplibs=$deplibs
+         ;;
+       test_compile)
+         # This code stresses the "libraries are programs" paradigm to its
+         # limits. Maybe even breaks it.  We compile a program, linking it
+         # against the deplibs as a proxy for the library.  Then we can check
+         # whether they linked in statically or dynamically with ldd.
+         $rm conftest.c
+         cat > conftest.c <<EOF
+         int main() { return 0; }
+EOF
+         $rm conftest
+         $LTCC -o conftest conftest.c $deplibs
+         if test "$?" -eq 0 ; then
+           ldd_output=`ldd conftest`
+           for i in $deplibs; do
+             name="`expr $i : '-l\(.*\)'`"
+             # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" -ne "0"; then
+               if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+                 case " $predeps $postdeps " in
+                 *" $i "*)
+                   newdeplibs="$newdeplibs $i"
+                   i=""
+                   ;;
+                 esac
+               fi
+               if test -n "$i" ; then
+                 libname=`eval \\$echo \"$libname_spec\"`
+                 deplib_matches=`eval \\$echo \"$library_names_spec\"`
+                 set dummy $deplib_matches
+                 deplib_match=$2
+                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                   newdeplibs="$newdeplibs $i"
+                 else
+                   droppeddeps=yes
+                   $echo
+                   $echo "*** Warning: dynamic linker does not accept needed library $i."
+                   $echo "*** I have the capability to make that library automatically link in when"
+                   $echo "*** you link to this library.  But I can only do this if you have a"
+                   $echo "*** shared version of the library, which I believe you do not have"
+                   $echo "*** because a test_compile did reveal that the linker did not use it for"
+                   $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+                 fi
+               fi
+             else
+               newdeplibs="$newdeplibs $i"
+             fi
+           done
+         else
+           # Error occurred in the first compile.  Let's try to salvage
+           # the situation: Compile a separate program for each library.
+           for i in $deplibs; do
+             name="`expr $i : '-l\(.*\)'`"
+             # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" != "0"; then
+               $rm conftest
+               $LTCC -o conftest conftest.c $i
+               # Did it work?
+               if test "$?" -eq 0 ; then
+                 ldd_output=`ldd conftest`
+                 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+                   case " $predeps $postdeps " in
+                   *" $i "*)
+                     newdeplibs="$newdeplibs $i"
+                     i=""
+                     ;;
+                   esac
+                 fi
+                 if test -n "$i" ; then
+                   libname=`eval \\$echo \"$libname_spec\"`
+                   deplib_matches=`eval \\$echo \"$library_names_spec\"`
+                   set dummy $deplib_matches
+                   deplib_match=$2
+                   if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                     newdeplibs="$newdeplibs $i"
+                   else
+                     droppeddeps=yes
+                     $echo
+                     $echo "*** Warning: dynamic linker does not accept needed library $i."
+                     $echo "*** I have the capability to make that library automatically link in when"
+                     $echo "*** you link to this library.  But I can only do this if you have a"
+                     $echo "*** shared version of the library, which you do not appear to have"
+                     $echo "*** because a test_compile did reveal that the linker did not use this one"
+                     $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+                   fi
+                 fi
+               else
+                 droppeddeps=yes
+                 $echo
+                 $echo "*** Warning!  Library $i is needed by this library but I was not able to"
+                 $echo "***  make it link in!  You will probably need to install it or some"
+                 $echo "*** library that it depends on before this library will be fully"
+                 $echo "*** functional.  Installing it before continuing would be even better."
+               fi
+             else
+               newdeplibs="$newdeplibs $i"
+             fi
+           done
+         fi
+         ;;
+       file_magic*)
+         set dummy $deplibs_check_method
+         file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+         for a_deplib in $deplibs; do
+           name="`expr $a_deplib : '-l\(.*\)'`"
+           # If $name is empty we are operating on a -L argument.
+            if test "$name" != "" && test  "$name" != "0"; then
+             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+               case " $predeps $postdeps " in
+               *" $a_deplib "*)
+                 newdeplibs="$newdeplibs $a_deplib"
+                 a_deplib=""
+                 ;;
+               esac
+             fi
+             if test -n "$a_deplib" ; then
+               libname=`eval \\$echo \"$libname_spec\"`
+               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+                 for potent_lib in $potential_libs; do
+                     # Follow soft links.
+                     if ls -lLd "$potent_lib" 2>/dev/null \
+                        | grep " -> " >/dev/null; then
+                       continue
+                     fi
+                     # The statement above tries to avoid entering an
+                     # endless loop below, in case of cyclic links.
+                     # We might still enter an endless loop, since a link
+                     # loop can be closed while we follow links,
+                     # but so what?
+                     potlib="$potent_lib"
+                     while test -h "$potlib" 2>/dev/null; do
+                       potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+                       case $potliblink in
+                       [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+                       *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+                       esac
+                     done
+                     if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+                        | ${SED} 10q \
+                        | $EGREP "$file_magic_regex" > /dev/null; then
+                       newdeplibs="$newdeplibs $a_deplib"
+                       a_deplib=""
+                       break 2
+                     fi
+                 done
+               done
+             fi
+             if test -n "$a_deplib" ; then
+               droppeddeps=yes
+               $echo
+               $echo "*** Warning: linker path does not have real file for library $a_deplib."
+               $echo "*** I have the capability to make that library automatically link in when"
+               $echo "*** you link to this library.  But I can only do this if you have a"
+               $echo "*** shared version of the library, which you do not appear to have"
+               $echo "*** because I did check the linker path looking for a file starting"
+               if test -z "$potlib" ; then
+                 $echo "*** with $libname but no candidates were found. (...for file magic test)"
+               else
+                 $echo "*** with $libname and none of the candidates passed a file format test"
+                 $echo "*** using a file magic. Last file checked: $potlib"
+               fi
+             fi
+           else
+             # Add a -L argument.
+             newdeplibs="$newdeplibs $a_deplib"
+           fi
+         done # Gone through all deplibs.
+         ;;
+       match_pattern*)
+         set dummy $deplibs_check_method
+         match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+         for a_deplib in $deplibs; do
+           name="`expr $a_deplib : '-l\(.*\)'`"
+           # If $name is empty we are operating on a -L argument.
+           if test -n "$name" && test "$name" != "0"; then
+             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+               case " $predeps $postdeps " in
+               *" $a_deplib "*)
+                 newdeplibs="$newdeplibs $a_deplib"
+                 a_deplib=""
+                 ;;
+               esac
+             fi
+             if test -n "$a_deplib" ; then
+               libname=`eval \\$echo \"$libname_spec\"`
+               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+                 for potent_lib in $potential_libs; do
+                   potlib="$potent_lib" # see symlink-check above in file_magic test
+                   if eval $echo \"$potent_lib\" 2>/dev/null \
+                       | ${SED} 10q \
+                       | $EGREP "$match_pattern_regex" > /dev/null; then
+                     newdeplibs="$newdeplibs $a_deplib"
+                     a_deplib=""
+                     break 2
+                   fi
+                 done
+               done
+             fi
+             if test -n "$a_deplib" ; then
+               droppeddeps=yes
+               $echo
+               $echo "*** Warning: linker path does not have real file for library $a_deplib."
+               $echo "*** I have the capability to make that library automatically link in when"
+               $echo "*** you link to this library.  But I can only do this if you have a"
+               $echo "*** shared version of the library, which you do not appear to have"
+               $echo "*** because I did check the linker path looking for a file starting"
+               if test -z "$potlib" ; then
+                 $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+               else
+                 $echo "*** with $libname and none of the candidates passed a file format test"
+                 $echo "*** using a regex pattern. Last file checked: $potlib"
+               fi
+             fi
+           else
+             # Add a -L argument.
+             newdeplibs="$newdeplibs $a_deplib"
+           fi
+         done # Gone through all deplibs.
+         ;;
+       none | unknown | *)
+         newdeplibs=""
+         tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+           -e 's/ -[LR][^ ]*//g'`
+         if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+           for i in $predeps $postdeps ; do
+             # can't use Xsed below, because $i might contain '/'
+             tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+           done
+         fi
+         if $echo "X $tmp_deplibs" | $Xsed -e 's/[     ]//g' \
+           | grep . >/dev/null; then
+           $echo
+           if test "X$deplibs_check_method" = "Xnone"; then
+             $echo "*** Warning: inter-library dependencies are not supported in this platform."
+           else
+             $echo "*** Warning: inter-library dependencies are not known to be supported."
+           fi
+           $echo "*** All declared inter-library dependencies are being dropped."
+           droppeddeps=yes
+         fi
+         ;;
+       esac
+       versuffix=$versuffix_save
+       major=$major_save
+       release=$release_save
+       libname=$libname_save
+       name=$name_save
+
+       case $host in
+       *-*-rhapsody* | *-*-darwin1.[012])
+         # On Rhapsody replace the C library is the System framework
+         newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+         ;;
+       esac
+
+       if test "$droppeddeps" = yes; then
+         if test "$module" = yes; then
+           $echo
+           $echo "*** Warning: libtool could not satisfy all declared inter-library"
+           $echo "*** dependencies of module $libname.  Therefore, libtool will create"
+           $echo "*** a static module, that should work as long as the dlopening"
+           $echo "*** application is linked with the -dlopen flag."
+           if test -z "$global_symbol_pipe"; then
+             $echo
+             $echo "*** However, this would only work if libtool was able to extract symbol"
+             $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+             $echo "*** not find such a program.  So, this module is probably useless."
+             $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+           fi
+           if test "$build_old_libs" = no; then
+             oldlibs="$output_objdir/$libname.$libext"
+             build_libtool_libs=module
+             build_old_libs=yes
+           else
+             build_libtool_libs=no
+           fi
+         else
+           $echo "*** The inter-library dependencies that have been dropped here will be"
+           $echo "*** automatically added whenever a program is linked with this library"
+           $echo "*** or is declared to -dlopen it."
+
+           if test "$allow_undefined" = no; then
+             $echo
+             $echo "*** Since this library must not contain undefined symbols,"
+             $echo "*** because either the platform does not support them or"
+             $echo "*** it was explicitly requested with -no-undefined,"
+             $echo "*** libtool will only create a static version of it."
+             if test "$build_old_libs" = no; then
+               oldlibs="$output_objdir/$libname.$libext"
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         fi
+       fi
+       # Done checking deplibs!
+       deplibs=$newdeplibs
+      fi
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+       if test "$hardcode_into_libs" = yes; then
+         # Hardcode the library paths
+         hardcode_libdirs=
+         dep_rpath=
+         rpath="$finalize_rpath"
+         test "$mode" != relink && rpath="$compile_rpath$rpath"
+         for libdir in $rpath; do
+           if test -n "$hardcode_libdir_flag_spec"; then
+             if test -n "$hardcode_libdir_separator"; then
+               if test -z "$hardcode_libdirs"; then
+                 hardcode_libdirs="$libdir"
+               else
+                 # Just accumulate the unique libdirs.
+                 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+                 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+                   ;;
+                 *)
+                   hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+                   ;;
+                 esac
+               fi
+             else
+               eval flag=\"$hardcode_libdir_flag_spec\"
+               dep_rpath="$dep_rpath $flag"
+             fi
+           elif test -n "$runpath_var"; then
+             case "$perm_rpath " in
+             *" $libdir "*) ;;
+             *) perm_rpath="$perm_rpath $libdir" ;;
+             esac
+           fi
+         done
+         # Substitute the hardcoded libdirs into the rpath.
+         if test -n "$hardcode_libdir_separator" &&
+            test -n "$hardcode_libdirs"; then
+           libdir="$hardcode_libdirs"
+           if test -n "$hardcode_libdir_flag_spec_ld"; then
+             eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+           else
+             eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+           fi
+         fi
+         if test -n "$runpath_var" && test -n "$perm_rpath"; then
+           # We should set the runpath_var.
+           rpath=
+           for dir in $perm_rpath; do
+             rpath="$rpath$dir:"
+           done
+           eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+         fi
+         test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+       fi
+
+       shlibpath="$finalize_shlibpath"
+       test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+       if test -n "$shlibpath"; then
+         eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+       fi
+
+       # Get the real and link names of the library.
+       eval shared_ext=\"$shrext\"
+       eval library_names=\"$library_names_spec\"
+       set dummy $library_names
+       realname="$2"
+       shift; shift
+
+       if test -n "$soname_spec"; then
+         eval soname=\"$soname_spec\"
+       else
+         soname="$realname"
+       fi
+       if test -z "$dlname"; then
+         dlname=$soname
+       fi
+
+       lib="$output_objdir/$realname"
+       for link
+       do
+         linknames="$linknames $link"
+       done
+
+       # Use standard objects if they are pic
+       test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+       # Prepare the list of exported symbols
+       if test -z "$export_symbols"; then
+         if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+           $show "generating symbol list for \`$libname.la'"
+           export_symbols="$output_objdir/$libname.exp"
+           $run $rm $export_symbols
+           eval cmds=\"$export_symbols_cmds\"
+           save_ifs="$IFS"; IFS='~'
+           for cmd in $cmds; do
+             IFS="$save_ifs"
+             if len=`expr "X$cmd" : ".*"` &&
+              test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+               $show "$cmd"
+               $run eval "$cmd" || exit $?
+               skipped_export=false
+             else
+               # The command line is too long to execute in one step.
+               $show "using reloadable object file for export list..."
+               skipped_export=:
+             fi
+           done
+           IFS="$save_ifs"
+           if test -n "$export_symbols_regex"; then
+             $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+             $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+             $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+             $run eval '$mv "${export_symbols}T" "$export_symbols"'
+           fi
+         fi
+       fi
+
+       if test -n "$export_symbols" && test -n "$include_expsyms"; then
+         $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+       fi
+
+       tmp_deplibs=
+       for test_deplib in $deplibs; do
+               case " $convenience " in
+               *" $test_deplib "*) ;;
+               *) 
+                       tmp_deplibs="$tmp_deplibs $test_deplib"
+                       ;;
+               esac
+       done
+       deplibs="$tmp_deplibs" 
+
+       if test -n "$convenience"; then
+         if test -n "$whole_archive_flag_spec"; then
+           save_libobjs=$libobjs
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+         else
+           gentop="$output_objdir/${outputname}x"
+           $show "${rm}r $gentop"
+           $run ${rm}r "$gentop"
+           $show "$mkdir $gentop"
+           $run $mkdir "$gentop"
+           status=$?
+           if test "$status" -ne 0 && test ! -d "$gentop"; then
+             exit $status
+           fi
+           generated="$generated $gentop"
+
+           for xlib in $convenience; do
+             # Extract the objects.
+             case $xlib in
+             [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+             *) xabs=`pwd`"/$xlib" ;;
+             esac
+             xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+             xdir="$gentop/$xlib"
+
+             $show "${rm}r $xdir"
+             $run ${rm}r "$xdir"
+             $show "$mkdir $xdir"
+             $run $mkdir "$xdir"
+             status=$?
+             if test "$status" -ne 0 && test ! -d "$xdir"; then
+               exit $status
+             fi
+             # We will extract separately just the conflicting names and we will no
+             # longer touch any unique names. It is faster to leave these extract
+             # automatically by $AR in one run.
+             $show "(cd $xdir && $AR x $xabs)"
+             $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+             if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
+               :
+             else
+               $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
+               $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
+               $AR t "$xabs" | sort | uniq -cd | while read -r count name
+               do
+                 i=1
+                 while test "$i" -le "$count"
+                 do
+                  # Put our $i before any first dot (extension)
+                  # Never overwrite any file
+                  name_to="$name"
+                  while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
+                  do
+                    name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
+                  done
+                  $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
+                  $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
+                  i=`expr $i + 1`
+                 done
+               done
+             fi
+
+             libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+           done
+         fi
+       fi
+
+       if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+         eval flag=\"$thread_safe_flag_spec\"
+         linker_flags="$linker_flags $flag"
+       fi
+
+       # Make a backup of the uninstalled library when relinking
+       if test "$mode" = relink; then
+         $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+       fi
+
+       # Do each of the archive commands.
+       if test "$module" = yes && test -n "$module_cmds" ; then
+         if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+           eval cmds=\"$module_expsym_cmds\"
+         else
+           eval cmds=\"$module_cmds\"
+         fi
+       else
+       if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+         eval cmds=\"$archive_expsym_cmds\"
+       else
+         eval cmds=\"$archive_cmds\"
+         fi
+       fi
+
+       if test "X$skipped_export" != "X:" && len=`expr "X$cmds" : ".*"` &&
+          test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+         :
+       else
+         # The command line is too long to link in one step, link piecewise.
+         $echo "creating reloadable object files..."
+
+         # Save the value of $output and $libobjs because we want to
+         # use them later.  If we have whole_archive_flag_spec, we
+         # want to use save_libobjs as it was before
+         # whole_archive_flag_spec was expanded, because we can't
+         # assume the linker understands whole_archive_flag_spec.
+         # This may have to be revisited, in case too many
+         # convenience libraries get linked in and end up exceeding
+         # the spec.
+         if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+           save_libobjs=$libobjs
+         fi
+         save_output=$output
+
+         # Clear the reloadable object creation command queue and
+         # initialize k to one.
+         test_cmds=
+         concat_cmds=
+         objlist=
+         delfiles=
+         last_robj=
+         k=1
+         output=$output_objdir/$save_output-${k}.$objext
+         # Loop over the list of objects to be linked.
+         for obj in $save_libobjs
+         do
+           eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+           if test "X$objlist" = X ||
+              { len=`expr "X$test_cmds" : ".*"` &&
+                test "$len" -le "$max_cmd_len"; }; then
+             objlist="$objlist $obj"
+           else
+             # The command $test_cmds is almost too long, add a
+             # command to the queue.
+             if test "$k" -eq 1 ; then
+               # The first file doesn't have a previous command to add.
+               eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+             else
+               # All subsequent reloadable object files will link in
+               # the last one created.
+               eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+             fi
+             last_robj=$output_objdir/$save_output-${k}.$objext
+             k=`expr $k + 1`
+             output=$output_objdir/$save_output-${k}.$objext
+             objlist=$obj
+             len=1
+           fi
+         done
+         # Handle the remaining objects by creating one last
+         # reloadable object file.  All subsequent reloadable object
+         # files will link in the last one created.
+         test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+         eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+         if ${skipped_export-false}; then
+           $show "generating symbol list for \`$libname.la'"
+           export_symbols="$output_objdir/$libname.exp"
+           $run $rm $export_symbols
+           libobjs=$output
+           # Append the command to create the export file.
+           eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+          fi
+
+         # Set up a command to remove the reloadale object files
+         # after they are used.
+         i=0
+         while test "$i" -lt "$k"
+         do
+           i=`expr $i + 1`
+           delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
+         done
+
+         $echo "creating a temporary reloadable object file: $output"
+
+         # Loop through the commands generated above and execute them.
+         save_ifs="$IFS"; IFS='~'
+         for cmd in $concat_cmds; do
+           IFS="$save_ifs"
+           $show "$cmd"
+           $run eval "$cmd" || exit $?
+         done
+         IFS="$save_ifs"
+
+         libobjs=$output
+         # Restore the value of output.
+         output=$save_output
+
+         if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+         fi
+         # Expand the library linking commands again to reset the
+         # value of $libobjs for piecewise linking.
+
+         # Do each of the archive commands.
+         if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+           eval cmds=\"$archive_expsym_cmds\"
+         else
+           eval cmds=\"$archive_cmds\"
+         fi
+
+         # Append the command to remove the reloadable object files
+         # to the just-reset $cmds.
+         eval cmds=\"\$cmds~$rm $delfiles\"
+       fi
+       save_ifs="$IFS"; IFS='~'
+       for cmd in $cmds; do
+         IFS="$save_ifs"
+         $show "$cmd"
+         $run eval "$cmd" || exit $?
+       done
+       IFS="$save_ifs"
+
+       # Restore the uninstalled library and exit
+       if test "$mode" = relink; then
+         $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+         exit 0
+       fi
+
+       # Create links to the real library.
+       for linkname in $linknames; do
+         if test "$realname" != "$linkname"; then
+           $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+           $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+         fi
+       done
+
+       # If -module or -export-dynamic was specified, set the dlname.
+       if test "$module" = yes || test "$export_dynamic" = yes; then
+         # On all known operating systems, these are identical.
+         dlname="$soname"
+       fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$deplibs"; then
+       $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+       $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+       $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+       $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+       $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+       if test -n "$objs$old_deplibs"; then
+         $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+         exit 1
+       fi
+       libobj="$output"
+       obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+       ;;
+      *)
+       libobj=
+       obj="$output"
+       ;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec
+      wl=
+
+      if test -n "$convenience"; then
+       if test -n "$whole_archive_flag_spec"; then
+         eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+       else
+         gentop="$output_objdir/${obj}x"
+         $show "${rm}r $gentop"
+         $run ${rm}r "$gentop"
+         $show "$mkdir $gentop"
+         $run $mkdir "$gentop"
+         status=$?
+         if test "$status" -ne 0 && test ! -d "$gentop"; then
+           exit $status
+         fi
+         generated="$generated $gentop"
+
+         for xlib in $convenience; do
+           # Extract the objects.
+           case $xlib in
+           [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+           *) xabs=`pwd`"/$xlib" ;;
+           esac
+           xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+           xdir="$gentop/$xlib"
+
+           $show "${rm}r $xdir"
+           $run ${rm}r "$xdir"
+           $show "$mkdir $xdir"
+           $run $mkdir "$xdir"
+           status=$?
+           if test "$status" -ne 0 && test ! -d "$xdir"; then
+             exit $status
+           fi
+           # We will extract separately just the conflicting names and we will no
+           # longer touch any unique names. It is faster to leave these extract
+           # automatically by $AR in one run.
+           $show "(cd $xdir && $AR x $xabs)"
+           $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+           if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
+             :
+           else
+             $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
+             $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
+             $AR t "$xabs" | sort | uniq -cd | while read -r count name
+             do
+               i=1
+               while test "$i" -le "$count"
+               do
+                # Put our $i before any first dot (extension)
+                # Never overwrite any file
+                name_to="$name"
+                while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
+                do
+                  name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
+                done
+                $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
+                $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
+                i=`expr $i + 1`
+               done
+             done
+           fi
+
+           reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+         done
+       fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      eval cmds=\"$reload_cmds\"
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+       IFS="$save_ifs"
+       $show "$cmd"
+       $run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+       if test -n "$gentop"; then
+         $show "${rm}r $gentop"
+         $run ${rm}r $gentop
+       fi
+
+       exit 0
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+       if test -n "$gentop"; then
+         $show "${rm}r $gentop"
+         $run ${rm}r $gentop
+       fi
+
+       # Create an invalid libtool object if no PIC, so that we don't
+       # accidentally link it into a program.
+       # $show "echo timestamp > $libobj"
+       # $run eval "echo timestamp > $libobj" || exit $?
+       exit 0
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+       # Only do commands if we really have different PIC objects.
+       reload_objs="$libobjs $reload_conv_objs"
+       output="$libobj"
+       eval cmds=\"$reload_cmds\"
+       save_ifs="$IFS"; IFS='~'
+       for cmd in $cmds; do
+         IFS="$save_ifs"
+         $show "$cmd"
+         $run eval "$cmd" || exit $?
+       done
+       IFS="$save_ifs"
+      fi
+
+      if test -n "$gentop"; then
+       $show "${rm}r $gentop"
+       $run ${rm}r $gentop
+      fi
+
+      exit 0
+      ;;
+
+    prog)
+      case $host in
+       *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+       $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+       $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+       if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+          test "$dlopen_self_static" = unknown; then
+         $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+       fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+       # On Rhapsody replace the C library is the System framework
+       compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+       finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+       ;;
+      esac
+
+      case $host in
+      *darwin*)
+        # Don't allow lazy linking, it breaks C++ global constructors
+        if test "$tagname" = CXX ; then
+        compile_command="$compile_command ${wl}-bind_at_load"
+        finalize_command="$finalize_command ${wl}-bind_at_load"
+        fi
+        ;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       for libdir in $rpath $xrpath; do
+         # This is the magic to use -rpath.
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) finalize_rpath="$finalize_rpath $libdir" ;;
+         esac
+       done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+       if test -n "$hardcode_libdir_flag_spec"; then
+         if test -n "$hardcode_libdir_separator"; then
+           if test -z "$hardcode_libdirs"; then
+             hardcode_libdirs="$libdir"
+           else
+             # Just accumulate the unique libdirs.
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+               ;;
+             *)
+               hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+               ;;
+             esac
+           fi
+         else
+           eval flag=\"$hardcode_libdir_flag_spec\"
+           rpath="$rpath $flag"
+         fi
+       elif test -n "$runpath_var"; then
+         case "$perm_rpath " in
+         *" $libdir "*) ;;
+         *) perm_rpath="$perm_rpath $libdir" ;;
+         esac
+       fi
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+         case :$dllsearchpath: in
+         *":$libdir:"*) ;;
+         *) dllsearchpath="$dllsearchpath:$libdir";;
+         esac
+         ;;
+       esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+        test -n "$hardcode_libdirs"; then
+       libdir="$hardcode_libdirs"
+       eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+       if test -n "$hardcode_libdir_flag_spec"; then
+         if test -n "$hardcode_libdir_separator"; then
+           if test -z "$hardcode_libdirs"; then
+             hardcode_libdirs="$libdir"
+           else
+             # Just accumulate the unique libdirs.
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+               ;;
+             *)
+               hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+               ;;
+             esac
+           fi
+         else
+           eval flag=\"$hardcode_libdir_flag_spec\"
+           rpath="$rpath $flag"
+         fi
+       elif test -n "$runpath_var"; then
+         case "$finalize_perm_rpath " in
+         *" $libdir "*) ;;
+         *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+         esac
+       fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+        test -n "$hardcode_libdirs"; then
+       libdir="$hardcode_libdirs"
+       eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+       # Transform all the library objects into standard objects.
+       compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+       finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       if test -n "$NM" && test -n "$global_symbol_pipe"; then
+         dlsyms="${outputname}S.c"
+       else
+         $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+       fi
+      fi
+
+      if test -n "$dlsyms"; then
+       case $dlsyms in
+       "") ;;
+       *.c)
+         # Discover the nlist of each of the dlfiles.
+         nlist="$output_objdir/${outputname}.nm"
+
+         $show "$rm $nlist ${nlist}S ${nlist}T"
+         $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+         # Parse the name list into a source file.
+         $show "creating $output_objdir/$dlsyms"
+
+         test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+         if test "$dlself" = yes; then
+           $show "generating symbol list for \`$output'"
+
+           test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+           # Add our own program objects to the symbol list.
+           progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+           for arg in $progfiles; do
+             $show "extracting global C symbols from \`$arg'"
+             $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+           done
+
+           if test -n "$exclude_expsyms"; then
+             $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+             $run eval '$mv "$nlist"T "$nlist"'
+           fi
+
+           if test -n "$export_symbols_regex"; then
+             $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+             $run eval '$mv "$nlist"T "$nlist"'
+           fi
+
+           # Prepare the list of exported symbols
+           if test -z "$export_symbols"; then
+             export_symbols="$output_objdir/$output.exp"
+             $run $rm $export_symbols
+             $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+           else
+             $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
+             $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
+             $run eval 'mv "$nlist"T "$nlist"'
+           fi
+         fi
+
+         for arg in $dlprefiles; do
+           $show "extracting global C symbols from \`$arg'"
+           name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+           $run eval '$echo ": $name " >> "$nlist"'
+           $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+         done
+
+         if test -z "$run"; then
+           # Make sure we have at least an empty file.
+           test -f "$nlist" || : > "$nlist"
+
+           if test -n "$exclude_expsyms"; then
+             $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+             $mv "$nlist"T "$nlist"
+           fi
+
+           # Try sorting and uniquifying the output.
+           if grep -v "^: " < "$nlist" |
+               if sort -k 3 </dev/null >/dev/null 2>&1; then
+                 sort -k 3
+               else
+                 sort +2
+               fi |
+               uniq > "$nlist"S; then
+             :
+           else
+             grep -v "^: " < "$nlist" > "$nlist"S
+           fi
+
+           if test -f "$nlist"S; then
+             eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+           else
+             $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+           fi
+
+           $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+           eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+           $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+         fi
+
+         pic_flag_for_symtable=
+         case $host in
+         # compiling the symbol table file with pic_flag works around
+         # a FreeBSD bug that causes programs to crash when -lm is
+         # linked before any other PIC object.  But we must not use
+         # pic_flag when linking with -static.  The problem exists in
+         # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+         *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+           case "$compile_command " in
+           *" -static "*) ;;
+           *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+           esac;;
+         *-*-hpux*)
+           case "$compile_command " in
+           *" -static "*) ;;
+           *) pic_flag_for_symtable=" $pic_flag";;
+           esac
+         esac
+
+         # Now compile the dynamic symbol file.
+         $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+         $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+         # Clean up the generated files.
+         $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+         $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+         # Transform the symbol file into the correct name.
+         compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+         finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+         ;;
+       *)
+         $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+         exit 1
+         ;;
+       esac
+      else
+       # We keep going just in case the user didn't refer to
+       # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+       # really was required.
+
+       # Nullify the symbol file.
+       compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+       finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+       # Replace the output file specification.
+       compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+       link_command="$compile_command$compile_rpath"
+
+       # We have no uninstalled library dependencies, so finalize right now.
+       $show "$link_command"
+       $run eval "$link_command"
+       status=$?
+
+       # Delete the generated files.
+       if test -n "$dlsyms"; then
+         $show "$rm $output_objdir/${outputname}S.${objext}"
+         $run $rm "$output_objdir/${outputname}S.${objext}"
+       fi
+
+       exit $status
+      fi
+
+      if test -n "$shlibpath_var"; then
+       # We should set the shlibpath_var
+       rpath=
+       for dir in $temp_rpath; do
+         case $dir in
+         [\\/]* | [A-Za-z]:[\\/]*)
+           # Absolute path.
+           rpath="$rpath$dir:"
+           ;;
+         *)
+           # Relative path: add a thisdir entry.
+           rpath="$rpath\$thisdir/$dir:"
+           ;;
+         esac
+       done
+       temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+       compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+       finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+       if test -n "$perm_rpath"; then
+         # We should set the runpath_var.
+         rpath=
+         for dir in $perm_rpath; do
+           rpath="$rpath$dir:"
+         done
+         compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+       fi
+       if test -n "$finalize_perm_rpath"; then
+         # We should set the runpath_var.
+         rpath=
+         for dir in $finalize_perm_rpath; do
+           rpath="$rpath$dir:"
+         done
+         finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+       fi
+      fi
+
+      if test "$no_install" = yes; then
+       # We don't need to create a wrapper script.
+       link_command="$compile_var$compile_command$compile_rpath"
+       # Replace the output file specification.
+       link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+       # Delete the old output file.
+       $run $rm $output
+       # Link the executable and exit
+       $show "$link_command"
+       $run eval "$link_command" || exit $?
+       exit 0
+      fi
+
+      if test "$hardcode_action" = relink; then
+       # Fast installation is not supported
+       link_command="$compile_var$compile_command$compile_rpath"
+       relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+       $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+       $echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+       if test "$fast_install" != no; then
+         link_command="$finalize_var$compile_command$finalize_rpath"
+         if test "$fast_install" = yes; then
+           relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+         else
+           # fast_install is set to needless
+           relink_command=
+         fi
+       else
+         link_command="$compile_var$compile_command$compile_rpath"
+         relink_command="$finalize_var$finalize_command$finalize_rpath"
+       fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+       # Preserve any variables that may affect compiler behavior
+       for var in $variables_saved_for_relink; do
+         if eval test -z \"\${$var+set}\"; then
+           relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+         elif eval var_value=\$$var; test -z "$var_value"; then
+           relink_command="$var=; export $var; $relink_command"
+         else
+           var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+           relink_command="$var=\"$var_value\"; export $var; $relink_command"
+         fi
+       done
+       relink_command="(cd `pwd`; $relink_command)"
+       relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
+       case $0 in
+       [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
+       *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
+       esac
+       qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+       qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+       # win32 will think the script is a binary if it has
+       # a .exe suffix, so we strip it off here.
+       case $output in
+         *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+       esac
+       # test for cygwin because mv fails w/o .exe extensions
+       case $host in
+         *cygwin*)
+           exeext=.exe
+           outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+         *) exeext= ;;
+       esac
+       case $host in
+         *cygwin* | *mingw* )
+           cwrappersource=`$echo ${objdir}/lt-${output}.c`
+           cwrapper=`$echo ${output}.exe`
+           $rm $cwrappersource $cwrapper
+           trap "$rm $cwrappersource $cwrapper; exit 1" 1 2 15
+
+           cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+   
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+
+   Currently, it simply execs the wrapper *script* "/bin/sh $output",
+   but could eventually absorb all of the scripts functionality and
+   exec $objdir/$outputname directly.
+*/
+EOF
+           cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+#define DIR_SEPARATOR '/'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+#define HAVE_DOS_BASED_FILE_SYSTEM
+#ifndef DIR_SEPARATOR_2 
+#define DIR_SEPARATOR_2 '\\'
+#endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+char * basename (const char *name);
+char * fnqualify(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int i;
+  
+  program_name = (char *) xstrdup ((char *) basename (argv[0]));
+  newargz = XMALLOC(char *, argc+2);
+EOF
+
+           cat >> $cwrappersource <<EOF
+  newargz[0] = "$SHELL";
+EOF
+
+           cat >> $cwrappersource <<"EOF"
+  newargz[1] = fnqualify(argv[0]);
+  /* we know the script has the same name, without the .exe */
+  /* so make sure newargz[1] doesn't end in .exe */
+  strendzap(newargz[1],".exe"); 
+  for (i = 1; i < argc; i++)
+    newargz[i+1] = xstrdup(argv[i]);
+  newargz[argc+1] = NULL;
+EOF
+
+           cat >> $cwrappersource <<EOF
+  execv("$SHELL",newargz);
+EOF
+
+           cat >> $cwrappersource <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void * p = (void *) malloc (num);
+  if (!p)
+    lt_fatal ("Memory exhausted");
+
+  return p;
+}
+
+char * 
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+char *
+basename (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha (name[0]) && name[1] == ':') 
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return (char *) base;
+}
+
+char * 
+fnqualify(const char *path)
+{
+  size_t size;
+  char *p;
+  char tmp[LT_PATHMAX + 1];
+
+  assert(path != NULL);
+
+  /* Is it qualified already? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha (path[0]) && path[1] == ':')
+    return xstrdup (path);
+#endif
+  if (IS_DIR_SEPARATOR (path[0]))
+    return xstrdup (path);
+
+  /* prepend the current directory */
+  /* doesn't handle '~' */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal ("getcwd failed");
+  size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
+  p = XMALLOC(char, size);
+  sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
+  return p;
+}
+
+char *
+strendzap(char *str, const char *pat) 
+{
+  size_t len, patlen;
+
+  assert(str != NULL);
+  assert(pat != NULL);
+
+  len = strlen(str);
+  patlen = strlen(pat);
+
+  if (patlen <= len)
+  {
+    str += len - patlen;
+    if (strcmp(str, pat) == 0)
+      *str = '\0';
+  }
+  return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode, 
+          const char * message, va_list ap)
+{
+  fprintf (stderr, "%s: %s: ", program_name, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+  va_end (ap);
+}
+EOF
+         # we should really use a build-platform specific compiler
+         # here, but OTOH, the wrappers (shell script and this C one)
+         # are only useful if you want to execute the "real" binary.
+         # Since the "real" binary is built for $host, then this
+         # wrapper might as well be built for $host, too.
+         $run $LTCC -s -o $cwrapper $cwrappersource
+         ;;
+       esac
+       $rm $output
+       trap "$rm $output; exit 1" 1 2 15
+
+       $echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+       $echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+       if test "$fast_install" = yes; then
+         $echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+         $echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+       $echo \"\$relink_command_output\" >&2
+       $rm \"\$progdir/\$file\"
+       exit 1
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+       else
+         $echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+       fi
+
+       $echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+       # Export our shlibpath_var if we have one.
+       if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+         $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+       fi
+
+       # fixup the dll searchpath if we need to.
+       if test -n "$dllsearchpath"; then
+         $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+       fi
+
+       $echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+       case $host in
+       # Backslashes separate directories on plain windows
+       *-*-mingw | *-*-os2*)
+         $echo >> $output "\
+      exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+         ;;
+
+       *)
+         $echo >> $output "\
+      exec \$progdir/\$program \${1+\"\$@\"}
+"
+         ;;
+       esac
+       $echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit 1
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+       chmod +x $output
+      fi
+      exit 0
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+       oldobjs="$libobjs_save"
+       addlibs="$convenience"
+       build_libtool_libs=no
+      else
+       if test "$build_libtool_libs" = module; then
+         oldobjs="$libobjs_save"
+         build_libtool_libs=no
+       else
+         oldobjs="$old_deplibs $non_pic_objects"
+       fi
+       addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+       gentop="$output_objdir/${outputname}x"
+       $show "${rm}r $gentop"
+       $run ${rm}r "$gentop"
+       $show "$mkdir $gentop"
+       $run $mkdir "$gentop"
+       status=$?
+       if test "$status" -ne 0 && test ! -d "$gentop"; then
+         exit $status
+       fi
+       generated="$generated $gentop"
+
+       # Add in members from convenience archives.
+       for xlib in $addlibs; do
+         # Extract the objects.
+         case $xlib in
+         [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+         *) xabs=`pwd`"/$xlib" ;;
+         esac
+         xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+         xdir="$gentop/$xlib"
+
+         $show "${rm}r $xdir"
+         $run ${rm}r "$xdir"
+         $show "$mkdir $xdir"
+         $run $mkdir "$xdir"
+         status=$?
+         if test "$status" -ne 0 && test ! -d "$xdir"; then
+           exit $status
+         fi
+         # We will extract separately just the conflicting names and we will no
+         # longer touch any unique names. It is faster to leave these extract
+         # automatically by $AR in one run.
+         $show "(cd $xdir && $AR x $xabs)"
+         $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+         if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
+           :
+         else
+           $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
+           $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
+           $AR t "$xabs" | sort | uniq -cd | while read -r count name
+           do
+             i=1
+             while test "$i" -le "$count"
+             do
+              # Put our $i before any first dot (extension)
+              # Never overwrite any file
+              name_to="$name"
+              while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
+              do
+                name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
+              done
+              $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
+              $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
+              i=`expr $i + 1`
+             done
+           done
+         fi
+
+         oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
+       done
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       eval cmds=\"$old_archive_from_new_cmds\"
+      else
+       eval cmds=\"$old_archive_cmds\"
+
+       if len=`expr "X$cmds" : ".*"` &&
+            test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+         :
+       else
+         # the command line is too long to link in one step, link in parts
+         $echo "using piecewise archive linking..."
+         save_RANLIB=$RANLIB
+         RANLIB=:
+         objlist=
+         concat_cmds=
+         save_oldobjs=$oldobjs
+         # GNU ar 2.10+ was changed to match POSIX; thus no paths are
+         # encoded into archives.  This makes 'ar r' malfunction in
+         # this piecewise linking case whenever conflicting object
+         # names appear in distinct ar calls; check, warn and compensate.
+           if (for obj in $save_oldobjs
+           do
+             $echo "X$obj" | $Xsed -e 's%^.*/%%'
+           done | sort | sort -uc >/dev/null 2>&1); then
+           :
+         else
+           $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2
+           $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2
+           AR_FLAGS=cq
+         fi
+         # Is there a better way of finding the last object in the list?
+         for obj in $save_oldobjs
+         do
+           last_oldobj=$obj
+         done  
+         for obj in $save_oldobjs
+         do
+           oldobjs="$objlist $obj"
+           objlist="$objlist $obj"
+           eval test_cmds=\"$old_archive_cmds\"
+           if len=`expr "X$test_cmds" : ".*"` &&
+              test "$len" -le "$max_cmd_len"; then
+             :
+           else
+             # the above command should be used before it gets too long
+             oldobjs=$objlist
+             if test "$obj" = "$last_oldobj" ; then
+               RANLIB=$save_RANLIB
+             fi  
+             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+             eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+             objlist=
+           fi
+         done
+         RANLIB=$save_RANLIB
+         oldobjs=$objlist
+         if test "X$oldobjs" = "X" ; then
+           eval cmds=\"\$concat_cmds\"
+         else
+           eval cmds=\"\$concat_cmds~$old_archive_cmds\"
+         fi
+       fi
+      fi
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+       IFS="$save_ifs"
+       $show "$cmd"
+       $run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+       if eval test -z \"\${$var+set}\"; then
+         relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+       elif eval var_value=\$$var; test -z "$var_value"; then
+         relink_command="$var=; export $var; $relink_command"
+       else
+         var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+         relink_command="$var=\"$var_value\"; export $var; $relink_command"
+       fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+       for installed in no yes; do
+         if test "$installed" = yes; then
+           if test -z "$install_libdir"; then
+             break
+           fi
+           output="$output_objdir/$outputname"i
+           # Replace all uninstalled libtool libraries with the installed ones
+           newdependency_libs=
+           for deplib in $dependency_libs; do
+             case $deplib in
+             *.la)
+               name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+               if test -z "$libdir"; then
+                 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+                 exit 1
+               fi
+               newdependency_libs="$newdependency_libs $libdir/$name"
+               ;;
+             *) newdependency_libs="$newdependency_libs $deplib" ;;
+             esac
+           done
+           dependency_libs="$newdependency_libs"
+           newdlfiles=
+           for lib in $dlfiles; do
+             name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+             eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+             if test -z "$libdir"; then
+               $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+               exit 1
+             fi
+             newdlfiles="$newdlfiles $libdir/$name"
+           done
+           dlfiles="$newdlfiles"
+           newdlprefiles=
+           for lib in $dlprefiles; do
+             name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+             eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+             if test -z "$libdir"; then
+               $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+               exit 1
+             fi
+             newdlprefiles="$newdlprefiles $libdir/$name"
+           done
+           dlprefiles="$newdlprefiles"
+         fi
+         $rm $output
+         # place dlname in correct position for cygwin
+         tdlname=$dlname
+         case $host,$output,$installed,$module,$dlname in
+           *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+         esac
+         $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+         if test "$installed" = no && test "$need_relink" = yes; then
+           $echo >> $output "\
+relink_command=\"$relink_command\""
+         fi
+       done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit 0
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*)
+       arg="\"$arg\""
+       ;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg="$nonopt"
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \      ]*|*]*)
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+       files="$files $dest"
+       dest="$arg"
+       continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) prev="-f" ;;
+      -g) prev="-g" ;;
+      -m) prev="-m" ;;
+      -o) prev="-o" ;;
+      -s)
+       stripme=" -s"
+       continue
+       ;;
+      -*) ;;
+
+      *)
+       # If the previous option needed an argument, then skip it.
+       if test -n "$prev"; then
+         prev=
+       else
+         dest="$arg"
+         continue
+       fi
+       ;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*)
+       arg="\"$arg\""
+       ;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+       $echo "$modename: no file or destination specified" 1>&2
+      else
+       $echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test "$#" -gt 2; then
+       $echo "$modename: \`$dest' is not a directory" 1>&2
+       $echo "$help" 1>&2
+       exit 1
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+       case $file in
+       *.lo) ;;
+       *)
+         $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+         ;;
+       esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+       # Do the static libraries later.
+       staticlibs="$staticlibs $file"
+       ;;
+
+      *.la)
+       # Check to see that this really is a libtool archive.
+       if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+       else
+         $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+       fi
+
+       library_names=
+       old_library=
+       relink_command=
+       # If there is no directory component, then add one.
+       case $file in
+       */* | *\\*) . $file ;;
+       *) . ./$file ;;
+       esac
+
+       # Add the libdir to current_libdirs if it is the destination.
+       if test "X$destdir" = "X$libdir"; then
+         case "$current_libdirs " in
+         *" $libdir "*) ;;
+         *) current_libdirs="$current_libdirs $libdir" ;;
+         esac
+       else
+         # Note the libdir as a future libdir.
+         case "$future_libdirs " in
+         *" $libdir "*) ;;
+         *) future_libdirs="$future_libdirs $libdir" ;;
+         esac
+       fi
+
+       dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+       test "X$dir" = "X$file/" && dir=
+       dir="$dir$objdir"
+
+       if test -n "$relink_command"; then
+         # Determine the prefix the user has applied to our future dir.
+         inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
+
+         # Don't allow the user to place us outside of our expected
+         # location b/c this prevents finding dependent libraries that
+         # are installed to the same prefix.
+         # At present, this check doesn't affect windows .dll's that
+         # are installed into $libdir/../bin (currently, that works fine)
+         # but it's something to keep an eye on.
+         if test "$inst_prefix_dir" = "$destdir"; then
+           $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+           exit 1
+         fi
+
+         if test -n "$inst_prefix_dir"; then
+           # Stick the inst_prefix_dir data into the link command.
+           relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+         else
+           relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+         fi
+
+         $echo "$modename: warning: relinking \`$file'" 1>&2
+         $show "$relink_command"
+         if $run eval "$relink_command"; then :
+         else
+           $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+           exit 1
+         fi
+       fi
+
+       # See the names of the shared library.
+       set dummy $library_names
+       if test -n "$2"; then
+         realname="$2"
+         shift
+         shift
+
+         srcname="$realname"
+         test -n "$relink_command" && srcname="$realname"T
+
+         # Install the shared library and build the symlinks.
+         $show "$install_prog $dir/$srcname $destdir/$realname"
+         $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+         if test -n "$stripme" && test -n "$striplib"; then
+           $show "$striplib $destdir/$realname"
+           $run eval "$striplib $destdir/$realname" || exit $?
+         fi
+
+         if test "$#" -gt 0; then
+           # Delete the old symlinks, and create new ones.
+           for linkname
+           do
+             if test "$linkname" != "$realname"; then
+               $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+               $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+             fi
+           done
+         fi
+
+         # Do each command in the postinstall commands.
+         lib="$destdir/$realname"
+         eval cmds=\"$postinstall_cmds\"
+         save_ifs="$IFS"; IFS='~'
+         for cmd in $cmds; do
+           IFS="$save_ifs"
+           $show "$cmd"
+           $run eval "$cmd" || exit $?
+         done
+         IFS="$save_ifs"
+       fi
+
+       # Install the pseudo-library for information purposes.
+       name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+       instname="$dir/$name"i
+       $show "$install_prog $instname $destdir/$name"
+       $run eval "$install_prog $instname $destdir/$name" || exit $?
+
+       # Maybe install the static library, too.
+       test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+       ;;
+
+      *.lo)
+       # Install (i.e. copy) a libtool object.
+
+       # Figure out destination file name, if it wasn't already specified.
+       if test -n "$destname"; then
+         destfile="$destdir/$destname"
+       else
+         destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+         destfile="$destdir/$destfile"
+       fi
+
+       # Deduce the name of the destination old-style object file.
+       case $destfile in
+       *.lo)
+         staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+         ;;
+       *.$objext)
+         staticdest="$destfile"
+         destfile=
+         ;;
+       *)
+         $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+         ;;
+       esac
+
+       # Install the libtool object if requested.
+       if test -n "$destfile"; then
+         $show "$install_prog $file $destfile"
+         $run eval "$install_prog $file $destfile" || exit $?
+       fi
+
+       # Install the old object if enabled.
+       if test "$build_old_libs" = yes; then
+         # Deduce the name of the old-style object file.
+         staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+         $show "$install_prog $staticobj $staticdest"
+         $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+       fi
+       exit 0
+       ;;
+
+      *)
+       # Figure out destination file name, if it wasn't already specified.
+       if test -n "$destname"; then
+         destfile="$destdir/$destname"
+       else
+         destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+         destfile="$destdir/$destfile"
+       fi
+
+       # If the file is missing, and there is a .exe on the end, strip it
+       # because it is most likely a libtool script we actually want to
+       # install
+       stripped_ext=""
+       case $file in
+         *.exe)
+           if test ! -f "$file"; then
+             file=`$echo $file|${SED} 's,.exe$,,'`
+             stripped_ext=".exe"
+           fi
+           ;;
+       esac
+
+       # Do a test to see if this is really a libtool program.
+       case $host in
+       *cygwin*|*mingw*)
+           wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+           ;;
+       *)
+           wrapper=$file
+           ;;
+       esac
+       if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+         notinst_deplibs=
+         relink_command=
+
+         # To insure that "foo" is sourced, and not "foo.exe",
+         # finese the cygwin/MSYS system by explicitly sourcing "foo."
+         # which disallows the automatic-append-.exe behavior.
+         case $build in
+         *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+         *) wrapperdot=${wrapper} ;;
+         esac
+         # If there is no directory component, then add one.
+         case $file in
+         */* | *\\*) . ${wrapperdot} ;;
+         *) . ./${wrapperdot} ;;
+         esac
+
+         # Check the variables that should have been set.
+         if test -z "$notinst_deplibs"; then
+           $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+           exit 1
+         fi
+
+         finalize=yes
+         for lib in $notinst_deplibs; do
+           # Check to see that each library is installed.
+           libdir=
+           if test -f "$lib"; then
+             # If there is no directory component, then add one.
+             case $lib in
+             */* | *\\*) . $lib ;;
+             *) . ./$lib ;;
+             esac
+           fi
+           libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+           if test -n "$libdir" && test ! -f "$libfile"; then
+             $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+             finalize=no
+           fi
+         done
+
+         relink_command=
+         # To insure that "foo" is sourced, and not "foo.exe",
+         # finese the cygwin/MSYS system by explicitly sourcing "foo."
+         # which disallows the automatic-append-.exe behavior.
+         case $build in
+         *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+         *) wrapperdot=${wrapper} ;;
+         esac
+         # If there is no directory component, then add one.
+         case $file in
+         */* | *\\*) . ${wrapperdot} ;;
+         *) . ./${wrapperdot} ;;
+         esac
+
+         outputname=
+         if test "$fast_install" = no && test -n "$relink_command"; then
+           if test "$finalize" = yes && test -z "$run"; then
+             tmpdir="/tmp"
+             test -n "$TMPDIR" && tmpdir="$TMPDIR"
+              tmpdir=`mktemp -d $tmpdir/libtool-XXXXXX 2> /dev/null` ||
+                tmpdir="$tmpdir/libtool-$$"
+             if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
+             else
+               $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+               continue
+             fi
+             file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+             outputname="$tmpdir/$file"
+             # Replace the output file specification.
+             relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+             $show "$relink_command"
+             if $run eval "$relink_command"; then :
+             else
+               $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+               ${rm}r "$tmpdir"
+               continue
+             fi
+             file="$outputname"
+           else
+             $echo "$modename: warning: cannot relink \`$file'" 1>&2
+           fi
+         else
+           # Install the binary that we compiled earlier.
+           file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+         fi
+       fi
+
+       # remove .exe since cygwin /usr/bin/install will append another
+       # one anyways
+       case $install_prog,$host in
+       */usr/bin/install*,*cygwin*)
+         case $file:$destfile in
+         *.exe:*.exe)
+           # this is ok
+           ;;
+         *.exe:*)
+           destfile=$destfile.exe
+           ;;
+         *:*.exe)
+           destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+           ;;
+         esac
+         ;;
+       esac
+       $show "$install_prog$stripme $file $destfile"
+       $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+       test -n "$outputname" && ${rm}r "$tmpdir"
+       ;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$striplib"; then
+       $show "$old_striplib $oldlib"
+       $run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      eval cmds=\"$old_postinstall_cmds\"
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+       IFS="$save_ifs"
+       $show "$cmd"
+       $run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $0 --finish$current_libdirs'
+    else
+      exit 0
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+       libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+       if test -n "$finish_cmds"; then
+         # Do each command in the finish commands.
+         eval cmds=\"$finish_cmds\"
+         save_ifs="$IFS"; IFS='~'
+         for cmd in $cmds; do
+           IFS="$save_ifs"
+           $show "$cmd"
+           $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+         done
+         IFS="$save_ifs"
+       fi
+       if test -n "$finish_eval"; then
+         # Do the single finish_eval.
+         eval cmds=\"$finish_eval\"
+         $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+       fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = : && exit 0
+
+    $echo "----------------------------------------------------------------------"
+    $echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      $echo "   $libdir"
+    done
+    $echo
+    $echo "If you ever happen to want to link against installed libraries"
+    $echo "in a given directory, LIBDIR, you must either use libtool, and"
+    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    $echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      $echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      $echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      $echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      $echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    $echo
+    $echo "See any operating system documentation about shared libraries for"
+    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    $echo "----------------------------------------------------------------------"
+    exit 0
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit 1
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+       $echo "$modename: \`$file' is not a file" 1>&2
+       $echo "$help" 1>&2
+       exit 1
+      fi
+
+      dir=
+      case $file in
+      *.la)
+       # Check to see that this really is a libtool archive.
+       if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+       else
+         $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+       fi
+
+       # Read the libtool library.
+       dlname=
+       library_names=
+
+       # If there is no directory component, then add one.
+       case $file in
+       */* | *\\*) . $file ;;
+       *) . ./$file ;;
+       esac
+
+       # Skip this library if it cannot be dlopened.
+       if test -z "$dlname"; then
+         # Warn if it was a shared library.
+         test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+         continue
+       fi
+
+       dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+       test "X$dir" = "X$file" && dir=.
+
+       if test -f "$dir/$objdir/$dlname"; then
+         dir="$dir/$objdir"
+       else
+         $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+         exit 1
+       fi
+       ;;
+
+      *.lo)
+       # Just add the directory containing the .lo file.
+       dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+       test "X$dir" = "X$file" && dir=.
+       ;;
+
+      *)
+       $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+       continue
+       ;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+       eval "$shlibpath_var=\"\$dir\""
+      else
+       eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+       # Do a test to see if this is really a libtool program.
+       if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+         # If there is no directory component, then add one.
+         case $file in
+         */* | *\\*) . $file ;;
+         *) . ./$file ;;
+         esac
+
+         # Transform arg to wrapped name.
+         file="$progdir/$program"
+       fi
+       ;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+       # Export the shlibpath_var.
+       eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      if test "${save_LC_ALL+set}" = set; then
+       LC_ALL="$save_LC_ALL"; export LC_ALL
+      fi
+      if test "${save_LANG+set}" = set; then
+       LANG="$save_LANG"; export LANG
+      fi
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\"\$cmd\"$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+       eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+       $echo "export $shlibpath_var"
+      fi
+      eval \$echo \"\$cmd\"$args
+      exit 0
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    rmdirs=
+
+    origobjdir="$objdir"
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+       dir=.
+       objdir="$origobjdir"
+      else
+       objdir="$dir/$origobjdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test "$mode" = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test "$mode" = clean; then
+       case " $rmdirs " in
+         *" $objdir "*) ;;
+         *) rmdirs="$rmdirs $objdir" ;;
+       esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+       || (test -h "$file") >/dev/null 2>&1 \
+       || test -f "$file"; then
+       :
+      elif test -d "$file"; then
+       exit_status=1
+       continue
+      elif test "$rmforce" = yes; then
+       continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+       # Possibly a libtool archive, so verify it.
+       if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+         . $dir/$name
+
+         # Delete the libtool libraries and symlinks.
+         for n in $library_names; do
+           rmfiles="$rmfiles $objdir/$n"
+         done
+         test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+         test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+         if test "$mode" = uninstall; then
+           if test -n "$library_names"; then
+             # Do each command in the postuninstall commands.
+             eval cmds=\"$postuninstall_cmds\"
+             save_ifs="$IFS"; IFS='~'
+             for cmd in $cmds; do
+               IFS="$save_ifs"
+               $show "$cmd"
+               $run eval "$cmd"
+               if test "$?" -ne 0 && test "$rmforce" != yes; then
+                 exit_status=1
+               fi
+             done
+             IFS="$save_ifs"
+           fi
+
+           if test -n "$old_library"; then
+             # Do each command in the old_postuninstall commands.
+             eval cmds=\"$old_postuninstall_cmds\"
+             save_ifs="$IFS"; IFS='~'
+             for cmd in $cmds; do
+               IFS="$save_ifs"
+               $show "$cmd"
+               $run eval "$cmd"
+               if test "$?" -ne 0 && test "$rmforce" != yes; then
+                 exit_status=1
+               fi
+             done
+             IFS="$save_ifs"
+           fi
+           # FIXME: should reinstall the best remaining shared library.
+         fi
+       fi
+       ;;
+
+      *.lo)
+       # Possibly a libtool object, so verify it.
+       if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+         # Read the .lo file
+         . $dir/$name
+
+         # Add PIC object to the list of files to remove.
+         if test -n "$pic_object" \
+            && test "$pic_object" != none; then
+           rmfiles="$rmfiles $dir/$pic_object"
+         fi
+
+         # Add non-PIC object to the list of files to remove.
+         if test -n "$non_pic_object" \
+            && test "$non_pic_object" != none; then
+           rmfiles="$rmfiles $dir/$non_pic_object"
+         fi
+       fi
+       ;;
+
+      *)
+       if test "$mode" = clean ; then
+         noexename=$name
+         case $file in
+         *.exe) 
+           file=`$echo $file|${SED} 's,.exe$,,'`
+           noexename=`$echo $name|${SED} 's,.exe$,,'`
+           # $file with .exe has already been added to rmfiles,
+           # add $file without .exe
+           rmfiles="$rmfiles $file"
+           ;;
+         esac
+         # Do a test to see if this is a libtool program.
+         if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+           relink_command=
+           . $dir/$noexename
+
+           # note $name still contains .exe if it was in $file originally
+           # as does the version of $file that was added into $rmfiles
+           rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+           if test "$fast_install" = yes && test -n "$relink_command"; then
+             rmfiles="$rmfiles $objdir/lt-$name"
+           fi
+           if test "X$noexename" != "X$name" ; then
+             rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+           fi
+         fi
+       fi
+       ;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+    objdir="$origobjdir"
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+       $show "rmdir $dir"
+       $run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit 1
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit 1
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit 1
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --tag=TAG         use configuration variables from tag TAG
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool@gnu.org>."
+  exit 0
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                   try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                   try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                   specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+  ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit 0
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/lib/cppunit-1.10.0/config/missing b/lib/cppunit-1.10.0/config/missing
new file mode 100755 (executable)
index 0000000..6a37006
--- /dev/null
@@ -0,0 +1,336 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+case "$1" in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing 0.4 - GNU automake"
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+  aclocal*)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case "$f" in
+      *:*) touch_files="$touch_files "`echo "$f" |
+                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+          sed 's/\.am$/.in/' |
+          while read f; do touch "$f"; done
+    ;;
+
+  autom4te)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+         system.  You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1Help2man' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo "#! /bin/sh"
+       echo "# Created by GNU Automake missing as a replacement of"
+       echo "#  $ $@"
+       echo "exit 0"
+       chmod +x $file
+       exit 1
+    fi
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+       case "$LASTARG" in
+       *.y)
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+           if [ -f "$SRCFILE" ]; then
+                cp "$SRCFILE" y.tab.c
+           fi
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+           if [ -f "$SRCFILE" ]; then
+                cp "$SRCFILE" y.tab.h
+           fi
+         ;;
+       esac
+    fi
+    if [ ! -f y.tab.h ]; then
+       echo >y.tab.h
+    fi
+    if [ ! -f y.tab.c ]; then
+       echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex|flex)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+       case "$LASTARG" in
+       *.l)
+           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+           if [ -f "$SRCFILE" ]; then
+                cp "$SRCFILE" lex.yy.c
+           fi
+         ;;
+       esac
+    fi
+    if [ ! -f lex.yy.c ]; then
+       echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+        you modified a dependency of a manual page.  You may need the
+        \`Help2man' package in order for those modifications to take
+        effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+       file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+    fi
+    if [ -f "$file" ]; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo ".ab help2man is required to generate this page"
+       exit 1
+    fi
+    ;;
+
+  makeinfo)
+    if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
+       # We have makeinfo, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+    fi
+    touch $file
+    ;;
+
+  tar)
+    shift
+    if test -n "$run"; then
+      echo 1>&2 "ERROR: \`tar' requires --run"
+      exit 1
+    fi
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+       case "$firstarg" in
+       *o*)
+           firstarg=`echo "$firstarg" | sed s/o//`
+           tar "$firstarg" "$@" && exit 0
+           ;;
+       esac
+       case "$firstarg" in
+       *h*)
+           firstarg=`echo "$firstarg" | sed s/h//`
+           tar "$firstarg" "$@" && exit 0
+           ;;
+       esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+         system.  You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequirements for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
diff --git a/lib/cppunit-1.10.0/config/mkinstalldirs b/lib/cppunit-1.10.0/config/mkinstalldirs
new file mode 100755 (executable)
index 0000000..d2d5f21
--- /dev/null
@@ -0,0 +1,111 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+# Author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain
+
+errstatus=0
+dirmode=""
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage" 1>&2
+      exit 0
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+case $dirmode in
+  '')
+    if mkdir -p -- . 2>/dev/null; then
+      echo "mkdir -p -- $*"
+      exec mkdir -p -- "$@"
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    fi
+    ;;
+esac
+
+for file
+do
+  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+  shift
+
+  pathcomp=
+  for d
+  do
+    pathcomp="$pathcomp$d"
+    case $pathcomp in
+      -*) pathcomp=./$pathcomp ;;
+    esac
+
+    if test ! -d "$pathcomp"; then
+      echo "mkdir $pathcomp"
+
+      mkdir "$pathcomp" || lasterr=$?
+
+      if test ! -d "$pathcomp"; then
+       errstatus=$lasterr
+      else
+       if test ! -z "$dirmode"; then
+         echo "chmod $dirmode $pathcomp"
+         lasterr=""
+         chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+         if test ! -z "$lasterr"; then
+           errstatus=$lasterr
+         fi
+       fi
+      fi
+    fi
+
+    pathcomp="$pathcomp/"
+  done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# End:
+# mkinstalldirs ends here
diff --git a/lib/cppunit-1.10.0/configure b/lib/cppunit-1.10.0/configure
new file mode 100755 (executable)
index 0000000..2e28ba6
--- /dev/null
@@ -0,0 +1,21179 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.57.
+#
+# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)$' \| \
+        .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+         /^X\/\(\/\/\)$/{ s//\1/; q; }
+         /^X\/\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+        case $as_dir in
+        /*)
+          if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+            $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+            $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+            CONFIG_SHELL=$as_dir/$as_base
+            export CONFIG_SHELL
+            exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+          fi;;
+        esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='     ' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS="  $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    IFS="$lt_save_ifs"
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+        test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+        echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+        test "X$echo_testing_string" = "X$echo_test_string"; then
+       # Cool, printf works
+       :
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+          test "X$echo_testing_string" = 'X\t' &&
+          echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+          test "X$echo_testing_string" = "X$echo_test_string"; then
+       CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+       export CONFIG_SHELL
+       SHELL="$CONFIG_SHELL"
+       export SHELL
+       echo="$CONFIG_SHELL $0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+          test "X$echo_testing_string" = 'X\t' &&
+          echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+          test "X$echo_testing_string" = "X$echo_test_string"; then
+       echo="$CONFIG_SHELL $0 --fallback-echo"
+      else
+       # maybe with a smaller string...
+       prev=:
+
+       for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+         if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+         then
+           break
+         fi
+         prev="$cmd"
+       done
+
+       if test "$prev" != 'sed 50q "$0"'; then
+         echo_test_string=`eval $prev`
+         export echo_test_string
+         exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+       else
+         # Oops.  We lost completely, so just stick with echo.
+         echo=echo
+       fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=`echo "$tagnames,CXX" | sed 's/^,//'`
+
+tagnames=`echo "$tagnames,F77" | sed 's/^,//'`
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_unique_file="Makefile.am"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+#  include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CPPUNIT_MAJOR_VERSION CPPUNIT_MINOR_VERSION CPPUNIT_MICRO_VERSION CPPUNIT_INTERFACE_AGE CPPUNIT_BINARY_AGE CPPUNIT_VERSION LT_RELEASE LT_CURRENT LT_REVISION LT_AGE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBADD_DL DOXYGEN DOT DOC_TRUE DOC_FALSE enable_dot enable_html_docs enable_latex_docs LIBOBJS LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    eval "enable_$ac_feature=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_$ac_feature='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_$ac_package='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar='$ac_optarg'"
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+              localstatedir libdir includedir oldincludedir infodir mandir
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$0" : 'X\(//\)[^/]' \| \
+         X"$0" : 'X\(//\)$' \| \
+         X"$0" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+  fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+   { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+ac_env_CXXCPP_set=${CXXCPP+set}
+ac_env_CXXCPP_value=$CXXCPP
+ac_cv_env_CXXCPP_set=${CXXCPP+set}
+ac_cv_env_CXXCPP_value=$CXXCPP
+ac_env_F77_set=${F77+set}
+ac_env_F77_value=$F77
+ac_cv_env_F77_set=${F77+set}
+ac_cv_env_F77_value=$F77
+ac_env_FFLAGS_set=${FFLAGS+set}
+ac_env_FFLAGS_value=$FFLAGS
+ac_cv_env_FFLAGS_set=${FFLAGS+set}
+ac_cv_env_FFLAGS_value=$FFLAGS
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+  cat <<_ACEOF
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --infodir=DIR          info documentation [PREFIX/info]
+  --mandir=DIR           man documentation [PREFIX/man]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-dependency-tracking Speeds up one-time builds
+  --enable-dependency-tracking  Do not reject slow dependency extractors
+  --enable-shared[=PKGS]
+                          build shared libraries [default=yes]
+  --enable-static[=PKGS]
+                          build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --enable-doxygen        enable documentation generation with doxygen (auto)
+  --enable-dot            use 'dot' to generate graphs in doxygen (auto)
+  --enable-html-docs      enable HTML generation with doxygen (yes)
+  --enable-latex-docs     enable LaTeX documentation generation with doxygen (no)
+  --disable-typeinfo-name disable use of RTTI for class names
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-tags[=TAGS]
+                          include additional configurations [automatic]
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+              headers in a nonstandard directory <include dir>
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CPP         C preprocessor
+  CXXCPP      C++ preprocessor
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 compiler flags
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=`pwd`
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d $ac_dir || continue
+    ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
+# absolute.
+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+    cd $ac_dir
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_srcdir/configure.gnu; then
+      echo
+      $SHELL $ac_srcdir/configure.gnu  --help=recursive
+    elif test -f $ac_srcdir/configure; then
+      echo
+      $SHELL $ac_srcdir/configure  --help=recursive
+    elif test -f $ac_srcdir/configure.ac ||
+           test -f $ac_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi
+    cd $ac_popdir
+  done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\_ACEOF
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
+Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.57.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *" "*|*"   "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+        ac_must_keep_next=false # Got value, back to normal.
+      else
+        case $ac_arg in
+          *=* | --config-cache | -C | -disable-* | --disable-* \
+          | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+          | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+          | -with-* | --with-* | -without-* | --without-* | --x)
+            case "$ac_configure_args0 " in
+              "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+            esac
+            ;;
+          -* ) ac_must_keep_next=true ;;
+        esac
+      fi
+      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+      # Get rid of the leading space.
+      ac_sep=" "
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      sed -n \
+        "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+}
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=$`echo $ac_var`
+      echo "$ac_var='"'"'$ac_val'"'"'"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=$`echo $ac_var`
+        echo "$ac_var='"'"'$ac_val'"'"'"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      sed "/^$/d" confdefs.h | sort
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      echo "$as_me: caught signal $ac_signal"
+    echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core core.* *.core &&
+  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+               sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+  eval ac_new_val="\$ac_env_${ac_var}_value"
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+        { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+        { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+        { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+        ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *" "*|*"   "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# autoconf 2.50 or higher to rebuild aclocal.m4, because the
+# AC_CREATE_PREFIX_CONFIG_H macro needs the AS_DIRNAME macro.
+
+
+# Making releases:
+#   CPPUNIT_MICRO_VERSION += 1;
+#   CPPUNIT_INTERFACE_AGE += 1;
+#   CPPUNIT_BINARY_AGE += 1;
+# if any functions have been added, set CPPUNIT_INTERFACE_AGE to 0.
+# if backwards compatibility has been broken,
+# set CPPUNIT_BINARY_AGE and CPPUNIT_INTERFACE_AGE to 0.
+#
+CPPUNIT_MAJOR_VERSION=1
+CPPUNIT_MINOR_VERSION=10
+CPPUNIT_MICRO_VERSION=0
+CPPUNIT_INTERFACE_AGE=0
+CPPUNIT_BINARY_AGE=0
+CPPUNIT_VERSION=$CPPUNIT_MAJOR_VERSION.$CPPUNIT_MINOR_VERSION.$CPPUNIT_MICRO_VERSION
+
+
+
+
+
+
+
+# libtool versioning
+LT_RELEASE=$CPPUNIT_MAJOR_VERSION.$CPPUNIT_MINOR_VERSION
+LT_CURRENT=`expr $CPPUNIT_MICRO_VERSION - $CPPUNIT_INTERFACE_AGE`
+LT_REVISION=$CPPUNIT_INTERFACE_AGE
+LT_AGE=`expr $CPPUNIT_BINARY_AGE - $CPPUNIT_INTERFACE_AGE`
+
+
+
+
+
+ac_aux_dir=
+for ac_dir in config $srcdir/config; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f $ac_dir/shtool; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config $srcdir/config" >&5
+echo "$as_me: error: cannot find install-sh or install.sh in config $srcdir/config" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+          ac_config_headers="$ac_config_headers config/config.h"
+
+am__api_version="1.7"
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+          if test $ac_prog = install &&
+            grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+            # AIX install.  It has an incompatible calling convention.
+            :
+          elif test $ac_prog = install &&
+            grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+            # program-specific install script used by HP pwplus--don't use.
+            :
+          else
+            ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+            break 3
+          fi
+        fi
+      done
+    done
+    ;;
+esac
+done
+
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+test "$program_prefix" != NONE &&
+  program_transform_name="s,^,$program_prefix,;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s,\$,$program_suffix,;$program_transform_name"
+# Double any \ or $.  echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm conftest.sed
+
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AWK+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$AWK" && break
+done
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\_ACEOF
+all:
+       @echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  SET_MAKE=
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+ # test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE=cppunit
+ VERSION=$CPPUNIT_VERSION
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+
+
+
+
+# General "with" options
+# ----------------------------------------------------------------------------
+
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\_ACEOF
+all:
+       @echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  SET_MAKE=
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+          if test $ac_prog = install &&
+            grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+            # AIX install.  It has an incompatible calling convention.
+            :
+          elif test $ac_prog = install &&
+            grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+            # program-specific install script used by HP pwplus--don't use.
+            :
+          else
+            ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+            break 3
+          fi
+        fi
+      done
+    done
+    ;;
+esac
+done
+
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+# The libtool macro AC_PROG_LIBTOOL checks for the C preprocessor.
+# Configure gets confused if we try to check for a C preprocessor
+# without first checking for the C compiler
+# (see http://sources.redhat.com/ml/autoconf/2001-07/msg00036.html),
+# so we invoke AC_PROG_CC explicitly.
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CC" && break
+done
+
+  CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:$LINENO: checking for C compiler default output" >&5
+echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+  (eval $ac_link_default) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Find the output, starting from the most likely.  This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+        ;;
+    conftest.$ac_ext )
+        # This is the source file.
+        ;;
+    [ab].out )
+        # We found the default executable, but exeext='' is most
+        # certainly right.
+        break;;
+    *.* )
+        ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+        # FIXME: I believe we export ac_cv_exeext for Libtool,
+        # but it would be cool to find out if it's true.  Does anybody
+        # maintain Libtool? --akim.
+        export ac_cv_exeext
+        break;;
+    * )
+        break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+          export ac_cv_exeext
+          break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX                  -qlanglvl=ansi
+# Ultrix and OSF/1     -std1
+# HP-UX 10.20 and later        -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4                 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno)
+    echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+  *)
+    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+    CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C.  Since we use `exit',
+# in C++ we need to declare it.  In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+  choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  for ac_declaration in \
+   ''\
+   '#include <stdlib.h>' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+          ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+
+
+echo "$as_me:$LINENO: result: $_am_result" >&5
+echo "${ECHO_T}$_am_result" >&6
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+  enableval="$enable_dependency_tracking"
+
+fi;
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+
+
+if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+
+depcc="$CC"   am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      : > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+
+if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+  CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cxx_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+for ac_declaration in \
+   ''\
+   '#include <stdlib.h>' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CXX"  am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      : > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+
+if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval="$enable_shared"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_shared=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi;
+
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval="$enable_static"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_static=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=yes
+fi;
+
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+  enableval="$enable_fast_install"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_fast_install=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi;
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+  ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+  ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+if test "${lt_cv_path_SED+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && break
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+SED=$lt_cv_path_SED
+
+fi
+
+echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+    if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+      */dev/null* | *'Invalid file or object type'*)
+       lt_cv_path_NM="$tmp_nm -B"
+       break
+        ;;
+      *)
+       case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+       */dev/null*)
+         lt_cv_path_NM="$tmp_nm -p"
+         break
+         ;;
+       *)
+         lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+         continue # so that we can try to find one that supports BSD flags
+         ;;
+       esac
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6
+NM="$lt_cv_path_NM"
+
+echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi4*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin* | mingw* | pw32*)
+  # win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='win32_libid'
+  ;;
+
+darwin* | rhapsody*)
+  # this will be overwritten by pass_all, but leave it in just in case
+  lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  case "$host_os" in
+  rhapsody* | darwin1.[012])
+    lt_cv_file_magic_test_file=`/System/Library/Frameworks/System.framework/System`
+    ;;
+  *) # Darwin 1.3 on
+    lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
+    ;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case "$host_cpu" in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+  irix5* | nonstopux*)
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
+    ;;
+  *)
+    case $LD in
+    *-32|*"-32 ") libmagic=32-bit;;
+    *-n32|*"-n32 ") libmagic=N32;;
+    *-64|*"-64 ") libmagic=64-bit;;
+    *) libmagic=never-match;;
+    esac
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"
+    ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  case $host_cpu in
+  alpha* | hppa* | i*86 | ia64* | m68* | mips | mipsel | powerpc* | sparc* | s390* | sh* | x86_64)
+    lt_cv_deplibs_check_method=pass_all ;;
+  *)
+    # glibc up to 2.1.1 does not perform some relocations on ARM
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+openbsd*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+  else
+    lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  # this will be overridden with pass_all, but let us keep it just in case
+  lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  lt_cv_file_magic_test_file=/lib/libc.so
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *ELF-32*)
+      HPUX_IA64_MODE="32"
+      ;;
+    *ELF-64*)
+      HPUX_IA64_MODE="64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line 4112 "configure"' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+   if test "$lt_cv_prog_gnu_ld" = yes; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -melf32bsmip"
+      ;;
+    *N32*)
+      LD="${LD-ld} -melf32bmipn32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -melf64bmip"
+      ;;
+    esac
+   else
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+   fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case "`/usr/bin/file conftest.o`" in
+    *32-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_i386"
+          ;;
+        ppc64-*linux*|powerpc64-*linux*)
+          LD="${LD-ld} -m elf32ppclinux"
+          ;;
+        s390x-*linux*)
+          LD="${LD-ld} -m elf_s390"
+          ;;
+        sparc64-*linux*)
+          LD="${LD-ld} -m elf32_sparc"
+          ;;
+      esac
+      ;;
+    *64-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          LD="${LD-ld} -m elf64_s390"
+          ;;
+        sparc*-*linux*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  lt_cv_cc_needs_belf=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+lt_cv_cc_needs_belf=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                   (('a' <= (c) && (c) <= 'i') \
+                     || ('j' <= (c) && (c) <= 'r') \
+                     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+        || toupper (i) != TOUPPER (i))
+      exit(2);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+  if test "${ac_cv_prog_CXXCPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g77 f77 xlf frt pgf77 fl32 af77 fort77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 lf95 g95
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in g77 f77 xlf frt pgf77 fl32 af77 fort77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 lf95 g95
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_F77" && break
+done
+
+  F77=$ac_ct_F77
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:5187:" \
+     "checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+G77=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_f77_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_f77_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_f77_g=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "$G77" = yes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
+else
+  if test "$G77" = yes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
+fi
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+    i=0
+  testring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+ *)
+    # If test is not a shell built-in, we'll probably end up computing a
+    # maximum length that is only half of the actual maximum length, but
+    # we can't tell.
+    while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$testring" 2>/dev/null` \
+              = "XX$testring") >/dev/null 2>&1 &&
+           new_result=`expr "X$testring" : ".*" 2>&1` &&
+           lt_cv_sys_max_cmd_len=$new_result &&
+           test $i != 17 # 1/2 MB should be enough
+    do
+      i=`expr $i + 1`
+      testring=$testring$testring
+    done
+    testring=
+    # Add a significant safety factor because C++ compilers can tack on massive
+    # amounts of additional arguments before passing them to the linker.
+    # It appears as though 1/2 is a usable value.
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+else
+  echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris* | sysv5*)
+  symcode='[BDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGISTW]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Write the raw and C identifiers.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[      ]\($symcode$symcode*\)[         ][      ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+      else
+       rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if grep ' nm_test_var$' "$nlist" >/dev/null; then
+       if grep ' nm_test_func$' "$nlist" >/dev/null; then
+         cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+         # Now generate the symbol file.
+         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+         cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+         $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+         cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+         # Now try linking the two files.
+         mv conftest.$ac_objext conftstm.$ac_objext
+         lt_save_LIBS="$LIBS"
+         lt_save_CFLAGS="$CFLAGS"
+         LIBS="conftstm.$ac_objext"
+         CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+         if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+           pipe_works=yes
+         fi
+         LIBS="$lt_save_LIBS"
+         CFLAGS="$lt_save_CFLAGS"
+       else
+         echo "cannot find nm_test_func in $nlist" >&5
+       fi
+      else
+       echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6
+else
+  echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+fi
+
+echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+if test "${lt_cv_objdir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6
+objdir=$lt_cv_objdir
+
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  AR=$ac_ct_AR
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  RANLIB=$ac_ct_RANLIB
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    ;;
+  *)
+    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+  withval="$with_pic"
+  pic_mode="$withval"
+else
+  pic_mode=default
+fi;
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+#
+# Check for any special shared library compilation flags.
+#
+lt_prog_cc_shlib=
+if test "$GCC" = no; then
+  case $host_os in
+  sco3.2v5*)
+    lt_prog_cc_shlib='-belf'
+    ;;
+  esac
+fi
+if test -n "$lt_prog_cc_shlib"; then
+  { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
+echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
+  if echo "$old_CC $old_CFLAGS " | grep "[     ]$lt_prog_cc_shlib[     ]" >/dev/null; then :
+  else
+    { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
+echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
+    lt_cv_prog_cc_can_build_shared=no
+  fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+     else
+       lt_prog_compiler_static_works=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+  echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:6192: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:6196: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic='-fPIC'
+       ;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static='-Bstatic'
+      else
+       lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    linux*)
+      case $CC in
+      icc|ecc)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-KPIC'
+       lt_prog_compiler_static='-static'
+        ;;
+      ccc)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic='-Kpic'
+      lt_prog_compiler_static='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       lt_prog_compiler_pic='-Kconform_pic'
+       lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+  echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:6424: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:6428: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_prog_compiler_pic_works=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+if test x"$lt_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   # According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+   # that will create temporary files in the current directory regardless of
+   # the output directory.  Thus, making CWD read-only will cause this test
+   # to fail, enabling locking or at least warning the user not to do parallel
+   # builds.
+   chmod -w .
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:6491: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:6495: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest* out/*
+   rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag=
+  enable_shared_with_static_runtimes=no
+  archive_cmds=
+  archive_expsym_cmds=
+  old_archive_From_new_cmds=
+  old_archive_from_expsyms_cmds=
+  export_dynamic_flag_spec=
+  whole_archive_flag_spec=
+  thread_safe_flag_spec=
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_direct=no
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  link_all_deplibs=unknown
+  hardcode_automatic=no
+  module_cmds=
+  module_expsym_cmds=
+  always_export_symbols=no
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       ld_shlibs=no
+       cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       allow_undefined_flag=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+       archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+       ld_shlibs=no
+       cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = yes; then
+      runpath_var=LD_RUN_PATH
+      hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+      export_dynamic_flag_spec='${wl}--export-dynamic'
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+       whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+       whole_archive_flag_spec=
+      fi
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+       # On IA64, the linker does run time linking by default, so we don't
+       # have to do anything special.
+       aix_use_runtimelinking=no
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+         export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+       else
+         export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+       fi
+       aix_use_runtimelinking=no
+
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+       esac
+
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+
+      if test "$GCC" = yes; then
+       case $host_os in aix4.012|aix4.012.*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" && \
+          strings "$collect2name" | grep resolve_lib_name >/dev/null
+         then
+         # We have reworked collect2
+         hardcode_direct=yes
+         else
+         # We have old collect2
+         hardcode_direct=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L=yes
+         hardcode_libdir_flag_spec='-L$libdir'
+         hardcode_libdir_separator=
+         fi
+       esac
+       shared_flag='-shared'
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+       if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+       fi
+       fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       allow_undefined_flag='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+       archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+       if test "$host_cpu" = ia64; then
+         hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+         allow_undefined_flag="-z nodefs"
+         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an empty executable.
+        cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         no_undefined_flag=' ${wl}-bernotok'
+         allow_undefined_flag=' ${wl}-berok'
+         # -bexpall does not export symbols beginning with underscore (_)
+         always_export_symbols=yes
+         # Exported symbols can be pulled into shared objects from archives
+         whole_archive_flag_spec=' '
+         archive_cmds_need_lc=yes
+         # This is similar to how AIX traditionally builds it's shared libraries.
+         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs=no
+      ;;
+
+    bsdi4*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      allow_undefined_flag=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    darwin* | rhapsody*)
+    if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
+      archive_cmds_need_lc=no
+      case "$host_os" in
+      rhapsody* | darwin1.[012])
+       allow_undefined_flag='-undefined suppress'
+       ;;
+      *) # Darwin 1.3 on
+       test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag='-flat_namespace -undefined suppress'
+       ;;
+      esac
+      # FIXME: Relying on posixy $() will cause problems for
+      #        cross-compilation, but unfortunately the echo tests do not
+      #        yet detect zsh echo's removal of \ escapes.  Also zsh mangles
+      #               `"' quotes if we put them in here... so don't!
+       lt_int_apple_cc_single_mod=no
+       output_verbose_link_cmd='echo'
+       if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+         lt_int_apple_cc_single_mod=yes
+       fi
+       if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+         archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+       else
+        archive_cmds='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      fi
+      module_cmds='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+        if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+          archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        else
+          archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        fi
+          module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      hardcode_direct=no
+      hardcode_automatic=yes
+      hardcode_shlibpath_var=unsupported
+      whole_archive_flag_spec='-all_load $convenience'
+      link_all_deplibs=yes
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd*)
+      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+         ;;
+       *)
+         archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       case "$host_cpu" in
+       hppa*64*)
+         hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+         hardcode_libdir_flag_spec_ld='+b $libdir'
+         hardcode_libdir_separator=:
+         hardcode_direct=no
+         hardcode_shlibpath_var=no
+         ;;
+       ia64*)
+         hardcode_libdir_flag_spec='-L$libdir'
+         hardcode_direct=no
+         hardcode_shlibpath_var=no
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L=yes
+         ;;
+       *)
+         hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+         hardcode_libdir_separator=:
+         hardcode_direct=yes
+         export_dynamic_flag_spec='${wl}-E'
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L=yes
+         ;;
+       esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec_ld='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      link_all_deplibs=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    openbsd*)
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+       archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+       hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+       export_dynamic_flag_spec='${wl}-E'
+      else
+       case $host_os in
+        openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+          archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+          hardcode_libdir_flag_spec='-R$libdir'
+          ;;
+        *)
+          archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+          hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+          ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       allow_undefined_flag=' -expect_unresolved \*'
+       archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+       allow_undefined_flag=' -expect_unresolved \*'
+       archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+       $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z text'
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+         $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+       archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+       $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+       whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         reload_cmds='$CC -r -o $output$reload_objs'
+         hardcode_direct=no
+        ;;
+       motorola)
+         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       hardcode_shlibpath_var=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=no
+      hardcode_shlibpath_var=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec=
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag
+        allow_undefined_flag=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+         archive_cmds_need_lc=no
+        else
+         archive_cmds_need_lc=yes
+        fi
+        allow_undefined_flag=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var " || \
+   test "X$hardcode_automatic"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+       :
+      else
+       can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  # FIXME: Relying on posixy $() will cause problems for
+  #        cross-compilation, but unfortunately the echo tests do not
+  #        yet detect zsh echo's removal of \ escapes.
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.01* | freebsdelf3.01*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  case $LD in # libtool.m4 will add one of these switches to LD
+  *"-m elf_x86_64"*|*"-m elf64ppc"*|*"-m elf64_s390"*|*"-m elf64_sparc"*)
+    sys_lib_dlsearch_path_spec="/lib64 /usr/lib64"
+    sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64"
+    ;;
+  esac
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 8510 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 8608 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# Report which librarie types wil actually be built
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+  darwin* | rhapsody*)
+  if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
+    archive_cmds_need_lc=no
+    case "$host_os" in
+    rhapsody* | darwin1.[012])
+      allow_undefined_flag='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag='-flat_namespace -undefined suppress'
+      ;;
+    esac
+    # FIXME: Relying on posixy $() will cause problems for
+    #        cross-compilation, but unfortunately the echo tests do not
+    #        yet detect zsh echo's removal of \ escapes.  Also zsh mangles
+    #         `"' quotes if we put them in here... so don't!
+               output_verbose_link_cmd='echo'
+    archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
+    module_cmds='$CC -bundle $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags'
+    # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+                 archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+                 module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    hardcode_direct=no
+    hardcode_automatic=yes
+    hardcode_shlibpath_var=unsupported
+    whole_archive_flag_spec='-all_load $convenience'
+    link_all_deplibs=yes
+    fi
+    ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS AS EGREP RANLIB LN_S LTCC NM SED SHELL \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler \
+    CC \
+    LD \
+    lt_prog_compiler_wl \
+    lt_prog_compiler_pic \
+    lt_prog_compiler_static \
+    lt_prog_compiler_no_builtin_flag \
+    export_dynamic_flag_spec \
+    thread_safe_flag_spec \
+    whole_archive_flag_spec \
+    enable_shared_with_static_runtimes \
+    old_archive_cmds \
+    old_archive_from_new_cmds \
+    predep_objects \
+    postdep_objects \
+    predeps \
+    postdeps \
+    compiler_lib_search_path \
+    archive_cmds \
+    archive_expsym_cmds \
+    postinstall_cmds \
+    postuninstall_cmds \
+    old_archive_from_expsyms_cmds \
+    allow_undefined_flag \
+    no_undefined_flag \
+    export_symbols_cmds \
+    hardcode_libdir_flag_spec \
+    hardcode_libdir_flag_spec_ld \
+    hardcode_libdir_separator \
+    hardcode_automatic \
+    module_cmds \
+    module_expsym_cmds \
+    lt_cv_prog_compiler_c_o \
+    exclude_expsyms \
+    include_expsyms; do
+
+    case $var in
+    old_archive_cmds | \
+    old_archive_from_new_cmds | \
+    archive_cmds | \
+    archive_expsym_cmds | \
+    module_cmds | \
+    module_expsym_cmds | \
+    old_archive_from_expsyms_cmds | \
+    export_symbols_cmds | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+  cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS=$lt_AS
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext='$shrext'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  test -f Makefile && make "$ltmain"
+fi
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags or --without-tags was given.
+if test "${with_tags+set}" = set; then
+  withval="$with_tags"
+  tagnames="$withval"
+fi;
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+    else
+      { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+    fi
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+    "") ;;
+    *)  { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+       ;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      CXX)
+       if test -n "$CXX" && test "X$CXX" != "Xno"; then
+         ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+  unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+  lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+  unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+compiler_CXX=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+  lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+  # Check if GNU C++ uses GNU ld as the underlying linker, since the
+  # archiving commands below assume that GNU ld is being used.
+  if test "$with_gnu_ld" = yes; then
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+    #     investigate it a little bit more. (MM)
+    wlarc='${wl}'
+
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+       grep 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec_CXX=
+    fi
+  else
+    with_gnu_ld=no
+    wlarc=
+
+    # A generic and very simple default shared library creation
+    # command for GNU C++ for the case where it uses the native
+    # linker, instead of GNU ld.  If possible, this setting should
+    # overridden to take advantage of the native linker features on
+    # the platform it is being used on.
+    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+  fi
+
+  # Commands to make compiler produce verbose output that lists
+  # what "hidden" libraries, object files and flags are used when
+  # linking a shared library.
+  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+  GXX=no
+  with_gnu_ld=no
+  wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ld_shlibs_CXX=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+       for ld_flag in $LDFLAGS; do
+         case $ld_flag in
+         *-brtl*)
+           aix_use_runtimelinking=yes
+           break
+           ;;
+         esac
+       done
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    archive_cmds_CXX=''
+    hardcode_direct_CXX=yes
+    hardcode_libdir_separator_CXX=':'
+    link_all_deplibs_CXX=yes
+
+    if test "$GXX" = yes; then
+      case $host_os in aix4.012|aix4.012.*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+       collect2name=`${CC} -print-prog-name=collect2`
+       if test -f "$collect2name" && \
+          strings "$collect2name" | grep resolve_lib_name >/dev/null
+       then
+         # We have reworked collect2
+         hardcode_direct_CXX=yes
+       else
+         # We have old collect2
+         hardcode_direct_CXX=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L_CXX=yes
+         hardcode_libdir_flag_spec_CXX='-L$libdir'
+         hardcode_libdir_separator_CXX=
+       fi
+      esac
+      shared_flag='-shared'
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+       shared_flag='-G'
+      else
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag='${wl}-G'
+       else
+         shared_flag='${wl}-bM:SRE'
+       fi
+      fi
+    fi
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    always_export_symbols_CXX=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      allow_undefined_flag_CXX='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+      hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+       hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+       allow_undefined_flag_CXX="-z nodefs"
+       archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+       # Warning - without using the other run time loading flags,
+       # -berok will link without error, but may produce a broken library.
+       no_undefined_flag_CXX=' ${wl}-bernotok'
+       allow_undefined_flag_CXX=' ${wl}-berok'
+       # -bexpall does not export symbols beginning with underscore (_)
+       always_export_symbols_CXX=yes
+       # Exported symbols can be pulled into shared objects from archives
+       whole_archive_flag_spec_CXX=' '
+       archive_cmds_need_lc_CXX=yes
+       # This is similar to how AIX traditionally builds it's shared libraries.
+       archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+  chorus*)
+    case $cc_basename in
+      *)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+    esac
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+    # as there is no search path for DLLs.
+    hardcode_libdir_flag_spec_CXX='-L$libdir'
+    allow_undefined_flag_CXX=unsupported
+    always_export_symbols_CXX=no
+    enable_shared_with_static_runtimes_CXX=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+      # If the export-symbols file already is a .def file (1st line
+      # is EXPORTS), use it as is; otherwise, prepend...
+      archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+       cp $export_symbols $output_objdir/$soname.def;
+      else
+       echo EXPORTS > $output_objdir/$soname.def;
+       cat $export_symbols >> $output_objdir/$soname.def;
+      fi~
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+    else
+      ld_shlibs_CXX=no
+    fi
+  ;;
+
+  darwin* | rhapsody*)
+   if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
+    archive_cmds_need_lc_CXX=no
+    case "$host_os" in
+    rhapsody* | darwin1.[012])
+      allow_undefined_flag_CXX='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
+      ;;
+    esac
+       lt_int_apple_cc_single_mod=no
+       output_verbose_link_cmd='echo'
+       if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+         lt_int_apple_cc_single_mod=yes
+       fi
+       if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+         archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+       else
+        archive_cmds_CXX='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      fi
+      module_cmds_CXX='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags'
+
+    # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+        archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      else
+        archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      fi
+        module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    hardcode_direct_CXX=no
+    hardcode_automatic_CXX=yes
+    hardcode_shlibpath_var_CXX=unsupported
+    whole_archive_flag_spec_CXX='-all_load $convenience'
+    link_all_deplibs_CXX=yes
+   fi
+    ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      ghcx)
+       # Green Hills C++ Compiler
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+    esac
+    ;;
+  freebsd12*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    ld_shlibs_CXX=no
+    ;;
+  freebsd-elf*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  freebsd*)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    ld_shlibs_CXX=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    export_dynamic_flag_spec_CXX='${wl}-E'
+    hardcode_direct_CXX=yes
+    hardcode_minus_L_CXX=yes # Not in the search PATH,
+                               # but as the default
+                               # location of the library.
+
+    case $cc_basename in
+    CC)
+      # FIXME: insert proper C++ library support
+      ld_shlibs_CXX=no
+      ;;
+    aCC)
+      archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      #
+      # There doesn't appear to be a way to prevent this compiler from
+      # explicitly linking system object files so we need to strip them
+      # from the output so that they don't get included in the library
+      # dependencies.
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | egrep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      case "$host_cpu" in
+      hppa*64*)
+       hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+       hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+       hardcode_libdir_separator_CXX=:
+        ;;
+      ia64*)
+       hardcode_libdir_flag_spec_CXX='-L$libdir'
+        ;;
+      *)
+       hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+       hardcode_libdir_separator_CXX=:
+       export_dynamic_flag_spec_CXX='${wl}-E'
+        ;;
+      esac
+    fi
+    case "$host_cpu" in
+    hppa*64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      ;;
+    ia64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      hardcode_minus_L_CXX=yes # Not in the search PATH,
+                                             # but as the default
+                                             # location of the library.
+      ;;
+    *)
+      hardcode_direct_CXX=yes
+      hardcode_minus_L_CXX=yes # Not in the search PATH,
+                                             # but as the default
+                                             # location of the library.
+      ;;
+    esac
+
+    case $cc_basename in
+      CC)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      aCC)
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+         ;;
+       *)
+         archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+         ;;
+       esac
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+       ;;
+      *)
+       if test "$GXX" = yes; then
+         if test $with_gnu_ld = no; then
+           case "$host_cpu" in
+           ia64*|hppa*64*)
+             archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+             ;;
+           *)
+             archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+             ;;
+           esac
+         fi
+       else
+         # FIXME: insert proper C++ library support
+         ld_shlibs_CXX=no
+       fi
+       ;;
+    esac
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC)
+       # SGI C++
+       archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+       # Archives containing C++ object files must be created using
+       # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+       # necessary to make sure instantiated templates are included
+       # in the archive.
+       old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+       ;;
+      *)
+       if test "$GXX" = yes; then
+         if test "$with_gnu_ld" = no; then
+           archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+         else
+           archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+         fi
+       fi
+       link_all_deplibs_CXX=yes
+       ;;
+    esac
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    ;;
+  linux*)
+    case $cc_basename in
+      KCC)
+       # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+       # KCC will only create a shared library if the output file
+       # ends with ".so" (or ".sl" for HP-UX), so rename the library
+       # to its proper name (with version) after linking.
+       archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+       archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+       hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+       export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+       # Archives containing C++ object files must be created using
+       # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+       old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+       ;;
+      icpc)
+       # Intel C++
+       with_gnu_ld=yes
+       archive_cmds_need_lc_CXX=no
+       archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+       hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+       export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+       whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+       ;;
+      cxx)
+       # Compaq C++
+       archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+       runpath_var=LD_RUN_PATH
+       hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+       hardcode_libdir_separator_CXX=:
+
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+       ;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+    esac
+    ;;
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      hardcode_libdir_flag_spec_CXX='-R$libdir'
+      hardcode_direct_CXX=yes
+      hardcode_shlibpath_var_CXX=no
+    fi
+    # Workaround some broken pre-1.5 toolchains
+    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+    ;;
+  osf3*)
+    case $cc_basename in
+      KCC)
+       # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+       # KCC will only create a shared library if the output file
+       # ends with ".so" (or ".sl" for HP-UX), so rename the library
+       # to its proper name (with version) after linking.
+       archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+       hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+       hardcode_libdir_separator_CXX=:
+
+       # Archives containing C++ object files must be created using
+       # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+       old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+       ;;
+      RCC)
+       # Rational C++ 2.4.1
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      cxx)
+       allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+       hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+       hardcode_libdir_separator_CXX=:
+
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+       ;;
+      *)
+       if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+         allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+         archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+         hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+         hardcode_libdir_separator_CXX=:
+
+         # Commands to make compiler produce verbose output that lists
+         # what "hidden" libraries, object files and flags are used when
+         # linking a shared library.
+         output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+       else
+         # FIXME: insert proper C++ library support
+         ld_shlibs_CXX=no
+       fi
+       ;;
+    esac
+    ;;
+  osf4* | osf5*)
+    case $cc_basename in
+      KCC)
+       # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+       # KCC will only create a shared library if the output file
+       # ends with ".so" (or ".sl" for HP-UX), so rename the library
+       # to its proper name (with version) after linking.
+       archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+       hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+       hardcode_libdir_separator_CXX=:
+
+       # Archives containing C++ object files must be created using
+       # the KAI C++ compiler.
+       old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+       ;;
+      RCC)
+       # Rational C++ 2.4.1
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      cxx)
+       allow_undefined_flag_CXX=' -expect_unresolved \*'
+       archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+       archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+         echo "-hidden">> $lib.exp~
+         $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~
+         $rm $lib.exp'
+
+       hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+       hardcode_libdir_separator_CXX=:
+
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+       ;;
+      *)
+       if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+         allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+        archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+         hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+         hardcode_libdir_separator_CXX=:
+
+         # Commands to make compiler produce verbose output that lists
+         # what "hidden" libraries, object files and flags are used when
+         # linking a shared library.
+         output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+       else
+         # FIXME: insert proper C++ library support
+         ld_shlibs_CXX=no
+       fi
+       ;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  sco*)
+    archive_cmds_need_lc_CXX=no
+    case $cc_basename in
+      CC)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+    esac
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC)
+       # Sun C++ 4.x
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      lcc)
+       # Lucid
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC)
+       # Sun C++ 4.2, 5.x and Centerline C++
+       no_undefined_flag_CXX=' -zdefs'
+       archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+       archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+       $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+       hardcode_libdir_flag_spec_CXX='-R$libdir'
+       hardcode_shlibpath_var_CXX=no
+       case $host_os in
+         solaris2.0-5 | solaris2.0-5.*) ;;
+         *)
+           # The C++ compiler is used as linker so we must use $wl
+           # flag to pass the commands to the underlying system
+           # linker.
+           # Supported since Solaris 2.6 (maybe 2.5.1?)
+           whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+           ;;
+       esac
+       link_all_deplibs_CXX=yes
+
+       # Commands to make compiler produce verbose output that lists
+       # what "hidden" libraries, object files and flags are used when
+       # linking a shared library.
+       #
+       # There doesn't appear to be a way to prevent this compiler from
+       # explicitly linking system object files so we need to strip them
+       # from the output so that they don't get included in the library
+       # dependencies.
+       output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+       # Archives containing C++ object files must be created using
+       # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+       # necessary to make sure instantiated templates are included
+       # in the archive.
+       old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+       ;;
+      gcx)
+       # Green Hills C++ Compiler
+       archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+       # The C++ compiler must be used to create the archive.
+       old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+       ;;
+      *)
+       # GNU C++ compiler with Solaris linker
+       if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+         no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+         if $CC --version | grep -v '^2\.7' > /dev/null; then
+           archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+           archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+         else
+           # g++ 2.7 appears to require `-G' NOT `-shared' on this
+           # platform.
+           archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+           archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+         fi
+
+         hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+       fi
+       ;;
+    esac
+    ;;
+  sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  tandem*)
+    case $cc_basename in
+      NCC)
+       # NonStop-UX NCC 3.20
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+      *)
+       # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+esac
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+  for p in `eval $output_verbose_link_cmd`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" \
+         || test $p = "-R"; then
+        prev=$p
+        continue
+       else
+        prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+        case $p in
+        -L* | -R*)
+          # Internal compiler library paths should come after those
+          # provided the user.  The postdeps already come after the
+          # user supplied libs so there is no need to process them.
+          if test -z "$compiler_lib_search_path_CXX"; then
+            compiler_lib_search_path_CXX="${prev}${p}"
+          else
+            compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+          fi
+          ;;
+        # The "-l" case would never come before the object being
+        # linked, so don't bother handling this case.
+        esac
+       else
+        if test -z "$postdeps_CXX"; then
+          postdeps_CXX="${prev}${p}"
+        else
+          postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+        fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+        pre_test_object_deps_done=yes
+        continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+        if test -z "$predep_objects_CXX"; then
+          predep_objects_CXX="$p"
+        else
+          predep_objects_CXX="$predep_objects_CXX $p"
+        fi
+       else
+        if test -z "$postdep_objects_CXX"; then
+          postdep_objects_CXX="$p"
+        else
+          postdep_objects_CXX="$postdep_objects_CXX $p"
+        fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$rm -f confest.$objext
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | os2* | pw32*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       ;;
+      *)
+       lt_prog_compiler_pic_CXX='-fPIC'
+       ;;
+      esac
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix4* | aix5*)
+       # All AIX code is PIC.
+       if test "$host_cpu" = ia64; then
+         # AIX 5 now supports IA64 processor
+         lt_prog_compiler_static_CXX='-Bstatic'
+       else
+         lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+       fi
+       ;;
+      chorus*)
+       case $cc_basename in
+       cxch68)
+         # Green Hills C++ Compiler
+         # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+         ;;
+       esac
+       ;;
+      dgux*)
+       case $cc_basename in
+         ec++)
+           lt_prog_compiler_pic_CXX='-KPIC'
+           ;;
+         ghcx)
+           # Green Hills C++ Compiler
+           lt_prog_compiler_pic_CXX='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      freebsd*)
+       # FreeBSD uses GNU C++
+       ;;
+      hpux9* | hpux10* | hpux11*)
+       case $cc_basename in
+         CC)
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+           if test "$host_cpu" != ia64; then
+             lt_prog_compiler_pic_CXX='+Z'
+           fi
+           ;;
+         aCC)
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+           case "$host_cpu" in
+           hppa*64*|ia64*)
+             # +Z the default
+             ;;
+           *)
+             lt_prog_compiler_pic_CXX='+Z'
+             ;;
+           esac
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      irix5* | irix6* | nonstopux*)
+       case $cc_basename in
+         CC)
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_static_CXX='-non_shared'
+           # CC pic flag -KPIC is the default.
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      linux*)
+       case $cc_basename in
+         KCC)
+           # KAI C++ Compiler
+           lt_prog_compiler_wl_CXX='--backend -Wl,'
+           lt_prog_compiler_pic_CXX='-fPIC'
+           ;;
+         icpc)
+           # Intel C++
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_pic_CXX='-KPIC'
+           lt_prog_compiler_static_CXX='-static'
+           ;;
+         cxx)
+           # Compaq C++
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           lt_prog_compiler_pic_CXX=
+           lt_prog_compiler_static_CXX='-non_shared'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      lynxos*)
+       ;;
+      m88k*)
+       ;;
+      mvs*)
+       case $cc_basename in
+         cxx)
+           lt_prog_compiler_pic_CXX='-W c,exportall'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      netbsd*)
+       ;;
+      osf3* | osf4* | osf5*)
+       case $cc_basename in
+         KCC)
+           lt_prog_compiler_wl_CXX='--backend -Wl,'
+           ;;
+         RCC)
+           # Rational C++ 2.4.1
+           lt_prog_compiler_pic_CXX='-pic'
+           ;;
+         cxx)
+           # Digital/Compaq C++
+           lt_prog_compiler_wl_CXX='-Wl,'
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           lt_prog_compiler_pic_CXX=
+           lt_prog_compiler_static_CXX='-non_shared'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      psos*)
+       ;;
+      sco*)
+       case $cc_basename in
+         CC)
+           lt_prog_compiler_pic_CXX='-fPIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      solaris*)
+       case $cc_basename in
+         CC)
+           # Sun C++ 4.2, 5.x and Centerline C++
+           lt_prog_compiler_pic_CXX='-KPIC'
+           lt_prog_compiler_static_CXX='-Bstatic'
+           lt_prog_compiler_wl_CXX='-Qoption ld '
+           ;;
+         gcx)
+           # Green Hills C++ Compiler
+           lt_prog_compiler_pic_CXX='-PIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sunos4*)
+       case $cc_basename in
+         CC)
+           # Sun C++ 4.x
+           lt_prog_compiler_pic_CXX='-pic'
+           lt_prog_compiler_static_CXX='-Bstatic'
+           ;;
+         lcc)
+           # Lucid
+           lt_prog_compiler_pic_CXX='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      tandem*)
+       case $cc_basename in
+         NCC)
+           # NonStop-UX NCC 3.20
+           lt_prog_compiler_pic_CXX='-KPIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      unixware*)
+       ;;
+      vxworks*)
+       ;;
+      *)
+       lt_prog_compiler_can_build_shared_CXX=no
+       ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+  echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_CXX=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:10740: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:10744: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
+
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   # According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+   # that will create temporary files in the current directory regardless of
+   # the output directory.  Thus, making CWD read-only will cause this test
+   # to fail, enabling locking or at least warning the user not to do parallel
+   # builds.
+   chmod -w .
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:10807: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:10811: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest* out/*
+   rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix4* | aix5*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_CXX
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+        allow_undefined_flag_CXX=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+         archive_cmds_need_lc_CXX=no
+        else
+         archive_cmds_need_lc_CXX=yes
+        fi
+        allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+   test -n "$runpath_var CXX" || \
+   test "X$hardcode_automatic_CXX"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_CXX" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+if test "$hardcode_action_CXX" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+       :
+      else
+       can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  # FIXME: Relying on posixy $() will cause problems for
+  #        cross-compilation, but unfortunately the echo tests do not
+  #        yet detect zsh echo's removal of \ escapes.
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.01* | freebsdelf3.01*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  case $LD in # libtool.m4 will add one of these switches to LD
+  *"-m elf_x86_64"*|*"-m elf64ppc"*|*"-m elf64_s390"*|*"-m elf64_sparc"*)
+    sys_lib_dlsearch_path_spec="/lib64 /usr/lib64"
+    sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64"
+    ;;
+  esac
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 12057 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 12155 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS AS EGREP RANLIB LN_S LTCC NM SED SHELL \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_CXX \
+    CC_CXX \
+    LD_CXX \
+    lt_prog_compiler_wl_CXX \
+    lt_prog_compiler_pic_CXX \
+    lt_prog_compiler_static_CXX \
+    lt_prog_compiler_no_builtin_flag_CXX \
+    export_dynamic_flag_spec_CXX \
+    thread_safe_flag_spec_CXX \
+    whole_archive_flag_spec_CXX \
+    enable_shared_with_static_runtimes_CXX \
+    old_archive_cmds_CXX \
+    old_archive_from_new_cmds_CXX \
+    predep_objects_CXX \
+    postdep_objects_CXX \
+    predeps_CXX \
+    postdeps_CXX \
+    compiler_lib_search_path_CXX \
+    archive_cmds_CXX \
+    archive_expsym_cmds_CXX \
+    postinstall_cmds_CXX \
+    postuninstall_cmds_CXX \
+    old_archive_from_expsyms_cmds_CXX \
+    allow_undefined_flag_CXX \
+    no_undefined_flag_CXX \
+    export_symbols_cmds_CXX \
+    hardcode_libdir_flag_spec_CXX \
+    hardcode_libdir_flag_spec_ld_CXX \
+    hardcode_libdir_separator_CXX \
+    hardcode_automatic_CXX \
+    module_cmds_CXX \
+    module_expsym_cmds_CXX \
+    lt_cv_prog_compiler_c_o_CXX \
+    exclude_expsyms_CXX \
+    include_expsyms_CXX; do
+
+    case $var in
+    old_archive_cmds_CXX | \
+    old_archive_from_new_cmds_CXX | \
+    archive_cmds_CXX | \
+    archive_expsym_cmds_CXX | \
+    module_cmds_CXX | \
+    module_expsym_cmds_CXX | \
+    old_archive_from_expsyms_cmds_CXX | \
+    export_symbols_cmds_CXX | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS=$lt_AS
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext='$shrext'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  test -f Makefile && make "$ltmain"
+fi
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+       else
+         tagname=""
+       fi
+       ;;
+
+      F77)
+       if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix4*)
+  test "$enable_shared" = yes && enable_static=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_F77='-Wl,'
+    lt_prog_compiler_static_F77='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_F77='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_F77=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic_F77=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic_F77='-fPIC'
+       ;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_F77='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static_F77='-Bstatic'
+      else
+       lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic_F77='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    linux*)
+      case $CC in
+      icc|ecc)
+       lt_prog_compiler_wl_F77='-Wl,'
+       lt_prog_compiler_pic_F77='-KPIC'
+       lt_prog_compiler_static_F77='-static'
+        ;;
+      ccc)
+        lt_prog_compiler_wl_F77='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_F77='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic_F77='-Kpic'
+      lt_prog_compiler_static_F77='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_F77='-Qoption ld '
+      lt_prog_compiler_pic_F77='-PIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       lt_prog_compiler_pic_F77='-Kconform_pic'
+       lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_F77='-pic'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+  echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_F77=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_F77"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:12977: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:12981: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_prog_compiler_pic_works_F77=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+    case $lt_prog_compiler_pic_F77 in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+     esac
+else
+    lt_prog_compiler_pic_F77=
+     lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_F77=
+    ;;
+  *)
+    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_F77=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   # According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+   # that will create temporary files in the current directory regardless of
+   # the output directory.  Thus, making CWD read-only will cause this test
+   # to fail, enabling locking or at least warning the user not to do parallel
+   # builds.
+   chmod -w .
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:13044: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:13048: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       lt_cv_prog_compiler_c_o_F77=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest* out/*
+   rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag_F77=
+  enable_shared_with_static_runtimes_F77=no
+  archive_cmds_F77=
+  archive_expsym_cmds_F77=
+  old_archive_From_new_cmds_F77=
+  old_archive_from_expsyms_cmds_F77=
+  export_dynamic_flag_spec_F77=
+  whole_archive_flag_spec_F77=
+  thread_safe_flag_spec_F77=
+  hardcode_libdir_flag_spec_F77=
+  hardcode_libdir_flag_spec_ld_F77=
+  hardcode_libdir_separator_F77=
+  hardcode_direct_F77=no
+  hardcode_minus_L_F77=no
+  hardcode_shlibpath_var_F77=unsupported
+  link_all_deplibs_F77=unknown
+  hardcode_automatic_F77=no
+  module_cmds_F77=
+  module_expsym_cmds_F77=
+  always_export_symbols_F77=no
+  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_F77=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_F77=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       ld_shlibs_F77=no
+       cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_F77=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       allow_undefined_flag_F77=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       ld_shlibs_F77=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=no
+      enable_shared_with_static_runtimes_F77=yes
+      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+       archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+       ld_shlibs_F77=no
+       cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs_F77=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs_F77=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_F77" = yes; then
+      runpath_var=LD_RUN_PATH
+      hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+      export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+       whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+       whole_archive_flag_spec_F77=
+      fi
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=yes
+      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_F77=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       hardcode_direct_F77=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+       # On IA64, the linker does run time linking by default, so we don't
+       # have to do anything special.
+       aix_use_runtimelinking=no
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+         export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+       else
+         export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+       fi
+       aix_use_runtimelinking=no
+
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+       esac
+
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_F77=''
+      hardcode_direct_F77=yes
+      hardcode_libdir_separator_F77=':'
+      link_all_deplibs_F77=yes
+
+      if test "$GCC" = yes; then
+       case $host_os in aix4.012|aix4.012.*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" && \
+          strings "$collect2name" | grep resolve_lib_name >/dev/null
+         then
+         # We have reworked collect2
+         hardcode_direct_F77=yes
+         else
+         # We have old collect2
+         hardcode_direct_F77=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L_F77=yes
+         hardcode_libdir_flag_spec_F77='-L$libdir'
+         hardcode_libdir_separator_F77=
+         fi
+       esac
+       shared_flag='-shared'
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+       if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+       fi
+       fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_F77=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       allow_undefined_flag_F77='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+       archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+       if test "$host_cpu" = ia64; then
+         hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+         allow_undefined_flag_F77="-z nodefs"
+         archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an empty executable.
+        cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+        hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         no_undefined_flag_F77=' ${wl}-bernotok'
+         allow_undefined_flag_F77=' ${wl}-berok'
+         # -bexpall does not export symbols beginning with underscore (_)
+         always_export_symbols_F77=yes
+         # Exported symbols can be pulled into shared objects from archives
+         whole_archive_flag_spec_F77=' '
+         archive_cmds_need_lc_F77=yes
+         # This is similar to how AIX traditionally builds it's shared libraries.
+         archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_F77=no
+      ;;
+
+    bsdi4*)
+      export_dynamic_flag_spec_F77=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_F77=' '
+      allow_undefined_flag_F77=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_F77='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_F77=yes
+      ;;
+
+    darwin* | rhapsody*)
+    if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
+      archive_cmds_need_lc_F77=no
+      case "$host_os" in
+      rhapsody* | darwin1.[012])
+       allow_undefined_flag_F77='-undefined suppress'
+       ;;
+      *) # Darwin 1.3 on
+       test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag_F77='-flat_namespace -undefined suppress'
+       ;;
+      esac
+      # FIXME: Relying on posixy $() will cause problems for
+      #        cross-compilation, but unfortunately the echo tests do not
+      #        yet detect zsh echo's removal of \ escapes.  Also zsh mangles
+      #               `"' quotes if we put them in here... so don't!
+       lt_int_apple_cc_single_mod=no
+       output_verbose_link_cmd='echo'
+       if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+         lt_int_apple_cc_single_mod=yes
+       fi
+       if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+         archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+       else
+        archive_cmds_F77='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      fi
+      module_cmds_F77='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+        if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+          archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        else
+          archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        fi
+          module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      hardcode_direct_F77=no
+      hardcode_automatic_F77=yes
+      hardcode_shlibpath_var_F77=unsupported
+      whole_archive_flag_spec_F77='-all_load $convenience'
+      link_all_deplibs_F77=yes
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_F77=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd*)
+      archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_direct_F77=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_F77=yes
+      export_dynamic_flag_spec_F77='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+         ;;
+       *)
+         archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       case "$host_cpu" in
+       hppa*64*)
+         hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+         hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+         hardcode_libdir_separator_F77=:
+         hardcode_direct_F77=no
+         hardcode_shlibpath_var_F77=no
+         ;;
+       ia64*)
+         hardcode_libdir_flag_spec_F77='-L$libdir'
+         hardcode_direct_F77=no
+         hardcode_shlibpath_var_F77=no
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L_F77=yes
+         ;;
+       *)
+         hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+         hardcode_libdir_separator_F77=:
+         hardcode_direct_F77=yes
+         export_dynamic_flag_spec_F77='${wl}-E'
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L_F77=yes
+         ;;
+       esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      link_all_deplibs_F77=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+       archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    newsos6)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+       archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+       hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+       export_dynamic_flag_spec_F77='${wl}-E'
+      else
+       case $host_os in
+        openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+          archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+          hardcode_libdir_flag_spec_F77='-R$libdir'
+          ;;
+        *)
+          archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+          hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+          ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      allow_undefined_flag_F77=unsupported
+      archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       allow_undefined_flag_F77=' -expect_unresolved \*'
+       archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      else
+       allow_undefined_flag_F77=' -expect_unresolved \*'
+       archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+       $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       hardcode_libdir_flag_spec_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag_F77=' -z text'
+      if test "$GCC" = yes; then
+       archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+         $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+       archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+       $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_shlibpath_var_F77=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+       whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+      esac
+      link_all_deplibs_F77=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct_F77=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         reload_cmds_F77='$CC -r -o $output$reload_objs'
+         hardcode_direct_F77=no
+        ;;
+       motorola)
+         archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       hardcode_shlibpath_var_F77=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       ld_shlibs_F77=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=no
+      hardcode_shlibpath_var_F77=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag_F77='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+       archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag_F77=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec_F77=
+      hardcode_shlibpath_var_F77=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      ld_shlibs_F77=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_F77=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_F77 in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_F77
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+        allow_undefined_flag_F77=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+         archive_cmds_need_lc_F77=no
+        else
+         archive_cmds_need_lc_F77=yes
+        fi
+        allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+   test -n "$runpath_var F77" || \
+   test "X$hardcode_automatic_F77"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_F77" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+     test "$hardcode_minus_L_F77" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_F77=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_F77=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_F77=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6
+
+if test "$hardcode_action_F77" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+       :
+      else
+       can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  # FIXME: Relying on posixy $() will cause problems for
+  #        cross-compilation, but unfortunately the echo tests do not
+  #        yet detect zsh echo's removal of \ escapes.
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.01* | freebsdelf3.01*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  case $LD in # libtool.m4 will add one of these switches to LD
+  *"-m elf_x86_64"*|*"-m elf64ppc"*|*"-m elf64_s390"*|*"-m elf64_sparc"*)
+    sys_lib_dlsearch_path_spec="/lib64 /usr/lib64"
+    sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64"
+    ;;
+  esac
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS AS EGREP RANLIB LN_S LTCC NM SED SHELL \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_F77 \
+    CC_F77 \
+    LD_F77 \
+    lt_prog_compiler_wl_F77 \
+    lt_prog_compiler_pic_F77 \
+    lt_prog_compiler_static_F77 \
+    lt_prog_compiler_no_builtin_flag_F77 \
+    export_dynamic_flag_spec_F77 \
+    thread_safe_flag_spec_F77 \
+    whole_archive_flag_spec_F77 \
+    enable_shared_with_static_runtimes_F77 \
+    old_archive_cmds_F77 \
+    old_archive_from_new_cmds_F77 \
+    predep_objects_F77 \
+    postdep_objects_F77 \
+    predeps_F77 \
+    postdeps_F77 \
+    compiler_lib_search_path_F77 \
+    archive_cmds_F77 \
+    archive_expsym_cmds_F77 \
+    postinstall_cmds_F77 \
+    postuninstall_cmds_F77 \
+    old_archive_from_expsyms_cmds_F77 \
+    allow_undefined_flag_F77 \
+    no_undefined_flag_F77 \
+    export_symbols_cmds_F77 \
+    hardcode_libdir_flag_spec_F77 \
+    hardcode_libdir_flag_spec_ld_F77 \
+    hardcode_libdir_separator_F77 \
+    hardcode_automatic_F77 \
+    module_cmds_F77 \
+    module_expsym_cmds_F77 \
+    lt_cv_prog_compiler_c_o_F77 \
+    exclude_expsyms_F77 \
+    include_expsyms_F77; do
+
+    case $var in
+    old_archive_cmds_F77 | \
+    old_archive_from_new_cmds_F77 | \
+    archive_cmds_F77 | \
+    archive_expsym_cmds_F77 | \
+    module_cmds_F77 | \
+    module_expsym_cmds_F77 | \
+    old_archive_from_expsyms_cmds_F77 | \
+    export_symbols_cmds_F77 | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS=$lt_AS
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext='$shrext'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_F77
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  test -f Makefile && make "$ltmain"
+fi
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+CC="$lt_save_CC"
+
+       else
+         tagname=""
+       fi
+       ;;
+
+      GCJ)
+       if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+  echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:14991: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:14995: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_GCJ='-Wl,'
+    lt_prog_compiler_static_GCJ='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_GCJ='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_GCJ=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic_GCJ=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic_GCJ='-fPIC'
+       ;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_GCJ='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static_GCJ='-Bstatic'
+      else
+       lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic_GCJ='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    linux*)
+      case $CC in
+      icc|ecc)
+       lt_prog_compiler_wl_GCJ='-Wl,'
+       lt_prog_compiler_pic_GCJ='-KPIC'
+       lt_prog_compiler_static_GCJ='-static'
+        ;;
+      ccc)
+        lt_prog_compiler_wl_GCJ='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_GCJ='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic_GCJ='-Kpic'
+      lt_prog_compiler_static_GCJ='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_GCJ='-Qoption ld '
+      lt_prog_compiler_pic_GCJ='-PIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       lt_prog_compiler_pic_GCJ='-Kconform_pic'
+       lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_GCJ='-pic'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+  echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_GCJ=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:15223: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:15227: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_prog_compiler_pic_works_GCJ=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+    case $lt_prog_compiler_pic_GCJ in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+     esac
+else
+    lt_prog_compiler_pic_GCJ=
+     lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_GCJ=
+    ;;
+  *)
+    lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_GCJ=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   # According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+   # that will create temporary files in the current directory regardless of
+   # the output directory.  Thus, making CWD read-only will cause this test
+   # to fail, enabling locking or at least warning the user not to do parallel
+   # builds.
+   chmod -w .
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:15290: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:15294: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       lt_cv_prog_compiler_c_o_GCJ=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest* out/*
+   rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag_GCJ=
+  enable_shared_with_static_runtimes_GCJ=no
+  archive_cmds_GCJ=
+  archive_expsym_cmds_GCJ=
+  old_archive_From_new_cmds_GCJ=
+  old_archive_from_expsyms_cmds_GCJ=
+  export_dynamic_flag_spec_GCJ=
+  whole_archive_flag_spec_GCJ=
+  thread_safe_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_ld_GCJ=
+  hardcode_libdir_separator_GCJ=
+  hardcode_direct_GCJ=no
+  hardcode_minus_L_GCJ=no
+  hardcode_shlibpath_var_GCJ=unsupported
+  link_all_deplibs_GCJ=unknown
+  hardcode_automatic_GCJ=no
+  module_cmds_GCJ=
+  module_expsym_cmds_GCJ=
+  always_export_symbols_GCJ=no
+  export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_GCJ=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_GCJ=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       ld_shlibs_GCJ=no
+       cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_GCJ=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       allow_undefined_flag_GCJ=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=no
+      enable_shared_with_static_runtimes_GCJ=yes
+      export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+       archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+       ld_shlibs_GCJ=no
+       cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+       archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs_GCJ=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_GCJ" = yes; then
+      runpath_var=LD_RUN_PATH
+      hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+      export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+       whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+       whole_archive_flag_spec_GCJ=
+      fi
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=yes
+      archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_GCJ=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       hardcode_direct_GCJ=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+       # On IA64, the linker does run time linking by default, so we don't
+       # have to do anything special.
+       aix_use_runtimelinking=no
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+         export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+       else
+         export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+       fi
+       aix_use_runtimelinking=no
+
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+       esac
+
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_GCJ=''
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+
+      if test "$GCC" = yes; then
+       case $host_os in aix4.012|aix4.012.*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" && \
+          strings "$collect2name" | grep resolve_lib_name >/dev/null
+         then
+         # We have reworked collect2
+         hardcode_direct_GCJ=yes
+         else
+         # We have old collect2
+         hardcode_direct_GCJ=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L_GCJ=yes
+         hardcode_libdir_flag_spec_GCJ='-L$libdir'
+         hardcode_libdir_separator_GCJ=
+         fi
+       esac
+       shared_flag='-shared'
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+       if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+       fi
+       fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_GCJ=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       allow_undefined_flag_GCJ='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+       archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+       if test "$host_cpu" = ia64; then
+         hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+         allow_undefined_flag_GCJ="-z nodefs"
+         archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an empty executable.
+        cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+        hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         no_undefined_flag_GCJ=' ${wl}-bernotok'
+         allow_undefined_flag_GCJ=' ${wl}-berok'
+         # -bexpall does not export symbols beginning with underscore (_)
+         always_export_symbols_GCJ=yes
+         # Exported symbols can be pulled into shared objects from archives
+         whole_archive_flag_spec_GCJ=' '
+         archive_cmds_need_lc_GCJ=yes
+         # This is similar to how AIX traditionally builds it's shared libraries.
+         archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_GCJ=no
+      ;;
+
+    bsdi4*)
+      export_dynamic_flag_spec_GCJ=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ=' '
+      allow_undefined_flag_GCJ=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_GCJ='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_GCJ=yes
+      ;;
+
+    darwin* | rhapsody*)
+    if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
+      archive_cmds_need_lc_GCJ=no
+      case "$host_os" in
+      rhapsody* | darwin1.[012])
+       allow_undefined_flag_GCJ='-undefined suppress'
+       ;;
+      *) # Darwin 1.3 on
+       test -z ${LD_TWOLEVEL_NAMESPACE} && allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
+       ;;
+      esac
+      # FIXME: Relying on posixy $() will cause problems for
+      #        cross-compilation, but unfortunately the echo tests do not
+      #        yet detect zsh echo's removal of \ escapes.  Also zsh mangles
+      #               `"' quotes if we put them in here... so don't!
+       lt_int_apple_cc_single_mod=no
+       output_verbose_link_cmd='echo'
+       if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+         lt_int_apple_cc_single_mod=yes
+       fi
+       if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+         archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+       else
+        archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      fi
+      module_cmds_GCJ='$CC -bundle ${wl}-bind_at_load $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+        if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+          archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        else
+          archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        fi
+          module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -bundle $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      hardcode_direct_GCJ=no
+      hardcode_automatic_GCJ=yes
+      hardcode_shlibpath_var_GCJ=unsupported
+      whole_archive_flag_spec_GCJ='-all_load $convenience'
+      link_all_deplibs_GCJ=yes
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_GCJ=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd*)
+      archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_direct_GCJ=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case "$host_cpu" in
+       hppa*64*|ia64*)
+         archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+         ;;
+       *)
+         archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       case "$host_cpu" in
+       hppa*64*)
+         hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+         hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+         hardcode_libdir_separator_GCJ=:
+         hardcode_direct_GCJ=no
+         hardcode_shlibpath_var_GCJ=no
+         ;;
+       ia64*)
+         hardcode_libdir_flag_spec_GCJ='-L$libdir'
+         hardcode_direct_GCJ=no
+         hardcode_shlibpath_var_GCJ=no
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L_GCJ=yes
+         ;;
+       *)
+         hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+         hardcode_libdir_separator_GCJ=:
+         hardcode_direct_GCJ=yes
+         export_dynamic_flag_spec_GCJ='${wl}-E'
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L_GCJ=yes
+         ;;
+       esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+       archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    newsos6)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+       archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+       hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+       export_dynamic_flag_spec_GCJ='${wl}-E'
+      else
+       case $host_os in
+        openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+          archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+          hardcode_libdir_flag_spec_GCJ='-R$libdir'
+          ;;
+        *)
+          archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+          hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+          ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      allow_undefined_flag_GCJ=unsupported
+      archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       allow_undefined_flag_GCJ=' -expect_unresolved \*'
+       archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      else
+       allow_undefined_flag_GCJ=' -expect_unresolved \*'
+       archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+       $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag_GCJ=' -z text'
+      if test "$GCC" = yes; then
+       archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+         $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+       archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+       $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+       whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+      esac
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct_GCJ=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+         hardcode_direct_GCJ=no
+        ;;
+       motorola)
+         archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       hardcode_shlibpath_var_GCJ=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       ld_shlibs_GCJ=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag_GCJ='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+       archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag_GCJ=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec_GCJ=
+      hardcode_shlibpath_var_GCJ=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      ld_shlibs_GCJ=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_GCJ=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_GCJ in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_GCJ
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+        allow_undefined_flag_GCJ=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+         archive_cmds_need_lc_GCJ=no
+        else
+         archive_cmds_need_lc_GCJ=yes
+        fi
+        allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+   test -n "$runpath_var GCJ" || \
+   test "X$hardcode_automatic_GCJ"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_GCJ" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+     test "$hardcode_minus_L_GCJ" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_GCJ=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_GCJ=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_GCJ=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6
+
+if test "$hardcode_action_GCJ" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+       :
+      else
+       can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/lib /lib/w32api /usr/lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  # FIXME: Relying on posixy $() will cause problems for
+  #        cross-compilation, but unfortunately the echo tests do not
+  #        yet detect zsh echo's removal of \ escapes.
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.01* | freebsdelf3.01*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  case $LD in # libtool.m4 will add one of these switches to LD
+  *"-m elf_x86_64"*|*"-m elf64ppc"*|*"-m elf64_s390"*|*"-m elf64_sparc"*)
+    sys_lib_dlsearch_path_spec="/lib64 /usr/lib64"
+    sys_lib_search_path_spec="/lib64 /usr/lib64 /usr/local/lib64"
+    ;;
+  esac
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 17309 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 17407 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS AS EGREP RANLIB LN_S LTCC NM SED SHELL \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_GCJ \
+    CC_GCJ \
+    LD_GCJ \
+    lt_prog_compiler_wl_GCJ \
+    lt_prog_compiler_pic_GCJ \
+    lt_prog_compiler_static_GCJ \
+    lt_prog_compiler_no_builtin_flag_GCJ \
+    export_dynamic_flag_spec_GCJ \
+    thread_safe_flag_spec_GCJ \
+    whole_archive_flag_spec_GCJ \
+    enable_shared_with_static_runtimes_GCJ \
+    old_archive_cmds_GCJ \
+    old_archive_from_new_cmds_GCJ \
+    predep_objects_GCJ \
+    postdep_objects_GCJ \
+    predeps_GCJ \
+    postdeps_GCJ \
+    compiler_lib_search_path_GCJ \
+    archive_cmds_GCJ \
+    archive_expsym_cmds_GCJ \
+    postinstall_cmds_GCJ \
+    postuninstall_cmds_GCJ \
+    old_archive_from_expsyms_cmds_GCJ \
+    allow_undefined_flag_GCJ \
+    no_undefined_flag_GCJ \
+    export_symbols_cmds_GCJ \
+    hardcode_libdir_flag_spec_GCJ \
+    hardcode_libdir_flag_spec_ld_GCJ \
+    hardcode_libdir_separator_GCJ \
+    hardcode_automatic_GCJ \
+    module_cmds_GCJ \
+    module_expsym_cmds_GCJ \
+    lt_cv_prog_compiler_c_o_GCJ \
+    exclude_expsyms_GCJ \
+    include_expsyms_GCJ; do
+
+    case $var in
+    old_archive_cmds_GCJ | \
+    old_archive_from_new_cmds_GCJ | \
+    archive_cmds_GCJ | \
+    archive_expsym_cmds_GCJ | \
+    module_cmds_GCJ | \
+    module_expsym_cmds_GCJ | \
+    old_archive_from_expsyms_cmds_GCJ | \
+    export_symbols_cmds_GCJ | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS=$lt_AS
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext='$shrext'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_GCJ
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  test -f Makefile && make "$ltmain"
+fi
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+CC="$lt_save_CC"
+
+       else
+         tagname=""
+       fi
+       ;;
+
+      RC)
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS AS EGREP RANLIB LN_S LTCC NM SED SHELL \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_RC \
+    CC_RC \
+    LD_RC \
+    lt_prog_compiler_wl_RC \
+    lt_prog_compiler_pic_RC \
+    lt_prog_compiler_static_RC \
+    lt_prog_compiler_no_builtin_flag_RC \
+    export_dynamic_flag_spec_RC \
+    thread_safe_flag_spec_RC \
+    whole_archive_flag_spec_RC \
+    enable_shared_with_static_runtimes_RC \
+    old_archive_cmds_RC \
+    old_archive_from_new_cmds_RC \
+    predep_objects_RC \
+    postdep_objects_RC \
+    predeps_RC \
+    postdeps_RC \
+    compiler_lib_search_path_RC \
+    archive_cmds_RC \
+    archive_expsym_cmds_RC \
+    postinstall_cmds_RC \
+    postuninstall_cmds_RC \
+    old_archive_from_expsyms_cmds_RC \
+    allow_undefined_flag_RC \
+    no_undefined_flag_RC \
+    export_symbols_cmds_RC \
+    hardcode_libdir_flag_spec_RC \
+    hardcode_libdir_flag_spec_ld_RC \
+    hardcode_libdir_separator_RC \
+    hardcode_automatic_RC \
+    module_cmds_RC \
+    module_expsym_cmds_RC \
+    lt_cv_prog_compiler_c_o_RC \
+    exclude_expsyms_RC \
+    include_expsyms_RC; do
+
+    case $var in
+    old_archive_cmds_RC | \
+    old_archive_from_new_cmds_RC | \
+    archive_cmds_RC | \
+    archive_expsym_cmds_RC | \
+    module_cmds_RC | \
+    module_expsym_cmds_RC | \
+    old_archive_from_expsyms_cmds_RC | \
+    export_symbols_cmds_RC | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS=$lt_AS
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext='$shrext'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_RC
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  test -f Makefile && make "$ltmain"
+fi
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+CC="$lt_save_CC"
+
+       ;;
+
+      *)
+       { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+       ;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# check for dlopen,dlsym... or shl_load, shl_findsym...
+LIBADD_DL=
+
+
+echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SHL_LOAD 1
+_ACEOF
+
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SHL_LOAD 1
+_ACEOF
+
+       LIBADD_DL="$LIBADD_DL -ldld"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBDL 1
+_ACEOF
+
+         LIBADD_DL="-ldl"
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#if HAVE_DLFCN_H
+#  include <dlfcn.h>
+#endif
+
+int
+main ()
+{
+dlopen(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBDL 1
+_ACEOF
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBDL 1
+_ACEOF
+
+             LIBADD_DL="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DLD 1
+_ACEOF
+
+               LIBADD_DL="$LIBADD_DL -ldld"
+
+fi
+
+
+fi
+
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+
+fi
+
+
+fi
+
+
+if test "x$ac_cv_func_dlopen" = xyes || test "x$ac_cv_lib_dl_dlopen" = xyes; then
+ LIBS_SAVE="$LIBS"
+ LIBS="$LIBS $LIBADD_DL"
+
+for ac_func in dlerror
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ LIBS="$LIBS_SAVE"
+fi
+
+
+# check for doxygen
+
+# Check whether --enable-doxygen or --disable-doxygen was given.
+if test "${enable_doxygen+set}" = set; then
+  enableval="$enable_doxygen"
+
+fi;
+# Check whether --enable-dot or --disable-dot was given.
+if test "${enable_dot+set}" = set; then
+  enableval="$enable_dot"
+
+fi;
+# Check whether --enable-html-docs or --disable-html-docs was given.
+if test "${enable_html_docs+set}" = set; then
+  enableval="$enable_html_docs"
+
+else
+   enable_html_docs=yes
+fi;
+# Check whether --enable-latex-docs or --disable-latex-docs was given.
+if test "${enable_latex_docs+set}" = set; then
+  enableval="$enable_latex_docs"
+
+else
+   enable_latex_docs=no
+fi;
+if test "x$enable_doxygen" = xno; then
+        enable_doc=no
+else
+        # Extract the first word of "doxygen", so it can be a program name with args.
+set dummy doxygen; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_DOXYGEN+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $DOXYGEN in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DOXYGEN="$DOXYGEN" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+DOXYGEN=$ac_cv_path_DOXYGEN
+
+if test -n "$DOXYGEN"; then
+  echo "$as_me:$LINENO: result: $DOXYGEN" >&5
+echo "${ECHO_T}$DOXYGEN" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+        if test "x$DOXYGEN" = x; then
+                if test "x$enable_doxygen" = xyes; then
+                        { { echo "$as_me:$LINENO: error: could not find doxygen" >&5
+echo "$as_me: error: could not find doxygen" >&2;}
+   { (exit 1); exit 1; }; }
+                fi
+                enable_doc=no
+        else
+                enable_doc=yes
+                # Extract the first word of "dot", so it can be a program name with args.
+set dummy dot; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_DOT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $DOT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DOT="$DOT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_DOT="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+DOT=$ac_cv_path_DOT
+
+if test -n "$DOT"; then
+  echo "$as_me:$LINENO: result: $DOT" >&5
+echo "${ECHO_T}$DOT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+        fi
+fi
+
+
+if test x$enable_doc = xyes; then
+  DOC_TRUE=
+  DOC_FALSE='#'
+else
+  DOC_TRUE='#'
+  DOC_FALSE=
+fi
+
+
+if test x$DOT = x; then
+        if test "x$enable_dot" = xyes; then
+                { { echo "$as_me:$LINENO: error: could not find dot" >&5
+echo "$as_me: error: could not find dot" >&2;}
+   { (exit 1); exit 1; }; }
+        fi
+        enable_dot=no
+else
+        enable_dot=yes
+fi
+
+
+
+
+
+
+# Check for headers
+# Note that the fourth argument to AC_CHECK_HEADERS is non-empty to force
+# the configure probe to try compiling "#include <header>".  See autoconf docs.
+# ----------------------------------------------------------------------------
+
+
+for ac_header in cmath
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/**/
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+# Check for compiler characteristics
+# ----------------------------------------------------------------------------
+
+echo "$as_me:$LINENO: checking whether the compiler supports Run-Time Type Identification" >&5
+echo $ECHO_N "checking whether the compiler supports Run-Time Type Identification... $ECHO_C" >&6
+if test "${ac_cv_cxx_rtti+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <typeinfo>
+class Base { public :
+             Base () {}
+             virtual int f () { return 0; }
+           };
+class Derived : public Base { public :
+                              Derived () {}
+                              virtual int f () { return 1; }
+                            };
+
+int
+main ()
+{
+Derived d;
+Base *ptr = &d;
+return typeid (*ptr) == typeid (Derived);
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_cxx_rtti=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_cxx_rtti=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_rtti" >&5
+echo "${ECHO_T}$ac_cv_cxx_rtti" >&6
+if test "$ac_cv_cxx_rtti" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_RTTI 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking whether the compiler supports GCC C++ ABI name demangling" >&5
+echo $ECHO_N "checking whether the compiler supports GCC C++ ABI name demangling... $ECHO_C" >&6
+if test "${ac_cv_cxx_gcc_abi_demangle+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <typeinfo>
+#include <cxxabi.h>
+#include <string>
+
+template<typename TYPE>
+class A {};
+
+int
+main ()
+{
+A<int> instance;
+int status = 0;
+char* c_name = 0;
+
+c_name = abi::__cxa_demangle(typeid(instance).name(), 0, 0, &status);
+
+std::string name(c_name);
+free(c_name);
+
+return name == "A<int>";
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_cxx_gcc_abi_demangle=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_cxx_gcc_abi_demangle=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_gcc_abi_demangle" >&5
+echo "${ECHO_T}$ac_cv_cxx_gcc_abi_demangle" >&6
+if test "$ac_cv_cxx_gcc_abi_demangle" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GCC_ABI_DEMANGLE 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking whether the compiler implements namespaces" >&5
+echo $ECHO_N "checking whether the compiler implements namespaces... $ECHO_C" >&6
+if test "${ac_cv_cxx_namespaces+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+namespace Outer { namespace Inner { int i = 0; }}
+int
+main ()
+{
+using namespace Outer::Inner; return i;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_cxx_namespaces=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_cxx_namespaces=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_namespaces" >&5
+echo "${ECHO_T}$ac_cv_cxx_namespaces" >&6
+if test "$ac_cv_cxx_namespaces" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_NAMESPACES 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking whether std::string::compare takes a string in argument 1" >&5
+echo $ECHO_N "checking whether std::string::compare takes a string in argument 1... $ECHO_C" >&6
+if test "${ac_cv_cxx_string_compare_string_first+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string>
+#ifdef HAVE_NAMESPACES
+using namespace std;
+#endif
+int
+main ()
+{
+string x("hi"); string y("h");
+return x.compare(y,0,1) == 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_cxx_string_compare_string_first=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_cxx_string_compare_string_first=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_string_compare_string_first" >&5
+echo "${ECHO_T}$ac_cv_cxx_string_compare_string_first" >&6
+if test "$ac_cv_cxx_string_compare_string_first" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define FUNC_STRING_COMPARE_STRING_FIRST 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking whether the compiler has stringstream" >&5
+echo $ECHO_N "checking whether the compiler has stringstream... $ECHO_C" >&6
+if test "${ac_cv_cxx_have_sstream+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sstream>
+#ifdef HAVE_NAMESPACES
+using namespace std;
+#endif
+int
+main ()
+{
+stringstream message; message << "Hello"; return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_cxx_have_sstream=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_cxx_have_sstream=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_have_sstream" >&5
+echo "${ECHO_T}$ac_cv_cxx_have_sstream" >&6
+if test "$ac_cv_cxx_have_sstream" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SSTREAM 1
+_ACEOF
+
+fi
+
+
+echo "$as_me:$LINENO: checking whether the library defines class strstream" >&5
+echo $ECHO_N "checking whether the library defines class strstream... $ECHO_C" >&6
+if test "${ac_cv_cxx_have_class_strstream+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+for ac_header in strstream
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#if HAVE_STRSTREAM
+#  include <strstream>
+#else
+#  include <strstream.h>
+#endif
+#ifdef HAVE_NAMESPACES
+using namespace std;
+#endif
+int
+main ()
+{
+ostrstream message; message << "Hello"; return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_cxx_have_class_strstream=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_cxx_have_class_strstream=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_have_class_strstream" >&5
+echo "${ECHO_T}$ac_cv_cxx_have_class_strstream" >&6
+if test "$ac_cv_cxx_have_class_strstream" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CLASS_STRSTREAM 1
+_ACEOF
+
+fi
+
+
+cppunit_val='CPPUNIT_HAVE_RTTI'
+# Check whether --enable-typeinfo-name or --disable-typeinfo-name was given.
+if test "${enable_typeinfo_name+set}" = set; then
+  enableval="$enable_typeinfo_name"
+
+    test x$enableval = 'xno' && cppunit_val='0'
+
+fi;
+
+
+cat >>confdefs.h <<_ACEOF
+#define USE_TYPEINFO_NAME $cppunit_val
+_ACEOF
+
+
+
+# Doesn't work. It's supposed to add "#define CPPUNIT_NO_TESTPLUGIN" if
+# --disable-test-plugin was used on the command line.
+#
+#
+#
+#AC_ARG_ENABLE(test-plugin,
+#[  --disable-test-plugin disable support for test plug-ins],
+#[
+#      if test -n "$enable_test_plugin"; then
+#         enable_test_plugin=${enable_test_plugin_default-yes}
+#      fi
+#      if test "$enable_test_plugin" = no; then
+#echo "test-plug in disabled"
+#      fi
+#])
+#
+#testplugin_val=1
+#AC_DEFINE_UNQUOTED(NO_TESTPLUGIN,$testplugin_val,
+#[defined to disable TestPlugIn])
+
+
+                                                                                                                                                                                                                                                                    ac_config_files="$ac_config_files Makefile cppunit.spec cppunit-config src/Makefile src/DllPlugInTester/Makefile src/cppunit/Makefile include/Makefile include/cppunit/Makefile include/cppunit/config/Makefile include/cppunit/extensions/Makefile include/cppunit/plugin/Makefile include/cppunit/portability/Makefile include/cppunit/tools/Makefile include/cppunit/ui/Makefile include/cppunit/ui/mfc/Makefile include/cppunit/ui/qt/Makefile include/cppunit/ui/text/Makefile doc/Makefile doc/Doxyfile examples/Makefile examples/simple/Makefile examples/hierarchy/Makefile examples/cppunittest/Makefile examples/ClockerPlugIn/Makefile examples/DumperPlugIn/Makefile examples/money/Makefile"
+          ac_config_commands="$ac_config_commands default"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+        "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;;
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n \
+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+  if test -w $cache_file; then
+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+    cat confcache >$cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[        ]*VPATH[        ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[   ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[     ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_i=`echo "$ac_i" |
+         sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+  # 2. Add them.
+  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${DOC_TRUE}" && test -z "${DOC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"DOC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"DOC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)$' \| \
+        .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+         /^X\/\(\/\/\)$/{ s//\1/; q; }
+         /^X\/\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+        case $as_dir in
+        /*)
+          if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+            $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+            $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+            CONFIG_SHELL=$as_dir/$as_base
+            export CONFIG_SHELL
+            exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+          fi;;
+        esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='     ' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS="  $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.  Logging --version etc. is OK.
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.57.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+  --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.57,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  -*)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_option=$1
+     ac_need_defaults=false;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS section.
+#
+
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  "cppunit.spec" ) CONFIG_FILES="$CONFIG_FILES cppunit.spec" ;;
+  "cppunit-config" ) CONFIG_FILES="$CONFIG_FILES cppunit-config" ;;
+  "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+  "src/DllPlugInTester/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/DllPlugInTester/Makefile" ;;
+  "src/cppunit/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/cppunit/Makefile" ;;
+  "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
+  "include/cppunit/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/Makefile" ;;
+  "include/cppunit/config/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/config/Makefile" ;;
+  "include/cppunit/extensions/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/extensions/Makefile" ;;
+  "include/cppunit/plugin/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/plugin/Makefile" ;;
+  "include/cppunit/portability/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/portability/Makefile" ;;
+  "include/cppunit/tools/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/tools/Makefile" ;;
+  "include/cppunit/ui/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/ui/Makefile" ;;
+  "include/cppunit/ui/mfc/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/ui/mfc/Makefile" ;;
+  "include/cppunit/ui/qt/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/ui/qt/Makefile" ;;
+  "include/cppunit/ui/text/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/cppunit/ui/text/Makefile" ;;
+  "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+  "doc/Doxyfile" ) CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;;
+  "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+  "examples/simple/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/simple/Makefile" ;;
+  "examples/hierarchy/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/hierarchy/Makefile" ;;
+  "examples/cppunittest/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/cppunittest/Makefile" ;;
+  "examples/ClockerPlugIn/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/ClockerPlugIn/Makefile" ;;
+  "examples/DumperPlugIn/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/DumperPlugIn/Makefile" ;;
+  "examples/money/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/money/Makefile" ;;
+  "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+  "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+  "config/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config/config.h" ;;
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./confstat$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@CPPUNIT_MAJOR_VERSION@,$CPPUNIT_MAJOR_VERSION,;t t
+s,@CPPUNIT_MINOR_VERSION@,$CPPUNIT_MINOR_VERSION,;t t
+s,@CPPUNIT_MICRO_VERSION@,$CPPUNIT_MICRO_VERSION,;t t
+s,@CPPUNIT_INTERFACE_AGE@,$CPPUNIT_INTERFACE_AGE,;t t
+s,@CPPUNIT_BINARY_AGE@,$CPPUNIT_BINARY_AGE,;t t
+s,@CPPUNIT_VERSION@,$CPPUNIT_VERSION,;t t
+s,@LT_RELEASE@,$LT_RELEASE,;t t
+s,@LT_CURRENT@,$LT_CURRENT,;t t
+s,@LT_REVISION@,$LT_REVISION,;t t
+s,@LT_AGE@,$LT_AGE,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@CYGPATH_W@,$CYGPATH_W,;t t
+s,@PACKAGE@,$PACKAGE,;t t
+s,@VERSION@,$VERSION,;t t
+s,@ACLOCAL@,$ACLOCAL,;t t
+s,@AUTOCONF@,$AUTOCONF,;t t
+s,@AUTOMAKE@,$AUTOMAKE,;t t
+s,@AUTOHEADER@,$AUTOHEADER,;t t
+s,@MAKEINFO@,$MAKEINFO,;t t
+s,@AMTAR@,$AMTAR,;t t
+s,@install_sh@,$install_sh,;t t
+s,@STRIP@,$STRIP,;t t
+s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+s,@AWK@,$AWK,;t t
+s,@SET_MAKE@,$SET_MAKE,;t t
+s,@am__leading_dot@,$am__leading_dot,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@DEPDIR@,$DEPDIR,;t t
+s,@am__include@,$am__include,;t t
+s,@am__quote@,$am__quote,;t t
+s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
+s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
+s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+s,@CCDEPMODE@,$CCDEPMODE,;t t
+s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
+s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+s,@CXX@,$CXX,;t t
+s,@CXXFLAGS@,$CXXFLAGS,;t t
+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
+s,@CXXDEPMODE@,$CXXDEPMODE,;t t
+s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
+s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
+s,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
+s,@EGREP@,$EGREP,;t t
+s,@LN_S@,$LN_S,;t t
+s,@ECHO@,$ECHO,;t t
+s,@AR@,$AR,;t t
+s,@ac_ct_AR@,$ac_ct_AR,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@CPP@,$CPP,;t t
+s,@CXXCPP@,$CXXCPP,;t t
+s,@F77@,$F77,;t t
+s,@FFLAGS@,$FFLAGS,;t t
+s,@ac_ct_F77@,$ac_ct_F77,;t t
+s,@LIBTOOL@,$LIBTOOL,;t t
+s,@LIBADD_DL@,$LIBADD_DL,;t t
+s,@DOXYGEN@,$DOXYGEN,;t t
+s,@DOT@,$DOT,;t t
+s,@DOC_TRUE@,$DOC_TRUE,;t t
+s,@DOC_FALSE@,$DOC_FALSE,;t t
+s,@enable_dot@,$enable_dot,;t t
+s,@enable_html_docs@,$enable_html_docs,;t t
+s,@enable_latex_docs@,$enable_latex_docs,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+  cat >>$CONFIG_STATUS <<\_ACEOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+       ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+       ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$as_dir" : 'X\(//\)[^/]' \| \
+         X"$as_dir" : 'X\(//\)$' \| \
+         X"$as_dir" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
+# absolute.
+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  esac
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    configure_input=
+  else
+    configure_input="$ac_file.  "
+  fi
+  configure_input=$configure_input"Generated from `echo $ac_file_in |
+                                     sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=:)
+         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([  ]*\)#\([        ]*define[       ][      ]*\)'
+ac_dB='[       ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=:)
+         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[     ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h.  The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status.  Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[   ]*#[    ]*define[       ][      ]*\([^  (][^    (]*\)\(([^)]*)\)[       ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[   ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless.  Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[   ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo '  if grep "^[    ]*#[    ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo '  :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+  # Write a limited-size here document to $tmp/defines.sed.
+  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#define' lines.
+  echo '/^[    ]*#[    ]*define/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/defines.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+  rm -f conftest.defines
+  mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo '  fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+  # Write a limited-size here document to $tmp/undefs.sed.
+  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#undef'
+  echo '/^[    ]*#[    ]*undef/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+  rm -f conftest.undefs
+  mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    echo "/* Generated by configure.  */" >$tmp/config.h
+  else
+    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" != x-; then
+    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+      { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$as_dir" : 'X\(//\)[^/]' \| \
+         X"$as_dir" : 'X\(//\)$' \| \
+         X"$as_dir" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
+    fi
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
+  fi
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $ac_file | $ac_file:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X$ac_file : 'X\(//\)[^/]' \| \
+         X$ac_file : 'X\(//\)$' \| \
+         X$ac_file : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X$ac_file |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`/stamp-h$_am_stamp_count
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+  ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+  ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_dest" : 'X\(//\)[^/]' \| \
+         X"$ac_dest" : 'X\(//\)$' \| \
+         X"$ac_dest" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_dest" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
+# absolute.
+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+
+  { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+echo "$as_me: executing $ac_dest commands" >&6;}
+  case $ac_dest in
+    depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`(dirname "$mf") 2>/dev/null ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$mf" : 'X\(//\)[^/]' \| \
+         X"$mf" : 'X\(//\)$' \| \
+         X"$mf" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+  else
+    continue
+  fi
+  grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
+  # Extract the definition of DEP_FILES from the Makefile without
+  # running `make'.
+  DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n -e '/^U = / s///p' < "$mf"`
+  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
+  # We invoke sed twice because it is the simplest approach to
+  # changing $(DEPDIR) to its actual value in the expansion.
+  for file in `sed -n -e '
+    /^DEP_FILES = .*\\\\$/ {
+      s/^DEP_FILES = //
+      :loop
+       s/\\\\$//
+       p
+       n
+       /\\\\$/ b loop
+      p
+    }
+    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`(dirname "$file") 2>/dev/null ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$file" : 'X\(//\)[^/]' \| \
+         X"$file" : 'X\(//\)$' \| \
+         X"$file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+    { if $as_mkdir_p; then
+    mkdir -p $dirpart/$fdir
+  else
+    as_dir=$dirpart/$fdir
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$as_dir" : 'X\(//\)[^/]' \| \
+         X"$as_dir" : 'X\(//\)$' \| \
+         X"$as_dir" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+ ;;
+    default ) chmod a+x cppunit-config ;;
+  esac
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+
+ac_prefix_conf_OUT=`echo include/cppunit/config-auto.h`
+ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e 'y:abcdefghijklmnopqrstuvwxyz./,-:ABCDEFGHIJKLMNOPQRSTUVWXYZ____:'`
+ac_prefix_conf_PKG=`echo $PACKAGE`
+ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:'`
+ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e 'y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:'  -e '/^[0-9]/s/^/_/'`
+ac_prefix_conf_INP=`echo config/config.h`
+if test "$ac_prefix_conf_INP" = "_"; then
+   case $ac_prefix_conf_OUT in
+      */*) ac_prefix_conf_INP=`basename $ac_prefix_conf_OUT`
+      ;;
+      *-*) ac_prefix_conf_INP=`echo $ac_prefix_conf_OUT | sed -e 's/[a-zA-Z0-9_]*-//'`
+      ;;
+      *) ac_prefix_conf_INP=config.h
+      ;;
+   esac
+fi
+if test -z "$ac_prefix_conf_PKG" ; then
+   { { echo "$as_me:$LINENO: error: no prefix for _PREFIX_PKG_CONFIG_H" >&5
+echo "$as_me: error: no prefix for _PREFIX_PKG_CONFIG_H" >&2;}
+   { (exit 1); exit 1; }; }
+else
+  echo "$as_me:$LINENO: result: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&5
+echo "${ECHO_T}creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&6
+  if test -f $ac_prefix_conf_INP ; then
+    (dirname /* automatically generated */) 2>/dev/null ||
+$as_expr X/* automatically generated */ : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X/* automatically generated */ : 'X\(//\)[^/]' \| \
+         X/* automatically generated */ : 'X\(//\)$' \| \
+         X/* automatically generated */ : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X/* automatically generated */ |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'
+    echo '#ifndef '$ac_prefix_conf_DEF >$ac_prefix_conf_OUT
+    echo '#define '$ac_prefix_conf_DEF' 1' >>$ac_prefix_conf_OUT
+    echo ' ' >>$ac_prefix_conf_OUT
+    echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$ac_prefix_conf_OUT
+
+    echo 's/#undef  *\([A-Z_]\)/#undef '$ac_prefix_conf_UPP'_\1/' >conftest.sed
+    echo 's/#undef  *\([a-z]\)/#undef '$ac_prefix_conf_LOW'_\1/' >>conftest.sed
+    echo 's/#define  *\([A-Z_][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_UPP"_\\1 \\" >>conftest.sed
+    echo '#define '$ac_prefix_conf_UPP"_\\1 \\2 \\" >>conftest.sed
+    echo '#endif/' >>conftest.sed
+    echo 's/#define  *\([a-z][A-Za-z0-9_]*\)\(.*\)/#ifndef '$ac_prefix_conf_LOW"_\\1 \\" >>conftest.sed
+    echo '#define '$ac_prefix_conf_LOW"_\\1 \\2 \\" >>conftest.sed
+    echo '#endif/' >>conftest.sed
+    sed -f conftest.sed $ac_prefix_conf_INP >>$ac_prefix_conf_OUT
+    echo ' ' >>$ac_prefix_conf_OUT
+    echo '/*' $ac_prefix_conf_DEF '*/' >>$ac_prefix_conf_OUT
+    echo '#endif' >>$ac_prefix_conf_OUT
+  else
+    { { echo "$as_me:$LINENO: error: input file $ac_prefix_conf_IN does not exist,     skip generating $ac_prefix_conf_OUT" >&5
+echo "$as_me: error: input file $ac_prefix_conf_IN does not exist,     skip generating $ac_prefix_conf_OUT" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  rm -f conftest.*
+fi
diff --git a/lib/cppunit-1.10.0/configure.in b/lib/cppunit-1.10.0/configure.in
new file mode 100644 (file)
index 0000000..94755b7
--- /dev/null
@@ -0,0 +1,147 @@
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT(Makefile.am)
+
+# autoconf 2.50 or higher to rebuild aclocal.m4, because the
+# AC_CREATE_PREFIX_CONFIG_H macro needs the AS_DIRNAME macro.
+AC_PREREQ(2.50)
+
+# Making releases:
+#   CPPUNIT_MICRO_VERSION += 1;
+#   CPPUNIT_INTERFACE_AGE += 1;
+#   CPPUNIT_BINARY_AGE += 1;
+# if any functions have been added, set CPPUNIT_INTERFACE_AGE to 0.
+# if backwards compatibility has been broken,
+# set CPPUNIT_BINARY_AGE and CPPUNIT_INTERFACE_AGE to 0.
+#
+CPPUNIT_MAJOR_VERSION=1
+CPPUNIT_MINOR_VERSION=10
+CPPUNIT_MICRO_VERSION=0
+CPPUNIT_INTERFACE_AGE=0
+CPPUNIT_BINARY_AGE=0
+CPPUNIT_VERSION=$CPPUNIT_MAJOR_VERSION.$CPPUNIT_MINOR_VERSION.$CPPUNIT_MICRO_VERSION
+AC_SUBST(CPPUNIT_MAJOR_VERSION)
+AC_SUBST(CPPUNIT_MINOR_VERSION)
+AC_SUBST(CPPUNIT_MICRO_VERSION)
+AC_SUBST(CPPUNIT_INTERFACE_AGE)
+AC_SUBST(CPPUNIT_BINARY_AGE)
+AC_SUBST(CPPUNIT_VERSION)
+
+# libtool versioning
+LT_RELEASE=$CPPUNIT_MAJOR_VERSION.$CPPUNIT_MINOR_VERSION
+LT_CURRENT=`expr $CPPUNIT_MICRO_VERSION - $CPPUNIT_INTERFACE_AGE`
+LT_REVISION=$CPPUNIT_INTERFACE_AGE
+LT_AGE=`expr $CPPUNIT_BINARY_AGE - $CPPUNIT_INTERFACE_AGE`
+AC_SUBST(LT_RELEASE)
+AC_SUBST(LT_CURRENT)
+AC_SUBST(LT_REVISION)
+AC_SUBST(LT_AGE)
+
+AC_CONFIG_AUX_DIR(config)
+AM_CONFIG_HEADER(config/config.h)
+AM_INIT_AUTOMAKE(cppunit, $CPPUNIT_VERSION)
+
+# General "with" options
+# ----------------------------------------------------------------------------
+
+dnl Checks for programs.
+
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+
+# The libtool macro AC_PROG_LIBTOOL checks for the C preprocessor.
+# Configure gets confused if we try to check for a C preprocessor
+# without first checking for the C compiler
+# (see http://sources.redhat.com/ml/autoconf/2001-07/msg00036.html),
+# so we invoke AC_PROG_CC explicitly.
+AC_PROG_CC
+AC_PROG_CXX
+AC_LANG(C++)
+
+AC_PROG_LIBTOOL
+
+# check for dlopen,dlsym... or shl_load, shl_findsym...
+AC_LTDL_DLLIB
+
+# check for doxygen
+BB_ENABLE_DOXYGEN
+
+
+# Check for headers
+# Note that the fourth argument to AC_CHECK_HEADERS is non-empty to force
+# the configure probe to try compiling "#include <header>".  See autoconf docs.
+# ----------------------------------------------------------------------------
+
+AC_CHECK_HEADERS(cmath,[],[],[/**/])
+
+# Check for compiler characteristics 
+# ----------------------------------------------------------------------------
+
+AC_CXX_RTTI
+AX_CXX_GCC_ABI_DEMANGLE
+AC_CXX_STRING_COMPARE_STRING_FIRST
+AC_CXX_HAVE_SSTREAM
+AC_CXX_HAVE_STRSTREAM
+
+cppunit_val='CPPUNIT_HAVE_RTTI'
+AC_ARG_ENABLE(typeinfo-name,
+[  --disable-typeinfo-name disable use of RTTI for class names],
+[  
+    test x$enableval = 'xno' && cppunit_val='0' 
+])
+
+AC_DEFINE_UNQUOTED(USE_TYPEINFO_NAME,$cppunit_val,
+[Define to 1 to use type_info::name() for class names])
+
+
+# Doesn't work. It's supposed to add "#define CPPUNIT_NO_TESTPLUGIN" if
+# --disable-test-plugin was used on the command line.
+#
+# 
+#
+#AC_ARG_ENABLE(test-plugin,
+#[  --disable-test-plugin disable support for test plug-ins],
+#[  
+#      if test -n "$enable_test_plugin"; then
+#         enable_test_plugin=${enable_test_plugin_default-yes}
+#      fi
+#      if test "$enable_test_plugin" = no; then
+#echo "test-plug in disabled"
+#      fi
+#])
+#
+#testplugin_val=1
+#AC_DEFINE_UNQUOTED(NO_TESTPLUGIN,$testplugin_val,
+#[defined to disable TestPlugIn])
+
+
+AC_OUTPUT([
+  Makefile 
+  cppunit.spec
+  cppunit-config
+  src/Makefile
+  src/DllPlugInTester/Makefile
+  src/cppunit/Makefile
+  include/Makefile
+  include/cppunit/Makefile
+  include/cppunit/config/Makefile
+  include/cppunit/extensions/Makefile
+  include/cppunit/plugin/Makefile
+  include/cppunit/portability/Makefile
+  include/cppunit/tools/Makefile
+  include/cppunit/ui/Makefile
+  include/cppunit/ui/mfc/Makefile
+  include/cppunit/ui/qt/Makefile
+  include/cppunit/ui/text/Makefile
+  doc/Makefile
+  doc/Doxyfile
+  examples/Makefile
+  examples/simple/Makefile
+  examples/hierarchy/Makefile
+  examples/cppunittest/Makefile
+  examples/ClockerPlugIn/Makefile
+  examples/DumperPlugIn/Makefile
+  examples/money/Makefile
+],[chmod a+x cppunit-config])
+
+AC_CREATE_PREFIX_CONFIG_H([include/cppunit/config-auto.h], 
+        $PACKAGE, [config/config.h])
diff --git a/lib/cppunit-1.10.0/contrib/bc5/bcc-makefile.zip b/lib/cppunit-1.10.0/contrib/bc5/bcc-makefile.zip
new file mode 100644 (file)
index 0000000..8be8d7b
Binary files /dev/null and b/lib/cppunit-1.10.0/contrib/bc5/bcc-makefile.zip differ
diff --git a/lib/cppunit-1.10.0/contrib/msvc/AddingUnitTestMethod.dsm b/lib/cppunit-1.10.0/contrib/msvc/AddingUnitTestMethod.dsm
new file mode 100644 (file)
index 0000000..51f0dcb
--- /dev/null
@@ -0,0 +1,170 @@
+'Made by bloodchen \r\r
+'bloodchen@hotmail.com \r\r
+Sub NewTestClass \r\r
+On Error Resume Next \r\r
+dim proj_path,ext,pos,proj_dir,MyCppFile,MyCppName,MyHFile,MyHName,ClassName,HText,CPPText \r\r
+proj_path = ActiveProject.fullname \r\r
+ext = "" \r\r
+pos = len (proj_path) \r\r
+Do While ext <> "\" \r\r
+ext = Mid(proj_path, pos, 1) \r\r
+pos = pos -1 \r\r
+Loop \r\r
+proj_dir = left(proj_path, pos+1) \r\r
+ClassName=InputBox("Enter the class name:", "Class Name") \r\r
+if ActiveProject.Type <> "Build" then \r\r
+MsgBox "This project is not valid. Ending macro." \r\r
+Exit Sub \r\r
+end if \r\r
+if (len(ClassName) <= 0) then \r\r
+MsgBox "Invalid class name. Ending macro." \r\r
+Exit Sub \r\r
+end if \r\r
+\r\r
+' ClassName="CTest" \r\r
+MyCppName=proj_dir+ClassName+".cpp" \r\r
+MyHName=proj_dir+ClassName+".h" \r\r
+ActiveProject.AddFile MyCppName \r\r
+ActiveProject.AddFile MyHName \r\r
+Documents.Add "Text" \r\r
+ActiveDocument.Selection.StartOfDocument \r\r
+\r\r
+HText= "#ifndef "+ClassName+"DEF"+VbCrLf& _ \r\r
+"#define "+ClassName+"DEF"+VbCrLf& _ \r\r
+""+VbCrLf& _ \r\r
+"#include <cppunit\testcase.h>"+VbCrLf& _ \r\r
+"#include <cppunit\extensions\HelperMacros.h>"+VbCrLf& _ \r\r
+"class "+ClassName+":public CppUnit::TestCase"+VbCrLf& _ \r\r
+"{"+VbCrLf& _ \r\r
+" CPPUNIT_TEST_SUITE( "+ClassName+" );"+VbCrLf& _ \r\r
+" CPPUNIT_TEST_SUITE_END();"+VbCrLf& _ \r\r
+"public:"+VbCrLf& _ \r\r
+" "+ClassName+"();"+VbCrLf& _ \r\r
+" virtual ~"+ClassName+"();"+VbCrLf& _ \r\r
+"};"+VbCrLf& _ \r\r
+"#endif"+VbCrLf \r\r
+ActiveDocument.Selection = HText \r\r
+ActiveDocument.Save MyHName \r\r
+' WriteFile MyHName,HText \r\r
+Documents.Add "Text" \r\r
+ActiveDocument.Selection.StartOfDocument \r\r
+CPPText = "#include "+chr(34)+"stdafx.h"+chr(34)+VbCrLf& _ \r\r
+"#include "+chr(34)+ClassName+".h"+chr(34)+VbCrLf& _ \r\r
+""+VbCrLf& _ \r\r
+""+VbCrLf& _ \r\r
+"CPPUNIT_TEST_SUITE_REGISTRATION( "+ClassName+ " );"+VbCrLf& _ \r\r
+""+VbCrLf& _ \r\r
+""+VbCrLf& _ \r\r
+ClassName+"::"+ClassName+"()"+VbCrLf& _ \r\r
+"{"+VbCrLf& _ \r\r
+"}"+VbCrLf& _ \r\r
+""+VbCrLf& _ \r\r
+""+VbCrLf& _ \r\r
+ClassName+"::~"+ClassName+"()"+VbCrLf& _ \r\r
+"{"+VbCrLf& _ \r\r
+"}" \r\r
+' WriteFile MyCppName,CPPText \r\r
+ActiveDocument.Selection = CPPText \r\r
+ActiveDocument.Save MyCppName \r\r
+\r\r
+End Sub \r\r
+\r\r
+\r\r
+Sub ToggleHandCPP() \r\r
+'DESCRIPTION: Opens the .cpp or .h file for the current document. \r\r
+'Toggles between the .cpp & .h file \r\r
+ext = ActiveDocument.FullName \r\r
+If ext = "" Then \r\r
+msgbox ("Error, not a .cpp or .h file") \r\r
+exit sub \r\r
+End If \r\r
+DocName = UCase(ext) \r\r
+\r\r
+If Right(DocName,4) = ".CPP" Then \r\r
+fn = left(DocName, Len(DocName)-3) & "h" \r\r
+ElseIf Right(DocName,2) = ".H" Then \r\r
+fn = Left(DocName, Len(DocName)-1) & "cpp" \r\r
+Else \r\r
+msgbox ("Error, not a .cpp or a .h file") \r\r
+exit sub \r\r
+End If \r\r
+'msgbox (fn) \r\r
+on error resume next \r\r
+Documents.Open (fn) \r\r
+End Sub \r\r
+\r\r
+Sub ADDTestMethod() \r\r
+strHpt = ActiveDocument.FullName \r\r
+if right(strHpt,3) = "CPP" Or right (strHpt,3) = "cpp" Then \r\r
+ActiveDocument.Selection.SelectLine \r\r
+strText = ActiveDocument.Selection.Text \r\r
+if (Instr(strText, "::" ) = 0) Then \r\r
+MsgBox("Line not valid !!") \r\r
+Exit Sub \r\r
+End If \r\r
+else exit sub \r\r
+end if \r\r
+\r\r
+pos = Instr(strText, "::") \r\r
+strName = Right(strText, (Len(strText) - (pos+1))) \r\r
+pos = Instr(strName,"(") \r\r
+strName = Left(strName,pos-1) \r\r
+strClass = Left(strText,pos - 1) \r\r
+while (instr(strClass, " ") > 0) \r\r
+pos = instr(strClass, " ") \r\r
+strTyp = strTyp & Left(strClass, pos) \r\r
+strClass = Right(strClass, Len(strClass) - (pos) ) \r\r
+wend \r\r
+ToggleHandCPP \r\r
+\r\r
+ActiveDocument.Selection.SelectAll \r\r
+strHead = ActiveDocument.Selection.Text \r\r
+\r\r
+if (instr(strHead,strClass) = 0) Then \r\r
+MsgBox(" Can't find class " & strClass & " !!") \r\r
+ToggleHandCPP \r\r
+Exit Sub \r\r
+End If \r\r
+ActiveDocument.Selection.EndOfDocument \r\r
+lineBottom = ActiveDocument.Selection.CurrentLine \r\r
+\r\r
+ActiveDocument.Selection.StartOfDocument \r\r
+ActiveDocument.Selection.StartOfLine \r\r
+ActiveDocument.Selection.SelectLine \r\r
+strLine = ActiveDocument.Selection.Text \r\r
+while (instr(strLine, strName) = 0 And ActiveDocument.Selection.CurrentLine <> lineBottom) \r\r
+ActiveDocument.Selection.StartOfLine \r\r
+ActiveDocument.Selection.LineDown dsMove \r\r
+ActiveDocument.Selection.SelectLine \r\r
+strLine = ActiveDocument.Selection.Text \r\r
+Wend \r\r
+if (ActiveDocument.Selection.CurrentLine < lineBottom) Then \r\r
+if( instr(strLine, "CPPUNIT_TEST" ) <> 0 )Then \r\r
+ToggleHandCPP \r\r
+Exit Sub \r\r
+end if \r\r
+End If \r\r
+\r\r
+ActiveDocument.Selection.StartOfDocument \r\r
+ActiveDocument.Selection.StartOfLine \r\r
+ActiveDocument.Selection.SelectLine \r\r
+strLine = ActiveDocument.Selection.Text \r\r
+while (instr(strLine, " CPPUNIT_TEST_SUITE_END();" ) = 0 And ActiveDocument.Selection.CurrentLine <> lineBottom) \r\r
+ActiveDocument.Selection.StartOfLine \r\r
+ActiveDocument.Selection.LineDown dsMove \r\r
+ActiveDocument.Selection.SelectLine \r\r
+strLine = ActiveDocument.Selection.Text \r\r
+Wend \r\r
+if (ActiveDocument.Selection.CurrentLine < lineBottom) Then \r\r
+ActiveDocument.Selection.EndOfLine \r\r
+ActiveDocument.Selection.LineUp \r\r
+ActiveDocument.Selection.EndOfLine \r\r
+ActiveDocument.Selection.NewLine \r\r
+ActiveDocument.Selection = "CPPUNIT_TEST( "&strName&" );" \r\r
+else \r\r
+MsgBox("CPPUNIT_TEST_SUITE_END not found") \r\r
+end if \r\r
+ToggleHandCPP \r\r
+\r\r
+End Sub \r\r
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/contrib/msvc/CppUnit.WWTpl b/lib/cppunit-1.10.0/contrib/msvc/CppUnit.WWTpl
new file mode 100644 (file)
index 0000000..174a64b
--- /dev/null
@@ -0,0 +1,486 @@
+Baptiste Lepilleur's template file.\r
+(@)Copyright 2001, Baptiste Lepilleur <gaiacrtn@free.fr>.\r
+\r
+\r
+\r
+[-ExtractPath]\r
+!!Memo\r
+Extract the path from a full filename.\r
+path is the filename we need to extract the path from.\r
+returns: extracted path.\r
+Algo: we iterates the filename from the end until we found a character '\'.\r
+!!End\r
+\r
+!!Params \r
+path @@(ProjectPath)@@\r
+!!End\r
+\r
+!!Code\r
+Input path: "@@path@@"\r
+!!Set index @@(Strlen @@path@@)@@\r
+!!//\r
+!!Set finalpath\r
+!!Label LoopExtractPath\r
+!!Sub index 1\r
+!!If @@index@@ < 0\r
+!!Goto EndExtractPath\r
+!!Endif\r
+!!//\r
+!!Set lastchar @@(StrSub @@path@@ @@index@@ 1)@@\r
+!!If @@lastchar@@ != "\"\r
+!!Goto LoopExtractPath\r
+!!Endif\r
+!!//\r
+!!Add index 1\r
+!!Set finalpath @@(StrSub @@path@@ 0 @@index@@)@@\r
+!!//\r
+!!Label EndExtractPath\r
+!!Return @@finalpath@@\r
+!!End\r
+\r
+\r
+\r
+---------------------------------------------------------------------------------\r
+---------------------------------------------------------------------------------\r
+---------------------------------------------------------------------------------\r
+---------------------------------------------------------------------------------\r
+[+01 Create Class in file]\r
+!!Memo\r
+Creates a new class in new files (.h/.cpp) and adds them to the project.\r
+!!End\r
+\r
+!!Params\r
+classname Ttr\r
+parentclassname =\r
+classdesc This class represents\r
+objectkind Reference Object\r
+hasserialize 0\r
+isrefobj 0\r
+inlinectordtor 0\r
+createfile 1\r
+isunittest 0\r
+!!End\r
+\r
+!!Dialog\r
+<html><body>\r
+Class name: <input type=text id=classname size=40><br>\r
+Brief description: <input type=text id=classdesc size=68><br>\r
+Object Kind: \r
+  <select name="Object Kind" id=objectkind>\r
+      <option>Default Value Object</option>\r
+      <option>Explicit Value Object</option>\r
+      <option>Reference Object</option>\r
+  </select><br>\r
+\r
+Parent class name: <input type=text id=parentclassname size=40><br>\r
+\r
+<input type=checkbox id=createfile>\r
+   Create a new file ? (otherwise Insert in current file).<br>\r
+<br>\r
+<input type=checkbox id=hasserialize>\r
+   Has: virtual void Serialize( CArchive &ar )<br>\r
+<input type=checkbox id=isrefobj>\r
+   Is a reference counted object (inherit ERefObj)<br>\r
+<input type=checkbox id=inlinectordtor>\r
+   Inline ctor/dtor, copy ctor/operator.<br>\r
+<input type=checkbox id=isunittest>\r
+   Is a CppUnit unit test.<br>\r
+\r
+<!--Base filename: <input type=text id=classbasepath size=64><br> -->\r
+\r
+\r
+<!--<p>Filename: <input type=file id=classhfn accept="*.h" size=40></p> -->\r
+<!--<p>Filename: <input type=file id=classcppfn accept="*.h" size=40></p> -->\r
+</body></html>\r
+!!End\r
+\r
+!!Code\r
+!!// Set variable that indicates the kind of object we are working on.\r
+!!Set defvalobject 0\r
+!!If @@objectkind@@ == "Default Value Object"\r
+!!Set defvalobject 1\r
+!!Endif\r
+!!//\r
+!!Set valobject 0\r
+!!If @@objectkind@@ == "Explicit Value Object"\r
+!!Set valobject 1\r
+!!Endif\r
+!!//\r
+!!Set refobject 0\r
+!!If @@objectkind@@ == "Reference Object"\r
+!!Set refobject 1\r
+!!Endif\r
+!!//\r
+!!// Set class filename (relative to dsp)\r
+!!Set headerfn @@classname@@.h\r
+!!Set implfn @@classname@@.cpp\r
+!!Set headerdefine @@(String @@(Call -MakeHeaderDefined fn @@headerfn@@)@@:U)@@\r
+!!//\r
+!!// hasparentclass indicates if a parent class has been defined.\r
+!!Set hasparentclass 0\r
+!!If @@parentclassname@@ != =\r
+!!Set hasparentclass 1\r
+!!Else\r
+!!If @@isunittest@@\r
+!!Set parentclassname CppUnit::TestFixture\r
+!!Set hasparentclass 1\r
+!!Endif\r
+!!Endif\r
+!!//\r
+!!// hasparent is set to 1 if the class has some parent (ERefObj or parentclass).\r
+!!Set hasparent @@hasparentclass@@\r
+!!If @@isrefobj@@\r
+!!Set hasparent 1\r
+!!Endif\r
+!!//\r
+!!//\r
+!!// All variables are set, we can now generates the class.\r
+!!//\r
+!!//\r
+!!//\r
+!!//\r
+!!// ----------------------------------------------------------------------------\r
+!!// ------------------------------ header file ---------------------------------\r
+!!// ----------------------------------------------------------------------------\r
+!!//\r
+!!//\r
+!!//\r
+!!If @@createfile@@\r
+!!FileNew @@headerfn@@ dsp\r
+!!Set headerpath @@(FilePath)@@\r
+// //////////////////////////////////////////////////////////////////////////\r
+// Header file @@headerfn@@ for class @@classname@@\r
+// (c)Copyright 2000, Baptiste Lepilleur.\r
+// Created: @@(Date "yyyy/MM/dd")@@\r
+// //////////////////////////////////////////////////////////////////////////\r
+#ifndef @@headerdefine@@\r
+#define @@headerdefine@@\r
+!!Else\r
+// //////////////////////////////////////////////////////////////////////////\r
+// //////////////////////////////////////////////////////////////////////////\r
+// Definition of class @@classname@@\r
+// //////////////////////////////////////////////////////////////////////////\r
+// //////////////////////////////////////////////////////////////////////////\r
+!!Endif\r
+!!If @@hasparentclass@@\r
+\r
+!!If @@isunittest@@\r
+#include <cppunit/extensions/HelperMacros.h>\r
+!!Else\r
+#include "@@parentclassname@@.h"\r
+!!Endif\r
+!!Endif\r
+\r
+\r
+!!If @@isrefobj@@\r
+/*! Declare @@classname@@Ref as a reference pointer on @@classname@@.\r
+ */\r
+EDECL_REF( @@classname@@ );\r
+\r
+\r
+\r
+!!Endif\r
+/*! \class @@classname@@\r
+ * \brief @@classdesc@@\r
+ */\r
+class @@classname@@@@\\r
+!!// Write inherited class list (parent class first, then ERefObj if inherited).\r
+!!If @@hasparent@@\r
+ : @@\\r
+!!// xpos contains the indentation level for inheritance declarations...\r
+!!GetPos xpos ypos\r
+!!Sub xpos 1\r
+public @@\\r
+!!Else\r
+\r
+!!Endif\r
+!!If @@hasparentclass@@\r
+@@parentclassname@@@@\\r
+!!If @@isrefobj@@\r
+,\r
+@@(Call -MakeFiller filler " " count @@xpos@@)@@@@\\r
+public @@\\r
+!!Else\r
+\r
+!!Endif\r
+!!Endif\r
+!!If @@isrefobj@@\r
+ERefObj\r
+!!Endif\r
+{\r
+!!//\r
+!!//\r
+!!// ------------ Done with inheritance, declare the class body... ----------\r
+!!//\r
+!!//\r
+!!If @@isunittest@@\r
+  CPPUNIT_TEST_SUITE( @@classname@@ );\r
+  CPPUNIT_TEST( putTestMethodNameHere );\r
+  CPPUNIT_TEST_SUITE_END();\r
+\r
+!!Endif\r
+public:\r
+!!If !@@defvalobject@@\r
+  /*! Constructs a @@classname@@ object.\r
+   */\r
+  @@classname@@();\r
+\r
+!!Endif\r
+!!If @@valobject@@\r
+  /*! Copy constructor.\r
+   * @param copy Object to copy.\r
+   */\r
+  @@classname@@( const @@classname@@ &copy );\r
+\r
+!!Endif\r
+  /// Destructor.\r
+  virtual ~@@classname@@();\r
+!!If @@valobject@@\r
+\r
+  /*! Copy operator.\r
+   * @param copy Object to copy.\r
+   * @return Reference on this object.\r
+   */\r
+  @@classname@@ &operator =( const @@classname@@ &copy );\r
+!!Endif\r
+!!If @@isunittest@@\r
+\r
+  void setUp();\r
+  void tearDown();\r
+!!Endif\r
+!!// Private for methods\r
+!!If @@refobject@@\r
+\r
+private:\r
+  /// Prevents the use of the copy constructor.\r
+  @@classname@@( const @@classname@@ &copy );\r
+\r
+  /// Prevents the use of the copy operator.\r
+  void operator =( const @@classname@@ &copy );\r
+!!Endif\r
+!!// Private for member datas\r
+\r
+private:\r
+};\r
+\r
+\r
+\r
+!!If @@createfile@@\r
+// Inlines methods for @@classname@@:@@\\r
+!!GetPos xpos ypos\r
+!!Sub xpos 4\r
+\r
+// @@(Call -MakeFiller filler - count @@xpos@@)@@\r
+!!Endif  //@@createfile@@\r
+!!If @@inlinectordtor@@\r
+!!If !@@defvalobject@@\r
+\r
+\r
+inline\r
+@@classname@@::@@classname@@()@@\\r
+!!If @@hasparentclass@@\r
+ : \r
+    @@parentclassname@@()\r
+!!Else\r
+\r
+!!Endif\r
+{\r
+}\r
+!!Endif  //!@@defvalobject@@\r
+!!If @@valobject@@\r
+\r
+\r
+inline\r
+@@classname@@::@@classname@@( const @@classname@@ &copy )@@\\r
+!!If @@hasparentclass@@\r
+ : \r
+    @@parentclassname@@( copy )\r
+!!Else\r
+\r
+!!Endif\r
+!!Endif  //@@valobject@@\r
+\r
+\r
+inline\r
+@@classname@@::~@@classname@@()\r
+{\r
+}\r
+!!If @@valobject@@\r
+\r
+\r
+inline @@classname@@ &\r
+@@classname@@::operator =( const @@classname@@ &copy )\r
+{\r
+\r
+  return *this;\r
+}\r
+!!Endif  //@@valobject@@\r
+!!Endif  //@@inlinectordtor@@\r
+\r
+\r
+!!If @@createfile@@\r
+\r
+#endif  // @@headerdefine@@\r
+!!FileSave\r
+!!ProjectFileAdd\r
+!!Endif\r
+!!//\r
+!!//\r
+!!//\r
+!!// ----------------------------------------------------------------------------\r
+!!// -------------------------- Implementation file -----------------------------\r
+!!// ----------------------------------------------------------------------------\r
+!!//\r
+!!//\r
+!!//\r
+!!If @@createfile@@\r
+!!FileNew @@implfn@@ dsp\r
+// //////////////////////////////////////////////////////////////////////////\r
+// Implementation file @@implfn@@ for class @@classname@@\r
+// (c)Copyright 2000, Baptiste Lepilleur.\r
+// Created: @@(Date "yyyy/MM/dd")@@\r
+// //////////////////////////////////////////////////////////////////////////\r
+\r
+#include "StdAfx.h"\r
+#include "@@headerfn@@"\r
+!!Else\r
+\r
+\r
+// //////////////////////////////////////////////////////////////////////////\r
+// Implementation of class @@classname@@\r
+// //////////////////////////////////////////////////////////////////////////\r
+!!Endif\r
+!!If @@isunittest@@\r
+\r
+CPPUNIT_TEST_SUITE_REGISTRATION( @@classname@@ );\r
+!!Endif\r
+!!If !@@inlinectordtor@@\r
+!!If !@@defvalobject@@\r
+\r
+\r
+@@classname@@::@@classname@@()@@\\r
+!!If @@hasparentclass@@\r
+ : \r
+    @@parentclassname@@()\r
+!!Else\r
+\r
+!!Endif\r
+{\r
+}\r
+!!Endif\r
+!!If @@valobject@@\r
+\r
+\r
+@@classname@@::@@classname@@( const @@classname@@ &copy )@@\\r
+!!If @@hasparentclass@@\r
+ : \r
+    @@parentclassname@@( copy )\r
+!!Else\r
+\r
+!!Endif\r
+{\r
+}\r
+!!Endif\r
+\r
+\r
+@@classname@@::~@@classname@@()\r
+{\r
+}\r
+!!If @@valobject@@\r
+\r
+\r
+@@classname@@ &\r
+@@classname@@::operator =( const @@classname@@ &copy )\r
+{\r
+\r
+  return *this;\r
+}\r
+!!Endif\r
+!!Endif\r
+!!If @@isunittest@@\r
+\r
+\r
+void \r
+@@classname@@::setUp()\r
+{\r
+}\r
+\r
+\r
+void \r
+@@classname@@::tearDown()\r
+{\r
+}\r
+!!Endif\r
+\r
+!!If @@createfile@@\r
+!!FileSave\r
+!!ProjectFileAdd\r
+!!//ExecuteCommand FileOpen "@@headerpath@@"\r
+!!Endif\r
+!!End\r
+\r
+---------------------------------------------------------------------------------\r
+---------------------------------------------------------------------------------\r
+[-Dummy]\r
+!!Code\r
+!!End\r
+\r
+---------------------------------------------------------------------------------\r
+------------------------   [-MakeHeaderDefined]   -------------------------------\r
+---------------------------------------------------------------------------------\r
+[-MakeHeaderDefined]\r
+!!Memo\r
+This template replace all occurences of '.' in the specified filename "fn" by '_'.\r
+This is typically used to make the #ifndef at the beginning of header files.\r
+Parameters: "fn" filename in which each occurence of '.' is replaced by '_'.\r
+Returns: Transformed filename.\r
+!!End\r
+\r
+!!Params\r
+fn TestDoIt\r
+!!End\r
+\r
+!!Code\r
+!!Set result @@fn@@\r
+!!Label LoopMakeHeaderDefined\r
+!!Set fn @@result@@\r
+!!// Check if there is any occurence left of '.'\r
+!!Set index @@(StrFind @@fn@@ ".")@@\r
+!!If @@index@@ < 0\r
+!!Goto  EndMakeHeaderDefined\r
+!!Endif\r
+!!// Replace occurences of '.' in fb by '_' and set to result.\r
+!!Set result @@(StrSub @@fn@@ 0 @@index@@ )@@_\r
+!!Add index 1\r
+!!Set result @@result@@@@(StrSub @@fn@@ @@index@@)@@\r
+!!Goto LoopMakeHeaderDefined\r
+!!Label EndMakeHeaderDefined\r
+!!Return @@result@@\r
+!!End\r
+\r
+---------------------------------------------------------------------------------\r
+----------------------------   [-MakeFiller]   ----------------------------------\r
+---------------------------------------------------------------------------------\r
+[-MakeFiller]\r
+!!Memo\r
+Make a string that contains "count" occurrence of "filler".\r
+Parameters: "filler" String that is repeated.\r
+            "count" Number of times the "filler" is repeated.\r
+Returns: A string that contains "count" times the string "filler".\r
+!!End\r
+\r
+!!Params\r
+filler -\r
+count 10\r
+!!End\r
+\r
+!!Code\r
+!!Set result\r
+!!Label LoopMakerFiller\r
+!!If @@count@@ > 0\r
+!!Set result @@result@@@@filler@@\r
+!!Sub count 1\r
+!!Goto LoopMakerFiller\r
+!!Endif\r
+!!Return @@result@@\r
+!!End
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/contrib/msvc/readme.txt b/lib/cppunit-1.10.0/contrib/msvc/readme.txt
new file mode 100644 (file)
index 0000000..b2ac1b4
--- /dev/null
@@ -0,0 +1,10 @@
+What's in those files:\r
+\r
+       * CppUnit.WWTpl: a template Workspace Whiz! which create a new class \r
+and add the new files to the project. You can specify that the class is a \r
+CppUnit testcase and all the macro will be defined to register the test case\r
+and declare the test suite. Workspace Whiz! is an add-ins for VC++. It can\r
+be found at: http://www.workspacewhiz.com/.\r
+\r
+       * AddingUnitTestMethod.dsm: a set of VC++ macro to add unit test\r
+using helper macros.
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/contrib/xml-xsl/report.xsl b/lib/cppunit-1.10.0/contrib/xml-xsl/report.xsl
new file mode 100644 (file)
index 0000000..a0e61b4
--- /dev/null
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding='shift_jis' standalone='yes' ?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" version="1.0" xml:lang="ja">
+
+<xsl:template match="/">
+<HTML>
+<HEAD>
+<TITLE>Test Report</TITLE>
+<STYLE>
+TABLE                          { color:#222222; font-size:10pt; font-family:'\82l\82\83S\83V\83b\83N' 'sanserif'; }
+TH                                     { font-weight:normal; color:#FFFFFF; background-color:#888888; }
+TR.check                       { background-color:#EEEEEE }
+TD.check                       { background-color:#EEEEEE }
+H1                                     { color:#111111; font-family:'Times New Roman' '\82l\82\82o\96¾\92©' 'serif'; border-style:solid; border-width:0px; border-bottom-width:3px; border-bottom-color:#444488; }
+H2                                     { color:#222222; font-family:'Times New Roman' '\82l\82\82o\96¾\92©' 'serif'; border-style:solid; border-width:0px; border-bottom-width:2px; border-bottom-color:#444488; }
+H3                                     { color:#333333; font-family:'Times New Roman' '\82l\82\82o\96¾\92©' 'serif'; border-style:solid; border-width:0px; border-bottom-width:1px; border-bottom-color:#444488; margin-bottom:8px; }
+H4                                     { color:#444444; font-family:'Times New Roman' '\82l\82\82o\96¾\92©' 'serif'; border-style:solid; border-width:0px; border-bottom-width:1px; border-bottom-color:#CCCCDD; margin-bottom:8px; }
+H5                                     { color:#555555; font-family:'Times New Roman' '\82l\82\82o\96¾\92©' 'serif'; border-style:solid; border-width:0px; border-bottom-width:1px; border-bottom-color:#EEEEFF; margin-bottom:8px; }
+H6                                     { color:#666666; font-family:'Times New Roman' '\82l\82\82o\96¾\92©' 'serif'; border-style:solid; border-width:0px; border-bottom-width:1px; border-bottom-color:#F8F8FF; margin-bottom:8px; }
+
+SPAN.good                      { color:#006666; font-weight:bold; }
+SPAN.critical          { color:#880000; font-weight:bold; }
+</STYLE>
+</HEAD>
+<BODY>
+       <H1>Test Report</H1>
+       <xsl:apply-templates select="/TestRun/*"/>
+</BODY>
+</HTML>
+</xsl:template>
+
+<xsl:template match="FailedTests">
+    <H2>FailedTests</H2>
+    <xsl:choose>
+       <xsl:when test="FailedTest">
+               <TABLE>
+                       <TR>
+                               <TH>id</TH>
+                               <TH>Name</TH>
+                               <TH>FailureType</TH>
+                               <TH>Location</TH>
+                               <TH>Message</TH>
+                       </TR>
+                       <xsl:apply-templates select="FailedTest"/>
+               </TABLE>
+       </xsl:when>
+       <xsl:otherwise>
+           <SPAN class="good">No failed test.</SPAN>
+       </xsl:otherwise>
+    </xsl:choose>
+</xsl:template>
+
+<xsl:template match="FailedTest">
+       <TR>
+       <TD align="right" valign='top'><xsl:value-of select="@id"/></TD>
+       <TD valign='top'><xsl:apply-templates select="Name"/></TD>
+       <TD valign='top'><xsl:apply-templates select="FailureType"/></TD>
+       <TD valign='top'><xsl:apply-templates select="Location"/></TD>
+       <TD valign='top'><pre><xsl:apply-templates select="Message"/></pre></TD>
+       </TR>
+</xsl:template>
+<xsl:template match="Name|FailureType|Message"><xsl:value-of select="."/></xsl:template>
+<xsl:template match="Location">
+       <xsl:if test=".">
+               line #<xsl:value-of select="Line"/> in <xsl:value-of select="File"/>
+       </xsl:if>
+</xsl:template>
+  
+<xsl:template match="SucessfulTests">
+    <H2>SucessfulTests</H2>
+    <xsl:choose>
+       <xsl:when test="Test">
+       <TABLE>
+               <TR>
+                       <TH>id</TH>
+                       <TH>Name</TH>
+               </TR>
+               <xsl:apply-templates select="Test"/>
+       </TABLE>
+       </xsl:when>
+       <xsl:otherwise>
+           <SPAN class="critical">No sucessful test.</SPAN>
+       </xsl:otherwise>
+    </xsl:choose>
+</xsl:template>
+
+<xsl:template match="Test">
+       <TR>
+               <TD align="right"><xsl:value-of select="@id"/></TD>
+               <TD><xsl:apply-templates select="Name"/></TD>
+       </TR>
+</xsl:template>
+
+<xsl:template match="Statistics">
+    <H2>Statistics</H2>
+       <TABLE>
+               <TR>
+                       <TH>Status</TH>
+                       <TH>Number</TH>
+               </TR>
+
+               <TR>
+                       <TD>Tests</TD>
+                       <TD align="right"><xsl:value-of select="Tests"/></TD>
+               </TR>
+
+               <TR>
+                       <TD>FailuresTotal</TD>
+                       <TD align="right"><xsl:value-of select="FailuresTotal"/></TD>
+               </TR>
+
+               <TR>
+                       <TD>Errors</TD>
+                       <TD align="right"><xsl:value-of select="Errors"/></TD>
+               </TR>
+
+               <TR>
+                       <TD>Failures</TD>
+                       <TD align="right"><xsl:value-of select="Failures"/></TD>
+               </TR>
+               
+       </TABLE>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/lib/cppunit-1.10.0/contrib/xml-xsl/tests.xml b/lib/cppunit-1.10.0/contrib/xml-xsl/tests.xml
new file mode 100644 (file)
index 0000000..6fef14e
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding='ISO-8859-1' standalone='yes' ?>
+<?xml-stylesheet type="text/xsl" href="report.xsl"?>
+<TestRun>
+  <FailedTests>
+    <FailedTest id="1">
+      <Name>ExampleTestCase.example</Name>
+      <FailureType>Assertion</FailureType>
+      <Location>
+        <File>exampletestcase.cpp</File>
+        <Line>7</Line>
+      </Location>
+      <Message>- Expected : { 0; 7; 8; 9; 10; 11; 1; 2; 3; 4; 5; 6; 12; 13; 14; 15; 16; 17; 18; 19 }
+- Actual   : { 0; 1; 2; 3; 4; 5; 7; 8; 9; 10; 11; 6; 12; 13; 14; 15; 16; 17; 18; 19 }
+- Difference at index 1
+->Expected : { 7; 8; 9; 10; 11; 1; 2; 3; 4; 5; 6; 12; 13; 14; 15; 16; 17; 18; 19 }
+->Actual   : { 1; 2; 3; 4; 5; 7; 8; 9; 10; 11; 6; 12; 13; 14; 15; 16; 17; 18; 19 }</Message>
+    </FailedTest>
+    <FailedTest id="2">
+      <Name>ExampleTestCase.anotherExample</Name>
+      <FailureType>Assertion</FailureType>
+      <Location>
+        <File>exampletestcase.cpp</File>
+        <Line>15</Line>
+      </Location>
+      <Message>1 == 2</Message>
+    </FailedTest>
+    <FailedTest id="3">
+      <Name>ExampleTestCase.testAdd</Name>
+      <FailureType>Assertion</FailureType>
+      <Location>
+        <File>exampletestcase.cpp</File>
+        <Line>27</Line>
+      </Location>
+      <Message>result == 6.0</Message>
+    </FailedTest>
+    <FailedTest id="4">
+      <Name>ExampleTestCase.testDivideByZero</Name>
+      <FailureType>Error</FailureType>
+      <Message>caught unknown exception</Message>
+    </FailedTest>
+    <FailedTest id="5">
+      <Name>ExampleTestCase.testEquals</Name>
+      <FailureType>Assertion</FailureType>
+      <Location>
+        <File>exampletestcase.cpp</File>
+        <Line>48</Line>
+      </Location>
+      <Message>Expected: 12, but was: 13.</Message>
+    </FailedTest>
+  </FailedTests>
+  <SuccessfulTests></SuccessfulTests>
+  <Statistics>
+    <Tests>5</Tests>
+    <FailuresTotal>5</FailuresTotal>
+    <Errors>1</Errors>
+    <Failures>4</Failures>
+  </Statistics>
+</TestRun>
diff --git a/lib/cppunit-1.10.0/cppunit-config.1 b/lib/cppunit-1.10.0/cppunit-config.1
new file mode 100644 (file)
index 0000000..baa8b58
--- /dev/null
@@ -0,0 +1,67 @@
+.TH cppunit 1 "September 2001"
+.SH NAME
+cppunit-config - script to get information about the installed version of cppunit
+.SH SYNOPSIS
+.B cppunit-config
+[\-\-prefix\fI[=DIR]\fP] [\-\-exec\-prefix\fI[=DIR]\fP] [\-\-version] [\-\-libs] [\-\-cflags]
+.SH DESCRIPTION
+.PP
+\fIcppunit-config\fP is a tool that is used to configure to determine
+the compiler and linker flags that should be used to compile and link
+programs that use \fIcppunit\fP. It is also used internally to the .m4
+macros for GNU autoconf that are included with \fIcppunit\fP.
+.
+.SH OPTIONS
+.l
+\fIcppunit-config\fP accepts the following options:
+.TP 8
+.B  \-\-version
+Print the currently installed version of \fIcppunit\fP on the standard
+output.
+.TP 8
+.B  \-\-libs
+Print the linker flags that are necessary to link a \fIcppunit\fP
+program.
+.TP 8
+.B  \-\-cflags
+Print the compiler flags that are necessary to compile a \fIcppunit\fP
+program.
+.TP 8
+.B  \-\-prefix
+Print the prefix with which \fIcppunit\fP was compiled.
+.TP 8
+.B  \-\-prefix=PREFIX
+If specified, use PREFIX instead of the installation prefix that
+\fIcppunit\fP was built with when computing the output for the
+\-\-cflags and \-\-libs options. This option is also used for the exec
+prefix if \-\-exec\-prefix was not specified. This option must be
+specified before any \-\-libs or \-\-cflags options.
+.TP 8
+.B  \-\-exec\-prefix
+Print the exec\-prefix with which \fIcppunit\fP was compiled.
+.TP 8
+.B  \-\-exec\-prefix=PREFIX
+If specified, use PREFIX instead of the installation exec prefix that
+\fIcppunit\fP was built with when computing the output for the
+\-\-cflags and \-\-libs options.  This option must be specified before
+any \-\-libs or \-\-cflags options.
+.SH COPYRIGHT
+cppunit Copyright \(co 1996-2000 by Michael Feathers <mfeathers@objectmentor.com>  
+.PP
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or (at
+your option) any later version.
+.PP
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+.PP
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+.SH AUTHOR
+This manpage is an almost word-for-word copy of the gtk-config
+manpage, written by Owen Taylor.  It was modified by E. Sommerlade
+<eric@sommerla.de>.
diff --git a/lib/cppunit-1.10.0/cppunit-config.in b/lib/cppunit-1.10.0/cppunit-config.in
new file mode 100644 (file)
index 0000000..51e8b58
--- /dev/null
@@ -0,0 +1,98 @@
+#!/bin/sh
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+exec_prefix_set=no
+includedir=@includedir@
+
+usage()
+{
+    cat <<EOF
+Usage: cppunit-config [OPTION] ...
+
+Generic options
+  --version    output CppUnit version information.
+  --help       display this help and exit.
+
+Compilation support options
+  --cflags     print pre-processor and compiler flags
+  --libs       print library linking information
+
+Install directories CppUnit was configured to
+  --prefix[=DIR]      
+  --exec-prefix[=DIR]
+
+EOF
+       exit $1
+}
+
+if test $# -eq 0; then
+       usage 1 1>&2
+fi
+
+while test $# -gt 0; do
+  case "$1" in
+  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  case $1 in
+    --prefix=*)
+      prefix=$optarg
+      if test $exec_prefix_set = no ; then
+        exec_prefix=$optarg
+      fi
+      ;;
+    --prefix)
+      echo_prefix=yes
+      ;;
+    --exec-prefix=*)
+      exec_prefix=$optarg
+      exec_prefix_set=yes
+      ;;
+    --exec-prefix)
+      echo_exec_prefix=yes
+      ;;
+    --version)
+      echo @CPPUNIT_VERSION@
+      ;;
+    --help)
+      usage 0
+      ;;
+    --cflags)
+      echo_cflags=yes
+      ;;
+    --libs)
+      echo_libs=yes
+      ;;
+    *)
+      usage 1 1>&2
+      ;;
+  esac
+  shift
+done
+
+if test "$echo_prefix" = "yes"; then
+       echo $prefix
+fi
+
+if test "$echo_exec_prefix" = "yes"; then
+       echo $exec_prefix
+fi
+
+if test "$echo_cflags" = "yes"; then
+      if test "$includedir" != "/usr/include" ; then
+            echo -I$includedir
+      fi
+fi
+
+if test "$echo_libs" = "yes"; then
+      if test @libdir@ != /usr/lib ; then
+            my_linker_flags="-L@libdir@"
+      fi
+      echo ${my_linker_flags} -lcppunit @LIBADD_DL@
+fi      
+
+
+
+
diff --git a/lib/cppunit-1.10.0/cppunit.m4 b/lib/cppunit-1.10.0/cppunit.m4
new file mode 100644 (file)
index 0000000..96b3db7
--- /dev/null
@@ -0,0 +1,80 @@
+dnl
+dnl AM_PATH_CPPUNIT(MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl
+AC_DEFUN(AM_PATH_CPPUNIT,
+[
+
+AC_ARG_WITH(cppunit-prefix,[  --with-cppunit-prefix=PFX   Prefix where CppUnit is installed (optional)],
+            cppunit_config_prefix="$withval", cppunit_config_prefix="")
+AC_ARG_WITH(cppunit-exec-prefix,[  --with-cppunit-exec-prefix=PFX  Exec prefix where CppUnit is installed (optional)],
+            cppunit_config_exec_prefix="$withval", cppunit_config_exec_prefix="")
+
+  if test x$cppunit_config_exec_prefix != x ; then
+     cppunit_config_args="$cppunit_config_args --exec-prefix=$cppunit_config_exec_prefix"
+     if test x${CPPUNIT_CONFIG+set} != xset ; then
+        CPPUNIT_CONFIG=$cppunit_config_exec_prefix/bin/cppunit-config
+     fi
+  fi
+  if test x$cppunit_config_prefix != x ; then
+     cppunit_config_args="$cppunit_config_args --prefix=$cppunit_config_prefix"
+     if test x${CPPUNIT_CONFIG+set} != xset ; then
+        CPPUNIT_CONFIG=$cppunit_config_prefix/bin/cppunit-config
+     fi
+  fi
+
+  AC_PATH_PROG(CPPUNIT_CONFIG, cppunit-config, no)
+  cppunit_version_min=$1
+
+  AC_MSG_CHECKING(for Cppunit - version >= $cppunit_version_min)
+  no_cppunit=""
+  if test "$CPPUNIT_CONFIG" = "no" ; then
+    no_cppunit=yes
+  else
+    CPPUNIT_CFLAGS=`$CPPUNIT_CONFIG --cflags`
+    CPPUNIT_LIBS=`$CPPUNIT_CONFIG --libs`
+    cppunit_version=`$CPPUNIT_CONFIG --version`
+
+    cppunit_major_version=`echo $cppunit_version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    cppunit_minor_version=`echo $cppunit_version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    cppunit_micro_version=`echo $cppunit_version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+
+    cppunit_major_min=`echo $cppunit_version_min | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    cppunit_minor_min=`echo $cppunit_version_min | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    cppunit_micro_min=`echo $cppunit_version_min | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+
+    cppunit_version_proper=`expr \
+        $cppunit_major_version \> $cppunit_major_min \| \
+        $cppunit_major_version \= $cppunit_major_min \& \
+        $cppunit_minor_version \> $cppunit_minor_min \| \
+        $cppunit_major_version \= $cppunit_major_min \& \
+        $cppunit_minor_version \= $cppunit_minor_min \& \
+        $cppunit_micro_version \>= $cppunit_micro_min `
+
+    if test "$cppunit_version_proper" = "1" ; then
+      AC_MSG_RESULT([$cppunit_major_version.$cppunit_minor_version.$cppunit_micro_version])
+    else
+      AC_MSG_RESULT(no)
+      no_cppunit=yes
+    fi
+  fi
+
+  if test "x$no_cppunit" = x ; then
+     ifelse([$2], , :, [$2])     
+  else
+     CPPUNIT_CFLAGS=""
+     CPPUNIT_LIBS=""
+     ifelse([$3], , :, [$3])
+  fi
+
+  AC_SUBST(CPPUNIT_CFLAGS)
+  AC_SUBST(CPPUNIT_LIBS)
+])
+
+
+
diff --git a/lib/cppunit-1.10.0/cppunit.spec b/lib/cppunit-1.10.0/cppunit.spec
new file mode 100644 (file)
index 0000000..ec00a4b
--- /dev/null
@@ -0,0 +1,64 @@
+%define  RELEASE 1
+%define  rel     %{?CUSTOM_RELEASE} %{!?CUSTOM_RELEASE:%RELEASE}
+
+%define lib_name cppunit
+
+Name: cppunit
+Version: 1.10.0
+Release: %rel
+
+Summary: C++ Port of JUnit Testing Framework
+Copyright: LGPL
+Group: Development/Libraries
+Vendor: The CppUnit Project 
+Packager: Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+Url: http://cppunit.sourceforge.net/
+
+Source: ftp://download.sourceforge.net/pub/sourceforge/cppunit/%name-%version.tar.gz
+
+Prefix: %_prefix
+BuildRoot: %_tmppath/%name-%version-root
+
+%description
+CppUnit is the C++ port of the famous JUnit framework for unit testing.
+Test output is in XML for automatic testing and GUI based for supervised tests.
+
+%package doc
+Summary: HTML formatted API documention for Log for C++
+Group: Development/Libraries
+Requires: %name = %version
+
+%description doc
+The %name-doc package contains HTML formatted API documention generated by
+the popular doxygen documentation generation tool.
+
+%prep
+rm -rf $RPM_BUILD_ROOT
+
+%setup
+CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix} --enable-doxygen 
+
+%build
+make
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+make prefix=$RPM_BUILD_ROOT%{prefix} install
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root,755)
+%attr(755,root,root) %prefix/lib/lib*.so.*
+%doc AUTHORS COPYING INSTALL NEWS README THANKS ChangeLog
+%attr(755,root,root) %prefix/bin/cppunit-config
+%prefix/include/*
+%prefix/man/*
+%prefix/share/*
+%attr(755,root,root) %prefix/lib/lib*.so
+%attr(644,root,root) %prefix/lib/*.*a
+
+%files doc
+%doc doc/html/*
diff --git a/lib/cppunit-1.10.0/cppunit.spec.in b/lib/cppunit-1.10.0/cppunit.spec.in
new file mode 100644 (file)
index 0000000..328704b
--- /dev/null
@@ -0,0 +1,64 @@
+%define  RELEASE 1
+%define  rel     %{?CUSTOM_RELEASE} %{!?CUSTOM_RELEASE:%RELEASE}
+
+%define lib_name cppunit
+
+Name: @PACKAGE@
+Version: @VERSION@
+Release: %rel
+
+Summary: C++ Port of JUnit Testing Framework
+Copyright: LGPL
+Group: Development/Libraries
+Vendor: The CppUnit Project 
+Packager: Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+Url: http://cppunit.sourceforge.net/
+
+Source: ftp://download.sourceforge.net/pub/sourceforge/cppunit/%name-%version.tar.gz
+
+Prefix: %_prefix
+BuildRoot: %_tmppath/%name-%version-root
+
+%description
+CppUnit is the C++ port of the famous JUnit framework for unit testing.
+Test output is in XML for automatic testing and GUI based for supervised tests.
+
+%package doc
+Summary: HTML formatted API documention for Log for C++
+Group: Development/Libraries
+Requires: %name = %version
+
+%description doc
+The %name-doc package contains HTML formatted API documention generated by
+the popular doxygen documentation generation tool.
+
+%prep
+rm -rf $RPM_BUILD_ROOT
+
+%setup
+CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix} --enable-doxygen 
+
+%build
+make
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+make prefix=$RPM_BUILD_ROOT%{prefix} install
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root,755)
+%attr(755,root,root) %prefix/lib/lib*.so.*
+%doc AUTHORS COPYING INSTALL NEWS README THANKS ChangeLog
+%attr(755,root,root) %prefix/bin/cppunit-config
+%prefix/include/*
+%prefix/man/*
+%prefix/share/*
+%attr(755,root,root) %prefix/lib/lib*.so
+%attr(644,root,root) %prefix/lib/*.*a
+
+%files doc
+%doc doc/html/*
diff --git a/lib/cppunit-1.10.0/doc/Doxyfile.in b/lib/cppunit-1.10.0/doc/Doxyfile.in
new file mode 100644 (file)
index 0000000..28f4624
--- /dev/null
@@ -0,0 +1,604 @@
+# Doxyfile 1.1.4
+
+# This file describes the settings to be used by doxygen for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# General configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
+# by quotes) that should identify the project. 
+
+PROJECT_NAME          = CppUnit
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
+# This could be handy for archiving the generated documentation or 
+# if some version control system is used.
+
+PROJECT_NUMBER        = "Version @VERSION@"
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
+# base path where the generated documentation will be put. 
+# If a relative path is entered, it will be relative to the location 
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY      = .
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
+# documentation generated by doxygen is written. Doxygen will use this 
+# information to generate all constant output in the proper language. 
+# The default language is English, other supported languages are: 
+# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, 
+# Spanish and Russian
+
+OUTPUT_LANGUAGE       = English
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it. 
+
+DISABLE_INDEX         = NO
+
+# If the EXTRACT_ALL tag is set to YES all classes and functions will be 
+# included in the documentation, even if no documentation was available. 
+
+EXTRACT_ALL           = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation. 
+
+EXTRACT_PRIVATE       = YES
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members inside documented classes or files. 
+
+HIDE_UNDOC_MEMBERS    = NO
+
+# If the HIDE_UNDOC_CLASSESS tag is set to YES, Doxygen will hide all 
+# undocumented classes. 
+
+HIDE_UNDOC_CLASSES    = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
+# include brief member descriptions after the members that are listed in 
+# the file and class documentation (similar to JavaDoc). 
+# Set to NO to disable this. 
+
+BRIEF_MEMBER_DESC     = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
+# the brief description of a member or function before the detailed description. 
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
+# brief descriptions will be completely suppressed. 
+
+REPEAT_BRIEF          = YES
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
+# Doxygen will generate a detailed section even if there is only a brief 
+# description. 
+
+ALWAYS_DETAILED_SEC   = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
+# path before files name in the file list and in the header files. If set 
+# to NO the shortest path that makes the file name unique will be used. 
+
+FULL_PATH_NAMES       = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
+# can be used to strip a user defined part of the path. Stripping is 
+# only done if one of the specified strings matches the left-hand part of 
+# the path. 
+
+STRIP_FROM_PATH       = 
+
+# The INTERNAL_DOCS tag determines if documentation 
+# that is typed after a \internal command is included. If the tag is set 
+# to NO (the default) then the documentation will be excluded. 
+# Set it to YES to include the internal documentation. 
+
+INTERNAL_DOCS         = NO
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a class diagram (in Html and LaTeX) for classes with base or 
+# super classes. Setting the tag to NO turns the diagrams off. 
+
+CLASS_DIAGRAMS        = YES
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+
+SOURCE_BROWSER        = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation. 
+
+INLINE_SOURCES        = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible. 
+
+STRIP_CODE_COMMENTS   = YES
+
+# If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen 
+# will only generate file names in lower case letters. If set to 
+# YES upper case letters are also allowed. This is useful if you have 
+# classes or files whose names only differ in case and if your file system 
+# supports case sensitive file names. 
+
+CASE_SENSE_NAMES      = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this. 
+
+VERBATIM_HEADERS      = YES
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
+# will put list of the files that are included by a file in the documentation 
+# of that file. 
+
+SHOW_INCLUDE_FILES    = YES
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the Javadoc-style will 
+# behave just like the Qt-style comments. 
+
+JAVADOC_AUTOBRIEF     = YES
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# reimplements. 
+
+INHERIT_DOCS          = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
+# is inserted in the documentation for inline members. 
+
+INLINE_INFO           = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
+# will sort the (detailed) documentation of file and class members 
+# alphabetically by member name. If set to NO the members will appear in 
+# declaration order. 
+
+SORT_MEMBER_DOCS      = YES
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments. 
+
+TAB_SIZE              = 8
+
+# The ENABLE_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif. 
+
+ENABLED_SECTIONS      = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used. 
+
+QUIET                 = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used. 
+
+WARNINGS              = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled. 
+
+WARN_IF_UNDOCUMENTED  = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. 
+
+WARN_FORMAT           = "$file:$line: $text"
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces. 
+
+INPUT                 = @top_srcdir@/include @top_srcdir@/src/cppunit @srcdir@/other_documentation.dox  @srcdir@/cookbook.dox @srcdir@/Money.dox
+
+# If the value of the INPUT tag contains directories, you can use the 
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included. 
+
+FILE_PATTERNS         = *.cpp *.h
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
+# should be searched for input files as well. Possible values are YES and NO. 
+# If left blank NO is used. 
+
+RECURSIVE             = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should 
+# excluded from the INPUT source files. This way you can easily exclude a 
+# subdirectory from a directory tree whose root is specified with the INPUT tag. 
+
+EXCLUDE               = 
+
+# If the value of the INPUT tag contains directories, you can use the 
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
+# certain files from those directories. 
+
+EXCLUDE_PATTERNS      = config-*.h
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or 
+# directories that contain example code fragments that are included (see 
+# the \include command). 
+
+EXAMPLE_PATH          = ../examples
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
+# and *.h) to filter out the source-files in the directories. If left 
+# blank all files are included. 
+
+EXAMPLE_PATTERNS      = *.cpp *.h
+
+# The IMAGE_PATH tag can be used to specify one or more files or 
+# directories that contain image that are included in the documentation (see 
+# the \image command). 
+
+IMAGE_PATH            = 
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
+# invoke to filter for each input file. Doxygen will invoke the filter program 
+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
+# input file. Doxygen will then use the output that the filter program writes 
+# to standard output. 
+
+INPUT_FILTER          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces. 
+
+ALPHABETICAL_INDEX    = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
+# in which this list will be split (can be a number in the range [1..20]) 
+
+COLS_IN_ALPHA_INDEX   = 5
+
+# In case all classes in a project start with a common prefix, all 
+# classes will be put under the same header in the alphabetical index. 
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
+# should be ignored while generating the index headers. 
+
+IGNORE_PREFIX         = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output. 
+
+GENERATE_HTML         = @enable_html_docs@
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path. 
+
+HTML_OUTPUT           = html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER           = @srcdir@/header.html
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER           = @srcdir@/footer.html
+
+# The HTML_STYLESHEET tag can be used to specify a user defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet 
+
+HTML_STYLESHEET       = 
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used. 
+
+HTML_ALIGN_MEMBERS    = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation. 
+
+GENERATE_HTMLHELP     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output. 
+
+GENERATE_LATEX        = @enable_latex_docs@
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path. 
+
+LATEX_OUTPUT          = latex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general. 
+
+COMPACT_LATEX         = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used. 
+
+PAPER_TYPE            = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output. 
+
+EXTRA_PACKAGES        = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing! 
+
+LATEX_HEADER          = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer. 
+
+PDF_HYPERLINKS        = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML. 
+
+LATEX_BATCHMODE       = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# For now this is experimental and is disabled by default. The RTF output 
+# is optimised for Word 97 and may not look too pretty with other readers 
+# or editors.
+
+GENERATE_RTF          = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path. 
+
+RTF_OUTPUT            = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general. 
+
+COMPACT_RTF           = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using a WORD or other. 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links. 
+
+RTF_HYPERLINKS        = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages 
+
+GENERATE_MAN          = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path. 
+
+MAN_OUTPUT            = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3) 
+
+MAN_EXTENSION         = .3
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files. 
+
+ENABLE_PREPROCESSING  = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. 
+
+MACRO_EXPANSION       = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found. 
+
+SEARCH_INCLUDES       = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor. 
+
+INCLUDE_PATH          = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. 
+
+PREDEFINED             = CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION \
+                         CPPUNIT_HAVE_NAMESPACES=1 \
+                         CPPUNIT_NS_BEGIN="namespace CppUnit {" \
+                         CPPUNIT_NS_END=} \
+                         CPPUNIT_NS=CppUnit
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED tag. 
+
+EXPAND_ONLY_PREDEF    = YES
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tagfiles. 
+
+TAGFILES              = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads. 
+
+GENERATE_TAGFILE      = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed. 
+
+ALLEXTERNALS          = NO
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl'). 
+
+PERL_PATH             = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default) 
+
+HAVE_DOT              = @enable_dot@
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH           = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes. 
+
+COLLABORATION_GRAPH   = YES
+
+# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to 
+# YES then doxygen will generate a graph for each documented file showing 
+# the direct and indirect include dependencies of the file with other 
+# documented files. 
+
+INCLUDE_GRAPH         = YES
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one. 
+
+GRAPHICAL_HIERARCHY   = YES
+
+# This tag can be used to specify the path where the dot tool can be found. 
+# If left blank, it is assumed the dot tool can be found on the path. 
+
+DOT_PATH              = 
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored. 
+
+SEARCHENGINE          = NO
+
+# The CGI_NAME tag should be the name of the CGI script that 
+# starts the search engine (doxysearch) with the correct parameters. 
+# A script with this name will be generated by doxygen. 
+
+CGI_NAME              = search.cgi
+
+# The CGI_URL tag should be the absolute URL to the directory where the 
+# cgi binaries are located. See the documentation of your http daemon for 
+# details. 
+
+CGI_URL               = 
+
+# The DOC_URL tag should be the absolute URL to the directory where the 
+# documentation is located. If left blank the absolute path to the 
+# documentation, with file:// prepended to it, will be used. 
+
+DOC_URL               = 
+
+# The DOC_ABSPATH tag should be the absolute path to the directory where the 
+# documentation is located. If left blank the directory on the local machine 
+# will be used. 
+
+DOC_ABSPATH           = 
+
+# The BIN_ABSPATH tag must point to the directory where the doxysearch binary 
+# is installed. 
+
+BIN_ABSPATH           = /usr/local/bin/
+
+# The EXT_DOC_PATHS tag can be used to specify one or more paths to 
+# documentation generated for other projects. This allows doxysearch to search 
+# the documentation for these projects as well. 
+
+EXT_DOC_PATHS         = 
diff --git a/lib/cppunit-1.10.0/doc/FAQ b/lib/cppunit-1.10.0/doc/FAQ
new file mode 100644 (file)
index 0000000..e43cdba
--- /dev/null
@@ -0,0 +1,31 @@
+Frequently Asked Questions:
+---------------------------
+
+1) Questions relating to CppUnit
+   ----------------------------
+
+1.1) Isn't there an easier way to write unit tests than using TestCaller ?
+
+   Yes, there is. Macros have been created to take care of the repetitive 
+work. Look up include/extensions/HelperMacros.h in CppUnit documentation. 
+Most of CppUnit test suite is also written that way since they remain 
+compatible as CppUnit evolve. They also use RTTI if available.
+
+
+2) Questions related to Microsoft Visual VC++
+   -----------------------------------------
+
+2.1) Why does the compiler report an error when linking with CppUnit library?
+
+   You most likely are not using the same C-RunTime library as CppUnit.
+   In Release configuration, CppUnit use "Mulithreaded DLL".
+   In Debug configurations, CppUnit use "Debug Multihreaded DLL".
+   Check that Projects/Settings.../C++/Code Generation is indeed using
+the correct library.
+   
+2.2) Why does CppUnit generate warning 4786:... when compiling ?
+
+   I really don't have a clue. All CppUnit's headers starts by either
+including Portability.h or another CppUnit's header. Portability.h includes
+config-msvc6.h which disable that specific warning. The warning is generated
+by TestFactoryRegistry::m_factories. A solution to this problem is welcome.
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/doc/Makefile.am b/lib/cppunit-1.10.0/doc/Makefile.am
new file mode 100644 (file)
index 0000000..13ec97f
--- /dev/null
@@ -0,0 +1,67 @@
+EXTRA_DIST = $(doxygen_input) $(static_pages)
+
+doxygen_input = cookbook.dox other_documentation.dox header.html footer.html Money.dox
+static_pages = FAQ
+
+
+# DOC is defined if installer requests doc generation.
+# For now, we only install HTML documentation.  We could install manpages
+# using the following
+#   man_MANS = man/man3/CppUnit.3
+#   man/man3/CppUnit.3: dox
+# and an extra copy or two in the install-data-hook.  
+# However, the manpages do not appear to be tremendously useful, so
+# let's not bother.
+
+if DOC
+
+htmldir = $(pkgdatadir)/html
+html_DATA = $(static_pages) html/index.html
+
+install-data-hook:
+       cp -dpR html/* $(DESTDIR)$(htmldir)
+
+# Automake's "distcheck" is sensitive to having files left over
+# after "make uninstall", so we have to clean up the install hook.
+uninstall-local:
+       rm -rf $(DESTDIR)$(htmldir)
+
+dox: html/index.html
+
+else
+
+# We repeat the three targets in both the "if" and "else" clauses
+# of the conditional, because the generated makefile will contain
+# references to the targets (target "install" depends on target
+# "install-datahook", for example), and some make programs get upset
+# if no target exists.
+
+install-data-hook:
+uninstall-local:
+dox:
+
+endif
+
+
+all-local: dox
+
+
+html/index.html: Doxyfile $(doxygen_input)
+       "@DOXYGEN@"
+
+
+# Make tarfile to distribute the HTML documentation.
+doc-dist: dox
+       cp $(static_pages) html
+       tar -czf $(PACKAGE)-docs-$(VERSION).tar.gz -C html .
+
+pdf: @PACKAGE@.pdf
+@PACKAGE@.pdf:
+       $(MAKE) -C ./latex pdf
+       ln -s ./latex/refman.ps  @PACKAGE@.ps
+       ln -s ./latex/refman.pdf @PACKAGE@.pdf
+
+
+clean-local:
+       $(RM) -r latex
+       $(RM) -r html man @PACKAGE@.ps @PACKAGE@.pdf
diff --git a/lib/cppunit-1.10.0/doc/Makefile.in b/lib/cppunit-1.10.0/doc/Makefile.in
new file mode 100644 (file)
index 0000000..81ecca8
--- /dev/null
@@ -0,0 +1,380 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+EXTRA_DIST = $(doxygen_input) $(static_pages)
+
+doxygen_input = cookbook.dox other_documentation.dox header.html footer.html Money.dox
+static_pages = FAQ
+
+
+# DOC is defined if installer requests doc generation.
+# For now, we only install HTML documentation.  We could install manpages
+# using the following
+#   man_MANS = man/man3/CppUnit.3
+#   man/man3/CppUnit.3: dox
+# and an extra copy or two in the install-data-hook.  
+# However, the manpages do not appear to be tremendously useful, so
+# let's not bother.
+@DOC_TRUE@htmldir = $(pkgdatadir)/html
+@DOC_TRUE@html_DATA = $(static_pages) html/index.html
+subdir = doc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES = Doxyfile
+DIST_SOURCES =
+DATA = $(html_DATA)
+
+DIST_COMMON = Doxyfile.in Makefile.am Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  doc/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+Doxyfile: $(top_builddir)/config.status Doxyfile.in
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+htmlDATA_INSTALL = $(INSTALL_DATA)
+install-htmlDATA: $(html_DATA)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(htmldir)
+       @list='$(html_DATA)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(htmlDATA_INSTALL) $$d$$p $(DESTDIR)$(htmldir)/$$f"; \
+         $(htmlDATA_INSTALL) $$d$$p $(DESTDIR)$(htmldir)/$$f; \
+       done
+
+uninstall-htmlDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(html_DATA)'; for p in $$list; do \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " rm -f $(DESTDIR)$(htmldir)/$$f"; \
+         rm -f $(DESTDIR)$(htmldir)/$$f; \
+       done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA) all-local
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(htmldir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-htmlDATA
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-data-hook
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-htmlDATA uninstall-info-am uninstall-local
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+       clean-libtool clean-local distclean distclean-generic \
+       distclean-libtool distdir dvi dvi-am info info-am install \
+       install-am install-data install-data-am install-exec \
+       install-exec-am install-htmlDATA install-info install-info-am \
+       install-man install-strip installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+       ps ps-am uninstall uninstall-am uninstall-htmlDATA \
+       uninstall-info-am uninstall-local
+
+
+@DOC_TRUE@install-data-hook:
+@DOC_TRUE@     cp -dpR html/* $(DESTDIR)$(htmldir)
+
+# Automake's "distcheck" is sensitive to having files left over
+# after "make uninstall", so we have to clean up the install hook.
+@DOC_TRUE@uninstall-local:
+@DOC_TRUE@     rm -rf $(DESTDIR)$(htmldir)
+
+@DOC_TRUE@dox: html/index.html
+
+# We repeat the three targets in both the "if" and "else" clauses
+# of the conditional, because the generated makefile will contain
+# references to the targets (target "install" depends on target
+# "install-datahook", for example), and some make programs get upset
+# if no target exists.
+
+@DOC_FALSE@install-data-hook:
+@DOC_FALSE@uninstall-local:
+@DOC_FALSE@dox:
+
+all-local: dox
+
+html/index.html: Doxyfile $(doxygen_input)
+       "@DOXYGEN@"
+
+# Make tarfile to distribute the HTML documentation.
+doc-dist: dox
+       cp $(static_pages) html
+       tar -czf $(PACKAGE)-docs-$(VERSION).tar.gz -C html .
+
+pdf: @PACKAGE@.pdf
+@PACKAGE@.pdf:
+       $(MAKE) -C ./latex pdf
+       ln -s ./latex/refman.ps  @PACKAGE@.ps
+       ln -s ./latex/refman.pdf @PACKAGE@.pdf
+
+clean-local:
+       $(RM) -r latex
+       $(RM) -r html man @PACKAGE@.ps @PACKAGE@.pdf
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/doc/Money.dox b/lib/cppunit-1.10.0/doc/Money.dox
new file mode 100644 (file)
index 0000000..bf0111e
--- /dev/null
@@ -0,0 +1,558 @@
+/*! \page money_example Money, a step by step example
+
+\section Table of contents
+
+  - \ref sec_setting_vc
+  - \ref sec_setting_unix
+  - \ref sec_running_test
+  - \ref sec_adding_testfixture
+  - \ref sec_first_tests
+  - \ref sec_more_tests
+  - \ref sec_credits
+
+  The example explored in this article can be found in \c examples/Money/.
+
+
+
+\section sec_setting_vc Setting up your project (VC++)
+
+\subsection sec_install Compiling and installing CppUnit libaries
+
+In the following document, $CPPUNIT is the directory where you unpacked %CppUnit:
+$CPPUNIT/:
+       include/
+       lib/
+       src/
+               cppunit/
+
+First, you need to compile %CppUnit libraries:
+- Open the $CPPUNIT/src/CppUnitLibraries.dsw workspace in VC++.
+- In the 'Build' menu, select 'Batch Build...'
+- In the batch build dialog, select all projects and press the build button.
+- The resulting libraries can be found in the $CPPUNIT/lib/ directory.
+
+Once it is done, you need to tell VC++ where are the includes and librairies
+to use them in other projects. Open the 'Tools/Options...' dialog, and in the
+'Directories' tab, select 'include files' in the combo. Add a new entry that
+points to $CPPUNIT/include/. Change to 'libraries files' in the combo and 
+add a new entry for $CPPUNIT/lib/. Repeat the process with 'source files' 
+and add $CPPUNIT/src/cppunit/.
+
+\subsection sec_getting_started Getting started
+
+Creates a new console application ('a simple application' template will do).
+Let's link %CppUnit library to our project. In the project settings:
+- In tab 'C++', combo 'Code generation', set the combo to 'Multithreaded DLL'
+for the release configuration, and 'Debug Multithreaded DLL' for the debug
+configure,
+- In tab 'C++', combo 'C++ langage', for All Configurations, check 
+'enable Run-Time Type Information (RTTI)',
+- In tab 'Link', in the 'Object/library modules' field, add cppunitd.lib for
+the debug configuration, and cppunit.lib for the release configuration.
+
+We're done !
+
+
+  
+    
+      
+        
+          
+\section sec_setting_unix Setting up your project (Unix)
+We'll use \c autoconf and \c automake to make it simple to 
+create our build environment. Create a directory somewhere to 
+hold the code we're going to build. Create \c configure.in and 
+\c Makefile.am in that directory to get started.
+
+<tt>configure.in</tt>
+\verbatim
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT(Makefile.am)
+AM_INIT_AUTOMAKE(money,0.1)
+AM_PATH_CPPUNIT(1.9.6)
+AC_PROG_CXX
+AC_PROG_CC
+AC_PROG_INSTALL
+AC_OUTPUT(Makefile)\endverbatim
+
+<tt>Makefile.am</tt>
+\verbatim
+# Rules for the test code (use `make check` to execute)
+TESTS = MoneyApp
+check_PROGRAMS = $(TESTS)
+MoneyApp_SOURCES = Money.h MoneyTest.h MoneyTest.cpp MoneyApp.cpp
+MoneyApp_CXXFLAGS = $(CPPUNIT_CFLAGS)
+MoneyApp_LDFLAGS = $(CPPUNIT_LIBS)
+MoneyApp_LDFLAGS = -ldl\endverbatim
+
+
+  
+    
+      
+        
+          
+            
+\section sec_running_test Running our tests
+
+We have a main that doesn't do anything. Let's start by adding the mecanics
+to run our tests (remember, test before you code ;-) ). For this example, 
+we will use a TextTestRunner with the CompilerOutputter for post-build 
+testing:
+
+<tt>MoneyApp.cpp</tt>
+\code
+#include "stdafx.h"
+#include <cppunit/CompilerOutputter.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/ui/text/TestRunner.h>
+
+
+int main(int argc, char* argv[])
+{
+  // Get the top level suite from the registry
+  CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();
+
+  // Adds the test to the list of test to run
+  CppUnit::TextUi::TestRunner runner;
+  runner.addTest( suite );
+
+  // Change the default outputter to a compiler error format outputter
+  runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(),
+                                                       std::cerr ) );
+  // Run the tests.
+  bool wasSucessful = runner.run();
+
+  // Return error code 1 if the one of test failed.
+  return wasSucessful ? 0 : 1;
+}\endcode
+
+  VC++: Compile and run (Ctrl+F5).
+
+  Unix: First build. Since we don't have all the file yet, let's create them
+  and build our application for the first time:
+\verbatim
+touch Money.h MoneyTest.h MoneyTest.cpp
+aclocal -I /usr/local/share/aclocal
+autoconf
+automake -a
+touch NEWS README AUTHORS ChangeLog # To make automake happy
+./configure
+make check\endverbatim
+
+  Our application will report that everything
+is fine and no test were run. So let's add some tests...
+
+
+
+\subsection sec_post_build Setting up automated post-build testing (VC++)
+
+What does post-build testing means? It means that each time you compile,
+the test are automatically run when the build finish. This is very
+useful, if you compile often you can know that you just 'broke' something,
+or that everything is still working fine.
+
+Let's adds that to our project, In the project settings, in the 
+'post-build step' tab:
+- Select 'All configurations' (upper left combo)
+- In the 'Post-build description', enter 'Unit testing...'
+- In 'post-build command(s)', add a new line: <tt>\$(TargetPath)$</tt>
+
+<tt>\$(TargetPath)</tt> expands into the name of your application:
+Debug\MoneyApp.exe in debug configuration and Release\MoneyApp.exe in release
+configuration.
+
+What we are doing is say to VC++ to run our application for each build. 
+Notices the last line of \c main(), it returns a different error code, 
+depending on weither or not a test failed. If the code returned by
+an application is not 0 in post-build step, it tell VC++ that the build
+step failed.
+
+Compile. Notices that the application's output is now in the build window.
+How convenient!
+
+  (Unix: tips to integrate make check into various IDE?)
+
+
+  
+    
+      
+        
+          
+\section sec_adding_testfixture Adding the TestFixture
+
+For this example, we are going to write a simple money class. Money
+has an amount and a currency. Let's begin by creating a fixture where
+we can put our tests, and add single test to test Money constructor:
+
+<tt>MoneyTest.h:</tt>
+\code
+#ifndef MONEYTEST_H
+#define MONEYTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+
+class MoneyTest : public CppUnit::TestFixture
+{
+  CPPUNIT_TEST_SUITE( MoneyTest );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  void setUp();
+  void tearDown();
+
+  void testConstructor();
+};
+
+#endif  // MONEYTEST_H\endcode
+
+- CPPUNIT_TEST_SUITE declares that our Fixture's test suite.
+- CPPUNIT_TEST adds a test to our test suite. The test is implemented 
+by a method named testConstructor().
+- setUp() and tearDown() are use to setUp/tearDown some fixtures. We are
+not using any for now.
+
+<tt>MoneyTest.cpp</tt>
+\code
+#include "stdafx.h"
+#include "MoneyTest.h"
+
+// Registers the fixture into the 'registry'
+CPPUNIT_TEST_SUITE_REGISTRATION( MoneyTest );
+
+
+void 
+MoneyTest::setUp()
+{
+}
+
+
+void 
+MoneyTest::tearDown()
+{
+}
+
+
+void 
+MoneyTest::testConstructor()
+{
+  CPPUNIT_FAIL( "not implemented" );
+}
+\endcode
+
+Compile. As expected, it reports that a test failed. Press the \c F4 key
+(Go to next Error). VC++ jump right to our failed assertion CPPUNIT_FAIL.
+We can not ask better in term of integration!
+\verbatim
+Compiling...
+MoneyTest.cpp
+Linking...
+Unit testing...
+.F
+G:\prg\vc\Lib\cppunit\examples\money\MoneyTest.cpp(26):Assertion
+Test name: MoneyTest.testConstructor
+not implemented
+Failures !!!
+Run: 1   Failure total: 1   Failures: 1   Errors: 0
+Error executing d:\winnt\system32\cmd.exe.
+
+moneyappd.exe - 1 error(s), 0 warning(s)
+\endverbatim
+
+Well, we have everything set up, let's start doing some real testing.
+
+
+  
+    
+      
+
+  
+\section sec_first_tests Our first tests
+
+Let's write our first real test. A test is usually decomposed in three parts:
+- setting up datas used by the test
+- doing some processing based on those datas
+- checking the result of the processing
+
+\code
+void 
+MoneyTest::testConstructor()
+{
+  // Set up
+  const std::string currencyFF( "FF" );
+  const double longNumber = 12345678.90123;
+
+  // Process
+  Money money( longNumber, currencyFF );
+
+  // Check
+  CPPUNIT_ASSERT_EQUAL( longNumber, money.getAmount() );
+  CPPUNIT_ASSERT_EQUAL( currencyFF, money.getCurrency() );
+}\endcode
+
+Well, we finally have a good start of what our Money class will
+look likes. Let's start implementing...
+
+<tt>Money.h</tt>
+\code
+#ifndef MONEY_H
+#define MONEY_H
+
+#include <string>
+
+class Money
+{
+public:
+  Money( double amount, std::string currency )
+    : m_amount( amount )
+    , m_currency( m_currency )
+  {
+  }
+
+  double getAmount() const
+  {
+    return m_amount;
+  }
+
+  std::string getCurrency() const
+  {
+    return m_currency;
+  }
+
+private:
+  double m_amount;
+  std::string m_currency;
+};
+
+#endif\endcode
+
+Include <tt>Money.h</tt> in MoneyTest.cpp and compile.
+
+Hum, an assertion failed! Press F4, and we jump to the assertion
+that checks the currency of the constructed money object. The report
+indicates that string is not equal to expected value. There is only
+two ways for this to happen: the member was badly initialized or we
+returned the wrong value. After a quick check, we fin out it is the former.
+Let's fix that:
+
+<tt>Money.h</tt>
+\code
+  Money( double amount, std::string currency )
+    : m_amount( amount )
+    , m_currency( currency )
+  {
+  }\endcode
+
+Compile. Our test finally pass!
+Let's add some functionnalities to our Money class.
+
+
+  
+    
+      
+        
+          
+            
+\section sec_more_tests Adding more tests
+
+\subsection sec_equal Testing for equality
+
+  We want to check if to Money object are equal. Let's start by adding
+a new test to the suite, then add our method:
+
+<tt>MoneyTest.h</tt>
+\code
+  CPPUNIT_TEST_SUITE( MoneyTest );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testEqual );
+  CPPUNIT_TEST_SUITE_END();
+public:
+  ...
+  void testEqual();
+\endcode
+
+<tt>MoneyTest.cpp</tt>
+\code
+void
+MoneyTest::testEqual()
+{
+  // Set up
+  const Money money123FF( 123, "FF" );
+  const Money money123USD( 123, "USD" );
+  const Money money12FF( 12, "FF" );
+  const Money money12USD( 12, "USD" );
+
+  // Process & Check
+  CPPUNIT_ASSERT( money123FF == money123FF );     // ==
+  CPPUNIT_ASSERT( money12FF != money123FF );      // != amount
+  CPPUNIT_ASSERT( money123USD != money123FF );    // != currency
+  CPPUNIT_ASSERT( money12USD != money123FF );    // != currency and != amount
+}\endcode
+
+  Let's implements \c operator \c == and \c operator \c != in Money.h:
+
+<tt>Money.h</tt>
+\code
+class Money
+{
+public:
+...
+  bool operator ==( const Money &other ) const
+  {
+    return m_amount == other.m_amount  &&  
+           m_currency == other.m_currency;
+  }
+
+  bool operator !=( const Money &other ) const
+  {
+    return (*this == other);
+  }
+};
+\endcode
+
+  Compile, run... Ooops... Press F4, it seems we're having trouble 
+with \c operator \c !=. Let's fix that:
+\code
+  bool operator !=( const Money &other ) const
+  {
+    return !(*this == other);
+  }\endcode
+
+Compile, run. Finaly got it working!
+
+
+
+\subsection sec_opadd Adding moneys
+
+  Let's add our test 'testAdd' to MoneyTest. You know the routine...
+
+<tt>MoneyTest.cpp</tt>
+\code
+void 
+MoneyTest::testAdd()
+{
+  // Set up
+  const Money money12FF( 12, "FF" );
+  const Money expectedMoney( 135, "FF" );
+
+  // Process
+  Money money( 123, "FF" );
+  money += money12FF;
+
+  // Check
+  CPPUNIT_ASSERT_EQUAL( expectedMoney == money.getAmount() );  // += works
+  CPPUNIT_ASSERT( &money == &(money += money12FF) );           // += returns ref. on 'this'.
+}\endcode
+
+  While writing that test case, you ask yourself, what is the result of
+adding money of currencies. Obviously this is an error and it should be
+reported, say let throw an exception, say \c IncompatibleMoneyError, 
+when the currencies are not equal. We will write another test case
+for this later. For now let get our testAdd() case working:
+
+<tt>Money.h</tt>
+\code
+class Money
+{
+public:
+...
+  Money &operator +=( const Money &other )
+  {
+    m_amount += other.m_amount;
+    return *this;
+  }
+}; \endcode
+
+Compile, run. Miracle, everything is fine! Just to be sure the test is indeed
+working, in the above code, change \c m_amount \c += to \c -=. Build and 
+check that it fails (always be suspicious of test that work the first 
+time: you may have forgotten to add it to the suite for example)! 
+Change the code back so that all the tests are working.
+  
+  Let's the incompatible money test case before we forget about it...
+That test case expect an \c IncompatibleMoneyError exception to be thrown. 
+%CppUnit can test that for us, you need to specify that the test case
+expect an exception when you add it to the suite:
+  
+<tt>MoneyTest.h</tt>
+\code
+class MoneyTest : public CppUnit::TestFixture
+{
+  CPPUNIT_TEST_SUITE( MoneyTest );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testEqual );
+  CPPUNIT_TEST( testAdd );
+  CPPUNIT_TEST_EXCEPTION( testAddThrow, IncompatibleMoneyError );
+  CPPUNIT_TEST_SUITE_END();
+public:
+  ...
+  void testAddThrow();
+};\endcode
+
+By convention, you ends the name of such tests with \c 'Throw', that way, you
+know that the test expect an exception to be thrown. Let's write our test case:
+
+<tt>MoneyTest.cpp</tt>
+\code
+void 
+MoneyTest::testAddThrow()
+{
+  // Set up
+  const Money money123FF( 123, "FF" );
+
+  // Process
+  Money money( 123, "USD" );
+  money += money123FF;        // should throw an exception
+}
+\endcode
+
+  Compile... Ooops, forgot to declare the exception class. Let's do that:
+
+<tt>Money.h</tt>
+\code
+#include <string>
+#include <stdexcept>
+
+class IncompatibleMoneyError : public std::runtime_error
+{
+public:
+  IncompatibleMoneyError() : runtime_error( "Incompatible moneys" )
+  {
+  }
+};
+\endcode
+
+  Compile. As expected testAddThrow() fail... Let's fix that:
+  
+<tt>Money.h</tt>
+\code
+  Money &operator +=( const Money &other )
+  {
+    if ( m_currency != other.m_currency )
+      throw IncompatibleMoneyError();
+
+    m_amount += other.m_amount;
+    return *this;
+  }\endcode
+
+  Compile. Our test finaly pass!
+
+  TODO:
+- Copy constructor/Assigment operator
+- Introducing fixtures
+- ?
+
+
+  
+    
+      
+        
+\section sec_credits Credits
+This article was written by Baptiste Lepilleur. Unix configuration & set up 
+by Phil Verghese. Inspired from many others (JUnit, Phil's cookbook...), 
+and all the newbies around that keep asking me for the 
+'Hello world' example ;-)
+
+
+
+*/
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/doc/cookbook.dox b/lib/cppunit-1.10.0/doc/cookbook.dox
new file mode 100644 (file)
index 0000000..62e55e1
--- /dev/null
@@ -0,0 +1,523 @@
+/*! \page cppunit_cookbook CppUnit Cookbook
+Here is a short cookbook to help you get started.
+
+
+\section simple_test_case Simple Test Case
+You want to know whether your code is working. 
+
+How do you do it? 
+
+There are many ways. Stepping through a debugger or 
+littering your code with stream output calls are two of 
+the simpler ways, but they both have drawbacks.
+Stepping through your code is a good idea, but it 
+is not automatic. You have to do it every time you
+make changes. Streaming out text is also fine, 
+but it makes code ugly and it generates far more 
+information than you need most of the time.
+
+Tests in %CppUnit can be run automatically. 
+They are easy to set up and once you have 
+written them, they are always there to help 
+you keep confidence in the quality of your code.
+
+To make a simple test, here is what you do:
+
+Subclass the \link CppUnit::TestCase TestCase \endlink class. 
+Override the method \link CppUnit::TestCase::runTest() runTest()\endlink. 
+When you want to check a value, call 
+\link CPPUNIT_ASSERT() CPPUNIT_ASSERT(bool) \endlink
+and pass in an expression that is true if the 
+test succeeds. 
+
+For example, to test the equality comparison 
+for a Complex number class, write:
+
+\code
+class ComplexNumberTest : public CppUnit::TestCase { 
+public: 
+  ComplexNumberTest( std::string name ) : CppUnit::TestCase( name ) {}
+  
+  void runTest() {
+    CPPUNIT_ASSERT( Complex (10, 1) == Complex (10, 1) );
+    CPPUNIT_ASSERT( !(Complex (1, 1) == Complex (2, 2)) );
+  }
+};
+\endcode
+
+That was a very simple test. Ordinarily, 
+you'll have many little test cases that you'll 
+want to run on the same set of objects. To do 
+this, use a fixture.
+
+
+
+
+
+
+\section fixture Fixture
+A fixture is a known set of objects that 
+serves as a base for a set of test cases. 
+Fixtures come in very handy when you are 
+testing as you develop. 
+
+Let's try out this style of development and 
+learn about fixtures along the away. Suppose 
+that we are really developing a complex 
+number class. Let's start by defining a 
+empty class named Complex.
+
+\code
+class Complex {};
+\endcode
+
+Now create an instance of ComplexNumberTest 
+above, compile the code and see what happens. 
+The first thing we notice is a few compiler 
+errors. The test uses <tt>operator ==</tt>, but it is 
+not defined. Let's fix that.
+
+\code
+bool operator==( const Complex &a, const Complex &b) 
+{ 
+  return true; 
+}
+\endcode
+
+Now compile the test, and run it. This time it 
+compiles but the test fails. 
+We need a bit more to get an <tt>operator ==</tt>working 
+correctly, so we revisit the code.
+
+\code
+class Complex { 
+  friend bool operator ==(const Complex& a, const Complex& b);
+  double real, imaginary;
+public:
+  Complex( double r, double i = 0 ) 
+    : real(r)
+       , imaginary(i) 
+  {
+  }
+};
+
+bool operator ==( const Complex &a, const Complex &b )
+{ 
+  return a.real == b.real  &&  a.imaginary == b.imaginary; 
+}
+\endcode
+
+If we compile now and run our test it will pass. 
+
+Now we are ready to add new operations and 
+new tests. At this point a fixture would be 
+handy. We would probably be better off when 
+doing our tests if we decided to instantiate 
+three or four complex numbers and reuse them 
+across our tests. 
+
+Here is how we do it:
+- Add member variables for each part of the 
+  \link CppUnit::TestFixture fixture \endlink
+- Override \link CppUnit::TestFixture::setUp() setUp() \endlink
+  to initialize the variables
+- Override \link CppUnit::TestFixture::tearDown() tearDown() \endlink
+  to release any permanent resources you allocated in 
+  \link CppUnit::TestFixture::setUp() setUp() \endlink
+
+\code
+class ComplexNumberTest : public CppUnit::TestFixture {
+private:
+  Complex *m_10_1, *m_1_1, *m_11_2;
+public:
+  void setUp()
+  {
+    m_10_1 = new Complex( 10, 1 );
+    m_1_1 = new Complex( 1, 1 );
+    m_11_2 = new Complex( 11, 2 );  
+  }
+
+  void tearDown() 
+  {
+    delete m_10_1;
+    delete m_1_1;
+    delete m_11_2;
+  }
+};
+\endcode
+
+Once we have this fixture, we can add the complex 
+addition test case any any others that we need 
+over the course of our development.
+
+
+
+\section test_case Test Case
+
+How do you write and invoke individual tests using a fixture? 
+
+There are two steps to this process:
+- Write the test case as a method in the fixture class
+- Create a TestCaller which runs that particular method
+
+Here is our test case class with a few extra case methods:
+
+\code
+class ComplexNumberTest : public CppUnit::TestFixture  {
+private:
+  Complex *m_10_1, *m_1_1, *m_11_2;
+public:
+  void setUp()
+  {
+    m_10_1 = new Complex( 10, 1 );
+    m_1_1 = new Complex( 1, 1 );
+    m_11_2 = new Complex( 11, 2 );  
+  }
+
+  void tearDown() 
+  {
+    delete m_10_1;
+    delete m_1_1;
+    delete m_11_2;
+  }
+
+  void testEquality()
+  {
+    CPPUNIT_ASSERT( *m_10_1 == *m_10_1 );
+    CPPUNIT_ASSERT( !(*m_10_1 == *m_11_2) );
+  }
+
+  void testAddition()
+  {
+    CPPUNIT_ASSERT( *m_10_1 + *m_1_1 == *m_11_2 );
+  }
+};
+\endcode
+
+One may create and run instances for each test case like this:
+
+\code
+CppUnit::TestCaller<ComplexNumberTest> test( "testEquality", 
+                                             &ComplexNumberTest::testEquality );
+CppUnit::TestResult result;
+test.run( &result );
+\endcode
+
+The second argument to the test caller constructor is the address of 
+a method on ComplexNumberTest. When the test caller is run, 
+that specific method will be run.  This is not a useful thing to do, 
+however, as no diagnostics will be displayed.  
+One will normally use a \link ExecutingTest TestRunner \endlink (see below) 
+to display the results.
+
+Once you have several tests, organize them into a suite.
+
+
+
+
+
+\section suite Suite
+
+How do you set up your tests so that you can run them all at once?
+
+%CppUnit provides a \link CppUnit::TestSuite TestSuite \endlink class 
+that runs any number of TestCases together. 
+
+We saw, above, how to run a single test case.
+
+To create a suite of two or more tests, you do the following:
+
+\code
+CppUnit::TestSuite suite;
+CppUnit::TestResult result;
+suite.addTest( new CppUnit::TestCaller<ComplexNumberTest>(
+                       "testEquality", 
+                       &ComplexNumberTest::testEquality ) );
+suite.addTest( new CppUnit::TestCaller<ComplexNumberTest>(
+                       "testAddition", 
+                       &ComplexNumberTest::testAddition ) );
+suite.run( &result );
+\endcode         
+
+\link CppUnit::TestSuite TestSuites \endlink don't only have to 
+contain callers for TestCases.  They can contain any object 
+that implements the \link CppUnit::Test Test \endlink interface.
+For example, you can create a 
+\link CppUnit::TestSuite TestSuite \endlink in your code and
+I can create one in mine, and we can run them together 
+by creating a \link CppUnit::TestSuite TestSuite \endlink 
+that contains both:
+
+\code
+CppUnit::TestSuite suite;
+CppUnit::TestResult result;
+suite.addTest( ComplexNumberTest::suite() );
+suite.addTest( SurrealNumberTest::suite() );
+suite.run( &result );
+\endcode
+
+
+
+
+\section test_runner TestRunner
+
+How do you run your tests and collect their results?
+
+Once you have a test suite, you'll want to run it. %CppUnit provides tools 
+to define the suite to be run and to display its results. 
+You make your suite accessible to a \link ExecutingTest TestRunner \endlink
+program with a static method <I>suite</I> that returns a test suite.
+
+For example, to make a ComplexNumberTest suite available to a 
+\link ExecutingTest TestRunner \endlink, add the following code to 
+ComplexNumberTest:
+
+\code
+public: 
+  static CppUnit::Test *suite()
+  {
+    CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite( "ComplexNumberTest" );
+    suiteOfTests->addTest( new CppUnit::TestCaller<ComplexNumberTest>( 
+                                   "testEquality", 
+                                   &ComplexNumberTest::testEquality ) );
+    suiteOfTests->addTest( new CppUnit::TestCaller<ComplexNumberTest>(
+                                   "testAddition",
+                                   &ComplexNumberTest::testAddition ) );
+    return suiteOfTests;
+  }
+\endcode
+
+\anchor test_runner_code
+To use the text version, include the header files for the tests in Main.cpp:
+
+\code
+#include <cppunit/ui/text/TestRunner.h>
+#include "ExampleTestCase.h"
+#include "ComplexNumberTest.h"
+\endcode
+
+And add a call to 
+\link ::CppUnit::TextUi::TestRunner::addTest addTest(CppUnit::Test *) \endlink 
+in the <tt>main()</tt> function:
+
+\code
+int main( int argc, char **argv)
+{
+  CppUnit::TextUi::TestRunner runner;
+  runner.addTest( ExampleTestCase::suite() );
+  runner.addTest( ComplexNumberTest::suite() );
+  runner.run();
+  return 0;
+}
+\endcode
+
+The \link ExecutingTest TestRunner \endlink will run the tests. 
+If all the tests pass, you'll get an informative message. 
+If any fail, you'll get the following information:
+
+- The name of the test case that failed
+- The name of the source file that contains the test
+- The line number where the failure occurred
+- All of the text inside the call to CPPUNIT_ASSERT() which detected the failure
+
+%CppUnit distinguishes between <I>failures</I> and <I>errors</I>. A failure is 
+anticipated and checked for with assertions. Errors are unanticipated problems 
+like division by zero and other exceptions thrown by the C++ runtime or your code.
+
+
+
+
+\section helper_macros Helper Macros
+
+As you might have noticed, implementing the fixture static <tt>suite()</tt> 
+method is a repetitive and error prone task. A \ref WritingTestFixture set of 
+macros have been created to automatically implements the 
+static <tt>suite()</tt> method.
+
+The following code is a rewrite of ComplexNumberTest using those macros:
+
+\code
+#include <cppunit/extensions/HelperMacros.h>
+
+class ComplexNumberTest : public CppUnit::TestFixture  {
+\endcode
+First, we declare the suite, passing the class name to the macro:
+\code
+CPPUNIT_TEST_SUITE( ComplexNumberTest );
+\endcode
+The suite created by the static <tt>suite()</tt> method is named after 
+the class name.
+Then, we declare each test case of the fixture:
+\code
+CPPUNIT_TEST( testEquality );
+CPPUNIT_TEST( testAddition );
+\endcode
+Finally, we end the suite declaration:
+\code
+CPPUNIT_TEST_SUITE_END();
+\endcode
+At this point, a method with the following signature has been implemented:
+\code
+static CppUnit::TestSuite *suite();
+\endcode
+The rest of the fixture is left unchanged:
+\code
+private:
+  Complex *m_10_1, *m_1_1, *m_11_2;
+public:
+  void setUp()
+  {
+    m_10_1 = new Complex( 10, 1 );
+    m_1_1 = new Complex( 1, 1 );
+    m_11_2 = new Complex( 11, 2 );  
+  }
+
+  void tearDown() 
+  {
+    delete m_10_1;
+    delete m_1_1;
+    delete m_11_2;
+  }
+
+  void testEquality()
+  {
+    CPPUNIT_ASSERT( *m_10_1 == *m_10_1 );
+    CPPUNIT_ASSERT( !(*m_10_1 == *m_11_2) );
+  }
+
+  void testAddition()
+  {
+    CPPUNIT_ASSERT( *m_10_1 + *m_1_1 == *m_11_2 );
+  }
+};
+\endcode
+
+The name of the \link CppUnit::TestCaller TestCaller \endlink added to the
+suite are a composition of the fixture name and the method name. 
+
+In the present case, the names would be:
+"ComplexNumberTest.testEquality" and "ComplexNumberTest.testAddition".
+
+The \link WritingTestFixture helper macros \endlink help you write comon assertion.
+For example, to check that ComplexNumber throws a MathException when dividing
+a number by 0:
+- add the test to the suite using CPPUNIT_TEST_EXCEPTION, specifying the expected
+  exception type.
+- write the test case method
+
+\code
+CPPUNIT_TEST_SUITE( ComplexNumberTest );
+// [...]
+CPPUNIT_TEST_EXCEPTION( testDivideByZeroThrows, MathException );
+CPPUNIT_TEST_SUITE_END();
+
+// [...]
+
+  void testDivideByZeroThrows()
+  {
+    // The following line should throw a MathException.
+    *m_10_1 / ComplexNumber(0);
+  }
+\endcode
+
+If the expected exception is not thrown, then a assertion failure is reported.
+
+
+
+
+\section test_factory_registry TestFactoryRegistry
+
+The TestFactoryRegistry was created to solve two pitfalls:
+- forgetting to add your fixture suite to the test runner (since it is in 
+  another file, it is easy to forget)
+- compilation bottleneck caused by the inclusion of all test case headers 
+  (see \ref test_runner_code "previous example")
+
+The TestFactoryRegistry is a place where suites can be registered at initialization
+time.
+
+To register the ComplexNumber suite, in the .cpp file, you add:
+
+\code
+#include <cppunit/extensions/HelperMacros.h>
+
+CPPUNIT_TEST_SUITE_REGISTRATION( ComplexNumberTest );
+\endcode
+
+Behind the scene, a static variable type of 
+\link CppUnit::AutoRegisterSuite AutoRegisterSuite \endlink is declared.
+On construction, it will 
+\link CppUnit::TestFactoryRegistry::registerFactory(TestFactory*) register \endlink 
+a \link CppUnit::TestSuiteFactory TestSuiteFactory \endlink into the 
+\link CppUnit::TestFactoryRegistry TestFactoryRegistry \endlink. 
+The \link CppUnit::TestSuiteFactory TestSuiteFactory \endlink returns
+the \link CppUnit::TestSuite TestSuite \endlink returned by ComplexNumber::suite().
+
+To run the tests, using the text test runner, we don't need to include the fixture
+anymore:
+
+\code
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/ui/text/TestRunner.h>
+
+int main( int argc, char **argv)
+{
+  CppUnit::TextUi::TestRunner runner;
+\endcode
+First, we retreive the instance of the 
+\link CppUnit::TestFactoryRegistry TestFactoryRegistry \endlink:
+\code
+  CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry();
+\endcode
+Then, we obtain and add a new \link CppUnit::TestSuite TestSuite \endlink created 
+by the  \link CppUnit::TestFactoryRegistry TestFactoryRegistry \endlink that 
+contains all the test suite registered using CPPUNIT_TEST_SUITE_REGISTRATION().
+\code
+  runner.addTest( registry.makeTest() );
+  runner.run();
+  return 0;
+}
+\endcode
+
+
+
+
+\section post_build_check Post-build check
+
+Well, now that we have our unit tests running, how about integrating unit 
+testing to our build process ?
+
+To do that, the application must returns a value different than 0 to indicate that
+there was an error.
+
+\link CppUnit::TextUi::TestRunner::run() TestRunner::run() \endlink returns 
+a boolean indicating if the run was successful.
+
+Updating our main programm, we obtains:
+\code
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/ui/text/TestRunner.h>
+
+int main( int argc, char **argv)
+{
+  CppUnit::TextUi::TestRunner runner;
+  CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry();
+  runner.addTest( registry.makeTest() );
+  bool wasSuccessful = runner.run( "", false );
+  return wasSuccessful;
+}
+\endcode
+
+Now, you need to run your application after compilation.
+
+With Visual C++, this is done in <em>Project Settings/Post-Build step</em>, 
+by adding the following command: <tt>$(TargetPath)</tt>. It is expanded to 
+the application executable path. Look up the project 
+<tt>examples/cppunittest/CppUnitTestMain.dsp</tt> which
+use that technic.
+
+
+
+Original version by Michael Feathers.
+Doxygen conversion and update by Baptiste Lepilleur.
+*/
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/doc/footer.html b/lib/cppunit-1.10.0/doc/footer.html
new file mode 100644 (file)
index 0000000..448359e
--- /dev/null
@@ -0,0 +1,23 @@
+<hr>
+<table width="100%">
+  <tr>
+    <td width="10%" align="left" valign="center">
+      <a href="http://sourceforge.net"> 
+      <img
+      src="http://sourceforge.net/sflogo.php?group_id=11795"
+      width="88" height="31" border="0" alt="SourceForge Logo"></a>
+    </td>
+    <td width="20%" align="left" valign="center">
+      hosts this site.
+    </td>
+    <td>
+    </td>
+    <td align="right" valign="center">
+      Send comments to:<br>
+      <a href="mailto:cppunit-devel@lists.sourceforge.net">CppUnit Developers</a>
+    </td>
+  </tr>
+</table>
+
+</body> 
+</html>
diff --git a/lib/cppunit-1.10.0/doc/header.html b/lib/cppunit-1.10.0/doc/header.html
new file mode 100644 (file)
index 0000000..62285cb
--- /dev/null
@@ -0,0 +1,26 @@
+<html>
+<head>
+<title>
+CppUnit - The Unit Testing Library
+</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+
+<body bgcolor="#ffffff"> 
+<table width="100%">
+  <tr>
+    <td width="40%" align="left" valign="center">
+      <a href="http://sourceforge.net/projects/cppunit">
+      CppUnit project page
+      </a>
+    </td>
+    <td>
+      <a href="FAQ">FAQ</a>
+    </td>
+    <td width="40%" align="right" valign="center">
+      <a href="http://cppunit.sourceforge.net">CppUnit home page</a>
+    </td>
+  </tr>
+</table>
+
+<hr>
diff --git a/lib/cppunit-1.10.0/doc/other_documentation.dox b/lib/cppunit-1.10.0/doc/other_documentation.dox
new file mode 100644 (file)
index 0000000..5b148e1
--- /dev/null
@@ -0,0 +1,147 @@
+/**
+ \mainpage
+ \section _history History
+ The first port of JUnit to C++ was done
+ by Michael Feathers. His versions
+ can be found on the 
+ <a href="http://www.xprogramming.com/software.htm">
+ XProgramming software page</a>. They are os-specific,
+ so Jerome Lacoste provided a port to Unix/Solaris.
+ His version can be found on the same page.
+ The %CppUnit project has combined and built on this work.
+
+ \section _usage Usage
+ Take a look into the \ref cppunit_cookbook.
+ It gives a quick start into using this 
+ testing framework. <a href="modules.html">Modules</a> give
+ you a organized view of %CppUnit classes.
+
+ (Notes to newbies, you may want to check out \ref money_example,
+ a work in progress, but the project is provided with %CppUnit).
+
+ For a discussion on %CppUnit, check 
+ <a href="http://c2.com/cgi/wiki?CppUnit">
+ the WikiWiki Pages on CppUnit</a>. There you can also
+ find the original versions and various ports to other
+ OSses and languages.
+ \section _license License
+ This library is released under
+ the GNU
+ <a href="http://www.gnu.org/copyleft/lesser.html">
+ Lesser General Public License</a>.
+
+ \author Eric Sommerlade (sommerlade@gmx.net)
+ \author Michael Feathers (mfeathers@objectmentor.com)
+ \author Jerome Lacoste (lacostej@altern.org)
+ \author Baptiste Lepilleur <gaiacrtn@free.fr>
+ \author Bastiaan Bakker <bastiaan.bakker@lifeline.nl>
+ \author Steve Robbins <smr99@sourceforge.net>
+ */
+
+
+
+/*! \defgroup WritingTestFixture Writing test fixture
+ */
+
+/*! \defgroup Assertions Making assertions
+ */
+
+/*! \defgroup CreatingTestSuite Creating TestSuite
+ */
+
+/*! \defgroup ExecutingTest Executing test
+ */
+
+/*! \defgroup TrackingTestExecution Tracking test execution
+ */
+
+/*! \defgroup WritingTestResult Writing test result
+ */
+
+/*! \defgroup BrowsingCollectedTestResult Browsing collected test result
+ */
+
+/*! \defgroup CreatingNewAssertions Creating custom assertions
+ */
+
+/*! \defgroup WritingTestPlugIn Writing Test Plug-in
+ *
+ * Creating a test plug-in is really simple:
+ * - make your project a dynamic library (with VC++, choose Win32 Dynamic Library in
+ *   the project wizard), and link against the dynamic library version of %CppUnit
+ *   (cppunit*_dll.lib for VC++).
+ * - in a cpp file, include TestPlugIn.h, and use the macro CPPUNIT_PLUGIN_IMPLEMENT()
+ *   to declare the test plug-in.
+ * - That's it, you're done! All the tests registered using the TestFactoryRegistry,
+ *   CPPUNIT_TEST_SUITE_NAMED_REGISTRATION, or CPPUNIT_TEST_SUITE_REGISTRATION will
+ *   be visible to other plug-in and to the DllPlugInRunner.
+ *
+ * Example:
+ * \code
+ * #include <cppunit/include/plugin/TestPlugIn.h>
+ *
+ * CPPUNIT_PLUGIN_IMPLEMENT();
+ * \endcode
+ *
+ * The interface CppUnitTestPlugIn is automatically implemented by the previous
+ * macro. You can define your one implementation.
+ *
+ * To provide your custom implementation of the plug-in interface, you must:
+ * - create a class that implements the CppUnitTestPlugIn interface
+ * - use CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL() with your class to export
+ *   the plug-in interface
+ * - implements the 'main' function with CPPUNIT_PLUGIN_IMPLEMENT_MAIN().
+ *
+ * Some of the reason you may want to do this:
+ * - You do not use the TestFactoryRegistry to register your test.
+ * - You want to create a custom listener to use with DllPlugInRunner.
+ * - You want to do initialize some globale resources before running the test
+ *   (setting up COM for example).
+ *   
+ * See CppUnitTestPlugIn for further detail on how to do this.
+ *
+ * Creating your own test plug-in with VC++:
+ * - Create a new "Win32 Dynamic Library" project, choose the empty template
+ * - For the Debug Configuration, add cppunitd_dll.lib to 
+ *   'Project Settings/Link/Object/Libariries modules', and for the Release
+ *   Configuration, add cppunit_dll.lib.
+ * - For All Configuration, in 'C++/Preprocessor/Preprocessors definitions',
+ *   add the symbol 'CPPUNIT_DLL' at the end of the line (it means that
+ *   you are linking against cppunit dll).
+ * - Create a 'main' file that contains:
+\verbatim
+#include <cppunit/plugin/TestPlugIn.h>
+
+CPPUNIT_PLUGIN_IMPLEMENT();\endverbatim
+ * - Add your tests
+ * - You're done !
+ *
+ * See examples/simple/simple_plugin.dsp for an example.
+ *
+ * Notes to VC++ users: 
+ * - you can run a post-build check on the plug-in. Add the following line to your
+ *   post-build tab: "DllPlugInTesterd_dll.exe $(TargetPath)". DllPlugInTesterd_dll.exe
+ *   need to be some place were it can be found (path, ...), or you need to
+ *   indicate the correct path. 
+ *   $(TargetPath) is the filename of your plug-in.
+ * - you can debug your DLL, set the executable for debug session to the plug-in 
+ *   runner, and the name of the DLL in the program arguments ($(xxx) won't work
+ *   this time).
+ *
+ * How does it works ?
+ *
+ * When %CppUnit is linked as a DLL, the singleton used for the TestFactoryRegistry
+ * is the same for the plug-in runner (also linked against %CppUnit DLL). This means
+ * that the tests registered with the macros (at static initialization) are 
+ * registered in the same registry. As soon as a DLL is loaded by the PlugInManager,
+ * the DLL static variable are constructed and the test registered to the 
+ * TestFactoryRegistry.
+ *
+ * After loading the DLL, the PlugInManager look-up a specific function exported by
+ * the DLL. That function returns a pointer on the plug-in interface, which is later
+ * used by the PlugInManager.
+ *
+ * \see CreatingTestSuite.
+ */
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerListener.cpp b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerListener.cpp
new file mode 100644 (file)
index 0000000..643a947
--- /dev/null
@@ -0,0 +1,123 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file ClockerListener.cpp for class ClockerListener
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/04/19
+// //////////////////////////////////////////////////////////////////////////
+#include <cppunit/Test.h>
+#include <iostream>
+#include "ClockerListener.h"
+#include "ClockerModel.h"
+#include <stdio.h>
+
+
+ClockerListener::ClockerListener( ClockerModel *model,
+                                  bool text )
+    : m_model( model )
+    , m_text( text )
+{
+}
+
+
+ClockerListener::~ClockerListener()
+{
+}
+
+
+void 
+ClockerListener::startTestRun( CPPUNIT_NS::Test *test, 
+                               CPPUNIT_NS::TestResult *eventManager )
+{
+  m_model->setExpectedTestCount( test->countTestCases() *2 );
+}
+
+
+void 
+ClockerListener::endTestRun( CPPUNIT_NS::Test *test, 
+                             CPPUNIT_NS::TestResult *eventManager )
+{
+  if ( m_text )
+    printStatistics();
+}
+
+
+void 
+ClockerListener::startTest( CPPUNIT_NS::Test *test )
+{
+  m_model->enterTest( test, false );
+}
+
+
+void 
+ClockerListener::endTest( CPPUNIT_NS::Test *test )
+{
+  m_model->exitTest( test, false );
+}
+
+
+void 
+ClockerListener::startSuite( CPPUNIT_NS::Test *suite )
+{
+  m_model->enterTest( suite, true );
+}
+
+
+void 
+ClockerListener::endSuite( CPPUNIT_NS::Test *suite )
+{
+  m_model->exitTest( suite, true );
+}
+
+
+void 
+ClockerListener::printStatistics() const
+{
+  printTest( 0, "" );
+  std::cout  <<  std::endl;
+  std::cout  <<  "Total elapsed time: ";
+  printTime( m_model->totalElapsedTime() );
+  std::cout  <<  ", average test case time: ";
+  printTime( m_model->averageTestCaseTime() );
+}
+
+
+void 
+ClockerListener::printTest( int testIndex,
+                            const std::string &indentString ) const
+{
+  std::string indent = indentString;
+  const int indentLength = 3;
+
+  printTestIndent( indentString, indentLength );
+  printTime( m_model->testTimeFor( testIndex ) );
+
+  std::cout  <<  m_model->testPathFor( testIndex ).getChildTest()->getName();
+  std::cout  <<  std::endl;
+
+  if ( m_model->childCountFor( testIndex ) == 0 )
+    indent+= std::string( indentLength, ' ' );
+  else
+    indent+= "|" + std::string( indentLength -1, ' ' );
+
+  for ( int index =0; index < m_model->childCountFor( testIndex ); ++index )
+    printTest( m_model->childAtFor( testIndex, index ), indent );
+}
+
+
+void 
+ClockerListener::printTestIndent( const std::string &indent,
+                                  const int indentLength ) const
+{
+  if ( indent.empty() )
+    return;
+
+  std::cout << "   ";
+  std::cout << indent.substr( 0, indent.length() - indentLength ) ;
+  std::cout << "+"  <<  std::string( indentLength -1, '-' );
+}
+
+
+void 
+ClockerListener::printTime( double time ) const
+{
+  std::cout <<  '('  <<  ClockerModel::timeStringFor( time )  <<  "s) ";
+}
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerListener.h b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerListener.h
new file mode 100644 (file)
index 0000000..17d85d4
--- /dev/null
@@ -0,0 +1,66 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file ClockerListener.h for class ClockerListener
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/04/19
+// //////////////////////////////////////////////////////////////////////////
+#ifndef CLOCKERLISTENER_H
+#define CLOCKERLISTENER_H
+
+#include <cppunit/TestListener.h>
+
+class ClockerModel;
+
+
+/// TestListener that prints a flatten or hierarchical view of the test tree.
+class ClockerListener : public CPPUNIT_NS::TestListener
+{
+public:
+  ClockerListener( ClockerModel *model,
+                   bool text );
+
+  virtual ~ClockerListener();
+
+  void startTestRun( CPPUNIT_NS::Test *test, 
+                     CPPUNIT_NS::TestResult *eventManager );
+
+  void endTestRun( CPPUNIT_NS::Test *test, 
+                   CPPUNIT_NS::TestResult *eventManager );
+
+  void startTest( CPPUNIT_NS::Test *test );
+
+  void endTest( CPPUNIT_NS::Test *test );
+
+  void startSuite( CPPUNIT_NS::Test *suite );
+
+  void endSuite( CPPUNIT_NS::Test *suite );
+
+private:
+  void printStatistics() const;
+
+  void printTest( int testIndex,
+                  const std::string &indentString ) const;
+
+  void printTestIndent( const std::string &indent,
+                        const int indentLength ) const;
+
+  void printTime( double time ) const;
+
+  /// Prevents the use of the copy constructor.
+  ClockerListener( const ClockerListener &other );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const ClockerListener &other );
+
+private:
+  ClockerModel *m_model;
+  bool m_text;
+};
+
+
+
+// Inlines methods for ClockerListener:
+// -----------------------------------
+
+
+
+#endif  // CLOCKERLISTENER_H
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerModel.cpp b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerModel.cpp
new file mode 100644 (file)
index 0000000..c20ede1
--- /dev/null
@@ -0,0 +1,145 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file ClockerModel.cpp for class ClockerModel
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/06/14
+// //////////////////////////////////////////////////////////////////////////
+#include "ClockerModel.h"
+
+
+ClockerModel::ClockerModel()
+    : m_testCaseCount( 0 )
+    , m_totalTestCaseTime( 0 )
+{
+}
+
+
+ClockerModel::~ClockerModel()
+{
+}
+
+
+void 
+ClockerModel::setExpectedTestCount( int count )
+{
+  m_tests.reserve( count );
+}
+
+
+void 
+ClockerModel::enterTest( CPPUNIT_NS::Test *test,
+                         bool isSuite )
+{
+  m_currentPath.add( test );
+
+  int testIndex = m_tests.size();
+  if ( !m_testIndexes.empty() )
+    m_tests[ m_testIndexes.top() ].m_childIndexes.push_back( testIndex );
+  m_testIndexes.push( testIndex );
+  m_testToIndexes.insert( TestToIndexes::value_type( test, testIndex ) );
+
+  TestInfo info;
+  info.m_timer.start();
+  info.m_path = m_currentPath;
+  info.m_isSuite = isSuite;
+
+  m_tests.push_back( info );
+
+  if ( !isSuite )
+    ++m_testCaseCount;
+}
+
+
+void 
+ClockerModel::exitTest( CPPUNIT_NS::Test *test,
+                        bool isSuite )
+{
+  m_tests[ m_testIndexes.top() ].m_timer.finish();
+  if ( !isSuite )
+    m_totalTestCaseTime += m_tests.back().m_timer.elapsedTime();
+
+  m_currentPath.up();
+  m_testIndexes.pop();
+}
+
+
+double 
+ClockerModel::totalElapsedTime() const
+{
+  return m_tests[0].m_timer.elapsedTime();
+}
+
+
+double 
+ClockerModel::averageTestCaseTime() const
+{
+  double average = 0;
+  if ( m_testCaseCount > 0 )
+    average = m_totalTestCaseTime / m_testCaseCount;
+  return average;
+}
+
+
+double 
+ClockerModel::testTimeFor( int testIndex ) const
+{
+  return m_tests[ testIndex ].m_timer.elapsedTime();
+}
+
+
+std::string 
+ClockerModel::timeStringFor( double time )
+{
+  char buffer[320];
+  const char *format;
+  if ( time < 1 )
+    format = "%2.3f";
+  else if ( time < 10 )
+    format = "%3.2f";
+  else if (time < 100 )
+    format = "%4.1f";
+  else
+    format = "%6f";
+
+  ::sprintf( buffer, format, time );
+
+  return buffer;
+}
+
+
+bool 
+ClockerModel::isSuite( int testIndex ) const
+{
+  return m_tests[ testIndex ].m_isSuite;
+}
+
+
+const CPPUNIT_NS::TestPath &
+ClockerModel::testPathFor( int testIndex ) const
+{
+  return m_tests[ testIndex ].m_path;
+}
+
+
+int 
+ClockerModel::indexOf( CPPUNIT_NS::Test *test ) const
+{
+  TestToIndexes::const_iterator itFound = m_testToIndexes.find( test );
+  if ( itFound != m_testToIndexes.end() )
+    return itFound->second;
+  return -1;
+}
+
+
+int 
+ClockerModel::childCountFor( int testIndex ) const
+{
+  return m_tests[ testIndex ].m_childIndexes.size();
+}
+
+
+int 
+ClockerModel::childAtFor( int testIndex, 
+                          int chidIndex ) const
+{
+  return m_tests[ testIndex ].m_childIndexes[ chidIndex ];
+}
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerModel.h b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerModel.h
new file mode 100644 (file)
index 0000000..46f7ff1
--- /dev/null
@@ -0,0 +1,95 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file ClockerModel.h for class ClockerModel
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/06/14
+// //////////////////////////////////////////////////////////////////////////
+#ifndef CLOCKERMODEL_H
+#define CLOCKERMODEL_H
+
+#include <cppunit/TestPath.h>
+#include <cppunit/portability/CppUnitVector.h>
+#include <cppunit/portability/CppUnitMap.h>
+#include <cppunit/portability/CppUnitStack.h>
+#include <string>
+
+#ifdef CLOCKER_USE_WINNTTIMER
+#include "WinNtTimer.h"
+typedef WinNtTimer Timer;
+#else
+#include "Timer.h"
+#endif
+
+
+/// Model that represents test timing.
+class ClockerModel
+{
+public:
+  /*! Constructs a ClockerModel object.
+   */
+  ClockerModel();
+
+  /// Destructor.
+  virtual ~ClockerModel();
+
+  void setExpectedTestCount( int count );
+
+  void enterTest( CPPUNIT_NS::Test *test,
+                  bool isSuite );
+
+  void exitTest( CPPUNIT_NS::Test *test,
+                 bool isSuite );
+
+  double totalElapsedTime() const;
+
+  double averageTestCaseTime() const;
+
+  double testTimeFor( CPPUNIT_NS::Test *test ) const;
+
+  double testTimeFor( int testIndex ) const;
+
+  static std::string timeStringFor( double time );
+
+  bool isSuite( int testIndex ) const;
+
+  const CPPUNIT_NS::TestPath &testPathFor( int testIndex ) const;
+
+  // -1 is none
+  int indexOf( CPPUNIT_NS::Test *test ) const;
+
+  int childCountFor( int testIndex ) const;
+
+  int childAtFor( int testIndex, 
+                  int chidIndex ) const;
+
+private:
+  struct TestInfo
+  {
+    CPPUNIT_NS::TestPath m_path;
+    Timer m_timer;
+    bool m_isSuite;
+    CppUnitVector<int> m_childIndexes;
+  };
+
+  /// Prevents the use of the copy constructor.
+  ClockerModel( const ClockerModel &other );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const ClockerModel &other );
+
+private:
+  CPPUNIT_NS::TestPath m_currentPath;
+  
+  int m_testCaseCount;
+  double m_totalTestCaseTime;
+
+  typedef CppUnitMap<CPPUNIT_NS::Test *, int> TestToIndexes;
+  
+  TestToIndexes m_testToIndexes;
+  CppUnitStack<int> m_testIndexes;
+  CppUnitVector<TestInfo> m_tests;
+};
+
+
+
+
+#endif  // CLOCKERMODEL_H
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerPlugIn.cpp b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerPlugIn.cpp
new file mode 100644 (file)
index 0000000..ad81b72
--- /dev/null
@@ -0,0 +1,77 @@
+#include <cppunit/TestResult.h>
+#include <cppunit/XmlOutputter.h>
+#include <cppunit/plugin/TestPlugIn.h>
+#include "ClockerXmlHook.h"
+#include "ClockerListener.h"
+#include "ClockerModel.h"
+
+
+
+class ClockerPlugIn : public CppUnitTestPlugIn
+{
+public:
+  ClockerPlugIn()
+    : m_dumper( NULL )
+    , m_model( NULL )
+    , m_xmlHook( NULL )
+  {
+  }
+
+  ~ClockerPlugIn()
+  {
+    delete m_dumper;
+    delete m_model;
+    delete m_xmlHook;
+  }
+
+
+  void initialize( CPPUNIT_NS::TestFactoryRegistry *registry,
+                   const CPPUNIT_NS::PlugInParameters &parameters )
+  {
+    bool text = false;
+    if ( parameters.getCommandLine() == "text" )
+      text = true;
+
+    m_model = new ClockerModel();
+    m_dumper = new ClockerListener( m_model, text );
+    m_xmlHook = new ClockerXmlHook( m_model );
+  }
+
+
+  void addListener( CPPUNIT_NS::TestResult *eventManager )
+  {
+    eventManager->addListener( m_dumper );
+  }
+
+
+  void removeListener( CPPUNIT_NS::TestResult *eventManager )
+  {
+    eventManager->removeListener( m_dumper );
+  }
+
+
+  void addXmlOutputterHooks( CPPUNIT_NS::XmlOutputter *outputter )
+  {
+    outputter->addHook( m_xmlHook );
+  }
+
+
+  void removeXmlOutputterHooks()
+  {
+  }
+
+
+  void uninitialize( CPPUNIT_NS::TestFactoryRegistry *registry )
+  {
+  }
+
+private:
+  ClockerListener *m_dumper;
+  ClockerModel *m_model;
+  ClockerXmlHook *m_xmlHook;
+};
+
+
+CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL( ClockerPlugIn );
+
+CPPUNIT_TESTPLUGIN_MAIN();
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerPlugIn.dsp b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerPlugIn.dsp
new file mode 100644 (file)
index 0000000..02a7624
--- /dev/null
@@ -0,0 +1,229 @@
+# Microsoft Developer Studio Project File - Name="ClockerPlugIn" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=ClockerPlugIn - Win32 Debug NtTimer\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "ClockerPlugIn.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "ClockerPlugIn.mak" CFG="ClockerPlugIn - Win32 Debug NtTimer"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "ClockerPlugIn - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "ClockerPlugIn - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "ClockerPlugIn - Win32 Debug NtTimer" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "ClockerPlugIn - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CLOCKERPLUGIN_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_DLL" /FD /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /dll /machine:I386 /out:"../../lib/ClockerPlugIn.dll" /libpath:"../../lib/"\r
+\r
+!ELSEIF  "$(CFG)" == "ClockerPlugIn - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CLOCKERPLUGIN_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_DLL" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /dll /debug /machine:I386 /out:"../../lib/ClockerPlugInd.dll" /pdbtype:sept /libpath:"../../lib/"\r
+\r
+!ELSEIF  "$(CFG)" == "ClockerPlugIn - Win32 Debug NtTimer"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug NtTimer"\r
+# PROP BASE Intermediate_Dir "Debug NtTimer"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "DebugNtTimer"\r
+# PROP Intermediate_Dir "DebugNtTimer"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_DLL" /FD /GZ /c\r
+# SUBTRACT BASE CPP /YX\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_DLL" /D "CLOCKER_USE_WINNTTIMER" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /dll /debug /machine:I386 /out:"../../lib/ClockerPlugInd.dll" /pdbtype:sept /libpath:"../../lib/"\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /dll /debug /machine:I386 /out:"../../lib/ClockerPlugInNtd.dll" /pdbtype:sept /libpath:"../../lib/"\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "ClockerPlugIn - Win32 Release"\r
+# Name "ClockerPlugIn - Win32 Debug"\r
+# Name "ClockerPlugIn - Win32 Debug NtTimer"\r
+# Begin Source File\r
+\r
+SOURCE=.\ClockerListener.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ClockerListener.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ClockerModel.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ClockerModel.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ClockerPlugIn.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ClockerXmlHook.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ClockerXmlHook.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Makefile.am\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ReadMe.txt\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Timer.cpp\r
+\r
+!IF  "$(CFG)" == "ClockerPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "ClockerPlugIn - Win32 Debug"\r
+\r
+!ELSEIF  "$(CFG)" == "ClockerPlugIn - Win32 Debug NtTimer"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Timer.h\r
+\r
+!IF  "$(CFG)" == "ClockerPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "ClockerPlugIn - Win32 Debug"\r
+\r
+!ELSEIF  "$(CFG)" == "ClockerPlugIn - Win32 Debug NtTimer"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\WinNtTimer.cpp\r
+\r
+!IF  "$(CFG)" == "ClockerPlugIn - Win32 Release"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "ClockerPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "ClockerPlugIn - Win32 Debug NtTimer"\r
+\r
+# PROP BASE Exclude_From_Build 1\r
+# PROP Intermediate_Dir "DebugNtTimer"\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\WinNtTimer.h\r
+\r
+!IF  "$(CFG)" == "ClockerPlugIn - Win32 Release"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "ClockerPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "ClockerPlugIn - Win32 Debug NtTimer"\r
+\r
+# PROP BASE Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerXmlHook.cpp b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerXmlHook.cpp
new file mode 100644 (file)
index 0000000..20cc2f8
--- /dev/null
@@ -0,0 +1,94 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file ClockerXmlHook.cpp for class ClockerXmlHook
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/06/14
+// //////////////////////////////////////////////////////////////////////////
+
+#include <cppunit/Test.h>
+#include <cppunit/tools/XmlDocument.h>
+#include <cppunit/tools/XmlElement.h>
+#include "ClockerModel.h"
+#include "ClockerXmlHook.h"
+
+
+ClockerXmlHook::ClockerXmlHook( ClockerModel *model )
+    : m_model( model )
+{
+}
+
+
+ClockerXmlHook::~ClockerXmlHook()
+{
+}
+
+
+void 
+ClockerXmlHook::endDocument( CPPUNIT_NS::XmlDocument *document )
+{
+  CPPUNIT_NS::XmlElement *testTreeElement = new CPPUNIT_NS::XmlElement( "TimedTestTree" );
+  document->rootElement().addElement( testTreeElement );
+
+  addTimedTest( testTreeElement, 0 );
+}
+
+
+void 
+ClockerXmlHook::addTimedTest( CPPUNIT_NS::XmlElement *parentElement, 
+                              int testIndex )
+{
+  std::string elementName = m_model->isSuite( testIndex ) ? "TimedSuite" : "TimedTest";
+  CPPUNIT_NS::XmlElement *testElement = new CPPUNIT_NS::XmlElement( elementName );
+  parentElement->addElement( testElement );
+  testElement->addAttribute( "id", testIndex );
+
+  const CPPUNIT_NS::TestPath &path = m_model->testPathFor( testIndex );
+  testElement->addElement( new CPPUNIT_NS::XmlElement( "Name", 
+                                                    path.getChildTest()->getName() ) );
+  testElement->addElement( new CPPUNIT_NS::XmlElement( "TestPath", path.toString() ) );
+  testElement->addElement( new CPPUNIT_NS::XmlElement( "Time", 
+                                 ClockerModel::timeStringFor( 
+                                    m_model->testTimeFor( testIndex ) ) ) );
+
+  if ( m_model->isSuite( testIndex ) )
+  {
+    for ( int childIndex =0; childIndex < m_model->childCountFor( testIndex ); ++childIndex )
+      addTimedTest( testElement, m_model->childAtFor( testIndex, childIndex ) );
+  }
+}
+
+
+void 
+ClockerXmlHook::failTestAdded( CPPUNIT_NS::XmlDocument *document,
+                               CPPUNIT_NS::XmlElement *testElement,
+                               CPPUNIT_NS::Test *test,
+                               CPPUNIT_NS::TestFailure *failure )
+{
+  successfulTestAdded( document, testElement, test );
+}
+
+
+void 
+ClockerXmlHook::successfulTestAdded( CPPUNIT_NS::XmlDocument *document,
+                                     CPPUNIT_NS::XmlElement *testElement,
+                                     CPPUNIT_NS::Test *test )
+{
+  int testIndex = m_model->indexOf( test );
+  double time = (testIndex >= 0) ? m_model->testTimeFor( testIndex ) : 0.0;
+  const CPPUNIT_NS::TestPath &path = m_model->testPathFor( testIndex );
+  testElement->addElement( new CPPUNIT_NS::XmlElement( "TestPath", path.toString() ) );
+  testElement->addElement( new CPPUNIT_NS::XmlElement( "Time",
+                                   ClockerModel::timeStringFor( time ) ) );
+}
+
+
+void 
+ClockerXmlHook::statisticsAdded( CPPUNIT_NS::XmlDocument *document,
+                                 CPPUNIT_NS::XmlElement *statisticsElement )
+{
+  statisticsElement->addElement( 
+      new CPPUNIT_NS::XmlElement( "TotalElapsedTime",
+           ClockerModel::timeStringFor( m_model->totalElapsedTime() ) ) );
+  statisticsElement->addElement( 
+      new CPPUNIT_NS::XmlElement( "AverageTestCaseTime",
+           ClockerModel::timeStringFor( m_model->averageTestCaseTime() ) ) );
+}
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerXmlHook.h b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ClockerXmlHook.h
new file mode 100644 (file)
index 0000000..831e106
--- /dev/null
@@ -0,0 +1,61 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file ClockerXmlHook.h for class ClockerXmlHook
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/06/14
+// //////////////////////////////////////////////////////////////////////////
+#ifndef CLOCKERXMLHOOK_H
+#define CLOCKERXMLHOOK_H
+
+#include <cppunit/XmlOutputterHook.h>
+
+class ClockerModel;
+
+
+
+/// XML output hook to add test timing and test hierarchy timing.
+class ClockerXmlHook : public CPPUNIT_NS::XmlOutputterHook
+{
+public:
+  /*! Constructs a ClockerXmlHook object.
+   */
+  ClockerXmlHook( ClockerModel *model );
+
+  /// Destructor.
+  virtual ~ClockerXmlHook();
+
+  void endDocument( CPPUNIT_NS::XmlDocument *document );
+
+  void failTestAdded( CPPUNIT_NS::XmlDocument *document,
+                      CPPUNIT_NS::XmlElement *testElement,
+                      CPPUNIT_NS::Test *test,
+                      CPPUNIT_NS::TestFailure *failure );
+
+  void successfulTestAdded( CPPUNIT_NS::XmlDocument *document,
+                            CPPUNIT_NS::XmlElement *testElement,
+                            CPPUNIT_NS::Test *test );
+
+  void statisticsAdded( CPPUNIT_NS::XmlDocument *document,
+                        CPPUNIT_NS::XmlElement *statisticsElement );
+
+private:
+  /// Prevents the use of the copy constructor.
+  ClockerXmlHook( const ClockerXmlHook &other );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const ClockerXmlHook &other );
+
+  void addTimedTest( CPPUNIT_NS::XmlElement *parentElement, 
+                     int testIndex );
+
+private:
+  ClockerModel *m_model;
+};
+
+
+
+// Inlines methods for ClockerXmlHook:
+// -----------------------------------
+
+
+
+#endif  // CLOCKERXMLHOOK_H
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/Makefile.am b/lib/cppunit-1.10.0/examples/ClockerPlugIn/Makefile.am
new file mode 100644 (file)
index 0000000..65c18c9
--- /dev/null
@@ -0,0 +1,6 @@
+EXTRA_DIST =  WinNtTimer.h WinNtTimer.cpp ClockerPlugIn.dsp \
+       Timer.h ClockerListener.h \
+       Timer.cpp ClockerListener.cpp \
+       ClockerPlugIn.cpp ClockerModel.h \
+  ClockerModel.cpp ReadMe.txt \
+  ClockerXmlHook.h ClockerXmlHook.cpp
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/Makefile.in b/lib/cppunit-1.10.0/examples/ClockerPlugIn/Makefile.in
new file mode 100644 (file)
index 0000000..a531015
--- /dev/null
@@ -0,0 +1,305 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+EXTRA_DIST = WinNtTimer.h WinNtTimer.cpp ClockerPlugIn.dsp \
+       Timer.h ClockerListener.h \
+       Timer.cpp ClockerListener.cpp \
+       ClockerPlugIn.cpp ClockerModel.h \
+  ClockerModel.cpp ReadMe.txt \
+  ClockerXmlHook.h ClockerXmlHook.cpp
+
+subdir = examples/ClockerPlugIn
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+DIST_COMMON = Makefile.am Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  examples/ClockerPlugIn/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile
+
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       distclean distclean-generic distclean-libtool distdir dvi \
+       dvi-am info info-am install install-am install-data \
+       install-data-am install-exec install-exec-am install-info \
+       install-info-am install-man install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+       uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/ReadMe.txt b/lib/cppunit-1.10.0/examples/ClockerPlugIn/ReadMe.txt
new file mode 100644 (file)
index 0000000..57e4fc5
--- /dev/null
@@ -0,0 +1,44 @@
+A test plug-ins that track tests and test suites running time. It demonstrates
+TestListener, TestPlugIn, and XmlOutputterHook.
+
+Both suite and test case times are tracked. The plug-in include in the XML
+output the TestPath of each test cases and its tracked time.
+
+The timed test hierarchy is also included in the XML output. This way it is
+possible to see the time each suite takes to run.
+
+
+
+* Usage:
+
+Just add this plug-in to DllPlugInTester command line. It will add a test 
+listener to track test time, and add a hook to the XmlOutputter to include
+test time to the XmlOutput.
+
+If the option "text" is passed to the plug-in, the timed test tree will be
+printed to stdout.
+
+DllPlugInRunnerd.exe ClockerPlugInd.dll
+or
+DllPlugInRunnerd.exe ClockerPlugInd.dll=text
+
+* Example:
+
+DllPlugInTesterd_dll.exe -x timed.xml ClockerPlugInd.dll CppUnitTestPlugInd.dll 
+
+Will track time of all tests contains in CppUnitTestPlugInd.dll and save the
+result in timed.xml.
+
+* Notes:
+
+The id of the <TimedTestTree> are different than those of the
+<SuccessfulTests> and <FailedTests> trees. You can use the <TestPath> to 
+cross-reference the datas.
+
+* Remarks:
+
+You may want to review ClockerModel before using this plug-in for serious
+purpose, add timing based on the process cpu time.
+
+A version is provided for NT that use the main thread cpu time. This is an issue 
+if the test cases are multithreaded.
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/Timer.cpp b/lib/cppunit-1.10.0/examples/ClockerPlugIn/Timer.cpp
new file mode 100644 (file)
index 0000000..6719817
--- /dev/null
@@ -0,0 +1,28 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file Timer.cpp for class Timer
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/04/19
+// //////////////////////////////////////////////////////////////////////////
+
+#include "Timer.h"
+
+
+void 
+Timer::start()
+{
+  m_beginTime = clock();
+}
+
+
+void 
+Timer::finish()
+{
+  m_elapsedTime = double(clock() - m_beginTime) / CLOCKS_PER_SEC;
+}
+
+
+double 
+Timer::elapsedTime() const
+{
+  return m_elapsedTime;
+}
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/Timer.h b/lib/cppunit-1.10.0/examples/ClockerPlugIn/Timer.h
new file mode 100644 (file)
index 0000000..e2b3449
--- /dev/null
@@ -0,0 +1,32 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file Timer.h for class Timer
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/04/19
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TIMER_H
+#define TIMER_H
+
+#include <time.h>
+
+/// A Timer.
+class Timer
+{
+public:
+  void start();
+  void finish();
+
+  double elapsedTime() const;
+
+private:
+  clock_t m_beginTime;
+  double m_elapsedTime;
+};
+
+
+
+// Inlines methods for Timer:
+// --------------------------
+
+
+
+#endif  // TIMER_H
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/WinNtTimer.cpp b/lib/cppunit-1.10.0/examples/ClockerPlugIn/WinNtTimer.cpp
new file mode 100644 (file)
index 0000000..87546a2
--- /dev/null
@@ -0,0 +1,77 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file WinNtTimer.cpp for class WinNtTimer
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/04/19
+// //////////////////////////////////////////////////////////////////////////
+
+#include "WinNtTimer.h"
+
+
+/*! Returns time spent in the thread.
+ * @param rquadTime Receive the time spent in the thread (user+kernel time) 
+ *                  in unit of 100 nano-seconds.
+ *                  In pratice, the effective resolution is 10ms !!!
+ *
+ * @return \c true if sucess, \c false otherwise.
+ */
+static bool 
+GetThreadSpentTime( LONGLONG &rquadTime )
+{
+  FILETIME timeCreation;
+  FILETIME timeExit;
+  FILETIME timeKernel;
+  FILETIME timeUser;
+  if ( !::GetThreadTimes( ::GetCurrentThread(),
+                          &timeCreation,
+                          &timeExit,
+                          &timeKernel,
+                          &timeUser) )
+  {
+    rquadTime = 0;
+    return false;
+  }
+
+  LARGE_INTEGER lintKernel;
+  lintKernel.LowPart = timeKernel.dwLowDateTime;
+  lintKernel.HighPart = timeKernel.dwHighDateTime;
+
+  LARGE_INTEGER lintUser;
+  lintUser.LowPart = timeUser.dwLowDateTime;
+  lintUser.HighPart = timeUser.dwHighDateTime;
+
+  rquadTime = lintKernel.QuadPart + lintUser.QuadPart;
+
+  return true;
+}
+
+
+
+void 
+WinNtTimer::start()
+{
+  m_isValid = GetThreadSpentTime( m_beginTime );
+
+}
+
+
+void 
+WinNtTimer::finish()
+{
+  LONGLONG quadTimeEnd;
+  LONGLONG quadProcessedElapse;
+  m_isValid = m_isValid  && GetThreadSpentTime( quadTimeEnd );
+  if ( m_isValid )
+  {
+    quadProcessedElapse = quadTimeEnd - m_beginTime;
+    m_elapsedTime = double(quadProcessedElapse) / 10000000;
+  }
+  else
+    m_elapsedTime = -1;
+}
+
+
+double 
+WinNtTimer::elapsedTime() const
+{
+  return m_elapsedTime;
+}
diff --git a/lib/cppunit-1.10.0/examples/ClockerPlugIn/WinNtTimer.h b/lib/cppunit-1.10.0/examples/ClockerPlugIn/WinNtTimer.h
new file mode 100644 (file)
index 0000000..fa871b9
--- /dev/null
@@ -0,0 +1,36 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file WinNtTimer.h for class WinNtTimer
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/04/19
+// //////////////////////////////////////////////////////////////////////////
+#ifndef WINNTTIMER_H
+#define WINNTTIMER_H
+
+#include <windows.h>
+#include <winnt.h>
+#include <winbase.h>
+
+
+/// A Timer.
+class WinNtTimer
+{
+public:
+  void start();
+  void finish();
+
+  double elapsedTime() const;
+
+private:
+  LONGLONG m_beginTime;
+  double m_elapsedTime;
+  bool m_isValid;
+};
+
+
+
+// Inlines methods for Timer:
+// --------------------------
+
+
+
+#endif  // WINNTTIMER_H
diff --git a/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperListener.cpp b/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperListener.cpp
new file mode 100644 (file)
index 0000000..dc4d066
--- /dev/null
@@ -0,0 +1,120 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file DumperListener.cpp for class DumperListener
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/04/19
+// //////////////////////////////////////////////////////////////////////////
+#include <cppunit/Test.h>
+#include <iostream>
+#include "DumperListener.h"
+
+DumperListener::DumperListener( bool flatten )
+    : m_flatten( flatten )
+    , m_suiteCount( 0 )
+    , m_testCount( 0 )
+    , m_suiteWithTestCount( 0 )
+{
+}
+
+
+DumperListener::~DumperListener()
+{
+}
+
+
+void 
+DumperListener::startTest( CPPUNIT_NS::Test *test )
+{
+  printPath( test, false );
+  ++m_testCount;
+}
+
+
+void 
+DumperListener::endTest( CPPUNIT_NS::Test *test )
+{
+  m_path.up();
+  if ( !m_suiteHasTest.empty() )
+  {
+    m_suiteHasTest.pop();
+    m_suiteHasTest.push( true );
+  }
+}
+
+
+void 
+DumperListener::startSuite( CPPUNIT_NS::Test *suite )
+{
+  printPath( suite, true );
+  ++m_suiteCount;
+  m_suiteHasTest.push( false );
+}
+
+
+void 
+DumperListener::endSuite( CPPUNIT_NS::Test *suite )
+{
+  m_path.up();
+  if ( m_suiteHasTest.top() )
+    ++m_suiteWithTestCount;
+  m_suiteHasTest.pop();
+}
+
+
+void 
+DumperListener::endTestRun( CPPUNIT_NS::Test *test, 
+                            CPPUNIT_NS::TestResult *eventManager )
+{
+  double average = 0;
+  if ( m_suiteWithTestCount > 0 )
+    average = double(m_testCount) / m_suiteWithTestCount;
+
+  std::cout << "Statistics: "  <<  m_testCount  <<  " test cases, "
+            << m_suiteCount << " suites, "
+            << average << " test cases / suite with test cases"
+            << std::endl;
+}
+
+
+void 
+DumperListener::printPath( CPPUNIT_NS::Test *test, 
+                           bool isSuite )
+{
+  m_path.add( test );
+
+  if ( m_flatten )
+    printFlattenedPath( isSuite );
+  else
+    printIndentedPathChild();
+}
+
+
+void 
+DumperListener::printFlattenedPath( bool isSuite )
+{
+  std::string path = m_path.toString();
+  if ( isSuite )
+    path += "/";
+  std::cout  <<  path  <<  std::endl;
+}
+
+
+void 
+DumperListener::printIndentedPathChild()
+{
+  std::string indent = makeIndentString( m_path.getTestCount() -1 );
+  std::cout  <<  indent  <<  m_path.getChildTest()->getName()  <<  std::endl;
+}
+
+
+std::string 
+DumperListener::makeIndentString( int indentLevel )
+{
+  std::string indent;
+  for ( int parentIndent =0; parentIndent < indentLevel-1; ++parentIndent )
+    indent += "|  ";
+  
+  if ( indentLevel > 0 )
+    indent += "+--";
+
+  return indent;
+}
diff --git a/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperListener.h b/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperListener.h
new file mode 100644 (file)
index 0000000..0e24f34
--- /dev/null
@@ -0,0 +1,67 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file DumperListener.h for class DumperListener
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/04/19
+// //////////////////////////////////////////////////////////////////////////
+#ifndef DUMPERLISTENER_H
+#define DUMPERLISTENER_H
+
+#include <cppunit/portability/CppUnitStack.h>
+#include <cppunit/TestListener.h>
+#include <cppunit/TestPath.h>
+
+
+/// TestListener that prints a flatten or hierarchical view of the test tree.
+class DumperListener : public CPPUNIT_NS::TestListener
+{
+public:
+  DumperListener( bool flatten );
+
+  virtual ~DumperListener();
+
+  void startTest( CPPUNIT_NS::Test *test );
+
+  void endTest( CPPUNIT_NS::Test *test );
+
+  void startSuite( CPPUNIT_NS::Test *suite );
+
+  void endSuite( CPPUNIT_NS::Test *suite );
+
+  void endTestRun( CPPUNIT_NS::Test *test, 
+                   CPPUNIT_NS::TestResult *eventManager );
+
+private:
+  /// Prevents the use of the copy constructor.
+  DumperListener( const DumperListener &other );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const DumperListener &other );
+
+  void printPath( CPPUNIT_NS::Test *test, 
+                  bool isSuite );
+
+  void printFlattenedPath( bool isSuite );
+
+  void printIndentedPathChild();
+
+  std::string makeIndentString( int indentLevel );
+
+private:
+  bool m_flatten;
+  CPPUNIT_NS::TestPath m_path;
+  
+  int m_suiteCount;
+  int m_testCount;
+  int m_suiteWithTestCount;
+
+  CppUnitStack<bool> m_suiteHasTest;
+};
+
+
+
+// Inlines methods for DumperListener:
+// -----------------------------------
+
+
+
+#endif  // DUMPERLISTENER_H
diff --git a/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperPlugIn.cpp b/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperPlugIn.cpp
new file mode 100644 (file)
index 0000000..b15d9a3
--- /dev/null
@@ -0,0 +1,65 @@
+#include <cppunit/TestResult.h>
+#include <cppunit/plugin/TestPlugIn.h>
+#include "DumperListener.h"
+
+
+
+class DumperPlugIn : public CppUnitTestPlugIn
+{
+public:
+  DumperPlugIn()
+    : m_dumper( NULL )
+  {
+  }
+
+  ~DumperPlugIn()
+  {
+    delete m_dumper;
+  }
+
+
+  void initialize( CPPUNIT_NS::TestFactoryRegistry *registry,
+                   const CPPUNIT_NS::PlugInParameters &parameters )
+  {
+    bool flatten = false;
+    if ( parameters.getCommandLine() == "flat" )
+      flatten = true;
+
+    m_dumper = new DumperListener( flatten );
+  }
+
+
+  void addListener( CPPUNIT_NS::TestResult *eventManager )
+  {
+    eventManager->addListener( m_dumper );
+  }
+
+
+  void removeListener( CPPUNIT_NS::TestResult *eventManager )
+  {
+    eventManager->removeListener( m_dumper );
+  }
+
+
+  void addXmlOutputterHooks( CPPUNIT_NS::XmlOutputter *outputter )
+  {
+  }
+
+
+  void removeXmlOutputterHooks()
+  {
+  }
+
+
+  void uninitialize( CPPUNIT_NS::TestFactoryRegistry *registry )
+  {
+  }
+
+private:
+  DumperListener *m_dumper;
+};
+
+
+CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL( DumperPlugIn );
+
+CPPUNIT_TESTPLUGIN_MAIN();
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperPlugIn.dsp b/lib/cppunit-1.10.0/examples/DumperPlugIn/DumperPlugIn.dsp
new file mode 100644 (file)
index 0000000..301ea30
--- /dev/null
@@ -0,0 +1,107 @@
+# Microsoft Developer Studio Project File - Name="DumperPlugIn" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=DumperPlugIn - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "DumperPlugIn.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "DumperPlugIn.mak" CFG="DumperPlugIn - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "DumperPlugIn - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "DumperPlugIn - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "DumperPlugIn - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 1\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DUMPERPLUGIN_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DUMPERPLUGIN_EXPORTS" /YX /FD /c\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /dll /machine:I386 /out:"../../lib/DumperPlugIn.dll" /libpath:"../../lib/"\r
+\r
+!ELSEIF  "$(CFG)" == "DumperPlugIn - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 1\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DUMPERPLUGIN_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DUMPERPLUGIN_EXPORTS" /YX /FD /GZ /c\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /dll /debug /machine:I386 /out:"../../lib/DumperPlugInd.dll" /pdbtype:sept /libpath:"../../lib/"\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "DumperPlugIn - Win32 Release"\r
+# Name "DumperPlugIn - Win32 Debug"\r
+# Begin Source File\r
+\r
+SOURCE=.\DumperListener.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DumperListener.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DumperPlugIn.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Makefile.am\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/examples/DumperPlugIn/Makefile.am b/lib/cppunit-1.10.0/examples/DumperPlugIn/Makefile.am
new file mode 100644 (file)
index 0000000..bb1f6d3
--- /dev/null
@@ -0,0 +1,2 @@
+EXTRA_DIST =  DumperListener.h     DumperListener.cpp   DumperPlugIn.cpp  \
+       DumperPlugIn.dsp
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/examples/DumperPlugIn/Makefile.in b/lib/cppunit-1.10.0/examples/DumperPlugIn/Makefile.in
new file mode 100644 (file)
index 0000000..fd4e772
--- /dev/null
@@ -0,0 +1,301 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+EXTRA_DIST = DumperListener.h     DumperListener.cpp   DumperPlugIn.cpp  \
+       DumperPlugIn.dsp
+
+subdir = examples/DumperPlugIn
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+DIST_COMMON = Makefile.am Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  examples/DumperPlugIn/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile
+
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       distclean distclean-generic distclean-libtool distdir dvi \
+       dvi-am info info-am install install-am install-data \
+       install-data-am install-exec install-exec-am install-info \
+       install-info-am install-man install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+       uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/examples/Makefile.am b/lib/cppunit-1.10.0/examples/Makefile.am
new file mode 100644 (file)
index 0000000..f1d522a
--- /dev/null
@@ -0,0 +1,7 @@
+SUBDIRS = hierarchy cppunittest simple ClockerPlugIn DumperPlugIn money
+
+# No dist subdir for msvc6: is handled by toplevel dist-hook
+# DIST_SUBDIRS = msvc6
+
+EXTRA_DIST = examples.dsw examples.opt
+
diff --git a/lib/cppunit-1.10.0/examples/Makefile.in b/lib/cppunit-1.10.0/examples/Makefile.in
new file mode 100644 (file)
index 0000000..76d2b01
--- /dev/null
@@ -0,0 +1,453 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = hierarchy cppunittest simple ClockerPlugIn DumperPlugIn money
+
+
+# No dist subdir for msvc6: is handled by toplevel dist-hook
+# DIST_SUBDIRS = msvc6
+EXTRA_DIST = examples.dsw examples.opt
+subdir = examples
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+       ps-recursive install-info-recursive uninstall-info-recursive \
+       all-recursive install-data-recursive install-exec-recursive \
+       installdirs-recursive install-recursive uninstall-recursive \
+       check-recursive installcheck-recursive
+DIST_COMMON = Makefile.am Makefile.in
+DIST_SUBDIRS = $(SUBDIRS)
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  examples/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+       @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       if (etags --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+       else \
+         include_option=--include; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -f $$subdir/TAGS && \
+             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d $(distdir)/$$subdir \
+           || mkdir $(distdir)/$$subdir \
+           || exit 1; \
+           (cd $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$(top_distdir)" \
+               distdir=../$(distdir)/$$subdir \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+       clean-generic clean-libtool clean-recursive ctags \
+       ctags-recursive distclean distclean-generic distclean-libtool \
+       distclean-recursive distclean-tags distdir dvi dvi-am \
+       dvi-recursive info info-am info-recursive install install-am \
+       install-data install-data-am install-data-recursive \
+       install-exec install-exec-am install-exec-recursive \
+       install-info install-info-am install-info-recursive install-man \
+       install-recursive install-strip installcheck installcheck-am \
+       installdirs installdirs-am installdirs-recursive \
+       maintainer-clean maintainer-clean-generic \
+       maintainer-clean-recursive mostlyclean mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-recursive pdf pdf-am \
+       pdf-recursive ps ps-am ps-recursive tags tags-recursive \
+       uninstall uninstall-am uninstall-info-am \
+       uninstall-info-recursive uninstall-recursive
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/BaseTestCase.cpp b/lib/cppunit-1.10.0/examples/cppunittest/BaseTestCase.cpp
new file mode 100644 (file)
index 0000000..c1cde16
--- /dev/null
@@ -0,0 +1,36 @@
+#include "BaseTestCase.h"
+
+
+BaseTestCase::BaseTestCase()
+{
+}
+
+
+BaseTestCase::~BaseTestCase()
+{
+}
+
+
+void 
+BaseTestCase::setUp()
+{
+}
+
+
+void 
+BaseTestCase::tearDown()
+{
+}
+
+
+void 
+BaseTestCase::testUsingCheckIt()
+{
+  checkIt();
+}
+
+
+void 
+BaseTestCase::checkIt()
+{
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/BaseTestCase.h b/lib/cppunit-1.10.0/examples/cppunittest/BaseTestCase.h
new file mode 100644 (file)
index 0000000..019ed66
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef BASETESTCASE_H
+#define BASETESTCASE_H
+
+#include <cppunit/extensions/HelperMacros.h>
+
+
+class BaseTestCase : public CPPUNIT_NS::TestCase
+{
+  CPPUNIT_TEST_SUITE( BaseTestCase );
+  CPPUNIT_TEST( testUsingCheckIt );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  BaseTestCase();
+  virtual ~BaseTestCase();
+
+  virtual void setUp();
+  virtual void tearDown();
+
+  void testUsingCheckIt();
+
+protected:
+  virtual void checkIt();
+
+private:
+  BaseTestCase( const BaseTestCase &copy );
+  void operator =( const BaseTestCase &copy );
+};
+
+
+
+#endif  // BASETESTCASE_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/CoreSuite.h b/lib/cppunit-1.10.0/examples/cppunittest/CoreSuite.h
new file mode 100644 (file)
index 0000000..eb352cb
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef CPPUNITTEST_CORESUITE_H
+#define CPPUNITTEST_CORESUITE_H
+
+#include <cppunit/Portability.h>
+#include <string>
+
+inline std::string coreSuiteName()
+{
+  return "Core";
+}
+
+#endif // CPPUNITTEST_CORESUITE_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.cpp b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.cpp
new file mode 100644 (file)
index 0000000..aa7591e
--- /dev/null
@@ -0,0 +1,66 @@
+#include <cppunit/CompilerOutputter.h>
+#include <cppunit/TestResult.h>
+#include <cppunit/TestResultCollector.h>
+#include <cppunit/TestRunner.h>
+#include <cppunit/TextTestProgressListener.h>
+#include <cppunit/BriefTestProgressListener.h>
+#include <cppunit/XmlOutputter.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <stdexcept>
+#include <fstream>
+
+
+int 
+main( int argc, char* argv[] )
+{
+  // Retreive test path from command line first argument. Default to "" which resolve
+  // to the top level suite.
+  std::string testPath = (argc > 1) ? std::string(argv[1]) : std::string("");
+
+  // Create the event manager and test controller
+  CPPUNIT_NS::TestResult controller;
+
+  // Add a listener that colllects test result
+  CPPUNIT_NS::TestResultCollector result;
+  controller.addListener( &result );        
+
+  // Add a listener that print dots as test run.
+#ifdef WIN32
+  CPPUNIT_NS::TextTestProgressListener progress;
+#else
+  CPPUNIT_NS::BriefTestProgressListener progress;
+#endif
+  controller.addListener( &progress );      
+
+  // Add the top suite to the test runner
+  CPPUNIT_NS::TestRunner runner;
+  runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );   
+  try
+  {
+    std::cout << "Running "  <<  testPath;
+    runner.run( controller, testPath );
+
+    std::cerr << std::endl;
+
+    // Print test in a compiler compatible format.
+    CPPUNIT_NS::CompilerOutputter outputter( &result, std::cerr );
+    outputter.write(); 
+
+// Uncomment this for XML output
+//    std::ofstream file( "tests.xml" );
+//    CPPUNIT_NS::XmlOutputter xml( &result, file );
+//    xml.setStyleSheet( "report.xsl" );
+//    xml.write();
+//    file.close();
+  }
+  catch ( std::invalid_argument &e )  // Test path not resolved
+  {
+    std::cerr  <<  std::endl  
+               <<  "ERROR: "  <<  e.what()
+               << std::endl;
+    return 0;
+  }
+
+  return result.wasSuccessful() ? 0 : 1;
+}
+
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.dsp b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.dsp
new file mode 100644 (file)
index 0000000..005946c
--- /dev/null
@@ -0,0 +1,536 @@
+# Microsoft Developer Studio Project File - Name="CppUnitTestMain" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
+\r
+CFG=CppUnitTestMain - Win32 Debug DLL\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "CppUnitTestMain.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "CppUnitTestMain.mak" CFG="CppUnitTestMain - Win32 Debug DLL"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "CppUnitTestMain - Win32 Release" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "CppUnitTestMain - Win32 Debug" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "CppUnitTestMain - Win32 Release DLL" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "CppUnitTestMain - Win32 Debug DLL" (based on "Win32 (x86) Console Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "CppUnitTestMain - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /libpath:"../../lib/"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\CppUnitTestMain.exe\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Self test\r
+PostBuild_Cmds=$(TargetPath)\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "CppUnitTestMain - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../lib/"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\CppUnitTestMain.exe\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Self test\r
+PostBuild_Cmds=$(TargetPath)\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "CppUnitTestMain - Win32 Release DLL"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "CppUnitTestMain___Win32_Release_DLL"\r
+# PROP BASE Intermediate_Dir "CppUnitTestMain___Win32_Release_DLL"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "ReleaseDLL"\r
+# PROP Intermediate_Dir "ReleaseDLL"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /GR /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_USE_TYPEINFO" /FD /c\r
+# SUBTRACT BASE CPP /YX /Yc /Yu\r
+# ADD CPP /nologo /MD /W3 /GR /GX /Ox /Ot /Oa /Ow /Og /Oi /Op /Oy /Ob0 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /FD /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../lib/cppunit.lib /nologo /subsystem:console /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /subsystem:console /machine:I386 /libpath:"../../lib/"\r
+# Begin Special Build Tool\r
+TargetPath=.\ReleaseDLL\CppUnitTestMain.exe\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Self test\r
+PostBuild_Cmds=$(TargetPath)\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "CppUnitTestMain - Win32 Debug DLL"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "CppUnitTestMain___Win32_Debug_DLL"\r
+# PROP BASE Intermediate_Dir "CppUnitTestMain___Win32_Debug_DLL"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "DebugDLL"\r
+# PROP Intermediate_Dir "DebugDLL"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c\r
+# SUBTRACT BASE CPP /YX /Yc /Yu\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /FD /GZ /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../lib/cppunitd.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../lib/"\r
+# Begin Special Build Tool\r
+TargetPath=.\DebugDLL\CppUnitTestMain.exe\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Self test\r
+PostBuild_Cmds=$(TargetPath)\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "CppUnitTestMain - Win32 Release"\r
+# Name "CppUnitTestMain - Win32 Debug"\r
+# Name "CppUnitTestMain - Win32 Release DLL"\r
+# Name "CppUnitTestMain - Win32 Debug DLL"\r
+# Begin Group "Tests"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Group "Core"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\ExceptionTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ExceptionTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MessageTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MessageTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestAssertTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestAssertTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestCallerTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestCallerTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestCaseTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestCaseTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestFailureTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestFailureTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPathTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPathTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestResultTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestResultTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSuiteTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSuiteTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestTest.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "UnitTestTools"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlUniformiser.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlUniformiser.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlUniformiserTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlUniformiserTest.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Helper"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\HelperMacrosTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\HelperMacrosTest.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Extension"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\ExceptionTestCaseDecoratorTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ExceptionTestCaseDecoratorTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\OrthodoxTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\OrthodoxTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\RepeatedTestTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\RepeatedTestTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestDecoratorTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestDecoratorTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSetUpTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSetUpTest.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Output"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\TestResultCollectorTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestResultCollectorTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlOutputterTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlOutputterTest.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Tools"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\StringToolsTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StringToolsTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlElementTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlElementTest.h\r
+# End Source File\r
+# End Group\r
+# End Group\r
+# Begin Group "TestSupport"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\BaseTestCase.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\BaseTestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\FailureException.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MockFunctor.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MockProtector.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MockTestCase.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MockTestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MockTestListener.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MockTestListener.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\SubclassedTestCase.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\SubclassedTestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\SynchronizedTestResult.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TrackedTestCase.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TrackedTestCase.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Suites"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\CoreSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\CppUnitTestSuite.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ExtensionSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\HelperSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\OutputSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ToolsSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\UnitTestToolSuite.h\r
+# End Source File\r
+# End Group\r
+# Begin Source File\r
+\r
+SOURCE=..\..\lib\cppunit_dll.dll\r
+\r
+!IF  "$(CFG)" == "CppUnitTestMain - Win32 Release"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "CppUnitTestMain - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "CppUnitTestMain - Win32 Release DLL"\r
+\r
+# Begin Custom Build - Updating DLL: $(InputPath)\r
+IntDir=.\ReleaseDLL\r
+InputPath=..\..\lib\cppunit_dll.dll\r
+InputName=cppunit_dll\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF  "$(CFG)" == "CppUnitTestMain - Win32 Debug DLL"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\lib\cppunitd_dll.dll\r
+\r
+!IF  "$(CFG)" == "CppUnitTestMain - Win32 Release"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "CppUnitTestMain - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "CppUnitTestMain - Win32 Release DLL"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "CppUnitTestMain - Win32 Debug DLL"\r
+\r
+# Begin Custom Build - Updating DLL: $(InputPath)\r
+IntDir=.\DebugDLL\r
+InputPath=..\..\lib\cppunitd_dll.dll\r
+InputName=cppunitd_dll\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\CppUnitTestMain.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Makefile.am\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.dsw b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestMain.dsw
new file mode 100644 (file)
index 0000000..a991330
--- /dev/null
@@ -0,0 +1,59 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00\r
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
+\r
+###############################################################################\r
+\r
+Project: "CppUnitTestMain"=.\CppUnitTestMain.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit\r
+    End Project Dependency\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit_dll\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "cppunit"=..\..\src\cppunit\cppunit.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "cppunit_dll"=..\..\SRC\CPPUNIT\cppunit_dll.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Global:\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<3>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestPlugIn.cpp b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestPlugIn.cpp
new file mode 100644 (file)
index 0000000..1517b11
--- /dev/null
@@ -0,0 +1,5 @@
+#include <cppunit/plugin/TestPlugIn.h>
+
+
+// Implements all the plug-in stuffs, WinMain...
+CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestPlugIn.dsp b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestPlugIn.dsp
new file mode 100644 (file)
index 0000000..0dd3f57
--- /dev/null
@@ -0,0 +1,395 @@
+# Microsoft Developer Studio Project File - Name="CppUnitTestPlugIn" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=CppUnitTestPlugIn - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "CppUnitTestPlugIn.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "CppUnitTestPlugIn.mak" CFG="CppUnitTestPlugIn - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "CppUnitTestPlugIn - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "CppUnitTestPlugIn - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "CppUnitTestPlugIn - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "ReleasePlugIn"\r
+# PROP Intermediate_Dir "ReleasePlugIn"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNITTESTPLUGIN_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../include" /D "NDEBUG" /D "CPPUNITTESTPLUGIN_EXPORTS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_DLL" /YX /FD /c\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /dll /machine:I386 /libpath:"../../lib/"\r
+\r
+!ELSEIF  "$(CFG)" == "CppUnitTestPlugIn - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "DebugPlugIn"\r
+# PROP Intermediate_Dir "DebugPlugIn"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNITTESTPLUGIN_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "CPPUNIT_DLL" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /GZ /c\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /dll /debug /machine:I386 /out:"DebugPlugIn/CppUnitTestPlugInd.dll" /pdbtype:sept /libpath:"../../lib/"\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "CppUnitTestPlugIn - Win32 Release"\r
+# Name "CppUnitTestPlugIn - Win32 Debug"\r
+# Begin Group "Suites"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\CoreSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\CppUnitTestSuite.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\CppUnitTestSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ExtensionSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\HelperSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\OutputSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ToolsSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\UnitTestToolSuite.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "TestSupport"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\BaseTestCase.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\BaseTestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\FailureException.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MockFunctor.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MockProtector.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MockTestCase.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MockTestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MockTestListener.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MockTestListener.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\SubclassedTestCase.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\SubclassedTestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\SynchronizedTestResult.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TrackedTestCase.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TrackedTestCase.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Tests"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Group "Core"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\ExceptionTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ExceptionTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MessageTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MessageTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestAssertTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestAssertTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestCallerTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestCallerTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestCaseTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestCaseTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestFailureTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestFailureTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPathTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPathTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestResultTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestResultTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSuiteTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSuiteTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestTest.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "UnitTestTools"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlUniformiser.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlUniformiser.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlUniformiserTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlUniformiserTest.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Helper"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\HelperMacrosTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\HelperMacrosTest.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Extension"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\ExceptionTestCaseDecoratorTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ExceptionTestCaseDecoratorTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\OrthodoxTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\OrthodoxTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\RepeatedTestTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\RepeatedTestTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestDecoratorTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestDecoratorTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSetUpTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSetUpTest.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Output"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\TestResultCollectorTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestResultCollectorTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlOutputterTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlOutputterTest.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Tools"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\StringToolsTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StringToolsTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlElementTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlElementTest.h\r
+# End Source File\r
+# End Group\r
+# End Group\r
+# Begin Source File\r
+\r
+SOURCE=.\CppUnitTestPlugIn.cpp\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestSuite.cpp b/lib/cppunit-1.10.0/examples/cppunittest/CppUnitTestSuite.cpp
new file mode 100644 (file)
index 0000000..2b5ec2d
--- /dev/null
@@ -0,0 +1,14 @@
+#include <cppunit/extensions/HelperMacros.h>
+#include "CoreSuite.h"
+#include "HelperSuite.h"
+#include "ExtensionSuite.h"
+#include "OutputSuite.h"
+#include "ToolsSuite.h"
+#include "UnitTestToolSuite.h"
+
+CPPUNIT_REGISTRY_ADD_TO_DEFAULT( coreSuiteName() );
+CPPUNIT_REGISTRY_ADD_TO_DEFAULT( extensionSuiteName() );
+CPPUNIT_REGISTRY_ADD_TO_DEFAULT( helperSuiteName() );
+CPPUNIT_REGISTRY_ADD_TO_DEFAULT( outputSuiteName() );
+CPPUNIT_REGISTRY_ADD_TO_DEFAULT( toolsSuiteName() );
+CPPUNIT_REGISTRY_ADD_TO_DEFAULT( unitTestToolSuiteName() );
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTest.cpp
new file mode 100644 (file)
index 0000000..31dce64
--- /dev/null
@@ -0,0 +1,95 @@
+#include "CoreSuite.h"
+#include "ExceptionTest.h"
+#include <cppunit/Exception.h>
+#include <memory>
+
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ExceptionTest,
+                                       coreSuiteName() );
+
+
+ExceptionTest::ExceptionTest()
+{
+}
+
+
+ExceptionTest::~ExceptionTest()
+{
+}
+
+
+void 
+ExceptionTest::setUp()
+{
+}
+
+
+void 
+ExceptionTest::tearDown()
+{
+}
+
+
+void 
+ExceptionTest::testConstructor()
+{
+  const CPPUNIT_NS::Message message( "a message" );
+  const CPPUNIT_NS::SourceLine sourceLine( "dir/afile.cpp", 17 );
+  
+  CPPUNIT_NS::Exception e( message, sourceLine );
+
+  CPPUNIT_ASSERT_EQUAL( message.shortDescription(), e.message().shortDescription() );
+  CPPUNIT_ASSERT( sourceLine == e.sourceLine() );
+}
+
+
+void 
+ExceptionTest::testDefaultConstructor()
+{
+  CPPUNIT_NS::Exception e;
+
+  CPPUNIT_ASSERT( CPPUNIT_NS::Message() == e.message() );
+  CPPUNIT_ASSERT( !e.sourceLine().isValid() );
+}
+
+
+void 
+ExceptionTest::testCopyConstructor()
+{
+  CPPUNIT_NS::SourceLine sourceLine( "fileName.cpp", 123 );
+  CPPUNIT_NS::Exception e( CPPUNIT_NS::Message("message"), sourceLine  );
+  CPPUNIT_NS::Exception other( e );
+  checkIsSame( e, other );
+}
+
+
+void 
+ExceptionTest::testAssignment()
+{
+  CPPUNIT_NS::SourceLine sourceLine( "fileName.cpp", 123 );
+  CPPUNIT_NS::Exception e( CPPUNIT_NS::Message("message"), sourceLine  );
+  CPPUNIT_NS::Exception other;
+  other = e;
+  checkIsSame( e, other );
+}
+
+
+void 
+ExceptionTest::testClone()
+{
+  CPPUNIT_NS::SourceLine sourceLine( "fileName.cpp", 123 );
+  CPPUNIT_NS::Exception e( CPPUNIT_NS::Message("message"), sourceLine  );
+  std::auto_ptr<CPPUNIT_NS::Exception> other( e.clone() );
+  checkIsSame( e, *other.get() );
+}
+
+
+void 
+ExceptionTest::checkIsSame( CPPUNIT_NS::Exception &e, 
+                            CPPUNIT_NS::Exception &other )
+{
+  std::string eWhat( e.what() );
+  std::string otherWhat( other.what() );
+  CPPUNIT_ASSERT_EQUAL( eWhat, otherWhat );
+  CPPUNIT_ASSERT( e.sourceLine() == other.sourceLine() );
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTest.h b/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTest.h
new file mode 100644 (file)
index 0000000..a3b4c91
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef EXCEPTIONTEST_H
+#define EXCEPTIONTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+
+
+class ExceptionTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( ExceptionTest );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testDefaultConstructor );
+  CPPUNIT_TEST( testCopyConstructor );
+  CPPUNIT_TEST( testAssignment );
+  CPPUNIT_TEST( testClone );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  ExceptionTest();
+  virtual ~ExceptionTest();
+
+  virtual void setUp();
+  virtual void tearDown();
+
+  void testConstructor();
+  void testDefaultConstructor();
+  void testCopyConstructor();
+  void testAssignment();
+  void testClone();
+
+private:
+  ExceptionTest( const ExceptionTest &copy );
+  void operator =( const ExceptionTest &copy );
+  void checkIsSame( CPPUNIT_NS::Exception &e, 
+                    CPPUNIT_NS::Exception &other );
+
+private:
+};
+
+
+
+#endif  // EXCEPTIONTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTestCaseDecoratorTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTestCaseDecoratorTest.cpp
new file mode 100644 (file)
index 0000000..1773038
--- /dev/null
@@ -0,0 +1,71 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file ExceptionTestCaseDecoratorTest.cpp for class ExceptionTestCaseDecoratorTest
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/08/03
+// //////////////////////////////////////////////////////////////////////////
+
+#include "ExtensionSuite.h"
+#include "ExceptionTestCaseDecoratorTest.h"
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ExceptionTestCaseDecoratorTest,
+                                       extensionSuiteName() );
+
+
+ExceptionTestCaseDecoratorTest::ExceptionTestCaseDecoratorTest()
+{
+}
+
+
+ExceptionTestCaseDecoratorTest::~ExceptionTestCaseDecoratorTest()
+{
+}
+
+
+void 
+ExceptionTestCaseDecoratorTest::setUp()
+{
+  m_testListener = new MockTestListener( "mock-testlistener" );
+  m_result = new CPPUNIT_NS::TestResult();
+  m_result->addListener( m_testListener );
+
+  m_test = new MockTestCase( "mock-decorated-testcase" );
+  m_decorator = new FailureExceptionTestCase( m_test );
+}
+
+
+void 
+ExceptionTestCaseDecoratorTest::tearDown()
+{
+  delete m_decorator;
+  delete m_result;
+  delete m_testListener;
+}
+
+
+void 
+ExceptionTestCaseDecoratorTest::testNoExceptionThrownFailed()
+{
+  m_testListener->setExpectedAddFailureCall(1);
+  m_test->setExpectedSetUpCall();
+  m_test->setExpectedRunTestCall();
+  m_test->setExpectedTearDownCall();
+
+  m_decorator->run( m_result );
+
+  m_testListener->verify();
+}
+
+
+void 
+ExceptionTestCaseDecoratorTest::testExceptionThrownPass()
+{
+  m_testListener->setExpectNoFailure();
+  m_test->setExpectedSetUpCall();
+  m_test->setExpectedRunTestCall();
+  m_test->setExpectedTearDownCall();
+  m_test->makeRunTestThrow();
+
+  m_decorator->run( m_result );
+
+  m_testListener->verify();
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTestCaseDecoratorTest.h b/lib/cppunit-1.10.0/examples/cppunittest/ExceptionTestCaseDecoratorTest.h
new file mode 100644 (file)
index 0000000..da9d168
--- /dev/null
@@ -0,0 +1,61 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file ExceptionTestCaseDecoratorTest.h for class ExceptionTestCaseDecoratorTest
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/08/03
+// //////////////////////////////////////////////////////////////////////////
+#ifndef EXCEPTIONTESTCASEDECORATORTEST_H
+#define EXCEPTIONTESTCASEDECORATORTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/TestResult.h>
+#include "FailureException.h"
+#include "MockTestCase.h"
+#include "MockTestListener.h"
+
+
+/// Unit tests for ExceptionTestCaseDecoratorTest
+class ExceptionTestCaseDecoratorTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( ExceptionTestCaseDecoratorTest );
+  CPPUNIT_TEST( testNoExceptionThrownFailed );
+  CPPUNIT_TEST( testExceptionThrownPass );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  /*! Constructs a ExceptionTestCaseDecoratorTest object.
+   */
+  ExceptionTestCaseDecoratorTest();
+
+  /// Destructor.
+  virtual ~ExceptionTestCaseDecoratorTest();
+
+  void setUp();
+  void tearDown();
+
+  void testNoExceptionThrownFailed();
+  void testExceptionThrownPass();
+
+private:
+  /// Prevents the use of the copy constructor.
+  ExceptionTestCaseDecoratorTest( const ExceptionTestCaseDecoratorTest &other );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const ExceptionTestCaseDecoratorTest &other );
+
+private:
+  typedef CPPUNIT_NS::ExceptionTestCaseDecorator<FailureException> FailureExceptionTestCase;
+
+  CPPUNIT_NS::TestResult *m_result;
+  MockTestListener *m_testListener;
+  MockTestCase *m_test;
+  FailureExceptionTestCase *m_decorator;
+};
+
+
+
+// Inlines methods for ExceptionTestCaseDecoratorTest:
+// ---------------------------------------------------
+
+
+
+#endif  // EXCEPTIONTESTCASEDECORATORTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/ExtensionSuite.h b/lib/cppunit-1.10.0/examples/cppunittest/ExtensionSuite.h
new file mode 100644 (file)
index 0000000..d92e430
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef CPPUNITTEST_EXTENSIONSSUITE_H
+#define CPPUNITTEST_EXTENSIONSSUITE_H
+
+#include <cppunit/Portability.h>
+#include <string>
+
+inline std::string extensionSuiteName()
+{
+  return "Extensions";
+}
+
+#endif // CPPUNITTEST_EXTENSIONSSUITE_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/FailureException.h b/lib/cppunit-1.10.0/examples/cppunittest/FailureException.h
new file mode 100644 (file)
index 0000000..0a4be47
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef FAILUREEXCEPTION_H
+#define FAILUREEXCEPTION_H
+
+
+class FailureException
+{
+};
+
+
+#endif  // FAILUREEXCEPTION_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/HelperMacrosTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/HelperMacrosTest.cpp
new file mode 100644 (file)
index 0000000..1bf73b0
--- /dev/null
@@ -0,0 +1,226 @@
+#include "FailureException.h"
+#include "HelperMacrosTest.h"
+#include "HelperSuite.h"
+#include "MockTestCase.h"
+#include "SubclassedTestCase.h"
+#include <cppunit/TestResult.h>
+#include <memory>
+
+/* Note:
+ - no unit test for CPPUNIT_TEST_SUITE_REGISTRATION...
+ */
+
+class FailTestFixture : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( FailTestFixture );
+  CPPUNIT_TEST_FAIL( testFail );
+  CPPUNIT_TEST_SUITE_END();
+public:
+  void testFail()
+  {
+    CPPUNIT_ASSERT_MESSAGE( "Failure", false );
+  }
+};
+
+
+class FailToFailTestFixture : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( FailToFailTestFixture );
+  CPPUNIT_TEST_FAIL( testFailToFail );
+  CPPUNIT_TEST_SUITE_END();
+public:
+  void testFailToFail()
+  {
+  }
+};
+
+
+class ExceptionTestFixture : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( ExceptionTestFixture );
+  CPPUNIT_TEST_EXCEPTION( testException, FailureException );
+  CPPUNIT_TEST_SUITE_END();
+public:
+  void testException()
+  {
+    throw FailureException();
+  }
+};
+
+
+class ExceptionNotCaughtTestFixture : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( ExceptionNotCaughtTestFixture );
+  CPPUNIT_TEST_EXCEPTION( testExceptionNotCaught, FailureException );
+  CPPUNIT_TEST_SUITE_END();
+public:
+  void testExceptionNotCaught()
+  {
+  }
+};
+
+
+class CustomsTestTestFixture : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( CustomsTestTestFixture );
+  CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS( addCustomTests );
+  CPPUNIT_TEST_SUITE_END();
+public:
+  static void addCustomTests( TestSuiteBuilderContextType &context )
+  {
+    MockTestCase *test1 = new MockTestCase( context.getTestNameFor( "myCustomTest1" ) );
+    test1->makeRunTestThrow();
+    MockTestCase *test2 = new MockTestCase( context.getTestNameFor( "myCustomTest2" ) );
+    context.addTest( test1 );
+    context.addTest( test2 );
+  }
+};
+
+
+#undef TEST_ADD_N_MOCK
+#define TEST_ADD_N_MOCK( totalCount )                                              \
+  {                                                                 \
+    for ( int count = (totalCount); count > 0; --count )            \
+      CPPUNIT_TEST_SUITE_ADD_TEST(                                  \
+         new MockTestCase( context.getTestNameFor( "dummyName" ) ) ); \
+  }
+
+
+
+class AddTestTestFixture : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( AddTestTestFixture );
+  TEST_ADD_N_MOCK( 7 );
+  CPPUNIT_TEST_SUITE_END();
+public:
+};
+
+
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( HelperMacrosTest, 
+                                       helperSuiteName() );
+
+
+HelperMacrosTest::HelperMacrosTest()
+{
+}
+
+
+HelperMacrosTest::~HelperMacrosTest()
+{
+}
+
+
+void 
+HelperMacrosTest::setUp()
+{
+  m_testListener = new MockTestListener( "mock-testlistener" );
+  m_result = new CPPUNIT_NS::TestResult();
+  m_result->addListener( m_testListener );
+}
+
+
+void 
+HelperMacrosTest::tearDown()
+{
+  delete m_result;
+  delete m_testListener;
+}
+
+
+void 
+HelperMacrosTest::testNoSubclassing()
+{
+  std::auto_ptr<CPPUNIT_NS::TestSuite> suite( BaseTestCase::suite() );
+  CPPUNIT_ASSERT_EQUAL( 1, suite->countTestCases() );
+  m_testListener->setExpectedStartTestCall( 1 );
+  m_testListener->setExpectNoFailure();
+
+  suite->run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+HelperMacrosTest::testSubclassing()
+{
+  std::auto_ptr<CPPUNIT_NS::TestSuite> suite( SubclassedTestCase::suite() );
+  CPPUNIT_ASSERT_EQUAL( 2, suite->countTestCases() );
+  m_testListener->setExpectedStartTestCall( 2 );
+  m_testListener->setExpectedAddFailureCall( 1 );
+
+  suite->run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+HelperMacrosTest::testFail()
+{
+  std::auto_ptr<CPPUNIT_NS::TestSuite> suite( FailTestFixture::suite() );
+  m_testListener->setExpectedStartTestCall( 1 );
+  m_testListener->setExpectNoFailure();
+
+  suite->run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+HelperMacrosTest::testFailToFail()
+{
+  std::auto_ptr<CPPUNIT_NS::TestSuite> suite( FailToFailTestFixture::suite() );
+  m_testListener->setExpectedStartTestCall( 1 );
+  m_testListener->setExpectedAddFailureCall( 1 );
+
+  suite->run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+HelperMacrosTest::testException()
+{
+  std::auto_ptr<CPPUNIT_NS::TestSuite> suite( ExceptionTestFixture::suite() );
+  m_testListener->setExpectedStartTestCall( 1 );
+  m_testListener->setExpectNoFailure();
+  
+  suite->run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+HelperMacrosTest::testExceptionNotCaught()
+{
+  std::auto_ptr<CPPUNIT_NS::TestSuite> suite( ExceptionNotCaughtTestFixture::suite() );
+  m_testListener->setExpectedStartTestCall( 1 );
+  m_testListener->setExpectedAddFailureCall( 1 );
+
+  suite->run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+HelperMacrosTest::testCustomTests()
+{
+  std::auto_ptr<CPPUNIT_NS::TestSuite> suite( CustomsTestTestFixture::suite() );
+  m_testListener->setExpectedStartTestCall( 2 );
+  m_testListener->setExpectedAddFailureCall( 1 );
+
+  suite->run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+HelperMacrosTest::testAddTest()
+{
+  std::auto_ptr<CPPUNIT_NS::TestSuite> suite( AddTestTestFixture::suite() );
+  m_testListener->setExpectedStartTestCall( 7 );
+  m_testListener->setExpectedAddFailureCall( 0 );
+
+  suite->run( m_result );
+  m_testListener->verify();
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/HelperMacrosTest.h b/lib/cppunit-1.10.0/examples/cppunittest/HelperMacrosTest.h
new file mode 100644 (file)
index 0000000..7a09797
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef HELPERMACROSTEST_H
+#define HELPERMACROSTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include "MockTestListener.h"
+
+
+class HelperMacrosTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( HelperMacrosTest );
+  CPPUNIT_TEST( testNoSubclassing );
+  CPPUNIT_TEST( testSubclassing );
+  CPPUNIT_TEST( testFail );
+  CPPUNIT_TEST( testFailToFail );
+  CPPUNIT_TEST( testException );
+  CPPUNIT_TEST( testExceptionNotCaught );
+  CPPUNIT_TEST( testCustomTests );
+  CPPUNIT_TEST( testAddTest );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  HelperMacrosTest();
+  virtual ~HelperMacrosTest();
+
+  virtual void setUp();
+  virtual void tearDown();
+
+  void testNoSubclassing();
+
+  void testSubclassing();
+
+  void testFail();
+  void testFailToFail();
+
+  void testException();
+  void testExceptionNotCaught();
+
+  void testCustomTest();
+  void testCustomTests();
+  void testAddTest();
+
+private:
+  HelperMacrosTest( const HelperMacrosTest &copy );
+  void operator =( const HelperMacrosTest &copy );
+
+private:
+  CPPUNIT_NS::TestResult *m_result;
+  MockTestListener *m_testListener;
+};
+
+
+
+#endif  // HELPERMACROSTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/HelperSuite.h b/lib/cppunit-1.10.0/examples/cppunittest/HelperSuite.h
new file mode 100644 (file)
index 0000000..88dd3dc
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef CPPUNITTEST_HELPERSUITE_H
+#define CPPUNITTEST_HELPERSUITE_H
+
+#include <cppunit/Portability.h>
+#include <string>
+
+inline std::string helperSuiteName()
+{
+  return "Helpers";
+}
+
+
+#endif // CPPUNITTEST_HELPERSUITE_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/Makefile.am b/lib/cppunit-1.10.0/examples/cppunittest/Makefile.am
new file mode 100644 (file)
index 0000000..0b22541
--- /dev/null
@@ -0,0 +1,81 @@
+EXTRA_DIST = CppUnitTestMain.dsw CppUnitTestMain.dsp CppUnitTestPlugIn.dsp CppUnitTestPlugIn.cpp
+
+TESTS = cppunittestmain
+check_PROGRAMS = $(TESTS)
+
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
+
+cppunittestmain_SOURCES = \
+       BaseTestCase.cpp \
+       BaseTestCase.h \
+       CoreSuite.h \
+       CppUnitTestMain.cpp \
+       CppUnitTestSuite.cpp \
+       ExceptionTest.cpp \
+       ExceptionTest.h \
+  ExceptionTestCaseDecoratorTest.h \
+  ExceptionTestCaseDecoratorTest.cpp \
+       ExtensionSuite.h \
+       FailureException.h \
+       HelperMacrosTest.cpp \
+       HelperMacrosTest.h \
+       HelperSuite.h \
+       MessageTest.h \
+       MessageTest.cpp \
+  MockFunctor.h \
+  MockProtector.h \
+       MockTestCase.h \
+       MockTestCase.cpp \
+       MockTestListener.cpp \
+       MockTestListener.h \
+       OrthodoxTest.cpp \
+       OrthodoxTest.h \
+       OutputSuite.h \
+       RepeatedTestTest.cpp \
+       RepeatedTestTest.h \
+  StringToolsTest.h \
+  StringToolsTest.cpp \
+       SubclassedTestCase.cpp \
+       SubclassedTestCase.h \
+       SynchronizedTestResult.h \
+       TestAssertTest.cpp \
+       TestAssertTest.h \
+       TestCallerTest.cpp \
+       TestCallerTest.h \
+       TestCaseTest.cpp \
+       TestCaseTest.h \
+       TestDecoratorTest.cpp \
+       TestDecoratorTest.h \
+       TestFailureTest.cpp \
+       TestFailureTest.h \
+       TestPathTest.h \
+       TestPathTest.cpp \
+       TestResultCollectorTest.cpp \
+       TestResultCollectorTest.h \
+       TestResultTest.cpp \
+       TestResultTest.h \
+       TestSetUpTest.cpp \
+       TestSetUpTest.h \
+       TestSuiteTest.cpp \
+       TestSuiteTest.h \
+       TestTest.cpp \
+       TestTest.h \
+  ToolsSuite.h \
+       TrackedTestCase.cpp \
+       TrackedTestCase.h \
+       UnitTestToolSuite.h \
+       XmlElementTest.h \
+       XmlElementTest.cpp \
+       XmlOutputterTest.h \
+       XmlOutputterTest.cpp \
+       XmlUniformiser.h \
+       XmlUniformiser.cpp \
+       XmlUniformiserTest.h \
+       XmlUniformiserTest.cpp
+
+cppunittestmain_LDADD= \
+  $(top_builddir)/src/cppunit/libcppunit.la 
+
+cppunittestmain_LDFLAGS = $(LIBADD_DL)
+
+
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/Makefile.in b/lib/cppunit-1.10.0/examples/cppunittest/Makefile.in
new file mode 100644 (file)
index 0000000..1c4dcb7
--- /dev/null
@@ -0,0 +1,658 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+EXTRA_DIST = CppUnitTestMain.dsw CppUnitTestMain.dsp CppUnitTestPlugIn.dsp CppUnitTestPlugIn.cpp
+
+TESTS = cppunittestmain
+check_PROGRAMS = $(TESTS)
+
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
+
+cppunittestmain_SOURCES = \
+       BaseTestCase.cpp \
+       BaseTestCase.h \
+       CoreSuite.h \
+       CppUnitTestMain.cpp \
+       CppUnitTestSuite.cpp \
+       ExceptionTest.cpp \
+       ExceptionTest.h \
+  ExceptionTestCaseDecoratorTest.h \
+  ExceptionTestCaseDecoratorTest.cpp \
+       ExtensionSuite.h \
+       FailureException.h \
+       HelperMacrosTest.cpp \
+       HelperMacrosTest.h \
+       HelperSuite.h \
+       MessageTest.h \
+       MessageTest.cpp \
+  MockFunctor.h \
+  MockProtector.h \
+       MockTestCase.h \
+       MockTestCase.cpp \
+       MockTestListener.cpp \
+       MockTestListener.h \
+       OrthodoxTest.cpp \
+       OrthodoxTest.h \
+       OutputSuite.h \
+       RepeatedTestTest.cpp \
+       RepeatedTestTest.h \
+  StringToolsTest.h \
+  StringToolsTest.cpp \
+       SubclassedTestCase.cpp \
+       SubclassedTestCase.h \
+       SynchronizedTestResult.h \
+       TestAssertTest.cpp \
+       TestAssertTest.h \
+       TestCallerTest.cpp \
+       TestCallerTest.h \
+       TestCaseTest.cpp \
+       TestCaseTest.h \
+       TestDecoratorTest.cpp \
+       TestDecoratorTest.h \
+       TestFailureTest.cpp \
+       TestFailureTest.h \
+       TestPathTest.h \
+       TestPathTest.cpp \
+       TestResultCollectorTest.cpp \
+       TestResultCollectorTest.h \
+       TestResultTest.cpp \
+       TestResultTest.h \
+       TestSetUpTest.cpp \
+       TestSetUpTest.h \
+       TestSuiteTest.cpp \
+       TestSuiteTest.h \
+       TestTest.cpp \
+       TestTest.h \
+  ToolsSuite.h \
+       TrackedTestCase.cpp \
+       TrackedTestCase.h \
+       UnitTestToolSuite.h \
+       XmlElementTest.h \
+       XmlElementTest.cpp \
+       XmlOutputterTest.h \
+       XmlOutputterTest.cpp \
+       XmlUniformiser.h \
+       XmlUniformiser.cpp \
+       XmlUniformiserTest.h \
+       XmlUniformiserTest.cpp
+
+
+cppunittestmain_LDADD = \
+  $(top_builddir)/src/cppunit/libcppunit.la 
+
+
+cppunittestmain_LDFLAGS = $(LIBADD_DL)
+subdir = examples/cppunittest
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+check_PROGRAMS = cppunittestmain$(EXEEXT)
+am_cppunittestmain_OBJECTS = BaseTestCase.$(OBJEXT) \
+       CppUnitTestMain.$(OBJEXT) CppUnitTestSuite.$(OBJEXT) \
+       ExceptionTest.$(OBJEXT) \
+       ExceptionTestCaseDecoratorTest.$(OBJEXT) \
+       HelperMacrosTest.$(OBJEXT) MessageTest.$(OBJEXT) \
+       MockTestCase.$(OBJEXT) MockTestListener.$(OBJEXT) \
+       OrthodoxTest.$(OBJEXT) RepeatedTestTest.$(OBJEXT) \
+       StringToolsTest.$(OBJEXT) SubclassedTestCase.$(OBJEXT) \
+       TestAssertTest.$(OBJEXT) TestCallerTest.$(OBJEXT) \
+       TestCaseTest.$(OBJEXT) TestDecoratorTest.$(OBJEXT) \
+       TestFailureTest.$(OBJEXT) TestPathTest.$(OBJEXT) \
+       TestResultCollectorTest.$(OBJEXT) TestResultTest.$(OBJEXT) \
+       TestSetUpTest.$(OBJEXT) TestSuiteTest.$(OBJEXT) \
+       TestTest.$(OBJEXT) TrackedTestCase.$(OBJEXT) \
+       XmlElementTest.$(OBJEXT) XmlOutputterTest.$(OBJEXT) \
+       XmlUniformiser.$(OBJEXT) XmlUniformiserTest.$(OBJEXT)
+cppunittestmain_OBJECTS = $(am_cppunittestmain_OBJECTS)
+cppunittestmain_DEPENDENCIES = $(top_builddir)/src/cppunit/libcppunit.la
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/config
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/BaseTestCase.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/CppUnitTestMain.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/CppUnitTestSuite.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/ExceptionTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/ExceptionTestCaseDecoratorTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/HelperMacrosTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/MessageTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/MockTestCase.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/MockTestListener.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/OrthodoxTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/RepeatedTestTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/StringToolsTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/SubclassedTestCase.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestAssertTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestCallerTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestCaseTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestDecoratorTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestFailureTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestPathTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestResultCollectorTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestResultTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestSetUpTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestSuiteTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/TrackedTestCase.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/XmlElementTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/XmlOutputterTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/XmlUniformiser.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/XmlUniformiserTest.Po
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+       $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(cppunittestmain_SOURCES)
+DIST_COMMON = Makefile.am Makefile.in
+SOURCES = $(cppunittestmain_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  examples/cppunittest/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-checkPROGRAMS:
+       @list='$(check_PROGRAMS)'; for p in $$list; do \
+         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         echo " rm -f $$p $$f"; \
+         rm -f $$p $$f ; \
+       done
+cppunittestmain$(EXEEXT): $(cppunittestmain_OBJECTS) $(cppunittestmain_DEPENDENCIES) 
+       @rm -f cppunittestmain$(EXEEXT)
+       $(CXXLINK) $(cppunittestmain_LDFLAGS) $(cppunittestmain_OBJECTS) $(cppunittestmain_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BaseTestCase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUnitTestMain.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CppUnitTestSuite.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ExceptionTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ExceptionTestCaseDecoratorTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HelperMacrosTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MessageTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MockTestCase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MockTestListener.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OrthodoxTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RepeatedTestTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StringToolsTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SubclassedTestCase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestAssertTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestCallerTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestCaseTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestDecoratorTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestFailureTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestPathTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestResultCollectorTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestResultTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSetUpTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSuiteTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TrackedTestCase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlElementTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlOutputterTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlUniformiser.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlUniformiserTest.Po@am__quote@
+
+distclean-depend:
+       -rm -rf ./$(DEPDIR)
+
+.cpp.o:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@  if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+       srcdir=$(srcdir); export srcdir; \
+       list='$(TESTS)'; \
+       if test -n "$$list"; then \
+         for tst in $$list; do \
+           if test -f ./$$tst; then dir=./; \
+           elif test -f $$tst; then dir=; \
+           else dir="$(srcdir)/"; fi; \
+           if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *" $$tst "*) \
+               xpass=`expr $$xpass + 1`; \
+               failed=`expr $$failed + 1`; \
+               echo "XPASS: $$tst"; \
+             ;; \
+             *) \
+               echo "PASS: $$tst"; \
+             ;; \
+             esac; \
+           elif test $$? -ne 77; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *" $$tst "*) \
+               xfail=`expr $$xfail + 1`; \
+               echo "XFAIL: $$tst"; \
+             ;; \
+             *) \
+               failed=`expr $$failed + 1`; \
+               echo "FAIL: $$tst"; \
+             ;; \
+             esac; \
+           else \
+             skip=`expr $$skip + 1`; \
+             echo "SKIP: $$tst"; \
+           fi; \
+         done; \
+         if test "$$failed" -eq 0; then \
+           if test "$$xfail" -eq 0; then \
+             banner="All $$all tests passed"; \
+           else \
+             banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+           fi; \
+         else \
+           if test "$$xpass" -eq 0; then \
+             banner="$$failed of $$all tests failed"; \
+           else \
+             banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+           fi; \
+         fi; \
+         dashes="$$banner"; \
+         skipped=""; \
+         if test "$$skip" -ne 0; then \
+           skipped="($$skip tests were not run)"; \
+           test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \
+             dashes="$$skipped"; \
+         fi; \
+         report=""; \
+         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+           report="Please report to $(PACKAGE_BUGREPORT)"; \
+           test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \
+             dashes="$$report"; \
+         fi; \
+         dashes=`echo "$$dashes" | sed s/./=/g`; \
+         echo "$$dashes"; \
+         echo "$$banner"; \
+         test -n "$$skipped" && echo "$$skipped"; \
+         test -n "$$report" && echo "$$report"; \
+         echo "$$dashes"; \
+         test "$$failed" -eq 0; \
+       else :; fi
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-compile distclean-depend \
+       distclean-generic distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+       clean-checkPROGRAMS clean-generic clean-libtool ctags distclean \
+       distclean-compile distclean-depend distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am info \
+       info-am install install-am install-data install-data-am \
+       install-exec install-exec-am install-info install-info-am \
+       install-man install-strip installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MessageTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/MessageTest.cpp
new file mode 100644 (file)
index 0000000..c59544d
--- /dev/null
@@ -0,0 +1,234 @@
+#include "CoreSuite.h"
+#include "MessageTest.h"
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( MessageTest,
+                                       coreSuiteName() );
+
+
+MessageTest::MessageTest()
+{
+}
+
+
+MessageTest::~MessageTest()
+{
+}
+
+
+void 
+MessageTest::setUp()
+{
+  m_message = new CPPUNIT_NS::Message();
+}
+
+
+void 
+MessageTest::tearDown()
+{
+  delete m_message;
+}
+
+
+void 
+MessageTest::testDefaultConstructor()
+{
+  std::string empty;
+  CPPUNIT_ASSERT_EQUAL( empty, m_message->shortDescription() );
+  CPPUNIT_ASSERT_EQUAL( 0, m_message->detailCount() );
+}
+
+
+void 
+MessageTest::testDetailAtThrowIfBadIndex()
+{
+  m_message->detailAt( -1 );
+}
+
+
+
+void 
+MessageTest::testDetailAtThrowIfBadIndex2()
+{
+  m_message->detailAt( 0 );
+}
+
+
+void 
+MessageTest::testAddDetail()
+{
+  std::string expected( "first" );
+  m_message->addDetail( expected );
+  CPPUNIT_ASSERT_EQUAL( 1, m_message->detailCount() );
+  CPPUNIT_ASSERT_EQUAL( expected, m_message->detailAt(0) );
+}
+
+
+void 
+MessageTest::testAddDetail2()
+{
+  std::string expected1( "first" );
+  std::string expected2( "second" );
+  m_message->addDetail( expected1, expected2 );
+  CPPUNIT_ASSERT_EQUAL( 2, m_message->detailCount() );
+  CPPUNIT_ASSERT_EQUAL( expected1, m_message->detailAt(0) );
+  CPPUNIT_ASSERT_EQUAL( expected2, m_message->detailAt(1) );
+}
+
+
+void 
+MessageTest::testAddDetail3()
+{
+  std::string expected1( "first" );
+  std::string expected2( "second" );
+  std::string expected3( "third" );
+  m_message->addDetail( expected1, expected2, expected3 );
+  CPPUNIT_ASSERT_EQUAL( 3, m_message->detailCount() );
+  CPPUNIT_ASSERT_EQUAL( expected1, m_message->detailAt(0) );
+  CPPUNIT_ASSERT_EQUAL( expected2, m_message->detailAt(1) );
+  CPPUNIT_ASSERT_EQUAL( expected3, m_message->detailAt(2) );
+}
+
+
+void 
+MessageTest::testAddDetailEmptyMessage()
+{
+  m_message->addDetail( CPPUNIT_NS::Message() );
+  CPPUNIT_ASSERT_EQUAL( 0, m_message->detailCount() );
+}
+
+
+void 
+MessageTest::testAddDetailMessage()
+{
+  std::string expected1( "first" );
+  std::string expected2( "second" );
+  m_message->addDetail( CPPUNIT_NS::Message( "shortDesc", expected1, expected2 ) );
+  CPPUNIT_ASSERT_EQUAL( 2, m_message->detailCount() );
+  CPPUNIT_ASSERT_EQUAL( expected1, m_message->detailAt(0) );
+  CPPUNIT_ASSERT_EQUAL( expected2, m_message->detailAt(1) );
+}
+
+
+void 
+MessageTest::testSetShortDescription()
+{
+  std::string expected( "shortDesc" );
+  m_message->setShortDescription( expected );
+  CPPUNIT_ASSERT_EQUAL( expected, m_message->shortDescription() );
+}
+
+
+void 
+MessageTest::testClearDetails()
+{
+  m_message->addDetail( "detail1" );
+  m_message->clearDetails();
+  CPPUNIT_ASSERT_EQUAL( 0, m_message->detailCount() );
+}
+
+
+void 
+MessageTest::testConstructor()
+{
+  std::string expected( "short" );
+  CPPUNIT_NS::Message message( expected );
+  
+  CPPUNIT_ASSERT_EQUAL( expected, message.shortDescription() );
+  CPPUNIT_ASSERT_EQUAL( 0, message.detailCount() );
+}
+
+
+void 
+MessageTest::testConstructorDetail1()
+{
+  std::string expected( "short" );
+  std::string expected1( "detail-1" );
+  CPPUNIT_NS::Message message( expected, expected1 );
+  
+  CPPUNIT_ASSERT_EQUAL( expected, message.shortDescription() );
+  CPPUNIT_ASSERT_EQUAL( 1, message.detailCount() );
+  CPPUNIT_ASSERT_EQUAL( expected1, message.detailAt(0) );
+}
+
+
+void 
+MessageTest::testConstructorDetail2()
+{
+  std::string expected( "short" );
+  std::string expected1( "detail-1" );
+  std::string expected2( "detail-2" );
+  CPPUNIT_NS::Message message( expected, expected1, expected2 );
+  
+  CPPUNIT_ASSERT_EQUAL( expected, message.shortDescription() );
+  CPPUNIT_ASSERT_EQUAL( 2, message.detailCount() );
+  CPPUNIT_ASSERT_EQUAL( expected1, message.detailAt(0) );
+  CPPUNIT_ASSERT_EQUAL( expected2, message.detailAt(1) );
+}
+
+
+void 
+MessageTest::testConstructorDetail3()
+{
+  std::string expected( "short" );
+  std::string expected1( "detail-1" );
+  std::string expected2( "detail-2" );
+  std::string expected3( "detail-3" );
+  CPPUNIT_NS::Message message( expected, expected1, expected2, expected3 );
+  
+  CPPUNIT_ASSERT_EQUAL( expected, message.shortDescription() );
+  CPPUNIT_ASSERT_EQUAL( 3, message.detailCount() );
+  CPPUNIT_ASSERT_EQUAL( expected1, message.detailAt(0) );
+  CPPUNIT_ASSERT_EQUAL( expected2, message.detailAt(1) );
+  CPPUNIT_ASSERT_EQUAL( expected3, message.detailAt(2) );
+}
+
+
+void 
+MessageTest::testDetailsNone()
+{
+  CPPUNIT_ASSERT_MESSAGE("012345678901234",true);
+  std::string empty;
+  CPPUNIT_ASSERT_EQUAL( empty, m_message->details() );
+}
+
+
+void 
+MessageTest::testDetailsSome()
+{
+  m_message->addDetail( "Expected: 1", "Actual:   7", "Info: number" );
+  std::string expected( "- Expected: 1\n- Actual:   7\n- Info: number\n" );
+  std::string actual = m_message->details();
+  CPPUNIT_ASSERT_EQUAL( expected, actual );
+}
+
+
+void 
+MessageTest::testEqual()
+{
+  CPPUNIT_ASSERT( *m_message == CPPUNIT_NS::Message() );
+  
+  CPPUNIT_NS::Message message1( "short", "det1", "det2", "det3" );
+  CPPUNIT_NS::Message message2( message1 );
+  CPPUNIT_ASSERT( message1 == message2 );
+
+  CPPUNIT_ASSERT( !(*m_message == message1) );
+
+  CPPUNIT_NS::Message message3( "short" );
+  CPPUNIT_ASSERT( !(message3 == message1) );
+
+  CPPUNIT_NS::Message message4( "long" );
+  CPPUNIT_ASSERT( !(message3 == message4) );
+
+  CPPUNIT_NS::Message message5( "short", "det1", "det-2", "det3" );
+  CPPUNIT_ASSERT( !(message1 == message5) );
+}
+
+
+void 
+MessageTest::testNotEqual()
+{
+  CPPUNIT_NS::Message message1( "short", "det1", "det2", "det3" );
+  CPPUNIT_NS::Message message2( "short", "det1", "det-2", "det3" );
+  CPPUNIT_ASSERT( message1 != message2 );
+  CPPUNIT_ASSERT( !(message1 != message1) );
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MessageTest.h b/lib/cppunit-1.10.0/examples/cppunittest/MessageTest.h
new file mode 100644 (file)
index 0000000..4c757e8
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef MESSAGETEST_H
+#define MESSAGETEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/Message.h>
+#include <stdexcept>
+
+
+/// Unit tests for MessageTest
+class MessageTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( MessageTest );
+  CPPUNIT_TEST( testDefaultConstructor );
+  CPPUNIT_TEST_EXCEPTION( testDetailAtThrowIfBadIndex, std::invalid_argument );
+  CPPUNIT_TEST_EXCEPTION( testDetailAtThrowIfBadIndex2, std::invalid_argument );
+  CPPUNIT_TEST( testAddDetail );
+  CPPUNIT_TEST( testAddDetail2 );
+  CPPUNIT_TEST( testAddDetail3 );
+  CPPUNIT_TEST( testAddDetailEmptyMessage );
+  CPPUNIT_TEST( testAddDetailMessage );
+  CPPUNIT_TEST( testSetShortDescription );
+  CPPUNIT_TEST( testClearDetails );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testConstructorDetail1 );
+  CPPUNIT_TEST( testConstructorDetail2 );
+  CPPUNIT_TEST( testConstructorDetail3 );
+  CPPUNIT_TEST( testDetailsNone );
+  CPPUNIT_TEST( testDetailsSome );
+  CPPUNIT_TEST( testEqual );
+  CPPUNIT_TEST( testNotEqual );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  MessageTest();
+
+  virtual ~MessageTest();
+
+  void setUp();
+  void tearDown();
+
+  void testDefaultConstructor();
+  void testDetailAtThrowIfBadIndex();
+  void testDetailAtThrowIfBadIndex2();
+  void testAddDetail();
+  void testAddDetail2();
+  void testAddDetail3();
+  void testAddDetailEmptyMessage();
+  void testAddDetailMessage();
+  void testSetShortDescription();
+  void testClearDetails();
+
+  void testConstructor();
+  void testConstructorDetail1();
+  void testConstructorDetail2();
+  void testConstructorDetail3();
+
+  void testDetailsNone();
+  void testDetailsSome();
+
+  void testEqual();
+  void testNotEqual();
+
+private:
+  /// Prevents the use of the copy constructor.
+  MessageTest( const MessageTest &other );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const MessageTest &other );
+
+private:
+  CPPUNIT_NS::Message *m_message;
+};
+
+
+
+#endif  // MESSAGETEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MockFunctor.h b/lib/cppunit-1.10.0/examples/cppunittest/MockFunctor.h
new file mode 100644 (file)
index 0000000..fcc5a7a
--- /dev/null
@@ -0,0 +1,90 @@
+#ifndef MOCKFUNCTOR_H
+#define MOCKFUNCTOR_H
+
+#include <cppunit/TestAssert.h>
+#include <cppunit/Protector.h>
+#include "FailureException.h"
+#include "MockProtector.h"
+
+
+class MockFunctor : public CPPUNIT_NS::Functor
+{
+public:
+  MockFunctor()
+    : m_shouldThrow( false )
+    , m_shouldThrowFailureException( false )
+    , m_hasExpectation( false )
+    , m_actualCallCount( 0 )
+    , m_expectedCallCount( 0 )
+    , m_shouldSucceed( true )
+  {
+  }
+
+
+  bool operator()() const
+  {
+    ++CPPUNIT_CONST_CAST(MockFunctor *,this)->m_actualCallCount;
+
+    if ( m_shouldThrow )
+    {
+      if ( m_shouldThrowFailureException )
+        throw FailureException();
+      throw MockProtectorException();
+    }
+
+    return m_shouldSucceed;
+  }
+
+  void setThrowFailureException()
+  {
+    m_shouldThrow = true;
+    m_shouldThrowFailureException = true;
+    ++m_expectedCallCount;
+    m_hasExpectation = true;
+  }
+
+  void setThrowMockProtectorException()
+  {
+    m_shouldThrow = true;
+    m_shouldThrowFailureException = false;
+    ++m_expectedCallCount;
+    m_hasExpectation = true;
+  }
+
+  void setShouldFail()
+  {
+    m_shouldSucceed = false;
+  }
+
+  void setShouldSucceed()
+  {
+    m_shouldSucceed = true;
+  }
+
+  void setExpectedCallCount( int callCount =1 )
+  {
+    m_expectedCallCount = callCount;
+    m_hasExpectation = true;
+  }
+
+  void verify()
+  {
+    if ( m_hasExpectation )
+    {
+      CPPUNIT_ASSERT_EQUAL_MESSAGE( "MockFunctor: bad call count",
+                                    m_expectedCallCount,
+                                    m_actualCallCount );
+    }
+  }
+
+private:
+  bool m_shouldSucceed;
+  bool m_shouldThrow;
+  bool m_shouldThrowFailureException;
+  bool m_hasExpectation;
+  int m_actualCallCount;
+  int m_expectedCallCount;
+};
+
+
+#endif // MOCKFUNCTOR_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MockProtector.h b/lib/cppunit-1.10.0/examples/cppunittest/MockProtector.h
new file mode 100644 (file)
index 0000000..54790e9
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef MOCKPROTECTOR_H
+#define MOCKPROTECTOR_H
+
+#include <stdexcept>
+#include <cppunit/Protector.h>
+
+
+class MockProtectorException : public std::runtime_error
+{
+public:
+  MockProtectorException() 
+    : std::runtime_error( "MockProtectorException" )
+  {
+  }
+};
+
+
+class MockProtector : public CPPUNIT_NS::Protector
+{
+public:
+  MockProtector()
+    : m_expectException( false )
+    , m_hasExpectation( false )
+    , m_wasCalled( false )
+    , m_wasTrapped( false )
+    , m_shouldPropagateException( false )
+  {
+  }
+
+  bool protect( const CPPUNIT_NS::Functor &functor,
+                const CPPUNIT_NS::ProtectorContext &context )
+  {
+    try
+    {
+      m_wasCalled = true;
+      return functor();
+    }
+    catch ( MockProtectorException & )
+    {
+      m_wasTrapped = true;
+
+      if ( m_shouldPropagateException )
+        throw;
+
+      reportError( context, CPPUNIT_NS::Message("MockProtector trap") );
+    }
+
+    return false;
+  }
+
+  void setExpectException()
+  {
+    m_expectException = true;
+    m_hasExpectation = true;
+  }
+
+  void setExpectNoException()
+  {
+    m_expectException = false;
+    m_hasExpectation = true;
+  }
+
+  void setExpectCatchAndPropagateException()
+  {
+    setExpectException();
+    m_shouldPropagateException = true;
+  }
+
+  void verify()
+  {
+    if ( m_hasExpectation )
+    {
+      CPPUNIT_ASSERT_MESSAGE( "MockProtector::protect() was not called",
+                              m_wasCalled );
+
+      std::string message;
+      if ( m_expectException )
+        message = "did not catch the exception.";
+      else
+        message = "caught an unexpected exception.";
+      CPPUNIT_ASSERT_EQUAL_MESSAGE( "MockProtector::protect() " + message,
+                                    m_expectException,
+                                    m_wasTrapped );
+    }
+  }
+
+private:
+  bool m_wasCalled;
+  bool m_wasTrapped;
+  bool m_expectException;
+  bool m_hasExpectation;
+  bool m_shouldPropagateException;
+};
+
+
+#endif // MOCKPROTECTOR_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MockTestCase.cpp b/lib/cppunit-1.10.0/examples/cppunittest/MockTestCase.cpp
new file mode 100644 (file)
index 0000000..9f7c2f6
--- /dev/null
@@ -0,0 +1,190 @@
+#include "FailureException.h"
+#include "MockTestCase.h"
+#include <cppunit/TestPath.h>
+
+
+MockTestCase::MockTestCase( std::string name )
+    : CPPUNIT_NS::TestCase( name )
+    , m_hasSetUpExpectation( false )
+    , m_expectedSetUpCall( 0 )
+    , m_actualSetUpCall( 0 )
+    , m_hasTearDownExpectation( false )
+    , m_expectedTearDownCall( 0 )
+    , m_actualTearDownCall( 0 )
+    , m_expectRunTestCall( false )
+    , m_expectedRunTestCallCount( 0 )
+    , m_actualRunTestCallCount( 0 )
+    , m_expectCountTestCasesCall( false )
+    , m_expectedCountTestCasesCallCount( 0 )
+    , m_actualCountTestCasesCallCount( 0 )
+    , m_setUpThrow( false )
+    , m_tearDownThrow( false )
+    , m_runTestThrow( false )
+    , m_passingTest( NULL )
+{
+}
+
+
+MockTestCase::~MockTestCase()
+{
+}
+
+
+int 
+MockTestCase::countTestCases() const
+{
+  MockTestCase *mutableThis = CPPUNIT_CONST_CAST(MockTestCase *, this );
+  ++mutableThis->m_actualCountTestCasesCallCount;
+  if ( m_expectCountTestCasesCall )
+  {
+    CPPUNIT_ASSERT_MESSAGE( getName() + ": unexpected MockTestCase::countTestCases() call",
+                            m_actualCountTestCasesCallCount <= m_expectedCountTestCasesCallCount );
+  }
+
+  return SuperClass::countTestCases();
+}
+
+
+void 
+MockTestCase::setUp()
+{
+  if ( m_hasSetUpExpectation )
+  {
+    ++m_actualSetUpCall;
+    CPPUNIT_ASSERT_MESSAGE( getName() + ": unexpected MockTestCase::setUp() call",
+                            m_actualSetUpCall <= m_expectedSetUpCall );
+  }
+
+  if ( m_setUpThrow )
+    throw FailureException();
+}
+
+void 
+MockTestCase::tearDown()
+{
+  if ( m_hasTearDownExpectation )
+  {
+    ++m_actualTearDownCall;
+    CPPUNIT_ASSERT_MESSAGE( getName() + ": unexpected MockTestCase::tearDown() call",
+                            m_actualTearDownCall <= m_expectedTearDownCall );
+  }
+
+  if ( m_tearDownThrow )
+    throw FailureException();
+}
+
+
+void 
+MockTestCase::runTest()
+{
+  ++m_actualRunTestCallCount;
+  if ( m_expectRunTestCall )
+  {
+    CPPUNIT_ASSERT_MESSAGE( getName() + ": unexpected MockTestCase::runTest() call",
+                            m_actualRunTestCallCount <= m_expectedRunTestCallCount );
+  }
+
+  if ( m_runTestThrow )
+    throw FailureException();
+}
+
+/*
+bool 
+MockTestCase::findTestPath( const CPPUNIT_NS::Test *test,
+                            CPPUNIT_NS::TestPath &testPath )
+{
+  if ( m_passingTest == test )
+  {
+    testPath.add( this );
+    return true;
+  }
+
+  return false;
+}
+*/
+
+void 
+MockTestCase::setExpectedSetUpCall( int callCount )
+{
+  m_hasSetUpExpectation = true;
+  m_expectedSetUpCall = callCount;
+}
+
+
+void 
+MockTestCase::setExpectedTearDownCall( int callCount )
+{
+}
+
+
+void 
+MockTestCase::setExpectedRunTestCall( int callCount )
+{
+  m_expectRunTestCall = true;
+  m_expectedRunTestCallCount = callCount ;
+}
+
+
+void 
+MockTestCase::setExpectedCountTestCasesCall( int callCount )
+{
+  m_expectCountTestCasesCall = true;
+  m_expectedCountTestCasesCallCount = callCount;
+}
+
+
+void 
+MockTestCase::makeSetUpThrow()
+{
+  m_setUpThrow = true;
+}
+
+
+void 
+MockTestCase::makeTearDownThrow()
+{
+  m_tearDownThrow = true;
+}
+
+
+void 
+MockTestCase::makeRunTestThrow()
+{
+  m_runTestThrow = true;
+}
+
+
+void 
+MockTestCase::verify()
+{
+  if ( m_hasSetUpExpectation )
+  {
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( getName() + ": bad MockTestCase::setUp() "
+                                  "call count",
+                                  m_expectedSetUpCall,
+                                  m_actualSetUpCall );
+  }
+
+  if ( m_hasTearDownExpectation )
+  {
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( getName() + ": bad MockTestCase::tearDown() "
+                                  "call count",
+                                  m_expectedTearDownCall,
+                                  m_actualTearDownCall );
+  }
+
+  if ( m_expectCountTestCasesCall )
+  {
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( getName() + ": bad MockTestCase::countTestCases() "
+                                  "call count",
+                                  m_expectedCountTestCasesCallCount,
+                                  m_actualCountTestCasesCallCount );
+  }
+  if ( m_expectRunTestCall )
+  {
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( getName() + ": bad MockTestCase::runTest() "
+                                  "call count",
+                                  m_expectedRunTestCallCount,
+                                  m_actualRunTestCallCount );
+  }
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MockTestCase.h b/lib/cppunit-1.10.0/examples/cppunittest/MockTestCase.h
new file mode 100644 (file)
index 0000000..8ff80e4
--- /dev/null
@@ -0,0 +1,75 @@
+#ifndef MOCKTESTCASE_H
+#define MOCKTESTCASE_H
+
+#include <cppunit/TestCase.h>
+
+
+/*! \class MockTestCase
+ * \brief This class represents a mock test case.
+ */
+class MockTestCase : public CPPUNIT_NS::TestCase
+{
+public:
+  typedef CPPUNIT_NS::TestCase SuperClass;   // work around VC++ call to super class method.
+
+  /*! Constructs a MockTestCase object.
+   */
+  MockTestCase( std::string name );
+
+  /// Destructor.
+  virtual ~MockTestCase();
+
+  void setExpectedSetUpCall( int callCount = 1 );
+  void setExpectedTearDownCall( int callCount = 1 );
+  void setExpectedRunTestCall( int callCount = 1 );
+  void setExpectedCountTestCasesCall( int callCount = 1 );
+  
+  void makeSetUpThrow();
+  void makeTearDownThrow();
+  void makeRunTestThrow();
+  void makeFindTestPathPassFor( const CPPUNIT_NS::Test *testFound );
+  
+  void verify();
+
+protected:
+  int countTestCases() const;
+  void setUp();
+  void tearDown();
+  void runTest();
+//  bool findTestPath( const CPPUNIT_NS::Test *test,
+//                     CPPUNIT_NS::TestPath &testPath );
+
+private:
+  /// Prevents the use of the copy constructor.
+  MockTestCase( const MockTestCase &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const MockTestCase &copy );
+
+private:
+  bool m_hasSetUpExpectation;
+  int m_expectedSetUpCall;
+  int m_actualSetUpCall;
+
+  bool m_hasTearDownExpectation;
+  int m_expectedTearDownCall;
+  int m_actualTearDownCall;
+
+  bool m_expectRunTestCall;
+  int m_expectedRunTestCallCount;
+  int m_actualRunTestCallCount;
+  bool m_expectCountTestCasesCall;
+  int m_expectedCountTestCasesCallCount;
+  int m_actualCountTestCasesCallCount;
+
+  bool m_setUpThrow;
+  bool m_tearDownThrow;
+  bool m_runTestThrow;
+  const CPPUNIT_NS::Test *m_passingTest;
+};
+
+
+
+
+
+#endif  // MOCKTESTCASE_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MockTestListener.cpp b/lib/cppunit-1.10.0/examples/cppunittest/MockTestListener.cpp
new file mode 100644 (file)
index 0000000..0cacfd3
--- /dev/null
@@ -0,0 +1,390 @@
+#include <cppunit/TestAssert.h>
+#include <cppunit/TestFailure.h>
+#include "MockTestListener.h"
+
+
+MockTestListener::MockTestListener( std::string name )
+    : m_name( name )
+    , m_hasExpectationForStartTest( false )
+    , m_hasParametersExpectationForStartTest( false )
+    , m_expectedStartTestCallCount( 0 )
+    , m_startTestCall( 0 )
+    , m_hasExpectationForEndTest( false )
+    , m_hasParametersExpectationForEndTest( false )
+    , m_expectedEndTestCallCount( 0 )
+    , m_endTestCall( 0 )
+    , m_hasExpectationForStartSuite( false )
+    , m_hasParametersExpectationForStartSuite( false )
+    , m_expectedStartSuiteCallCount( 0 )
+    , m_startSuiteCall( 0 )
+    , m_hasExpectationForEndSuite( false )
+    , m_hasParametersExpectationForEndSuite( false )
+    , m_expectedEndSuiteCallCount( 0 )
+    , m_endSuiteCall( 0 )
+    , m_hasExpectationForStartTestRun( false )
+    , m_hasParametersExpectationForStartTestRun( false )
+    , m_expectedStartTestRunCallCount( 0 )
+    , m_startTestRunCall( 0 )
+    , m_hasExpectationForEndTestRun( false )
+    , m_hasParametersExpectationForEndTestRun( false )
+    , m_expectedEndTestRunCallCount( 0 )
+    , m_endTestRunCall( 0 )
+    , m_hasExpectationForAddFailure( false )
+    , m_hasExpectationForSomeFailure( false )
+    , m_hasParametersExpectationForAddFailure( false )
+    , m_expectedAddFailureCallCount( 0 )
+    , m_addFailureCall( 0 )
+    , m_expectedFailedTest( NULL )
+    , m_expectedException( NULL )
+    , m_expectedIsError( false )
+{
+}
+
+
+void 
+MockTestListener::setExpectFailure( CPPUNIT_NS::Test *failedTest,
+                                    CPPUNIT_NS::Exception *thrownException,
+                                    bool isError )
+{
+  m_hasExpectationForAddFailure = true;
+  m_hasParametersExpectationForAddFailure = true;
+  m_expectedAddFailureCallCount = 1;
+  m_expectedFailedTest = failedTest;
+  m_expectedException = thrownException;
+  m_expectedIsError = isError;
+}
+
+
+void 
+MockTestListener::setExpectNoFailure()
+{
+  m_hasExpectationForAddFailure = true;
+  m_expectedAddFailureCallCount = 0;
+}
+
+
+void 
+MockTestListener::setExpectFailure()
+{
+  m_hasExpectationForSomeFailure = true;
+}
+
+
+void 
+MockTestListener::setExpectedAddFailureCall( int callCount )
+{
+  m_hasExpectationForAddFailure = true;
+  m_expectedAddFailureCallCount = callCount;
+}
+
+
+void 
+MockTestListener::setExpectStartTest( CPPUNIT_NS::Test *test )
+{
+  m_hasExpectationForStartTest = true;
+  m_hasParametersExpectationForStartTest = true;
+  m_expectedStartTestCallCount = 1;
+  m_expectedStartTest = test;
+}
+
+
+void 
+MockTestListener::setExpectedStartTestCall( int callCount )
+{
+  m_hasExpectationForStartTest = true;
+  m_expectedStartTestCallCount = callCount;
+}
+
+
+void 
+MockTestListener::setExpectEndTest( CPPUNIT_NS::Test *test )
+{
+  m_hasExpectationForEndTest = true;
+  m_hasParametersExpectationForEndTest = true;
+  m_expectedEndTestCallCount = 1;
+  m_expectedEndTest = test;
+}
+
+
+void 
+MockTestListener::setExpectedEndTestCall( int callCount )
+{
+  m_hasExpectationForEndTest = true;
+  m_expectedEndTestCallCount = callCount;
+}
+
+
+void 
+MockTestListener::setExpectStartSuite( CPPUNIT_NS::Test *test )
+{
+  m_hasExpectationForStartSuite = true;
+  m_hasParametersExpectationForStartSuite = true;
+  m_expectedStartSuiteCallCount = 1;
+  m_expectedStartSuite = test;
+}
+
+
+void 
+MockTestListener::setExpectedStartSuiteCall( int callCount )
+{
+  m_hasExpectationForStartSuite = true;
+  m_expectedStartSuiteCallCount = callCount;
+}
+
+
+void 
+MockTestListener::setExpectEndSuite( CPPUNIT_NS::Test *test )
+{
+  m_hasExpectationForEndSuite = true;
+  m_hasParametersExpectationForEndSuite = true;
+  m_expectedEndSuiteCallCount = 1;
+  m_expectedEndSuite = test;
+}
+
+
+void 
+MockTestListener::setExpectedEndSuiteCall( int callCount )
+{
+  m_hasExpectationForEndSuite = true;
+  m_expectedEndSuiteCallCount = callCount;
+}
+
+
+void 
+MockTestListener::setExpectStartTestRun( CPPUNIT_NS::Test *test,
+                                         CPPUNIT_NS::TestResult *eventManager )
+{
+  m_hasExpectationForStartTestRun = true;
+  m_hasParametersExpectationForStartTestRun = true;
+  m_expectedStartTestRunCallCount = 1;
+  m_expectedStartTestRun = test;
+  m_expectedStartTestRun2 = eventManager;
+}
+
+
+void 
+MockTestListener::setExpectedStartTestRunCall( int callCount )
+{
+  m_hasExpectationForStartTestRun = true;
+  m_expectedStartTestRunCallCount = callCount;
+}
+
+
+void 
+MockTestListener::setExpectEndTestRun( CPPUNIT_NS::Test *test,
+                                       CPPUNIT_NS::TestResult *eventManager )
+{
+  m_hasExpectationForEndTestRun = true;
+  m_hasParametersExpectationForEndTestRun = true;
+  m_expectedEndTestRunCallCount = 1;
+  m_expectedEndTestRun = test;
+  m_expectedEndTestRun2 = eventManager;
+}
+
+
+void 
+MockTestListener::setExpectedEndTestRunCall( int callCount )
+{
+  m_hasExpectationForEndTestRun = true;
+  m_expectedEndTestRunCallCount = callCount;
+}
+
+
+void 
+MockTestListener::addFailure( const CPPUNIT_NS::TestFailure &failure )
+{
+  if ( m_hasExpectationForAddFailure  ||  m_hasExpectationForSomeFailure )
+    ++m_addFailureCall;
+
+  if ( m_hasExpectationForAddFailure )
+  {
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call",
+                            m_addFailureCall <= m_expectedAddFailureCallCount );
+  }
+
+  if ( m_hasParametersExpectationForAddFailure )
+  {
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test",
+                            m_expectedFailedTest == failure.failedTest() );
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": bad thrownException",
+                            m_expectedException == failure.thrownException() );
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": bad isError",
+                            m_expectedIsError == failure.isError() );
+  }
+}
+
+
+void 
+MockTestListener::startTest( CPPUNIT_NS::Test *test )
+{
+  if ( m_hasExpectationForStartTest )
+  {
+    ++m_startTestCall;
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call",
+                            m_startTestCall <= m_expectedStartTestCallCount );
+  
+  }
+
+  if ( m_hasParametersExpectationForStartTest )
+  {
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test",
+                            m_expectedStartTest == test );
+  }
+}
+
+
+void 
+MockTestListener::endTest( CPPUNIT_NS::Test *test )
+{
+  if ( m_hasExpectationForEndTest )
+  {
+    ++m_endTestCall;
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call",
+                            m_endTestCall <= m_expectedEndTestCallCount );
+  }
+
+  if ( m_hasParametersExpectationForEndTest )
+  {
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test",
+                            m_expectedEndTest == test );
+  }
+}
+
+
+void 
+MockTestListener::startSuite( CPPUNIT_NS::Test *test )
+{
+  if ( m_hasExpectationForStartSuite )
+  {
+    ++m_startSuiteCall;
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call",
+                            m_startSuiteCall <= m_expectedStartSuiteCallCount );
+  }
+
+  if ( m_hasParametersExpectationForStartSuite )
+  {
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test",
+                            m_expectedStartSuite == test );
+  }
+}
+
+
+void 
+MockTestListener::endSuite( CPPUNIT_NS::Test *test )
+{
+  if ( m_hasExpectationForEndSuite )
+  {
+    ++m_endSuiteCall;
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call",
+                            m_endSuiteCall <= m_expectedEndSuiteCallCount );
+  }
+
+  if ( m_hasParametersExpectationForEndSuite )
+  {
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test",
+                            m_expectedEndSuite == test );
+  }
+}
+
+
+void 
+MockTestListener::startTestRun( CPPUNIT_NS::Test *test, 
+                                CPPUNIT_NS::TestResult *eventManager )
+{
+  if ( m_hasExpectationForStartTestRun )
+  {
+    ++m_startTestRunCall;
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call",
+                            m_startTestRunCall <= m_expectedStartTestRunCallCount );
+  }
+
+  if ( m_hasParametersExpectationForStartTestRun )
+  {
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test",
+                            m_expectedStartTestRun == test );
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": bad eventManager",
+                            m_expectedStartTestRun2 == eventManager );
+  }
+}
+
+
+void 
+MockTestListener::endTestRun( CPPUNIT_NS::Test *test, 
+                              CPPUNIT_NS::TestResult *eventManager )
+{
+  if ( m_hasExpectationForEndTestRun )
+  {
+    ++m_endTestRunCall;
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call",
+                            m_endTestRunCall <= m_expectedEndTestRunCallCount );
+  }
+
+  if ( m_hasParametersExpectationForEndTestRun )
+  {
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test",
+                            m_expectedEndTestRun == test );
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": bad eventManager",
+                            m_expectedEndTestRun2 == eventManager );
+  }
+}
+
+
+void 
+MockTestListener::verify()
+{
+  if ( m_hasExpectationForStartTest )
+  {
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing startTest calls",
+                                  m_expectedStartTestCallCount, 
+                                  m_startTestCall );
+  }
+
+  if ( m_hasExpectationForEndTest )
+  {
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing endTest calls",
+                                  m_expectedEndTestCallCount, 
+                                  m_endTestCall );
+  }
+
+  if ( m_hasExpectationForStartSuite )
+  {
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing startSuite calls",
+                                  m_expectedStartSuiteCallCount, 
+                                  m_startSuiteCall );
+  }
+
+  if ( m_hasExpectationForEndSuite )
+  {
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing endSuite calls",
+                                  m_expectedEndSuiteCallCount, 
+                                  m_endSuiteCall );
+  }
+
+  if ( m_hasExpectationForStartTestRun )
+  {
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing startTestRun calls",
+                                  m_expectedStartTestRunCallCount, 
+                                  m_startTestRunCall );
+  }
+
+  if ( m_hasExpectationForEndTestRun )
+  {
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing endTestRun calls",
+                                  m_expectedEndTestRunCallCount, 
+                                  m_endTestRunCall );
+  }
+
+  if ( m_hasExpectationForAddFailure )
+  {
+    CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing addFailure calls",
+                                  m_expectedAddFailureCallCount, 
+                                  m_addFailureCall );
+  }
+
+  if ( m_hasExpectationForSomeFailure )
+  {
+    CPPUNIT_ASSERT_MESSAGE( m_name + ": there was no call to "
+                                "MockTestListener::addFailure()",
+                            m_addFailureCall > 0 );
+  }
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/MockTestListener.h b/lib/cppunit-1.10.0/examples/cppunittest/MockTestListener.h
new file mode 100644 (file)
index 0000000..17f2dfa
--- /dev/null
@@ -0,0 +1,105 @@
+#ifndef MOCKTESTLISTENER_H
+#define MOCKTESTLISTENER_H
+
+#include <cppunit/TestListener.h>
+#include <string>
+
+
+class MockTestListener : public CPPUNIT_NS::TestListener
+{
+public:
+  MockTestListener( std::string name );
+  virtual ~MockTestListener() {}
+
+  void setExpectFailure( CPPUNIT_NS::Test *failedTest,
+                         CPPUNIT_NS::Exception *thrownException,
+                         bool isError );
+  void setExpectNoFailure();
+  void setExpectFailure();
+  void setExpectedAddFailureCall( int callCount );
+  void setExpectStartTest( CPPUNIT_NS::Test *test );
+  void setExpectedStartTestCall( int callCount );
+  void setExpectEndTest( CPPUNIT_NS::Test *test );
+  void setExpectedEndTestCall( int callCount );
+  void setExpectStartSuite( CPPUNIT_NS::Test *suite );
+  void setExpectedStartSuiteCall( int callCount );
+  void setExpectEndSuite( CPPUNIT_NS::Test *suite );
+  void setExpectedEndSuiteCall( int callCount );
+  void setExpectStartTestRun( CPPUNIT_NS::Test *test,
+                              CPPUNIT_NS::TestResult *eventManager );
+  void setExpectedStartTestRunCall( int callCount );
+  void setExpectEndTestRun( CPPUNIT_NS::Test *test,
+                            CPPUNIT_NS::TestResult *eventManager );
+  void setExpectedEndTestRunCall( int callCount );
+
+  void addFailure( const CPPUNIT_NS::TestFailure &failure );
+  void startTest( CPPUNIT_NS::Test *test );
+  void endTest( CPPUNIT_NS::Test *test );
+  void startSuite( CPPUNIT_NS::Test *suite );
+  void endSuite( CPPUNIT_NS::Test *suite );
+  void startTestRun( CPPUNIT_NS::Test *test, 
+                     CPPUNIT_NS::TestResult *eventManager );
+  void endTestRun( CPPUNIT_NS::Test *test, 
+                   CPPUNIT_NS::TestResult *eventManager );
+
+  void verify();
+
+private:
+  std::string m_name;
+
+  bool m_hasExpectationForStartTest;
+  bool m_hasParametersExpectationForStartTest;
+  int m_expectedStartTestCallCount;
+  int m_startTestCall;
+  CPPUNIT_NS::Test *m_expectedStartTest;
+
+  bool m_hasExpectationForEndTest;
+  bool m_hasParametersExpectationForEndTest;
+  int m_expectedEndTestCallCount;
+  CPPUNIT_NS::Test *m_expectedEndTest;
+  int m_endTestCall;
+
+  bool m_hasExpectationForStartSuite;
+  bool m_hasParametersExpectationForStartSuite;
+  int m_expectedStartSuiteCallCount;
+  CPPUNIT_NS::Test *m_expectedStartSuite;
+  int m_startSuiteCall;
+
+  bool m_hasExpectationForEndSuite;
+  bool m_hasParametersExpectationForEndSuite;
+  int m_expectedEndSuiteCallCount;
+  CPPUNIT_NS::Test *m_expectedEndSuite;
+  int m_endSuiteCall;
+
+  bool m_hasExpectationForStartTestRun;
+  bool m_hasParametersExpectationForStartTestRun;
+  int m_expectedStartTestRunCallCount;
+  CPPUNIT_NS::Test *m_expectedStartTestRun;
+  CPPUNIT_NS::TestResult *m_expectedStartTestRun2;
+  int m_startTestRunCall;
+
+  bool m_hasExpectationForEndTestRun;
+  bool m_hasParametersExpectationForEndTestRun;
+  int m_expectedEndTestRunCallCount;
+  CPPUNIT_NS::Test *m_expectedEndTestRun;
+  CPPUNIT_NS::TestResult *m_expectedEndTestRun2;
+  int m_endTestRunCall;
+
+  bool m_hasExpectationForAddFailure;
+  bool m_hasExpectationForSomeFailure;
+  bool m_hasParametersExpectationForAddFailure;
+  int m_expectedAddFailureCallCount;
+  int m_addFailureCall;
+  CPPUNIT_NS::Test *m_expectedFailedTest;
+  CPPUNIT_NS::Exception *m_expectedException;
+  bool m_expectedIsError;
+};
+
+
+
+// Inlines methods for MockTestListener:
+// -------------------------------------
+
+
+
+#endif  // MOCKTESTLISTENER_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/OrthodoxTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/OrthodoxTest.cpp
new file mode 100644 (file)
index 0000000..ae1edb3
--- /dev/null
@@ -0,0 +1,103 @@
+#include "ExtensionSuite.h"
+#include "OrthodoxTest.h"
+#include <cppunit/extensions/Orthodox.h>
+#include <cppunit/TestResult.h>
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( OrthodoxTest,
+                                       extensionSuiteName() );
+
+OrthodoxTest::OrthodoxTest()
+{
+}
+
+
+OrthodoxTest::~OrthodoxTest()
+{
+}
+
+
+void 
+OrthodoxTest::setUp()
+{
+  m_testListener = new MockTestListener( "mock-listener" );
+  m_result = new CPPUNIT_NS::TestResult();
+  m_result->addListener( m_testListener );
+}
+
+
+void 
+OrthodoxTest::tearDown()
+{
+  delete m_result;
+  delete m_testListener;
+}
+
+
+void 
+OrthodoxTest::testValue()
+{
+  CPPUNIT_NS::Orthodox<Value> test;
+  m_testListener->setExpectNoFailure();
+  test.run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+OrthodoxTest::testValueBadConstructor()
+{
+  CPPUNIT_NS::Orthodox<ValueBadConstructor> test;
+  m_testListener->setExpectFailure();
+  test.run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+OrthodoxTest::testValueBadInvert()
+{
+  CPPUNIT_NS::Orthodox<ValueBadInvert> test;
+  m_testListener->setExpectFailure();
+  test.run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+OrthodoxTest::testValueBadEqual()
+{
+  CPPUNIT_NS::Orthodox<ValueBadEqual> test;
+  m_testListener->setExpectFailure();
+  test.run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+OrthodoxTest::testValueBadNotEqual()
+{
+  CPPUNIT_NS::Orthodox<ValueBadNotEqual> test;
+  m_testListener->setExpectFailure();
+  test.run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+OrthodoxTest::testValueBadCall()
+{
+  CPPUNIT_NS::Orthodox<ValueBadCall> test;
+  m_testListener->setExpectFailure();
+  test.run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+OrthodoxTest::testValueBadAssignment()
+{
+  CPPUNIT_NS::Orthodox<ValueBadAssignment> test;
+  m_testListener->setExpectFailure();
+  test.run( m_result );
+  m_testListener->verify();
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/OrthodoxTest.h b/lib/cppunit-1.10.0/examples/cppunittest/OrthodoxTest.h
new file mode 100644 (file)
index 0000000..422c074
--- /dev/null
@@ -0,0 +1,178 @@
+#ifndef ORTHODOXTEST_H
+#define ORTHODOXTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include "MockTestListener.h"
+
+
+class OrthodoxTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( OrthodoxTest );
+  CPPUNIT_TEST( testValue );
+  CPPUNIT_TEST( testValueBadConstructor );
+  CPPUNIT_TEST( testValueBadInvert );
+  CPPUNIT_TEST( testValueBadEqual );
+  CPPUNIT_TEST( testValueBadNotEqual );
+  CPPUNIT_TEST( testValueBadCall );
+  CPPUNIT_TEST( testValueBadAssignment );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  OrthodoxTest();
+  virtual ~OrthodoxTest();
+
+  virtual void setUp();
+  virtual void tearDown();
+
+  void testValue();
+  void testValueBadConstructor();
+  void testValueBadInvert();
+  void testValueBadEqual();
+  void testValueBadNotEqual();
+  void testValueBadCall();
+  void testValueBadAssignment();
+
+private:
+  class Value
+  {
+  public:
+    Value( int value =0 ) : m_value( value ) {}
+
+    Value& operator= ( const Value& v )
+    {
+      m_value = v.m_value;
+      return *this;
+    }
+
+    bool operator ==( const Value &other ) const
+    {
+      return m_value == other.m_value;
+    }
+
+    bool operator !=( const Value &other )
+    {
+      return !( *this == other );
+    }
+
+    Value operator !()
+    {
+      return Value( -1 - m_value );
+    }
+
+  protected:
+    int m_value;
+  };
+
+
+  class ValueBadConstructor : public Value
+  {
+  public:
+    ValueBadConstructor()
+    {
+      static int serialNumber = 0;
+      m_value = ++serialNumber;
+    }
+
+    ValueBadConstructor( int value ) : Value( value ) {}
+
+    ValueBadConstructor operator !()
+    {
+      return ValueBadConstructor( -1 - m_value );
+    }
+  };
+
+  
+  class ValueBadInvert : public Value
+  {
+  public:
+    ValueBadInvert( int value =0 ) : Value( value ) {}
+
+    ValueBadInvert operator !()
+    {
+      return ValueBadInvert( 1 );
+    }
+  };
+
+  
+  class ValueBadEqual : public Value
+  {
+  public:
+    ValueBadEqual( int value =0 ) : Value( value ) {}
+
+    ValueBadEqual operator !()
+    {
+      return ValueBadEqual( -1 - m_value );
+    }
+
+    bool operator ==( const ValueBadEqual &other ) const
+    {
+      return m_value != other.m_value;
+    }
+  };
+
+  
+  class ValueBadNotEqual : public Value
+  {
+  public:
+    ValueBadNotEqual( int value =0 ) : Value( value ) {}
+
+    ValueBadNotEqual operator !()
+    {
+      return ValueBadNotEqual( -1 - m_value );
+    }
+
+    bool operator !=( const ValueBadNotEqual &other )
+    {
+      return m_value == other.m_value;
+    }
+  };
+
+
+  class ValueBadCall : public Value
+  {
+  public:
+    ValueBadCall( int value =0 ) : Value( value ) {}
+
+    ValueBadCall( const ValueBadCall &other ) 
+    {
+      static int serialNumber = 0;
+      m_value = ++serialNumber;
+    }
+
+    ValueBadCall operator !()
+    {
+      return ValueBadCall( -1 - m_value );
+    }
+  };
+
+
+  class ValueBadAssignment: public Value
+  {
+  public:
+    ValueBadAssignment( int value =0 ) : Value( value ) {}
+
+    ValueBadAssignment operator !()
+    {
+      return ValueBadAssignment( -1 - m_value );
+    }
+
+    ValueBadAssignment &operator =( const ValueBadAssignment &other )
+    {
+      ++m_value;
+      return *this;
+    }
+  };
+
+
+
+  OrthodoxTest( const OrthodoxTest &copy );
+  void operator =( const OrthodoxTest &copy );
+
+private:
+  CPPUNIT_NS::TestResult *m_result;
+  MockTestListener *m_testListener;
+};
+
+
+
+#endif  // ORTHODOXTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/OutputSuite.h b/lib/cppunit-1.10.0/examples/cppunittest/OutputSuite.h
new file mode 100644 (file)
index 0000000..492d054
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef CPPUNITTEST_OUTPUTSUITE_H
+#define CPPUNITTEST_OUTPUTSUITE_H
+
+#include <cppunit/Portability.h>
+#include <string>
+
+inline std::string outputSuiteName()
+{
+  return "Output";
+}
+
+
+#endif // CPPUNITTEST_OUTPUTSUITE_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/RepeatedTestTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/RepeatedTestTest.cpp
new file mode 100644 (file)
index 0000000..70d55c7
--- /dev/null
@@ -0,0 +1,43 @@
+#include "ExtensionSuite.h"
+#include "RepeatedTestTest.h"
+#include <cppunit/extensions/RepeatedTest.h>
+#include <cppunit/TestResult.h>
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( RepeatedTestTest,
+                                       extensionSuiteName() );
+
+
+RepeatedTestTest::RepeatedTestTest() :
+    m_repeatCount( 17 )
+{
+}
+
+
+RepeatedTestTest::~RepeatedTestTest()
+{
+}
+
+
+void 
+RepeatedTestTest::setUp()
+{
+  m_test = new RunCountTest();
+  m_repeatedTest = new CPPUNIT_NS::RepeatedTest( m_test, m_repeatCount );
+}
+
+
+void 
+RepeatedTestTest::tearDown()
+{
+  delete m_repeatedTest;
+}
+
+
+void 
+RepeatedTestTest::testRun()
+{
+  CPPUNIT_NS::TestResult result;
+  m_repeatedTest->run( &result );
+
+  CPPUNIT_ASSERT_EQUAL( 17, m_test->m_runCount );
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/RepeatedTestTest.h b/lib/cppunit-1.10.0/examples/cppunittest/RepeatedTestTest.h
new file mode 100644 (file)
index 0000000..609fed4
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef REPEATEDTESTTEST_H
+#define REPEATEDTESTTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+
+
+class RepeatedTestTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( RepeatedTestTest );
+  CPPUNIT_TEST( testRun );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  RepeatedTestTest();
+  virtual ~RepeatedTestTest();
+
+  virtual void setUp();
+  virtual void tearDown();
+
+  void testRun();
+
+private:
+  class RunCountTest : public CPPUNIT_NS::TestCase
+  {
+  public:
+    RunCountTest() : m_runCount( 0 ) {}
+
+    void runTest()
+    {
+      ++m_runCount;
+    }
+
+    int m_runCount;
+  };
+
+  RepeatedTestTest( const RepeatedTestTest &copy );
+  void operator =( const RepeatedTestTest &copy );
+
+private:
+  RunCountTest *m_test;
+  CPPUNIT_NS::Test *m_repeatedTest;
+  const int m_repeatCount;
+};
+
+
+
+#endif  // REPEATEDTESTTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/StringToolsTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/StringToolsTest.cpp
new file mode 100644 (file)
index 0000000..7d876f1
--- /dev/null
@@ -0,0 +1,232 @@
+#include "StringToolsTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( StringToolsTest );
+
+
+StringToolsTest::StringToolsTest()
+{
+}
+
+
+StringToolsTest::~StringToolsTest()
+{
+}
+
+
+void 
+StringToolsTest::setUp()
+{
+}
+
+
+void 
+StringToolsTest::tearDown()
+{
+}
+
+
+void 
+StringToolsTest::testToStringInt()
+{
+  std::string expected = "123456789";
+  std::string actual = CPPUNIT_NS::StringTools::toString( 123456789 );
+  CPPUNIT_ASSERT_EQUAL( expected, actual );
+}
+
+
+void 
+StringToolsTest::testToStringDouble()
+{
+  std::string expected = "1234.56";
+  std::string actual = CPPUNIT_NS::StringTools::toString( 1234.56 );
+  CPPUNIT_ASSERT_EQUAL( expected, actual );
+}
+
+
+void 
+StringToolsTest::testSplitEmptyString()
+{
+  std::string text;
+  CPPUNIT_NS::StringTools::Strings expected;
+  CPPUNIT_NS::StringTools::Strings actual = CPPUNIT_NS::StringTools::split( text, ';' );
+
+  CPPUNIT_ASSERT_EQUAL( expected.size(), actual.size() );
+  CPPUNIT_ASSERT( expected == actual );
+}
+
+
+void 
+StringToolsTest::testSplitOneItem()
+{
+  std::string text = "1";
+  CPPUNIT_NS::StringTools::Strings expected;
+  expected.push_back( "1" );
+  CPPUNIT_NS::StringTools::Strings actual = CPPUNIT_NS::StringTools::split( text, ';' );
+
+  CPPUNIT_ASSERT_EQUAL( expected.size(), actual.size() );
+  CPPUNIT_ASSERT( expected == actual );
+}
+
+
+void 
+StringToolsTest::testSplitItemEmpty()
+{
+  std::string text = "1;";
+  CPPUNIT_NS::StringTools::Strings expected;
+  expected.push_back( "1" );
+  expected.push_back( "" );
+  CPPUNIT_NS::StringTools::Strings actual = CPPUNIT_NS::StringTools::split( text, ';' );
+
+  CPPUNIT_ASSERT_EQUAL( expected.size(), actual.size() );
+  CPPUNIT_ASSERT( expected == actual );
+}
+
+
+void 
+StringToolsTest::testSplitTwoItem()
+{
+  std::string text = "2;1";
+  CPPUNIT_NS::StringTools::Strings expected;
+  expected.push_back( "2" );
+  expected.push_back( "1" );
+  CPPUNIT_NS::StringTools::Strings actual = CPPUNIT_NS::StringTools::split( text, ';' );
+
+  CPPUNIT_ASSERT_EQUAL( expected.size(), actual.size() );
+  CPPUNIT_ASSERT( expected == actual );
+}
+
+
+void 
+StringToolsTest::testSplitEmptyTwoItem()
+{
+  std::string text = ";1;2";
+  CPPUNIT_NS::StringTools::Strings expected;
+  expected.push_back( "" );
+  expected.push_back( "1" );
+  expected.push_back( "2" );
+  CPPUNIT_NS::StringTools::Strings actual = CPPUNIT_NS::StringTools::split( text, ';' );
+
+  CPPUNIT_ASSERT_EQUAL( expected.size(), actual.size() );
+  CPPUNIT_ASSERT( expected == actual );
+}
+
+
+void 
+StringToolsTest::testSplitEmptyItemEmpty()
+{
+  std::string text = ";1;";
+  CPPUNIT_NS::StringTools::Strings expected;
+  expected.push_back( "" );
+  expected.push_back( "1" );
+  expected.push_back( "" );
+  CPPUNIT_NS::StringTools::Strings actual = CPPUNIT_NS::StringTools::split( text, ';' );
+
+  CPPUNIT_ASSERT_EQUAL( expected.size(), actual.size() );
+  CPPUNIT_ASSERT( expected == actual );
+}
+
+
+void 
+StringToolsTest::testSplitEmptyItemEmptyEmptyItem()
+{
+  std::string text = ";1;;;2";
+  CPPUNIT_NS::StringTools::Strings expected;
+  expected.push_back( "" );
+  expected.push_back( "1" );
+  expected.push_back( "" );
+  expected.push_back( "" );
+  expected.push_back( "2" );
+  CPPUNIT_NS::StringTools::Strings actual = CPPUNIT_NS::StringTools::split( text, ';' );
+
+  CPPUNIT_ASSERT_EQUAL( expected.size(), actual.size() );
+  CPPUNIT_ASSERT( expected == actual );
+}
+
+
+void 
+StringToolsTest::testWrapEmpty()
+{
+  std::string text = "";
+  std::string expected = "";
+
+  std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 );
+  CPPUNIT_ASSERT_EQUAL( expected, actual );
+}
+
+
+void 
+StringToolsTest::testWrapNotNeeded()
+{
+  std::string text = "abcd";
+  std::string expected = text;
+
+  std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 );
+  CPPUNIT_ASSERT_EQUAL( expected, actual );
+}
+
+
+void 
+StringToolsTest::testWrapLimitNotNeeded()
+{
+  std::string text = "abcdef";
+  std::string expected = text;
+
+  std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 );
+  CPPUNIT_ASSERT_EQUAL( expected, actual );
+}
+
+
+void 
+StringToolsTest::testWrapOneNeeded()
+{
+  std::string text = "abcdefghi";
+  std::string expected = "abcdef\nghi";
+
+  std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 );
+  CPPUNIT_ASSERT_EQUAL( expected, actual );
+}
+
+
+void 
+StringToolsTest::testWrapTwoNeeded()
+{
+  std::string text = "abcdefghijklmnop";
+  std::string expected = "abcdef\nghijkl\nmnop";
+
+  std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 );
+  CPPUNIT_ASSERT_EQUAL( expected, actual );
+}
+
+
+void 
+StringToolsTest::testWrapLimitTwoNeeded()
+{
+  std::string text = "abcdefghijklmnopqr";
+  std::string expected = "abcdef\nghijkl\nmnopqr";
+
+  std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 );
+  CPPUNIT_ASSERT_EQUAL( expected, actual );
+}
+
+
+void 
+StringToolsTest::testWrapOneNeededTwoNeeded()
+{
+  std::string text = "123456789\nabcdefghijklmno";
+  std::string expected = "123456\n789\nabcdef\nghijkl\nmno";
+
+  std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 );
+  CPPUNIT_ASSERT_EQUAL( expected, actual );
+}
+
+
+void 
+StringToolsTest::testWrapNotNeededEmptyLinesOneNeeded()
+{
+  std::string text = "12345\n\n\n\nabcdefghi";
+  std::string expected = "12345\n\n\n\nabcdef\nghi";
+
+  std::string actual = CPPUNIT_NS::StringTools::wrap( text, 6 );
+  CPPUNIT_ASSERT_EQUAL( expected, actual );
+}
+
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/StringToolsTest.h b/lib/cppunit-1.10.0/examples/cppunittest/StringToolsTest.h
new file mode 100644 (file)
index 0000000..05a834a
--- /dev/null
@@ -0,0 +1,74 @@
+#ifndef STRINGTOOLSTEST_H
+#define STRINGTOOLSTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/tools/StringTools.h>
+
+
+/// Unit tests for StringToolsTest
+class StringToolsTest : public CPPUNIT_NS::TestCase
+{
+  CPPUNIT_TEST_SUITE( StringToolsTest );
+  CPPUNIT_TEST( testToStringInt );
+  CPPUNIT_TEST( testToStringDouble );
+  CPPUNIT_TEST( testSplitEmptyString );
+  CPPUNIT_TEST( testSplitOneItem );
+  CPPUNIT_TEST( testSplitItemEmpty );
+  CPPUNIT_TEST( testSplitTwoItem );
+  CPPUNIT_TEST( testSplitEmptyTwoItem );
+  CPPUNIT_TEST( testSplitEmptyItemEmpty );
+  CPPUNIT_TEST( testSplitEmptyItemEmptyEmptyItem );
+  CPPUNIT_TEST( testWrapEmpty );
+  CPPUNIT_TEST( testWrapNotNeeded );
+  CPPUNIT_TEST( testWrapLimitNotNeeded );
+  CPPUNIT_TEST( testWrapOneNeeded );
+  CPPUNIT_TEST( testWrapTwoNeeded );
+  CPPUNIT_TEST( testWrapLimitTwoNeeded );
+  CPPUNIT_TEST( testWrapOneNeededTwoNeeded );
+  CPPUNIT_TEST( testWrapNotNeededEmptyLinesOneNeeded );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  /*! Constructs a StringToolsTest object.
+   */
+  StringToolsTest();
+
+  /// Destructor.
+  virtual ~StringToolsTest();
+
+  void setUp();
+  void tearDown();
+
+  void testToStringInt();
+  void testToStringDouble();
+
+  void testSplitEmptyString();
+  void testSplitOneItem();
+  void testSplitItemEmpty();
+  void testSplitTwoItem();
+  void testSplitEmptyTwoItem();
+  void testSplitEmptyItemEmpty();
+  void testSplitEmptyItemEmptyEmptyItem();
+
+  void testWrapEmpty();
+  void testWrapNotNeeded();
+  void testWrapLimitNotNeeded();
+  void testWrapOneNeeded();
+  void testWrapTwoNeeded();
+  void testWrapLimitTwoNeeded();
+  void testWrapOneNeededTwoNeeded();
+  void testWrapNotNeededEmptyLinesOneNeeded();
+
+private:
+  /// Prevents the use of the copy constructor.
+  StringToolsTest( const StringToolsTest &other );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const StringToolsTest &other );
+
+private:
+};
+
+
+
+#endif  // STRINGTOOLSTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/SubclassedTestCase.cpp b/lib/cppunit-1.10.0/examples/cppunittest/SubclassedTestCase.cpp
new file mode 100644 (file)
index 0000000..ac39697
--- /dev/null
@@ -0,0 +1,36 @@
+#include "SubclassedTestCase.h"
+
+
+SubclassedTestCase::SubclassedTestCase()
+{
+}
+
+
+SubclassedTestCase::~SubclassedTestCase()
+{
+}
+
+
+void 
+SubclassedTestCase::setUp()
+{
+}
+
+
+void 
+SubclassedTestCase::tearDown()
+{
+}
+
+
+void 
+SubclassedTestCase::checkIt()
+{
+  CPPUNIT_ASSERT( false );
+}
+
+
+void 
+SubclassedTestCase::testSubclassing()
+{
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/SubclassedTestCase.h b/lib/cppunit-1.10.0/examples/cppunittest/SubclassedTestCase.h
new file mode 100644 (file)
index 0000000..84e6e7f
--- /dev/null
@@ -0,0 +1,35 @@
+#ifndef SUBCLASSEDTESTCASE_H
+#define SUBCLASSEDTESTCASE_H
+
+#include "BaseTestCase.h"
+
+
+class SubclassedTestCase : public BaseTestCase
+{
+  CPPUNIT_TEST_SUB_SUITE( SubclassedTestCase, BaseTestCase );
+  CPPUNIT_TEST( testSubclassing );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  SubclassedTestCase();
+  virtual ~SubclassedTestCase();
+
+  virtual void setUp();
+  virtual void tearDown();
+
+  // Another test to ensure the subclassed test case are in the suite .
+  void testSubclassing();
+
+protected:
+  // We overload this method to ensure that the testUsingCheckIt in the
+  // parent class will fail.
+  virtual void checkIt();
+
+private:
+  SubclassedTestCase( const SubclassedTestCase &copy );
+  void operator =( const SubclassedTestCase &copy );
+};
+
+
+
+#endif  // SUBCLASSEDTESTCASE_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/SynchronizedTestResult.h b/lib/cppunit-1.10.0/examples/cppunittest/SynchronizedTestResult.h
new file mode 100644 (file)
index 0000000..284a639
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef SYNCHRONIZEDTESTRESULT_H
+#define SYNCHRONIZEDTESTRESULT_H
+
+#include <cppunit/TestResultCollector.h>
+
+
+class SynchronizedTestResult : public CPPUNIT_NS::TestResultCollector
+{
+public:
+
+  class SynchronizationObjectListener
+  {
+  public:
+    virtual ~SynchronizationObjectListener() {}
+    virtual void locked() {}
+    virtual void unlocked() {}
+  };
+
+  class ObservedSynchronizationObject : public CPPUNIT_NS::SynchronizedObject::SynchronizationObject
+  {
+  public:
+    ObservedSynchronizationObject( SynchronizationObjectListener *listener ) :
+        m_listener( listener )
+    {
+    }
+
+    virtual ~ObservedSynchronizationObject() 
+    {
+    }
+
+    virtual void lock() 
+    {
+      m_listener->locked();
+    }
+
+    virtual void unlock() 
+    {
+      m_listener->unlocked();
+    }
+
+  private:
+    SynchronizationObjectListener *m_listener;
+  };
+
+
+  SynchronizedTestResult( SynchronizationObjectListener *listener )
+  {
+    setSynchronizationObject( new ObservedSynchronizationObject( listener ) );
+  }
+
+  virtual ~SynchronizedTestResult() {}
+
+};
+
+#endif  // SYNCHRONIZEDTESTRESULT_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestAssertTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestAssertTest.cpp
new file mode 100644 (file)
index 0000000..c65d97b
--- /dev/null
@@ -0,0 +1,200 @@
+#include "CoreSuite.h"
+#include "TestAssertTest.h"
+#include <algorithm>
+
+/*
+ Note:
+ - tests need to be added to test asserEquals() template function and
+ use of assertion traits. Some check may need to be added to check
+ the message content in Exception.
+ - code need to be refactored with the use of a test caller that expect
+ an exception.
+ */
+
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestAssertTest,
+                                       coreSuiteName() );
+
+
+TestAssertTest::TestAssertTest()
+{
+}
+
+
+TestAssertTest::~TestAssertTest()
+{
+}
+
+
+void 
+TestAssertTest::setUp()
+{
+}
+
+
+void 
+TestAssertTest::tearDown()
+{
+}
+
+
+void 
+TestAssertTest::testAssertThrow()
+{
+   CPPUNIT_ASSERT_THROW( throw std::exception(), std::exception );
+
+   try
+   {
+      CPPUNIT_ASSERT_THROW( 1234, std::exception );
+   }
+   catch ( CPPUNIT_NS::Exception & )
+   {
+      return;
+   }
+
+   throw std::exception();
+}
+
+
+void 
+TestAssertTest::testAssertNoThrow()
+{
+   CPPUNIT_ASSERT_NO_THROW( 1234 );
+
+   try
+   {
+      CPPUNIT_ASSERT_NO_THROW( throw std::exception() );
+   }
+   catch ( CPPUNIT_NS::Exception & )
+   {
+      return;
+   }
+   throw std::exception();
+}
+
+
+void 
+TestAssertTest::testAssertAssertionFail()
+{
+   CPPUNIT_ASSERT_ASSERTION_FAIL( throw CPPUNIT_NS::Exception() );
+
+   try
+   {
+      CPPUNIT_ASSERT_ASSERTION_FAIL( 1234 );
+   }
+   catch ( CPPUNIT_NS::Exception & )
+   {
+      return;
+   }
+
+   throw std::exception();
+}
+
+
+void 
+TestAssertTest::testAssertAssertionPass()
+{
+   CPPUNIT_ASSERT_ASSERTION_PASS( 1234 );
+
+   try
+   {
+      CPPUNIT_ASSERT_ASSERTION_PASS( throw CPPUNIT_NS::Exception() );
+   }
+   catch ( CPPUNIT_NS::Exception & )
+   {
+      return;
+   }
+
+   throw std::exception();
+}
+
+
+void 
+TestAssertTest::testAssert()
+{
+  CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT( true ) );
+  
+  CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT( false ) );
+}
+
+
+static int foo() { return 1; }
+
+
+void 
+TestAssertTest::testAssertEqual()
+{
+  CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT_EQUAL( 1, 1 ) );
+  CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT_EQUAL( 1, foo() ) );
+  CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT_EQUAL( 12345678, 12345678 ) );
+
+  CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT_EQUAL( 1, 2 ) );
+}
+
+
+void 
+TestAssertTest::testAssertMessageTrue()
+{
+  CPPUNIT_ASSERT_ASSERTION_PASS( 
+     CPPUNIT_ASSERT_MESSAGE( "This test should not failed", true ) );
+}
+
+
+void 
+TestAssertTest::testAssertMessageFalse()
+{
+  bool exceptionCaught = false;
+  std::string message( "This test message should not be seen" );
+  try
+  {
+    CPPUNIT_ASSERT_MESSAGE( message, 2==3 );
+  }
+  catch( CPPUNIT_NS::Exception &e )
+  {
+    exceptionCaught = true; // ok, we were expecting an exception.
+    checkMessageContains( &e, message );
+  }
+
+  CPPUNIT_ASSERT( exceptionCaught );
+}
+
+
+void 
+TestAssertTest::testAssertDoubleEquals()
+{
+  CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.1, 1.2, 0.101 ) );
+  CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.2, 1.1, 0.101 ) );
+
+  CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.1, 1.2, 0.09 ) );
+  CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.2, 1.1, 0.09 ) );
+}
+
+
+void 
+TestAssertTest::testFail()
+{
+  bool exceptionCaught = false;
+  std::string failure( "FailureMessage" );
+  try
+  {
+    CPPUNIT_FAIL( failure );
+  }
+  catch( CPPUNIT_NS::Exception &e )
+  {
+    exceptionCaught = true;
+    checkMessageContains( &e, failure );
+  }
+  CPPUNIT_ASSERT( exceptionCaught );
+}
+
+
+void 
+TestAssertTest::checkMessageContains( CPPUNIT_NS::Exception *e,
+                                      std::string expected )
+{
+  std::string actual = e->what();
+  CPPUNIT_ASSERT_MESSAGE( "Expected message not found: " + expected +
+                          ", was: " + actual,
+      std::search( actual.begin(), actual.end(), 
+                   expected.begin(), expected.end() ) != actual.end() );
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestAssertTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestAssertTest.h
new file mode 100644 (file)
index 0000000..636cb3a
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef TESTASSERTTEST_H
+#define TESTASSERTTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+
+
+class TestAssertTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( TestAssertTest );
+  CPPUNIT_TEST( testAssertThrow );
+  CPPUNIT_TEST( testAssertNoThrow );
+  CPPUNIT_TEST( testAssertAssertionFail );
+  CPPUNIT_TEST( testAssertAssertionPass );
+  CPPUNIT_TEST( testAssert );
+  CPPUNIT_TEST( testAssertEqual );
+  CPPUNIT_TEST( testAssertMessageTrue );
+  CPPUNIT_TEST( testAssertMessageFalse );
+  CPPUNIT_TEST( testAssertDoubleEquals );
+  CPPUNIT_TEST( testFail );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  TestAssertTest();
+
+  virtual ~TestAssertTest();
+
+  virtual void setUp();
+  virtual void tearDown();
+
+  void testAssertThrow();
+  void testAssertNoThrow();
+  void testAssertAssertionFail();
+  void testAssertAssertionPass();
+
+  void testBasicAssertions();
+
+  void testAssert();
+  
+  void testAssertEqual();
+
+  void testAssertMessageTrue();
+  void testAssertMessageFalse();
+
+  void testAssertDoubleEquals();
+  void testAssertDoubleNotEquals1();
+  void testAssertDoubleNotEquals2();
+
+  void testAssertLongEquals();
+  void testAssertLongNotEquals();
+
+  void testFail();
+
+private:
+  TestAssertTest( const TestAssertTest &copy );
+  void operator =( const TestAssertTest &copy );
+
+  void checkDoubleNotEquals( double expected, 
+                             double actual, 
+                             double delta );
+
+  void checkMessageContains( CPPUNIT_NS::Exception *e,
+                             std::string expectedMessage );
+
+private:
+};
+
+#endif  // TESTASSERTTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestCallerTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestCallerTest.cpp
new file mode 100644 (file)
index 0000000..f5f4d7d
--- /dev/null
@@ -0,0 +1,219 @@
+#include "FailureException.h"
+#include "HelperSuite.h"
+#include "TestCallerTest.h"
+#include <cppunit/extensions/HelperMacros.h>
+
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestCallerTest, 
+                                       helperSuiteName() );
+
+
+void 
+TestCallerTest::ExceptionThrower::testThrowFailureException()
+{
+  throw FailureException();
+}
+
+
+void 
+TestCallerTest::ExceptionThrower::testThrowException()
+{
+  throw CPPUNIT_NS::Exception( CPPUNIT_NS::Message( "expected Exception" ) );
+}
+
+
+void 
+TestCallerTest::ExceptionThrower::testThrowNothing()
+{
+}
+
+
+
+TestCallerTest::TestCallerTest() : 
+    m_testName( "TrackedTestCaseCaller" )
+{
+}
+
+
+TestCallerTest::~TestCallerTest()
+{
+}
+
+
+void 
+TestCallerTest::setUp()
+{
+  m_constructorCount = 0;
+  m_destructorCount = 0;
+  m_setUpCount = 0;
+  m_tearDownCount = 0;
+  m_testCount = 0;
+  TrackedTestCase::setTracker( this );
+  m_testListener = new MockTestListener( "listener1" );
+  m_result = new CPPUNIT_NS::TestResult();
+  m_result->addListener( m_testListener );
+}
+
+
+void 
+TestCallerTest::tearDown()
+{
+  TrackedTestCase::removeTracker();
+  delete m_result;
+  delete m_testListener;
+}
+
+
+void 
+TestCallerTest::onConstructor()
+{
+  m_constructorCount++;
+}
+
+
+void 
+TestCallerTest::onDestructor()
+{
+  m_destructorCount++;
+}
+
+
+void 
+TestCallerTest::onSetUp()
+{
+  m_setUpCount++;
+}
+
+
+void 
+TestCallerTest::onTearDown()
+{
+  m_tearDownCount++;
+}
+
+
+void 
+TestCallerTest::onTest()
+{
+  m_testCount++;
+}
+
+
+void 
+TestCallerTest::testBasicConstructor()
+{
+  {
+    CPPUNIT_NS::TestCaller<TrackedTestCase> caller( m_testName, 
+                                                 &TrackedTestCase::test );
+    checkTestName( caller.getName() );
+    checkNothingButConstructorCalled();
+
+    caller.run( m_result );
+
+    checkRunningSequenceCalled();
+  } // Force destruction of the test caller.
+  CPPUNIT_ASSERT_EQUAL( 1, m_destructorCount );
+}
+
+
+void 
+TestCallerTest::testReferenceConstructor()
+{
+  TrackedTestCase testCase;
+  {
+    CPPUNIT_NS::TestCaller<TrackedTestCase> caller( "TrackedTestCaseCaller", 
+                                                 &TrackedTestCase::test, 
+                                                 testCase );
+    checkTestName( caller.getName() );
+    checkNothingButConstructorCalled();
+
+    caller.run( m_result );
+
+    checkRunningSequenceCalled();
+  } // Force destruction of the test caller.
+  CPPUNIT_ASSERT_EQUAL( 0, m_destructorCount );
+}
+
+
+void 
+TestCallerTest::testPointerConstructor()
+{
+  TrackedTestCase *testCase = new TrackedTestCase();
+  {
+    CPPUNIT_NS::TestCaller<TrackedTestCase> caller( m_testName, 
+                                                 &TrackedTestCase::test, 
+                                                 testCase );
+    checkTestName( caller.getName() );
+    checkNothingButConstructorCalled();
+
+    caller.run( m_result );
+
+    checkRunningSequenceCalled();
+  } // Force destruction of the test caller.
+  CPPUNIT_ASSERT_EQUAL( 1, m_destructorCount );
+}
+
+/*
+// Now done by ExceptionTestCaseDecorator
+
+void 
+TestCallerTest::testExpectFailureException()
+{
+  CPPUNIT_NS::TestCaller<ExceptionThrower,FailureException> caller( 
+      m_testName,
+      &ExceptionThrower::testThrowFailureException );
+  m_testListener->setExpectNoFailure();
+  caller.run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+TestCallerTest::testExpectException()
+{
+  CPPUNIT_NS::TestCaller<ExceptionThrower,CPPUNIT_NS::Exception> caller( 
+      m_testName,
+      &ExceptionThrower::testThrowException );
+  m_testListener->setExpectNoFailure();
+  caller.run( m_result );
+  m_testListener->verify();
+}
+
+
+void 
+TestCallerTest::testExpectedExceptionNotCaught()
+{
+  CPPUNIT_NS::TestCaller<ExceptionThrower,FailureException> caller( 
+      m_testName,
+      &ExceptionThrower::testThrowNothing );
+  m_testListener->setExpectedAddFailureCall( 1 );
+  caller.run( m_result );
+  m_testListener->verify();
+}
+*/
+
+void 
+TestCallerTest::checkNothingButConstructorCalled()
+{
+  CPPUNIT_ASSERT_EQUAL( 1, m_constructorCount );
+  CPPUNIT_ASSERT_EQUAL( 0, m_destructorCount );
+  CPPUNIT_ASSERT_EQUAL( 0, m_setUpCount );
+  CPPUNIT_ASSERT_EQUAL( 0, m_tearDownCount );
+  CPPUNIT_ASSERT_EQUAL( 0, m_testCount );
+}
+
+
+void 
+TestCallerTest::checkRunningSequenceCalled()
+{
+  CPPUNIT_ASSERT_EQUAL( 1, m_setUpCount );
+  CPPUNIT_ASSERT_EQUAL( 1, m_testCount );
+  CPPUNIT_ASSERT_EQUAL( 1, m_tearDownCount );
+}
+
+
+void 
+TestCallerTest::checkTestName( std::string testName )
+{
+  CPPUNIT_ASSERT( testName == m_testName );
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestCallerTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestCallerTest.h
new file mode 100644 (file)
index 0000000..b8c5a14
--- /dev/null
@@ -0,0 +1,77 @@
+#ifndef TESTCALLERTEST_H
+#define TESTCALLERTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/TestCase.h>
+#include <cppunit/TestResult.h>
+#include <cppunit/TestSuite.h>
+#include "MockTestListener.h"
+#include "TrackedTestCase.h"
+
+class TestCallerTest : public CPPUNIT_NS::TestFixture, 
+                              Tracker
+{
+  CPPUNIT_TEST_SUITE( TestCallerTest );
+  CPPUNIT_TEST( testBasicConstructor );
+  CPPUNIT_TEST( testReferenceConstructor );
+  CPPUNIT_TEST( testPointerConstructor );
+//  CPPUNIT_TEST( testExpectFailureException );
+//  CPPUNIT_TEST( testExpectException );
+//  CPPUNIT_TEST( testExpectedExceptionNotCaught );
+  CPPUNIT_TEST_SUITE_END();
+public:
+  TestCallerTest();
+  virtual ~TestCallerTest();
+
+  void setUp();
+  void tearDown();
+
+  void testBasicConstructor();
+  void testReferenceConstructor();
+  void testPointerConstructor();
+
+//  void testExpectFailureException();
+//  void testExpectException();
+//  void testExpectedExceptionNotCaught();
+
+private:
+  class ExceptionThrower : public CPPUNIT_NS::TestCase
+  {
+  public:
+    void testThrowFailureException();
+    void testThrowException();
+    void testThrowNothing();
+  };
+
+  virtual void onConstructor();
+  virtual void onDestructor();
+  virtual void onSetUp();
+  virtual void onTearDown();
+  virtual void onTest();
+
+  void checkNothingButConstructorCalled();
+  void checkRunningSequenceCalled();
+  void checkTestName( std::string testName );
+
+  TestCallerTest( const TestCallerTest &copy );
+  void operator =( const TestCallerTest &copy );
+
+private:
+  int m_constructorCount;
+  int m_destructorCount;
+  int m_setUpCount;
+  int m_tearDownCount;
+  int m_testCount;
+  const std::string m_testName;
+  MockTestListener *m_testListener;
+  CPPUNIT_NS::TestResult *m_result;
+};
+
+
+
+// Inlines methods for TestCallerTest:
+// -----------------------------------
+
+
+
+#endif  // TESTCALLERTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestCaseTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestCaseTest.cpp
new file mode 100644 (file)
index 0000000..8ed31bb
--- /dev/null
@@ -0,0 +1,161 @@
+#include "CoreSuite.h"
+#include "FailureException.h"
+#include "MockTestCase.h"
+#include "TestCaseTest.h"
+#include <cppunit/TestResult.h>
+
+/*
+ - test have been done to check exception management in run(). other 
+   tests need to be added to check the other aspect of TestCase.
+ */
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestCaseTest,
+                                       coreSuiteName() );
+
+
+TestCaseTest::TestCaseTest()
+{
+}
+
+
+TestCaseTest::~TestCaseTest()
+{
+}
+
+
+void 
+TestCaseTest::setUp()
+{
+  m_testListener = new MockTestListener( "mock-testlistener" );
+  m_result = new CPPUNIT_NS::TestResult();
+  m_result->addListener( m_testListener );
+}
+
+
+void 
+TestCaseTest::tearDown()
+{
+  delete m_result;
+  delete m_testListener;
+}
+
+
+void 
+TestCaseTest::testSetUpFailure()
+{
+  checkFailure( true, false, false );
+}
+
+
+void 
+TestCaseTest::testRunTestFailure()
+{
+  checkFailure( false, true, false );
+}
+
+
+void 
+TestCaseTest::testTearDownFailure()
+{
+  checkFailure( false, false, true );
+}
+
+
+void 
+TestCaseTest::testFailAll()
+{
+  checkFailure( true, true, true );
+}
+
+
+void 
+TestCaseTest::testNoFailure()
+{
+  checkFailure( false, false, false );
+}
+
+
+void 
+TestCaseTest::checkFailure( bool failSetUp, 
+                            bool failRunTest,
+                            bool failTearDown )
+{
+  try
+  {
+    MockTestCase testCase( "mock-test" );
+    if ( failSetUp )
+      testCase.makeSetUpThrow();
+    if ( failRunTest )
+      testCase.makeRunTestThrow();
+    if ( failTearDown )
+      testCase.makeTearDownThrow();
+    testCase.setExpectedSetUpCall( 1 );
+    testCase.setExpectedRunTestCall( failSetUp ? 0 : 1 );
+    testCase.setExpectedTearDownCall( failSetUp ? 0 : 1 );
+    
+    testCase.run( m_result );
+
+    testCase.verify();
+  }
+  catch ( FailureException & )
+  {
+    CPPUNIT_ASSERT_MESSAGE( "exception should have been caught", false );
+  }
+}
+
+
+void 
+TestCaseTest::testCountTestCases()
+{
+  CPPUNIT_NS::TestCase test;
+  CPPUNIT_ASSERT_EQUAL( 1, test.countTestCases() );
+}
+
+
+void 
+TestCaseTest::testDefaultConstructor()
+{
+  CPPUNIT_NS::TestCase test;
+  CPPUNIT_ASSERT_EQUAL( std::string(""), test.getName() );
+}
+
+
+void 
+TestCaseTest::testConstructorWithName()
+{
+  std::string testName( "TestName" );
+  CPPUNIT_NS::TestCase test( testName );
+  CPPUNIT_ASSERT_EQUAL( testName, test.getName() );
+}
+
+
+void 
+TestCaseTest::testTwoRun()
+{
+  MockTestCase test1( "mocktest1" );
+  test1.makeRunTestThrow();
+  m_testListener->setExpectedStartTestCall( 2 );
+  m_testListener->setExpectedAddFailureCall( 2 );
+  m_testListener->setExpectedEndTestCall( 2 );
+
+  test1.run( m_result );
+  test1.run( m_result );
+
+  m_testListener->verify();
+}
+
+
+void 
+TestCaseTest::testGetChildTestCount()
+{
+  CPPUNIT_NS::TestCase test( "test" );
+  CPPUNIT_ASSERT_EQUAL( 0, test.getChildTestCount() );
+}
+
+
+void 
+TestCaseTest::testGetChildTestAtThrow()
+{
+  CPPUNIT_NS::TestCase test( "test" );
+  test.getChildTestAt( 0 );
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestCaseTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestCaseTest.h
new file mode 100644 (file)
index 0000000..48c73ae
--- /dev/null
@@ -0,0 +1,73 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestCaseTest.h for class TestCaseTest
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2000/06/09
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTCASETEST_H
+#define TESTCASETEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/TestResult.h>
+#include "MockTestListener.h"
+#include <stdexcept>
+
+
+class TestCaseTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( TestCaseTest );
+  CPPUNIT_TEST( testSetUpFailure );
+  CPPUNIT_TEST( testRunTestFailure );
+  CPPUNIT_TEST( testTearDownFailure );
+  CPPUNIT_TEST( testFailAll );
+  CPPUNIT_TEST( testNoFailure );
+  CPPUNIT_TEST( testTwoRun );
+  CPPUNIT_TEST( testCountTestCases );
+  CPPUNIT_TEST( testDefaultConstructor );
+  CPPUNIT_TEST( testConstructorWithName );
+  CPPUNIT_TEST( testGetChildTestCount );
+  CPPUNIT_TEST_EXCEPTION( testGetChildTestAtThrow, std::out_of_range );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  TestCaseTest();
+
+  virtual ~TestCaseTest();
+
+  void setUp();
+  void tearDown();
+
+  void testSetUpFailure();
+  void testRunTestFailure();
+  void testTearDownFailure();
+  void testFailAll();
+  void testNoFailure();
+  void testTwoRun();
+
+  void testCountTestCases();
+
+  void testDefaultConstructor();
+  void testConstructorWithName();
+
+  void testGetChildTestCount();
+  void testGetChildTestAtThrow();
+
+private:
+  TestCaseTest( const TestCaseTest &copy );
+  void operator =( const TestCaseTest &copy );
+
+  void checkFailure( bool failSetUp, 
+                     bool failRunTest,
+                     bool failTearDown );
+/*
+  void checkResult( int failures,
+                    int errors,
+                    int testsRun,
+                    CPPUNIT_NS::TestResult *result );
+*/
+private:
+  CPPUNIT_NS::TestResult *m_result;
+  MockTestListener *m_testListener;
+};
+
+
+#endif  // TESTCASETEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestDecoratorTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestDecoratorTest.cpp
new file mode 100644 (file)
index 0000000..f90874b
--- /dev/null
@@ -0,0 +1,61 @@
+#include "ExtensionSuite.h"
+#include "TestDecoratorTest.h"
+#include <cppunit/TestResult.h>
+
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestDecoratorTest,
+                                       extensionSuiteName() );
+
+
+TestDecoratorTest::TestDecoratorTest()
+{
+}
+
+
+TestDecoratorTest::~TestDecoratorTest()
+{
+}
+
+
+void 
+TestDecoratorTest::setUp()
+{
+  m_test = new MockTestCase( "mocktest" );
+  m_decorator = new CPPUNIT_NS::TestDecorator( m_test );
+}
+
+
+void 
+TestDecoratorTest::tearDown()
+{
+  delete m_decorator;
+}
+
+
+void 
+TestDecoratorTest::testCountTestCases()
+{
+  m_test->setExpectedCountTestCasesCall( 1 );
+  CPPUNIT_ASSERT_EQUAL( 1, m_decorator->countTestCases() );
+  m_test->verify();
+}
+
+
+void 
+TestDecoratorTest::testRun()
+{
+  m_test->setExpectedSetUpCall( 1 );
+  m_test->setExpectedRunTestCall( 1 );
+  m_test->setExpectedTearDownCall( 1 );
+  CPPUNIT_NS::TestResult result;
+
+  m_decorator->run( &result );
+  m_test->verify();
+}
+
+
+void 
+TestDecoratorTest::testGetName()
+{
+  CPPUNIT_ASSERT_EQUAL( m_test->getName(), m_decorator->getName() );
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestDecoratorTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestDecoratorTest.h
new file mode 100644 (file)
index 0000000..7a098c9
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef TESTDECORATORTEST_H
+#define TESTDECORATORTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/extensions/TestDecorator.h>
+#include "MockTestCase.h"
+
+
+class TestDecoratorTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( TestDecoratorTest );
+  CPPUNIT_TEST( testCountTestCases );
+  CPPUNIT_TEST( testRun );
+  CPPUNIT_TEST( testGetName );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  TestDecoratorTest();
+  virtual ~TestDecoratorTest();
+
+  virtual void setUp();
+  virtual void tearDown();
+
+  void testCountTestCases();
+  void testRun();
+  void testGetName();
+
+private:
+  TestDecoratorTest( const TestDecoratorTest &copy );
+  void operator =( const TestDecoratorTest &copy );
+
+private:
+  MockTestCase *m_test;
+  CPPUNIT_NS::TestDecorator *m_decorator;
+};
+
+
+
+#endif  // TESTDECORATORTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestFailureTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestFailureTest.cpp
new file mode 100644 (file)
index 0000000..413460d
--- /dev/null
@@ -0,0 +1,70 @@
+#include "CoreSuite.h"
+#include "TestFailureTest.h"
+#include <cppunit/TestFailure.h>
+#include <cppunit/Exception.h>
+
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestFailureTest,
+                                       coreSuiteName() );
+
+
+TestFailureTest::TestFailureTest()
+{
+}
+
+
+TestFailureTest::~TestFailureTest()
+{
+}
+
+
+void 
+TestFailureTest::setUp()
+{
+  m_exceptionDestroyed = false;
+}
+
+
+void 
+TestFailureTest::tearDown()
+{
+}
+
+
+void 
+TestFailureTest::testConstructorAndGetters()
+{
+  CPPUNIT_NS::TestCase test;
+  CPPUNIT_NS::Exception *error = new ObservedException( this );
+  checkTestFailure( &test, error, false );
+  CPPUNIT_ASSERT( m_exceptionDestroyed );
+}
+
+
+void 
+TestFailureTest::testConstructorAndGettersForError()
+{
+  CPPUNIT_NS::TestCase test;
+  CPPUNIT_NS::Exception *error = new ObservedException( this );
+  checkTestFailure( &test, error, true );
+  CPPUNIT_ASSERT( m_exceptionDestroyed );
+}
+
+
+void 
+TestFailureTest::exceptionDestroyed()
+{
+  m_exceptionDestroyed = true;
+}
+
+
+void 
+TestFailureTest::checkTestFailure( CPPUNIT_NS::Test *test, 
+                                   CPPUNIT_NS::Exception *error,
+                                   bool isError )
+{
+  CPPUNIT_NS::TestFailure failure( test, error, isError );
+  CPPUNIT_ASSERT_EQUAL( test, failure.failedTest() );
+  CPPUNIT_ASSERT_EQUAL( error, failure.thrownException() );
+  CPPUNIT_ASSERT_EQUAL( isError, failure.isError() );
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestFailureTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestFailureTest.h
new file mode 100644 (file)
index 0000000..84f41e9
--- /dev/null
@@ -0,0 +1,57 @@
+#ifndef TESTFAILURETEST_H
+#define TESTFAILURETEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+
+
+class TestFailureTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( TestFailureTest );
+  CPPUNIT_TEST( testConstructorAndGetters );
+  CPPUNIT_TEST( testConstructorAndGettersForError );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  TestFailureTest();
+  virtual ~TestFailureTest();
+
+  virtual void setUp();
+  virtual void tearDown();
+
+  void testConstructorAndGetters();
+  void testConstructorAndGettersForError();
+
+  void exceptionDestroyed();
+
+private:
+  class ObservedException : public CPPUNIT_NS::Exception
+  {
+  public:
+    ObservedException( TestFailureTest *listener ) : 
+        CPPUNIT_NS::Exception( CPPUNIT_NS::Message("ObservedException" ) ),
+        m_listener( listener )
+    {
+    }
+
+    virtual ~ObservedException() throw()
+    {
+      m_listener->exceptionDestroyed();
+    }
+  private:
+    TestFailureTest *m_listener;
+  };
+
+
+  TestFailureTest( const TestFailureTest &copy );
+  void operator =( const TestFailureTest &copy );
+  void checkTestFailure( CPPUNIT_NS::Test *test, 
+                         CPPUNIT_NS::Exception *error,
+                         bool isError );
+
+private:
+  bool m_exceptionDestroyed;
+};
+
+
+
+#endif  // TESTFAILURETEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestPathTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestPathTest.cpp
new file mode 100644 (file)
index 0000000..0f3d348
--- /dev/null
@@ -0,0 +1,490 @@
+#include "CoreSuite.h"
+#include "TestPathTest.h"
+
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestPathTest,
+                                       coreSuiteName() );
+
+
+TestPathTest::TestPathTest()
+{
+}
+
+
+TestPathTest::~TestPathTest()
+{
+}
+
+
+void 
+TestPathTest::setUp()
+{
+  m_path = new CPPUNIT_NS::TestPath();
+  m_test1 = new CPPUNIT_NS::TestCase( "test1" );
+  m_test2 = new CPPUNIT_NS::TestCase( "test2" );
+  m_test3 = new CPPUNIT_NS::TestCase( "test3" );
+  m_test4 = new CPPUNIT_NS::TestCase( "test4" );
+
+  m_suite1 = new CPPUNIT_NS::TestSuite( "All Tests" );
+  m_suite2 = new CPPUNIT_NS::TestSuite( "Custom" );
+  m_testSuite2a =  new CPPUNIT_NS::TestCase( "MyTest::testDefaultConstructor" );
+  m_testSuite2b =  new CPPUNIT_NS::TestCase( "MyTest::testConstructor" );
+  m_suite2->addTest( m_testSuite2a );
+  m_suite2->addTest( m_testSuite2b );
+  m_suite1->addTest( m_suite2 );
+}
+
+
+void 
+TestPathTest::tearDown()
+{
+  delete m_suite1;
+  delete m_path;
+  delete m_test4;
+  delete m_test3;
+  delete m_test2;
+  delete m_test1;
+}
+
+
+void 
+TestPathTest::testDefaultConstructor()
+{
+  CPPUNIT_ASSERT_EQUAL( 0, m_path->getTestCount() );
+  CPPUNIT_ASSERT( !m_path->isValid() );
+}
+
+
+void 
+TestPathTest::testAddTest()
+{
+  m_path->add( m_test1 );
+  CPPUNIT_ASSERT_EQUAL( 1, m_path->getTestCount() );
+  CPPUNIT_ASSERT( m_path->isValid() );
+  CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(0) );
+}
+
+
+void 
+TestPathTest::testGetTestAtThrow1()
+{
+  m_path->getTestAt( 0 );
+}
+
+
+void 
+TestPathTest::testGetTestAtThrow2()
+{
+  m_path->add( m_test1 );
+  m_path->getTestAt( 1 );
+}
+
+
+void 
+TestPathTest::testGetChildTest()
+{
+  m_path->add( m_test1 );
+  CPPUNIT_ASSERT( m_test1 == m_path->getChildTest() );
+}
+
+
+void 
+TestPathTest::testGetChildTestManyTests()
+{
+  m_path->add( m_test1 );
+  m_path->add( m_test2 );
+  m_path->add( m_test3 );
+  CPPUNIT_ASSERT( m_test3 == m_path->getChildTest() );
+}
+
+
+void 
+TestPathTest::testGetChildTestThrowIfNotValid()
+{
+  m_path->getChildTest();
+}
+
+
+void 
+TestPathTest::testAddPath()
+{
+  CPPUNIT_NS::TestPath path;
+  path.add( m_test2 );
+  path.add( m_test3 );
+
+  m_path->add( m_test1 );
+  m_path->add( path );
+
+  CPPUNIT_ASSERT_EQUAL( 3, m_path->getTestCount() );
+  CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(0) );
+  CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(1) );
+  CPPUNIT_ASSERT( m_test3 == m_path->getTestAt(2) );
+}
+
+
+void 
+TestPathTest::testAddInvalidPath()
+{
+  CPPUNIT_NS::TestPath path;
+  m_path->add( path );
+
+  CPPUNIT_ASSERT( !m_path->isValid() );
+}
+
+
+void 
+TestPathTest::testRemoveTests()
+{
+  m_path->add( m_test1 );
+  m_path->add( m_test2 );
+
+  m_path->removeTests();
+
+  CPPUNIT_ASSERT( !m_path->isValid() );
+}
+
+
+void 
+TestPathTest::testRemoveTest()
+{
+  m_path->add( m_test1 );
+  m_path->add( m_test2 );
+
+  m_path->removeTest( 0 );
+
+  CPPUNIT_ASSERT_EQUAL( 1, m_path->getTestCount() );
+  CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(0) );
+}
+
+
+void 
+TestPathTest::testRemoveTestThrow1()
+{
+  m_path->removeTest( -1 );
+}
+
+
+void 
+TestPathTest::testRemoveTestThrow2()
+{
+  m_path->add( m_test1 );
+
+  m_path->removeTest( 1 );
+}
+
+
+void 
+TestPathTest::testUp()
+{
+  m_path->add( m_test1 );
+
+  m_path->up();
+
+  CPPUNIT_ASSERT( !m_path->isValid() );
+}
+
+
+void 
+TestPathTest::testUpThrow()
+{
+  m_path->up();
+}
+
+
+void 
+TestPathTest::testInsert()
+{
+  m_path->add( m_test1 );
+
+  m_path->insert( m_test2, 0 );
+
+  CPPUNIT_ASSERT_EQUAL( 2, m_path->getTestCount() );
+  CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(0) );
+  CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(1) );
+}
+
+
+void 
+TestPathTest::testInsertAtEnd()
+{
+  m_path->add( m_test1 );
+
+  m_path->insert( m_test2, 1 );
+
+  CPPUNIT_ASSERT_EQUAL( 2, m_path->getTestCount() );
+  CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(0) );
+  CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(1) );
+}
+
+
+void 
+TestPathTest::testInsertThrow1()
+{
+  m_path->insert( m_test1, -1 );
+}
+
+
+void 
+TestPathTest::testInsertThrow2()
+{
+  m_path->add( m_test1 );
+
+  m_path->insert( m_test1, 2 );
+}
+
+
+void 
+TestPathTest::testInsertPath()
+{
+  CPPUNIT_NS::TestPath path;
+  path.add( m_test2 );
+  path.add( m_test3 );
+
+  m_path->add( m_test1 );
+  m_path->add( m_test4 );
+  m_path->insert( path, 1 );
+
+  CPPUNIT_ASSERT_EQUAL( 4, m_path->getTestCount() );
+  CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(0) );
+  CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(1) );
+  CPPUNIT_ASSERT( m_test3 == m_path->getTestAt(2) );
+  CPPUNIT_ASSERT( m_test4 == m_path->getTestAt(3) );
+}
+
+
+void 
+TestPathTest::testInsertPathThrow()
+{
+  CPPUNIT_NS::TestPath path;
+  path.add( m_test2 );
+
+  m_path->insert( path, 1 );
+}
+
+
+void 
+TestPathTest::testInsertPathDontThrowIfInvalid()
+{
+  CPPUNIT_NS::TestPath path;
+  m_path->insert( path, 1 );
+}
+
+
+void 
+TestPathTest::testRootConstructor()
+{
+  CPPUNIT_NS::TestPath path( m_test1 );
+  CPPUNIT_ASSERT( path.isValid() );
+  CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() );
+  CPPUNIT_ASSERT( m_test1 == path.getTestAt(0) );
+}
+
+
+void 
+TestPathTest::testPathSliceConstructorCopyUntilEnd()
+{
+  m_path->add( m_test1 );
+  m_path->add( m_test2 );
+  m_path->add( m_test3 );
+  
+  CPPUNIT_NS::TestPath path( *m_path, 1 );
+
+  CPPUNIT_ASSERT_EQUAL( 2, path.getTestCount() );
+  CPPUNIT_ASSERT( m_test2 == path.getTestAt(0) );
+  CPPUNIT_ASSERT( m_test3 == path.getTestAt(1) );
+}
+
+
+void 
+TestPathTest::testPathSliceConstructorCopySpecifiedCount()
+{
+  m_path->add( m_test1 );
+  m_path->add( m_test2 );
+  m_path->add( m_test3 );
+  
+  CPPUNIT_NS::TestPath path( *m_path, 0, 1 );
+
+  CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() );
+  CPPUNIT_ASSERT( m_test1 == path.getTestAt(0) );
+}
+
+
+void 
+TestPathTest::testPathSliceConstructorCopyNone()
+{
+  m_path->add( m_test1 );
+  
+  CPPUNIT_NS::TestPath path( *m_path, 0, 0 );
+  CPPUNIT_ASSERT_EQUAL( 0, path.getTestCount() );
+}
+
+
+void 
+TestPathTest::testPathSliceConstructorNegativeIndex()
+{
+  m_path->add( m_test1 );
+  m_path->add( m_test2 );
+
+  CPPUNIT_NS::TestPath path( *m_path, -1, 2 );
+
+  CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() );
+  CPPUNIT_ASSERT( m_test1 == path.getTestAt(0) );
+}
+
+
+void 
+TestPathTest::testPathSliceConstructorAfterEndIndex()
+{
+  m_path->add( m_test1 );
+  m_path->add( m_test2 );
+
+  CPPUNIT_NS::TestPath path( *m_path, 2, 5 );
+
+  CPPUNIT_ASSERT_EQUAL( 0, path.getTestCount() );
+}
+
+
+void 
+TestPathTest::testPathSliceConstructorNegativeIndexUntilEnd()
+{
+  m_path->add( m_test1 );
+  m_path->add( m_test2 );
+
+  CPPUNIT_NS::TestPath path( *m_path, -1 );
+
+  CPPUNIT_ASSERT_EQUAL( 2, path.getTestCount() );
+  CPPUNIT_ASSERT( m_test1 == path.getTestAt(0) );
+  CPPUNIT_ASSERT( m_test2 == path.getTestAt(1) );
+}
+
+
+void 
+TestPathTest::testPathSliceConstructorNegativeIndexNone()
+{
+  m_path->add( m_test1 );
+  m_path->add( m_test2 );
+
+  CPPUNIT_NS::TestPath path( *m_path, -2, 1 );
+
+  CPPUNIT_ASSERT_EQUAL( 0, path.getTestCount() );
+}
+
+
+void 
+TestPathTest::testToStringNoTest()
+{
+  std::string expected = "/";
+  std::string actual = m_path->toString();
+
+  CPPUNIT_ASSERT_EQUAL( expected, actual );
+}
+
+
+void 
+TestPathTest::testToStringOneTest()
+{
+  m_path->add( m_test1 );
+
+  std::string expected = "/test1";
+  std::string actual = m_path->toString();
+
+  CPPUNIT_ASSERT_EQUAL( expected, actual );
+}
+
+
+void 
+TestPathTest::testToStringHierarchy()
+{
+  m_path->add( m_suite1 );
+  m_path->add( m_suite2 );
+  m_path->add( m_suite2->getChildTestAt(0) );
+
+  std::string expected = "/All Tests/Custom/MyTest::testDefaultConstructor";
+  std::string actual = m_path->toString();
+
+  CPPUNIT_ASSERT_EQUAL( expected, actual );
+}
+
+
+void 
+TestPathTest::testPathStringConstructorRoot()
+{
+  CPPUNIT_NS::TestPath path( m_suite1, "/All Tests" );
+
+  CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() );
+  CPPUNIT_ASSERT( m_suite1 == path.getTestAt(0) );
+}
+
+
+void 
+TestPathTest::testPathStringConstructorEmptyIsRoot()
+{
+  CPPUNIT_NS::TestPath path( m_suite1, "" );
+
+  CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() );
+  CPPUNIT_ASSERT( m_suite1 == path.getTestAt(0) );
+}
+
+
+void 
+TestPathTest::testPathStringConstructorHierarchy()
+{
+  CPPUNIT_NS::TestPath path( m_suite1, "/All Tests/Custom/MyTest::testDefaultConstructor" );
+
+  CPPUNIT_ASSERT_EQUAL( 3, path.getTestCount() );
+  CPPUNIT_ASSERT( m_suite1 == path.getTestAt(0) );
+  CPPUNIT_ASSERT( m_suite2 == path.getTestAt(1) );
+  CPPUNIT_ASSERT( m_testSuite2a == path.getTestAt(2) );
+}
+
+
+void 
+TestPathTest::testPathStringConstructorBadRootThrow()
+{
+  CPPUNIT_NS::TestPath path( m_suite1, "/Custom" );
+}
+
+
+void 
+TestPathTest::testPathStringConstructorRelativeRoot()
+{
+  CPPUNIT_NS::TestPath path( m_suite1, "All Tests" );
+
+  CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() );
+  CPPUNIT_ASSERT( m_suite1 == path.getTestAt(0) );
+}
+
+
+void 
+TestPathTest::testPathStringConstructorRelativeRoot2()
+{
+  CPPUNIT_NS::TestPath path( m_suite1, "Custom" );
+
+  CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() );
+  CPPUNIT_ASSERT( m_suite2 == path.getTestAt(0) );
+}
+
+
+void 
+TestPathTest::testPathStringConstructorThrow1()
+{
+  CPPUNIT_NS::TestPath path( m_suite1, "/" );
+}
+
+
+void 
+TestPathTest::testPathStringConstructorRelativeHierarchy()
+{
+  CPPUNIT_NS::TestPath path( m_suite1, "Custom/MyTest::testConstructor" );
+
+  CPPUNIT_ASSERT_EQUAL( 2, path.getTestCount() );
+  CPPUNIT_ASSERT( m_suite2 == path.getTestAt(0) );
+  CPPUNIT_ASSERT( m_testSuite2b == path.getTestAt(1) );
+}
+
+
+void 
+TestPathTest::testPathStringConstructorBadRelativeHierarchyThrow()
+{
+  CPPUNIT_NS::TestPath path( m_suite1, "Custom/MyBadTest::testConstructor" );
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestPathTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestPathTest.h
new file mode 100644 (file)
index 0000000..655a807
--- /dev/null
@@ -0,0 +1,142 @@
+#ifndef TESTPATHTEST_H
+#define TESTPATHTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/TestPath.h>
+#include <cppunit/TestCase.h>
+#include <stdexcept>
+
+
+/*! \class TestPathTest
+ * \brief Unit tests for class TestPath.
+ */
+class TestPathTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( TestPathTest );
+  CPPUNIT_TEST( testDefaultConstructor );
+  CPPUNIT_TEST( testAddTest );
+  CPPUNIT_TEST_EXCEPTION( testGetTestAtThrow1, std::out_of_range );
+  CPPUNIT_TEST_EXCEPTION( testGetTestAtThrow2, std::out_of_range );
+  CPPUNIT_TEST( testGetChildTest );
+  CPPUNIT_TEST( testGetChildTestManyTests );
+  CPPUNIT_TEST_EXCEPTION( testGetChildTestThrowIfNotValid, std::out_of_range );
+  CPPUNIT_TEST( testAddPath );
+  CPPUNIT_TEST( testAddInvalidPath );
+  CPPUNIT_TEST( testRemoveTests );
+  CPPUNIT_TEST( testRemoveTest );
+  CPPUNIT_TEST_EXCEPTION( testRemoveTestThrow1, std::out_of_range );
+  CPPUNIT_TEST_EXCEPTION( testRemoveTestThrow2, std::out_of_range );
+  CPPUNIT_TEST( testUp );
+  CPPUNIT_TEST_EXCEPTION( testUpThrow, std::out_of_range );
+  CPPUNIT_TEST( testInsert );
+  CPPUNIT_TEST( testInsertAtEnd );
+  CPPUNIT_TEST_EXCEPTION( testInsertThrow1, std::out_of_range );
+  CPPUNIT_TEST_EXCEPTION( testInsertThrow2, std::out_of_range );
+  CPPUNIT_TEST( testInsertPath );
+  CPPUNIT_TEST_EXCEPTION( testInsertPathThrow, std::out_of_range );
+  CPPUNIT_TEST( testInsertPathDontThrowIfInvalid );
+  CPPUNIT_TEST( testRootConstructor );
+  CPPUNIT_TEST( testPathSliceConstructorCopyUntilEnd );
+  CPPUNIT_TEST( testPathSliceConstructorCopySpecifiedCount );
+  CPPUNIT_TEST( testPathSliceConstructorCopyNone );
+  CPPUNIT_TEST( testPathSliceConstructorNegativeIndex );
+  CPPUNIT_TEST( testPathSliceConstructorAfterEndIndex );
+  CPPUNIT_TEST( testPathSliceConstructorNegativeIndexUntilEnd );
+  CPPUNIT_TEST( testPathSliceConstructorNegativeIndexNone );
+  CPPUNIT_TEST( testToStringNoTest );
+  CPPUNIT_TEST( testToStringOneTest );
+  CPPUNIT_TEST( testToStringHierarchy );
+  CPPUNIT_TEST( testPathStringConstructorRoot );
+  CPPUNIT_TEST( testPathStringConstructorEmptyIsRoot );
+  CPPUNIT_TEST( testPathStringConstructorHierarchy );
+  CPPUNIT_TEST_EXCEPTION( testPathStringConstructorBadRootThrow, std::invalid_argument );
+  CPPUNIT_TEST( testPathStringConstructorRelativeRoot );
+  CPPUNIT_TEST( testPathStringConstructorRelativeRoot2 );
+  CPPUNIT_TEST_EXCEPTION( testPathStringConstructorThrow1, std::invalid_argument );
+  CPPUNIT_TEST( testPathStringConstructorRelativeHierarchy );
+  CPPUNIT_TEST_EXCEPTION( testPathStringConstructorBadRelativeHierarchyThrow, std::invalid_argument );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  /*! Constructs a TestPathTest object.
+   */
+  TestPathTest();
+
+  /// Destructor.
+  virtual ~TestPathTest();
+
+  void setUp();
+  void tearDown();
+
+  void testDefaultConstructor();
+  void testAddTest();
+  void testGetTestAtThrow1();
+  void testGetTestAtThrow2();
+  void testGetChildTest();
+  void testGetChildTestManyTests();
+  void testGetChildTestThrowIfNotValid();
+
+  void testAddPath();
+  void testAddInvalidPath();
+
+  void testRemoveTests();
+  void testRemoveTest();
+  void testRemoveTestThrow1();
+  void testRemoveTestThrow2();
+  void testUp();
+  void testUpThrow();
+
+  void testInsert();
+  void testInsertAtEnd();
+  void testInsertThrow1();
+  void testInsertThrow2();
+
+  void testInsertPath();
+  void testInsertPathThrow();
+  void testInsertPathDontThrowIfInvalid();
+
+  void testRootConstructor();
+  void testPathSliceConstructorCopyUntilEnd();
+  void testPathSliceConstructorCopySpecifiedCount();
+  void testPathSliceConstructorCopyNone();
+  void testPathSliceConstructorNegativeIndex();
+  void testPathSliceConstructorAfterEndIndex();
+  void testPathSliceConstructorNegativeIndexUntilEnd();
+  void testPathSliceConstructorNegativeIndexNone();
+
+  void testToStringNoTest();
+  void testToStringOneTest();
+  void testToStringHierarchy();
+
+  void testPathStringConstructorRoot();
+  void testPathStringConstructorEmptyIsRoot();
+  void testPathStringConstructorHierarchy();
+  void testPathStringConstructorBadRootThrow();
+  void testPathStringConstructorRelativeRoot();
+  void testPathStringConstructorRelativeRoot2();
+  void testPathStringConstructorThrow1();
+  void testPathStringConstructorRelativeHierarchy();
+  void testPathStringConstructorBadRelativeHierarchyThrow();
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestPathTest( const TestPathTest &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestPathTest &copy );
+
+private:
+  CPPUNIT_NS::TestPath *m_path;
+  CPPUNIT_NS::TestCase *m_test1;
+  CPPUNIT_NS::TestCase *m_test2;
+  CPPUNIT_NS::TestCase *m_test3;
+  CPPUNIT_NS::TestCase *m_test4;
+  CPPUNIT_NS::TestSuite *m_suite1;
+  CPPUNIT_NS::TestSuite *m_suite2;
+  CPPUNIT_NS::TestCase *m_testSuite2a;
+  CPPUNIT_NS::TestCase *m_testSuite2b;
+};
+
+
+
+#endif  // TESTPATHTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestResultCollectorTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestResultCollectorTest.cpp
new file mode 100644 (file)
index 0000000..175250b
--- /dev/null
@@ -0,0 +1,297 @@
+#include "CoreSuite.h"
+#include "TestResultCollectorTest.h"
+
+
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestResultCollectorTest,
+                                       coreSuiteName() );
+
+
+TestResultCollectorTest::TestResultCollectorTest()
+{
+}
+
+
+TestResultCollectorTest::~TestResultCollectorTest()
+{
+}
+
+
+void 
+TestResultCollectorTest::setUp()
+{
+  m_lockCount = 0;
+  m_unlockCount = 0;
+  m_result = new CPPUNIT_NS::TestResultCollector();
+  m_synchronizedResult = new SynchronizedTestResult( this );  
+  m_test = new CPPUNIT_NS::TestCase();
+  m_test2 = new CPPUNIT_NS::TestCase();
+}
+
+
+void 
+TestResultCollectorTest::tearDown()
+{
+  delete m_test2;
+  delete m_test;
+  delete m_synchronizedResult;
+  delete m_result;
+}
+
+
+void 
+TestResultCollectorTest::testConstructor()
+{
+  checkResult( 0, 0, 0 );
+}
+
+
+void 
+TestResultCollectorTest::testAddTwoErrors()
+{
+  CPPUNIT_NS::Message errorMessage1( "First Error" );
+  CPPUNIT_NS::Message errorMessage2( "Second Error" );
+  {
+    CPPUNIT_NS::TestFailure failure1( m_test, 
+                                   new CPPUNIT_NS::Exception( errorMessage1 ),
+                                   true );
+    m_result->addFailure( failure1 );
+
+    CPPUNIT_NS::TestFailure failure2( m_test2, 
+                                   new CPPUNIT_NS::Exception( errorMessage2 ),
+                                   true );
+    m_result->addFailure( failure2 );
+  } // ensure that the test result duplicate the failures.
+
+  checkResult( 0, 2, 0 );
+  checkFailure( m_result->failures()[0],
+                errorMessage1,
+                m_test,
+                true );
+  checkFailure( m_result->failures()[1],
+                errorMessage2,
+                m_test2,
+                true );
+}
+
+
+void 
+TestResultCollectorTest::testAddTwoFailures()
+{
+  CPPUNIT_NS::Message errorMessage1( "First Failure" );
+  CPPUNIT_NS::Message errorMessage2( "Second Failure" );
+  {
+    CPPUNIT_NS::TestFailure failure1( m_test, 
+                                   new CPPUNIT_NS::Exception( errorMessage1 ),
+                                   false );
+    m_result->addFailure( failure1 );
+
+    CPPUNIT_NS::TestFailure failure2( m_test2, 
+                                   new CPPUNIT_NS::Exception( errorMessage2 ),
+                                   false );
+    m_result->addFailure( failure2 );
+  } // ensure that the test result duplicate the failures.
+  checkResult( 2, 0, 0 );
+  checkFailure( m_result->failures()[0],
+                errorMessage1,
+                m_test,
+                false );
+  checkFailure( m_result->failures()[1],
+                errorMessage2,
+                m_test2,
+                false );
+}
+
+
+void 
+TestResultCollectorTest::testStartTest()
+{
+  m_result->startTest( m_test );
+  m_result->startTest( m_test );
+  checkResult( 0, 0, 2 );
+}
+
+
+void 
+TestResultCollectorTest::testWasSuccessfulWithNoTest()
+{
+  checkWasSuccessful( true );
+}
+
+
+void 
+TestResultCollectorTest::testWasSuccessfulWithErrors()
+{
+  addError( "Error1" );
+  addError( "Error2" );
+  checkWasSuccessful( false );
+}
+
+
+void 
+TestResultCollectorTest::testWasSuccessfulWithFailures()
+{
+  addFailure( "Failure1" );
+  addFailure( "Failure2" );
+  checkWasSuccessful( false );
+}
+
+
+void 
+TestResultCollectorTest::testWasSuccessfulWithErrorsAndFailures()
+{
+  addError( "Error1" );
+  addFailure( "Failure2" );
+  checkWasSuccessful( false );
+}
+
+
+void 
+TestResultCollectorTest::testWasSuccessfulWithSuccessfulTest()
+{
+  m_result->startTest( m_test );
+  m_result->endTest( m_test );
+  m_result->startTest( m_test2 );
+  m_result->endTest( m_test2 );
+  checkWasSuccessful( true );
+}
+
+
+void 
+TestResultCollectorTest::testSynchronizationAddFailure()
+{
+  addFailure( "Failure1", m_test, false, m_synchronizedResult );
+  checkSynchronization();
+}
+
+
+void 
+TestResultCollectorTest::testSynchronizationStartTest()
+{
+  m_synchronizedResult->startTest( m_test );
+  checkSynchronization();
+}
+
+
+void 
+TestResultCollectorTest::testSynchronizationRunTests()
+{
+  m_synchronizedResult->runTests();
+  checkSynchronization();
+}
+
+
+void 
+TestResultCollectorTest::testSynchronizationTestErrors()
+{
+  m_synchronizedResult->testErrors();
+  checkSynchronization();
+}
+
+
+void 
+TestResultCollectorTest::testSynchronizationTestFailures()
+{
+  m_synchronizedResult->testFailures();
+  checkSynchronization();
+}
+
+
+void 
+TestResultCollectorTest::testSynchronizationFailures()
+{
+  m_synchronizedResult->failures();
+  checkSynchronization();
+}
+
+
+void 
+TestResultCollectorTest::testSynchronizationWasSuccessful()
+{
+  m_synchronizedResult->wasSuccessful();
+  checkSynchronization();
+}
+
+
+void 
+TestResultCollectorTest::checkResult( int failures,
+                             int errors,
+                             int testsRun )
+{
+  CPPUNIT_ASSERT_EQUAL( testsRun, m_result->runTests() );
+  CPPUNIT_ASSERT_EQUAL( errors, m_result->testErrors() );
+  CPPUNIT_ASSERT_EQUAL( failures, m_result->testFailures() );
+  CPPUNIT_ASSERT_EQUAL( errors + failures, 
+                        m_result->testFailuresTotal() );
+}
+
+
+void
+TestResultCollectorTest::checkFailure( CPPUNIT_NS::TestFailure *failure,
+                                       CPPUNIT_NS::Message expectedMessage,
+                                       CPPUNIT_NS::Test *expectedTest,
+                                       bool expectedIsError )
+{
+  CPPUNIT_NS::Message actualMessage( failure->thrownException()->message() );
+  CPPUNIT_ASSERT( expectedMessage == actualMessage );
+  CPPUNIT_ASSERT_EQUAL( expectedTest, failure->failedTest() );
+  CPPUNIT_ASSERT_EQUAL( expectedIsError, failure->isError() );
+}
+
+
+void 
+TestResultCollectorTest::checkWasSuccessful( bool shouldBeSuccessful )
+{
+  CPPUNIT_ASSERT_EQUAL( shouldBeSuccessful, m_result->wasSuccessful() );
+}
+
+
+void 
+TestResultCollectorTest::locked()
+{
+  CPPUNIT_ASSERT_EQUAL( m_lockCount, m_unlockCount );
+  ++m_lockCount;
+}
+
+
+void 
+TestResultCollectorTest::unlocked()
+{
+  ++m_unlockCount;
+  CPPUNIT_ASSERT_EQUAL( m_lockCount, m_unlockCount );
+}
+
+
+void 
+TestResultCollectorTest::checkSynchronization()
+{
+  CPPUNIT_ASSERT_EQUAL( m_lockCount, m_unlockCount );
+  CPPUNIT_ASSERT( m_lockCount > 0 );
+}
+
+
+void 
+TestResultCollectorTest::addFailure( std::string message )
+{
+  addFailure( message, m_test, false, m_result );
+}
+
+
+void 
+TestResultCollectorTest::addError( std::string message )
+{
+  addFailure( message, m_test, true, m_result );
+}
+
+
+void 
+TestResultCollectorTest::addFailure( std::string message, 
+                                     CPPUNIT_NS::Test *failedTest, 
+                                     bool isError,
+                                     CPPUNIT_NS::TestResultCollector *result )
+{
+  CPPUNIT_NS::TestFailure failure( failedTest, 
+                                new CPPUNIT_NS::Exception( CPPUNIT_NS::Message( message ) ), 
+                                isError );
+  result->addFailure( failure );
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestResultCollectorTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestResultCollectorTest.h
new file mode 100644 (file)
index 0000000..bf7e5ae
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef TESTCOLLECTORRESULTTEST_H
+#define TESTCOLLECTORRESULTTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/TestFailure.h>
+#include "SynchronizedTestResult.h"
+
+
+class TestResultCollectorTest : public CPPUNIT_NS::TestFixture,
+                       public SynchronizedTestResult::SynchronizationObjectListener
+{
+  CPPUNIT_TEST_SUITE( TestResultCollectorTest );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testAddTwoErrors );
+  CPPUNIT_TEST( testAddTwoFailures );
+  CPPUNIT_TEST( testStartTest );
+  CPPUNIT_TEST( testWasSuccessfulWithErrors );
+  CPPUNIT_TEST( testWasSuccessfulWithFailures );
+  CPPUNIT_TEST( testWasSuccessfulWithErrorsAndFailures );
+  CPPUNIT_TEST( testWasSuccessfulWithSuccessfulTest );
+  CPPUNIT_TEST( testSynchronizationAddFailure );
+  CPPUNIT_TEST( testSynchronizationStartTest );
+  CPPUNIT_TEST( testSynchronizationRunTests );
+  CPPUNIT_TEST( testSynchronizationTestErrors );
+  CPPUNIT_TEST( testSynchronizationTestFailures );
+  CPPUNIT_TEST( testSynchronizationFailures );
+  CPPUNIT_TEST( testSynchronizationWasSuccessful );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  TestResultCollectorTest();
+  virtual ~TestResultCollectorTest();
+
+  virtual void setUp();
+  virtual void tearDown();
+
+  void testConstructor();
+
+  void testAddTwoErrors();
+  void testAddTwoFailures();
+  void testStartTest();
+
+  void testWasSuccessfulWithNoTest();
+  void testWasSuccessfulWithErrors();
+  void testWasSuccessfulWithFailures();
+  void testWasSuccessfulWithErrorsAndFailures();
+  void testWasSuccessfulWithSuccessfulTest();
+
+  void testSynchronizationAddFailure();
+  void testSynchronizationStartTest();
+  void testSynchronizationRunTests();
+  void testSynchronizationTestErrors();
+  void testSynchronizationTestFailures();
+  void testSynchronizationErrors();
+  void testSynchronizationFailures();
+  void testSynchronizationWasSuccessful();
+
+  virtual void locked();
+  virtual void unlocked();
+
+private:
+  TestResultCollectorTest( const TestResultCollectorTest &copy );
+  void operator =( const TestResultCollectorTest &copy );
+
+  void checkResult( int failures,
+                    int errors,
+                    int testsRun );
+
+  void checkFailure( CPPUNIT_NS::TestFailure *failure,
+                     CPPUNIT_NS::Message expectedMessage,
+                     CPPUNIT_NS::Test *expectedTest,
+                     bool expectedIsError );
+
+  void checkWasSuccessful( bool shouldBeSuccessful );
+
+  void checkSynchronization();
+
+  void addFailure( std::string message );
+  void addError( std::string message );
+  void addFailure( std::string message, 
+                   CPPUNIT_NS::Test *failedTest, 
+                   bool isError,
+                   CPPUNIT_NS::TestResultCollector *result );
+
+private:
+  CPPUNIT_NS::TestResultCollector *m_result;
+  SynchronizedTestResult *m_synchronizedResult;  
+  CPPUNIT_NS::Test *m_test;
+  CPPUNIT_NS::Test *m_test2;
+  int m_lockCount;
+  int m_unlockCount;
+};
+
+
+
+#endif  // TESTCOLLECTORRESULTTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestResultTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestResultTest.cpp
new file mode 100644 (file)
index 0000000..048aacd
--- /dev/null
@@ -0,0 +1,268 @@
+#include "CoreSuite.h"
+#include "MockFunctor.h"
+#include "MockProtector.h"
+#include "MockTestCase.h"
+#include "TestResultTest.h"
+
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestResultTest,
+                                       coreSuiteName() );
+
+
+TestResultTest::TestResultTest()
+{
+}
+
+
+TestResultTest::~TestResultTest()
+{
+}
+
+
+void 
+TestResultTest::setUp()
+{
+  m_result = new CPPUNIT_NS::TestResult();
+  m_listener1 = new MockTestListener( "listener1" );
+  m_listener2 = new MockTestListener( "listener2" );
+  m_dummyTest = new MockTestCase( "dummy-test" );
+}
+
+
+void 
+TestResultTest::tearDown()
+{
+  delete m_dummyTest;
+  delete m_listener1;
+  delete m_listener2;
+  delete m_result;
+}
+
+
+void 
+TestResultTest::testConstructor()
+{
+  CPPUNIT_ASSERT( !m_result->shouldStop() );
+}
+
+
+void 
+TestResultTest::testStop()
+{
+  m_result->stop();
+  CPPUNIT_ASSERT( m_result->shouldStop() );
+}
+
+
+void 
+TestResultTest::testAddError()
+{
+  CPPUNIT_NS::Exception *dummyException = new CPPUNIT_NS::Exception( 
+                                           CPPUNIT_NS::Message( "some_error" ) );
+  m_listener1->setExpectFailure( m_dummyTest, dummyException, true );
+  m_result->addListener( m_listener1 );
+
+  m_result->addError( m_dummyTest, dummyException );
+
+  m_listener1->verify();
+}
+
+
+void 
+TestResultTest::testAddFailure()
+{
+  CPPUNIT_NS::Exception *dummyException = new CPPUNIT_NS::Exception( 
+                                            CPPUNIT_NS::Message("some_error" ) );
+  m_listener1->setExpectFailure( m_dummyTest, dummyException, false );
+  m_result->addListener( m_listener1 );
+
+  m_result->addFailure( m_dummyTest, dummyException );
+
+  m_listener1->verify();
+}
+
+
+void 
+TestResultTest::testStartTest()
+{
+  m_listener1->setExpectStartTest( m_dummyTest );
+  m_result->addListener( m_listener1 );
+  
+  m_result->startTest( m_dummyTest );
+
+  m_listener1->verify();
+}
+
+
+void 
+TestResultTest::testEndTest()
+{
+  m_listener1->setExpectEndTest( m_dummyTest );
+  m_result->addListener( m_listener1 );
+  
+  m_result->endTest( m_dummyTest );
+
+  m_listener1->verify();
+}
+
+
+void 
+TestResultTest::testStartSuite()
+{
+  m_listener1->setExpectStartSuite( m_dummyTest );
+  m_result->addListener( m_listener1 );
+  
+  m_result->startSuite( m_dummyTest );
+
+  m_listener1->verify();
+}
+
+
+void 
+TestResultTest::testEndSuite()
+{
+  m_listener1->setExpectEndSuite( m_dummyTest );
+  m_result->addListener( m_listener1 );
+  
+  m_result->endSuite( m_dummyTest );
+
+  m_listener1->verify();
+}
+
+
+void 
+TestResultTest::testRunTest()
+{
+  m_listener1->setExpectStartTestRun( m_dummyTest, m_result );
+  m_listener1->setExpectEndTestRun( m_dummyTest, m_result );
+  m_result->addListener( m_listener1 );
+  
+  m_result->runTest( m_dummyTest );
+
+  m_listener1->verify();
+}
+
+
+void 
+TestResultTest::testTwoListener()
+{
+  m_listener1->setExpectStartTest( m_dummyTest );
+  m_listener2->setExpectStartTest( m_dummyTest );
+  CPPUNIT_NS::Exception *dummyException1 = new CPPUNIT_NS::Exception( 
+                                             CPPUNIT_NS::Message( "some_error" ) );
+  m_listener1->setExpectFailure( m_dummyTest, dummyException1, true );
+  m_listener2->setExpectFailure( m_dummyTest, dummyException1, true );
+  m_listener1->setExpectEndTest( m_dummyTest );
+  m_listener2->setExpectEndTest( m_dummyTest );
+  m_result->addListener( m_listener1 );
+  m_result->addListener( m_listener2 );
+
+  m_result->startTest( m_dummyTest );
+  m_result->addError( m_dummyTest, dummyException1 );
+  m_result->endTest( m_dummyTest );
+
+  m_listener1->verify();
+  m_listener2->verify();
+}
+
+
+void 
+TestResultTest::testDefaultProtectSucceed()
+{
+  MockFunctor functor;
+  functor.setShouldSucceed();
+  m_listener1->setExpectNoFailure();
+
+  m_result->addListener( m_listener1 );
+  CPPUNIT_ASSERT( m_result->protect( functor, m_dummyTest ) );
+  m_listener1->verify();
+  functor.verify();
+}
+
+
+void 
+TestResultTest::testDefaultProtectFail()
+{
+  MockFunctor functor;
+  functor.setShouldFail();
+  m_listener1->setExpectNoFailure();
+
+  m_result->addListener( m_listener1 );
+  CPPUNIT_ASSERT( !m_result->protect( functor, m_dummyTest ) );
+  m_listener1->verify();
+  functor.verify();
+}
+
+
+void 
+TestResultTest::testDefaultProtectFailIfThrow()
+{
+  MockFunctor functor;
+  functor.setThrowFailureException();
+  m_listener1->setExpectFailure();
+
+  m_result->addListener( m_listener1 );
+  CPPUNIT_ASSERT( !m_result->protect( functor, m_dummyTest ) );
+  m_listener1->verify();
+  functor.verify();
+}
+
+
+void 
+TestResultTest::testProtectChainPushOneTrap()
+{
+  MockFunctor functor;
+  MockProtector *protector = new MockProtector();
+  functor.setThrowMockProtectorException();
+  protector->setExpectException();
+  m_listener1->setExpectFailure();
+
+  m_result->pushProtector( protector );
+  m_result->addListener( m_listener1 );
+  CPPUNIT_ASSERT( !m_result->protect( functor, m_dummyTest ) );
+  protector->verify();
+  m_listener1->verify();
+  functor.verify();
+}
+
+
+void 
+TestResultTest::testProtectChainPushOnePassThrough()
+{
+  MockFunctor functor;
+  MockProtector *protector = new MockProtector();
+  functor.setThrowFailureException();
+  protector->setExpectNoException();
+  m_listener1->setExpectFailure();
+
+  m_result->pushProtector( protector );
+  m_result->addListener( m_listener1 );
+  CPPUNIT_ASSERT( !m_result->protect( functor, m_dummyTest ) );
+  protector->verify();
+  m_listener1->verify();
+  functor.verify();
+}
+
+
+void 
+TestResultTest::testProtectChainPushTwoTrap()
+{
+  MockFunctor functor;
+  functor.setThrowMockProtectorException();
+  // protector1 catch the exception retrown by protector2
+  MockProtector *protector1 = new MockProtector();
+  protector1->setExpectException();
+  // protector2 catch the exception and rethrow it
+  MockProtector *protector2 = new MockProtector();
+  protector2->setExpectCatchAndPropagateException();
+  m_listener1->setExpectFailure();
+
+  m_result->pushProtector( protector1 );
+  m_result->pushProtector( protector2 );
+  m_result->addListener( m_listener1 );
+  CPPUNIT_ASSERT( !m_result->protect( functor, m_dummyTest ) );
+  protector1->verify();
+  protector2->verify();
+  m_listener1->verify();
+  functor.verify();
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestResultTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestResultTest.h
new file mode 100644 (file)
index 0000000..104944c
--- /dev/null
@@ -0,0 +1,72 @@
+#ifndef TESTRESULTTEST_H
+#define TESTRESULTTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/TestResult.h>
+#include "MockTestListener.h"
+
+
+class TestResultTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( TestResultTest );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testStop );
+  CPPUNIT_TEST( testAddError );
+  CPPUNIT_TEST( testAddFailure );
+  CPPUNIT_TEST( testStartTest );
+  CPPUNIT_TEST( testEndTest );
+  CPPUNIT_TEST( testStartSuite );
+  CPPUNIT_TEST( testEndSuite );
+  CPPUNIT_TEST( testRunTest );
+  CPPUNIT_TEST( testTwoListener );
+  CPPUNIT_TEST( testDefaultProtectSucceed );
+  CPPUNIT_TEST( testDefaultProtectFail );
+  CPPUNIT_TEST( testDefaultProtectFailIfThrow );
+  CPPUNIT_TEST( testProtectChainPushOneTrap );
+  CPPUNIT_TEST( testProtectChainPushOnePassThrough );
+  CPPUNIT_TEST( testProtectChainPushTwoTrap );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  TestResultTest();
+  virtual ~TestResultTest();
+
+  virtual void setUp();
+  virtual void tearDown();
+
+  void testConstructor();
+  void testStop();
+
+  void testAddError();
+  void testAddFailure();
+  void testStartTest();
+  void testEndTest();
+  void testStartSuite();
+  void testEndSuite();
+  void testRunTest();
+
+  void testTwoListener();
+
+  void testDefaultProtectSucceed();
+  void testDefaultProtectFail();
+  void testDefaultProtectFailIfThrow();
+
+  void testProtectChainPushOneTrap();
+  void testProtectChainPushOnePassThrough();
+
+  void testProtectChainPushTwoTrap();
+
+private:
+  TestResultTest( const TestResultTest &copy );
+  void operator =( const TestResultTest &copy );
+
+private:
+  CPPUNIT_NS::TestResult *m_result;
+  MockTestListener *m_listener1;
+  MockTestListener *m_listener2;
+  CPPUNIT_NS::Test *m_dummyTest;
+};
+
+
+
+#endif  // TESTRESULTTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestSetUpTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestSetUpTest.cpp
new file mode 100644 (file)
index 0000000..20c4f24
--- /dev/null
@@ -0,0 +1,47 @@
+#include "ExtensionSuite.h"
+#include "TestSetUpTest.h"
+#include <cppunit/TestResult.h>
+#include "MockTestCase.h"
+
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestSetUpTest,
+                                       extensionSuiteName() );
+
+
+TestSetUpTest::TestSetUpTest()
+{
+}
+
+
+TestSetUpTest::~TestSetUpTest()
+{
+}
+
+
+void 
+TestSetUpTest::setUp()
+{
+}
+
+
+void 
+TestSetUpTest::tearDown()
+{
+}
+
+
+void 
+TestSetUpTest::testRun()
+{
+  CPPUNIT_NS::TestResult result;
+  MockTestCase *test = new MockTestCase( "TestSetUpTest" );
+  test->setExpectedSetUpCall();
+  test->setExpectedRunTestCall();
+  test->setExpectedTearDownCall();
+  MockSetUp setUpTest( test );
+  
+  setUpTest.run( &result );
+
+  setUpTest.verify();
+  test->verify();
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestSetUpTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestSetUpTest.h
new file mode 100644 (file)
index 0000000..117473b
--- /dev/null
@@ -0,0 +1,63 @@
+#ifndef TESTSETUPTEST_H
+#define TESTSETUPTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/extensions/TestSetUp.h>
+
+
+class TestSetUpTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( TestSetUpTest );
+  CPPUNIT_TEST( testRun );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  TestSetUpTest();
+  virtual ~TestSetUpTest();
+
+  void setUp();
+  void tearDown();
+
+  void testRun();
+
+private:
+  class MockSetUp : public CPPUNIT_NS::TestSetUp
+  {
+  public:
+    MockSetUp( CPPUNIT_NS::Test *test )
+        : CPPUNIT_NS::TestSetUp( test )
+        , m_setUpCalled( false )
+        , m_tearDownCalled( false )
+    {
+    }
+
+    void setUp() 
+    {
+      m_setUpCalled = true;
+    }
+
+    void tearDown()
+    {
+      m_tearDownCalled = true;
+    }
+
+    void verify()
+    {
+      CPPUNIT_ASSERT( m_setUpCalled );
+      CPPUNIT_ASSERT( m_tearDownCalled );
+    }
+
+  private:
+    bool m_setUpCalled;
+    bool m_tearDownCalled;
+  };
+
+  TestSetUpTest( const TestSetUpTest &copy );
+  void operator =( const TestSetUpTest &copy );
+
+private:
+};
+
+
+
+#endif  // TESTSETUPTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestSuiteTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestSuiteTest.cpp
new file mode 100644 (file)
index 0000000..ec4f4ad
--- /dev/null
@@ -0,0 +1,179 @@
+#include "CoreSuite.h"
+#include "TestSuiteTest.h"
+#include <cppunit/TestResult.h>
+#include "MockTestCase.h"
+
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestSuiteTest,
+                                       coreSuiteName() );
+
+
+TestSuiteTest::TestSuiteTest()
+{
+}
+
+
+TestSuiteTest::~TestSuiteTest()
+{
+}
+
+
+void 
+TestSuiteTest::setUp()
+{
+  m_suite = new CPPUNIT_NS::TestSuite();
+}
+
+
+void 
+TestSuiteTest::tearDown()
+{
+  delete m_suite;
+}
+
+
+void 
+TestSuiteTest::testConstructor()
+{
+  std::string name( "MySuite" );
+  CPPUNIT_NS::TestSuite suite( name );
+  CPPUNIT_ASSERT_EQUAL( name, suite.getName() );
+}
+
+
+void 
+TestSuiteTest::testCountTestCasesWithNoTest()
+{
+  CPPUNIT_ASSERT_EQUAL( 0, m_suite->countTestCases() );
+}
+
+
+void 
+TestSuiteTest::testCountTestCasesWithTwoTests()
+{
+  MockTestCase *case1 = new MockTestCase( "test1" );
+  case1->setExpectedCountTestCasesCall();
+  MockTestCase *case2 = new MockTestCase( "test2" );
+  case2->setExpectedCountTestCasesCall();
+  m_suite->addTest( case1 );
+  m_suite->addTest( case2 );
+
+  CPPUNIT_ASSERT_EQUAL( 2, m_suite->countTestCases() );
+  case1->verify();
+  case2->verify();
+}
+
+
+void 
+TestSuiteTest::testCountTestCasesWithSubSuite()
+{
+  MockTestCase *case1 = new MockTestCase( "test1" );
+  case1->setExpectedCountTestCasesCall();
+  MockTestCase *case2 = new MockTestCase( "test2" );
+  case2->setExpectedCountTestCasesCall();
+  MockTestCase *case3 = new MockTestCase( "test3" );
+  case3->setExpectedCountTestCasesCall();
+  CPPUNIT_NS::TestSuite *subSuite = new CPPUNIT_NS::TestSuite( "SubSuite");
+  subSuite->addTest( case1 );
+  subSuite->addTest( case2 );
+  m_suite->addTest( case3 );
+  m_suite->addTest( subSuite );
+
+  CPPUNIT_ASSERT_EQUAL( 3, m_suite->countTestCases() );
+  case1->verify();
+  case2->verify();
+  case3->verify();
+}
+
+
+void 
+TestSuiteTest::testRunWithOneTest()
+{
+  MockTestCase *case1 = new MockTestCase( "test1" );
+  case1->setExpectedRunTestCall();
+  m_suite->addTest( case1 );
+
+  CPPUNIT_NS::TestResult result;
+  m_suite->run( &result );
+
+  case1->verify();
+}
+
+
+void 
+TestSuiteTest::testRunWithOneTestAndSubSuite()
+{
+  MockTestCase *case1 = new MockTestCase( "test1" );
+  case1->setExpectedRunTestCall();
+  MockTestCase *case2 = new MockTestCase( "test2" );
+  case2->setExpectedRunTestCall();
+  MockTestCase *case3 = new MockTestCase( "test3" );
+  case3->setExpectedRunTestCall();
+  CPPUNIT_NS::TestSuite *subSuite = new CPPUNIT_NS::TestSuite( "SubSuite");
+  subSuite->addTest( case1 );
+  subSuite->addTest( case2 );
+  m_suite->addTest( case3 );
+  m_suite->addTest( subSuite);
+
+  CPPUNIT_NS::TestResult result;
+  m_suite->run( &result );
+
+  case1->verify();
+  case2->verify();
+  case3->verify();
+}
+
+
+void 
+TestSuiteTest::testGetTests()
+{
+  m_suite->addTest( new CPPUNIT_NS::TestCase( "test1" ) );
+  m_suite->addTest( new CPPUNIT_NS::TestCase( "test2" ) );
+  CPPUNIT_ASSERT_EQUAL( 2, int(m_suite->getTests().size()) );
+}
+
+
+void 
+TestSuiteTest::testDeleteContents()
+{
+  m_suite->addTest( new CPPUNIT_NS::TestCase( "test2" ) );
+  m_suite->deleteContents();
+  CPPUNIT_ASSERT_EQUAL( 0, int(m_suite->getTests().size()) );
+}
+
+
+void 
+TestSuiteTest::testGetChildTestCount()
+{
+  m_suite->addTest( new CPPUNIT_NS::TestCase( "test1" ) );
+  m_suite->addTest( new CPPUNIT_NS::TestCase( "test2" ) );
+
+  CPPUNIT_ASSERT_EQUAL( 2, m_suite->getChildTestCount() );
+}
+
+
+void 
+TestSuiteTest::testGetChildTestAt()
+{
+  CPPUNIT_NS::TestCase *test1 = new CPPUNIT_NS::TestCase( "test1" );
+  CPPUNIT_NS::TestCase *test2 = new CPPUNIT_NS::TestCase( "test2" );
+  m_suite->addTest( test1 );
+  m_suite->addTest( test2 );
+
+  CPPUNIT_ASSERT( test1 == m_suite->getChildTestAt(0) );
+  CPPUNIT_ASSERT( test2 == m_suite->getChildTestAt(1) );
+}
+
+
+void 
+TestSuiteTest::testGetChildTestAtThrow1()
+{
+  m_suite->getChildTestAt(-1);
+}
+
+
+void 
+TestSuiteTest::testGetChildTestAtThrow2()
+{
+  m_suite->getChildTestAt(0);
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestSuiteTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestSuiteTest.h
new file mode 100644 (file)
index 0000000..cdb301a
--- /dev/null
@@ -0,0 +1,60 @@
+#ifndef TESTSUITETEST_H
+#define TESTSUITETEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <stdexcept>
+
+
+class TestSuiteTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( TestSuiteTest );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testCountTestCasesWithNoTest );
+  CPPUNIT_TEST( testCountTestCasesWithTwoTests );
+  CPPUNIT_TEST( testCountTestCasesWithSubSuite );
+  CPPUNIT_TEST( testRunWithOneTest );
+  CPPUNIT_TEST( testRunWithOneTestAndSubSuite );
+  CPPUNIT_TEST( testGetTests );
+  CPPUNIT_TEST( testDeleteContents );
+  CPPUNIT_TEST( testGetChildTestCount );
+  CPPUNIT_TEST( testGetChildTestAt );
+  CPPUNIT_TEST_EXCEPTION( testGetChildTestAtThrow1, std::out_of_range );
+  CPPUNIT_TEST_EXCEPTION( testGetChildTestAtThrow2, std::out_of_range );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  TestSuiteTest();
+  virtual ~TestSuiteTest();
+
+  virtual void setUp();
+  virtual void tearDown();
+
+  void testConstructor();
+
+  void testCountTestCasesWithNoTest();
+  void testCountTestCasesWithTwoTests();
+  void testCountTestCasesWithSubSuite();
+
+  void testRunWithOneTest();
+  void testRunWithOneTestAndSubSuite();
+
+  void testGetTests();
+
+  void testDeleteContents();
+
+  void testGetChildTestCount();
+  void testGetChildTestAt();
+  void testGetChildTestAtThrow1();
+  void testGetChildTestAtThrow2();
+
+private:
+  TestSuiteTest( const TestSuiteTest &copy );
+  void operator =( const TestSuiteTest &copy );
+
+private:
+  CPPUNIT_NS::TestSuite *m_suite;
+};
+
+
+
+#endif  // TESTSUITETEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TestTest.cpp
new file mode 100644 (file)
index 0000000..4edc31c
--- /dev/null
@@ -0,0 +1,133 @@
+#include "CoreSuite.h"
+#include "TestTest.h"
+
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestTest,
+                                       coreSuiteName() );
+
+
+TestTest::TestTest() : 
+    CPPUNIT_NS::TestFixture()
+{
+}
+
+
+TestTest::~TestTest()
+{
+}
+
+
+void 
+TestTest::setUp()
+{
+  m_suite = new CPPUNIT_NS::TestSuite( "suite" );
+  m_test1 = new MockTestCase( "test1" );
+  m_test2 = new MockTestCase( "test2" );
+  m_suite->addTest( m_test1 );
+  m_suite->addTest( m_test2 );
+  
+  m_path = new CPPUNIT_NS::TestPath();
+}
+
+
+void 
+TestTest::tearDown()
+{
+  delete m_suite;
+  delete m_path;
+}
+
+
+void 
+TestTest::testFindTestPathPointerThis()
+{
+  CPPUNIT_ASSERT( m_test1->findTestPath( m_test1, *m_path ) );
+  CPPUNIT_ASSERT_EQUAL( 1, m_path->getTestCount() );
+  CPPUNIT_ASSERT( m_test1 == m_path->getChildTest() );
+
+  m_path->removeTests();
+
+  CPPUNIT_ASSERT( m_suite->findTestPath( m_suite, *m_path ) );
+  CPPUNIT_ASSERT_EQUAL( 1, m_path->getTestCount() );
+  CPPUNIT_ASSERT( m_suite == m_path->getChildTest() );
+}
+
+
+void 
+TestTest::testFindTestPathPointer()
+{
+  CPPUNIT_ASSERT( m_suite->findTestPath( m_test1, *m_path ) );
+  CPPUNIT_ASSERT_EQUAL( 2, m_path->getTestCount() );
+  CPPUNIT_ASSERT( m_suite == m_path->getTestAt(0) );
+  CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(1) );
+}
+
+
+void 
+TestTest::testFindTestPathPointerFail()
+{
+  MockTestCase test( "test" );
+  CPPUNIT_ASSERT( !m_suite->findTestPath( &test, *m_path ) );
+  CPPUNIT_ASSERT( !m_path->isValid() );
+}
+
+
+void 
+TestTest::testFindTestPathNameThis()
+{
+  CPPUNIT_ASSERT( m_test1->findTestPath( "test1", *m_path ) );
+  CPPUNIT_ASSERT_EQUAL( 1, m_path->getTestCount() );
+  CPPUNIT_ASSERT( m_test1 == m_path->getChildTest() );
+
+  m_path->removeTests();
+
+  CPPUNIT_ASSERT( m_suite->findTestPath( "suite", *m_path ) );
+  CPPUNIT_ASSERT_EQUAL( 1, m_path->getTestCount() );
+  CPPUNIT_ASSERT( m_suite == m_path->getChildTest() );
+}
+
+
+void 
+TestTest::testFindTestPathName()
+{
+  CPPUNIT_ASSERT( m_suite->findTestPath( "test2", *m_path ) );
+  CPPUNIT_ASSERT_EQUAL( 2, m_path->getTestCount() );
+  CPPUNIT_ASSERT( m_suite == m_path->getTestAt(0) );
+  CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(1) );
+}
+
+
+void 
+TestTest::testFindTestPathNameFail()
+{
+  CPPUNIT_ASSERT( !m_suite->findTestPath( "bad-test", *m_path ) );
+  CPPUNIT_ASSERT( !m_path->isValid() );
+}
+
+
+void 
+TestTest::testFindTest()
+{
+  CPPUNIT_ASSERT( m_test1 == m_suite->findTest( "test1" ) );
+}
+
+
+void 
+TestTest::testFindTestThrow()
+{
+  m_suite->findTest( "no-name" );
+}
+
+
+void 
+TestTest::testResolveTestPath()
+{
+  CPPUNIT_NS::TestPath path1 = m_suite->resolveTestPath( "suite");
+  CPPUNIT_ASSERT_EQUAL( 1, path1.getTestCount() );
+  CPPUNIT_ASSERT( m_suite == path1.getTestAt(0) );
+
+  CPPUNIT_NS::TestPath path2 = m_suite->resolveTestPath( "suite/test2");
+  CPPUNIT_ASSERT_EQUAL( 2, path2.getTestCount() );
+  CPPUNIT_ASSERT( m_suite == path2.getTestAt(0) );
+  CPPUNIT_ASSERT( m_test2 == path2.getTestAt(1) );
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TestTest.h b/lib/cppunit-1.10.0/examples/cppunittest/TestTest.h
new file mode 100644 (file)
index 0000000..d556ace
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef TESTTEST_H
+#define TESTTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/TestSuite.h>
+#include <cppunit/TestPath.h>
+#include "MockTestCase.h"
+#include <stdexcept>
+
+
+/*! \class TestTest
+ * \brief Unit test for class Test.
+ */
+class TestTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( TestTest );
+  CPPUNIT_TEST( testFindTestPathPointerThis );
+  CPPUNIT_TEST( testFindTestPathPointer );
+  CPPUNIT_TEST( testFindTestPathPointerFail );
+  CPPUNIT_TEST( testFindTestPathNameThis );
+  CPPUNIT_TEST( testFindTestPathName );
+  CPPUNIT_TEST( testFindTestPathNameFail );
+  CPPUNIT_TEST( testFindTest );
+  CPPUNIT_TEST_EXCEPTION( testFindTestThrow, std::invalid_argument );
+  CPPUNIT_TEST( testResolveTestPath );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  /*! Constructs a TestTest object.
+   */
+  TestTest();
+
+  /// Destructor.
+  virtual ~TestTest();
+
+  void setUp();
+  void tearDown();
+
+  void testFindTestPathPointerThis();
+  void testFindTestPathPointer();
+  void testFindTestPathPointerFail();
+
+  void testFindTestPathNameThis();
+  void testFindTestPathName();
+  void testFindTestPathNameFail();
+
+  void testFindTest();
+  void testFindTestThrow();
+
+  void testResolveTestPath();
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestTest( const TestTest &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestTest &copy );
+
+private:
+  CPPUNIT_NS::TestSuite *m_suite;
+  MockTestCase *m_test1;
+  MockTestCase *m_test2;
+  CPPUNIT_NS::TestPath *m_path;
+};
+
+
+#endif  // TESTTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/ToolsSuite.h b/lib/cppunit-1.10.0/examples/cppunittest/ToolsSuite.h
new file mode 100644 (file)
index 0000000..a96e803
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef CPPUNITTEST_TOOLSSUITE_H
+#define CPPUNITTEST_TOOLSSUITE_H
+
+#include <cppunit/Portability.h>
+#include <string>
+
+inline std::string toolsSuiteName()
+{
+  return "Tools";
+}
+
+#endif // CPPUNITTEST_TOOLSSUITE_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TrackedTestCase.cpp b/lib/cppunit-1.10.0/examples/cppunittest/TrackedTestCase.cpp
new file mode 100644 (file)
index 0000000..aaea99a
--- /dev/null
@@ -0,0 +1,55 @@
+#include "TrackedTestCase.h"
+
+Tracker *TrackedTestCase::ms_tracker = NULL;
+
+TrackedTestCase::TrackedTestCase()
+: CPPUNIT_NS::TestCase( "" )
+{
+  if ( ms_tracker != NULL )
+    ms_tracker->onConstructor();
+}
+
+
+TrackedTestCase::~TrackedTestCase()
+{
+  if ( ms_tracker != NULL )
+    ms_tracker->onDestructor();
+}
+
+
+void 
+TrackedTestCase::setUp()
+{
+  if ( ms_tracker != NULL )
+    ms_tracker->onSetUp();
+}
+
+
+void 
+TrackedTestCase::tearDown()
+{
+  if ( ms_tracker != NULL )
+    ms_tracker->onTearDown();
+}
+
+
+void 
+TrackedTestCase::test()
+{
+  if ( ms_tracker != NULL )
+    ms_tracker->onTest();
+}
+
+
+void 
+TrackedTestCase::setTracker( Tracker *tracker )
+{
+  ms_tracker = tracker;
+}
+
+
+void 
+TrackedTestCase::removeTracker()
+{
+  ms_tracker = NULL;
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/TrackedTestCase.h b/lib/cppunit-1.10.0/examples/cppunittest/TrackedTestCase.h
new file mode 100644 (file)
index 0000000..f665c50
--- /dev/null
@@ -0,0 +1,45 @@
+#ifndef TRACKEDTESTCASE_H
+#define TRACKEDTESTCASE_H
+
+#include <cppunit/TestCase.h>
+
+
+class Tracker
+{
+public:
+  virtual ~Tracker() {}
+
+  virtual void onConstructor() {}
+  virtual void onDestructor() {}
+  virtual void onSetUp() {}
+  virtual void onTearDown() {}
+  virtual void onTest() {};
+};
+
+
+class TrackedTestCase : public CPPUNIT_NS::TestCase
+{
+public:
+  TrackedTestCase();
+
+  virtual ~TrackedTestCase();
+
+  virtual void setUp();
+  virtual void tearDown();
+
+  void test();
+
+  static void setTracker( Tracker *tracker );
+  static void removeTracker();
+
+private:
+  TrackedTestCase( const TrackedTestCase &copy );
+
+  void operator =( const TrackedTestCase &copy );
+
+private:
+  static Tracker *ms_tracker;
+};
+
+
+#endif  // TRACKEDTESTCASE_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/UnitTestToolSuite.h b/lib/cppunit-1.10.0/examples/cppunittest/UnitTestToolSuite.h
new file mode 100644 (file)
index 0000000..4b12661
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef CPPUNITTEST_UNITTESTTOOLSUITE_H
+#define CPPUNITTEST_UNITTESTTOOLSUITE_H
+
+#include <cppunit/Portability.h>
+#include <string>
+
+inline std::string unitTestToolSuiteName()
+{
+  return "UnitTestTool";
+}
+
+#endif // CPPUNITTEST_UNITTESTTOOLSUITE_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlElementTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/XmlElementTest.cpp
new file mode 100644 (file)
index 0000000..3b5bd4c
--- /dev/null
@@ -0,0 +1,225 @@
+#include <cppunit/tools/XmlElement.h>
+#include "ToolsSuite.h"
+#include "XmlElementTest.h"
+#include "XmlUniformiser.h"
+
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( XmlElementTest, 
+                                       toolsSuiteName() );
+
+
+XmlElementTest::XmlElementTest()
+{
+}
+
+
+XmlElementTest::~XmlElementTest()
+{
+}
+
+
+void 
+XmlElementTest::setUp()
+{
+}
+
+
+void 
+XmlElementTest::tearDown()
+{
+}
+
+
+void 
+XmlElementTest::testStringContentConstructor()
+{
+  CPPUNIT_NS::XmlElement element( "aName", "someContent" );
+  CPPUNIT_ASSERT_EQUAL( std::string("aName"), element.name() );
+  CPPUNIT_ASSERT_EQUAL( std::string("someContent"), element.content() );
+}
+
+
+void 
+XmlElementTest::testNumericContentConstructor()
+{
+  CPPUNIT_NS::XmlElement element( "numericName", 123456789 );
+  CPPUNIT_ASSERT_EQUAL( std::string("numericName"), element.name() );
+  CPPUNIT_ASSERT_EQUAL( std::string("123456789"), element.content() );
+}
+
+
+void 
+XmlElementTest::testSetName()
+{
+  CPPUNIT_NS::XmlElement element( "aName" );
+  element.setName( "anotherName" );
+  CPPUNIT_ASSERT_EQUAL( std::string("anotherName"), element.name() );
+}
+
+
+void 
+XmlElementTest::testSetStringContent()
+{
+  CPPUNIT_NS::XmlElement element( "aName", "someContent" );
+  element.setContent( "other" );
+  CPPUNIT_ASSERT_EQUAL( std::string("other"), element.content() );
+}
+
+
+void 
+XmlElementTest::testSetNumericContent()
+{
+  CPPUNIT_NS::XmlElement element( "aName", "someContent" );
+  element.setContent( 87654321 );
+  CPPUNIT_ASSERT_EQUAL( std::string("87654321"), element.content() );
+}
+
+
+void 
+XmlElementTest::testElementCount()
+{
+  CPPUNIT_NS::XmlElement node( "element", "content" );
+  CPPUNIT_ASSERT_EQUAL( 0, node.elementCount() );
+
+  node.addElement( new CPPUNIT_NS::XmlElement( "child1" ) );
+  node.addElement( new CPPUNIT_NS::XmlElement( "child2" ) );
+  CPPUNIT_ASSERT_EQUAL( 2, node.elementCount() );
+}
+
+
+void 
+XmlElementTest::testElementAtNegativeIndexThrow()
+{
+  CPPUNIT_NS::XmlElement node( "element" );
+  node.elementAt( -1 );
+}
+
+
+void 
+XmlElementTest::testElementAtTooLargeIndexThrow()
+{
+  CPPUNIT_NS::XmlElement node( "element" );
+  node.elementAt( 0 );
+}
+
+
+void 
+XmlElementTest::testElementAt()
+{
+  CPPUNIT_NS::XmlElement node( "element" );
+  CPPUNIT_NS::XmlElement *element1 = new CPPUNIT_NS::XmlElement( "element1" );
+  CPPUNIT_NS::XmlElement *element2 = new CPPUNIT_NS::XmlElement( "element2" );
+  node.addElement( element1 );
+  node.addElement( element2 );
+
+  CPPUNIT_ASSERT( element1 == node.elementAt(0) );
+  CPPUNIT_ASSERT( element2 == node.elementAt(1) );
+}
+
+
+void 
+XmlElementTest::testElementForThrow()
+{
+  CPPUNIT_NS::XmlElement node( "element" );
+  node.addElement( new CPPUNIT_NS::XmlElement( "element1" ) );
+  node.elementFor( "name2" );
+}
+
+
+void 
+XmlElementTest::testElementFor()
+{
+  CPPUNIT_NS::XmlElement node( "element" );
+  CPPUNIT_NS::XmlElement *element1 = new CPPUNIT_NS::XmlElement( "element1" );
+  CPPUNIT_NS::XmlElement *element2 = new CPPUNIT_NS::XmlElement( "element2" );
+  node.addElement( element1 );
+  node.addElement( element2 );
+
+  CPPUNIT_ASSERT( element2 == node.elementFor( "element2" ) );
+  CPPUNIT_ASSERT( element1 == node.elementFor( "element1" ) );
+}
+
+
+void 
+XmlElementTest::testEmptyNodeToString()
+{
+  CPPUNIT_NS::XmlElement node( "element" );
+  std::string expectedXml = "<element></element>";
+  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
+}
+
+
+void 
+XmlElementTest::testElementWithAttributesToString()
+{
+  CPPUNIT_NS::XmlElement node( "element" );
+  node.addAttribute( "id", 17 );
+  node.addAttribute( "date-format", "iso-8901" );
+  std::string expectedXml = "<element id=\"17\" "
+                            "date-format=\"iso-8901\">"
+                            "</element>";
+  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
+}
+
+
+void 
+XmlElementTest::testEscapedAttributeValueToString()
+{
+  CPPUNIT_NS::XmlElement node( "element" );
+  node.addAttribute( "escaped", "&<>\"'" );
+  std::string expectedXml = "<element escaped=\""
+                            "&amp;&lt;&gt;&quot;&apos;"
+                            "\"></element>";
+  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
+}
+
+
+void 
+XmlElementTest::testElementToStringEscapeContent()
+{
+  CPPUNIT_NS::XmlElement node( "element", "ChessTest<class Chess>" );
+  std::string expectedXml = "<element>"
+                            "ChessTest&lt;class Chess&gt;"
+                            "</element>";
+  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
+}
+
+
+void 
+XmlElementTest::testElementWithChildrenToString()
+{
+  CPPUNIT_NS::XmlElement node( "element" );
+  node.addElement( new CPPUNIT_NS::XmlElement( "child1" ) );
+  node.addElement( new CPPUNIT_NS::XmlElement( "child2" ) );
+  std::string expectedXml = "<element><child1></child1>"
+                            "<child2></child2></element>";
+  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
+}
+
+
+void 
+XmlElementTest::testElementWithContentToString()
+{
+  CPPUNIT_NS::XmlElement node( "element", "content\nline2" );
+  std::string expectedXml = "<element>content\nline2</element>";
+  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
+}
+
+
+void 
+XmlElementTest::testElementWithNumericContentToString()
+{
+  CPPUNIT_NS::XmlElement node( "element", 123456789 );
+  std::string expectedXml = "<element>123456789</element>";
+  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
+}
+
+
+void 
+XmlElementTest::testElementWithContentAndChildToString()
+{
+  CPPUNIT_NS::XmlElement node( "element", "content" );
+  node.addElement( new CPPUNIT_NS::XmlElement( "child1" ) );
+  std::string expectedXml = "<element><child1></child1>content</element>";
+  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, node.toString() );
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlElementTest.h b/lib/cppunit-1.10.0/examples/cppunittest/XmlElementTest.h
new file mode 100644 (file)
index 0000000..875ee51
--- /dev/null
@@ -0,0 +1,77 @@
+#ifndef CPPUNITEST_XMLELEMENTTEST_H
+#define CPPUNITEST_XMLELEMENTTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <stdexcept>
+
+
+/*! Unit tests for XmlElement.
+ */
+class XmlElementTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( XmlElementTest );
+  CPPUNIT_TEST( testStringContentConstructor );
+  CPPUNIT_TEST( testNumericContentConstructor );
+  CPPUNIT_TEST( testSetName );
+  CPPUNIT_TEST( testSetStringContent );
+  CPPUNIT_TEST( testSetNumericContent );
+  CPPUNIT_TEST( testElementCount );
+  CPPUNIT_TEST_EXCEPTION( testElementAtNegativeIndexThrow, std::invalid_argument );
+  CPPUNIT_TEST_EXCEPTION( testElementAtTooLargeIndexThrow, std::invalid_argument );
+  CPPUNIT_TEST( testElementAt );
+  CPPUNIT_TEST_EXCEPTION( testElementForThrow, std::invalid_argument );
+  CPPUNIT_TEST( testElementFor );
+
+  CPPUNIT_TEST( testEmptyNodeToString );
+  CPPUNIT_TEST( testElementWithAttributesToString );
+  CPPUNIT_TEST( testEscapedAttributeValueToString );
+  CPPUNIT_TEST( testElementToStringEscapeContent );
+  CPPUNIT_TEST( testElementWithChildrenToString );
+  CPPUNIT_TEST( testElementWithContentToString );
+  CPPUNIT_TEST( testElementWithNumericContentToString );
+  CPPUNIT_TEST( testElementWithContentAndChildToString );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  /*! Constructs a XmlElementTest object.
+   */
+  XmlElementTest();
+
+  /// Destructor.
+  virtual ~XmlElementTest();
+
+  void setUp();
+  void tearDown();
+
+  void testStringContentConstructor();
+  void testNumericContentConstructor();
+  void testSetName();
+  void testSetStringContent();
+  void testSetNumericContent();
+  void testElementCount();
+  void testElementAtNegativeIndexThrow();
+  void testElementAtTooLargeIndexThrow();
+  void testElementAt();
+  void testElementForThrow();
+  void testElementFor();
+
+  void testEmptyNodeToString();
+  void testElementWithAttributesToString();
+  void testEscapedAttributeValueToString();
+  void testElementToStringEscapeContent();
+  void testElementWithChildrenToString();
+  void testElementWithContentToString();
+  void testElementWithNumericContentToString();
+  void testElementWithContentAndChildToString();
+
+private:
+  /// Prevents the use of the copy constructor.
+  XmlElementTest( const XmlElementTest &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const XmlElementTest &copy );
+};
+
+
+
+#endif  // CPPUNITEST_XMLELEMENTTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlOutputterTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/XmlOutputterTest.cpp
new file mode 100644 (file)
index 0000000..d2ab3ba
--- /dev/null
@@ -0,0 +1,355 @@
+#include <cppunit/XmlOutputter.h>
+#include <cppunit/TestFailure.h>
+#include <cppunit/XmlOutputter.h>
+#include <cppunit/XmlOutputterHook.h>
+#include "OutputSuite.h"
+#include "XmlOutputterTest.h"
+#include "XmlUniformiser.h"
+
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( XmlOutputterTest, 
+                                       outputSuiteName() );
+
+
+XmlOutputterTest::XmlOutputterTest()
+{
+}
+
+
+XmlOutputterTest::~XmlOutputterTest()
+{
+}
+
+
+void 
+XmlOutputterTest::setUp()
+{
+  m_dummyTests.clear();
+  m_result = new CPPUNIT_NS::TestResultCollector();
+}
+
+
+void 
+XmlOutputterTest::tearDown()
+{
+  delete m_result;
+  for ( unsigned int index =0; index < m_dummyTests.size(); ++index )
+    delete m_dummyTests[index];
+  m_dummyTests.clear();
+}
+
+
+void 
+XmlOutputterTest::testWriteXmlResultWithNoTest()
+{
+  CPPUNIT_NS::OStringStream stream;
+  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );
+  outputter.write();
+
+  std::string actualXml = stream.str();
+  std::string expectedXml = 
+    "<TestRun>"
+      "<FailedTests></FailedTests>"
+      "<SuccessfulTests></SuccessfulTests>"
+      "<Statistics>"
+        "<Tests>0</Tests>"
+        "<FailuresTotal>0</FailuresTotal>"
+        "<Errors>0</Errors>"
+        "<Failures>0</Failures>"
+      "</Statistics>"
+    "</TestRun>";
+  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );
+}
+
+
+void 
+XmlOutputterTest::testWriteXmlResultWithOneFailure()
+{
+  addTestFailure( "test1", "message failure1", CPPUNIT_NS::SourceLine( "test.cpp", 3 ) );
+
+  CPPUNIT_NS::OStringStream stream;
+  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );
+  outputter.write();
+
+  std::string actualXml = stream.str();
+  std::string expectedXml = 
+    "<TestRun>"
+      "<FailedTests>"
+        "<FailedTest id=\"1\">"
+          "<Name>test1</Name>"
+          "<FailureType>Assertion</FailureType>"
+          "<Location>"
+            "<File>test.cpp</File>"
+            "<Line>3</Line>"
+          "</Location>"
+          "<Message>message failure1</Message>"
+        "</FailedTest>"
+      "</FailedTests>"
+      "<SuccessfulTests></SuccessfulTests>"
+      "<Statistics>"
+        "<Tests>1</Tests>"
+        "<FailuresTotal>1</FailuresTotal>"
+        "<Errors>0</Errors>"
+        "<Failures>1</Failures>"
+      "</Statistics>"
+    "</TestRun>";
+  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );
+}
+
+
+void 
+XmlOutputterTest::testWriteXmlResultWithOneError()
+{
+  addTestError( "test1", "message error1" );
+
+  CPPUNIT_NS::OStringStream stream;
+  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );
+  outputter.write();
+
+  std::string actualXml = stream.str();
+  std::string expectedXml = 
+    "<TestRun>"
+      "<FailedTests>"
+        "<FailedTest id=\"1\">"
+          "<Name>test1</Name>"
+          "<FailureType>Error</FailureType>"
+          "<Message>message error1</Message>"
+        "</FailedTest>"
+      "</FailedTests>"
+      "<SuccessfulTests></SuccessfulTests>"
+      "<Statistics>"
+        "<Tests>1</Tests>"
+        "<FailuresTotal>1</FailuresTotal>"
+        "<Errors>1</Errors>"
+        "<Failures>0</Failures>"
+      "</Statistics>"
+    "</TestRun>";
+  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );
+}
+
+
+void 
+XmlOutputterTest::testWriteXmlResultWithOneSuccess()
+{
+  addTest( "test1" );
+
+  CPPUNIT_NS::OStringStream stream;
+  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );
+  outputter.write();
+
+  std::string actualXml = stream.str();
+  std::string expectedXml = 
+    "<TestRun>"
+      "<FailedTests></FailedTests>"
+      "<SuccessfulTests>"
+        "<Test id=\"1\">"
+          "<Name>test1</Name>"
+        "</Test>"
+      "</SuccessfulTests>"
+      "<Statistics>"
+        "<Tests>1</Tests>"
+        "<FailuresTotal>0</FailuresTotal>"
+        "<Errors>0</Errors>"
+        "<Failures>0</Failures>"
+      "</Statistics>"
+    "</TestRun>";
+  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );
+}
+
+
+void 
+XmlOutputterTest::testWriteXmlResultWithThreeFailureTwoErrorsAndTwoSuccess()
+{
+  addTestFailure( "test1", "failure1" );
+  addTestError( "test2", "error1" );
+  addTestFailure( "test3", "failure2" );
+  addTestFailure( "test4", "failure3" );
+  addTest( "test5" );
+  addTestError( "test6", "error2" );
+  addTest( "test7" );
+
+  CPPUNIT_NS::OStringStream stream;
+  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );
+  outputter.write();
+
+  std::string actualXml = stream.str();
+  std::string expectedXml = 
+    "<TestRun>"
+       "<FailedTests>"
+        "<FailedTest id=\"1\">"
+          "<Name>test1</Name>"
+          "<FailureType>Assertion</FailureType>"
+          "<Message>failure1</Message>"
+        "</FailedTest>"
+        "<FailedTest id=\"2\">"
+          "<Name>test2</Name>"
+          "<FailureType>Error</FailureType>"
+          "<Message>error1</Message>"
+        "</FailedTest>"
+        "<FailedTest id=\"3\">"
+          "<Name>test3</Name>"
+          "<FailureType>Assertion</FailureType>"
+          "<Message>failure2</Message>"
+        "</FailedTest>"
+        "<FailedTest id=\"4\">"
+          "<Name>test4</Name>"
+          "<FailureType>Assertion</FailureType>"
+          "<Message>failure3</Message>"
+        "</FailedTest>"
+        "<FailedTest id=\"6\">"
+          "<Name>test6</Name>"
+          "<FailureType>Error</FailureType>"
+          "<Message>error2</Message>"
+        "</FailedTest>"
+      "</FailedTests>"
+     "<SuccessfulTests>"
+        "<Test id=\"5\">"
+          "<Name>test5</Name>"
+        "</Test>"
+        "<Test id=\"7\">"
+          "<Name>test7</Name>"
+        "</Test>"
+      "</SuccessfulTests>"
+      "<Statistics>"
+        "<Tests>7</Tests>"
+        "<FailuresTotal>5</FailuresTotal>"
+        "<Errors>2</Errors>"
+        "<Failures>3</Failures>"
+      "</Statistics>"
+    "</TestRun>";
+  CPPUNITTEST_ASSERT_XML_EQUAL( expectedXml, actualXml );
+}
+
+
+class XmlOutputterTest::MockHook : public CPPUNIT_NS::XmlOutputterHook
+{
+public:
+  MockHook( int &beginCalls,
+            int &endCalls,
+            int &statisticsCalls,
+            int &successfulTestCalls,
+            int &failedTestCalls )
+      : m_successfulTestCalls( successfulTestCalls )
+      , m_failedTestCalls( failedTestCalls )
+      , m_beginCalls( beginCalls )
+      , m_endCalls( endCalls )
+      , m_statisticsCalls( statisticsCalls )
+  {
+  }
+
+  void beginDocument( CPPUNIT_NS::XmlDocument *document )
+  {
+    ++m_beginCalls;
+  }
+
+  void endDocument( CPPUNIT_NS::XmlDocument *document )
+  {
+    ++m_endCalls;
+  }
+
+  void failTestAdded( CPPUNIT_NS::XmlDocument *document,
+                      CPPUNIT_NS::XmlElement *testElement,
+                      CPPUNIT_NS::Test *test,
+                      CPPUNIT_NS::TestFailure *failure )
+  {
+    ++m_failedTestCalls;
+  }
+
+  void successfulTestAdded( CPPUNIT_NS::XmlDocument *document,
+                            CPPUNIT_NS::XmlElement *testElement,
+                            CPPUNIT_NS::Test *test )
+  {
+    ++m_successfulTestCalls;
+  }
+
+  void statisticsAdded( CPPUNIT_NS::XmlDocument *document,
+                        CPPUNIT_NS::XmlElement *statisticsElement )
+  {
+    ++m_statisticsCalls;
+  }
+
+private:
+  int &m_beginCalls;
+  int &m_endCalls;
+  int &m_statisticsCalls;
+  int &m_successfulTestCalls;
+  int &m_failedTestCalls;
+};
+
+
+void 
+XmlOutputterTest::testHook()
+{
+  int begin =0, end =0, statistics =0, successful =0, failed =0;
+  MockHook hook( begin, end, statistics, successful, failed );
+
+  addTest( "test1" );
+  addTest( "test2" );
+  addTest( "test3" );
+  addTestFailure( "testfail1", "assertion failed" );
+  addTestError( "testerror1", "exception" );
+
+  CPPUNIT_NS::OStringStream stream;
+  CPPUNIT_NS::XmlOutputter outputter( m_result, stream );
+  outputter.addHook( &hook );
+  outputter.write();
+
+  CPPUNIT_ASSERT_EQUAL( 1, begin );
+  CPPUNIT_ASSERT_EQUAL( 1, end );
+  CPPUNIT_ASSERT_EQUAL( 1, statistics );
+  CPPUNIT_ASSERT_EQUAL( 3, successful );
+  CPPUNIT_ASSERT_EQUAL( 2, failed );
+}
+
+
+void 
+XmlOutputterTest::addTest( std::string testName )
+{
+  CPPUNIT_NS::Test *test = makeDummyTest( testName );
+  m_result->startTest( test );
+  m_result->endTest( test );
+}
+
+
+void 
+XmlOutputterTest::addTestFailure( std::string testName,
+                                  std::string message,
+                                  CPPUNIT_NS::SourceLine sourceLine )
+{
+  addGenericTestFailure( testName, CPPUNIT_NS::Message(message), sourceLine, false );
+}
+
+
+void 
+XmlOutputterTest::addTestError( std::string testName,
+                                std::string message,
+                                CPPUNIT_NS::SourceLine sourceLine )
+{
+  addGenericTestFailure( testName, CPPUNIT_NS::Message(message), sourceLine, true );
+}
+
+
+void 
+XmlOutputterTest::addGenericTestFailure(  std::string testName,
+                                          CPPUNIT_NS::Message message,
+                                          CPPUNIT_NS::SourceLine sourceLine,
+                                          bool isError )
+{
+  CPPUNIT_NS::Test *test = makeDummyTest( testName );
+  m_result->startTest( test );
+  CPPUNIT_NS::TestFailure failure( test, 
+                                new CPPUNIT_NS::Exception( message, sourceLine ),
+                                isError );
+  m_result->addFailure( failure );
+  m_result->endTest( test );
+}
+
+
+CPPUNIT_NS::Test *
+XmlOutputterTest::makeDummyTest( std::string testName )
+{
+  CPPUNIT_NS::Test *test = new CPPUNIT_NS::TestCase( testName );
+  m_dummyTests.push_back( test );
+  return test;
+}
+
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlOutputterTest.h b/lib/cppunit-1.10.0/examples/cppunittest/XmlOutputterTest.h
new file mode 100644 (file)
index 0000000..697a452
--- /dev/null
@@ -0,0 +1,78 @@
+#ifndef CPPUNITEST_XMLTESTRESULTOUTPUTTERTEST_H
+#define CPPUNITEST_XMLTESTRESULTOUTPUTTERTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/portability/CppUnitDeque.h>
+#include <cppunit/Test.h>
+#include <cppunit/TestFailure.h>
+#include <cppunit/TestResultCollector.h>
+
+
+/*! \class XmlOutputterTest
+ * \brief Unit tests for XmlOutputter.
+ */
+class XmlOutputterTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( XmlOutputterTest );
+  CPPUNIT_TEST( testWriteXmlResultWithNoTest );
+  CPPUNIT_TEST( testWriteXmlResultWithOneFailure );
+  CPPUNIT_TEST( testWriteXmlResultWithOneError );
+  CPPUNIT_TEST( testWriteXmlResultWithOneSuccess );
+  CPPUNIT_TEST( testWriteXmlResultWithThreeFailureTwoErrorsAndTwoSuccess );
+  CPPUNIT_TEST( testHook );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  /*! Constructs a XmlOutputterTest object.
+   */
+  XmlOutputterTest();
+
+  /// Destructor.
+  virtual ~XmlOutputterTest();
+
+  void setUp();
+  void tearDown();
+  void testWriteXmlResultWithNoTest();
+  void testWriteXmlResultWithOneFailure();
+  void testWriteXmlResultWithOneError();
+  void testWriteXmlResultWithOneSuccess();
+  void testWriteXmlResultWithThreeFailureTwoErrorsAndTwoSuccess();
+
+  void testHook();
+
+private:
+  class MockHook;
+
+  /// Prevents the use of the copy constructor.
+  XmlOutputterTest( const XmlOutputterTest &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const XmlOutputterTest &copy );
+
+  std::string statistics( int tests, 
+                          int total, 
+                          int error, 
+                          int failure );
+
+  void addTest( std::string testName );
+  void addTestFailure( std::string testName,
+                       std::string message,
+                       CPPUNIT_NS::SourceLine sourceLine = CPPUNIT_NS::SourceLine() );
+  void addTestError( std::string testName,
+                     std::string message,
+                     CPPUNIT_NS::SourceLine sourceLine = CPPUNIT_NS::SourceLine() );
+  void addGenericTestFailure( std::string testName,
+                              CPPUNIT_NS::Message message,
+                              CPPUNIT_NS::SourceLine sourceLine,
+                              bool isError );
+
+  CPPUNIT_NS::Test *makeDummyTest( std::string testName );
+
+private:
+  CPPUNIT_NS::TestResultCollector *m_result;
+  CppUnitDeque<CPPUNIT_NS::Test *> m_dummyTests;
+};
+
+
+
+#endif  // CPPUNITEST_XMLTESTRESULTOUTPUTTERTEST_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiser.cpp b/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiser.cpp
new file mode 100644 (file)
index 0000000..44ad9b8
--- /dev/null
@@ -0,0 +1,236 @@
+#include "XmlUniformiser.h"
+
+
+int 
+notEqualIndex( std::string expectedXml,
+               std::string actualXml )
+{
+  unsigned int index = 0;
+  while ( index < actualXml.length()  &&  
+          index < expectedXml.length()  &&
+          actualXml[index] == expectedXml[index] )
+    ++index;
+
+  return index;
+}
+
+
+/// Asserts that two XML string are equivalent.
+void 
+checkXmlEqual( std::string expectedXml,
+               std::string actualXml,
+               CPPUNIT_NS::SourceLine sourceLine )
+{
+  std::string expected = XmlUniformiser( expectedXml ).stripped();
+  std::string actual = XmlUniformiser( actualXml ).stripped();
+
+  if ( expected == actual )
+    return;
+
+  int index = notEqualIndex( expected, actual );
+  CPPUNIT_NS::OStringStream message;
+  message  <<  "differ at index: "  <<  index  << "\n"
+           <<  "expected: "  <<  expected.substr(index) << "\n"
+           <<  "but was : "  <<  actual.substr( index );
+  CPPUNIT_NS::Asserter::failNotEqual( expected,
+                                      actual,
+                                      sourceLine,
+                                      message.str() );
+}
+
+
+
+XmlUniformiser::XmlUniformiser( const std::string &xml ) :
+    m_xml( xml ),
+    m_index( 0 )
+{
+}
+
+
+std::string 
+XmlUniformiser::stripped()
+{
+  while ( isValidIndex() )
+  {
+    skipSpaces();
+    if ( startsWith( "<?" ) )
+      skipProcessed();
+    else if ( startsWith( "<!--" ) )
+      skipComment();
+    else if ( startsWith( "<" ) )
+      copyElement();
+    else
+      copyElementContent();
+  }
+  return m_stripped;
+}
+
+
+void 
+XmlUniformiser::skipSpaces()
+{
+  while ( isSpace() )
+    skipNext();
+}
+
+
+bool 
+XmlUniformiser::isSpace( char c )
+{
+  return c < 33;
+}
+
+
+bool 
+XmlUniformiser::isSpace()
+{
+  return isValidIndex()  &&  isSpace( m_xml[m_index] );
+}
+
+
+bool 
+XmlUniformiser::isValidIndex()
+{
+  return m_index < m_xml.length();
+}
+
+
+void 
+XmlUniformiser::skipNext( int count )
+{
+  while ( count-- > 0 )
+    ++m_index;
+}
+
+
+void 
+XmlUniformiser::copyNext( int count )
+{
+  while ( count-- > 0  &&  isValidIndex() )
+    m_stripped += m_xml[ m_index++ ];
+}
+
+
+bool 
+XmlUniformiser::startsWith( std::string expected )
+{
+  std::string actual = m_xml.substr( m_index, expected.length() );
+  return actual == expected;
+}
+
+
+void 
+XmlUniformiser::skipProcessed()
+{
+  while ( isValidIndex()  &&  !startsWith( "?>" ) )
+    skipNext();
+  if ( isValidIndex() )
+    skipNext( 2 );
+}
+
+
+void 
+XmlUniformiser::skipComment()
+{
+  while ( isValidIndex()  &&  !startsWith( "-->" ) )
+    skipNext();
+  if ( isValidIndex() )
+    skipNext( 3 );
+}
+
+
+void 
+XmlUniformiser::copyElement()
+{
+  copyElementName();
+  copyElementAttributes();
+}
+
+
+void 
+XmlUniformiser::copyElementName()
+{
+  while ( isValidIndex()  &&
+          !( isSpace()  ||  startsWith( ">" ) ) )
+    copyNext();
+}
+
+
+void 
+XmlUniformiser::copyElementAttributes()
+{
+  do
+  {
+    bool hadSpace = isSpace();
+    skipSpaces();
+    if ( startsWith( ">" ) )
+      break;
+
+    if ( hadSpace )
+      m_stripped += ' ';
+
+    copyAttributeName();
+    skipSpaces();
+    if ( startsWith( "=" ) )
+    {
+      copyNext();
+      copyAttributeValue();
+    }
+    else    // attribute should always be valued, ne ?
+      m_stripped += ' ';
+  }
+  while ( isValidIndex() );
+  copyNext();
+}
+
+
+void 
+XmlUniformiser::copyAttributeName()
+{
+  while ( isValidIndex()  &&  !isEndOfAttributeName() )
+    copyNext();
+}
+
+
+bool 
+XmlUniformiser::isEndOfAttributeName()
+{
+  return isSpace()  ||  startsWith( ">" )  ||  startsWith( "=" );
+}
+
+
+void 
+XmlUniformiser::copyAttributeValue()
+{
+  skipSpaces();
+  copyUntilDoubleQuote();
+  copyUntilDoubleQuote();
+}
+
+
+void 
+XmlUniformiser::copyUntilDoubleQuote()
+{
+  while ( isValidIndex()  &&  !startsWith("\"") )
+    copyNext();
+  copyNext();   // '"'
+}
+
+
+void 
+XmlUniformiser::copyElementContent()
+{
+  while ( isValidIndex()  &&  !startsWith( "<" ) )
+    copyNext();
+  removeTrailingSpaces();
+}
+
+
+void 
+XmlUniformiser::removeTrailingSpaces()
+{
+  int index = m_stripped.length();
+  while ( index-1 > 0  &&  isSpace( m_stripped[index-1] ) )
+    --index;
+  m_stripped.resize( index );
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiser.h b/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiser.h
new file mode 100644 (file)
index 0000000..545ece3
--- /dev/null
@@ -0,0 +1,63 @@
+#ifndef CPPUNITTEST_XMLUNIFORMISER_H
+#define CPPUNITTEST_XMLUNIFORMISER_H
+
+#include <cppunit/SourceLine.h>
+#include <cppunit/TestAssert.h>
+#include <string>
+
+
+/*! Uniformise an XML string.
+ *
+ * Strips spaces between attribut in Element.
+ * \warning Attribute values must be double-quoted (att="value").
+ * No support for embedded DTD declaration
+ */
+class XmlUniformiser
+{
+public:
+  XmlUniformiser( const std::string &xml );
+  std::string stripped();
+
+private:
+  void skipSpaces();
+  bool isValidIndex();
+  void skipNext( int count =1 );
+  void copyNext( int count =1 );
+  void skipProcessed();
+  void skipComment();
+  void copyElement();
+  void copyElementContent();
+  bool isSpace( char c );
+  bool isSpace();
+  bool startsWith( std::string expected );
+  void copyElementName();
+  void copyElementAttributes();
+  void copyAttributeName();
+  bool isEndOfAttributeName();
+  void copyAttributeValue();
+  void copyUntilDoubleQuote();
+  void removeTrailingSpaces();
+
+private:
+  unsigned int m_index;
+  std::string m_xml;
+  std::string m_stripped;
+};
+
+
+
+
+void 
+checkXmlEqual( std::string expectedXml,
+               std::string actualXml,
+               CPPUNIT_NS::SourceLine sourceLine );
+
+
+/// Asserts that two XML strings are equivalent.
+#define CPPUNITTEST_ASSERT_XML_EQUAL( expected, actual ) \
+    ::checkXmlEqual( expected, actual,      \
+                     CPPUNIT_SOURCELINE() )
+
+
+
+#endif  // XMLUNIFORMISER_H
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiserTest.cpp b/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiserTest.cpp
new file mode 100644 (file)
index 0000000..a04a1dd
--- /dev/null
@@ -0,0 +1,144 @@
+#include <stdlib.h>
+#include "UnitTestToolSuite.h"
+#include "XmlUniformiserTest.h"
+#include "XmlUniformiser.h"
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( XmlUniformiserTest, 
+                                       unitTestToolSuiteName() );
+
+
+XmlUniformiserTest::XmlUniformiserTest()
+{
+}
+
+
+XmlUniformiserTest::~XmlUniformiserTest()
+{
+}
+
+
+void 
+XmlUniformiserTest::setUp()
+{
+}
+
+
+void 
+XmlUniformiserTest::tearDown()
+{
+}
+
+
+void 
+XmlUniformiserTest::testEmpty()
+{
+  check( "", "" );
+}
+
+
+void 
+XmlUniformiserTest::testSkipProcessed()
+{
+  check( "<?xml version=\"1.0\" encoding='ISO-8859-1' ?>",
+         "" );
+}
+
+
+void 
+XmlUniformiserTest::testOpenElementWithoutAttributeButSomeSpaces()
+{
+  check( "   <Test   >   ", 
+         "<Test>" );
+}
+
+
+void 
+XmlUniformiserTest::testOpenCloseElement()
+{
+  check( "  <TestName  >   </TestName  >  ",
+         "<TestName></TestName>" );
+}
+
+
+void 
+XmlUniformiserTest::testElementWithEmptyAttribute()
+{
+  check( "<TestName id=\"\">",
+         "<TestName id=\"\">" );
+}
+
+
+void 
+XmlUniformiserTest::testElementWithEmptyAttributeButSomeSpaces()
+{
+  check( "<TestName  id  = \"\" >",
+         "<TestName id=\"\">" );
+}
+
+
+void 
+XmlUniformiserTest::testElementWithOneAttribute()
+{
+  check( "<FailedTest id=\"123\">",
+         "<FailedTest id=\"123\">" );
+}
+
+
+void 
+XmlUniformiserTest::testElementWithThreeAttributes()
+{
+  check( "<FailedTest  id = \"7\" date-format= \"iso-8901\"  "
+                                           "style =\"debug\">",
+         "<FailedTest id=\"7\" date-format=\"iso-8901\" style=\"debug\">" );
+}
+
+
+void 
+XmlUniformiserTest::testElementWithContent()
+{
+  check( "<Element>\nContent\n</Element>\n",
+         "<Element>Content</Element>" );
+}
+
+
+void 
+XmlUniformiserTest::testElementsHierarchyWithContents()
+{
+  check( "<TestRuns date-format=\"iso-8901\">\n"
+            "<Date>2001-10-04</Date>\n"
+            "<FailedTests>\n<FailedTest>\n"
+            "<TestName>TokenParserTest</TestName>\n"
+            "</FailedTest>\n</Failedtests>\n</TestRuns>\n",
+         "<TestRuns date-format=\"iso-8901\">"
+            "<Date>2001-10-04</Date>"
+            "<FailedTests><FailedTest>"
+            "<TestName>TokenParserTest</TestName>"
+            "</FailedTest></Failedtests></TestRuns>" );
+}
+
+
+void 
+XmlUniformiserTest::testSkipComment()
+{
+  check( "<!-- skip comment-->",
+         "" );
+}
+
+
+void 
+XmlUniformiserTest::testAssertXmlEqual()
+{
+  CPPUNIT_ASSERT_ASSERTION_FAIL( 
+     CPPUNITTEST_ASSERT_XML_EQUAL( "<Test>", "<Tes>" ) );
+  CPPUNIT_ASSERT_ASSERTION_PASS( 
+     CPPUNITTEST_ASSERT_XML_EQUAL( "<Test>", "<Test>" ) );
+}
+
+
+void 
+XmlUniformiserTest::check( const std::string &xml, 
+                           const std::string &expectedStrippedXml )
+{
+  std::string actual = XmlUniformiser( xml ).stripped();
+  CPPUNIT_ASSERT_EQUAL( expectedStrippedXml, actual );
+}
diff --git a/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiserTest.h b/lib/cppunit-1.10.0/examples/cppunittest/XmlUniformiserTest.h
new file mode 100644 (file)
index 0000000..be2d6da
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef XMLUNIFORMISERTEST_H
+#define XMLUNIFORMISERTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+
+
+/*! \class XmlUniformiserTest
+ * \brief Unit test for XmlUniformiser.
+ */
+class XmlUniformiserTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( XmlUniformiserTest );
+  CPPUNIT_TEST( testEmpty );
+  CPPUNIT_TEST( testSkipProcessed );
+  CPPUNIT_TEST( testOpenElementWithoutAttributeButSomeSpaces );
+  CPPUNIT_TEST( testOpenCloseElement );
+  CPPUNIT_TEST( testElementWithEmptyAttribute );
+  CPPUNIT_TEST( testElementWithEmptyAttributeButSomeSpaces );
+  CPPUNIT_TEST( testElementWithOneAttribute );
+  CPPUNIT_TEST( testElementWithThreeAttributes );
+  CPPUNIT_TEST( testSkipComment );
+  CPPUNIT_TEST( testElementWithContent );
+  CPPUNIT_TEST( testElementsHierarchyWithContents );
+  CPPUNIT_TEST( testAssertXmlEqual );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  /*! Constructs a XmlUniformiserTest object.
+   */
+  XmlUniformiserTest();
+
+  /// Destructor.
+  virtual ~XmlUniformiserTest();
+
+  void setUp();
+  void tearDown();
+
+  void testEmpty();
+  void testSkipProcessed();
+  void testOpenElementWithoutAttributeButSomeSpaces();
+  void testOpenCloseElement();
+  void testElementWithEmptyAttribute();
+  void testElementWithEmptyAttributeButSomeSpaces();
+  void testElementWithOneAttribute();
+  void testElementWithThreeAttributes();
+  void testSkipComment();
+  void testElementWithContent();
+  void testElementsHierarchyWithContents();
+
+  void testAssertXmlEqual();
+
+private:
+  void check( const std::string &xml, 
+              const std::string &expectedStrippedXml );
+
+  /// Prevents the use of the copy constructor.
+  XmlUniformiserTest( const XmlUniformiserTest &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const XmlUniformiserTest &copy );
+
+private:
+};
+
+
+
+#endif  // XMLUNIFORMISERTEST_H
diff --git a/lib/cppunit-1.10.0/examples/examples.dsw b/lib/cppunit-1.10.0/examples/examples.dsw
new file mode 100644 (file)
index 0000000..fc77400
--- /dev/null
@@ -0,0 +1,254 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00\r
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
+\r
+###############################################################################\r
+\r
+Project: "ClockerPlugIn"=.\ClockerPlugIn\ClockerPlugIn.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit_dll\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "CppUnitTestApp"=.\msvc6\CppUnitTestApp\CppUnitTestApp.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name TestRunner\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "CppUnitTestMain"=.\cppunittest\CppUnitTestMain.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit\r
+    End Project Dependency\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit_dll\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "CppUnitTestPlugIn"=.\cppunittest\CppUnitTestPlugIn.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit_dll\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "DllPlugInTester"=..\src\DllPlugInTester\DllPlugInTester.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit_dll\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "DllPlugInTesterTest"=..\src\DllPlugInTester\DllPlugInTesterTest.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "DumperPlugIn"=.\DumperPlugIn\DumperPlugIn.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit_dll\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "HostApp"=.\msvc6\HostApp\HostApp.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name TestRunner\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "TestPlugInRunner"=..\src\msvc6\testpluginrunner\TestPlugInRunner.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit_dll\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "TestRunner"=..\src\msvc6\testrunner\TestRunner.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "cppunit"=..\src\cppunit\cppunit.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "cppunit_dll"=..\src\cppunit\cppunit_dll.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "hierarchy"=.\hierarchy\hierarchy.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "money"=.\money\money.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "simple"=.\simple\simple.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "simple_plugin"=.\SIMPLE\simple_plugin.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit_dll\r
+    End Project Dependency\r
+    Begin Project Dependency\r
+    Project_Dep_Name DllPlugInTester\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Global:\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<3>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
diff --git a/lib/cppunit-1.10.0/examples/examples.opt b/lib/cppunit-1.10.0/examples/examples.opt
new file mode 100644 (file)
index 0000000..179dea9
Binary files /dev/null and b/lib/cppunit-1.10.0/examples/examples.opt differ
diff --git a/lib/cppunit-1.10.0/examples/hierarchy/BoardGame.cpp b/lib/cppunit-1.10.0/examples/hierarchy/BoardGame.cpp
new file mode 100644 (file)
index 0000000..f74af11
--- /dev/null
@@ -0,0 +1,12 @@
+#include "BoardGame.h"
+
+bool
+BoardGame::reset()
+{
+  return true;
+}
+
+
+BoardGame::~BoardGame()
+{
+}
diff --git a/lib/cppunit-1.10.0/examples/hierarchy/BoardGame.h b/lib/cppunit-1.10.0/examples/hierarchy/BoardGame.h
new file mode 100644 (file)
index 0000000..d1864c5
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef __BOARDGAME_H__
+#define __BOARDGAME_H__
+
+/** Example class to show hierarchy testing.
+ * 
+ *  Shamelessly ripped and adapted from
+ *  <a href="http://c2.com/cgi/wiki?ClassHierarchyTestingInCppUnit">
+ *  ClassHierarchyTestingInCppUnit</a>
+ *  
+ */
+class BoardGame {
+  public:
+    /// expected to return true
+    virtual bool reset();
+    virtual ~BoardGame();
+};
+
+#endif
diff --git a/lib/cppunit-1.10.0/examples/hierarchy/BoardGameTest.h b/lib/cppunit-1.10.0/examples/hierarchy/BoardGameTest.h
new file mode 100644 (file)
index 0000000..0198944
--- /dev/null
@@ -0,0 +1,49 @@
+#ifndef __BOARDGAMETEST_H__
+#define __BOARDGAMETEST_H__
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <iostream>
+
+template<class GAMECLASS> 
+class BoardGameTest : public CPPUNIT_NS::TestFixture 
+{
+  CPPUNIT_TEST_SUITE( BoardGameTest );
+  CPPUNIT_TEST( testReset );
+  CPPUNIT_TEST( testResetShouldFail );
+  CPPUNIT_TEST_SUITE_END();
+protected:
+  GAMECLASS    *m_game;
+  
+public:
+  BoardGameTest()
+  {
+  }
+
+  int countTestCases () const
+  { 
+    return 1; 
+  }
+  
+  void setUp() 
+  { 
+    m_game = new GAMECLASS; 
+  }
+  
+  void tearDown()
+  { 
+    delete m_game; 
+  }
+  
+  void testReset() 
+  { 
+    CPPUNIT_ASSERT( m_game->reset() );
+  }
+
+  void testResetShouldFail() 
+  { 
+    std::cout << "The following test fails, this is intended:" << std::endl;
+    CPPUNIT_ASSERT( !m_game->reset() );
+  }
+};
+
+#endif
diff --git a/lib/cppunit-1.10.0/examples/hierarchy/Chess.cpp b/lib/cppunit-1.10.0/examples/hierarchy/Chess.cpp
new file mode 100644 (file)
index 0000000..a49263c
--- /dev/null
@@ -0,0 +1,7 @@
+#include "Chess.h"
+
+int 
+Chess::getNumberOfPieces() const
+{
+  return 32;
+}
diff --git a/lib/cppunit-1.10.0/examples/hierarchy/Chess.h b/lib/cppunit-1.10.0/examples/hierarchy/Chess.h
new file mode 100644 (file)
index 0000000..9b050fc
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef __CHESS_H__
+#define __CHESS_H__
+
+#include "BoardGame.h"
+
+class Chess: public BoardGame {
+  public:
+    virtual int getNumberOfPieces() const;
+};
+
+#endif
diff --git a/lib/cppunit-1.10.0/examples/hierarchy/ChessTest.h b/lib/cppunit-1.10.0/examples/hierarchy/ChessTest.h
new file mode 100644 (file)
index 0000000..eda6c5e
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef __CHESSTEST_H__
+#define __CHESSTEST_H__
+
+#include "BoardGameTest.h"
+
+template<class GAMECLASS> 
+class ChessTest : public BoardGameTest<GAMECLASS> 
+{
+  CPPUNIT_TEST_SUB_SUITE( ChessTest, BoardGameTest<GAMECLASS> );
+  CPPUNIT_TEST( testNumberOfPieces );
+  CPPUNIT_TEST_SUITE_END();
+public:
+  ChessTest() 
+  {
+  }
+  
+  void testNumberOfPieces()
+  { 
+    CPPUNIT_ASSERT( m_game->getNumberOfPieces () == 32 );
+  }
+};
+
+
+
+#endif
diff --git a/lib/cppunit-1.10.0/examples/hierarchy/Makefile.am b/lib/cppunit-1.10.0/examples/hierarchy/Makefile.am
new file mode 100644 (file)
index 0000000..9aa5873
--- /dev/null
@@ -0,0 +1,19 @@
+EXTRA_DIST = hierarchy.dsw hierarchy.dsp
+
+TESTS = hierarchy
+check_PROGRAMS = $(TESTS)
+
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
+
+hierarchy_SOURCES= BoardGame.cpp \
+                   Chess.cpp \
+                   main.cpp \
+                   BoardGame.h \
+                   Chess.h \
+                   BoardGameTest.h \
+                   ChessTest.h
+
+hierarchy_LDADD= \
+  $(top_builddir)/src/cppunit/libcppunit.la 
+
+hierarchy_LDFLAGS = $(LIBADD_DL)
diff --git a/lib/cppunit-1.10.0/examples/hierarchy/Makefile.in b/lib/cppunit-1.10.0/examples/hierarchy/Makefile.in
new file mode 100644 (file)
index 0000000..99dbac5
--- /dev/null
@@ -0,0 +1,531 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+EXTRA_DIST = hierarchy.dsw hierarchy.dsp
+
+TESTS = hierarchy
+check_PROGRAMS = $(TESTS)
+
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
+
+hierarchy_SOURCES = BoardGame.cpp \
+                   Chess.cpp \
+                   main.cpp \
+                   BoardGame.h \
+                   Chess.h \
+                   BoardGameTest.h \
+                   ChessTest.h
+
+
+hierarchy_LDADD = \
+  $(top_builddir)/src/cppunit/libcppunit.la 
+
+
+hierarchy_LDFLAGS = $(LIBADD_DL)
+subdir = examples/hierarchy
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+check_PROGRAMS = hierarchy$(EXEEXT)
+am_hierarchy_OBJECTS = BoardGame.$(OBJEXT) Chess.$(OBJEXT) \
+       main.$(OBJEXT)
+hierarchy_OBJECTS = $(am_hierarchy_OBJECTS)
+hierarchy_DEPENDENCIES = $(top_builddir)/src/cppunit/libcppunit.la
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/config
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/BoardGame.Po ./$(DEPDIR)/Chess.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/main.Po
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+       $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(hierarchy_SOURCES)
+DIST_COMMON = Makefile.am Makefile.in
+SOURCES = $(hierarchy_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  examples/hierarchy/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-checkPROGRAMS:
+       @list='$(check_PROGRAMS)'; for p in $$list; do \
+         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         echo " rm -f $$p $$f"; \
+         rm -f $$p $$f ; \
+       done
+hierarchy$(EXEEXT): $(hierarchy_OBJECTS) $(hierarchy_DEPENDENCIES) 
+       @rm -f hierarchy$(EXEEXT)
+       $(CXXLINK) $(hierarchy_LDFLAGS) $(hierarchy_OBJECTS) $(hierarchy_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BoardGame.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Chess.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
+
+distclean-depend:
+       -rm -rf ./$(DEPDIR)
+
+.cpp.o:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@  if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+       srcdir=$(srcdir); export srcdir; \
+       list='$(TESTS)'; \
+       if test -n "$$list"; then \
+         for tst in $$list; do \
+           if test -f ./$$tst; then dir=./; \
+           elif test -f $$tst; then dir=; \
+           else dir="$(srcdir)/"; fi; \
+           if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *" $$tst "*) \
+               xpass=`expr $$xpass + 1`; \
+               failed=`expr $$failed + 1`; \
+               echo "XPASS: $$tst"; \
+             ;; \
+             *) \
+               echo "PASS: $$tst"; \
+             ;; \
+             esac; \
+           elif test $$? -ne 77; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *" $$tst "*) \
+               xfail=`expr $$xfail + 1`; \
+               echo "XFAIL: $$tst"; \
+             ;; \
+             *) \
+               failed=`expr $$failed + 1`; \
+               echo "FAIL: $$tst"; \
+             ;; \
+             esac; \
+           else \
+             skip=`expr $$skip + 1`; \
+             echo "SKIP: $$tst"; \
+           fi; \
+         done; \
+         if test "$$failed" -eq 0; then \
+           if test "$$xfail" -eq 0; then \
+             banner="All $$all tests passed"; \
+           else \
+             banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+           fi; \
+         else \
+           if test "$$xpass" -eq 0; then \
+             banner="$$failed of $$all tests failed"; \
+           else \
+             banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+           fi; \
+         fi; \
+         dashes="$$banner"; \
+         skipped=""; \
+         if test "$$skip" -ne 0; then \
+           skipped="($$skip tests were not run)"; \
+           test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \
+             dashes="$$skipped"; \
+         fi; \
+         report=""; \
+         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+           report="Please report to $(PACKAGE_BUGREPORT)"; \
+           test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \
+             dashes="$$report"; \
+         fi; \
+         dashes=`echo "$$dashes" | sed s/./=/g`; \
+         echo "$$dashes"; \
+         echo "$$banner"; \
+         test -n "$$skipped" && echo "$$skipped"; \
+         test -n "$$report" && echo "$$report"; \
+         echo "$$dashes"; \
+         test "$$failed" -eq 0; \
+       else :; fi
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-compile distclean-depend \
+       distclean-generic distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+       clean-checkPROGRAMS clean-generic clean-libtool ctags distclean \
+       distclean-compile distclean-depend distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am info \
+       info-am install install-am install-data install-data-am \
+       install-exec install-exec-am install-info install-info-am \
+       install-man install-strip installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/examples/hierarchy/hierarchy.dsp b/lib/cppunit-1.10.0/examples/hierarchy/hierarchy.dsp
new file mode 100644 (file)
index 0000000..dc78c78
--- /dev/null
@@ -0,0 +1,118 @@
+# Microsoft Developer Studio Project File - Name="hierarchy" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
+\r
+CFG=hierarchy - Win32 Debug Crossplatform Setting\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "hierarchy.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "hierarchy.mak" CFG="hierarchy - Win32 Debug Crossplatform Setting"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "hierarchy - Win32 Release" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "hierarchy - Win32 Debug" (based on "Win32 (x86) Console Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "hierarchy - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_USE_TYPEINFO" /YX /FD /c\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\lib\cppunit.lib /nologo /subsystem:console /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "hierarchy - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_USE_TYPEINFO" /YX /FD /GZ /c\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\lib\cppunitd.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "hierarchy - Win32 Release"\r
+# Name "hierarchy - Win32 Debug"\r
+# Begin Source File\r
+\r
+SOURCE=.\BoardGame.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\BoardGame.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\BoardGameTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Chess.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Chess.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ChessTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\main.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Makefile.am\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/examples/hierarchy/hierarchy.dsw b/lib/cppunit-1.10.0/examples/hierarchy/hierarchy.dsw
new file mode 100644 (file)
index 0000000..6a13d79
--- /dev/null
@@ -0,0 +1,44 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00\r
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
+\r
+###############################################################################\r
+\r
+Project: "cppunit"=..\..\src\cppunit\cppunit.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "hierarchy"=.\hierarchy.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Global:\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<3>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
diff --git a/lib/cppunit-1.10.0/examples/hierarchy/main.cpp b/lib/cppunit-1.10.0/examples/hierarchy/main.cpp
new file mode 100644 (file)
index 0000000..6b7dbea
--- /dev/null
@@ -0,0 +1,23 @@
+#include <cppunit/ui/text/TestRunner.h>
+
+#include "BoardGame.h"
+#include "Chess.h"
+#include "BoardGameTest.h"
+#include "ChessTest.h"
+
+
+
+int 
+main(int argc, char** argv)
+{
+  CPPUNIT_NS::TextUi::TestRunner runner;
+
+  runner.addTest( BoardGameTest<BoardGame>::suite() );
+  runner.addTest( ChessTest<Chess>::suite() );
+
+  bool wasSucessful = runner.run();
+
+  // should be:
+  //  return wasSuccessful ? 0 : 1;
+  return 0;
+}
diff --git a/lib/cppunit-1.10.0/examples/money/Makefile.am b/lib/cppunit-1.10.0/examples/money/Makefile.am
new file mode 100644 (file)
index 0000000..414e65b
--- /dev/null
@@ -0,0 +1,21 @@
+# Include cookbook.html in distro
+EXTRA_DIST = money.dsp money.dsw configure.in StdAfx.cpp
+
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
+
+
+# Rules to make the production code
+#bin_PROGRAMS = Money
+#main_SOURCES = Money.h
+
+# Rules for the test code (use `make check` to execute)
+TESTS = MoneyApp
+check_PROGRAMS = $(TESTS)
+
+MoneyApp_SOURCES = Money.h MoneyTest.h MoneyTest.cpp MoneyApp.cpp StdAfx.h
+MoneyApp_CXXFLAGS = $(CPPUNIT_CFLAGS)
+MoneyApp_LDADD= \
+  $(top_builddir)/src/cppunit/libcppunit.la 
+
+MoneyApp_LDFLAGS = $(CPPUNIT_LIBS) $(LIBADD_DL)
+
diff --git a/lib/cppunit-1.10.0/examples/money/Makefile.in b/lib/cppunit-1.10.0/examples/money/Makefile.in
new file mode 100644 (file)
index 0000000..d899257
--- /dev/null
@@ -0,0 +1,596 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+
+# Include cookbook.html in distro
+EXTRA_DIST = money.dsp money.dsw configure.in StdAfx.cpp
+
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
+
+# Rules to make the production code
+#bin_PROGRAMS = Money
+#main_SOURCES = Money.h
+
+# Rules for the test code (use `make check` to execute)
+TESTS = MoneyApp
+check_PROGRAMS = $(TESTS)
+
+MoneyApp_SOURCES = Money.h MoneyTest.h MoneyTest.cpp MoneyApp.cpp StdAfx.h
+MoneyApp_CXXFLAGS = $(CPPUNIT_CFLAGS)
+MoneyApp_LDADD = \
+  $(top_builddir)/src/cppunit/libcppunit.la 
+
+
+MoneyApp_LDFLAGS = $(CPPUNIT_LIBS) $(LIBADD_DL)
+subdir = examples/money
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+check_PROGRAMS = MoneyApp$(EXEEXT)
+am_MoneyApp_OBJECTS = MoneyApp-MoneyTest.$(OBJEXT) \
+       MoneyApp-MoneyApp.$(OBJEXT)
+MoneyApp_OBJECTS = $(am_MoneyApp_OBJECTS)
+MoneyApp_DEPENDENCIES = $(top_builddir)/src/cppunit/libcppunit.la
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/config
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/MoneyApp-MoneyApp.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/MoneyApp-MoneyTest.Po
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+       $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(MoneyApp_SOURCES)
+DIST_COMMON = Makefile.am Makefile.in configure.in
+SOURCES = $(MoneyApp_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  examples/money/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-checkPROGRAMS:
+       @list='$(check_PROGRAMS)'; for p in $$list; do \
+         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         echo " rm -f $$p $$f"; \
+         rm -f $$p $$f ; \
+       done
+MoneyApp$(EXEEXT): $(MoneyApp_OBJECTS) $(MoneyApp_DEPENDENCIES) 
+       @rm -f MoneyApp$(EXEEXT)
+       $(CXXLINK) $(MoneyApp_LDFLAGS) $(MoneyApp_OBJECTS) $(MoneyApp_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MoneyApp-MoneyApp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MoneyApp-MoneyTest.Po@am__quote@
+
+distclean-depend:
+       -rm -rf ./$(DEPDIR)
+
+.cpp.o:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@  if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+MoneyApp-MoneyTest.o: MoneyTest.cpp
+@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -MT MoneyApp-MoneyTest.o -MD -MP -MF "$(DEPDIR)/MoneyApp-MoneyTest.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o MoneyApp-MoneyTest.o `test -f 'MoneyTest.cpp' || echo '$(srcdir)/'`MoneyTest.cpp; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/MoneyApp-MoneyTest.Tpo" "$(DEPDIR)/MoneyApp-MoneyTest.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/MoneyApp-MoneyTest.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='MoneyTest.cpp' object='MoneyApp-MoneyTest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/MoneyApp-MoneyTest.Po' tmpdepfile='$(DEPDIR)/MoneyApp-MoneyTest.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -c -o MoneyApp-MoneyTest.o `test -f 'MoneyTest.cpp' || echo '$(srcdir)/'`MoneyTest.cpp
+
+MoneyApp-MoneyTest.obj: MoneyTest.cpp
+@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -MT MoneyApp-MoneyTest.obj -MD -MP -MF "$(DEPDIR)/MoneyApp-MoneyTest.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o MoneyApp-MoneyTest.obj `if test -f 'MoneyTest.cpp'; then $(CYGPATH_W) 'MoneyTest.cpp'; else $(CYGPATH_W) '$(srcdir)/MoneyTest.cpp'; fi`; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/MoneyApp-MoneyTest.Tpo" "$(DEPDIR)/MoneyApp-MoneyTest.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/MoneyApp-MoneyTest.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='MoneyTest.cpp' object='MoneyApp-MoneyTest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/MoneyApp-MoneyTest.Po' tmpdepfile='$(DEPDIR)/MoneyApp-MoneyTest.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -c -o MoneyApp-MoneyTest.obj `if test -f 'MoneyTest.cpp'; then $(CYGPATH_W) 'MoneyTest.cpp'; else $(CYGPATH_W) '$(srcdir)/MoneyTest.cpp'; fi`
+
+MoneyApp-MoneyTest.lo: MoneyTest.cpp
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -MT MoneyApp-MoneyTest.lo -MD -MP -MF "$(DEPDIR)/MoneyApp-MoneyTest.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o MoneyApp-MoneyTest.lo `test -f 'MoneyTest.cpp' || echo '$(srcdir)/'`MoneyTest.cpp; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/MoneyApp-MoneyTest.Tpo" "$(DEPDIR)/MoneyApp-MoneyTest.Plo"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/MoneyApp-MoneyTest.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='MoneyTest.cpp' object='MoneyApp-MoneyTest.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/MoneyApp-MoneyTest.Plo' tmpdepfile='$(DEPDIR)/MoneyApp-MoneyTest.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -c -o MoneyApp-MoneyTest.lo `test -f 'MoneyTest.cpp' || echo '$(srcdir)/'`MoneyTest.cpp
+
+MoneyApp-MoneyApp.o: MoneyApp.cpp
+@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -MT MoneyApp-MoneyApp.o -MD -MP -MF "$(DEPDIR)/MoneyApp-MoneyApp.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o MoneyApp-MoneyApp.o `test -f 'MoneyApp.cpp' || echo '$(srcdir)/'`MoneyApp.cpp; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/MoneyApp-MoneyApp.Tpo" "$(DEPDIR)/MoneyApp-MoneyApp.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/MoneyApp-MoneyApp.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='MoneyApp.cpp' object='MoneyApp-MoneyApp.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/MoneyApp-MoneyApp.Po' tmpdepfile='$(DEPDIR)/MoneyApp-MoneyApp.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -c -o MoneyApp-MoneyApp.o `test -f 'MoneyApp.cpp' || echo '$(srcdir)/'`MoneyApp.cpp
+
+MoneyApp-MoneyApp.obj: MoneyApp.cpp
+@am__fastdepCXX_TRUE@  if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -MT MoneyApp-MoneyApp.obj -MD -MP -MF "$(DEPDIR)/MoneyApp-MoneyApp.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o MoneyApp-MoneyApp.obj `if test -f 'MoneyApp.cpp'; then $(CYGPATH_W) 'MoneyApp.cpp'; else $(CYGPATH_W) '$(srcdir)/MoneyApp.cpp'; fi`; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/MoneyApp-MoneyApp.Tpo" "$(DEPDIR)/MoneyApp-MoneyApp.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/MoneyApp-MoneyApp.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='MoneyApp.cpp' object='MoneyApp-MoneyApp.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/MoneyApp-MoneyApp.Po' tmpdepfile='$(DEPDIR)/MoneyApp-MoneyApp.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -c -o MoneyApp-MoneyApp.obj `if test -f 'MoneyApp.cpp'; then $(CYGPATH_W) 'MoneyApp.cpp'; else $(CYGPATH_W) '$(srcdir)/MoneyApp.cpp'; fi`
+
+MoneyApp-MoneyApp.lo: MoneyApp.cpp
+@am__fastdepCXX_TRUE@  if $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -MT MoneyApp-MoneyApp.lo -MD -MP -MF "$(DEPDIR)/MoneyApp-MoneyApp.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o MoneyApp-MoneyApp.lo `test -f 'MoneyApp.cpp' || echo '$(srcdir)/'`MoneyApp.cpp; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/MoneyApp-MoneyApp.Tpo" "$(DEPDIR)/MoneyApp-MoneyApp.Plo"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/MoneyApp-MoneyApp.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='MoneyApp.cpp' object='MoneyApp-MoneyApp.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/MoneyApp-MoneyApp.Plo' tmpdepfile='$(DEPDIR)/MoneyApp-MoneyApp.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MoneyApp_CXXFLAGS) $(CXXFLAGS) -c -o MoneyApp-MoneyApp.lo `test -f 'MoneyApp.cpp' || echo '$(srcdir)/'`MoneyApp.cpp
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+       srcdir=$(srcdir); export srcdir; \
+       list='$(TESTS)'; \
+       if test -n "$$list"; then \
+         for tst in $$list; do \
+           if test -f ./$$tst; then dir=./; \
+           elif test -f $$tst; then dir=; \
+           else dir="$(srcdir)/"; fi; \
+           if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *" $$tst "*) \
+               xpass=`expr $$xpass + 1`; \
+               failed=`expr $$failed + 1`; \
+               echo "XPASS: $$tst"; \
+             ;; \
+             *) \
+               echo "PASS: $$tst"; \
+             ;; \
+             esac; \
+           elif test $$? -ne 77; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *" $$tst "*) \
+               xfail=`expr $$xfail + 1`; \
+               echo "XFAIL: $$tst"; \
+             ;; \
+             *) \
+               failed=`expr $$failed + 1`; \
+               echo "FAIL: $$tst"; \
+             ;; \
+             esac; \
+           else \
+             skip=`expr $$skip + 1`; \
+             echo "SKIP: $$tst"; \
+           fi; \
+         done; \
+         if test "$$failed" -eq 0; then \
+           if test "$$xfail" -eq 0; then \
+             banner="All $$all tests passed"; \
+           else \
+             banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+           fi; \
+         else \
+           if test "$$xpass" -eq 0; then \
+             banner="$$failed of $$all tests failed"; \
+           else \
+             banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+           fi; \
+         fi; \
+         dashes="$$banner"; \
+         skipped=""; \
+         if test "$$skip" -ne 0; then \
+           skipped="($$skip tests were not run)"; \
+           test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \
+             dashes="$$skipped"; \
+         fi; \
+         report=""; \
+         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+           report="Please report to $(PACKAGE_BUGREPORT)"; \
+           test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \
+             dashes="$$report"; \
+         fi; \
+         dashes=`echo "$$dashes" | sed s/./=/g`; \
+         echo "$$dashes"; \
+         echo "$$banner"; \
+         test -n "$$skipped" && echo "$$skipped"; \
+         test -n "$$report" && echo "$$report"; \
+         echo "$$dashes"; \
+         test "$$failed" -eq 0; \
+       else :; fi
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-compile distclean-depend \
+       distclean-generic distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+       clean-checkPROGRAMS clean-generic clean-libtool ctags distclean \
+       distclean-compile distclean-depend distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am info \
+       info-am install install-am install-data install-data-am \
+       install-exec install-exec-am install-info install-info-am \
+       install-man install-strip installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/examples/money/Money.h b/lib/cppunit-1.10.0/examples/money/Money.h
new file mode 100644 (file)
index 0000000..309e3a1
--- /dev/null
@@ -0,0 +1,61 @@
+// Money.h
+#ifndef MONEY_H
+#define MONEY_H
+
+#include <string>
+#include <stdexcept>
+
+class IncompatibleMoneyError : public std::runtime_error
+{
+public:
+   IncompatibleMoneyError() : std::runtime_error( "Incompatible moneys" )
+  {
+  }
+};
+
+
+class Money
+{
+public:
+  Money( double amount, std::string currency )
+    : m_amount( amount )
+    , m_currency( currency )
+  {
+  }
+
+  double getAmount() const
+  {
+    return m_amount;
+  }
+
+  std::string getCurrency() const
+  {
+    return m_currency;
+  }
+
+  bool operator ==( const Money &other ) const
+  {
+    return m_amount == other.m_amount  &&  
+           m_currency == other.m_currency;
+  }
+
+  bool operator !=( const Money &other ) const
+  {
+    return !(*this == other);
+  }
+
+  Money &operator +=( const Money &other )
+  {
+    if ( m_currency != other.m_currency )
+      throw IncompatibleMoneyError();
+
+    m_amount += other.m_amount;
+    return *this;
+  }
+
+private:
+  double m_amount;
+  std::string m_currency;
+};
+
+#endif
diff --git a/lib/cppunit-1.10.0/examples/money/MoneyApp.cpp b/lib/cppunit-1.10.0/examples/money/MoneyApp.cpp
new file mode 100644 (file)
index 0000000..e6242fa
--- /dev/null
@@ -0,0 +1,25 @@
+#include "StdAfx.h"
+#include <cppunit/CompilerOutputter.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/ui/text/TestRunner.h>
+
+
+int main(int argc, char* argv[])
+{
+  // Get the top level suite from the registry
+  CPPUNIT_NS::Test *suite = CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest();
+
+  // Adds the test to the list of test to run
+  CPPUNIT_NS::TextUi::TestRunner runner;
+  runner.addTest( suite );
+
+  // Change the default outputter to a compiler error format outputter
+  runner.setOutputter( new CPPUNIT_NS::CompilerOutputter( &runner.result(),
+                                                       std::cerr ) );
+  // Run the test.
+  bool wasSucessful = runner.run();
+
+  // Return error code 1 if the one of test failed.
+  return wasSucessful ? 0 : 1;
+}
+
diff --git a/lib/cppunit-1.10.0/examples/money/MoneyTest.cpp b/lib/cppunit-1.10.0/examples/money/MoneyTest.cpp
new file mode 100644 (file)
index 0000000..bdebbc5
--- /dev/null
@@ -0,0 +1,82 @@
+// MoneyTest.cpp
+
+#include "StdAfx.h"
+#include "Money.h"
+#include "MoneyTest.h"
+
+// Registers the fixture into the 'registry'
+CPPUNIT_TEST_SUITE_REGISTRATION( MoneyTest );
+
+
+void 
+MoneyTest::setUp()
+{
+}
+
+
+void 
+MoneyTest::tearDown()
+{
+}
+
+
+void 
+MoneyTest::testConstructor()
+{
+  // Set up
+  const std::string currencyFF( "FF" );
+  const double longNumber = 1234.5678;
+
+  // Process
+  Money money( longNumber, currencyFF );
+
+  // Check
+  CPPUNIT_ASSERT_EQUAL( longNumber, money.getAmount() );
+  CPPUNIT_ASSERT_EQUAL( currencyFF, money.getCurrency() );
+}
+
+
+void
+MoneyTest::testEqual()
+{
+  // Set up
+  const Money money123FF( 123, "FF" );
+  const Money money123USD( 123, "USD" );
+  const Money money12FF( 12, "FF" );
+  const Money money12USD( 12, "USD" );
+
+  // Process & Check
+  CPPUNIT_ASSERT( money123FF == money123FF );    // ==
+  CPPUNIT_ASSERT( money12FF != money123FF );     // != amount
+  CPPUNIT_ASSERT( money123USD != money123FF );   // != currency
+  CPPUNIT_ASSERT( money12USD != money123FF );    // != currency and != amount
+}
+
+
+void 
+MoneyTest::testAdd()
+{
+  // Set up
+  const Money money12FF( 12, "FF" );
+  const Money expectedMoney( 135, "FF" );
+
+  // Process
+  Money money( 123, "FF" );
+  money += money12FF;
+
+  // Check
+  CPPUNIT_ASSERT( expectedMoney == money );           // add works
+  CPPUNIT_ASSERT( &money == &(money += money12FF) );  // add returns ref. on 'this'.
+}
+
+
+void 
+MoneyTest::testAddThrow()
+{
+  // Set up
+  const Money money123FF( 123, "FF" );
+
+  // Process
+  Money money( 123, "USD" );
+  money += money123FF;        // should throw an exception
+}
diff --git a/lib/cppunit-1.10.0/examples/money/MoneyTest.h b/lib/cppunit-1.10.0/examples/money/MoneyTest.h
new file mode 100644 (file)
index 0000000..44e1808
--- /dev/null
@@ -0,0 +1,26 @@
+// MoneyTest.h
+#ifndef MONEYTEST_H
+#define MONEYTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+
+class MoneyTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( MoneyTest );
+  CPPUNIT_TEST( testConstructor );
+  CPPUNIT_TEST( testEqual );
+  CPPUNIT_TEST( testAdd );
+  CPPUNIT_TEST_EXCEPTION( testAddThrow, IncompatibleMoneyError );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  void setUp();
+  void tearDown();
+
+  void testConstructor();
+  void testEqual();
+  void testAdd();
+  void testAddThrow();
+};
+
+#endif  // MONEYTEST_H
diff --git a/lib/cppunit-1.10.0/examples/money/StdAfx.cpp b/lib/cppunit-1.10.0/examples/money/StdAfx.cpp
new file mode 100644 (file)
index 0000000..6c550b2
--- /dev/null
@@ -0,0 +1,8 @@
+// stdafx.cpp : source file that includes just the standard includes
+//     money.pch will be the pre-compiled header
+//     stdafx.obj will contain the pre-compiled type information
+
+#include "StdAfx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
diff --git a/lib/cppunit-1.10.0/examples/money/StdAfx.h b/lib/cppunit-1.10.0/examples/money/StdAfx.h
new file mode 100644 (file)
index 0000000..8e02435
--- /dev/null
@@ -0,0 +1,19 @@
+// stdafx.h : include file for standard system include files,
+//  or project specific include files that are used frequently, but
+//      are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__E8E36A23_EF1C_4C21_A2C0_D0E979CF0267__INCLUDED_)
+#define AFX_STDAFX_H__E8E36A23_EF1C_4C21_A2C0_D0E979CF0267__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+
+// TODO: reference additional headers your program requires here
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__E8E36A23_EF1C_4C21_A2C0_D0E979CF0267__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/examples/money/configure.in b/lib/cppunit-1.10.0/examples/money/configure.in
new file mode 100644 (file)
index 0000000..5770e39
--- /dev/null
@@ -0,0 +1,10 @@
+dnl Process this file with autoconf to produce a configure script.
+dnl Don't forget to run `aclocal -I /usr/local/share/aclocal` before
+dnl running autoconf! This is required for AM_PATH_CPPUNIT to work.
+AC_INIT(Makefile.am)
+AM_INIT_AUTOMAKE(cppunit-cookbook,1.6.2)
+AM_PATH_CPPUNIT(1.6.2)
+AC_PROG_CXX
+AC_PROG_CC
+AC_PROG_INSTALL
+AC_OUTPUT(Makefile)
diff --git a/lib/cppunit-1.10.0/examples/money/money.dsp b/lib/cppunit-1.10.0/examples/money/money.dsp
new file mode 100644 (file)
index 0000000..0304217
--- /dev/null
@@ -0,0 +1,135 @@
+# Microsoft Developer Studio Project File - Name="money" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
+\r
+CFG=money - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "money.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "money.mak" CFG="money - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "money - Win32 Release" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "money - Win32 Debug" (based on "Win32 (x86) Console Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "money - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /libpath:"../../lib"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\money.exe\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Unit testing...\r
+PostBuild_Cmds=$(TargetPath)\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "money - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /debug /machine:I386 /out:"Debug/moneyd.exe" /pdbtype:sept /libpath:"../../lib"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\moneyd.exe\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Unit testing...\r
+PostBuild_Cmds=$(TargetPath)\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "money - Win32 Release"\r
+# Name "money - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=.\MoneyApp.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MoneyTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StdAfx.cpp\r
+# ADD CPP /Yc"stdafx.h"\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=.\Money.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MoneyTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StdAfx.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/examples/money/money.dsw b/lib/cppunit-1.10.0/examples/money/money.dsw
new file mode 100644 (file)
index 0000000..cb1b94c
--- /dev/null
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00\r
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
+\r
+###############################################################################\r
+\r
+Project: "money"=.\money.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Global:\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<3>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.cpp b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.cpp
new file mode 100644 (file)
index 0000000..e39da5a
--- /dev/null
@@ -0,0 +1,81 @@
+// CppUnitTestApp.cpp : Defines the class behaviors for the application.
+//
+
+#include "stdafx.h"
+#include "CppUnitTestApp.h"
+#include "CppUnitTestAppDlg.h"
+#include <cppunit/ui/mfc/TestRunner.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CppUnitTestApp
+
+BEGIN_MESSAGE_MAP(CppUnitTestApp, CWinApp)
+       //{{AFX_MSG_MAP(CppUnitTestApp)
+               // NOTE - the ClassWizard will add and remove mapping macros here.
+               //    DO NOT EDIT what you see in these blocks of generated code!
+       //}}AFX_MSG
+       ON_COMMAND(ID_HELP, CWinApp::OnHelp)
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CppUnitTestApp construction
+
+CppUnitTestApp::CppUnitTestApp()
+{
+       // TODO: add construction code here,
+       // Place all significant initialization in InitInstance
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// The one and only CppUnitTestApp object
+
+CppUnitTestApp theApp;
+
+/////////////////////////////////////////////////////////////////////////////
+// CppUnitTestApp initialization
+
+BOOL 
+CppUnitTestApp::InitInstance()
+{
+       AfxEnableControlContainer();
+
+       // Standard initialization
+       // If you are not using these features and wish to reduce the size
+       //  of your final executable, you should remove from the following
+       //  the specific initialization routines you do not need.
+
+#ifdef _AFXDLL
+# if _MSC_VER < 1300   // vc6
+       Enable3dControls();                     // Call this when using MFC in a shared DLL
+# endif
+#else
+       Enable3dControlsStatic();       // Call this when linking to MFC statically
+#endif
+
+  SetRegistryKey(_T("Local AppWizard-Generated Applications"));
+
+  RunTests();        
+
+  
+  // Since the dialog has been closed, return FALSE so that we exit the
+       //  application, rather than start the application's message pump.
+       return FALSE;
+}
+
+
+void 
+CppUnitTestApp::RunTests()
+{
+  CPPUNIT_NS::MfcUi::TestRunner runner;
+
+  runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
+
+  runner.run();
+}
diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsp
new file mode 100644 (file)
index 0000000..c22459e
--- /dev/null
@@ -0,0 +1,488 @@
+# Microsoft Developer Studio Project File - Name="CppUnitTestApp" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Application" 0x0101\r
+\r
+CFG=CppUnitTestApp - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "CppUnitTestApp.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "CppUnitTestApp.mak" CFG="CppUnitTestApp - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "CppUnitTestApp - Win32 Release" (based on "Win32 (x86) Application")\r
+!MESSAGE "CppUnitTestApp - Win32 Debug" (based on "Win32 (x86) Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "CppUnitTestApp - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 6\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 6\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../../include" /I "../.." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "CPPUNIT_USE_TYPEINFO" /FD /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x40c /d "NDEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386\r
+# ADD LINK32 ../../../Lib/cppunit.lib ../../../Lib/testrunner.lib /nologo /subsystem:windows /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "CppUnitTestApp - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 6\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 6\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../../include" /I "../.." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "CPPUNIT_USE_TYPEINFO" /FD /GZ /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x40c /d "_DEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 ../../../Lib/cppunitd.lib ../../../Lib/testrunnerd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "CppUnitTestApp - Win32 Release"\r
+# Name "CppUnitTestApp - Win32 Debug"\r
+# Begin Group "GUI"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\CppUnitTestApp.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\CppUnitTestApp.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\CppUnitTestApp.rc\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\CppUnitTestAppDlg.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\CppUnitTestAppDlg.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Resource.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StdAfx.cpp\r
+# ADD CPP /Yc"stdafx.h"\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StdAfx.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# Begin Source File\r
+\r
+SOURCE=.\res\CppUnitTestApp.ico\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\res\CppUnitTestApp.rc2\r
+# End Source File\r
+# End Group\r
+# Begin Group "DLL Dependencies"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\lib\testrunner.dll\r
+\r
+!IF  "$(CFG)" == "CppUnitTestApp - Win32 Release"\r
+\r
+# Begin Custom Build - $(IntDir)\$(InputName).dll\r
+IntDir=.\Release\r
+InputPath=..\..\..\lib\testrunner.dll\r
+InputName=testrunner\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF  "$(CFG)" == "CppUnitTestApp - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\lib\testrunnerd.dll\r
+\r
+!IF  "$(CFG)" == "CppUnitTestApp - Win32 Release"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "CppUnitTestApp - Win32 Debug"\r
+\r
+# Begin Custom Build - $(IntDir)\$(InputName).dll\r
+IntDir=.\Debug\r
+InputPath=..\..\..\lib\testrunnerd.dll\r
+InputName=testrunnerd\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# End Group\r
+# Begin Group "Tests"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\BaseTestCase.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\BaseTestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\CoreSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\CppUnitTestSuite.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\ExceptionTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\ExceptionTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\ExceptionTestCaseDecoratorTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\ExceptionTestCaseDecoratorTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\ExtensionSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\FailureException.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\HelperMacrosTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\HelperMacrosTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\HelperSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\MessageTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\MessageTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\MockFunctor.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\MockProtector.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\MockTestCase.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\MockTestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\MockTestListener.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\MockTestListener.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\OrthodoxTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\OrthodoxTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\OutputSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\RepeatedTestTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\RepeatedTestTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\StringToolsTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\StringToolsTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\SubclassedTestCase.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\SubclassedTestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\SynchronizedTestResult.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestAssertTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestAssertTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestCallerTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestCallerTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestCaseTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestCaseTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestDecoratorTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestDecoratorTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestFailureTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestFailureTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestPathTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestPathTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestResultCollectorTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestResultCollectorTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestResultTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestResultTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestSetUpTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestSetUpTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestSuiteTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestSuiteTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TestTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\ToolsSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TrackedTestCase.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\TrackedTestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\UnitTestToolSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\XmlElementTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\XmlElementTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\XmlOutputterTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\XmlOutputterTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\XmlUniformiser.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\XmlUniformiser.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\XmlUniformiserTest.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\XmlUniformiserTest.h\r
+# End Source File\r
+# End Group\r
+# Begin Source File\r
+\r
+SOURCE=..\..\cppunittest\Makefile.am\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ReadMe.txt\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsw b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.dsw
new file mode 100644 (file)
index 0000000..e42e550
--- /dev/null
@@ -0,0 +1,80 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00\r
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
+\r
+###############################################################################\r
+\r
+Project: "CppUnitTestApp"=.\CppUnitTestApp.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit\r
+    End Project Dependency\r
+    Begin Project Dependency\r
+    Project_Dep_Name TestRunner\r
+    End Project Dependency\r
+    Begin Project Dependency\r
+    Project_Dep_Name DSPlugIn\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "DSPlugIn"=..\..\..\src\msvc6\DSPlugIn\DSPlugIn.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "TestRunner"=..\..\..\src\msvc6\testrunner\TestRunner.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit\r
+    End Project Dependency\r
+    Begin Project Dependency\r
+    Project_Dep_Name DSPlugIn\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "cppunit"=..\..\..\src\cppunit\cppunit.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Global:\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<3>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.h b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.h
new file mode 100644 (file)
index 0000000..542f3f9
--- /dev/null
@@ -0,0 +1,52 @@
+// CppUnitTestApp.h : main header file for the CPPUNITTESTAPP application
+//
+
+#if !defined(AFX_CPPUNITTESTAPP_H__6569C745_ED89_4902_9794_AD8422583BC1__INCLUDED_)
+#define AFX_CPPUNITTESTAPP_H__6569C745_ED89_4902_9794_AD8422583BC1__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#ifndef __AFXWIN_H__
+       #error include 'stdafx.h' before including this file for PCH
+#endif
+
+#include "resource.h"          // main symbols
+
+/////////////////////////////////////////////////////////////////////////////
+// CppUnitTestApp:
+// See CppUnitTestApp.cpp for the implementation of this class
+//
+
+class CppUnitTestApp : public CWinApp
+{
+public:
+       CppUnitTestApp();
+
+// Overrides
+       // ClassWizard generated virtual function overrides
+       //{{AFX_VIRTUAL(CppUnitTestApp)
+       public:
+       virtual BOOL InitInstance();
+       //}}AFX_VIRTUAL
+
+// Implementation
+
+       //{{AFX_MSG(CppUnitTestApp)
+               // NOTE - the ClassWizard will add and remove member functions here.
+               //    DO NOT EDIT what you see in these blocks of generated code !
+       //}}AFX_MSG
+       DECLARE_MESSAGE_MAP()
+
+private:
+  void RunTests();
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_CPPUNITTESTAPP_H__6569C745_ED89_4902_9794_AD8422583BC1__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.rc b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestApp.rc
new file mode 100644 (file)
index 0000000..04d775a
--- /dev/null
@@ -0,0 +1,219 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_ABOUTBOX DIALOG DISCARDABLE  0, 0, 235, 55
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "About CppUnitTestApp"
+FONT 8, "MS Sans Serif"
+BEGIN
+    ICON            IDR_MAINFRAME,IDC_STATIC,11,17,20,20
+    LTEXT           "CppUnitTestApp Version 1.0",IDC_STATIC,40,10,119,8,
+                    SS_NOPREFIX
+    LTEXT           "Copyright (C) 2001",IDC_STATIC,40,25,119,8
+    DEFPUSHBUTTON   "OK",IDOK,178,7,50,14,WS_GROUP
+END
+
+IDD_CPPUNITTESTAPP_DIALOG DIALOGEX 0, 0, 320, 200
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "CppUnitTestApp"
+FONT 8, "MS Sans Serif", 0, 0, 0x1
+BEGIN
+    DEFPUSHBUTTON   "OK",IDOK,260,7,50,14
+    PUSHBUTTON      "Cancel",IDCANCEL,260,23,50,14
+    LTEXT           "TODO: Place dialog controls here.",IDC_STATIC,50,90,200,
+                    8
+END
+
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904B0"
+        BEGIN
+            VALUE "CompanyName", "\0"
+            VALUE "FileDescription", "CppUnitTestApp MFC Application\0"
+            VALUE "FileVersion", "1, 0, 0, 1\0"
+            VALUE "InternalName", "CppUnitTestApp\0"
+            VALUE "LegalCopyright", "Copyright (C) 2001\0"
+            VALUE "LegalTrademarks", "\0"
+            VALUE "OriginalFilename", "CppUnitTestApp.EXE\0"
+            VALUE "ProductName", "CppUnitTestApp Application\0"
+            VALUE "ProductVersion", "1, 0, 0, 1\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1200
+    END
+END
+
+#endif    // !_MAC
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE 
+BEGIN
+    IDD_ABOUTBOX, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 228
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 48
+    END
+
+    IDD_CPPUNITTESTAPP_DIALOG, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 313
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 193
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_ABOUTBOX            "&About CppUnitTestApp..."
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// French (France) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
+#ifdef _WIN32
+LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
+    "#define _AFX_NO_OLE_RESOURCES\r\n"
+    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
+    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
+    "\r\n"
+    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
+    "#ifdef _WIN32\r\n"
+    "LANGUAGE 9, 1\r\n"
+    "#pragma code_page(1252)\r\n"
+    "#endif //_WIN32\r\n"
+    "#include ""res\\CppUnitTestApp.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
+    "#include ""afxres.rc""         // Standard components\r\n"
+    "#endif\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDR_MAINFRAME           ICON    DISCARDABLE     "res\\CppUnitTestApp.ico"
+#endif    // French (France) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#define _AFX_NO_SPLITTER_RESOURCES
+#define _AFX_NO_OLE_RESOURCES
+#define _AFX_NO_TRACKER_RESOURCES
+#define _AFX_NO_PROPERTY_RESOURCES
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE 9, 1
+#pragma code_page(1252)
+#endif //_WIN32
+#include "res\CppUnitTestApp.rc2"  // non-Microsoft Visual C++ edited resources
+#include "afxres.rc"         // Standard components
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestAppDlg.cpp b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestAppDlg.cpp
new file mode 100644 (file)
index 0000000..882e6f9
--- /dev/null
@@ -0,0 +1,170 @@
+// CppUnitTestAppDlg.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "CppUnitTestApp.h"
+#include "CppUnitTestAppDlg.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CAboutDlg dialog used for App About
+
+class CAboutDlg : public CDialog
+{
+public:
+       CAboutDlg();
+
+// Dialog Data
+       //{{AFX_DATA(CAboutDlg)
+       enum { IDD = IDD_ABOUTBOX };
+       //}}AFX_DATA
+
+       // ClassWizard generated virtual function overrides
+       //{{AFX_VIRTUAL(CAboutDlg)
+       protected:
+       virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
+       //}}AFX_VIRTUAL
+
+// Implementation
+protected:
+       //{{AFX_MSG(CAboutDlg)
+       //}}AFX_MSG
+       DECLARE_MESSAGE_MAP()
+};
+
+CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
+{
+       //{{AFX_DATA_INIT(CAboutDlg)
+       //}}AFX_DATA_INIT
+}
+
+void CAboutDlg::DoDataExchange(CDataExchange* pDX)
+{
+       CDialog::DoDataExchange(pDX);
+       //{{AFX_DATA_MAP(CAboutDlg)
+       //}}AFX_DATA_MAP
+}
+
+BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
+       //{{AFX_MSG_MAP(CAboutDlg)
+               // No message handlers
+       //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CppUnitTestAppDlg dialog
+
+CppUnitTestAppDlg::CppUnitTestAppDlg(CWnd* pParent /*=NULL*/)
+       : CDialog(CppUnitTestAppDlg::IDD, pParent)
+{
+       //{{AFX_DATA_INIT(CppUnitTestAppDlg)
+               // NOTE: the ClassWizard will add member initialization here
+       //}}AFX_DATA_INIT
+       // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
+       m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
+}
+
+void CppUnitTestAppDlg::DoDataExchange(CDataExchange* pDX)
+{
+       CDialog::DoDataExchange(pDX);
+       //{{AFX_DATA_MAP(CppUnitTestAppDlg)
+               // NOTE: the ClassWizard will add DDX and DDV calls here
+       //}}AFX_DATA_MAP
+}
+
+BEGIN_MESSAGE_MAP(CppUnitTestAppDlg, CDialog)
+       //{{AFX_MSG_MAP(CppUnitTestAppDlg)
+       ON_WM_SYSCOMMAND()
+       ON_WM_PAINT()
+       ON_WM_QUERYDRAGICON()
+       //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CppUnitTestAppDlg message handlers
+
+BOOL CppUnitTestAppDlg::OnInitDialog()
+{
+       CDialog::OnInitDialog();
+
+       // Add "About..." menu item to system menu.
+
+       // IDM_ABOUTBOX must be in the system command range.
+       ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
+       ASSERT(IDM_ABOUTBOX < 0xF000);
+
+       CMenu* pSysMenu = GetSystemMenu(FALSE);
+       if (pSysMenu != NULL)
+       {
+               CString strAboutMenu;
+               strAboutMenu.LoadString(IDS_ABOUTBOX);
+               if (!strAboutMenu.IsEmpty())
+               {
+                       pSysMenu->AppendMenu(MF_SEPARATOR);
+                       pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
+               }
+       }
+
+       // Set the icon for this dialog.  The framework does this automatically
+       //  when the application's main window is not a dialog
+       SetIcon(m_hIcon, TRUE);                 // Set big icon
+       SetIcon(m_hIcon, FALSE);                // Set small icon
+       
+       // TODO: Add extra initialization here
+       
+       return TRUE;  // return TRUE  unless you set the focus to a control
+}
+
+void CppUnitTestAppDlg::OnSysCommand(UINT nID, LPARAM lParam)
+{
+       if ((nID & 0xFFF0) == IDM_ABOUTBOX)
+       {
+               CAboutDlg dlgAbout;
+               dlgAbout.DoModal();
+       }
+       else
+       {
+               CDialog::OnSysCommand(nID, lParam);
+       }
+}
+
+// If you add a minimize button to your dialog, you will need the code below
+//  to draw the icon.  For MFC applications using the document/view model,
+//  this is automatically done for you by the framework.
+
+void CppUnitTestAppDlg::OnPaint() 
+{
+       if (IsIconic())
+       {
+               CPaintDC dc(this); // device context for painting
+
+               SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
+
+               // Center icon in client rectangle
+               int cxIcon = GetSystemMetrics(SM_CXICON);
+               int cyIcon = GetSystemMetrics(SM_CYICON);
+               CRect rect;
+               GetClientRect(&rect);
+               int x = (rect.Width() - cxIcon + 1) / 2;
+               int y = (rect.Height() - cyIcon + 1) / 2;
+
+               // Draw the icon
+               dc.DrawIcon(x, y, m_hIcon);
+       }
+       else
+       {
+               CDialog::OnPaint();
+       }
+}
+
+// The system calls this to obtain the cursor to display while the user drags
+//  the minimized window.
+HCURSOR CppUnitTestAppDlg::OnQueryDragIcon()
+{
+       return (HCURSOR) m_hIcon;
+}
diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestAppDlg.h b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/CppUnitTestAppDlg.h
new file mode 100644 (file)
index 0000000..cc11da8
--- /dev/null
@@ -0,0 +1,49 @@
+// CppUnitTestAppDlg.h : header file
+//
+
+#if !defined(AFX_CPPUNITTESTAPPDLG_H__25E1CF20_72A4_4E25_B930_626DF60AD4C7__INCLUDED_)
+#define AFX_CPPUNITTESTAPPDLG_H__25E1CF20_72A4_4E25_B930_626DF60AD4C7__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+/////////////////////////////////////////////////////////////////////////////
+// CppUnitTestAppDlg dialog
+
+class CppUnitTestAppDlg : public CDialog
+{
+// Construction
+public:
+       CppUnitTestAppDlg(CWnd* pParent = NULL);        // standard constructor
+
+// Dialog Data
+       //{{AFX_DATA(CppUnitTestAppDlg)
+       enum { IDD = IDD_CPPUNITTESTAPP_DIALOG };
+               // NOTE: the ClassWizard will add data members here
+       //}}AFX_DATA
+
+       // ClassWizard generated virtual function overrides
+       //{{AFX_VIRTUAL(CppUnitTestAppDlg)
+       protected:
+       virtual void DoDataExchange(CDataExchange* pDX);        // DDX/DDV support
+       //}}AFX_VIRTUAL
+
+// Implementation
+protected:
+       HICON m_hIcon;
+
+       // Generated message map functions
+       //{{AFX_MSG(CppUnitTestAppDlg)
+       virtual BOOL OnInitDialog();
+       afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+       afx_msg void OnPaint();
+       afx_msg HCURSOR OnQueryDragIcon();
+       //}}AFX_MSG
+       DECLARE_MESSAGE_MAP()
+};
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_CPPUNITTESTAPPDLG_H__25E1CF20_72A4_4E25_B930_626DF60AD4C7__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/ReadMe.txt b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/ReadMe.txt
new file mode 100644 (file)
index 0000000..8dcfccb
--- /dev/null
@@ -0,0 +1,88 @@
+========================================================================
+       MICROSOFT FOUNDATION CLASS LIBRARY : CppUnitTestApp
+========================================================================
+
+
+AppWizard has created this CppUnitTestApp application for you.  This application
+not only demonstrates the basics of using the Microsoft Foundation classes
+but is also a starting point for writing your application.
+
+This file contains a summary of what you will find in each of the files that
+make up your CppUnitTestApp application.
+
+CppUnitTestApp.dsp
+    This file (the project file) contains information at the project level and
+    is used to build a single project or subproject. Other users can share the
+    project (.dsp) file, but they should export the makefiles locally.
+
+CppUnitTestApp.h
+    This is the main header file for the application.  It includes other
+    project specific headers (including Resource.h) and declares the
+    CppUnitTestApp application class.
+
+CppUnitTestApp.cpp
+    This is the main application source file that contains the application
+    class CppUnitTestApp.
+
+CppUnitTestApp.rc
+    This is a listing of all of the Microsoft Windows resources that the
+    program uses.  It includes the icons, bitmaps, and cursors that are stored
+    in the RES subdirectory.  This file can be directly edited in Microsoft
+       Visual C++.
+
+CppUnitTestApp.clw
+    This file contains information used by ClassWizard to edit existing
+    classes or add new classes.  ClassWizard also uses this file to store
+    information needed to create and edit message maps and dialog data
+    maps and to create prototype member functions.
+
+res\CppUnitTestApp.ico
+    This is an icon file, which is used as the application's icon.  This
+    icon is included by the main resource file CppUnitTestApp.rc.
+
+res\CppUnitTestApp.rc2
+    This file contains resources that are not edited by Microsoft 
+       Visual C++.  You should place all resources not editable by
+       the resource editor in this file.
+
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+AppWizard creates one dialog class:
+
+CppUnitTestAppDlg.h, CppUnitTestAppDlg.cpp - the dialog
+    These files contain your CppUnitTestAppDlg class.  This class defines
+    the behavior of your application's main dialog.  The dialog's
+    template is in CppUnitTestApp.rc, which can be edited in Microsoft
+       Visual C++.
+
+
+/////////////////////////////////////////////////////////////////////////////
+Other standard files:
+
+StdAfx.h, StdAfx.cpp
+    These files are used to build a precompiled header (PCH) file
+    named CppUnitTestApp.pch and a precompiled types file named StdAfx.obj.
+
+Resource.h
+    This is the standard header file, which defines new resource IDs.
+    Microsoft Visual C++ reads and updates this file.
+
+/////////////////////////////////////////////////////////////////////////////
+Other notes:
+
+AppWizard uses "TODO:" to indicate parts of the source code you
+should add to or customize.
+
+If your application uses MFC in a shared DLL, and your application is 
+in a language other than the operating system's current language, you
+will need to copy the corresponding localized resources MFC42XXX.DLL
+from the Microsoft Visual C++ CD-ROM onto the system or system32 directory,
+and rename it to be MFCLOC.DLL.  ("XXX" stands for the language abbreviation.
+For example, MFC42DEU.DLL contains resources translated to German.)  If you
+don't do this, some of the UI elements of your application will remain in the
+language of the operating system.
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/Resource.h b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/Resource.h
new file mode 100644 (file)
index 0000000..2a20997
--- /dev/null
@@ -0,0 +1,21 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by CPPUNITTESTAPP.RC
+//
+#define IDR_MAINFRAME                                  128
+#define IDM_ABOUTBOX                                   0x0010
+#define IDD_ABOUTBOX                                   100
+#define IDS_ABOUTBOX                                   101
+#define IDD_CPPUNITTESTAPP_DIALOG                              102
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+
+#define _APS_NEXT_RESOURCE_VALUE       129
+#define _APS_NEXT_CONTROL_VALUE                1000
+#define _APS_NEXT_SYMED_VALUE          101
+#define _APS_NEXT_COMMAND_VALUE                32771
+#endif
+#endif
diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/StdAfx.cpp b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/StdAfx.cpp
new file mode 100644 (file)
index 0000000..e832939
--- /dev/null
@@ -0,0 +1,8 @@
+// stdafx.cpp : source file that includes just the standard includes
+//     CppUnitTestApp.pch will be the pre-compiled header
+//     stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+
+
diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/StdAfx.h b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/StdAfx.h
new file mode 100644 (file)
index 0000000..81f2a0c
--- /dev/null
@@ -0,0 +1,28 @@
+// stdafx.h : include file for standard system include files,
+//  or project specific include files that are used frequently, but
+//      are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__EB0CB528_6505_4130_843B_9CA567127807__INCLUDED_)
+#define AFX_STDAFX_H__EB0CB528_6505_4130_843B_9CA567127807__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#define VC_EXTRALEAN           // Exclude rarely-used stuff from Windows headers
+
+#include <afxwin.h>         // MFC core and standard components
+#include <afxext.h>         // MFC extensions
+#include <afxdisp.h>        // MFC Automation classes
+#include <afxdtctl.h>          // MFC support for Internet Explorer 4 Common Controls
+#ifndef _AFX_NO_AFXCMN_SUPPORT
+#include <afxcmn.h>                    // MFC support for Windows Common Controls
+#endif // _AFX_NO_AFXCMN_SUPPORT
+
+#pragma warning( disable : 4786 )   // remove warning "debug symbol length > 255..."
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__EB0CB528_6505_4130_843B_9CA567127807__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/res/CppUnitTestApp.ico b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/res/CppUnitTestApp.ico
new file mode 100644 (file)
index 0000000..7eef0bc
Binary files /dev/null and b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/res/CppUnitTestApp.ico differ
diff --git a/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/res/CppUnitTestApp.rc2 b/lib/cppunit-1.10.0/examples/msvc6/CppUnitTestApp/res/CppUnitTestApp.rc2
new file mode 100644 (file)
index 0000000..b8d1fca
--- /dev/null
@@ -0,0 +1,13 @@
+//
+// CPPUNITTESTAPP.RC2 - resources Microsoft Visual C++ does not edit directly
+//
+
+#ifdef APSTUDIO_INVOKED
+       #error this file is not editable by Microsoft Visual C++
+#endif //APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Add manually edited resources here...
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/ExampleTestCase.cpp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/ExampleTestCase.cpp
new file mode 100644 (file)
index 0000000..a71b7bd
--- /dev/null
@@ -0,0 +1,50 @@
+#include "ExampleTestCase.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( ExampleTestCase );
+
+void ExampleTestCase::example ()
+{
+       CPPUNIT_ASSERT_DOUBLES_EQUAL (1.0, 1.1, 0.05);
+       CPPUNIT_ASSERT (1 == 0);
+       CPPUNIT_ASSERT (1 == 1);
+}
+
+
+void ExampleTestCase::anotherExample ()
+{
+       CPPUNIT_ASSERT (1 == 2);
+}
+
+void ExampleTestCase::setUp ()
+{
+       m_value1 = 2.0;
+       m_value2 = 3.0;
+}
+
+void ExampleTestCase::testAdd ()
+{
+       double result = m_value1 + m_value2;
+       CPPUNIT_ASSERT (result == 6.0);
+}
+
+
+void ExampleTestCase::testDivideByZero ()
+{
+       int     zero    = 0;
+       int result      = 8 / zero;
+}
+
+
+void ExampleTestCase::testEquals ()
+{
+    std::auto_ptr<long>        l1 (new long (12));
+    std::auto_ptr<long>        l2 (new long (12));
+
+    CPPUNIT_ASSERT_EQUAL (12, 12);
+    CPPUNIT_ASSERT_EQUAL (12L, 12L);
+    CPPUNIT_ASSERT_EQUAL (*l1, *l2);
+    
+       CPPUNIT_ASSERT (12L == 12L);
+       CPPUNIT_ASSERT_EQUAL (12, 13);
+       CPPUNIT_ASSERT_DOUBLES_EQUAL (12.0, 11.99, 0.5);
+}
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/ExampleTestCase.h b/lib/cppunit-1.10.0/examples/msvc6/HostApp/ExampleTestCase.h
new file mode 100644 (file)
index 0000000..9cb2b99
--- /dev/null
@@ -0,0 +1,41 @@
+
+#ifndef CPP_UNIT_EXAMPLETESTCASE_H
+#define CPP_UNIT_EXAMPLETESTCASE_H
+
+#include <cppunit/extensions/HelperMacros.h>
+
+/* 
+ * A test case that is designed to produce
+ * example errors and failures
+ *
+ */
+
+class ExampleTestCase : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( ExampleTestCase );
+  CPPUNIT_TEST( example );
+  CPPUNIT_TEST( anotherExample );
+  CPPUNIT_TEST( testAdd );
+  CPPUNIT_TEST( testDivideByZero );
+  CPPUNIT_TEST( testEquals );
+  CPPUNIT_TEST_SUITE_END();
+protected:
+
+       double                  m_value1;
+       double                  m_value2;
+
+public:
+
+       void                    setUp ();
+
+protected:
+       void                    example ();
+       void                    anotherExample ();
+       void                    testAdd ();
+       void                    testDivideByZero ();
+       void                    testEquals ();
+
+};
+
+
+#endif
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.cpp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.cpp
new file mode 100644 (file)
index 0000000..d76abef
--- /dev/null
@@ -0,0 +1,174 @@
+// HostApp.cpp : Defines the class behaviors for the application.
+//
+
+#include "stdafx.h"
+#include "HostApp.h"
+
+#include "MainFrm.h"
+#include "HostAppDoc.h"
+#include "HostAppView.h"
+
+// CppUnit: MFC TestRunner
+#include <cppunit/ui/mfc/TestRunner.h>
+// CppUnit: TestFactoryRegistry to retreive the top test suite that contains all registered tests.
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+static AFX_EXTENSION_MODULE  extTestRunner;
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppApp
+
+BEGIN_MESSAGE_MAP(CHostAppApp, CWinApp)
+    //{{AFX_MSG_MAP(CHostAppApp)
+    ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
+        // NOTE - the ClassWizard will add and remove mapping macros here.
+        //    DO NOT EDIT what you see in these blocks of generated code!
+    //}}AFX_MSG_MAP
+    // Standard file based document commands
+    ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
+    ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
+    // Standard print setup command
+    ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppApp construction
+
+CHostAppApp::CHostAppApp()
+{
+    // TODO: add construction code here,
+    // Place all significant initialization in InitInstance
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// The one and only CHostAppApp object
+
+CHostAppApp theApp;
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppApp initialization
+
+BOOL CHostAppApp::InitInstance()
+{
+    // Standard initialization
+    // If you are not using these features and wish to reduce the size
+    //  of your final executable, you should remove from the following
+    //  the specific initialization routines you do not need.
+
+#ifdef _AFXDLL
+# if _MSC_VER < 1300   // vc6
+       Enable3dControls();                     // Call this when using MFC in a shared DLL
+# endif
+#else
+    Enable3dControlsStatic();   // Call this when linking to MFC statically
+#endif
+
+    // Change the registry key under which our settings are stored.
+    // You should modify this string to be something appropriate
+    // such as the name of your company or organization.
+    SetRegistryKey(_T("Local AppWizard-Generated Applications"));
+
+    LoadStdProfileSettings();  // Load standard INI file options (including MRU)
+
+    // Register the application's document templates.  Document templates
+    //  serve as the connection between documents, frame windows and views.
+
+    CSingleDocTemplate* pDocTemplate;
+    pDocTemplate = new CSingleDocTemplate(
+        IDR_MAINFRAME,
+        RUNTIME_CLASS(CHostAppDoc),
+        RUNTIME_CLASS(CMainFrame),       // main SDI frame window
+        RUNTIME_CLASS(CHostAppView));
+    AddDocTemplate(pDocTemplate);
+
+    RunUnitTests();
+
+/*
+    // Parse command line for standard shell commands, DDE, file open
+    CCommandLineInfo cmdInfo;
+    ParseCommandLine(cmdInfo);
+
+    // Dispatch commands specified on the command line
+    if (!ProcessShellCommand(cmdInfo))
+        return FALSE;
+
+    // The one and only window has been initialized, so show and update it.
+    m_pMainWnd->ShowWindow(SW_SHOW);
+    m_pMainWnd->UpdateWindow();
+*/
+
+    return TRUE;
+}
+
+
+void 
+CHostAppApp::RunUnitTests()
+{
+  CPPUNIT_NS::MfcUi::TestRunner runner;
+  runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
+
+  runner.run();    
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CAboutDlg dialog used for App About
+
+class CAboutDlg : public CDialog
+{
+public:
+    CAboutDlg();
+
+// Dialog Data
+    //{{AFX_DATA(CAboutDlg)
+    enum { IDD = IDD_ABOUTBOX };
+    //}}AFX_DATA
+
+    // ClassWizard generated virtual function overrides
+    //{{AFX_VIRTUAL(CAboutDlg)
+    protected:
+    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
+    //}}AFX_VIRTUAL
+
+// Implementation
+protected:
+    //{{AFX_MSG(CAboutDlg)
+        // No message handlers
+    //}}AFX_MSG
+    DECLARE_MESSAGE_MAP()
+};
+
+CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
+{
+    //{{AFX_DATA_INIT(CAboutDlg)
+    //}}AFX_DATA_INIT
+}
+
+void CAboutDlg::DoDataExchange(CDataExchange* pDX)
+{
+    CDialog::DoDataExchange(pDX);
+    //{{AFX_DATA_MAP(CAboutDlg)
+    //}}AFX_DATA_MAP
+}
+
+BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
+    //{{AFX_MSG_MAP(CAboutDlg)
+        // No message handlers
+    //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+// App command to run the dialog
+void CHostAppApp::OnAppAbout()
+{
+    CAboutDlg aboutDlg;
+    aboutDlg.DoModal();
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppApp commands
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.dsp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.dsp
new file mode 100644 (file)
index 0000000..0614435
--- /dev/null
@@ -0,0 +1,446 @@
+# Microsoft Developer Studio Project File - Name="HostApp" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Application" 0x0101\r
+\r
+CFG=HostApp - Win32 Debug No Type Info Name\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "HostApp.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "HostApp.mak" CFG="HostApp - Win32 Debug No Type Info Name"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "HostApp - Win32 Release" (based on "Win32 (x86) Application")\r
+!MESSAGE "HostApp - Win32 Debug" (based on "Win32 (x86) Application")\r
+!MESSAGE "HostApp - Win32 Release Unicode" (based on "Win32 (x86) Application")\r
+!MESSAGE "HostApp - Win32 Debug Unicode" (based on "Win32 (x86) Application")\r
+!MESSAGE "HostApp - Win32 Debug No Type Info Name" (based on "Win32 (x86) Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "HostApp - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 6\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 6\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /Yu"stdafx.h" /FD /c\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386\r
+# ADD LINK32 ../../../Lib/cppunit.lib ../../../Lib/testrunner.lib /nologo /subsystem:windows /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 6\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 6\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /Yu"stdafx.h" /FD /c\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 ..\..\..\lib\cppunitd.lib ..\..\..\lib\testrunnerd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\r
+# SUBTRACT LINK32 /pdb:none /map /nodefaultlib\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Release Unicode"\r
+\r
+# PROP BASE Use_MFC 6\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "HostApp___Win32_Release_Unicode"\r
+# PROP BASE Intermediate_Dir "HostApp___Win32_Release_Unicode"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 6\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "ReleaseUnicode"\r
+# PROP Intermediate_Dir "ReleaseUnicode"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /D "_UNICODE" /Yu"stdafx.h" /FD /c\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 ../../../Lib/cppunit.lib ../../../Lib/testrunner.lib /nologo /subsystem:windows /machine:I386\r
+# ADD LINK32 ../../../Lib/cppunit.lib ../../../Lib/testrunneru.lib /nologo /entry:"wWinMainCRTStartup" /subsystem:windows /machine:I386\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug Unicode"\r
+\r
+# PROP BASE Use_MFC 6\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "HostApp___Win32_Debug_Unicode"\r
+# PROP BASE Intermediate_Dir "HostApp___Win32_Debug_Unicode"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 6\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "DebugUnicode"\r
+# PROP Intermediate_Dir "DebugUnicode"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /D "_UNICODE" /Yu"stdafx.h" /FD /c\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 ..\..\..\lib\cppunitd.lib ..\..\..\lib\testrunnerd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\r
+# SUBTRACT BASE LINK32 /pdb:none /map /nodefaultlib\r
+# ADD LINK32 ..\..\..\lib\cppunitd.lib ..\..\..\lib\testrunnerud.lib /nologo /entry:"wWinMainCRTStartup" /subsystem:windows /debug /machine:I386 /pdbtype:sept\r
+# SUBTRACT LINK32 /pdb:none /map /nodefaultlib\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug No Type Info Name"\r
+\r
+# PROP BASE Use_MFC 6\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "HostApp___Win32_Debug_No_Type_Info_Name"\r
+# PROP BASE Intermediate_Dir "HostApp___Win32_Debug_No_Type_Info_Name"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 6\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "DebugNoTypeInfoName"\r
+# PROP Intermediate_Dir "DebugNoTypeInfoName"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR- /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "WIN32" /D CPPUNIT_USE_TYPEINFO_NAME=0 /Yu"stdafx.h" /FD /c\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 ..\..\..\lib\cppunitd.lib ..\..\..\lib\testrunnerd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\r
+# SUBTRACT BASE LINK32 /pdb:none /map /nodefaultlib\r
+# ADD LINK32 ..\..\..\lib\cppunitd.lib ..\..\..\lib\testrunnerd.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\r
+# SUBTRACT LINK32 /pdb:none /map /nodefaultlib\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "HostApp - Win32 Release"\r
+# Name "HostApp - Win32 Debug"\r
+# Name "HostApp - Win32 Release Unicode"\r
+# Name "HostApp - Win32 Debug Unicode"\r
+# Name "HostApp - Win32 Debug No Type Info Name"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=.\ExampleTestCase.cpp\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\HostApp.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\HostApp.rc\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\HostAppDoc.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\HostAppView.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MainFrm.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StdAfx.cpp\r
+# ADD CPP /Yc"stdafx.h"\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=.\ExampleTestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\HostApp.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\HostAppDoc.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\HostAppView.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MainFrm.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Resource.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StdAfx.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"\r
+# Begin Source File\r
+\r
+SOURCE=.\res\HostApp.ico\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\res\HostApp.rc2\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\res\HostAppDoc.ico\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\res\Toolbar.bmp\r
+# End Source File\r
+# End Group\r
+# Begin Group "DLL Dependencies"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\lib\testrunner.dll\r
+\r
+!IF  "$(CFG)" == "HostApp - Win32 Release"\r
+\r
+# Begin Custom Build - $(IntDir)\$(InputName).dll\r
+IntDir=.\Release\r
+InputPath=..\..\..\lib\testrunner.dll\r
+InputName=testrunner\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Release Unicode"\r
+\r
+# Begin Custom Build - $(IntDir)\$(InputName).dll\r
+IntDir=.\ReleaseUnicode\r
+InputPath=..\..\..\lib\testrunner.dll\r
+InputName=testrunner\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug Unicode"\r
+\r
+# PROP BASE Exclude_From_Build 1\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug No Type Info Name"\r
+\r
+# PROP BASE Exclude_From_Build 1\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\lib\testrunnerd.dll\r
+\r
+!IF  "$(CFG)" == "HostApp - Win32 Release"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug"\r
+\r
+# Begin Custom Build - $(IntDir)\$(InputName).dll\r
+IntDir=.\Debug\r
+InputPath=..\..\..\lib\testrunnerd.dll\r
+InputName=testrunnerd\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Release Unicode"\r
+\r
+# PROP BASE Exclude_From_Build 1\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug Unicode"\r
+\r
+# Begin Custom Build - $(IntDir)\$(InputName).dll\r
+IntDir=.\DebugUnicode\r
+InputPath=..\..\..\lib\testrunnerd.dll\r
+InputName=testrunnerd\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug No Type Info Name"\r
+\r
+# Begin Custom Build - $(IntDir)\$(InputName).dll\r
+IntDir=.\DebugNoTypeInfoName\r
+InputPath=..\..\..\lib\testrunnerd.dll\r
+InputName=testrunnerd\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\lib\testrunneru.dll\r
+\r
+!IF  "$(CFG)" == "HostApp - Win32 Release"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Release Unicode"\r
+\r
+# Begin Custom Build - Updating DLL $(InputPath)\r
+IntDir=.\ReleaseUnicode\r
+InputPath=..\..\..\lib\testrunneru.dll\r
+InputName=testrunneru\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug No Type Info Name"\r
+\r
+# PROP BASE Exclude_From_Build 1\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\lib\testrunnerud.dll\r
+\r
+!IF  "$(CFG)" == "HostApp - Win32 Release"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug Unicode"\r
+\r
+# Begin Custom Build - Updating DLL $(InputPath)\r
+IntDir=.\DebugUnicode\r
+InputPath=..\..\..\lib\testrunnerud.dll\r
+InputName=testrunnerud\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF  "$(CFG)" == "HostApp - Win32 Debug No Type Info Name"\r
+\r
+# PROP BASE Exclude_From_Build 1\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# End Group\r
+# Begin Source File\r
+\r
+SOURCE=.\ReadMe.txt\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.dsw b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.dsw
new file mode 100644 (file)
index 0000000..0cea5a4
--- /dev/null
@@ -0,0 +1,80 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00\r
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
+\r
+###############################################################################\r
+\r
+Project: "DSPlugIn"=..\..\..\src\msvc6\DSPlugIn\DSPlugIn.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "HostApp"=.\HostApp.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit\r
+    End Project Dependency\r
+    Begin Project Dependency\r
+    Project_Dep_Name TestRunner\r
+    End Project Dependency\r
+    Begin Project Dependency\r
+    Project_Dep_Name DSPlugIn\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "TestRunner"=..\..\..\src\msvc6\testrunner\TestRunner.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit\r
+    End Project Dependency\r
+    Begin Project Dependency\r
+    Project_Dep_Name DSPlugIn\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "cppunit"=..\..\..\src\cppunit\cppunit.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Global:\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<3>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.h b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.h
new file mode 100644 (file)
index 0000000..2dadfff
--- /dev/null
@@ -0,0 +1,53 @@
+// HostApp.h : main header file for the HOSTAPP application
+//
+
+#if !defined(AFX_HOSTAPP_H__A9C94DE7_1663_11D2_A499_00805FC1C042__INCLUDED_)
+#define AFX_HOSTAPP_H__A9C94DE7_1663_11D2_A499_00805FC1C042__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#ifndef __AFXWIN_H__
+    #error include 'stdafx.h' before including this file for PCH
+#endif
+
+#include "resource.h"       // main symbols
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppApp:
+// See HostApp.cpp for the implementation of this class
+//
+
+class CHostAppApp : public CWinApp
+{
+public:
+    CHostAppApp();
+
+// Overrides
+    // ClassWizard generated virtual function overrides
+    //{{AFX_VIRTUAL(CHostAppApp)
+    public:
+    virtual BOOL InitInstance();
+    //}}AFX_VIRTUAL
+
+// Implementation
+
+    //{{AFX_MSG(CHostAppApp)
+    afx_msg void OnAppAbout();
+        // NOTE - the ClassWizard will add and remove member functions here.
+        //    DO NOT EDIT what you see in these blocks of generated code !
+    //}}AFX_MSG
+    DECLARE_MESSAGE_MAP();
+
+private:
+  void RunUnitTests();
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_HOSTAPP_H__A9C94DE7_1663_11D2_A499_00805FC1C042__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.rc b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostApp.rc
new file mode 100644 (file)
index 0000000..097a02a
--- /dev/null
@@ -0,0 +1,389 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
+    "#define _AFX_NO_OLE_RESOURCES\r\n"
+    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
+    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
+    "\r\n"
+    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
+    "#ifdef _WIN32\r\n"
+    "LANGUAGE 9, 1\r\n"
+    "#pragma code_page(1252)\r\n"
+    "#endif\r\n"
+    "#include ""res\\HostApp.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
+    "#include ""afxres.rc""         // Standard components\r\n"
+    "#include ""afxprint.rc""       // printing/print preview resources\r\n"
+    "#endif\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDR_MAINFRAME           ICON    DISCARDABLE     "res\\HostApp.ico"
+IDR_HOSTAPTYPE          ICON    DISCARDABLE     "res\\HostAppDoc.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+IDR_MAINFRAME           BITMAP  MOVEABLE PURE   "res\\Toolbar.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Toolbar
+//
+
+IDR_MAINFRAME TOOLBAR DISCARDABLE  16, 15
+BEGIN
+    BUTTON      ID_FILE_NEW
+    BUTTON      ID_FILE_OPEN
+    BUTTON      ID_FILE_SAVE
+    SEPARATOR
+    BUTTON      ID_EDIT_CUT
+    BUTTON      ID_EDIT_COPY
+    BUTTON      ID_EDIT_PASTE
+    SEPARATOR
+    BUTTON      ID_FILE_PRINT
+    BUTTON      ID_APP_ABOUT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MAINFRAME MENU PRELOAD DISCARDABLE 
+BEGIN
+    POPUP "&File"
+    BEGIN
+        MENUITEM "&New\tCtrl+N",                ID_FILE_NEW
+        MENUITEM "&Open...\tCtrl+O",            ID_FILE_OPEN
+        MENUITEM "&Save\tCtrl+S",               ID_FILE_SAVE
+        MENUITEM "Save &As...",                 ID_FILE_SAVE_AS
+        MENUITEM SEPARATOR
+        MENUITEM "&Print...\tCtrl+P",           ID_FILE_PRINT
+        MENUITEM "Print Pre&view",              ID_FILE_PRINT_PREVIEW
+        MENUITEM "P&rint Setup...",             ID_FILE_PRINT_SETUP
+        MENUITEM SEPARATOR
+        MENUITEM "Recent File",                 ID_FILE_MRU_FILE1, GRAYED
+        MENUITEM SEPARATOR
+        MENUITEM "E&xit",                       ID_APP_EXIT
+    END
+    POPUP "&Edit"
+    BEGIN
+        MENUITEM "&Undo\tCtrl+Z",               ID_EDIT_UNDO
+        MENUITEM SEPARATOR
+        MENUITEM "Cu&t\tCtrl+X",                ID_EDIT_CUT
+        MENUITEM "&Copy\tCtrl+C",               ID_EDIT_COPY
+        MENUITEM "&Paste\tCtrl+V",              ID_EDIT_PASTE
+    END
+    POPUP "&View"
+    BEGIN
+        MENUITEM "&Toolbar",                    ID_VIEW_TOOLBAR
+        MENUITEM "&Status Bar",                 ID_VIEW_STATUS_BAR
+    END
+    POPUP "&Help"
+    BEGIN
+        MENUITEM "&About HostApp...",           ID_APP_ABOUT
+    END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE 
+BEGIN
+    "N",            ID_FILE_NEW,            VIRTKEY, CONTROL
+    "O",            ID_FILE_OPEN,           VIRTKEY, CONTROL
+    "S",            ID_FILE_SAVE,           VIRTKEY, CONTROL
+    "P",            ID_FILE_PRINT,          VIRTKEY, CONTROL
+    "Z",            ID_EDIT_UNDO,           VIRTKEY, CONTROL
+    "X",            ID_EDIT_CUT,            VIRTKEY, CONTROL
+    "C",            ID_EDIT_COPY,           VIRTKEY, CONTROL
+    "V",            ID_EDIT_PASTE,          VIRTKEY, CONTROL
+    VK_BACK,        ID_EDIT_UNDO,           VIRTKEY, ALT
+    VK_DELETE,      ID_EDIT_CUT,            VIRTKEY, SHIFT
+    VK_INSERT,      ID_EDIT_COPY,           VIRTKEY, CONTROL
+    VK_INSERT,      ID_EDIT_PASTE,          VIRTKEY, SHIFT
+    VK_F6,          ID_NEXT_PANE,           VIRTKEY 
+    VK_F6,          ID_PREV_PANE,           VIRTKEY, SHIFT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_ABOUTBOX DIALOG DISCARDABLE  0, 0, 217, 55
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "About HostApp"
+FONT 8, "MS Sans Serif"
+BEGIN
+    ICON            IDR_MAINFRAME,IDC_STATIC,11,17,20,20
+    LTEXT           "HostApp Version 1.0",IDC_STATIC,40,10,119,8,SS_NOPREFIX
+    LTEXT           "Copyright (C) 1998",IDC_STATIC,40,25,119,8
+    DEFPUSHBUTTON   "OK",IDOK,178,7,32,14,WS_GROUP
+END
+
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904B0"
+        BEGIN
+            VALUE "CompanyName", "\0"
+            VALUE "FileDescription", "HostApp MFC Application\0"
+            VALUE "FileVersion", "1, 0, 0, 1\0"
+            VALUE "InternalName", "HostApp\0"
+            VALUE "LegalCopyright", "Copyright (C) 1998\0"
+            VALUE "LegalTrademarks", "\0"
+            VALUE "OriginalFilename", "HostApp.EXE\0"
+            VALUE "ProductName", "HostApp Application\0"
+            VALUE "ProductVersion", "1, 0, 0, 1\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1200
+    END
+END
+
+#endif    // !_MAC
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE 
+BEGIN
+    IDD_ABOUTBOX, DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 210
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 48
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE PRELOAD DISCARDABLE 
+BEGIN
+    IDR_MAINFRAME           "HostApp\n\nHostAp\n\n\nHostApp.Document\nHostAp Document"
+END
+
+STRINGTABLE PRELOAD DISCARDABLE 
+BEGIN
+    AFX_IDS_APP_TITLE       "HostApp"
+    AFX_IDS_IDLEMESSAGE     "Ready"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_INDICATOR_EXT        "EXT"
+    ID_INDICATOR_CAPS       "CAP"
+    ID_INDICATOR_NUM        "NUM"
+    ID_INDICATOR_SCRL       "SCRL"
+    ID_INDICATOR_OVR        "OVR"
+    ID_INDICATOR_REC        "REC"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_FILE_NEW             "Create a new document\nNew"
+    ID_FILE_OPEN            "Open an existing document\nOpen"
+    ID_FILE_CLOSE           "Close the active document\nClose"
+    ID_FILE_SAVE            "Save the active document\nSave"
+    ID_FILE_SAVE_AS         "Save the active document with a new name\nSave As"
+    ID_FILE_PAGE_SETUP      "Change the printing options\nPage Setup"
+    ID_FILE_PRINT_SETUP     "Change the printer and printing options\nPrint Setup"
+    ID_FILE_PRINT           "Print the active document\nPrint"
+    ID_FILE_PRINT_PREVIEW   "Display full pages\nPrint Preview"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_APP_ABOUT            "Display program information, version number and copyright\nAbout"
+    ID_APP_EXIT             "Quit the application; prompts to save documents\nExit"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_FILE_MRU_FILE1       "Open this document"
+    ID_FILE_MRU_FILE2       "Open this document"
+    ID_FILE_MRU_FILE3       "Open this document"
+    ID_FILE_MRU_FILE4       "Open this document"
+    ID_FILE_MRU_FILE5       "Open this document"
+    ID_FILE_MRU_FILE6       "Open this document"
+    ID_FILE_MRU_FILE7       "Open this document"
+    ID_FILE_MRU_FILE8       "Open this document"
+    ID_FILE_MRU_FILE9       "Open this document"
+    ID_FILE_MRU_FILE10      "Open this document"
+    ID_FILE_MRU_FILE11      "Open this document"
+    ID_FILE_MRU_FILE12      "Open this document"
+    ID_FILE_MRU_FILE13      "Open this document"
+    ID_FILE_MRU_FILE14      "Open this document"
+    ID_FILE_MRU_FILE15      "Open this document"
+    ID_FILE_MRU_FILE16      "Open this document"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_NEXT_PANE            "Switch to the next window pane\nNext Pane"
+    ID_PREV_PANE            "Switch back to the previous window pane\nPrevious Pane"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_WINDOW_SPLIT         "Split the active window into panes\nSplit"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_EDIT_CLEAR           "Erase the selection\nErase"
+    ID_EDIT_CLEAR_ALL       "Erase everything\nErase All"
+    ID_EDIT_COPY            "Copy the selection and put it on the Clipboard\nCopy"
+    ID_EDIT_CUT             "Cut the selection and put it on the Clipboard\nCut"
+    ID_EDIT_FIND            "Find the specified text\nFind"
+    ID_EDIT_PASTE           "Insert Clipboard contents\nPaste"
+    ID_EDIT_REPEAT          "Repeat the last action\nRepeat"
+    ID_EDIT_REPLACE         "Replace specific text with different text\nReplace"
+    ID_EDIT_SELECT_ALL      "Select the entire document\nSelect All"
+    ID_EDIT_UNDO            "Undo the last action\nUndo"
+    ID_EDIT_REDO            "Redo the previously undone action\nRedo"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    ID_VIEW_TOOLBAR         "Show or hide the toolbar\nToggle ToolBar"
+    ID_VIEW_STATUS_BAR      "Show or hide the status bar\nToggle StatusBar"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    AFX_IDS_SCSIZE          "Change the window size"
+    AFX_IDS_SCMOVE          "Change the window position"
+    AFX_IDS_SCMINIMIZE      "Reduce the window to an icon"
+    AFX_IDS_SCMAXIMIZE      "Enlarge the window to full size"
+    AFX_IDS_SCNEXTWINDOW    "Switch to the next document window"
+    AFX_IDS_SCPREVWINDOW    "Switch to the previous document window"
+    AFX_IDS_SCCLOSE         "Close the active window and prompts to save the documents"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    AFX_IDS_SCRESTORE       "Restore the window to normal size"
+    AFX_IDS_SCTASKLIST      "Activate Task List"
+END
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    AFX_IDS_PREVIEW_CLOSE   "Close print preview mode\nCancel Preview"
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#define _AFX_NO_SPLITTER_RESOURCES
+#define _AFX_NO_OLE_RESOURCES
+#define _AFX_NO_TRACKER_RESOURCES
+#define _AFX_NO_PROPERTY_RESOURCES
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE 9, 1
+#pragma code_page(1252)
+#endif
+#include "res\HostApp.rc2"  // non-Microsoft Visual C++ edited resources
+#include "afxres.rc"         // Standard components
+#include "afxprint.rc"       // printing/print preview resources
+#endif
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppDoc.cpp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppDoc.cpp
new file mode 100644 (file)
index 0000000..297716d
--- /dev/null
@@ -0,0 +1,80 @@
+// HostAppDoc.cpp : implementation of the CHostAppDoc class
+//
+
+#include "stdafx.h"
+#include "HostApp.h"
+
+#include "HostAppDoc.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppDoc
+
+IMPLEMENT_DYNCREATE(CHostAppDoc, CDocument)
+
+BEGIN_MESSAGE_MAP(CHostAppDoc, CDocument)
+    //{{AFX_MSG_MAP(CHostAppDoc)
+       //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppDoc construction/destruction
+
+CHostAppDoc::CHostAppDoc()
+{
+    // TODO: add one-time construction code here
+}
+
+CHostAppDoc::~CHostAppDoc()
+{
+}
+
+
+
+BOOL CHostAppDoc::OnNewDocument()
+{
+    if (!CDocument::OnNewDocument())
+        return FALSE;
+
+    return TRUE;
+}
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppDoc serialization
+
+void CHostAppDoc::Serialize(CArchive& ar)
+{
+    if (ar.IsStoring())
+    {
+        // TODO: add storing code here
+    }
+    else
+    {
+        // TODO: add loading code here
+    }
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppDoc diagnostics
+
+#ifdef _DEBUG
+void CHostAppDoc::AssertValid() const
+{
+    CDocument::AssertValid();
+}
+
+void CHostAppDoc::Dump(CDumpContext& dc) const
+{
+    CDocument::Dump(dc);
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppDoc commands
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppDoc.h b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppDoc.h
new file mode 100644 (file)
index 0000000..4c01daf
--- /dev/null
@@ -0,0 +1,56 @@
+// HostAppDoc.h : interface of the CHostAppDoc class
+//
+/////////////////////////////////////////////////////////////////////////////
+
+
+#if !defined(AFX_HOSTAPPDOC_H)
+#define AFX_HOSTAPPDOC_H
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+
+class CHostAppDoc : public CDocument
+{
+protected: // create from serialization only
+    CHostAppDoc();
+    DECLARE_DYNCREATE(CHostAppDoc)
+
+// Attributes
+public:
+
+// Operations
+public:
+
+// Overrides
+    // ClassWizard generated virtual function overrides
+    //{{AFX_VIRTUAL(CHostAppDoc)
+    public:
+    virtual BOOL OnNewDocument();
+    virtual void Serialize(CArchive& ar);
+    //}}AFX_VIRTUAL
+
+// Implementation
+public:
+    virtual ~CHostAppDoc();
+#ifdef _DEBUG
+    virtual void AssertValid() const;
+    virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+
+// Generated message map functions
+protected:
+    //{{AFX_MSG(CHostAppDoc)
+       //}}AFX_MSG
+    DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_HOSTAPPDOC_H)
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppView.cpp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppView.cpp
new file mode 100644 (file)
index 0000000..2080264
--- /dev/null
@@ -0,0 +1,105 @@
+// HostAppView.cpp : implementation of the CHostAppView class
+//
+
+#include "stdafx.h"
+#include "HostApp.h"
+
+#include "HostAppDoc.h"
+#include "HostAppView.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppView
+
+IMPLEMENT_DYNCREATE(CHostAppView, CView)
+
+BEGIN_MESSAGE_MAP(CHostAppView, CView)
+    //{{AFX_MSG_MAP(CHostAppView)
+        // NOTE - the ClassWizard will add and remove mapping macros here.
+        //    DO NOT EDIT what you see in these blocks of generated code!
+    //}}AFX_MSG_MAP
+    // Standard printing commands
+    ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
+    ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
+    ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppView construction/destruction
+
+CHostAppView::CHostAppView()
+{
+    // TODO: add construction code here
+
+}
+
+CHostAppView::~CHostAppView()
+{
+}
+
+BOOL CHostAppView::PreCreateWindow(CREATESTRUCT& cs)
+{
+    // TODO: Modify the Window class or styles here by modifying
+    //  the CREATESTRUCT cs
+
+    return CView::PreCreateWindow(cs);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppView drawing
+
+void CHostAppView::OnDraw(CDC* pDC)
+{
+    CHostAppDoc* pDoc = GetDocument();
+    ASSERT_VALID(pDoc);
+
+    // TODO: add draw code for native data here
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppView printing
+
+BOOL CHostAppView::OnPreparePrinting(CPrintInfo* pInfo)
+{
+    // default preparation
+    return DoPreparePrinting(pInfo);
+}
+
+void CHostAppView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
+{
+    // TODO: add extra initialization before printing
+}
+
+void CHostAppView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
+{
+    // TODO: add cleanup after printing
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppView diagnostics
+
+#ifdef _DEBUG
+void CHostAppView::AssertValid() const
+{
+    CView::AssertValid();
+}
+
+void CHostAppView::Dump(CDumpContext& dc) const
+{
+    CView::Dump(dc);
+}
+
+CHostAppDoc* CHostAppView::GetDocument() // non-debug version is inline
+{
+    ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CHostAppDoc)));
+    return (CHostAppDoc*)m_pDocument;
+}
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CHostAppView message handlers
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppView.h b/lib/cppunit-1.10.0/examples/msvc6/HostApp/HostAppView.h
new file mode 100644 (file)
index 0000000..0a1db29
--- /dev/null
@@ -0,0 +1,66 @@
+// HostAppView.h : interface of the CHostAppView class
+//
+/////////////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_HOSTAPPVIEW_H)
+#define AFX_HOSTAPPVIEW_H
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+class CHostAppView : public CView
+{
+protected: // create from serialization only
+    CHostAppView();
+    DECLARE_DYNCREATE(CHostAppView)
+
+// Attributes
+public:
+    CHostAppDoc* GetDocument();
+
+// Operations
+public:
+
+// Overrides
+    // ClassWizard generated virtual function overrides
+    //{{AFX_VIRTUAL(CHostAppView)
+    public:
+    virtual void OnDraw(CDC* pDC);  // overridden to draw this view
+    virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+    protected:
+    virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
+    virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
+    virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
+    //}}AFX_VIRTUAL
+
+// Implementation
+public:
+    virtual ~CHostAppView();
+#ifdef _DEBUG
+    virtual void AssertValid() const;
+    virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:
+
+// Generated message map functions
+protected:
+    //{{AFX_MSG(CHostAppView)
+        // NOTE - the ClassWizard will add and remove member functions here.
+        //    DO NOT EDIT what you see in these blocks of generated code !
+    //}}AFX_MSG
+    DECLARE_MESSAGE_MAP()
+};
+
+#ifndef _DEBUG  // debug version in HostAppView.cpp
+inline CHostAppDoc* CHostAppView::GetDocument()
+   { return (CHostAppDoc*)m_pDocument; }
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_HOSTAPPVIEW_H)
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/MainFrm.cpp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/MainFrm.cpp
new file mode 100644 (file)
index 0000000..8fbaec9
--- /dev/null
@@ -0,0 +1,107 @@
+// MainFrm.cpp : implementation of the CMainFrame class
+//
+
+#include "stdafx.h"
+#include "HostApp.h"
+
+#include "MainFrm.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CMainFrame
+
+IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
+
+BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
+    //{{AFX_MSG_MAP(CMainFrame)
+        // NOTE - the ClassWizard will add and remove mapping macros here.
+        //    DO NOT EDIT what you see in these blocks of generated code !
+    ON_WM_CREATE()
+    //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+static UINT indicators[] =
+{
+    ID_SEPARATOR,           // status line indicator
+    ID_INDICATOR_CAPS,
+    ID_INDICATOR_NUM,
+    ID_INDICATOR_SCRL,
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// CMainFrame construction/destruction
+
+CMainFrame::CMainFrame()
+{
+    // TODO: add member initialization code here
+    
+}
+
+CMainFrame::~CMainFrame()
+{
+}
+
+int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
+{
+    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
+        return -1;
+    
+    if (!m_wndToolBar.Create(this) ||
+        !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
+    {
+        TRACE0("Failed to create toolbar\n");
+        return -1;      // fail to create
+    }
+
+    if (!m_wndStatusBar.Create(this) ||
+        !m_wndStatusBar.SetIndicators(indicators,
+          sizeof(indicators)/sizeof(UINT)))
+    {
+        TRACE0("Failed to create status bar\n");
+        return -1;      // fail to create
+    }
+
+    // TODO: Remove this if you don't want tool tips or a resizeable toolbar
+    m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
+        CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
+
+    // TODO: Delete these three lines if you don't want the toolbar to
+    //  be dockable
+    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
+    EnableDocking(CBRS_ALIGN_ANY);
+    DockControlBar(&m_wndToolBar);
+
+    return 0;
+}
+
+BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
+{
+    // TODO: Modify the Window class or styles here by modifying
+    //  the CREATESTRUCT cs
+
+    return CFrameWnd::PreCreateWindow(cs);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// CMainFrame diagnostics
+
+#ifdef _DEBUG
+void CMainFrame::AssertValid() const
+{
+    CFrameWnd::AssertValid();
+}
+
+void CMainFrame::Dump(CDumpContext& dc) const
+{
+    CFrameWnd::Dump(dc);
+}
+
+#endif //_DEBUG
+
+/////////////////////////////////////////////////////////////////////////////
+// CMainFrame message handlers
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/MainFrm.h b/lib/cppunit-1.10.0/examples/msvc6/HostApp/MainFrm.h
new file mode 100644 (file)
index 0000000..12f5c93
--- /dev/null
@@ -0,0 +1,57 @@
+// MainFrm.h : interface of the CMainFrame class
+//
+/////////////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_MAINFRM_H__A9C94DEB_1663_11D2_A499_00805FC1C042__INCLUDED_)
+#define AFX_MAINFRM_H__A9C94DEB_1663_11D2_A499_00805FC1C042__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+class CMainFrame : public CFrameWnd
+{
+protected: // create from serialization only
+    CMainFrame();
+    DECLARE_DYNCREATE(CMainFrame)
+
+// Attributes
+public:
+
+// Operations
+public:
+
+// Overrides
+    // ClassWizard generated virtual function overrides
+    //{{AFX_VIRTUAL(CMainFrame)
+    virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
+    //}}AFX_VIRTUAL
+
+// Implementation
+public:
+    virtual ~CMainFrame();
+#ifdef _DEBUG
+    virtual void AssertValid() const;
+    virtual void Dump(CDumpContext& dc) const;
+#endif
+
+protected:  // control bar embedded members
+    CStatusBar  m_wndStatusBar;
+    CToolBar    m_wndToolBar;
+
+// Generated message map functions
+protected:
+    //{{AFX_MSG(CMainFrame)
+    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+        // NOTE - the ClassWizard will add and remove member functions here.
+        //    DO NOT EDIT what you see in these blocks of generated code!
+    //}}AFX_MSG
+    DECLARE_MESSAGE_MAP()
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_MAINFRM_H__A9C94DEB_1663_11D2_A499_00805FC1C042__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/Makefile.am b/lib/cppunit-1.10.0/examples/msvc6/HostApp/Makefile.am
new file mode 100644 (file)
index 0000000..eafbce5
--- /dev/null
@@ -0,0 +1,4 @@
+SUBDIRS = res
+
+EXTRA_DIST = HostApp.rc
+
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/Resource.h b/lib/cppunit-1.10.0/examples/msvc6/HostApp/Resource.h
new file mode 100644 (file)
index 0000000..91d050e
--- /dev/null
@@ -0,0 +1,20 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by HostApp.rc
+//
+#define IDD_ABOUTBOX                    100
+#define IDR_MAINFRAME                   128
+#define IDR_HOSTAPTYPE                  129
+#define ID_TESTS_RUNALL                 32771
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_3D_CONTROLS                     1
+#define _APS_NEXT_RESOURCE_VALUE        130
+#define _APS_NEXT_COMMAND_VALUE         32772
+#define _APS_NEXT_CONTROL_VALUE         1000
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/StdAfx.cpp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/StdAfx.cpp
new file mode 100644 (file)
index 0000000..23ace16
--- /dev/null
@@ -0,0 +1,6 @@
+// stdafx.cpp : source file that includes just the standard includes
+//  HostApp.pch will be the pre-compiled header
+//  stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/StdAfx.h b/lib/cppunit-1.10.0/examples/msvc6/HostApp/StdAfx.h
new file mode 100644 (file)
index 0000000..ded2a38
--- /dev/null
@@ -0,0 +1,26 @@
+// stdafx.h : include file for standard system include files,
+//  or project specific include files that are used frequently, but
+//      are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__A9C94DE9_1663_11D2_A499_00805FC1C042__INCLUDED_)
+#define AFX_STDAFX_H__A9C94DE9_1663_11D2_A499_00805FC1C042__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#define VC_EXTRALEAN        // Exclude rarely-used stuff from Windows headers
+
+#include <afxwin.h>         // MFC core and standard components
+#include <afxext.h>         // MFC extensions
+#ifndef _AFX_NO_AFXCMN_SUPPORT
+#include <afxcmn.h>         // MFC support for Windows Common Controls
+#endif // _AFX_NO_AFXCMN_SUPPORT
+
+#pragma warning( disable : 4786 )
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__A9C94DE9_1663_11D2_A499_00805FC1C042__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostApp.ico b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostApp.ico
new file mode 100644 (file)
index 0000000..7eef0bc
Binary files /dev/null and b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostApp.ico differ
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostApp.rc2 b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostApp.rc2
new file mode 100644 (file)
index 0000000..fdaa3e5
--- /dev/null
@@ -0,0 +1,13 @@
+//
+// HOSTAPP.RC2 - resources Microsoft Visual C++ does not edit directly
+//
+
+#ifdef APSTUDIO_INVOKED
+       #error this file is not editable by Microsoft Visual C++
+#endif //APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Add manually edited resources here...
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostAppDoc.ico b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostAppDoc.ico
new file mode 100644 (file)
index 0000000..2a1f1ae
Binary files /dev/null and b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/HostAppDoc.ico differ
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/Makefile.am b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/Makefile.am
new file mode 100644 (file)
index 0000000..ed67e20
--- /dev/null
@@ -0,0 +1,4 @@
+SUBDIRS = res
+
+EXTRA_DIST = Toolbar.bmp HostApp.ico HostAppDoc.ico HostApp.rc2
+
diff --git a/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/Toolbar.bmp b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/Toolbar.bmp
new file mode 100644 (file)
index 0000000..d501723
Binary files /dev/null and b/lib/cppunit-1.10.0/examples/msvc6/HostApp/res/Toolbar.bmp differ
diff --git a/lib/cppunit-1.10.0/examples/msvc6/Makefile.am b/lib/cppunit-1.10.0/examples/msvc6/Makefile.am
new file mode 100644 (file)
index 0000000..abce471
--- /dev/null
@@ -0,0 +1,2 @@
+SUBDIRS = HostApp CppUnitTestApp
+
diff --git a/lib/cppunit-1.10.0/examples/qt/Example.pro b/lib/cppunit-1.10.0/examples/qt/Example.pro
new file mode 100644 (file)
index 0000000..c23a1e8
--- /dev/null
@@ -0,0 +1,11 @@
+TEMPLATE       = app
+CONFIG         = qt warn_on release thread
+win32-msvc:INCLUDEPATH         = ../../include
+win32-msvc:LIBS                        = ../../lib/cppunit.lib ../../lib/qttestrunner.lib
+win32-msvc:TMAKE_CXXFLAGS      = /GX /GR
+win32-msvc:DEFINES             = QT_DLL QTTESTRUNNER_DLL
+HEADERS                = ExampleTestCase.h
+SOURCES                = ExampleTestCase.cpp \
+                 Main.cpp
+INTERFACES     = 
+TARGET         = example
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/examples/qt/ExampleTestCase.cpp b/lib/cppunit-1.10.0/examples/qt/ExampleTestCase.cpp
new file mode 100644 (file)
index 0000000..db0195e
--- /dev/null
@@ -0,0 +1,50 @@
+#include "ExampleTestCase.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( ExampleTestCase );
+
+void ExampleTestCase::example ()
+{
+   CPPUNIT_ASSERT_DOUBLES_EQUAL (1.0, 1.1, 0.05);
+   CPPUNIT_ASSERT (1 == 0);
+   CPPUNIT_ASSERT (1 == 1);
+}
+
+
+void ExampleTestCase::anotherExample ()
+{
+   CPPUNIT_ASSERT (1 == 2);
+}
+
+void ExampleTestCase::setUp ()
+{
+   m_value1 = 2.0;
+   m_value2 = 3.0;
+}
+
+void ExampleTestCase::testAdd ()
+{
+   double result = m_value1 + m_value2;
+   CPPUNIT_ASSERT (result == 6.0);
+}
+
+
+void ExampleTestCase::testDivideByZero ()
+{
+   int zero    = 0;
+   int result  = 8 / zero;
+}
+
+
+void ExampleTestCase::testEquals ()
+{
+   std::auto_ptr<long> l1 (new long (12));
+   std::auto_ptr<long> l2 (new long (12));
+   
+   CPPUNIT_ASSERT_EQUAL (12, 12);
+   CPPUNIT_ASSERT_EQUAL (12L, 12L);
+   CPPUNIT_ASSERT_EQUAL (*l1, *l2);
+   
+   CPPUNIT_ASSERT (12L == 12L);
+   CPPUNIT_ASSERT_EQUAL (12, 13);
+   CPPUNIT_ASSERT_DOUBLES_EQUAL (12.0, 11.99, 0.5);
+}
diff --git a/lib/cppunit-1.10.0/examples/qt/ExampleTestCase.h b/lib/cppunit-1.10.0/examples/qt/ExampleTestCase.h
new file mode 100644 (file)
index 0000000..cba472c
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef CPP_UNIT_EXAMPLETESTCASE_H
+#define CPP_UNIT_EXAMPLETESTCASE_H
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+/* 
+ * A test case that is designed to produce
+ * example errors and failures
+ *
+ */
+
+class ExampleTestCase : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( ExampleTestCase );
+  CPPUNIT_TEST( example );
+  CPPUNIT_TEST( anotherExample );
+  CPPUNIT_TEST( testAdd );
+  CPPUNIT_TEST( testDivideByZero );
+  CPPUNIT_TEST( testEquals );
+  CPPUNIT_TEST_SUITE_END();
+protected:
+
+       double                  m_value1;
+       double                  m_value2;
+
+public:
+
+       void                    setUp ();
+
+protected:
+       void                    example ();
+       void                    anotherExample ();
+       void                    testAdd ();
+       void                    testDivideByZero ();
+       void                    testEquals ();
+
+};
+
+
+#endif
diff --git a/lib/cppunit-1.10.0/examples/qt/Main.cpp b/lib/cppunit-1.10.0/examples/qt/Main.cpp
new file mode 100644 (file)
index 0000000..cb90f8b
--- /dev/null
@@ -0,0 +1,16 @@
+#include <qapplication.h>
+#include <cppunit/ui/qt/TestRunner.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+
+
+int main( int argc, char** argv )
+{
+       QApplication app( argc, argv );
+
+       CPPUNIT_NS::QtUi::TestRunner runner;
+       runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
+       runner.run( true );
+
+       return 0;
+}
+
diff --git a/lib/cppunit-1.10.0/examples/qt/build.bat b/lib/cppunit-1.10.0/examples/qt/build.bat
new file mode 100755 (executable)
index 0000000..5c3d7c6
--- /dev/null
@@ -0,0 +1,3 @@
+tmake Example.pro -o Makefile
+nmake clean
+nmake
diff --git a/lib/cppunit-1.10.0/examples/qt/run.bat b/lib/cppunit-1.10.0/examples/qt/run.bat
new file mode 100755 (executable)
index 0000000..b929646
--- /dev/null
@@ -0,0 +1,2 @@
+SET PATH=%PATH%;..\..\lib
+Example.exe
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/examples/simple/ExampleTestCase.cpp b/lib/cppunit-1.10.0/examples/simple/ExampleTestCase.cpp
new file mode 100644 (file)
index 0000000..296823d
--- /dev/null
@@ -0,0 +1,53 @@
+#include "ExampleTestCase.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( ExampleTestCase );
+
+void ExampleTestCase::example()
+{
+  CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, 1.1, 0.05 );
+  CPPUNIT_ASSERT( 1 == 0 );
+  CPPUNIT_ASSERT( 1 == 1 );
+}
+
+
+void ExampleTestCase::anotherExample()
+{
+  CPPUNIT_ASSERT (1 == 2);
+}
+
+void ExampleTestCase::setUp()
+{
+  m_value1 = 2.0;
+  m_value2 = 3.0;
+}
+
+void ExampleTestCase::testAdd()
+{
+  double result = m_value1 + m_value2;
+  CPPUNIT_ASSERT( result == 6.0 );
+}
+
+
+void ExampleTestCase::testDivideByZero()
+{
+  int zero = 0;
+  int result = 8 / zero;
+}
+
+
+void ExampleTestCase::testEquals()
+{
+  long* l1 = new long(12);
+  long* l2 = new long(12);
+
+  CPPUNIT_ASSERT_EQUAL( 12, 12 );
+  CPPUNIT_ASSERT_EQUAL( 12L, 12L );
+  CPPUNIT_ASSERT_EQUAL( *l1, *l2 );
+
+  delete l1;
+  delete l2;
+
+  CPPUNIT_ASSERT( 12L == 12L );
+  CPPUNIT_ASSERT_EQUAL( 12, 13 );
+  CPPUNIT_ASSERT_DOUBLES_EQUAL( 12.0, 11.99, 0.5 );
+}
diff --git a/lib/cppunit-1.10.0/examples/simple/ExampleTestCase.h b/lib/cppunit-1.10.0/examples/simple/ExampleTestCase.h
new file mode 100644 (file)
index 0000000..f7fccaa
--- /dev/null
@@ -0,0 +1,39 @@
+
+#ifndef CPP_UNIT_EXAMPLETESTCASE_H
+#define CPP_UNIT_EXAMPLETESTCASE_H
+
+#include <cppunit/extensions/HelperMacros.h>
+
+/* 
+ * A test case that is designed to produce
+ * example errors and failures
+ *
+ */
+
+class ExampleTestCase : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( ExampleTestCase );
+  CPPUNIT_TEST( example );
+  CPPUNIT_TEST( anotherExample );
+  CPPUNIT_TEST( testAdd );
+  CPPUNIT_TEST( testDivideByZero );
+  CPPUNIT_TEST( testEquals );
+  CPPUNIT_TEST_SUITE_END();
+
+protected:
+  double m_value1;
+  double m_value2;
+
+public:
+  void setUp();
+
+protected:
+  void example();
+  void anotherExample();
+  void testAdd();
+  void testDivideByZero();
+  void testEquals();
+};
+
+
+#endif
diff --git a/lib/cppunit-1.10.0/examples/simple/Main.cpp b/lib/cppunit-1.10.0/examples/simple/Main.cpp
new file mode 100644 (file)
index 0000000..9aff95f
--- /dev/null
@@ -0,0 +1,34 @@
+#include <cppunit/BriefTestProgressListener.h>
+#include <cppunit/CompilerOutputter.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/TestResult.h>
+#include <cppunit/TestResultCollector.h>
+#include <cppunit/TestRunner.h>
+
+
+int
+main( int argc, char* argv[] )
+{
+  // Create the event manager and test controller
+  CPPUNIT_NS::TestResult controller;
+
+  // Add a listener that colllects test result
+  CPPUNIT_NS::TestResultCollector result;
+  controller.addListener( &result );        
+
+  // Add a listener that print dots as test run.
+  CPPUNIT_NS::BriefTestProgressListener progress;
+  controller.addListener( &progress );      
+
+  // Add the top suite to the test runner
+  CPPUNIT_NS::TestRunner runner;
+  runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
+  runner.run( controller );
+
+  // Print test in a compiler compatible format.
+  CPPUNIT_NS::CompilerOutputter outputter( &result, std::cerr );
+  outputter.write(); 
+
+  return result.wasSuccessful() ? 0 : 1;
+}
+
diff --git a/lib/cppunit-1.10.0/examples/simple/Makefile.am b/lib/cppunit-1.10.0/examples/simple/Makefile.am
new file mode 100644 (file)
index 0000000..3a6bca9
--- /dev/null
@@ -0,0 +1,12 @@
+EXTRA_DIST = simple.dsp simple_plugin.dsp SimplePlugIn.cpp
+
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
+
+bin_PROGRAMS=simple
+
+simple_SOURCES= ExampleTestCase.cpp Main.cpp  ExampleTestCase.h
+
+simple_LDADD= \
+  $(top_builddir)/src/cppunit/libcppunit.la 
+
+simple_LDFLAGS = $(LIBADD_DL)
diff --git a/lib/cppunit-1.10.0/examples/simple/Makefile.in b/lib/cppunit-1.10.0/examples/simple/Makefile.in
new file mode 100644 (file)
index 0000000..a1107d5
--- /dev/null
@@ -0,0 +1,471 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+EXTRA_DIST = simple.dsp simple_plugin.dsp SimplePlugIn.cpp
+
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
+
+bin_PROGRAMS = simple
+
+simple_SOURCES = ExampleTestCase.cpp Main.cpp  ExampleTestCase.h
+
+simple_LDADD = \
+  $(top_builddir)/src/cppunit/libcppunit.la 
+
+
+simple_LDFLAGS = $(LIBADD_DL)
+subdir = examples/simple
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+bin_PROGRAMS = simple$(EXEEXT)
+PROGRAMS = $(bin_PROGRAMS)
+
+am_simple_OBJECTS = ExampleTestCase.$(OBJEXT) Main.$(OBJEXT)
+simple_OBJECTS = $(am_simple_OBJECTS)
+simple_DEPENDENCIES = $(top_builddir)/src/cppunit/libcppunit.la
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/config
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ExampleTestCase.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/Main.Po
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+       $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(simple_SOURCES)
+DIST_COMMON = Makefile.am Makefile.in
+SOURCES = $(simple_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  examples/simple/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+install-binPROGRAMS: $(bin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(bindir)
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
+         p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         if test -f $$p \
+            || test -f $$p1 \
+         ; then \
+           f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+          echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
+          $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
+         else :; fi; \
+       done
+
+uninstall-binPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
+         f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+         echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
+         rm -f $(DESTDIR)$(bindir)/$$f; \
+       done
+
+clean-binPROGRAMS:
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
+         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         echo " rm -f $$p $$f"; \
+         rm -f $$p $$f ; \
+       done
+simple$(EXEEXT): $(simple_OBJECTS) $(simple_DEPENDENCIES) 
+       @rm -f simple$(EXEEXT)
+       $(CXXLINK) $(simple_LDFLAGS) $(simple_OBJECTS) $(simple_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ExampleTestCase.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Main.Po@am__quote@
+
+distclean-depend:
+       -rm -rf ./$(DEPDIR)
+
+.cpp.o:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@  if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(bindir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-compile distclean-depend \
+       distclean-generic distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+       clean-generic clean-libtool ctags distclean distclean-compile \
+       distclean-depend distclean-generic distclean-libtool \
+       distclean-tags distdir dvi dvi-am info info-am install \
+       install-am install-binPROGRAMS install-data install-data-am \
+       install-exec install-exec-am install-info install-info-am \
+       install-man install-strip installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-binPROGRAMS uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/examples/simple/SimplePlugIn.cpp b/lib/cppunit-1.10.0/examples/simple/SimplePlugIn.cpp
new file mode 100644 (file)
index 0000000..1d24f06
--- /dev/null
@@ -0,0 +1,8 @@
+// EasyTestPlugIn.cpp : Defines the entry point for the DLL application.
+//
+
+#include <cppunit/plugin/TestPlugIn.h>
+
+
+// Implements all the plug-in stuffs, WinMain...
+CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/lib/cppunit-1.10.0/examples/simple/simple.dsp b/lib/cppunit-1.10.0/examples/simple/simple.dsp
new file mode 100644 (file)
index 0000000..f57c137
--- /dev/null
@@ -0,0 +1,104 @@
+# Microsoft Developer Studio Project File - Name="simple" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
+\r
+CFG=simple - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "simple.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "simple.mak" CFG="simple - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "simple - Win32 Release" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "simple - Win32 Debug" (based on "Win32 (x86) Console Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "simple - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /libpath:"../../lib/"\r
+\r
+!ELSEIF  "$(CFG)" == "simple - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../lib/"\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "simple - Win32 Release"\r
+# Name "simple - Win32 Debug"\r
+# Begin Source File\r
+\r
+SOURCE=.\ExampleTestCase.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ExampleTestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Main.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Makefile.am\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/examples/simple/simple_plugin.dsp b/lib/cppunit-1.10.0/examples/simple/simple_plugin.dsp
new file mode 100644 (file)
index 0000000..9d86084
--- /dev/null
@@ -0,0 +1,117 @@
+# Microsoft Developer Studio Project File - Name="simple_plugin" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=simple_plugin - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "simple_plugin.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "simple_plugin.mak" CFG="simple_plugin - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "simple_plugin - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "simple_plugin - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "simple_plugin - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "simple_plugin___Win32_Release"\r
+# PROP BASE Intermediate_Dir "simple_plugin___Win32_Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "ReleasePlugIn"\r
+# PROP Intermediate_Dir "ReleasePlugIn"\r
+# PROP Ignore_Export_Lib 1\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SIMPLE_PLUGIN_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SIMPLE_PLUGIN_EXPORTS" /D "CPPUNIT_DLL" /FD /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /dll /machine:I386 /libpath:"../../lib/"\r
+# Begin Special Build Tool\r
+TargetPath=.\ReleasePlugIn\simple_plugin.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Running tests...\r
+PostBuild_Cmds=..\..\lib\DllPlugInTester_dll.exe $(TargetPath)\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "simple_plugin - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "simple_plugin___Win32_Debug"\r
+# PROP BASE Intermediate_Dir "simple_plugin___Win32_Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "DebugPlugIn"\r
+# PROP Intermediate_Dir "DebugPlugIn"\r
+# PROP Ignore_Export_Lib 1\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SIMPLE_PLUGIN_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SIMPLE_PLUGIN_EXPORTS" /D "CPPUNIT_DLL" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /dll /debug /machine:I386 /out:"DebugPlugIn/simple_plugind.dll" /pdbtype:sept /libpath:"../../lib/"\r
+# Begin Special Build Tool\r
+TargetPath=.\DebugPlugIn\simple_plugind.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Running tests...\r
+PostBuild_Cmds=..\..\lib\DllPlugInTesterd_dll.exe -b --xml tests.xml -c $(TargetPath)\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "simple_plugin - Win32 Release"\r
+# Name "simple_plugin - Win32 Debug"\r
+# Begin Source File\r
+\r
+SOURCE=.\ExampleTestCase.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ExampleTestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\SimplePlugIn.cpp\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/include/Makefile.am b/lib/cppunit-1.10.0/include/Makefile.am
new file mode 100644 (file)
index 0000000..872ec70
--- /dev/null
@@ -0,0 +1,4 @@
+SUBDIRS = cppunit
+
+# already handled by toplevel dist-hook.
+# DIST_SUBDIRS = msvc6
diff --git a/lib/cppunit-1.10.0/include/Makefile.in b/lib/cppunit-1.10.0/include/Makefile.in
new file mode 100644 (file)
index 0000000..4557173
--- /dev/null
@@ -0,0 +1,451 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = cppunit
+subdir = include
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+       ps-recursive install-info-recursive uninstall-info-recursive \
+       all-recursive install-data-recursive install-exec-recursive \
+       installdirs-recursive install-recursive uninstall-recursive \
+       check-recursive installcheck-recursive
+DIST_COMMON = Makefile.am Makefile.in
+DIST_SUBDIRS = $(SUBDIRS)
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  include/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+       @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       if (etags --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+       else \
+         include_option=--include; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -f $$subdir/TAGS && \
+             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d $(distdir)/$$subdir \
+           || mkdir $(distdir)/$$subdir \
+           || exit 1; \
+           (cd $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$(top_distdir)" \
+               distdir=../$(distdir)/$$subdir \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+       clean-generic clean-libtool clean-recursive ctags \
+       ctags-recursive distclean distclean-generic distclean-libtool \
+       distclean-recursive distclean-tags distdir dvi dvi-am \
+       dvi-recursive info info-am info-recursive install install-am \
+       install-data install-data-am install-data-recursive \
+       install-exec install-exec-am install-exec-recursive \
+       install-info install-info-am install-info-recursive install-man \
+       install-recursive install-strip installcheck installcheck-am \
+       installdirs installdirs-am installdirs-recursive \
+       maintainer-clean maintainer-clean-generic \
+       maintainer-clean-recursive mostlyclean mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-recursive pdf pdf-am \
+       pdf-recursive ps ps-am ps-recursive tags tags-recursive \
+       uninstall uninstall-am uninstall-info-am \
+       uninstall-info-recursive uninstall-recursive
+
+
+# already handled by toplevel dist-hook.
+# DIST_SUBDIRS = msvc6
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/include/cppunit/AdditionalMessage.h b/lib/cppunit-1.10.0/include/cppunit/AdditionalMessage.h
new file mode 100644 (file)
index 0000000..917d754
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef CPPUNIT_ADDITIONALMESSAGE_H
+#define CPPUNIT_ADDITIONALMESSAGE_H
+
+#include <cppunit/Message.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief An additional Message for assertions.
+ * \ingroup CreatingNewAssertions
+ *
+ * Provides a implicit constructor that takes a single string. This allow this
+ * class to be used as the message arguments in macros.
+ *
+ * The constructed object is either a Message with a single detail string if
+ * a string was passed to the macro, or a copy of the Message passed to the macro.
+ *
+ * Here is an example of usage:
+ * \code
+ * 
+ *   void checkStringEquals( const std::string &expected,
+ *                          const std::string &actual,
+ *                           const CppUnit::SourceLine &sourceLine,
+ *                           const CppUnit::AdditionalMessage &message );
+ *  
+ *   #define XTLUT_ASSERT_STRING_EQUAL_MESSAGE( expected, actual, message )  \
+ *     ::XtlUt::Impl::checkStringEquals( ::Xtl::toString(expected),        \
+ *                                       ::Xtl::toString(actual),          \
+ *                                       CPPUNIT_SOURCELINE(),             \
+ *                                       message )
+ * \endcode
+ *
+ * In the previous example, the user can specify a simple string for \a message,
+ * or a complex Message object.
+ *
+ * \see Message
+ */
+class CPPUNIT_API AdditionalMessage : public Message
+{
+public:
+  typedef Message SuperClass;
+
+  /// Constructs an empty Message.
+  AdditionalMessage();
+
+  /*! \brief Constructs a Message with the specified detail string.
+   * \param detail1 Detail string of the message. If empty, then it is not added.
+   */
+  AdditionalMessage( const std::string &detail1 );
+
+  /*! \brief Constructs a Message with the specified detail string.
+   * \param detail1 Detail string of the message. If empty, then it is not added.
+   */
+  AdditionalMessage( const char *detail1 );
+
+  /*! \brief Constructs a copy of the specified message.
+   * \param other Message to copy.
+   */
+  AdditionalMessage( const Message &other );
+
+  /*! \brief Assignment operator.
+   * \param other Message to copy.
+   * \return Reference on this object.
+   */
+  AdditionalMessage &operator =( const Message &other );
+
+private:
+};
+
+
+CPPUNIT_NS_END
+
+
+
+#endif  // CPPUNIT_ADDITIONALMESSAGE_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/Asserter.h b/lib/cppunit-1.10.0/include/cppunit/Asserter.h
new file mode 100644 (file)
index 0000000..94dadaa
--- /dev/null
@@ -0,0 +1,143 @@
+#ifndef CPPUNIT_ASSERTER_H
+#define CPPUNIT_ASSERTER_H
+
+#include <cppunit/AdditionalMessage.h>
+#include <cppunit/SourceLine.h>
+#include <string>
+
+CPPUNIT_NS_BEGIN
+
+
+class Message;
+
+
+/*! \brief A set of functions to help writing assertion macros.
+ * \ingroup CreatingNewAssertions
+ *
+ * Here is an example of assertion, a simplified version of the
+ * actual assertion implemented in examples/cppunittest/XmlUniformiser.h:
+ * \code
+ * #include <cppunit/SourceLine.h>
+ * #include <cppunit/TestAssert.h>
+ * 
+ * void 
+ * checkXmlEqual( std::string expectedXml,
+ *                std::string actualXml,
+ *                CppUnit::SourceLine sourceLine )
+ * {
+ *   std::string expected = XmlUniformiser( expectedXml ).stripped();
+ *   std::string actual = XmlUniformiser( actualXml ).stripped();
+ * 
+ *   if ( expected == actual )
+ *     return;
+ * 
+ *   ::CppUnit::Asserter::failNotEqual( expected,
+ *                                      actual,
+ *                                      sourceLine );
+ * }
+ * 
+ * /// Asserts that two XML strings are equivalent.
+ * #define CPPUNITTEST_ASSERT_XML_EQUAL( expected, actual ) \
+ *     checkXmlEqual( expected, actual,                     \
+ *                    CPPUNIT_SOURCELINE() )
+ * \endcode
+ */
+struct Asserter
+{
+  /*! \brief Throws a Exception with the specified message and location.
+   */
+  static void CPPUNIT_API fail( const Message &message, 
+                                const SourceLine &sourceLine = SourceLine() );
+
+  /*! \brief Throws a Exception with the specified message and location.
+   * \deprecated Use fail( Message, SourceLine ) instead.
+   */
+  static void CPPUNIT_API fail( std::string message, 
+                                const SourceLine &sourceLine = SourceLine() );
+
+  /*! \brief Throws a Exception with the specified message and location.
+   * \param shouldFail if \c true then the exception is thrown. Otherwise
+   *                   nothing happen.
+   * \param message Message explaining the assertion failiure.
+   * \param sourceLine Location of the assertion.
+   */
+  static void CPPUNIT_API failIf( bool shouldFail, 
+                                  const Message &message, 
+                                  const SourceLine &sourceLine = SourceLine() );
+
+  /*! \brief Throws a Exception with the specified message and location.
+   * \deprecated Use failIf( bool, Message, SourceLine ) instead.
+   * \param shouldFail if \c true then the exception is thrown. Otherwise
+   *                   nothing happen.
+   * \param message Message explaining the assertion failiure.
+   * \param sourceLine Location of the assertion.
+   */
+  static void CPPUNIT_API failIf( bool shouldFail, 
+                                  std::string message, 
+                                  const SourceLine &sourceLine = SourceLine() );
+
+  /*! \brief Returns a expected value string for a message.
+   * Typically used to create 'not equal' message, or to check that a message
+   * contains the expected content when writing unit tests for your custom 
+   * assertions.
+   *
+   * \param expectedValue String that represents the expected value.
+   * \return \a expectedValue prefixed with "Expected: ".
+   * \see makeActual().
+   */
+  static std::string CPPUNIT_API makeExpected( const std::string &expectedValue );
+
+  /*! \brief Returns an actual value string for a message.
+   * Typically used to create 'not equal' message, or to check that a message
+   * contains the expected content when writing unit tests for your custom 
+   * assertions.
+   *
+   * \param actualValue String that represents the actual value.
+   * \return \a actualValue prefixed with "Actual  : ".
+   * \see makeExpected().
+   */
+  static std::string CPPUNIT_API makeActual( const std::string &actualValue );
+
+  static Message CPPUNIT_API makeNotEqualMessage( const std::string &expectedValue,
+                                                  const std::string &actualValue,
+                                                  const AdditionalMessage &additionalMessage = AdditionalMessage(),
+                                                  const std::string &shortDescription = "equality assertion failed");
+
+  /*! \brief Throws an Exception with the specified message and location.
+   * \param expected Text describing the expected value.
+   * \param actual Text describing the actual value.
+   * \param sourceLine Location of the assertion.
+   * \param additionalMessage Additional message. Usually used to report
+   *                          what are the differences between the expected and actual value.
+   * \param shortDescription Short description for the failure message.
+   */
+  static void CPPUNIT_API failNotEqual( std::string expected, 
+                                        std::string actual, 
+                                        const SourceLine &sourceLine,
+                                        const AdditionalMessage &additionalMessage = AdditionalMessage(),
+                                        std::string shortDescription = "equality assertion failed" );
+
+  /*! \brief Throws an Exception with the specified message and location.
+   * \param shouldFail if \c true then the exception is thrown. Otherwise
+   *                   nothing happen.
+   * \param expected Text describing the expected value.
+   * \param actual Text describing the actual value.
+   * \param sourceLine Location of the assertion.
+   * \param additionalMessage Additional message. Usually used to report
+   *                          where the "difference" is located.
+   * \param shortDescription Short description for the failure message.
+   */
+  static void CPPUNIT_API failNotEqualIf( bool shouldFail,
+                                          std::string expected, 
+                                          std::string actual, 
+                                          const SourceLine &sourceLine,
+                                          const AdditionalMessage &additionalMessage = AdditionalMessage(),
+                                          std::string shortDescription = "equality assertion failed" );
+
+};
+
+
+CPPUNIT_NS_END
+
+
+#endif  // CPPUNIT_ASSERTER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/BriefTestProgressListener.h b/lib/cppunit-1.10.0/include/cppunit/BriefTestProgressListener.h
new file mode 100644 (file)
index 0000000..137ca44
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef CPPUNIT_BRIEFTESTPROGRESSLISTENER_H
+#define CPPUNIT_BRIEFTESTPROGRESSLISTENER_H
+
+#include <cppunit/TestListener.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief TestListener that prints the name of each test before running it.
+ * \ingroup TrackingTestExecution
+ */
+class CPPUNIT_API BriefTestProgressListener : public TestListener
+{
+public:
+  /*! Constructs a BriefTestProgressListener object.
+   */
+  BriefTestProgressListener();
+
+  /// Destructor.
+  virtual ~BriefTestProgressListener();
+
+  void startTest( Test *test );
+
+  void addFailure( const TestFailure &failure );
+
+  void endTest( Test *test );
+
+private:
+  /// Prevents the use of the copy constructor.
+  BriefTestProgressListener( const BriefTestProgressListener &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const BriefTestProgressListener &copy );
+
+private:
+  bool m_lastTestFailed;
+};
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_BRIEFTESTPROGRESSLISTENER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/CompilerOutputter.h b/lib/cppunit-1.10.0/include/cppunit/CompilerOutputter.h
new file mode 100644 (file)
index 0000000..e5ca0b3
--- /dev/null
@@ -0,0 +1,146 @@
+#ifndef CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H
+#define CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H
+
+#include <cppunit/Portability.h>
+#include <cppunit/Outputter.h>
+#include <iostream>
+
+CPPUNIT_NS_BEGIN
+
+
+class Exception;
+class SourceLine;
+class Test;
+class TestFailure;
+class TestResultCollector;
+
+/*! 
+ * \brief Outputs a TestResultCollector in a compiler compatible format.
+ * \ingroup WritingTestResult
+ *
+ * Printing the test results in a compiler compatible format (assertion
+ * location has the same format as compiler error), allow you to use your
+ * IDE to jump to the assertion failure. Location format can be customized (see
+ * setLocationFormat() ).
+ *
+ * For example, when running the test in a post-build with VC++, if an assertion
+ * fails, you can jump to the assertion by pressing F4 (jump to next error).
+ *
+ * Heres is an example of usage (from examples/cppunittest/CppUnitTestMain.cpp):
+ * \code
+ * int main( int argc, char* argv[] ) {
+ *   // if command line contains "-selftest" then this is the post build check
+ *   // => the output must be in the compiler error format.
+ *   bool selfTest = (argc > 1)  &&  
+ *                   (std::string("-selftest") == argv[1]);
+ *
+ *   CppUnit::TextUi::TestRunner runner;
+ *   runner.addTest( CppUnitTest::suite() );   // Add the top suite to the test runner
+ * 
+ *  if ( selfTest )
+ *   { // Change the default outputter to a compiler error format outputter
+ *     // The test runner owns the new outputter.
+ *     runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(),
+ *                                                          std::cerr ) );
+ *   }
+ * 
+ *  // Run the test and don't wait a key if post build check.
+ *   bool wasSuccessful = runner.run( "", !selfTest );
+ * 
+ *   // Return error code 1 if the one of test failed.
+ *   return wasSuccessful ? 0 : 1;
+ * }
+ * \endcode
+ */
+class CPPUNIT_API CompilerOutputter : public Outputter
+{
+public:
+  /*! \brief Constructs a CompilerOutputter object.
+   * \param result Result of the test run.
+   * \param stream Stream used to output test result.
+   * \param locationFormat Error location format used by your compiler. Default
+   *                       to \c CPPUNIT_COMPILER_LOCATION_FORMAT which is defined
+   *                       in the configuration file. See setLocationFormat() for detail.
+   * \see setLocationFormat().
+   */
+  CompilerOutputter( TestResultCollector *result,
+                     std::ostream &stream,
+                     const std::string &locationFormat = CPPUNIT_COMPILER_LOCATION_FORMAT );
+
+  /// Destructor.
+  virtual ~CompilerOutputter();
+
+  /*! \brief Sets the error location format.
+   * 
+   * Indicates the format used to report location of failed assertion. This format should
+   * match the one used by your compiler.
+   *
+   * The location format is a string in which the occurence of the following character
+   * sequence are replaced:
+   *
+   * - "%l" => replaced by the line number
+   * - "%p" => replaced by the full path name of the file ("G:\prg\vc\cppunit\MyTest.cpp")
+   * - "%f" => replaced by the base name of the file ("MyTest.cpp")
+   *
+   * Some examples:
+   *
+   * - VC++ error location format: "%p(%l):" => produce "G:\prg\MyTest.cpp(43):"
+   * - GCC error location format: "%f:%l:" => produce "MyTest.cpp(43):"
+   * 
+   * Thoses are the two compilers currently <em>supported</em> (gcc format is used if
+   * VC++ is not detected). If you want your compiler to be automatically supported by
+   * CppUnit, send a mail to the mailing list (preferred), or submit a feature request
+   * that indicates how to detect your compiler with the preprocessor (#ifdef...) and
+   * your compiler location format.
+   */
+  void setLocationFormat( const std::string &locationFormat );
+
+  /*! \brief Creates an instance of an outputter that matches your current compiler.
+   * \deprecated This class is specialized through parameterization instead of subclassing...
+   *             Use CompilerOutputter::CompilerOutputter instead.
+   */
+  static CompilerOutputter *defaultOutputter( TestResultCollector *result,
+                                              std::ostream &stream );
+
+  void write();
+
+  void setNoWrap();
+
+  void setWrapColumn( int wrapColumn );
+
+  int wrapColumn() const;
+
+  virtual void printSuccess();
+  virtual void printFailureReport();
+  virtual void printFailuresList();
+  virtual void printStatistics();
+  virtual void printFailureDetail( TestFailure *failure );
+  virtual void printFailureLocation( SourceLine sourceLine );
+  virtual void printFailureType( TestFailure *failure );
+  virtual void printFailedTestName( TestFailure *failure );
+  virtual void printFailureMessage( TestFailure *failure );
+
+private:
+  /// Prevents the use of the copy constructor.
+  CompilerOutputter( const CompilerOutputter &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const CompilerOutputter &copy );
+
+  virtual bool processLocationFormatCommand( char command, 
+                                             const SourceLine &sourceLine );
+
+  virtual std::string extractBaseName( const std::string &fileName ) const;
+
+private:
+  TestResultCollector *m_result;
+  std::ostream &m_stream;
+  std::string m_locationFormat;
+  int m_wrapColumn;
+};
+
+
+CPPUNIT_NS_END
+
+
+#endif  // CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/Exception.h b/lib/cppunit-1.10.0/include/cppunit/Exception.h
new file mode 100644 (file)
index 0000000..bf5fcac
--- /dev/null
@@ -0,0 +1,90 @@
+#ifndef CPPUNIT_EXCEPTION_H
+#define CPPUNIT_EXCEPTION_H
+
+#include <cppunit/Portability.h>
+#include <cppunit/Message.h>
+#include <cppunit/SourceLine.h>
+#include <exception>
+
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief Exceptions thrown by failed assertions.
+ * \ingroup BrowsingCollectedTestResult
+ *
+ * Exception is an exception that serves
+ * descriptive strings through its what() method
+ */
+class CPPUNIT_API Exception : public std::exception
+{
+public:
+  /*! \brief Constructs the exception with the specified message and source location.
+   * \param message Message associated to the exception.
+   * \param sourceLine Source location related to the exception.
+   */
+  Exception( const Message &message = Message(), 
+             const SourceLine &sourceLine = SourceLine() );
+
+#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED
+  /*!
+   * \deprecated Use other constructor instead.
+   */
+  Exception( std::string  message, 
+            long lineNumber, 
+            std::string fileName );
+#endif
+
+  /*! \brief Constructs a copy of an exception.
+   * \param other Exception to copy.
+   */
+  Exception( const Exception &other );
+
+  /// Destructs the exception
+  virtual ~Exception() throw();
+
+  /// Performs an assignment
+  Exception &operator =( const Exception &other );
+
+  /// Returns descriptive message
+  const char *what() const throw();
+
+  /// Location where the error occured
+  SourceLine sourceLine() const;
+
+  /// Message related to the exception.
+  Message message() const;
+
+  /// Set the message.
+  void setMessage( const Message &message );
+
+#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED
+  /// The line on which the error occurred
+  long lineNumber() const;
+
+  /// The file in which the error occurred
+  std::string fileName() const;
+
+  static const std::string UNKNOWNFILENAME;
+  static const long UNKNOWNLINENUMBER;
+#endif
+
+  /// Clones the exception.
+  virtual Exception *clone() const;
+
+protected:
+  // VC++ does not recognize call to parent class when prefixed
+  // with a namespace. This is a workaround.
+  typedef std::exception SuperClass;
+
+  Message m_message;
+  SourceLine m_sourceLine;
+  std::string m_whatMessage;
+};
+
+
+CPPUNIT_NS_END
+
+
+#endif // CPPUNIT_EXCEPTION_H
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/Makefile.am
new file mode 100644 (file)
index 0000000..c743a67
--- /dev/null
@@ -0,0 +1,42 @@
+SUBDIRS = extensions ui plugin config tools portability
+
+DISTCLEANFILES = config-auto.h
+
+libcppunitincludedir = $(includedir)/cppunit
+libcppunitinclude_HEADERS =  \
+       config-auto.h \
+  AdditionalMessage.h \
+       Asserter.h \
+       BriefTestProgressListener.h \
+       CompilerOutputter.h \
+       Exception.h \
+       Message.h \
+       Outputter.h \
+       Portability.h \
+       Protector.h \
+       SourceLine.h \
+       SynchronizedObject.h \
+       Test.h \
+       TestAssert.h \
+       TestCase.h \
+       TestCaller.h \
+       TestComposite.h \
+       TestFailure.h \
+       TestFixture.h \
+       TestLeaf.h \
+       TestPath.h \
+       TestResult.h \
+       TestResultCollector.h \
+       TestRunner.h \
+       TestSuccessListener.h \
+       TestSuite.h \
+       TextOutputter.h \
+       TextTestProgressListener.h \
+       TextTestResult.h \
+       TextTestRunner.h \
+       TestListener.h \
+       XmlOutputter.h \
+       XmlOutputterHook.h
+
+dist-hook:
+       rm -f $(distdir)/config-auto.h
diff --git a/lib/cppunit-1.10.0/include/cppunit/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/Makefile.in
new file mode 100644 (file)
index 0000000..b1d417a
--- /dev/null
@@ -0,0 +1,516 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = extensions ui plugin config tools portability
+
+DISTCLEANFILES = config-auto.h
+
+libcppunitincludedir = $(includedir)/cppunit
+libcppunitinclude_HEADERS = \
+       config-auto.h \
+  AdditionalMessage.h \
+       Asserter.h \
+       BriefTestProgressListener.h \
+       CompilerOutputter.h \
+       Exception.h \
+       Message.h \
+       Outputter.h \
+       Portability.h \
+       Protector.h \
+       SourceLine.h \
+       SynchronizedObject.h \
+       Test.h \
+       TestAssert.h \
+       TestCase.h \
+       TestCaller.h \
+       TestComposite.h \
+       TestFailure.h \
+       TestFixture.h \
+       TestLeaf.h \
+       TestPath.h \
+       TestResult.h \
+       TestResultCollector.h \
+       TestRunner.h \
+       TestSuccessListener.h \
+       TestSuite.h \
+       TextOutputter.h \
+       TextTestProgressListener.h \
+       TextTestResult.h \
+       TextTestRunner.h \
+       TestListener.h \
+       XmlOutputter.h \
+       XmlOutputterHook.h
+
+subdir = include/cppunit
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+HEADERS = $(libcppunitinclude_HEADERS)
+
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+       ps-recursive install-info-recursive uninstall-info-recursive \
+       all-recursive install-data-recursive install-exec-recursive \
+       installdirs-recursive install-recursive uninstall-recursive \
+       check-recursive installcheck-recursive
+DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in
+DIST_SUBDIRS = $(SUBDIRS)
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  include/cppunit/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+uninstall-libcppunitincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+       @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       if (etags --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+       else \
+         include_option=--include; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -f $$subdir/TAGS && \
+             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d $(distdir)/$$subdir \
+           || mkdir $(distdir)/$$subdir \
+           || exit 1; \
+           (cd $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$(top_distdir)" \
+               distdir=../$(distdir)/$$subdir \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-hook
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-libcppunitincludeHEADERS
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libcppunitincludeHEADERS
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+       clean-generic clean-libtool clean-recursive ctags \
+       ctags-recursive distclean distclean-generic distclean-libtool \
+       distclean-recursive distclean-tags distdir dvi dvi-am \
+       dvi-recursive info info-am info-recursive install install-am \
+       install-data install-data-am install-data-recursive \
+       install-exec install-exec-am install-exec-recursive \
+       install-info install-info-am install-info-recursive \
+       install-libcppunitincludeHEADERS install-man install-recursive \
+       install-strip installcheck installcheck-am installdirs \
+       installdirs-am installdirs-recursive maintainer-clean \
+       maintainer-clean-generic maintainer-clean-recursive mostlyclean \
+       mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+       pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \
+       tags-recursive uninstall uninstall-am uninstall-info-am \
+       uninstall-info-recursive uninstall-libcppunitincludeHEADERS \
+       uninstall-recursive
+
+
+dist-hook:
+       rm -f $(distdir)/config-auto.h
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/include/cppunit/Message.h b/lib/cppunit-1.10.0/include/cppunit/Message.h
new file mode 100644 (file)
index 0000000..9b12431
--- /dev/null
@@ -0,0 +1,152 @@
+#ifndef CPPUNIT_MESSAGE_H
+#define CPPUNIT_MESSAGE_H
+
+#include <cppunit/Portability.h>
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( push )
+#pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
+#endif
+
+#include <cppunit/portability/CppUnitDeque.h>
+#include <string>
+
+
+CPPUNIT_NS_BEGIN
+
+
+#if CPPUNIT_NEED_DLL_DECL
+//  template class CPPUNIT_API std::deque<std::string>;
+#endif
+
+/*! \brief Message associated to an Exception.
+ * \ingroup CreatingNewAssertions
+ *  A message is composed of two items:
+ *  - a short description (~20/30 characters)
+ *  - a list of detail strings
+ *
+ *  The short description is used to indicate how the detail strings should be
+ *  interpreted. It usually indicates the failure types, such as
+ *  "assertion failed", "forced failure", "unexpected exception caught",
+ *  "equality assertion failed"... It should not contains new line character (\n).
+ *
+ *  Detail strings are used to provide more information about the failure. It
+ *  can contains the asserted expression, the expected and actual values in an
+ *  equality assertion, some addional messages... Detail strings can contains
+ *  new line characters (\n).
+ */
+class CPPUNIT_API Message
+{
+public:
+  Message();
+
+  explicit Message( const std::string &shortDescription );
+
+  Message( const std::string &shortDescription,
+           const std::string &detail1 );
+
+  Message( const std::string &shortDescription,
+           const std::string &detail1,
+           const std::string &detail2 );
+
+  Message( const std::string &shortDescription,
+           const std::string &detail1,
+           const std::string &detail2,
+           const std::string &detail3 );
+
+  /*! \brief Returns the short description.
+   * \return Short description.
+   */
+  const std::string &shortDescription() const;
+
+  /*! \brief Returns the number of detail string.
+   * \return Number of detail string.
+   */
+  int detailCount() const;
+
+  /*! \brief Returns the detail at the specified index.
+   * \param index Zero based index of the detail string to return.
+   * \returns Detail string at the specified index.
+   * \exception std::invalid_argument if \a index < 0 or index >= detailCount().
+   */
+  std::string detailAt( int index ) const;
+
+  /*! \brief Returns a string that represents a list of the detail strings.
+   *
+   * Example:
+   * \code
+   * Message message( "not equal", "Expected: 3", "Actual: 7" );
+   * std::string details = message.details();
+   * // details contains:
+   * // "- Expected: 3\n- Actual: 7\n"  \endcode
+   *
+   * \return A string that is a concatenation of all the detail strings. Each detail
+   *         string is prefixed with '- ' and suffixed with '\n' before being
+   *         concatenated to the other.
+   */
+  std::string details() const;
+
+  /*! \brief Removes all detail strings.
+   */
+  void clearDetails();
+
+  /*! \brief Adds a single detail string.
+   * \param detail Detail string to add.
+   */
+  void addDetail( const std::string &detail );
+
+  /*! \brief Adds two detail strings.
+   * \param detail1 Detail string to add.
+   * \param detail2 Detail string to add.
+   */
+  void addDetail( const std::string &detail1,
+                  const std::string &detail2 );
+
+  /*! \brief Adds three detail strings.
+   * \param detail1 Detail string to add.
+   * \param detail2 Detail string to add.
+   * \param detail3 Detail string to add.
+   */
+  void addDetail( const std::string &detail1,
+                  const std::string &detail2,
+                  const std::string &detail3 );
+
+  /*! \brief Adds the detail strings of the specified message.
+   * \param message All the detail strings of this message are added to this one.
+   */
+  void addDetail( const Message &message );
+
+  /*! \brief Sets the short description.
+   * \param shortDescription New short description.
+   */
+  void setShortDescription( const std::string &shortDescription );
+
+  /*! \brief Tests if a message is identical to another one.
+   * \param other Message this message is compared to.
+   * \return \c true if the two message are identical, \c false otherwise.
+   */
+  bool operator ==( const Message &other ) const;
+
+
+  /*! \brief Tests if a message is different from another one.
+   * \param other Message this message is compared to.
+   * \return \c true if the two message are not identical, \c false otherwise.
+   */
+  bool operator !=( const Message &other ) const;
+
+private:
+  std::string m_shortDescription;
+
+  typedef CppUnitDeque<std::string> Details;
+  Details m_details;
+};
+
+
+CPPUNIT_NS_END
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( pop )
+#endif
+
+
+#endif  // CPPUNIT_MESSAGE_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/Outputter.h b/lib/cppunit-1.10.0/include/cppunit/Outputter.h
new file mode 100644 (file)
index 0000000..f31d681
--- /dev/null
@@ -0,0 +1,26 @@
+#ifndef CPPUNIT_OUTPUTTER_H
+#define CPPUNIT_OUTPUTTER_H
+
+#include <cppunit/Portability.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief Abstract outputter to print test result summary.
+ * \ingroup WritingTestResult
+ */
+class CPPUNIT_API Outputter
+{
+public:
+  /// Destructor.
+  virtual ~Outputter() {}
+
+  virtual void write() =0;
+};
+
+
+CPPUNIT_NS_END
+
+
+#endif  // CPPUNIT_OUTPUTTER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/Portability.h b/lib/cppunit-1.10.0/include/cppunit/Portability.h
new file mode 100644 (file)
index 0000000..b2080e0
--- /dev/null
@@ -0,0 +1,209 @@
+#ifndef CPPUNIT_PORTABILITY_H
+#define CPPUNIT_PORTABILITY_H
+
+/* include platform specific config */
+#if defined(__BORLANDC__)
+#    include <cppunit/config/config-bcb5.h>
+#elif defined (_MSC_VER)
+#    include <cppunit/config/config-msvc6.h>
+#else
+#    include <cppunit/config-auto.h>
+#endif
+
+// Version number of package
+#ifndef CPPUNIT_VERSION 
+#define CPPUNIT_VERSION  "1.9.10" 
+#endif
+#include <cppunit/config/CppUnitApi.h>    // define CPPUNIT_API & CPPUNIT_NEED_DLL_DECL
+#include <cppunit/config/SelectDllLoader.h>
+
+
+/* Options that the library user may switch on or off.
+ * If the user has not done so, we chose default values.
+ */
+
+
+/* Define to 1 if you wish to have the old-style macros
+   assert(), assertEqual(), assertDoublesEqual(), and assertLongsEqual() */
+#if !defined(CPPUNIT_ENABLE_NAKED_ASSERT)
+# define CPPUNIT_ENABLE_NAKED_ASSERT          0
+#endif
+
+/* Define to 1 if you wish to have the old-style CU_TEST family
+   of macros. */
+#if !defined(CPPUNIT_ENABLE_CU_TEST_MACROS)
+# define CPPUNIT_ENABLE_CU_TEST_MACROS        0
+#endif
+
+/* Define to 1 if the preprocessor expands (#foo) to "foo" (quotes incl.) 
+   I don't think there is any C preprocess that does NOT support this! */
+#if !defined(CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION)
+# define CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION   1
+#endif
+
+/* Assumes that STL and CppUnit are in global space if the compiler does not
+   support namespace. */
+#if !defined(CPPUNIT_HAVE_NAMESPACES)
+# if !defined(CPPUNIT_NO_NAMESPACE)
+#  define CPPUNIT_NO_NAMESPACE 1
+# endif // !defined(CPPUNIT_NO_NAMESPACE)
+# if !defined(CPPUNIT_NO_STD_NAMESPACE)
+#  define CPPUNIT_NO_STD_NAMESPACE 1
+# endif // !defined(CPPUNIT_NO_STD_NAMESPACE)
+#endif // !defined(CPPUNIT_HAVE_NAMESPACES)
+
+/* Define CPPUNIT_STD_NEED_ALLOCATOR to 1 if you need to specify
+ * the allocator you used when instantiating STL container. Typically
+ * used for compilers that do not support template default parameter.
+ * CPPUNIT_STD_ALLOCATOR will be used as the allocator. Default is
+ * std::allocator. On some compilers, you may need to change this to
+ * std::allocator<T>.
+ */
+#if CPPUNIT_STD_NEED_ALLOCATOR
+# if !defined(CPPUNIT_STD_ALLOCATOR)
+#  define CPPUNIT_STD_ALLOCATOR std::allocator
+# endif // !defined(CPPUNIT_STD_ALLOCATOR)
+#endif // defined(CPPUNIT_STD_NEED_ALLOCATOR)
+
+
+// Compiler error location format for CompilerOutputter
+// If not define, assumes that it's gcc
+// See class CompilerOutputter for format.
+#if !defined(CPPUNIT_COMPILER_LOCATION_FORMAT)
+# define CPPUNIT_COMPILER_LOCATION_FORMAT "%f:%l:"
+#endif
+
+// If CPPUNIT_HAVE_CPP_CAST is defined, then c++ style cast will be used,
+// otherwise, C style cast are used.
+#if defined( CPPUNIT_HAVE_CPP_CAST )
+# define CPPUNIT_CONST_CAST( TargetType, pointer ) \
+    const_cast<TargetType>( pointer )
+
+# define CPPUNIT_STATIC_CAST( TargetType, pointer ) \
+    static_cast<TargetType>( pointer )
+#else // defined( CPPUNIT_HAVE_CPP_CAST )
+# define CPPUNIT_CONST_CAST( TargetType, pointer ) \
+    ((TargetType)( pointer ))
+# define CPPUNIT_STATIC_CAST( TargetType, pointer ) \
+    ((TargetType)( pointer ))
+#endif // defined( CPPUNIT_HAVE_CPP_CAST )
+
+// If CPPUNIT_NO_STD_NAMESPACE is defined then STL are in the global space.
+// => Define macro 'std' to nothing
+#if defined(CPPUNIT_NO_STD_NAMESPACE)
+# undef std
+# define std
+#endif  // defined(CPPUNIT_NO_STD_NAMESPACE)
+
+// If CPPUNIT_NO_NAMESPACE is defined, then put CppUnit classes in the
+// global namespace: the compiler does not support namespace.
+#if defined(CPPUNIT_NO_NAMESPACE)
+# define CPPUNIT_NS_BEGIN
+# define CPPUNIT_NS_END
+# define CPPUNIT_NS
+#else   // defined(CPPUNIT_NO_NAMESPACE)
+# define CPPUNIT_NS_BEGIN namespace CppUnit {
+# define CPPUNIT_NS_END }
+# define CPPUNIT_NS CppUnit
+#endif  // defined(CPPUNIT_NO_NAMESPACE)
+
+/*! Stringize a symbol.
+ * 
+ * Use this macro to convert a preprocessor symbol to a string.
+ *
+ * Example of usage:
+ * \code
+ * #define CPPUNIT_PLUGIN_EXPORTED_NAME cppunitTestPlugIn
+ * const char *name = CPPUNIT_STRINGIZE( CPPUNIT_PLUGIN_EXPORTED_NAME );
+ * \endcode
+ */
+#define CPPUNIT_STRINGIZE( symbol ) _CPPUNIT_DO_STRINGIZE( symbol )
+
+/// \internal
+#define _CPPUNIT_DO_STRINGIZE( symbol ) #symbol
+
+/*! Joins to symbol after expanding them into string.
+ *
+ * Use this macro to join two symbols. Example of usage:
+ *
+ * \code
+ * #define MAKE_UNIQUE_NAME(prefix) CPPUNIT_JOIN( prefix, __LINE__ )
+ * \endcode
+ *
+ * The macro defined in the example concatenate a given prefix with the line number
+ * to obtain a 'unique' identifier.
+ *
+ * \internal From boost documentation:
+ * The following piece of macro magic joins the two 
+ * arguments together, even when one of the arguments is
+ * itself a macro (see 16.3.1 in C++ standard).  The key
+ * is that macro expansion of macro arguments does not
+ * occur in CPPUNIT_JOIN2 but does in CPPUNIT_JOIN.
+ */
+#define CPPUNIT_JOIN( symbol1, symbol2 ) _CPPUNIT_DO_JOIN( symbol1, symbol2 )
+
+/// \internal
+#define _CPPUNIT_DO_JOIN( symbol1, symbol2 ) _CPPUNIT_DO_JOIN2( symbol1, symbol2 )
+
+/// \internal
+#define _CPPUNIT_DO_JOIN2( symbol1, symbol2 ) symbol1##symbol2
+
+/*! Adds the line number to the specified string to create a unique identifier.
+ * \param prefix Prefix added to the line number to create a unique identifier.
+ * \see CPPUNIT_TEST_SUITE_REGISTRATION for an example of usage.
+ */
+#define CPPUNIT_MAKE_UNIQUE_NAME( prefix ) CPPUNIT_JOIN( prefix, __LINE__ )
+
+/*! Defines wrap colunm for %CppUnit. Used by CompilerOuputter.
+ */
+#if !defined(CPPUNIT_WRAP_COLUMN)
+# define CPPUNIT_WRAP_COLUMN 79
+#endif
+
+
+/* perform portability hacks */
+
+
+/* Define CPPUNIT_SSTREAM as a stream with a "std::string str()"
+ * method.
+ */
+#if CPPUNIT_HAVE_SSTREAM
+# include <sstream>
+    CPPUNIT_NS_BEGIN
+
+    typedef std::ostringstream OStringStream;
+
+    CPPUNIT_NS_END
+#elif CPPUNIT_HAVE_CLASS_STRSTREAM
+# include <string>
+# if CPPUNIT_HAVE_STRSTREAM
+#   include <strstream>
+# else // CPPUNIT_HAVE_STRSTREAM
+#  include <strstream.h>
+# endif // CPPUNIT_HAVE_CLASS_STRSTREAM
+
+    CPPUNIT_NS_BEGIN
+
+      class OStringStream : public std::ostrstream 
+      {
+      public:
+          std::string str()
+          {
+//            (*this) << '\0';
+//            std::string msg(std::ostrstream::str());
+//            std::ostrstream::freeze(false);
+//            return msg;
+// Alternative implementation that don't rely on freeze which is not
+// available on some platforms:
+            return std::string( std::ostrstream::str(), pcount() );
+          }
+      };
+
+    CPPUNIT_NS_END
+#else // CPPUNIT_HAVE_CLASS_STRSTREAM
+#   error Cannot define CppUnit::OStringStream.
+#endif // CPPUNIT_HAVE_SSTREAM
+
+
+#endif // CPPUNIT_PORTABILITY_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/Protector.h b/lib/cppunit-1.10.0/include/cppunit/Protector.h
new file mode 100644 (file)
index 0000000..d14e75f
--- /dev/null
@@ -0,0 +1,94 @@
+#ifndef CPPUNIT_PROTECTOR_H
+#define CPPUNIT_PROTECTOR_H
+
+#include <cppunit/SourceLine.h>
+
+CPPUNIT_NS_BEGIN
+
+class Exception;
+class Message;
+class ProtectorContext;
+class TestResult;
+
+
+class CPPUNIT_API Functor
+{
+public:
+  virtual ~Functor();
+
+  virtual bool operator()() const =0;
+};
+
+
+/*! \brief Protects one or more test case run.
+ *
+ * Protector are used to globably 'decorate' a test case. The most common
+ * usage of Protector is to catch exception that do not subclass std::exception,
+ * such as MFC CException class or Rogue Wave RWXMsg class, and capture the
+ * message associated to the exception. In fact, CppUnit capture message from
+ * Exception and std::exception using a Protector.
+ *
+ * Protector are chained. When you add a Protector using 
+ * TestResult::pushProtector(), your protector is in fact passed as a Functor
+ * to the first protector of the chain.
+ *
+ * TestCase protects call to setUp(), runTest() and tearDown() by calling
+ * TestResult::protect().
+ *
+ * Because the protector chain is handled by TestResult, a protector can be
+ * active for a single test, or a complete test run.
+ *
+ * Here are some possible usages:
+ * - run all test case in a separate thread and assumes the test failed if it
+ *   did not finish in a given time (infinite loop work around)
+ * - performance tracing : time only the runTest() time.
+ * \sa TestResult, TestCase, TestListener.
+ */
+class CPPUNIT_API Protector
+{
+public:
+  virtual ~Protector();
+  
+  virtual bool protect( const Functor &functor,
+                        const ProtectorContext &context ) =0;
+
+protected:
+  void reportError( const ProtectorContext &context,
+                    const Exception &error ) const;
+
+  void reportError( const ProtectorContext &context,
+                    const Message &message,
+                    const SourceLine &sourceLine = SourceLine() ) const;
+
+  void reportFailure( const ProtectorContext &context,
+                      const Exception &failure ) const;
+
+  Message actualMessage( const Message &message,
+                         const ProtectorContext &context ) const;
+};
+
+
+/*! \brief Scoped protector push to TestResult.
+ *
+ * Adds the specified Protector to the specified TestResult for the object
+ * life-time.
+ */
+class CPPUNIT_API ProtectorGuard
+{
+public:
+  /// Pushes the specified protector.
+  ProtectorGuard( TestResult *result,
+                  Protector *protector );
+
+  /// Pops the protector.
+  ~ProtectorGuard();
+
+private:
+  TestResult *m_result;
+};
+
+CPPUNIT_NS_END
+
+
+#endif // CPPUNIT_PROTECTOR_H
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/SourceLine.h b/lib/cppunit-1.10.0/include/cppunit/SourceLine.h
new file mode 100644 (file)
index 0000000..71eeaed
--- /dev/null
@@ -0,0 +1,58 @@
+#ifndef CPPUNIT_SOURCELINE_H
+#define CPPUNIT_SOURCELINE_H
+
+#include <cppunit/Portability.h>
+#include <string>
+
+/*! \brief Constructs a SourceLine object initialized with the location where the macro is expanded.
+ * \ingroup CreatingNewAssertions
+ * \relates CppUnit::SourceLine
+ * Used to write your own assertion macros.
+ * \see Asserter for example of usage.
+ */
+#define CPPUNIT_SOURCELINE() CPPUNIT_NS::SourceLine( __FILE__, __LINE__ )
+
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief Represents a source line location.
+ * \ingroup CreatingNewAssertions
+ * \ingroup BrowsingCollectedTestResult
+ *
+ * Used to capture the failure location in assertion.
+ * 
+ * Use the CPPUNIT_SOURCELINE() macro to construct that object. Typically used when
+ * writing an assertion macro in association with Asserter.
+ *
+ * \see Asserter.
+ */
+class CPPUNIT_API SourceLine
+{
+public:
+  SourceLine();
+
+  SourceLine( const std::string &fileName,
+              int lineNumber );
+
+  /// Destructor.
+  virtual ~SourceLine();
+
+  bool isValid() const;
+
+  int lineNumber() const;
+
+  std::string fileName() const;
+
+  bool operator ==( const SourceLine &other ) const;
+  bool operator !=( const SourceLine &other ) const;
+
+private:
+  std::string m_fileName;
+  int m_lineNumber;
+};
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_SOURCELINE_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/SynchronizedObject.h b/lib/cppunit-1.10.0/include/cppunit/SynchronizedObject.h
new file mode 100644 (file)
index 0000000..0f7d094
--- /dev/null
@@ -0,0 +1,80 @@
+#ifndef CPPUNIT_SYNCHRONIZEDOBJECT_H
+#define CPPUNIT_SYNCHRONIZEDOBJECT_H
+
+#include <cppunit/Portability.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief Base class for synchronized object.
+ *
+ * Synchronized object are object which members are used concurrently by mutiple
+ * threads.
+ *
+ * This class define the class SynchronizationObject which must be subclassed
+ * to implement an actual lock.
+ *
+ * Each instance of this class holds a pointer on a lock object.
+ *
+ * See src/msvc6/MfcSynchronizedObject.h for an example.
+ */
+class CPPUNIT_API SynchronizedObject
+{
+public:
+  /*! \brief Abstract synchronization object (mutex)
+   */
+  class SynchronizationObject
+  {
+    public:
+      SynchronizationObject() {}
+      virtual ~SynchronizationObject() {}
+
+      virtual void lock() {}
+      virtual void unlock() {}
+  };
+
+  /*! Constructs a SynchronizedObject object.
+   */
+  SynchronizedObject( SynchronizationObject *syncObject =0 );
+
+  /// Destructor.
+  virtual ~SynchronizedObject();
+
+protected:
+  /*! \brief Locks a synchronization object in the current scope.
+   */
+  class ExclusiveZone
+  {
+    SynchronizationObject *m_syncObject;
+
+  public:
+    ExclusiveZone( SynchronizationObject *syncObject ) 
+        : m_syncObject( syncObject ) 
+    { 
+      m_syncObject->lock(); 
+    }
+
+    ~ExclusiveZone() 
+    { 
+      m_syncObject->unlock (); 
+    }
+  };
+
+  virtual void setSynchronizationObject( SynchronizationObject *syncObject );
+
+protected:
+  SynchronizationObject *m_syncObject;
+
+private:
+  /// Prevents the use of the copy constructor.
+  SynchronizedObject( const SynchronizedObject &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const SynchronizedObject &copy );
+};
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_SYNCHRONIZEDOBJECT_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/Test.h b/lib/cppunit-1.10.0/include/cppunit/Test.h
new file mode 100644 (file)
index 0000000..a56be0f
--- /dev/null
@@ -0,0 +1,117 @@
+#ifndef CPPUNIT_TEST_H
+#define CPPUNIT_TEST_H
+
+#include <cppunit/Portability.h>
+#include <string>
+
+CPPUNIT_NS_BEGIN
+
+
+class TestResult;
+class TestPath;
+
+/*! \brief Base class for all test objects.
+ * \ingroup BrowsingCollectedTestResult
+ *
+ * All test objects should be a subclass of Test.  Some test objects,
+ * TestCase for example, represent one individual test.  Other test
+ * objects, such as TestSuite, are comprised of several tests.  
+ *
+ * When a Test is run, the result is collected by a TestResult object.
+ *
+ * \see TestCase
+ * \see TestSuite
+ */
+class CPPUNIT_API Test
+{
+public:
+  virtual ~Test() {};
+
+  /*! \brief Run the test, collecting results.
+   */
+  virtual void run( TestResult *result ) =0;
+
+  /*! \brief Return the number of test cases invoked by run().
+   *
+   * The base unit of testing is the class TestCase.  This
+   * method returns the number of TestCase objects invoked by
+   * the run() method.
+   */
+  virtual int countTestCases () const =0;
+
+  /*! \brief Returns the number of direct child of the test.
+   */
+  virtual int getChildTestCount() const =0;
+
+  /*! \brief Returns the child test of the specified index.
+   *
+   * This method test if the index is valid, then call doGetChildTestAt() if 
+   * the index is valid. Otherwise std::out_of_range exception is thrown.
+   *
+   * You should override doGetChildTestAt() method.
+   * 
+   * \param index Zero based index of the child test to return.
+   * \return Pointer on the test. Never \c NULL.
+   * \exception std::out_of_range is \a index is < 0 or >= getChildTestCount().
+   */
+  virtual Test *getChildTestAt( int index ) const;
+
+  /*! \brief Returns the test name.
+   * 
+   * Each test has a name.  This name may be used to find the
+   * test in a suite or registry of tests.
+   */
+  virtual std::string getName () const =0;
+
+  /*! \brief Finds the test with the specified name and its parents test.
+   * \param testName Name of the test to find.
+   * \param testPath If the test is found, then all the tests traversed to access
+   *                 \a test are added to \a testPath, including \c this and \a test.
+   * \return \c true if a test with the specified name is found, \c false otherwise.
+   */
+  virtual bool findTestPath( const std::string &testName,
+                             TestPath &testPath ) const;
+
+  /*! \brief Finds the specified test and its parents test.
+   * \param test Test to find.
+   * \param testPath If the test is found, then all the tests traversed to access
+   *                 \a test are added to \a testPath, including \c this and \a test.
+   * \return \c true if the specified test is found, \c false otherwise.
+   */
+  virtual bool findTestPath( const Test *test,
+                             TestPath &testPath ) const;
+
+  /*! \brief Finds the test with the specified name in the hierarchy.
+   * \param testName Name of the test to find.
+   * \return Pointer on the first test found that is named \a testName. Never \c NULL.
+   * \exception std::invalid_argument if no test named \a testName is found.
+   */
+  virtual Test *findTest( const std::string &testName ) const;
+
+  /*! \brief Resolved the specified test path with this test acting as 'root'.
+   * \param testPath Test path string to resolve.
+   * \return Resolved TestPath. 
+   * \exception std::invalid_argument if \a testPath could not be resolved.
+   * \see TestPath.
+   */
+  virtual TestPath resolveTestPath( const std::string &testPath ) const;
+
+protected:
+  /*! Throws an exception if the specified index is invalid.
+   * \param index Zero base index of a child test.
+   * \exception std::out_of_range is \a index is < 0 or >= getChildTestCount().
+   */
+  virtual void checkIsValidIndex( int index ) const;
+
+  /*! \brief Returns the child test of the specified valid index.
+   * \param index Zero based valid index of the child test to return.
+   * \return Pointer on the test. Never \c NULL.
+   */
+  virtual Test *doGetChildTestAt( int index ) const =0;
+};
+
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_TEST_H
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/TestAssert.h b/lib/cppunit-1.10.0/include/cppunit/TestAssert.h
new file mode 100644 (file)
index 0000000..695ccb5
--- /dev/null
@@ -0,0 +1,289 @@
+#ifndef CPPUNIT_TESTASSERT_H
+#define CPPUNIT_TESTASSERT_H
+
+#include <cppunit/Portability.h>
+#include <cppunit/Exception.h>
+#include <cppunit/Asserter.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief Traits used by CPPUNIT_ASSERT_EQUAL().
+ *
+ * Here is an example of specialization of that traits:
+ *
+ * \code
+ * template<>
+ * struct assertion_traits<std::string>   // specialization for the std::string type
+ * {
+ *   static bool equal( const std::string& x, const std::string& y )
+ *   {
+ *     return x == y;
+ *   }
+ * 
+ *   static std::string toString( const std::string& x )
+ *   {
+ *     std::string text = '"' + x + '"';    // adds quote around the string to see whitespace
+ *     OStringStream ost;
+ *     ost << text;
+ *     return ost.str();
+ *   }
+ * };
+ * \endcode
+ */
+template <class T>
+struct assertion_traits 
+{  
+    static bool equal( const T& x, const T& y )
+    {
+        return x == y;
+    }
+
+    static std::string toString( const T& x )
+    {
+        OStringStream ost;
+        ost << x;
+        return ost.str();
+    }
+};
+
+
+/*! \brief (Implementation) Asserts that two objects of the same type are equals.
+ * Use CPPUNIT_ASSERT_EQUAL instead of this function.
+ * \sa assertion_traits, Asserter::failNotEqual().
+ */
+template <class T>
+void assertEquals( const T& expected,
+                   const T& actual,
+                   SourceLine sourceLine,
+                   const std::string &message )
+{
+  if ( !assertion_traits<T>::equal(expected,actual) ) // lazy toString conversion...
+  {
+    Asserter::failNotEqual( assertion_traits<T>::toString(expected),
+                            assertion_traits<T>::toString(actual),
+                            sourceLine,
+                            message );
+  }
+}
+
+/*! \brief (Implementation) Asserts that two double are equals given a tolerance.
+ * Use CPPUNIT_ASSERT_DOUBLES_EQUAL instead of this function.
+ * \sa Asserter::failNotEqual().
+ */
+void CPPUNIT_API assertDoubleEquals( double expected,
+                                     double actual,
+                                     double delta,
+                                     SourceLine sourceLine );
+
+
+/* A set of macros which allow us to get the line number
+ * and file name at the point of an error.
+ * Just goes to show that preprocessors do have some
+ * redeeming qualities.
+ */
+#if CPPUNIT_HAVE_CPP_SOURCE_ANNOTATION
+/** Assertions that a condition is \c true.
+ * \ingroup Assertions
+ */
+#define CPPUNIT_ASSERT(condition)                                                 \
+  ( CPPUNIT_NS::Asserter::failIf( !(condition),                                   \
+                                 CPPUNIT_NS::Message( "assertion failed",         \
+                                                      "Expression: " #condition), \
+                                 CPPUNIT_SOURCELINE() ) )
+#else
+#define CPPUNIT_ASSERT(condition)                                            \
+  ( CPPUNIT_NS::Asserter::failIf( !(condition),                              \
+                                  CPPUNIT_NS::Message( "assertion failed" ), \
+                                  CPPUNIT_SOURCELINE() ) )
+#endif
+
+/** Assertion with a user specified message.
+ * \ingroup Assertions
+ * \param message Message reported in diagnostic if \a condition evaluates
+ *                to \c false.
+ * \param condition If this condition evaluates to \c false then the
+ *                  test failed.
+ */
+#define CPPUNIT_ASSERT_MESSAGE(message,condition)          \
+  ( CPPUNIT_NS::Asserter::failIf( !(condition),            \
+                                  (message),               \
+                                  CPPUNIT_SOURCELINE() ) )
+
+/** Fails with the specified message.
+ * \ingroup Assertions
+ * \param message Message reported in diagnostic.
+ */
+#define CPPUNIT_FAIL( message )                                         \
+  ( CPPUNIT_NS::Asserter::fail( CPPUNIT_NS::Message( "forced failure",  \
+                                                     message ),         \
+                                CPPUNIT_SOURCELINE() ) )
+
+#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED
+/// Generalized macro for primitive value comparisons
+#define CPPUNIT_ASSERT_EQUAL(expected,actual)                     \
+  ( CPPUNIT_NS::assertEquals( (expected),             \
+                              (actual),               \
+                              __LINE__, __FILE__ ) )
+#else
+/** Asserts that two values are equals.
+ * \ingroup Assertions
+ *
+ * Equality and string representation can be defined with
+ * an appropriate CppUnit::assertion_traits class.
+ *
+ * A diagnostic is printed if actual and expected values disagree.
+ *
+ * Requirement for \a expected and \a actual parameters:
+ * - They are exactly of the same type
+ * - They are serializable into a std::strstream using operator <<.
+ * - They can be compared using operator ==. 
+ *
+ * The last two requirements (serialization and comparison) can be
+ * removed by specializing the CppUnit::assertion_traits.
+ */
+#define CPPUNIT_ASSERT_EQUAL(expected,actual)          \
+  ( CPPUNIT_NS::assertEquals( (expected),              \
+                              (actual),                \
+                              CPPUNIT_SOURCELINE(),    \
+                              "" ) )
+
+/** Asserts that two values are equals, provides additional messafe on failure.
+ * \ingroup Assertions
+ *
+ * Equality and string representation can be defined with
+ * an appropriate assertion_traits class.
+ *
+ * A diagnostic is printed if actual and expected values disagree.
+ * The message is printed in addition to the expected and actual value
+ * to provide additional information.
+ *
+ * Requirement for \a expected and \a actual parameters:
+ * - They are exactly of the same type
+ * - They are serializable into a std::strstream using operator <<.
+ * - They can be compared using operator ==. 
+ *
+ * The last two requirements (serialization and comparison) can be
+ * removed by specializing the CppUnit::assertion_traits.
+ */
+#define CPPUNIT_ASSERT_EQUAL_MESSAGE(message,expected,actual)      \
+  ( CPPUNIT_NS::assertEquals( (expected),              \
+                              (actual),                \
+                              CPPUNIT_SOURCELINE(),    \
+                              (message) ) )
+#endif
+
+/*! \brief Macro for primitive value comparisons
+ * \ingroup Assertions
+ */
+#define CPPUNIT_ASSERT_DOUBLES_EQUAL(expected,actual,delta)        \
+  ( CPPUNIT_NS::assertDoubleEquals( (expected),        \
+                                    (actual),          \
+                                    (delta),           \
+                                    CPPUNIT_SOURCELINE() ) )
+
+
+/** Asserts that the given expression throws an exception of the specified type.
+ * \ingroup Assertions
+ * Example of usage:
+ * \code
+ *   std::vector<int> v;
+ *  CPPUNIT_ASSERT_THROW( v.at( 50 ), std::out_of_range );
+ * \endcode
+ */
+# define CPPUNIT_ASSERT_THROW( expression, ExceptionType )          \
+   do {                                                             \
+      bool cpputExceptionThrown_ = false;                           \
+      try {                                                         \
+         expression;                                                \
+      } catch ( const ExceptionType & ) {                           \
+         cpputExceptionThrown_ = true;                              \
+      }                                                             \
+                                                                    \
+      if ( cpputExceptionThrown_ )                                  \
+         break;                                                     \
+                                                                    \
+      CPPUNIT_NS::Asserter::fail(                                   \
+                     "Expected exception: " #ExceptionType          \
+                     " not thrown.",                                \
+                     CPPUNIT_SOURCELINE() );                        \
+   } while ( false )
+
+
+// implementation detail
+#if CPPUNIT_USE_TYPEINFO_NAME
+#define CPPUNIT_EXTRACT_EXCEPTION_TYPE_( exception, no_rtti_message ) \
+   CPPUNIT_NS::TypeInfoHelper::getClassName( typeid(exception) )
+#else
+#define CPPUNIT_EXTRACT_EXCEPTION_TYPE_( exception, no_rtti_message ) \
+   std::string( no_rtti_message )
+#endif // CPPUNIT_USE_TYPEINFO_NAME
+
+/** Asserts that the given expression does not throw any exceptions.
+ * \ingroup Assertions
+ * Example of usage:
+ * \code
+ *   std::vector<int> v;
+ *   v.push_back( 10 );
+ *  CPPUNIT_ASSERT_NO_THROW( v.at( 0 ) );
+ * \endcode
+ */
+# define CPPUNIT_ASSERT_NO_THROW( expression )                             \
+   try {                                                                   \
+      expression;                                                          \
+   } catch ( const std::exception &e ) {                                   \
+      CPPUNIT_NS::Message message( "Unexpected exception caught" );        \
+      message.addDetail( "Type: " +                                        \
+                   CPPUNIT_EXTRACT_EXCEPTION_TYPE_( e,                     \
+                                       "std::exception or derived" ) );    \
+      message.addDetail( std::string("What: ") + e.what() );               \
+      CPPUNIT_NS::Asserter::fail( message,                                 \
+                                  CPPUNIT_SOURCELINE() );                  \
+   } catch ( ... ) {                                                       \
+      CPPUNIT_NS::Asserter::fail( "Unexpected exception caught",           \
+                                  CPPUNIT_SOURCELINE() );                  \
+   }
+
+/** Asserts that an assertion fail.
+ * \ingroup Assertions
+ * Use to test assertions.
+ * Example of usage:
+ * \code
+ *   CPPUNIT_ASSERT_ASSERTION_FAIL( CPPUNIT_ASSERT( 1 == 2 ) );
+ * \endcode
+ */
+# define CPPUNIT_ASSERT_ASSERTION_FAIL( assertion )                 \
+   CPPUNIT_ASSERT_THROW( assertion, CPPUNIT_NS::Exception )
+
+
+/** Asserts that an assertion pass.
+ * \ingroup Assertions
+ * Use to test assertions.
+ * Example of usage:
+ * \code
+ *   CPPUNIT_ASSERT_ASSERTION_PASS( CPPUNIT_ASSERT( 1 == 1 ) );
+ * \endcode
+ */
+# define CPPUNIT_ASSERT_ASSERTION_PASS( assertion )                 \
+   CPPUNIT_ASSERT_NO_THROW( assertion )
+
+
+
+
+// Backwards compatibility
+
+#if CPPUNIT_ENABLE_NAKED_ASSERT
+
+#undef assert
+#define assert(c)                 CPPUNIT_ASSERT(c)
+#define assertEqual(e,a)          CPPUNIT_ASSERT_EQUAL(e,a)
+#define assertDoublesEqual(e,a,d) CPPUNIT_ASSERT_DOUBLES_EQUAL(e,a,d)
+#define assertLongsEqual(e,a)     CPPUNIT_ASSERT_EQUAL(e,a)
+
+#endif
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_TESTASSERT_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/TestCaller.h b/lib/cppunit-1.10.0/include/cppunit/TestCaller.h
new file mode 100644 (file)
index 0000000..dc4d82e
--- /dev/null
@@ -0,0 +1,204 @@
+#ifndef CPPUNIT_TESTCALLER_H    // -*- C++ -*-
+#define CPPUNIT_TESTCALLER_H
+
+#include <cppunit/Exception.h>
+#include <cppunit/TestCase.h>
+
+
+#if CPPUNIT_USE_TYPEINFO_NAME
+#  include <cppunit/extensions/TypeInfoHelper.h>
+#endif
+
+
+CPPUNIT_NS_BEGIN
+
+#if 0
+/*! \brief Marker class indicating that no exception is expected by TestCaller.
+ * This class is an implementation detail. You should never use this class directly.
+ */
+class CPPUNIT_API NoExceptionExpected
+{
+private:
+  //! Prevent class instantiation.
+  NoExceptionExpected();
+};
+
+
+/*! \brief (Implementation) Traits used by TestCaller to expect an exception.
+ *
+ * This class is an implementation detail. You should never use this class directly.
+ */
+template<class ExceptionType>
+struct ExpectedExceptionTraits
+{
+  static void expectedException()
+  {
+#if CPPUNIT_USE_TYPEINFO_NAME
+    throw Exception( Message(
+                         "expected exception not thrown",
+                         "Expected exception type: " + 
+                           TypeInfoHelper::getClassName( typeid( ExceptionType ) ) ) );
+#else
+    throw Exception( "expected exception not thrown" );
+#endif
+  }
+};
+
+
+/*! \brief (Implementation) Traits specialization used by TestCaller to 
+ * expect no exception.
+ *
+ * This class is an implementation detail. You should never use this class directly.
+ */
+template<>
+struct ExpectedExceptionTraits<NoExceptionExpected>
+{
+  static void expectedException()
+  {
+  }
+};
+
+
+#endif
+
+//*** FIXME: rework this when class Fixture is implemented. ***//
+
+
+/*! \brief Generate a test case from a fixture method.
+ * \ingroup WritingTestFixture
+ *
+ * A test caller provides access to a test case method 
+ * on a test fixture class.  Test callers are useful when 
+ * you want to run an individual test or add it to a 
+ * suite.
+ * Test Callers invoke only one Test (i.e. test method) on one 
+ * Fixture of a TestFixture.
+ * 
+ * Here is an example:
+ * \code
+ * class MathTest : public CppUnit::TestFixture {
+ *         ...
+ *     public:
+ *         void         setUp();
+ *         void         tearDown();
+ *
+ *         void         testAdd();
+ *         void         testSubtract();
+ * };
+ *
+ * CppUnit::Test *MathTest::suite() {
+ *     CppUnit::TestSuite *suite = new CppUnit::TestSuite;
+ *
+ *     suite->addTest( new CppUnit::TestCaller<MathTest>( "testAdd", testAdd ) );
+ *     return suite;
+ * }
+ * \endcode
+ *
+ * You can use a TestCaller to bind any test method on a TestFixture
+ * class, as long as it accepts void and returns void.
+ * 
+ * \see TestCase
+ */
+
+template <class Fixture>
+class TestCaller : public TestCase
+{ 
+  typedef void (Fixture::*TestMethod)();
+    
+public:
+  /*!
+   * Constructor for TestCaller. This constructor builds a new Fixture
+   * instance owned by the TestCaller.
+   * \param name name of this TestCaller
+   * \param test the method this TestCaller calls in runTest()
+   */
+  TestCaller( std::string name, TestMethod test ) :
+           TestCase( name ), 
+           m_ownFixture( true ),
+           m_fixture( new Fixture() ),
+           m_test( test )
+  {
+  }
+
+  /*!
+   * Constructor for TestCaller. 
+   * This constructor does not create a new Fixture instance but accepts
+   * an existing one as parameter. The TestCaller will not own the
+   * Fixture object.
+   * \param name name of this TestCaller
+   * \param test the method this TestCaller calls in runTest()
+   * \param fixture the Fixture to invoke the test method on.
+   */
+  TestCaller(std::string name, TestMethod test, Fixture& fixture) :
+           TestCase( name ), 
+           m_ownFixture( false ),
+           m_fixture( &fixture ),
+           m_test( test )
+  {
+  }
+    
+  /*!
+   * Constructor for TestCaller. 
+   * This constructor does not create a new Fixture instance but accepts
+   * an existing one as parameter. The TestCaller will own the
+   * Fixture object and delete it in its destructor.
+   * \param name name of this TestCaller
+   * \param test the method this TestCaller calls in runTest()
+   * \param fixture the Fixture to invoke the test method on.
+   */
+  TestCaller(std::string name, TestMethod test, Fixture* fixture) :
+           TestCase( name ), 
+           m_ownFixture( true ),
+           m_fixture( fixture ),
+           m_test( test )
+  {
+  }
+    
+  ~TestCaller() 
+  {
+    if (m_ownFixture)
+      delete m_fixture;
+  }
+
+  void runTest()
+  { 
+//       try {
+           (m_fixture->*m_test)();
+//       }
+//       catch ( ExpectedException & ) {
+//         return;
+//       }
+
+//     ExpectedExceptionTraits<ExpectedException>::expectedException();
+  }  
+
+  void setUp()
+  { 
+       m_fixture->setUp (); 
+  }
+
+  void tearDown()
+  { 
+         m_fixture->tearDown (); 
+  }
+
+  std::string toString() const
+  { 
+       return "TestCaller " + getName(); 
+  }
+
+private: 
+  TestCaller( const TestCaller &other ); 
+  TestCaller &operator =( const TestCaller &other );
+
+private:
+  bool m_ownFixture;
+  Fixture *m_fixture;
+  TestMethod m_test;
+};
+
+
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_TESTCALLER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/TestCase.h b/lib/cppunit-1.10.0/include/cppunit/TestCase.h
new file mode 100644 (file)
index 0000000..d4b7a46
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef CPPUNIT_TESTCASE_H
+#define CPPUNIT_TESTCASE_H
+
+#include <cppunit/Portability.h>
+#include <cppunit/TestLeaf.h>
+#include <cppunit/TestAssert.h>
+#include <cppunit/TestFixture.h>
+#include <string>
+
+
+CPPUNIT_NS_BEGIN
+
+
+class TestResult;
+
+
+/*! \brief A single test object.
+ *
+ * This class is used to implement a simple test case: define a subclass
+ * that overrides the runTest method.
+ *
+ * You don't usually need to use that class, but TestFixture and TestCaller instead.
+ *
+ * You are expected to subclass TestCase is you need to write a class similiar
+ * to TestCaller.
+ */
+class CPPUNIT_API TestCase : public TestLeaf,
+                             public TestFixture
+{
+public:
+
+    TestCase( const std::string &name );
+
+    TestCase();
+
+    ~TestCase();
+    
+    virtual void run(TestResult *result);
+
+    std::string getName() const;
+
+    //! FIXME: this should probably be pure virtual.
+    virtual void runTest();
+    
+private:
+    TestCase( const TestCase &other ); 
+    TestCase &operator=( const TestCase &other ); 
+    
+private:
+    const std::string m_name;
+};
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_TESTCASE_H 
diff --git a/lib/cppunit-1.10.0/include/cppunit/TestComposite.h b/lib/cppunit-1.10.0/include/cppunit/TestComposite.h
new file mode 100644 (file)
index 0000000..0ded95f
--- /dev/null
@@ -0,0 +1,45 @@
+#ifndef CPPUNIT_TESTCOMPSITE_H    // -*- C++ -*-
+#define CPPUNIT_TESTCOMPSITE_H
+
+#include <cppunit/Test.h>
+#include <string>
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief A Composite of Tests.
+ *
+ * Base class for all test composites. Subclass this class if you need to implement
+ * a custom TestSuite.
+ * 
+ * \see Test, TestSuite.
+ */
+class CPPUNIT_API TestComposite : public Test
+{
+public:
+  TestComposite( const std::string &name = "" );
+
+  ~TestComposite();
+
+  void run( TestResult *result );
+
+  int countTestCases() const;
+  
+  std::string getName() const;
+
+private:
+  TestComposite( const TestComposite &other );
+  TestComposite &operator =( const TestComposite &other ); 
+
+  virtual void doStartSuite( TestResult *controller );
+  virtual void doRunChildTests( TestResult *controller );
+  virtual void doEndSuite( TestResult *controller );
+
+private:
+  const std::string m_name;
+};
+
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_TESTCOMPSITE_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/TestFailure.h b/lib/cppunit-1.10.0/include/cppunit/TestFailure.h
new file mode 100644 (file)
index 0000000..6419979
--- /dev/null
@@ -0,0 +1,58 @@
+#ifndef CPPUNIT_TESTFAILURE_H    // -*- C++ -*-
+#define CPPUNIT_TESTFAILURE_H
+
+#include <cppunit/Portability.h>
+#include <string>
+
+CPPUNIT_NS_BEGIN
+
+
+class Exception;
+class SourceLine;
+class Test;
+
+
+/*! \brief Record of a failed Test execution.
+ * \ingroup BrowsingCollectedTestResult
+ *
+ * A TestFailure collects a failed test together with
+ * the caught exception.
+ *
+ * TestFailure assumes lifetime control for any exception
+ * passed to it.
+ */
+class CPPUNIT_API TestFailure 
+{
+public:
+  TestFailure( Test *failedTest,
+               Exception *thrownException,
+               bool isError );
+
+  virtual ~TestFailure ();
+
+  virtual Test *failedTest() const;
+
+  virtual Exception *thrownException() const;
+
+  virtual SourceLine sourceLine() const;
+
+  virtual bool isError() const;
+
+  virtual std::string failedTestName() const;
+
+  virtual TestFailure *clone() const;
+
+protected:
+  Test *m_failedTest;
+  Exception *m_thrownException;
+  bool m_isError;
+
+private: 
+  TestFailure( const TestFailure &other ); 
+  TestFailure &operator =( const TestFailure& other ); 
+};
+
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_TESTFAILURE_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/TestFixture.h b/lib/cppunit-1.10.0/include/cppunit/TestFixture.h
new file mode 100644 (file)
index 0000000..1223adb
--- /dev/null
@@ -0,0 +1,99 @@
+#ifndef CPPUNIT_TESTFIXTURE_H    // -*- C++ -*-
+#define CPPUNIT_TESTFIXTURE_H
+
+#include <cppunit/Portability.h>
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief Wraps a test case with setUp and tearDown methods.
+ * \ingroup WritingTestFixture
+ *
+ * A TestFixture is used to provide a common environment for a set
+ * of test cases.
+ *
+ * To define a test fixture, do the following:
+ * - implement a subclass of TestCase 
+ * - the fixture is defined by instance variables 
+ * - initialize the fixture state by overriding setUp
+ *   (i.e. construct the instance variables of the fixture)
+ * - clean-up after a test by overriding tearDown.
+ *
+ * Each test runs in its own fixture so there
+ * can be no side effects among test runs.
+ * Here is an example:
+ * 
+ * \code
+ * class MathTest : public CppUnit::TestFixture {
+ * protected:
+ *   int m_value1, m_value2;
+ *
+ * public:
+ *   MathTest() {}
+ *
+ *   void setUp () {
+ *     m_value1 = 2;
+ *     m_value2 = 3;
+ *   }
+ * }
+ * \endcode
+ *
+ * For each test implement a method which interacts
+ * with the fixture. Verify the expected results with assertions specified
+ * by calling CPPUNIT_ASSERT on the expression you want to test:
+ * 
+ * \code
+ * public: 
+ *   void testAdd () {
+ *     int result = m_value1 + m_value2;
+ *     CPPUNIT_ASSERT( result == 5 );
+ *   }
+ * \endcode
+ * 
+ * Once the methods are defined you can run them. To do this, use
+ * a TestCaller.
+ *
+ * \code
+ * CppUnit::Test *test = new CppUnit::TestCaller<MathTest>( "testAdd", 
+ *                                                          &MathTest::testAdd );
+ * test->run();
+ * \endcode
+ *
+ *
+ * The tests to be run can be collected into a TestSuite. 
+ * 
+ * \code
+ * public: 
+ *   static CppUnit::TestSuite *MathTest::suite () {
+ *      CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite;
+ *      suiteOfTests->addTest(new CppUnit::TestCaller<MathTest>(
+ *                              "testAdd", &MathTest::testAdd));
+ *      suiteOfTests->addTest(new CppUnit::TestCaller<MathTest>(
+ *                              "testDivideByZero", &MathTest::testDivideByZero));
+ *      return suiteOfTests;
+ *  }
+ * \endcode
+ * 
+ * A set of macros have been created for convenience. They are located in HelperMacros.h.
+ *
+ * \see TestResult, TestSuite, TestCaller,
+ * \see CPPUNIT_TEST_SUB_SUITE, CPPUNIT_TEST, CPPUNIT_TEST_SUITE_END, 
+ * \see CPPUNIT_TEST_SUITE_REGISTRATION, CPPUNIT_TEST_EXCEPTION, CPPUNIT_TEST_FAIL.
+ */
+class CPPUNIT_API TestFixture
+{
+public:
+  virtual ~TestFixture() {};
+
+  //! \brief Set up context before running a test.
+  virtual void setUp() {};
+
+  //! Clean up after the test run.
+  virtual void tearDown() {};
+};
+
+
+CPPUNIT_NS_END
+
+
+#endif
diff --git a/lib/cppunit-1.10.0/include/cppunit/TestLeaf.h b/lib/cppunit-1.10.0/include/cppunit/TestLeaf.h
new file mode 100644 (file)
index 0000000..c83b075
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef CPPUNIT_TESTLEAF_H
+#define CPPUNIT_TESTLEAF_H
+
+#include <cppunit/Test.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief A single test object.
+ *
+ * Base class for single test case: a test that doesn't have any children.
+ *
+ */
+class CPPUNIT_API TestLeaf: public Test
+{
+public:
+  /*! Returns 1 as the default number of test cases invoked by run().
+   * 
+   * You may override this method when many test cases are invoked (RepeatedTest
+   * for example).
+   * 
+   * \return 1.
+   * \see Test::countTestCases().
+   */
+  int countTestCases() const;
+
+  /*! Returns the number of child of this test case: 0.
+   *
+   * You should never override this method: a TestLeaf as no children by definition.
+   *
+   * \return 0.
+   */
+  int getChildTestCount() const;
+
+  /*! Always throws std::out_of_range.
+   * \see Test::doGetChildTestAt().
+   */
+  Test *doGetChildTestAt( int index ) const;
+};
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_TESTLEAF_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/TestListener.h b/lib/cppunit-1.10.0/include/cppunit/TestListener.h
new file mode 100644 (file)
index 0000000..cb256fa
--- /dev/null
@@ -0,0 +1,148 @@
+#ifndef CPPUNIT_TESTLISTENER_H    // -*- C++ -*-
+#define CPPUNIT_TESTLISTENER_H
+
+#include <cppunit/Portability.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+class Exception;
+class Test;
+class TestFailure;
+class TestResult;
+
+
+/*! \brief Listener for test progress and result.
+ * \ingroup TrackingTestExecution
+ *
+ * Implementing the Observer pattern a TestListener may be registered
+ * to a TestResult to obtain information on the testing progress. Use
+ * specialized sub classes of TestListener for text output
+ * (TextTestProgressListener). Do not use the Listener for the test
+ * result output, use a subclass of Outputter instead.
+ *
+ * The test framework distinguishes between failures and errors.
+ * A failure is anticipated and checked for with assertions. Errors are
+ * unanticipated problems signified by exceptions that are not generated
+ * by the framework.
+ *
+ * Here is an example to track test time:
+ *
+ *
+ * \code
+ * #include <cppunit/TestListener.h>
+ * #include <cppunit/Test.h>
+ * #include <time.h>    // for clock()
+ *
+ * class TimingListener : public CppUnit::TestListener
+ * {
+ * public:
+ *   void startTest( CppUnit::Test *test )
+ *   {
+ *     _chronometer.start();
+ *   }
+ *  
+ *   void endTest( CppUnit::Test *test )
+ *   {
+ *     _chronometer.end();
+ *     addTest( test, _chronometer.elapsedTime() );
+ *   }
+ *
+ *   // ... (interface to add/read test timing result)
+ *
+ * private:
+ *   Clock _chronometer;
+ * };
+ * \endcode
+ *   
+ * And another example that track failure/success at test suite level and captures
+ * the TestPath of each suite:
+ * \code
+ * class SuiteTracker : public CppUnit::TestListener
+ * {
+ * public:
+ *   void startSuite( CppUnit::Test *suite )
+ *   {
+ *     m_currentPath.add( suite );
+ *   }
+ *   
+ *   void addFailure( const TestFailure &failure )
+ *   {
+ *     m_suiteFailure.top() = false;
+ *   }
+ * 
+ *   void endSuite( CppUnit::Test *suite )
+ *   {
+ *     m_suiteStatus.insert( std::make_pair( suite, m_suiteFailure.top() ) );
+ *     m_suitePaths.insert( std::make_pair( suite, m_currentPath ) );
+ *
+ *     m_currentPath.up();
+ *     m_suiteFailure.pop();
+ *   }
+ *
+ * private:
+ *   std::stack<bool> m_suiteFailure;
+ *   CppUnit::TestPath m_currentPath;
+ *   std::map<CppUnit::Test *, bool> m_suiteStatus;
+ *   std::map<CppUnit::Test *, CppUnit::TestPath> m_suitePaths;
+ * };
+ * \endcode
+ *
+ * \see TestResult
+ */
+class CPPUNIT_API TestListener
+{
+public:
+  virtual ~TestListener() {}
+  
+  /// Called when just before a TestCase is run.
+  virtual void startTest( Test *test ) {}
+
+  /*! \brief Called when a failure occurs while running a test.
+   * \see TestFailure.
+   * \warning \a failure is a temporary object that is destroyed after the 
+   *          method call. Use TestFailure::clone() to create a duplicate.
+   */
+  virtual void addFailure( const TestFailure &failure ) {}
+
+  /// Called just after a TestCase was run (even if a failure occured).
+  virtual void endTest( Test *test ) {}
+
+  /*! \brief Called by a TestComposite just before running its child tests.
+   */
+  virtual void startSuite( Test *suite ) {}
+
+  /*! \brief Called by a TestComposite after running its child tests.
+   */
+  virtual void endSuite( Test *suite ) {}
+
+  /*! \brief Called by a TestRunner before running the test.
+   * 
+   * You can use this to do some global initialisation. A listener
+   * could also use to output a 'prolog' to the test run.
+   *
+   * \param test Test that is going to be run.
+   * \param eventManager Event manager used for the test run.
+   */
+  virtual void startTestRun( Test *test, 
+                             TestResult *eventManager ) {}
+
+  /*! \brief Called by a TestRunner after running the test.
+   *
+   * TextTestProgressListener use this to emit a line break. You can also use this
+   * to do some global uninitialisation.
+   *
+   * \param test Test that was run.
+   * \param eventManager Event manager used for the test run.
+   */
+  virtual void endTestRun( Test *test, 
+                           TestResult *eventManager ) {}
+};
+
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_TESTLISTENER_H
+
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/TestPath.h b/lib/cppunit-1.10.0/include/cppunit/TestPath.h
new file mode 100644 (file)
index 0000000..12e9de1
--- /dev/null
@@ -0,0 +1,210 @@
+#ifndef CPPUNIT_TESTPATH_H
+#define CPPUNIT_TESTPATH_H
+
+#include <cppunit/Portability.h>
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( push )
+#pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
+#endif
+
+#include <cppunit/portability/CppUnitDeque.h>
+
+CPPUNIT_NS_BEGIN
+
+
+class Test;
+
+#if CPPUNIT_NEED_DLL_DECL
+//  template class CPPUNIT_API std::deque<Test *>;
+#endif
+
+
+/*! \brief A List of Test representing a path to access a Test.
+ * \ingroup ExecutingTest
+ *
+ * The path can be converted to a string and resolved from a string with toString()
+ * and TestPath( Test *root, const std::string &pathAsString ).
+ *
+ * Pointed tests are not owned by the class.
+ *
+ * \see Test::resolvedTestPath()
+ */
+class CPPUNIT_API TestPath
+{
+public:
+  /*! \brief Constructs an invalid path.
+   * 
+   * The path is invalid until a test is added with add().
+   */
+  TestPath();
+
+  /*! \brief Constructs a valid path.
+   *
+   * \param root Test to add.
+   */
+  TestPath( Test *root );
+
+  /*! \brief Constructs a path using a slice of another path.
+   * \param otherPath Path the test are copied from.
+   * \param indexFirst Zero based index of the first test to copy. Adjusted to be in valid
+   *                   range. \a count is adjusted with \a indexFirst.
+   * \param count Number of tests to copy. If < 0 then all test starting from index
+   *              \a indexFirst are copied.
+   */
+  TestPath( const TestPath &otherPath, 
+            int indexFirst, 
+            int count = -1 );
+
+  /*! \brief Resolves a path from a string returned by toString().
+   *
+   * If \a pathAsString is an absolute path (begins with '/'), then the first test name
+   * of the path must be the name of \a searchRoot. Otherwise, \a pathAsString is a 
+   * relative path, and the first test found using Test::findTest() matching the first
+   * test name is used as root. An empty string resolve to a path containing 
+   * \a searchRoot.
+   *
+   * The resolved path is always valid.
+   *
+   * \param searchRoot Test used to resolve the path.
+   * \param pathAsString String that contains the path as a string created by toString().
+   * \exception std::invalid_argument if one of the test names can not be resolved.
+   * \see toString().
+   */
+  TestPath( Test *searchRoot, 
+            const std::string &pathAsString );
+
+  /*! \brief Copy constructor.
+   * \param other Object to copy.
+   */
+  TestPath( const TestPath &other );
+
+  virtual ~TestPath();
+
+  /*! \brief Tests if the path contains at least one test.
+   * \return \c true if the path contains at least one test, otherwise returns \c false.
+   */
+  virtual bool isValid() const;
+
+  /*! \brief Adds a test to the path.
+   * \param test Pointer on the test to add. Must not be \c NULL.
+   */
+  virtual void add( Test *test );
+
+  /*! \brief Adds all the tests of the specified path.
+   * \param path Path that contains the test to add.
+   */
+  virtual void add( const TestPath &path );
+
+  /*! \brief Inserts a test at the specified index.
+   * \param test Pointer on the test to insert. Must not be \c NULL.
+   * \param index Zero based index indicating where the test is inserted.
+   * \exception std::out_of_range is \a index < 0 or \a index > getTestCount().
+   */
+  virtual void insert( Test *test, int index );
+
+  /*! \brief Inserts all the tests at the specified path at a given index.
+   * \param path Path that contains the test to insert.
+   * \param index Zero based index indicating where the tests are inserted.
+   * \exception std::out_of_range is \a index < 0 or \a index > getTestCount(), and
+   *            \a path is valid.
+   */
+  virtual void insert( const TestPath &path, int index );
+
+  /*! \brief Removes all the test from the path.
+   *
+   * The path becomes invalid after this call.
+   */
+  virtual void removeTests();
+
+  /*! \brief Removes the test at the specified index of the path.
+   * \param index Zero based index of the test to remove.
+   * \exception std::out_of_range is \a index < 0 or \a index >= getTestCount().
+   */
+  virtual void removeTest( int index );
+
+  /*! \brief Removes the last test.
+   * \exception std::out_of_range is the path is invalid.
+   * \see isValid().
+   */
+  virtual void up();
+
+  /*! \brief Returns the number of tests in the path.
+   * \return Number of tests in the path.
+   */
+  virtual int getTestCount() const;
+
+  /*! \brief Returns the test of the specified index.
+   * \param index Zero based index of the test to return.
+   * \return Pointer on the test at index \a index. Never \c NULL.
+   * \exception std::out_of_range is \a index < 0 or \a index >= getTestCount().
+   */
+  virtual Test *getTestAt( int index ) const;
+
+  /*! \brief Get the last test of the path.
+   * \return Pointer on the last test (test at the bottom of the hierarchy). Never \c NULL.
+   * \exception std::out_of_range if the path is not valid ( isValid() returns \c false ).
+   */
+  virtual Test *getChildTest() const;
+
+  /*! \brief Returns the path as a string.
+   *
+   * For example, if a path is composed of three tests named "All Tests", "Math" and
+   * "Math::testAdd", toString() will return:
+   *
+   * "All Tests/Math/Math::testAdd".
+   * 
+   * \return A string composed of the test names separated with a '/'. It is a relative
+   *         path.
+   */
+  virtual std::string toString() const;
+
+  /*! \brief Assignment operator.
+   * \param other Object to copy.
+   * \return This object.
+   */
+  TestPath &operator =( const TestPath &other );
+
+protected:
+  /*! \brief Checks that the specified test index is within valid range.
+   * \param index Zero based index to check.
+   * \exception std::out_of_range is \a index < 0 or \a index >= getTestCount().
+   */
+  void checkIndexValid( int index ) const;
+
+  /// A list of test names.
+  typedef CppUnitDeque<std::string> PathTestNames;
+
+  /*! \brief Splits a path string into its test name components.
+   * \param pathAsString Path string created with toString().
+   * \param testNames Test name components are added to that container.
+   * \return \c true if the path is relative (does not begin with '/'), \c false
+   *         if it is absolute (begin with '/').
+   */
+  bool splitPathString( const std::string &pathAsString,
+                        PathTestNames &testNames );
+
+  /*! \brief Finds the actual root of a path string and get the path string name components.
+   * \param searchRoot Test used as root if the path string is absolute, or to search
+   *                   the root test if the path string is relative.
+   * \param pathAsString Path string. May be absolute or relative.
+   * \param testNames Test name components are added to that container.
+   * \return Pointer on the resolved root test. Never \c NULL.
+   * \exception std::invalid_argument if either the root name can not be resolved or if
+   *            pathAsString contains no name components.
+   */
+  Test *findActualRoot( Test *searchRoot,
+                        const std::string &pathAsString,
+                        PathTestNames &testNames );
+
+protected:
+  typedef CppUnitDeque<Test *> Tests;
+  Tests m_tests;
+
+};
+
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_TESTPATH_H
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/TestResult.h b/lib/cppunit-1.10.0/include/cppunit/TestResult.h
new file mode 100644 (file)
index 0000000..4653102
--- /dev/null
@@ -0,0 +1,155 @@
+#ifndef CPPUNIT_TESTRESULT_H
+#define CPPUNIT_TESTRESULT_H
+
+#include <cppunit/Portability.h>
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( push )
+#pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
+#endif
+
+#include <cppunit/SynchronizedObject.h>
+#include <cppunit/portability/CppUnitDeque.h>
+
+CPPUNIT_NS_BEGIN
+
+
+class Exception;
+class Functor;
+class Protector;
+class ProtectorChain;
+class Test;
+class TestFailure;
+class TestListener;
+
+
+#if CPPUNIT_NEED_DLL_DECL
+//  template class CPPUNIT_API std::deque<TestListener *>;
+#endif
+
+/*! \brief Manages TestListener.
+ * \ingroup TrackingTestExecution
+ *
+ * A single instance of this class is used when running the test. It is usually
+ * created by the test runner (TestRunner).
+ *
+ * This class shouldn't have to be inherited from. Use a TestListener
+ * or one of its subclasses to be informed of the ongoing tests.
+ * Use a Outputter to receive a test summary once it has finished
+ *
+ * TestResult supplies a template method 'setSynchronizationObject()'
+ * so that subclasses can provide mutual exclusion in the face of multiple
+ * threads.  This can be useful when tests execute in one thread and
+ * they fill a subclass of TestResult which effects change in another 
+ * thread.  To have mutual exclusion, override setSynchronizationObject()
+ * and make sure that you create an instance of ExclusiveZone at the 
+ * beginning of each method.
+ *
+ * \see Test, TestListener, TestResultCollector, Outputter.
+ */
+class CPPUNIT_API TestResult : protected SynchronizedObject
+{
+public:
+  /// Construct a TestResult
+  TestResult( SynchronizationObject *syncObject = 0 );
+
+  /// Destroys a test result
+  virtual ~TestResult();
+
+  virtual void addListener( TestListener *listener );
+
+  virtual void removeListener( TestListener *listener );
+
+  /// Resets the stop flag.
+  virtual void reset();
+  
+  /// Stop testing
+  virtual void stop();
+
+  /// Returns whether testing should be stopped
+  virtual bool shouldStop() const;
+
+  /// Informs TestListener that a test will be started.
+  virtual void startTest( Test *test );
+
+  /*! \brief Adds an error to the list of errors. 
+   *  The passed in exception
+   *  caused the error
+   */
+  virtual void addError( Test *test, Exception *e );
+
+  /*! \brief Adds a failure to the list of failures. The passed in exception
+   * caused the failure.
+   */
+  virtual void addFailure( Test *test, Exception *e );
+
+  /// Informs TestListener that a test was completed.
+  virtual void endTest( Test *test );
+
+  /// Informs TestListener that a test suite will be started.
+  virtual void startSuite( Test *test );
+
+  /// Informs TestListener that a test suite was completed.
+  virtual void endSuite( Test *test );
+
+  /*! \brief Run the specified test.
+   * 
+   * Calls startTestRun(), test->run(this), and finally endTestRun().
+   */
+  virtual void runTest( Test *test );
+
+  /*! \brief Protects a call to the specified functor.
+   *
+   * See Protector to understand how protector works. A default protector is
+   * always present. It captures CppUnit::Exception, std::exception and
+   * any other exceptions, retrieving as much as possible information about
+   * the exception as possible.
+   *
+   * Additional Protector can be added to the chain to support other exception
+   * types using pushProtector() and popProtector().
+   *
+   * \param functor Functor to call (typically a call to setUp(), runTest() or
+   *                tearDown().
+   * \param test Test the functor is associated to (used for failure reporting).
+   * \param shortDescription Short description override for the failure message.
+   */
+  virtual bool protect( const Functor &functor,
+                        Test *test,
+                        const std::string &shortDescription = std::string("") );
+
+  /// Adds the specified protector to the protector chain.
+  virtual void pushProtector( Protector *protector );
+
+  /// Removes the last protector from the protector chain.
+  virtual void popProtector();
+
+protected:
+  /*! \brief Called to add a failure to the list of failures.
+   */
+  void addFailure( const TestFailure &failure );
+
+  virtual void startTestRun( Test *test );
+  virtual void endTestRun( Test *test );
+  
+protected:
+  typedef CppUnitDeque<TestListener *> TestListeners;
+  TestListeners m_listeners;
+  ProtectorChain *m_protectorChain;
+  bool m_stop;
+
+private: 
+  TestResult( const TestResult &other );
+  TestResult &operator =( const TestResult &other );
+};
+
+
+CPPUNIT_NS_END
+
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( pop )
+#endif
+
+#endif // CPPUNIT_TESTRESULT_H
+
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/TestResultCollector.h b/lib/cppunit-1.10.0/include/cppunit/TestResultCollector.h
new file mode 100644 (file)
index 0000000..65b77cd
--- /dev/null
@@ -0,0 +1,85 @@
+#ifndef CPPUNIT_TESTRESULTCOLLECTOR_H
+#define CPPUNIT_TESTRESULTCOLLECTOR_H
+
+#include <cppunit/Portability.h>
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( push )
+#pragma warning( disable: 4251 4660 )  // X needs to have dll-interface to be used by clients of class Z
+#endif
+
+#include <cppunit/TestSuccessListener.h>
+#include <cppunit/portability/CppUnitDeque.h>
+
+
+CPPUNIT_NS_BEGIN
+
+#if CPPUNIT_NEED_DLL_DECL
+//  template class CPPUNIT_API std::deque<TestFailure *>;
+//  template class CPPUNIT_API std::deque<Test *>;
+#endif
+
+
+/*! \brief Collects test result.
+ * \ingroup WritingTestResult
+ * \ingroup BrowsingCollectedTestResult
+ * 
+ * A TestResultCollector is a TestListener which collects the results of executing 
+ * a test case. It is an instance of the Collecting Parameter pattern.
+ *
+ * The test framework distinguishes between failures and errors.
+ * A failure is anticipated and checked for with assertions. Errors are
+ * unanticipated problems signified by exceptions that are not generated
+ * by the framework.
+ * \see TestListener, TestFailure.
+ */
+class CPPUNIT_API TestResultCollector : public TestSuccessListener
+{
+public:
+  typedef CppUnitDeque<TestFailure *> TestFailures;
+  typedef CppUnitDeque<Test *> Tests;
+
+
+  /*! Constructs a TestResultCollector object.
+   */
+  TestResultCollector( SynchronizationObject *syncObject = 0 );
+
+  /// Destructor.
+  virtual ~TestResultCollector();
+
+  void startTest( Test *test );
+  void addFailure( const TestFailure &failure );
+
+  virtual void reset();
+
+  virtual int runTests() const;
+  virtual int testErrors() const;
+  virtual int testFailures() const;
+  virtual int testFailuresTotal() const;
+
+  virtual const TestFailures& failures() const;
+  virtual const Tests &tests() const;
+
+protected:
+  Tests m_tests;
+  TestFailures m_failures;
+  int m_testErrors;
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestResultCollector( const TestResultCollector &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestResultCollector &copy );
+};
+
+
+
+CPPUNIT_NS_END
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( pop )
+#endif
+
+
+#endif  // CPPUNIT_TESTRESULTCOLLECTOR_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/TestRunner.h b/lib/cppunit-1.10.0/include/cppunit/TestRunner.h
new file mode 100644 (file)
index 0000000..930370a
--- /dev/null
@@ -0,0 +1,135 @@
+#ifndef CPPUNIT_TESTRUNNER_H
+#define CPPUNIT_TESTRUNNER_H
+
+#include <cppunit/TestSuite.h>
+#include <string>
+
+CPPUNIT_NS_BEGIN
+
+
+class Test;
+class TestResult;
+
+
+/*! \brief Generic test runner.
+ * \ingroup ExecutingTest
+ *
+ * The TestRunner assumes ownership of all added tests: you can not add test
+ * or suite that are local variable since they can't be deleted.
+ *
+ * Example of usage:
+ * \code
+ * #include <cppunit/extensions/TestFactoryRegistry.h>
+ * #include <cppunit/CompilerOutputter.h>
+ * #include <cppunit/TestResult.h>
+ * #include <cppunit/TestResultCollector.h>
+ * #include <cppunit/TestRunner.h>
+ * #include <cppunit/TextTestProgressListener.h>
+ * 
+ * 
+ * int 
+ * main( int argc, char* argv[] )
+ * {
+ *   std::string testPath = (argc > 1) ? std::string(argv[1]) : "";
+ * 
+ *   // Create the event manager and test controller
+ *   CppUnit::TestResult controller;
+ * 
+ *   // Add a listener that colllects test result
+ *   CppUnit::TestResultCollector result;
+ *   controller.addListener( &result );        
+ * 
+ *   // Add a listener that print dots as test run.
+ *   CppUnit::TextTestProgressListener progress;
+ *   controller.addListener( &progress );      
+ * 
+ *   // Add the top suite to the test runner
+ *   CppUnit::TestRunner runner;
+ *   runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() );   
+ *   try
+ *   {
+ *     std::cout << "Running "  <<  testPath;
+ *     runner.run( controller, testPath );
+ * 
+ *     std::cerr << std::endl;
+ * 
+ *     // Print test in a compiler compatible format.
+ *     CppUnit::CompilerOutputter outputter( &result, std::cerr );
+ *     outputter.write();                      
+ *   }
+ *   catch ( std::invalid_argument &e )  // Test path not resolved
+ *   {
+ *     std::cerr  <<  std::endl  
+ *                <<  "ERROR: "  <<  e.what()
+ *                << std::endl;
+ *     return 0;
+ *   }
+ * 
+ *   return result.wasSuccessful() ? 0 : 1;
+ * }
+ * \endcode
+ */
+class CPPUNIT_API TestRunner
+{
+public:
+  /*! \brief Constructs a TestRunner object.
+   */
+  TestRunner(  );
+
+  /// Destructor.
+  virtual ~TestRunner();
+
+  /*! \brief Adds the specified test.
+   * \param test Test to add. The TestRunner takes ownership of the test.
+   */
+  virtual void addTest( Test *test );
+
+  /*! \brief Runs a test using the specified controller.
+   * \param controller Event manager and controller used for testing
+   * \param testPath Test path string. See Test::resolveTestPath() for detail.
+   * \exception std::invalid_argument if no test matching \a testPath is found.
+   *                                  see TestPath::TestPath( Test*, const std::string &)
+   *                                  for detail.
+   */
+  virtual void run( TestResult &controller,
+                    const std::string &testPath = "" );
+
+protected:
+  /*! \brief (INTERNAL) Mutating test suite.
+   */
+  class CPPUNIT_API WrappingSuite : public TestSuite
+  {
+  public:
+    WrappingSuite( const std::string &name = "All Tests" );
+
+    int getChildTestCount() const;
+
+    std::string getName() const;
+
+    void run( TestResult *result );
+
+  protected:
+    Test *doGetChildTestAt( int index ) const;
+
+    bool hasOnlyOneTest() const;
+
+    Test *getUniqueChildTest() const;
+  };
+
+protected:
+  WrappingSuite *m_suite;
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestRunner( const TestRunner &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestRunner &copy );
+
+private:
+};
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_TESTRUNNER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/TestSuccessListener.h b/lib/cppunit-1.10.0/include/cppunit/TestSuccessListener.h
new file mode 100644 (file)
index 0000000..60c5ff5
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef CPPUNIT_TESTSUCCESSLISTENER_H
+#define CPPUNIT_TESTSUCCESSLISTENER_H
+
+#include <cppunit/SynchronizedObject.h>
+#include <cppunit/TestListener.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief TestListener that checks if any test case failed.
+ * \ingroup TrackingTestExecution
+ */
+class CPPUNIT_API TestSuccessListener : public TestListener,
+                                        public SynchronizedObject
+{
+public:
+  /*! Constructs a TestSuccessListener object.
+   */
+  TestSuccessListener( SynchronizationObject *syncObject = 0 );
+
+  /// Destructor.
+  virtual ~TestSuccessListener();
+
+  virtual void reset();
+
+  void addFailure( const TestFailure &failure );
+
+  /// Returns whether the entire test was successful or not.
+  virtual bool wasSuccessful() const;
+
+private:
+  bool m_success;
+};
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_TESTSUCCESSLISTENER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/TestSuite.h b/lib/cppunit-1.10.0/include/cppunit/TestSuite.h
new file mode 100644 (file)
index 0000000..a478b8d
--- /dev/null
@@ -0,0 +1,80 @@
+#ifndef CPPUNIT_TESTSUITE_H    // -*- C++ -*-
+#define CPPUNIT_TESTSUITE_H
+
+#include <cppunit/Portability.h>
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( push )
+#pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
+#endif
+
+#include <cppunit/TestComposite.h>
+#include <cppunit/portability/CppUnitVector.h>
+
+CPPUNIT_NS_BEGIN
+
+
+#if CPPUNIT_NEED_DLL_DECL
+//  template class CPPUNIT_API std::vector<Test *>;
+#endif
+
+
+/*! \brief A Composite of Tests.
+ * \ingroup CreatingTestSuite
+ *
+ * It runs a collection of test cases. Here is an example.
+ * \code
+ * CppUnit::TestSuite *suite= new CppUnit::TestSuite();
+ * suite->addTest(new CppUnit::TestCaller<MathTest> (
+ *                  "testAdd", testAdd));
+ * suite->addTest(new CppUnit::TestCaller<MathTest> (
+ *                  "testDivideByZero", testDivideByZero));
+ * \endcode
+ * Note that \link TestSuite TestSuites assume lifetime
+ * control for any tests added to them.
+ *
+ * TestSuites do not register themselves in the TestRegistry.
+ * \see Test 
+ * \see TestCaller
+ */
+class CPPUNIT_API TestSuite : public TestComposite
+{
+public:
+  /*! Constructs a test suite with the specified name.
+   */
+  TestSuite( std::string name = "" );
+
+  ~TestSuite();
+
+  /*! Adds the specified test to the suite.
+   * \param test Test to add. Must not be \c NULL.
+    */
+  void addTest( Test *test );
+
+  /*! Returns the list of the tests (DEPRECATED).
+   * \deprecated Use getChildTestCount() & getChildTestAt() of the 
+   *             TestComposite interface instead.
+   * \return Reference on a vector that contains the tests of the suite.
+   */
+  const CppUnitVector<Test *> &getTests() const;
+
+  /*! Destroys all the tests of the suite.
+   */
+  virtual void deleteContents();
+
+  int getChildTestCount() const;
+
+  Test *doGetChildTestAt( int index ) const;
+
+private:
+  CppUnitVector<Test *> m_tests;
+};
+
+
+CPPUNIT_NS_END
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( pop )
+#endif
+
+#endif // CPPUNIT_TESTSUITE_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/TextOutputter.h b/lib/cppunit-1.10.0/include/cppunit/TextOutputter.h
new file mode 100644 (file)
index 0000000..767a48e
--- /dev/null
@@ -0,0 +1,59 @@
+#ifndef CPPUNIT_TEXTOUTPUTTER_H
+#define CPPUNIT_TEXTOUTPUTTER_H
+
+#include <cppunit/Portability.h>
+#include <cppunit/Outputter.h>
+#include <iostream>
+
+CPPUNIT_NS_BEGIN
+
+
+class Exception;
+class SourceLine;
+class TestResultCollector;
+class TestFailure;
+
+
+/*! \brief Prints a TestResultCollector to a text stream.
+ * \ingroup WritingTestResult
+ */
+class CPPUNIT_API TextOutputter : public Outputter
+{
+public:
+  TextOutputter( TestResultCollector *result,
+                 std::ostream &stream );
+
+  /// Destructor.
+  virtual ~TextOutputter();
+
+  void write();
+  virtual void printFailures();
+  virtual void printHeader();
+
+  virtual void printFailure( TestFailure *failure,
+                             int failureNumber );
+  virtual void printFailureListMark( int failureNumber );
+  virtual void printFailureTestName( TestFailure *failure );
+  virtual void printFailureType( TestFailure *failure );
+  virtual void printFailureLocation( SourceLine sourceLine );
+  virtual void printFailureDetail( Exception *thrownException );
+  virtual void printFailureWarning();
+  virtual void printStatistics();
+
+protected:
+  TestResultCollector *m_result;
+  std::ostream &m_stream;
+
+private:
+  /// Prevents the use of the copy constructor.
+  TextOutputter( const TextOutputter &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TextOutputter &copy );
+};
+
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_TEXTOUTPUTTER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/TextTestProgressListener.h b/lib/cppunit-1.10.0/include/cppunit/TextTestProgressListener.h
new file mode 100644 (file)
index 0000000..7521c40
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef CPPUNIT_TEXTTESTPROGRESSLISTENER_H
+#define CPPUNIT_TEXTTESTPROGRESSLISTENER_H
+
+#include <cppunit/TestListener.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+/*! 
+ * \brief TestListener that show the status of each TestCase test result.
+ * \ingroup TrackingTestExecution
+ */
+class CPPUNIT_API TextTestProgressListener : public TestListener
+{
+public:
+  /*! Constructs a TextTestProgressListener object.
+   */
+  TextTestProgressListener();
+
+  /// Destructor.
+  virtual ~TextTestProgressListener();
+
+  void startTest( Test *test );
+
+  void addFailure( const TestFailure &failure );
+
+  void endTestRun( Test *test, 
+                   TestResult *eventManager );
+
+private:
+  /// Prevents the use of the copy constructor.
+  TextTestProgressListener( const TextTestProgressListener &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TextTestProgressListener &copy );
+
+private:
+};
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_TEXTTESTPROGRESSLISTENER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/TextTestResult.h b/lib/cppunit-1.10.0/include/cppunit/TextTestResult.h
new file mode 100644 (file)
index 0000000..dc666c6
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef CPPUNIT_TEXTTESTRESULT_H
+#define CPPUNIT_TEXTTESTRESULT_H
+
+#include <cppunit/TestResult.h>
+#include <cppunit/TestResultCollector.h>
+#include <iostream>
+
+CPPUNIT_NS_BEGIN
+
+
+class SourceLine;
+class Exception;
+class Test;
+
+/*! \brief Holds printable test result (DEPRECATED).
+ * \ingroup TrackingTestExecution
+ * 
+ * deprecated Use class TextTestProgressListener and TextOutputter instead.
+ */
+class CPPUNIT_API TextTestResult : public TestResult,
+                                   public TestResultCollector
+{
+public:
+  TextTestResult();
+
+  virtual void addFailure( const TestFailure &failure );
+  virtual void startTest( Test *test );
+  virtual void print( std::ostream &stream );
+};
+
+/** insertion operator for easy output */
+CPPUNIT_API std::ostream &operator <<( std::ostream &stream, 
+                                       TextTestResult &result );
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_TEXTTESTRESULT_H
+
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/TextTestRunner.h b/lib/cppunit-1.10.0/include/cppunit/TextTestRunner.h
new file mode 100644 (file)
index 0000000..23890e0
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef CPPUNIT_TEXTTESTRUNNER_H
+#define CPPUNIT_TEXTTESTRUNNER_H
+
+#include <cppunit/ui/text/TextTestRunner.h>
+
+#endif  // CPPUNIT_TEXTTESTRUNNER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/XmlOutputter.h b/lib/cppunit-1.10.0/include/cppunit/XmlOutputter.h
new file mode 100644 (file)
index 0000000..d01968c
--- /dev/null
@@ -0,0 +1,158 @@
+#ifndef CPPUNIT_XMLTESTRESULTOUTPUTTER_H
+#define CPPUNIT_XMLTESTRESULTOUTPUTTER_H
+
+#include <cppunit/Portability.h>
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( push )
+#pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
+#endif
+
+#include <cppunit/Outputter.h>
+#include <cppunit/portability/CppUnitDeque.h>
+#include <cppunit/portability/CppUnitMap.h>
+#include <iostream>
+
+
+CPPUNIT_NS_BEGIN
+
+
+class Test;
+class TestFailure;
+class TestResultCollector;
+class XmlDocument;
+class XmlElement;
+class XmlOutputterHook;
+
+
+/*! \brief Outputs a TestResultCollector in XML format.
+ * \ingroup WritingTestResult
+ *
+ * Save the test result as a XML stream. 
+ *
+ * Additional datas can be added to the XML document using XmlOutputterHook. 
+ * Hook are not owned by the XmlOutputter. They should be valid until 
+ * destruction of the XmlOutputter. They can be removed with removeHook().
+ *
+ * \see XmlDocument, XmlElement, XmlOutputterHook.
+ */
+class CPPUNIT_API XmlOutputter : public Outputter
+{
+public:
+  /*! \brief Constructs a XmlOutputter object.
+   * \param result Result of the test run.
+   * \param stream Stream used to output the XML output.
+   * \param encoding Encoding used in the XML file (default is Latin-1). 
+   */
+  XmlOutputter( TestResultCollector *result,
+                std::ostream &stream,
+                std::string encoding = std::string("ISO-8859-1") );
+
+  /// Destructor.
+  virtual ~XmlOutputter();
+
+  /*! \brief Adds the specified hook to the outputter.
+   * \param hook Hook to add. Must not be \c NULL.
+   */
+  virtual void addHook( XmlOutputterHook *hook );
+
+  /*! \brief Removes the specified hook from the outputter.
+   * \param hook Hook to remove.
+   */
+  virtual void removeHook( XmlOutputterHook *hook );
+
+  /*! \brief Writes the specified result as an XML document to the stream.
+   *
+   * Refer to examples/cppunittest/XmlOutputterTest.cpp for example
+   * of use and XML document structure.
+   */
+  virtual void write();
+
+  /*! \brief Sets the XSL style sheet used.
+   *
+   * \param styleSheet Name of the style sheet used. If empty, then no style sheet
+   *                   is used (default).
+   */
+  virtual void setStyleSheet( const std::string &styleSheet );
+
+
+  typedef CppUnitMap<Test *,TestFailure*, std::less<Test*> > FailedTests;
+
+  /*! \brief Sets the root element and adds its children.
+   *
+   * Set the root element of the XML Document and add its child elements.
+   *
+   * For all hooks, call beginDocument() just after creating the root element (it
+   * is empty at this time), and endDocument() once all the datas have been added
+   * to the root element.
+   */
+  virtual void setRootNode();
+
+  virtual void addFailedTests( FailedTests &failedTests,
+                               XmlElement *rootNode );
+
+  virtual void addSuccessfulTests( FailedTests &failedTests,
+                                   XmlElement *rootNode );
+
+  /*! \brief Adds the statics element to the root node.
+   * 
+   * Creates a new element containing statistics data and adds it to the root element.
+   * Then, for all hooks, call statisticsAdded().
+   * \param rootNode Root element.
+   */
+  virtual void addStatistics( XmlElement *rootNode );
+
+  /*! \brief Adds a failed test to the failed tests node.
+   * Creates a new element containing datas about the failed test, and adds it to 
+   * the failed tests element.
+   * Then, for all hooks, call failTestAdded().
+   */
+  virtual void addFailedTest( Test *test,
+                              TestFailure *failure,
+                              int testNumber,
+                              XmlElement *testsNode );
+
+  virtual void addFailureLocation( TestFailure *failure,
+                                   XmlElement *testElement );
+
+
+  /*! \brief Adds a successful test to the successful tests node.
+   * Creates a new element containing datas about the successful test, and adds it to 
+   * the successful tests element.
+   * Then, for all hooks, call successfulTestAdded().
+   */
+  virtual void addSuccessfulTest( Test *test, 
+                                  int testNumber,
+                                  XmlElement *testsNode );
+protected:
+  virtual void fillFailedTestsMap( FailedTests &failedTests );
+
+protected:
+  typedef CppUnitDeque<XmlOutputterHook *> Hooks;
+
+  TestResultCollector *m_result;
+  std::ostream &m_stream;
+  std::string m_encoding;
+  std::string m_styleSheet;
+  XmlDocument *m_xml;
+  Hooks m_hooks;
+
+private:
+  /// Prevents the use of the copy constructor.
+  XmlOutputter( const XmlOutputter &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const XmlOutputter &copy );
+
+private:
+};
+
+
+CPPUNIT_NS_END
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( pop )
+#endif
+
+
+#endif  // CPPUNIT_XMLTESTRESULTOUTPUTTER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/XmlOutputterHook.h b/lib/cppunit-1.10.0/include/cppunit/XmlOutputterHook.h
new file mode 100644 (file)
index 0000000..e4f37bd
--- /dev/null
@@ -0,0 +1,161 @@
+#ifndef CPPUNIT_XMLOUTPUTTERHOOK_H
+#define CPPUNIT_XMLOUTPUTTERHOOK_H
+
+#include <cppunit/Portability.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+class Test;
+class TestFailure;
+class XmlDocument;
+class XmlElement;
+
+
+
+/*! \brief Hook to customize Xml output.
+ *
+ * XmlOutputterHook can be passed to XmlOutputter to customize the XmlDocument.
+ *
+ * Common customizations are:
+ * - adding some datas to successfull or failed test with
+ *   failTestAdded() and successfulTestAdded(),
+ * - adding some statistics with statisticsAdded(),
+ * - adding other datas with beginDocument() or endDocument().
+ *
+ * See examples/ClockerPlugIn which makes use of most the hook.
+ *
+ * Another simple example of an outputter hook is shown below. It may be  
+ * used to add some meta information to your result files. In the example,
+ * the author name as well as the project name and test creation date is
+ * added to the head of the xml file.
+ *
+ * In order to make this information stored within the xml file, the virtual 
+ * member function beginDocument() is overriden where a new 
+ * XmlElement object is created.
+ *
+ * This element is simply added to the root node of the document which
+ * makes the information automatically being stored when the xml file
+ * is written.
+ *
+ * \code
+ * #include <cppunit/XmlOutputterHook.h>
+ * #include <cppunit/XmlElement.h>
+ * #include <cppunit/tools/StringTools.h>
+ * 
+ * ...
+ * 
+ * class MyXmlOutputterHook : public CppUnit::XmlOutputterHook
+ * {
+ * public:
+ *   MyXmlOutputterHook(const std::string projectName,
+ *                      const std::string author)
+ *   {
+ *      m_projectName = projectName;
+ *      m_author      = author;
+ *   };
+ * 
+ *   virtual ~MyXmlOutputterHook()
+ *   {
+ *   };
+ * 
+ *   void beginDocument(CppUnit::XmlDocument* document)
+ *   {
+ *     if (!document)
+ *       return;
+ *
+ *     // dump current time
+ *     std::string szDate          = CppUnit::StringTools::toString( (int)time(0) );
+ *     CppUnit::XmlElement* metaEl = new CppUnit::XmlElement("SuiteInfo", 
+ *                                                           "");
+ *
+ *     metaEl->addElement( new CppUnit::XmlElement("Author", m_author) );
+ *     metaEl->addElement( new CppUnit::XmlElement("Project", m_projectName) );
+ *     metaEl->addElement( new CppUnit::XmlElement("Date", szDate ) );
+ *    
+ *     document->rootElement().addElement(metaEl);
+ *   };
+ * private:
+ *   std::string m_projectName;
+ *   std::string m_author;
+ * }; 
+ * \endcode
+ *
+ * Within your application's main code, you need to snap the hook 
+ * object into your xml outputter object like shown below:
+ *
+ * \code
+ * CppUnit::TextUi::TestRunner runner;
+ * std::ofstream outputFile("testResults.xml");
+ * 
+ * CppUnit::XmlOutputter* outputter = new CppUnit::XmlOutputter( &runner.result(),
+ *                                                               outputFile );    
+ * MyXmlOutputterHook hook("myProject", "meAuthor");
+ * outputter->addHook(&hook);
+ * runner.setOutputter(outputter);    
+ * runner.addTest( VectorFixture::suite() );   
+ * runner.run();
+ * outputFile.close();
+ * \endcode
+ *
+ * This results into the following output:
+ *
+ * \code
+ * <TestRun>
+ *   <suiteInfo>
+ *     <author>meAuthor</author>
+ *     <project>myProject</project>
+ *     <date>1028143912</date>
+ *   </suiteInfo>
+ *   <FailedTests>
+ *    ...
+ * \endcode
+ *
+ * \see XmlOutputter, CppUnitTestPlugIn.
+ */
+class CPPUNIT_API XmlOutputterHook
+{
+public:
+  /*! Called before any elements is added to the root element.
+   * \param document XML Document being created.
+   */
+  virtual void beginDocument( XmlDocument *document );
+
+  /*! Called after adding all elements to the root element.
+   * \param document XML Document being created.
+   */
+  virtual void endDocument( XmlDocument *document );
+
+  /*! Called after adding a fail test element.
+   * \param document XML Document being created.
+   * \param testElement <FailedTest> element.
+   * \param test Test that failed.
+   * \param failure Test failure data.
+   */
+  virtual void failTestAdded( XmlDocument *document,
+                              XmlElement *testElement,
+                              Test *test,
+                              TestFailure *failure );
+
+  /*! Called after adding a successful test element.
+   * \param document XML Document being created.
+   * \param testElement <Test> element.
+   * \param test Test that was successful.
+   */
+  virtual void successfulTestAdded( XmlDocument *document,
+                                    XmlElement *testElement,
+                                    Test *test );
+
+  /*! Called after adding the statistic element.
+   * \param document XML Document being created.
+   * \param statisticsElement <Statistics> element.
+   */
+  virtual void statisticsAdded( XmlDocument *document,
+                                XmlElement *statisticsElement );
+};
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_XMLOUTPUTTERHOOK_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/config/CppUnitApi.h b/lib/cppunit-1.10.0/include/cppunit/config/CppUnitApi.h
new file mode 100644 (file)
index 0000000..a068bbd
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef CPPUNIT_CONFIG_CPPUNITAPI
+#define CPPUNIT_CONFIG_CPPUNITAPI
+
+#undef CPPUNIT_API
+
+#ifdef WIN32
+
+// define CPPUNIT_DLL_BUILD when building CppUnit dll.
+#ifdef CPPUNIT_BUILD_DLL
+#define CPPUNIT_API __declspec(dllexport)
+#endif
+
+// define CPPUNIT_DLL when linking to CppUnit dll.
+#ifdef CPPUNIT_DLL
+#define CPPUNIT_API __declspec(dllimport)
+#endif
+
+#ifdef CPPUNIT_API
+#undef CPPUNIT_NEED_DLL_DECL
+#define CPPUNIT_NEED_DLL_DECL 1
+#endif
+
+#endif
+
+
+#ifndef CPPUNIT_API
+#define CPPUNIT_API
+#undef CPPUNIT_NEED_DLL_DECL
+#define CPPUNIT_NEED_DLL_DECL 0
+#endif
+
+#endif  // CPPUNIT_CONFIG_CPPUNITAPI
diff --git a/lib/cppunit-1.10.0/include/cppunit/config/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/config/Makefile.am
new file mode 100644 (file)
index 0000000..f1f71a3
--- /dev/null
@@ -0,0 +1,8 @@
+libcppunitincludedir = $(includedir)/cppunit/config
+
+libcppunitinclude_HEADERS = \
+       config-bcb5.h \
+       config-mac.h \
+       config-msvc6.h \
+       SelectDllLoader.h \
+       CppUnitApi.h
diff --git a/lib/cppunit-1.10.0/include/cppunit/config/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/config/Makefile.in
new file mode 100644 (file)
index 0000000..d232ef6
--- /dev/null
@@ -0,0 +1,379 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+libcppunitincludedir = $(includedir)/cppunit/config
+
+libcppunitinclude_HEADERS = \
+       config-bcb5.h \
+       config-mac.h \
+       config-msvc6.h \
+       SelectDllLoader.h \
+       CppUnitApi.h
+
+subdir = include/cppunit/config
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+HEADERS = $(libcppunitinclude_HEADERS)
+
+DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  include/cppunit/config/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+uninstall-libcppunitincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libcppunitincludeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libcppunitincludeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool ctags distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am info \
+       info-am install install-am install-data install-data-am \
+       install-exec install-exec-am install-info install-info-am \
+       install-libcppunitincludeHEADERS install-man install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-info-am \
+       uninstall-libcppunitincludeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/include/cppunit/config/SelectDllLoader.h b/lib/cppunit-1.10.0/include/cppunit/config/SelectDllLoader.h
new file mode 100644 (file)
index 0000000..dc1c011
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef CPPUNIT_CONFIG_SELECTDLLLOADER_H
+#define CPPUNIT_CONFIG_SELECTDLLLOADER_H
+
+/*! \file
+ * Selects DynamicLibraryManager implementation.
+ *
+ * Don't include this file directly. Include Portability.h instead.
+ */
+
+/*!
+ * \def CPPUNIT_NO_TESTPLUGIN
+ * \brief If defined, then plug-in related classes and functions will not be compiled.
+ * 
+ * \internal
+ * CPPUNIT_HAVE_WIN32_DLL_LOADER
+ * If defined, Win32 implementation of DynamicLibraryManager will be used.
+ * 
+ * CPPUNIT_HAVE_BEOS_DLL_LOADER
+ * If defined, BeOs implementation of DynamicLibraryManager will be used.
+ * 
+ * CPPUNIT_HAVE_UNIX_DLL_LOADER
+ * If defined, Unix implementation (dlfcn.h) of DynamicLibraryManager will be used.
+ */
+
+/*!
+ * \def CPPUNIT_PLUGIN_EXPORT
+ * \ingroup WritingTestPlugIn
+ * \brief A macro to export a function from a dynamic library
+ *
+ * This macro export the C function following it from a dynamic library. 
+ * Exporting the function makes it accessible to the DynamicLibraryManager.
+ *
+ * Example of usage:
+ * \code
+ * #include <cppunit/include/plugin/TestPlugIn.h>
+ *
+ * CPPUNIT_PLUGIN_EXPORT CppUnitTestPlugIn *CPPUNIT_PLUGIN_EXPORTED_NAME(void)
+ * {
+ *   ...
+ *   return &myPlugInInterface;
+ * }
+ * \endcode
+ */
+
+#if !defined(CPPUNIT_NO_TESTPLUGIN)
+
+// Is WIN32 platform ?
+#if defined(WIN32)
+#define CPPUNIT_HAVE_WIN32_DLL_LOADER 1
+#undef CPPUNIT_PLUGIN_EXPORT
+#define CPPUNIT_PLUGIN_EXPORT extern "C" __declspec(dllexport)
+
+// Is BeOS platform ?
+#elif defined(__BEOS__)
+#define CPPUNIT_HAVE_BEOS_DLL_LOADER 1
+
+// Is Unix platform and have shl_load() (hp-ux)
+#elif defined(CPPUNIT_HAVE_SHL_LOAD)
+#define CPPUNIT_HAVE_UNIX_SHL_LOADER 1
+
+// Is Unix platform and have include <dlfcn.h>
+#elif defined(CPPUNIT_HAVE_LIBDL)
+#define CPPUNIT_HAVE_UNIX_DLL_LOADER 1
+
+// Otherwise, disable support for DllLoader
+#else
+#define CPPUNIT_NO_TESTPLUGIN 1
+#endif
+
+#if !defined(CPPUNIT_PLUGIN_EXPORT)
+#define CPPUNIT_PLUGIN_EXPORT extern "C"
+#endif // !defined(CPPUNIT_PLUGIN_EXPORT)
+
+#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
+
+#endif // CPPUNIT_CONFIG_SELECTDLLLOADER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/config/config-bcb5.h b/lib/cppunit-1.10.0/include/cppunit/config/config-bcb5.h
new file mode 100644 (file)
index 0000000..d491452
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef _INCLUDE_CPPUNIT_CONFIG_BCB5_H
+#define _INCLUDE_CPPUNIT_CONFIG_BCB5_H 1
+
+#define HAVE_CMATH 1
+/* include/cppunit/config-bcb5.h. Manually adapted from 
+   include/cppunit/config-auto.h */
+
+/* define to 1 if the compiler implements namespaces */
+#ifndef CPPUNIT_HAVE_NAMESPACES 
+#define CPPUNIT_HAVE_NAMESPACES  1 
+#endif
+
+/* define if library uses std::string::compare(string,pos,n) */
+#ifndef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST 
+#define CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST  0
+#endif
+
+/* Define if you have the <dlfcn.h> header file. */
+#ifdef CPPUNIT_HAVE_DLFCN_H 
+#undef CPPUNIT_HAVE_DLFCN_H 
+#endif
+
+/* define to 1 if the compiler implements namespaces */
+#ifndef CPPUNIT_HAVE_NAMESPACES 
+#define CPPUNIT_HAVE_NAMESPACES  1 
+#endif
+
+/* define if the compiler supports Run-Time Type Identification */
+#ifndef CPPUNIT_HAVE_RTTI 
+#define CPPUNIT_HAVE_RTTI  1 
+#endif
+
+/* Define to 1 to use type_info::name() for class names */
+#ifndef CPPUNIT_USE_TYPEINFO_NAME 
+#define CPPUNIT_USE_TYPEINFO_NAME  CPPUNIT_HAVE_RTTI 
+#endif
+
+#define CPPUNIT_HAVE_SSTREAM 1
+
+/* Name of package */
+#ifndef CPPUNIT_PACKAGE 
+#define CPPUNIT_PACKAGE  "cppunit" 
+#endif
+/* _INCLUDE_CPPUNIT_CONFIG_BCB5_H */
+#endif
diff --git a/lib/cppunit-1.10.0/include/cppunit/config/config-mac.h b/lib/cppunit-1.10.0/include/cppunit/config/config-mac.h
new file mode 100644 (file)
index 0000000..4ace906
--- /dev/null
@@ -0,0 +1,58 @@
+#ifndef _INCLUDE_CPPUNIT_CONFIG_MAC_H
+#define _INCLUDE_CPPUNIT_CONFIG_MAC_H 1
+
+/* MacOS X should be installed using the configure script.
+   This file is for other macs.
+
+   It is not integrated into <cppunit/Portability.h> because we don't
+   know a suitable preprocessor symbol that will distinguish MacOS X
+   from other MacOS versions.  Email us if you know the answer.
+*/
+/* define if library uses std::string::compare(string,pos,n) */
+#ifdef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST 
+#undef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST
+#endif
+
+/* define if the library defines strstream */
+#ifndef CPPUNIT_HAVE_CLASS_STRSTREAM 
+#define CPPUNIT_HAVE_CLASS_STRSTREAM  1 
+#endif
+
+/* Define if you have the <cmath> header file. */
+#ifdef CPPUNIT_HAVE_CMATH 
+#undef CPPUNIT_HAVE_CMATH
+#endif
+
+/* Define if you have the <dlfcn.h> header file. */
+#ifdef CPPUNIT_HAVE_DLFCN_H 
+#undef CPPUNIT_HAVE_DLFCN_H
+#endif
+
+/* define to 1 if the compiler implements namespaces */
+#ifndef CPPUNIT_HAVE_NAMESPACES 
+#define CPPUNIT_HAVE_NAMESPACES  1 
+#endif
+
+/* define if the compiler supports Run-Time Type Identification */
+#ifndef CPPUNIT_HAVE_RTTI 
+#define CPPUNIT_HAVE_RTTI  1 
+#endif
+
+/* define if the compiler has stringstream */
+#ifndef CPPUNIT_HAVE_SSTREAM 
+#define CPPUNIT_HAVE_SSTREAM  1 
+#endif
+
+/* Define if you have the <strstream> header file. */
+#ifndef CPPUNIT_HAVE_STRSTREAM 
+#define CPPUNIT_HAVE_STRSTREAM  1 
+#endif
+
+/* Define to 1 to use type_info::name() for class names */
+#ifndef CPPUNIT_USE_TYPEINFO_NAME 
+#define CPPUNIT_USE_TYPEINFO_NAME  CPPUNIT_HAVE_RTTI 
+#endif
+
+/* _INCLUDE_CPPUNIT_CONFIG_MAC_H */
+#endif
diff --git a/lib/cppunit-1.10.0/include/cppunit/config/config-msvc6.h b/lib/cppunit-1.10.0/include/cppunit/config/config-msvc6.h
new file mode 100644 (file)
index 0000000..51df8af
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _INCLUDE_CPPUNIT_CONFIG_MSVC6_H
+#define _INCLUDE_CPPUNIT_CONFIG_MSVC6_H 1
+
+#if _MSC_VER > 1000     // VC++
+#pragma warning( disable : 4786 )   // disable warning debug symbol > 255...
+#endif // _MSC_VER > 1000
+
+#define HAVE_CMATH 1
+/* include/cppunit/config-msvc6.h. Manually adapted from 
+   include/cppunit/config-auto.h */
+
+/* define to 1 if the compiler implements namespaces */
+#ifndef CPPUNIT_HAVE_NAMESPACES 
+#define CPPUNIT_HAVE_NAMESPACES  1 
+#endif
+
+/* define if library uses std::string::compare(string,pos,n) */
+#ifdef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST 
+#undef CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST
+#endif
+
+/* Define if you have the <dlfcn.h> header file. */
+#ifdef CPPUNIT_HAVE_DLFCN_H 
+#undef CPPUNIT_HAVE_DLFCN_H 
+#endif
+
+/* define to 1 if the compiler implements namespaces */
+#ifndef CPPUNIT_HAVE_NAMESPACES 
+#define CPPUNIT_HAVE_NAMESPACES  1 
+#endif
+
+/* define if the compiler supports Run-Time Type Identification */
+#ifndef CPPUNIT_HAVE_RTTI 
+#define CPPUNIT_HAVE_RTTI  1 
+#endif
+
+/* Define to 1 to use type_info::name() for class names */
+#ifndef CPPUNIT_USE_TYPEINFO_NAME 
+#define CPPUNIT_USE_TYPEINFO_NAME  CPPUNIT_HAVE_RTTI 
+#endif
+
+#define CPPUNIT_HAVE_SSTREAM 1
+
+/* Name of package */
+#ifndef CPPUNIT_PACKAGE 
+#define CPPUNIT_PACKAGE  "cppunit" 
+#endif
+
+
+// Compiler error location format for CompilerOutputter
+// See class CompilerOutputter for format.
+#undef CPPUNIT_COMPILER_LOCATION_FORMAT
+#if _MSC_VER >= 1300    // VS 7.0
+# define CPPUNIT_COMPILER_LOCATION_FORMAT "%p(%l) : error : "
+#else
+# define CPPUNIT_COMPILER_LOCATION_FORMAT "%p(%l):"
+#endif
+
+// Uncomment to turn on STL wrapping => use this to test compilation. 
+// This will make CppUnit subclass std::vector & co to provide default
+// parameter.
+/*#define CPPUNIT_STD_NEED_ALLOCATOR 1
+#define CPPUNIT_STD_ALLOCATOR std::allocator<T>
+//#define CPPUNIT_NO_NAMESPACE 1
+*/
+
+
+/* _INCLUDE_CPPUNIT_CONFIG_MSVC6_H */
+#endif
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/AutoRegisterSuite.h b/lib/cppunit-1.10.0/include/cppunit/extensions/AutoRegisterSuite.h
new file mode 100644 (file)
index 0000000..e04adb5
--- /dev/null
@@ -0,0 +1,83 @@
+#ifndef CPPUNIT_EXTENSIONS_AUTOREGISTERSUITE_H
+#define CPPUNIT_EXTENSIONS_AUTOREGISTERSUITE_H
+
+#include <cppunit/extensions/TestSuiteFactory.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <string>
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief (Implementation) Automatically register the test suite of the specified type.
+ *
+ * You should not use this class directly. Instead, use the following macros:
+ * - CPPUNIT_TEST_SUITE_REGISTRATION()
+ * - CPPUNIT_TEST_SUITE_NAMED_REGISTRATION()
+ *
+ * This object will register the test returned by TestCaseType::suite()
+ * when constructed to the test registry.
+ *
+ * This object is intented to be used as a static variable.
+ *
+ *
+ * \param TestCaseType Type of the test case which suite is registered.
+ * \see CPPUNIT_TEST_SUITE_REGISTRATION, CPPUNIT_TEST_SUITE_NAMED_REGISTRATION
+ * \see CppUnit::TestFactoryRegistry.
+ */
+template<class TestCaseType>
+class AutoRegisterSuite
+{
+public:
+  /** Auto-register the suite factory in the global registry.
+   */
+  AutoRegisterSuite()
+      : m_registry( &TestFactoryRegistry::getRegistry() )
+  {
+    m_registry->registerFactory( &m_factory );
+  }
+
+  /** Auto-register the suite factory in the specified registry.
+   * \param name Name of the registry.
+   */
+  AutoRegisterSuite( const std::string &name )
+      : m_registry( &TestFactoryRegistry::getRegistry( name ) )
+  {
+    m_registry->registerFactory( &m_factory );
+  }
+
+  ~AutoRegisterSuite()
+  {
+    if ( TestFactoryRegistry::isValid() )
+      m_registry->unregisterFactory( &m_factory );
+  }
+
+private:
+  TestFactoryRegistry *m_registry;
+  TestSuiteFactory<TestCaseType> m_factory;
+};
+
+
+/*! \brief (Implementation) Automatically adds a registry into another registry.
+ *
+ * Don't use this class. Use the macros CPPUNIT_REGISTRY_ADD() and
+ * CPPUNIT_REGISTRY_ADD_TO_DEFAULT() instead.
+ */
+class AutoRegisterRegistry
+{
+public:
+  AutoRegisterRegistry( const std::string &which,
+                        const std::string &to )
+  {
+    TestFactoryRegistry::getRegistry( to ).addRegistry( which );
+  }
+
+  AutoRegisterRegistry( const std::string &which )
+  {
+    TestFactoryRegistry::getRegistry().addRegistry( which );
+  }
+};
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_EXTENSIONS_AUTOREGISTERSUITE_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/ExceptionTestCaseDecorator.h b/lib/cppunit-1.10.0/include/cppunit/extensions/ExceptionTestCaseDecorator.h
new file mode 100644 (file)
index 0000000..9c816ad
--- /dev/null
@@ -0,0 +1,104 @@
+#ifndef CPPUNIT_EXTENSIONS_EXCEPTIONTESTCASEDECORATOR_H
+#define CPPUNIT_EXTENSIONS_EXCEPTIONTESTCASEDECORATOR_H
+
+#include <cppunit/Portability.h>
+#include <cppunit/Exception.h>
+#include <cppunit/extensions/TestCaseDecorator.h>
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief Expected exception test case decorator.
+ *
+ * A decorator used to assert that a specific test case should throw an
+ * exception of a given type.
+ *
+ * You should use this class only if you need to check the exception object
+ * state (that a specific cause is set for example). If you don't need to
+ * do that, you might consider using CPPUNIT_TEST_EXCEPTION() instead.
+ *
+ * Intended use is to subclass and override checkException(). Example:
+ *
+ * \code
+ *
+ * class NetworkErrorTestCaseDecorator : 
+ *           public ExceptionTestCaseDecorator<NetworkError>
+ * {
+ * public:
+ *   NetworkErrorTestCaseDecorator( NetworkError::Cause expectedCause )
+ *       : m_expectedCause( expectedCause )
+ *   {
+ *   }
+ * private:
+ *   void checkException( ExpectedExceptionType &e )
+ *   {
+ *     CPPUNIT_ASSERT_EQUAL( m_expectedCause, e.getCause() );
+ *   }
+ *
+ *   NetworkError::Cause m_expectedCause;
+ * };
+ * \endcode
+ *
+ */ 
+template<class ExpectedException>
+class ExceptionTestCaseDecorator : public TestCaseDecorator
+{
+public:
+  typedef ExpectedException ExpectedExceptionType;
+
+  /*! \brief Decorates the specified test.
+   * \param test TestCase to decorate. Assumes ownership of the test.
+   */
+  ExceptionTestCaseDecorator( TestCase *test )
+      : TestCaseDecorator( test )
+  {
+  }
+
+  /*! \brief Checks that the expected exception is thrown by the decorated test.
+   * is thrown.
+   *
+   * Calls the decorated test runTest() and checks that an exception of
+   * type ExpectedException is thrown. Call checkException() passing the
+   * exception that was caught so that some assertions can be made if
+   * needed.
+   */
+  void runTest()
+  {
+    try
+    {
+      TestCaseDecorator::runTest();
+    }
+    catch ( ExpectedExceptionType &e )
+    {
+      checkException( e );
+      return;
+    }
+
+    // Moved outside the try{} statement to handle the case where the
+    // expected exception type is Exception (expecting assertion failure).
+#if CPPUNIT_USE_TYPEINFO_NAME
+      throw Exception( Message(
+                         "expected exception not thrown",
+                         "Expected exception type: " + 
+                           TypeInfoHelper::getClassName( 
+                               typeid( ExpectedExceptionType ) ) ) );
+#else
+      throw Exception( Message("expected exception not thrown") );
+#endif
+  }
+
+private:
+  /*! \brief Called when the exception is caught.
+   *
+   * Should be overriden to check the exception.
+   */
+  virtual void checkException( ExpectedExceptionType &e )
+  {
+  }
+};
+
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_EXTENSIONS_EXCEPTIONTESTCASEDECORATOR_H
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/HelperMacros.h b/lib/cppunit-1.10.0/include/cppunit/extensions/HelperMacros.h
new file mode 100644 (file)
index 0000000..12431e4
--- /dev/null
@@ -0,0 +1,541 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file HelperMacros.h
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/04/15
+// //////////////////////////////////////////////////////////////////////////
+#ifndef CPPUNIT_EXTENSIONS_HELPERMACROS_H
+#define CPPUNIT_EXTENSIONS_HELPERMACROS_H
+
+#include <cppunit/TestCaller.h>
+#include <cppunit/TestSuite.h>
+#include <cppunit/extensions/AutoRegisterSuite.h>
+#include <cppunit/extensions/ExceptionTestCaseDecorator.h>
+#include <cppunit/extensions/TestFixtureFactory.h>
+#include <cppunit/extensions/TestNamer.h>
+#include <cppunit/extensions/TestSuiteBuilderContext.h>
+#include <memory>
+
+
+/*! \addtogroup WritingTestFixture Writing test fixture
+ */
+/** @{
+ */
+
+
+/** \file
+ * Macros intended to ease the definition of test suites.
+ *
+ * The macros
+ * CPPUNIT_TEST_SUITE(), CPPUNIT_TEST(), and CPPUNIT_TEST_SUITE_END()
+ * are designed to facilitate easy creation of a test suite.
+ * For example,
+ *
+ * \code
+ * #include <cppunit/extensions/HelperMacros.h>
+ * class MyTest : public CppUnit::TestFixture {
+ *   CPPUNIT_TEST_SUITE( MyTest );
+ *   CPPUNIT_TEST( testEquality );
+ *   CPPUNIT_TEST( testSetName );
+ *   CPPUNIT_TEST_SUITE_END();
+ * public:
+ *   void testEquality();
+ *   void testSetName();
+ * };
+ * \endcode
+ * 
+ * The effect of these macros is to define two methods in the
+ * class MyTest.  The first method is an auxiliary function
+ * named registerTests that you will not need to call directly.
+ * The second function
+ * \code static CppUnit::TestSuite *suite()\endcode
+ * returns a pointer to the suite of tests defined by the CPPUNIT_TEST()
+ * macros.  
+ *
+ * Rather than invoking suite() directly,
+ * the macro CPPUNIT_TEST_SUITE_REGISTRATION() is
+ * used to create a static variable that automatically
+ * registers its test suite in a global registry.
+ * The registry yields a Test instance containing all the
+ * registered suites.
+ * \code
+ * CPPUNIT_TEST_SUITE_REGISTRATION( MyTest );
+ * CppUnit::Test* tp =
+ *   CppUnit::TestFactoryRegistry::getRegistry().makeTest();
+ * \endcode
+ * 
+ * The test suite macros can even be used with templated test classes.
+ * For example:
+ *
+ * \code
+ * template<typename CharType>
+ * class StringTest : public CppUnit::TestFixture {
+ *   CPPUNIT_TEST_SUITE( StringTest );
+ *   CPPUNIT_TEST( testAppend );
+ *   CPPUNIT_TEST_SUITE_END();
+ * public:  
+ *   ...
+ * };
+ * \endcode
+ *
+ * You need to add in an implementation file:
+ *
+ * \code
+ * CPPUNIT_TEST_SUITE_REGISTRATION( StringTest<char> );
+ * CPPUNIT_TEST_SUITE_REGISTRATION( StringTest<wchar_t> );
+ * \endcode
+ */
+
+
+/*! \brief Begin test suite
+ *
+ * This macro starts the declaration of a new test suite.
+ * Use CPPUNIT_TEST_SUB_SUITE() instead, if you wish to include the
+ * test suite of the parent class.
+ *
+ * \param ATestFixtureType Type of the test case class. This type \b MUST
+ *                         be derived from TestFixture.
+ * \see CPPUNIT_TEST_SUB_SUITE, CPPUNIT_TEST, CPPUNIT_TEST_SUITE_END, 
+ * \see CPPUNIT_TEST_SUITE_REGISTRATION, CPPUNIT_TEST_EXCEPTION, CPPUNIT_TEST_FAIL.
+ */
+#define CPPUNIT_TEST_SUITE( ATestFixtureType )                              \
+  public:                                                                   \
+    typedef ATestFixtureType TestFixtureType;                               \
+                                                                            \
+  private:                                                                  \
+    static const CPPUNIT_NS::TestNamer &getTestNamer__()                    \
+    {                                                                       \
+      static CPPUNIT_TESTNAMER_DECL( testNamer, ATestFixtureType );         \
+      return testNamer;                                                     \
+    }                                                                       \
+                                                                            \
+  public:                                                                   \
+    typedef CPPUNIT_NS::TestSuiteBuilderContext<TestFixtureType>            \
+                TestSuiteBuilderContextType;                                \
+                                                                            \
+    static void                                                             \
+    addTestsToSuite( CPPUNIT_NS::TestSuiteBuilderContextBase &baseContext ) \
+    {                                                                       \
+      TestSuiteBuilderContextType context( baseContext )
+
+
+/*! \brief Begin test suite (includes parent suite)
+ * 
+ * This macro may only be used in a class whose parent class
+ * defines a test suite using CPPUNIT_TEST_SUITE() or CPPUNIT_TEST_SUB_SUITE().
+ *
+ * This macro begins the declaration of a test suite, in the same
+ * manner as CPPUNIT_TEST_SUITE().  In addition, the test suite of the
+ * parent is automatically inserted in the test suite being
+ * defined.
+ * 
+ * Here is an example:
+ *
+ * \code
+ * #include <cppunit/extensions/HelperMacros.h>
+ * class MySubTest : public MyTest {
+ *   CPPUNIT_TEST_SUB_SUITE( MySubTest, MyTest );
+ *   CPPUNIT_TEST( testAdd );
+ *   CPPUNIT_TEST( testSub );
+ *   CPPUNIT_TEST_SUITE_END();
+ * public:
+ *   void testAdd();
+ *   void testSub();
+ * };
+ * \endcode
+ *
+ * \param ATestFixtureType Type of the test case class. This type \b MUST
+ *                         be derived from TestFixture.
+ * \param ASuperClass   Type of the parent class.
+ * \see CPPUNIT_TEST_SUITE.
+ */
+#define CPPUNIT_TEST_SUB_SUITE( ATestFixtureType, ASuperClass )  \
+  public:                                                        \
+    typedef ASuperClass ParentTestFixtureType;                   \
+  private:                                                       \
+    CPPUNIT_TEST_SUITE( ATestFixtureType );                      \
+      ParentTestFixtureType::addTestsToSuite( baseContext )
+
+
+/*! \brief End declaration of the test suite.
+ *
+ * After this macro, member access is set to "private".
+ *
+ * \see  CPPUNIT_TEST_SUITE.
+ * \see  CPPUNIT_TEST_SUITE_REGISTRATION.
+ */
+#define CPPUNIT_TEST_SUITE_END()                                               \
+    }                                                                          \
+                                                                               \
+    static CPPUNIT_NS::TestSuite *suite()                                      \
+    {                                                                          \
+      const CPPUNIT_NS::TestNamer &namer = getTestNamer__();                   \
+      std::auto_ptr<CPPUNIT_NS::TestSuite> suite(                              \
+             new CPPUNIT_NS::TestSuite( namer.getFixtureName() ));             \
+      CPPUNIT_NS::ConcretTestFixtureFactory<TestFixtureType> factory;          \
+      CPPUNIT_NS::TestSuiteBuilderContextBase context( *suite.get(),           \
+                                                       namer,                  \
+                                                       factory );              \
+      TestFixtureType::addTestsToSuite( context );                             \
+      return suite.release();                                                  \
+    }                                                                          \
+  private: /* dummy typedef so that the macro can still end with ';'*/         \
+    typedef int CppUnitDummyTypedefForSemiColonEnding__
+
+/*! \brief End declaration of an abstract test suite.
+ *
+ * Use this macro to indicate that the %TestFixture is abstract. No
+ * static suite() method will be declared. 
+ *
+ * After this macro, member access is set to "private".
+ *
+ * Here is an example of usage:
+ *
+ * The abstract test fixture:
+ * \code
+ * #include <cppunit/extensions/HelperMacros.h>
+ * class AbstractDocument;
+ * class AbstractDocumentTest : public CppUnit::TestFixture {
+ *   CPPUNIT_TEST_SUITE( AbstractDocumentTest );
+ *   CPPUNIT_TEST( testInsertText );
+ *   CPPUNIT_TEST_SUITE_END_ABSTRACT();
+ * public:
+ *   void testInsertText();
+ * 
+ *   void setUp()
+ *   {
+ *     m_document = makeDocument();
+ *   }
+ *
+ *   void tearDown()
+ *   {
+ *     delete m_document;
+ *   }
+ * protected:
+ *   virtual AbstractDocument *makeDocument() =0;
+ *
+ *   AbstractDocument *m_document;
+ * };\endcode
+ *
+ * The concret test fixture:
+ * \code
+ * class RichTextDocumentTest : public AbstractDocumentTest {
+ *   CPPUNIT_TEST_SUB_SUITE( RichTextDocumentTest, AbstractDocumentTest );
+ *   CPPUNIT_TEST( testInsertFormatedText );
+ *   CPPUNIT_TEST_SUITE_END();
+ * public:
+ *   void testInsertFormatedText();
+ * protected:
+ *   AbstractDocument *makeDocument()
+ *   {
+ *     return new RichTextDocument();
+ *   }
+ * };\endcode
+ *
+ * \see  CPPUNIT_TEST_SUB_SUITE.
+ * \see  CPPUNIT_TEST_SUITE_REGISTRATION.
+ */
+#define CPPUNIT_TEST_SUITE_END_ABSTRACT()                                      \
+    }                                                                          \
+  private: /* dummy typedef so that the macro can still end with ';'*/         \
+    typedef int CppUnitDummyTypedefForSemiColonEnding__
+
+
+/*! \brief Add a test to the suite (for custom test macro).
+ *
+ * The specified test will be added to the test suite being declared. This macro
+ * is intended for \e advanced usage, to extend %CppUnit by creating new macro such
+ * as CPPUNIT_TEST_EXCEPTION()...
+ *
+ * Between macro CPPUNIT_TEST_SUITE() and CPPUNIT_TEST_SUITE_END(), you can assume
+ * that the following variables can be used:
+ * \code
+ * typedef TestSuiteBuilder<TestFixtureType> TestSuiteBuilderType;
+ * TestSuiteBuilderType &context;
+ * \endcode
+ *
+ * \c context can be used to name test case, create new test fixture instance,
+ * or add test case to the test fixture suite.
+ *
+ * Below is an example that show how to use this macro to create new macro to add
+ * test to the fixture suite. The macro below show how you would add a new type
+ * of test case which fails if the execution last more than a given time limit.
+ * It relies on an imaginary TimeOutTestCaller class which has an interface similar
+ * to TestCaller.
+ * 
+ * \code
+ * #define CPPUNITEX_TEST_TIMELIMIT( testMethod, timeLimit )            \
+ *      CPPUNIT_TEST_SUITE_ADD_TEST( (new TimeOutTestCaller<TestFixtureType>(  \
+ *                  namer.getTestNameFor( #testMethod ),                \
+ *                  &TestFixtureType::testMethod,                   \
+ *                  factory.makeFixture(),                              \
+ *                  timeLimit ) ) )
+ *   
+ * class PerformanceTest : CppUnit::TestFixture
+ * {
+ * public:
+ *   CPPUNIT_TEST_SUITE( PerformanceTest );
+ *   CPPUNITEX_TEST_TIMELIMIT( testSortReverseOrder, 5.0 );
+ *   CPPUNIT_TEST_SUITE_END();
+ *
+ *   void testSortReverseOrder();
+ * };
+ * \endcode
+ *
+ * \param test Test to add to the suite. Must be a subclass of Test. The test name
+ *             should have been obtained using TestNamer::getTestNameFor().
+ */
+#define CPPUNIT_TEST_SUITE_ADD_TEST( test ) \
+      context.addTest( test )
+
+/*! \brief Add a method to the suite.
+ * \param testMethod Name of the method of the test case to add to the
+ *                   suite. The signature of the method must be of
+ *                   type: void testMethod();
+ * \see  CPPUNIT_TEST_SUITE.
+ */
+#define CPPUNIT_TEST( testMethod )                        \
+    CPPUNIT_TEST_SUITE_ADD_TEST(                           \
+        ( new CPPUNIT_NS::TestCaller<TestFixtureType>(    \
+                  context.getTestNameFor( #testMethod),   \
+                  &TestFixtureType::testMethod,           \
+                  context.makeFixture() ) ) )
+
+/*! \brief Add a test which fail if the specified exception is not caught.
+ *
+ * Example:
+ * \code
+ * #include <cppunit/extensions/HelperMacros.h>
+ * #include <vector>
+ * class MyTest : public CppUnit::TestFixture {
+ *   CPPUNIT_TEST_SUITE( MyTest );
+ *   CPPUNIT_TEST_EXCEPTION( testVectorAtThrow, std::invalid_argument );
+ *   CPPUNIT_TEST_SUITE_END();
+ * public:
+ *   void testVectorAtThrow()
+ *   {
+ *     std::vector<int> v;
+ *     v.at( 1 );     // must throw exception std::invalid_argument
+ *   }
+ * };
+ * \endcode
+ *
+ * \param testMethod Name of the method of the test case to add to the suite.
+ * \param ExceptionType Type of the exception that must be thrown by the test 
+ *                      method.
+ * \deprecated Use the assertion macro CPPUNIT_ASSERT_THROW instead.
+ */
+#define CPPUNIT_TEST_EXCEPTION( testMethod, ExceptionType )          \
+  CPPUNIT_TEST_SUITE_ADD_TEST(                                        \
+      (new CPPUNIT_NS::ExceptionTestCaseDecorator< ExceptionType >(  \
+          new CPPUNIT_NS::TestCaller< TestFixtureType >(             \
+                               context.getTestNameFor( #testMethod ),  \
+                               &TestFixtureType::testMethod,         \
+                               context.makeFixture() ) ) ) )
+
+/*! \brief Adds a test case which is excepted to fail.
+ *
+ * The added test case expect an assertion to fail. You usually used that type
+ * of test case when testing custom assertion macros.
+ *
+ * \code
+ * CPPUNIT_TEST_FAIL( testAssertFalseFail );
+ * 
+ * void testAssertFalseFail()
+ * {
+ *   CPPUNIT_ASSERT( false );
+ * }
+ * \endcode
+ * \see CreatingNewAssertions.
+ * \deprecated Use the assertion macro CPPUNIT_ASSERT_ASSERTION_FAIL instead.
+ */
+#define CPPUNIT_TEST_FAIL( testMethod ) \
+              CPPUNIT_TEST_EXCEPTION( testMethod, CPPUNIT_NS::Exception )
+
+/*! \brief Adds some custom test cases.
+ *
+ * Use this to add one or more test cases to the fixture suite. The specified
+ * method is called with a context parameter that can be used to name, 
+ * instantiate fixture, and add instantiated test case to the fixture suite.
+ * The specified method must have the following signature:
+ * \code
+ * static void aMethodName( TestSuiteBuilderContextType &context );
+ * \endcode
+ *
+ * \c TestSuiteBuilderContextType is typedef to 
+ * TestSuiteBuilderContext<TestFixtureType> declared by CPPUNIT_TEST_SUITE().
+ *
+ * Here is an example that add two custom tests:
+ *
+ * \code
+ * #include <cppunit/extensions/HelperMacros.h>
+ *
+ * class MyTest : public CppUnit::TestFixture {
+ *   CPPUNIT_TEST_SUITE( MyTest );
+ *   CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS( addTimeOutTests );
+ *   CPPUNIT_TEST_SUITE_END();
+ * public:
+ *   static void addTimeOutTests( TestSuiteBuilderContextType &context )
+ *   {
+ *     context.addTest( new TimeOutTestCaller( context.getTestNameFor( "test1" ) ),
+ *                                             &MyTest::test1,
+ *                                             context.makeFixture(),
+ *                                             5.0 );
+ *     context.addTest( new TimeOutTestCaller( context.getTestNameFor( "test2" ) ),
+ *                                             &MyTest::test2,
+ *                                             context.makeFixture(),
+ *                                             5.0 );
+ *   }
+ *
+ *   void test1()
+ *   {
+ *     // Do some test that may never end...
+ *   }
+ *
+ *   void test2()
+ *   {
+ *     // Do some test that may never end...
+ *   }
+ * };
+ * \endcode
+ * @param testAdderMethod Name of the method called to add the test cases.
+ */
+#define CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS( testAdderMethod ) \
+      testAdderMethod( context )
+
+/*! \brief Adds a property to the test suite builder context.
+ * \param APropertyKey   Key of the property to add.
+ * \param APropertyValue Value for the added property.
+ * Example:
+ * \code
+ * CPPUNIT_TEST_SUITE_PROPERTY("XmlFileName", "paraTest.xml"); \endcode
+ */
+#define CPPUNIT_TEST_SUITE_PROPERTY( APropertyKey, APropertyValue ) \
+    context.addProperty( std::string(APropertyKey),                 \
+                         std::string(APropertyValue) )
+
+/** @}
+ */
+
+
+/*! Adds the specified fixture suite to the unnamed registry.
+ * \ingroup CreatingTestSuite
+ *
+ * This macro declares a static variable whose construction
+ * causes a test suite factory to be inserted in a global registry
+ * of such factories.  The registry is available by calling
+ * the static function CppUnit::TestFactoryRegistry::getRegistry().
+ * 
+ * \param ATestFixtureType Type of the test case class.
+ * \warning This macro should be used only once per line of code (the line
+ *          number is used to name a hidden static variable).
+ * \see CPPUNIT_TEST_SUITE_NAMED_REGISTRATION
+ * \see CPPUNIT_REGISTRY_ADD_TO_DEFAULT
+ * \see CPPUNIT_REGISTRY_ADD
+ * \see CPPUNIT_TEST_SUITE, CppUnit::AutoRegisterSuite, 
+ *      CppUnit::TestFactoryRegistry.
+ */
+#define CPPUNIT_TEST_SUITE_REGISTRATION( ATestFixtureType )      \
+  static CPPUNIT_NS::AutoRegisterSuite< ATestFixtureType >       \
+             CPPUNIT_MAKE_UNIQUE_NAME(autoRegisterRegistry__ )
+
+
+/** Adds the specified fixture suite to the specified registry suite.
+ * \ingroup CreatingTestSuite
+ *
+ * This macro declares a static variable whose construction
+ * causes a test suite factory to be inserted in the global registry
+ * suite of the specified name. The registry is available by calling
+ * the static function CppUnit::TestFactoryRegistry::getRegistry().
+ * 
+ * For the suite name, use a string returned by a static function rather
+ * than a hardcoded string. That way, you can know what are the name of
+ * named registry and you don't risk mistyping the registry name.
+ *
+ * \code
+ * // MySuites.h
+ * namespace MySuites {
+ *   std::string math() { 
+ *     return "Math";
+ *   }
+ * }
+ *
+ * // ComplexNumberTest.cpp
+ * #include "MySuites.h"
+ * 
+ * CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ComplexNumberTest, MySuites::math() );
+ * \endcode
+ *
+ * \param ATestFixtureType Type of the test case class.
+ * \param suiteName Name of the global registry suite the test suite is 
+ *                  registered into.
+ * \warning This macro should be used only once per line of code (the line
+ *          number is used to name a hidden static variable).
+ * \see CPPUNIT_TEST_SUITE_REGISTRATION
+ * \see CPPUNIT_REGISTRY_ADD_TO_DEFAULT
+ * \see CPPUNIT_REGISTRY_ADD
+ * \see CPPUNIT_TEST_SUITE, CppUnit::AutoRegisterSuite, 
+ *      CppUnit::TestFactoryRegistry..
+ */
+#define CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ATestFixtureType, suiteName ) \
+  static CPPUNIT_NS::AutoRegisterSuite< ATestFixtureType >                   \
+             CPPUNIT_MAKE_UNIQUE_NAME(autoRegisterRegistry__ )(suiteName)
+
+/*! Adds that the specified registry suite to another registry suite.
+ * \ingroup CreatingTestSuite
+ *
+ * Use this macros to automatically create test registry suite hierarchy. For example,
+ * if you want to create the following hierarchy:
+ * - Math
+ *   - IntegerMath
+ *   - FloatMath
+ *     - FastFloat
+ *     - StandardFloat
+ * 
+ * You can do this automatically with:
+ * \code
+ * CPPUNIT_REGISTRY_ADD( "FastFloat", "FloatMath" );
+ * CPPUNIT_REGISTRY_ADD( "IntegerMath", "Math" );
+ * CPPUNIT_REGISTRY_ADD( "FloatMath", "Math" );
+ * CPPUNIT_REGISTRY_ADD( "StandardFloat", "FloatMath" );
+ * \endcode
+ *
+ * There is no specific order of declaration. Think of it as declaring links.
+ *
+ * You register the test in each suite using CPPUNIT_TEST_SUITE_NAMED_REGISTRATION.
+ *
+ * \param which Name of the registry suite to add to the registry suite named \a to.
+ * \param to Name of the registry suite \a which is added to.
+ * \see CPPUNIT_REGISTRY_ADD_TO_DEFAULT, CPPUNIT_TEST_SUITE_NAMED_REGISTRATION.
+ */
+#define CPPUNIT_REGISTRY_ADD( which, to )                                     \
+  static CPPUNIT_NS::AutoRegisterRegistry                                     \
+             CPPUNIT_MAKE_UNIQUE_NAME( autoRegisterRegistry__ )( which, to )
+
+/*! Adds that the specified registry suite to the default registry suite.
+ * \ingroup CreatingTestSuite
+ *
+ * This macro is just like CPPUNIT_REGISTRY_ADD except the specified registry
+ * suite is added to the default suite (root suite).
+ *
+ * \param which Name of the registry suite to add to the default registry suite.
+ * \see CPPUNIT_REGISTRY_ADD.
+ */
+#define CPPUNIT_REGISTRY_ADD_TO_DEFAULT( which )                         \
+  static CPPUNIT_NS::AutoRegisterRegistry                                \
+             CPPUNIT_MAKE_UNIQUE_NAME( autoRegisterRegistry__ )( which )
+
+// Backwards compatibility
+// (Not tested!)
+
+#if CPPUNIT_ENABLE_CU_TEST_MACROS
+
+#define CU_TEST_SUITE(tc) CPPUNIT_TEST_SUITE(tc)
+#define CU_TEST_SUB_SUITE(tc,sc) CPPUNIT_TEST_SUB_SUITE(tc,sc)
+#define CU_TEST(tm) CPPUNIT_TEST(tm)
+#define CU_TEST_SUITE_END() CPPUNIT_TEST_SUITE_END()
+#define CU_TEST_SUITE_REGISTRATION(tc) CPPUNIT_TEST_SUITE_REGISTRATION(tc)
+
+#endif
+
+
+#endif  // CPPUNIT_EXTENSIONS_HELPERMACROS_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/extensions/Makefile.am
new file mode 100644 (file)
index 0000000..ff96de3
--- /dev/null
@@ -0,0 +1,19 @@
+libcppunitincludedir = $(includedir)/cppunit/extensions
+
+libcppunitinclude_HEADERS = \
+       TestFactory.h \
+       AutoRegisterSuite.h \
+       HelperMacros.h \
+       Orthodox.h \
+       RepeatedTest.h \
+       ExceptionTestCaseDecorator.h \
+       TestCaseDecorator.h \
+       TestDecorator.h \
+       TestFactoryRegistry.h \
+       TestFixtureFactory.h \
+       TestNamer.h \
+       TestSetUp.h \
+       TestSuiteBuilderContext.h \
+       TestSuiteFactory.h \
+       TypeInfoHelper.h
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/extensions/Makefile.in
new file mode 100644 (file)
index 0000000..015d160
--- /dev/null
@@ -0,0 +1,389 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+libcppunitincludedir = $(includedir)/cppunit/extensions
+
+libcppunitinclude_HEADERS = \
+       TestFactory.h \
+       AutoRegisterSuite.h \
+       HelperMacros.h \
+       Orthodox.h \
+       RepeatedTest.h \
+       ExceptionTestCaseDecorator.h \
+       TestCaseDecorator.h \
+       TestDecorator.h \
+       TestFactoryRegistry.h \
+       TestFixtureFactory.h \
+       TestNamer.h \
+       TestSetUp.h \
+       TestSuiteBuilderContext.h \
+       TestSuiteFactory.h \
+       TypeInfoHelper.h
+
+subdir = include/cppunit/extensions
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+HEADERS = $(libcppunitinclude_HEADERS)
+
+DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  include/cppunit/extensions/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+uninstall-libcppunitincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libcppunitincludeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libcppunitincludeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool ctags distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am info \
+       info-am install install-am install-data install-data-am \
+       install-exec install-exec-am install-info install-info-am \
+       install-libcppunitincludeHEADERS install-man install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-info-am \
+       uninstall-libcppunitincludeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/Orthodox.h b/lib/cppunit-1.10.0/include/cppunit/extensions/Orthodox.h
new file mode 100644 (file)
index 0000000..7221259
--- /dev/null
@@ -0,0 +1,95 @@
+#ifndef CPPUNIT_EXTENSIONS_ORTHODOX_H
+#define CPPUNIT_EXTENSIONS_ORTHODOX_H
+
+#include <cppunit/TestCase.h>
+
+CPPUNIT_NS_BEGIN
+
+
+/*
+ * Orthodox performs a simple set of tests on an arbitary
+ * class to make sure that it supports at least the
+ * following operations:
+ *
+ *      default construction    - constructor
+ *      equality/inequality     - operator== && operator!=
+ *      assignment              - operator=
+ *      negation                - operator!
+ *      safe passage            - copy construction
+ *
+ * If operations for each of these are not declared
+ * the template will not instantiate.  If it does 
+ * instantiate, tests are performed to make sure
+ * that the operations have correct semantics.
+ *      
+ * Adding an orthodox test to a suite is very 
+ * easy: 
+ * 
+ * public: Test *suite ()  {
+ *     TestSuite *suiteOfTests = new TestSuite;
+ *     suiteOfTests->addTest (new ComplexNumberTest ("testAdd");
+ *     suiteOfTests->addTest (new TestCaller<Orthodox<Complex> > ());
+ *     return suiteOfTests;
+ *  }
+ *
+ * Templated test cases be very useful when you are want to
+ * make sure that a group of classes have the same form.
+ *
+ * see TestSuite
+ */
+
+
+template <class ClassUnderTest> class Orthodox : public TestCase
+{
+public:
+                    Orthodox () : TestCase ("Orthodox") {}
+
+protected:
+    ClassUnderTest  call (ClassUnderTest object);
+    void            runTest ();
+
+
+};
+
+
+// Run an orthodoxy test
+template <class ClassUnderTest> void Orthodox<ClassUnderTest>::runTest ()
+{
+    // make sure we have a default constructor
+    ClassUnderTest   a, b, c;
+
+    // make sure we have an equality operator
+    CPPUNIT_ASSERT (a == b);
+
+    // check the inverse
+    b.operator= (a.operator! ());
+    CPPUNIT_ASSERT (a != b);
+
+    // double inversion
+    b = !!a;
+    CPPUNIT_ASSERT (a == b);
+
+    // invert again
+    b = !a;
+
+    // check calls
+    c = a;
+    CPPUNIT_ASSERT (c == call (a));
+
+    c = b;
+    CPPUNIT_ASSERT (c == call (b));
+
+}
+
+
+// Exercise a call
+template <class ClassUnderTest> 
+ClassUnderTest Orthodox<ClassUnderTest>::call (ClassUnderTest object)
+{
+    return object;
+}
+
+
+CPPUNIT_NS_END
+
+#endif
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/RepeatedTest.h b/lib/cppunit-1.10.0/include/cppunit/extensions/RepeatedTest.h
new file mode 100644 (file)
index 0000000..390ce48
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef CPPUNIT_EXTENSIONS_REPEATEDTEST_H
+#define CPPUNIT_EXTENSIONS_REPEATEDTEST_H
+
+#include <cppunit/Portability.h>
+#include <cppunit/extensions/TestDecorator.h>
+
+CPPUNIT_NS_BEGIN
+
+
+class Test;
+class TestResult;
+
+
+/*! \brief Decorator that runs a test repeatedly.
+ *
+ * Does not assume ownership of the test it decorates
+ */
+class CPPUNIT_API RepeatedTest : public TestDecorator 
+{
+public:
+  RepeatedTest( Test *test, 
+                int timesRepeat ) : 
+      TestDecorator( test ), 
+      m_timesRepeat(timesRepeat) 
+  {
+  }
+
+  void run( TestResult *result );
+
+  int countTestCases() const;
+
+private:
+  RepeatedTest( const RepeatedTest & );
+  void operator=( const RepeatedTest & );
+
+  const int m_timesRepeat;
+};
+
+
+CPPUNIT_NS_END
+
+
+#endif // CPPUNIT_EXTENSIONS_REPEATEDTEST_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestCaseDecorator.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestCaseDecorator.h
new file mode 100644 (file)
index 0000000..3a15ba9
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef CPPUNIT_EXTENSIONS_TESTCASEDECORATOR_H
+#define CPPUNIT_EXTENSIONS_TESTCASEDECORATOR_H
+
+#include <cppunit/Portability.h>
+#include <cppunit/TestCase.h>
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief  Decorator for Test cases.
+ *
+ * TestCaseDecorator provides an alternate means to extend functionality
+ * of a test class without subclassing the test.  Instead, one can
+ * subclass the decorater and use it to wrap the test class.
+ *
+ * Does not assume ownership of the test it decorates
+ */ 
+class CPPUNIT_API TestCaseDecorator : public TestCase
+{
+public:
+  TestCaseDecorator( TestCase *test );
+  ~TestCaseDecorator();
+
+  std::string getName() const;
+
+  void setUp();
+
+  void tearDown();
+
+  void runTest();
+
+protected:
+  TestCase *m_test;
+};
+
+
+CPPUNIT_NS_END
+
+#endif
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestDecorator.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestDecorator.h
new file mode 100644 (file)
index 0000000..59d9a30
--- /dev/null
@@ -0,0 +1,49 @@
+#ifndef CPPUNIT_EXTENSIONS_TESTDECORATOR_H
+#define CPPUNIT_EXTENSIONS_TESTDECORATOR_H
+
+#include <cppunit/Portability.h>
+#include <cppunit/Test.h>
+
+CPPUNIT_NS_BEGIN
+
+
+class TestResult;
+
+
+/*! \brief  Decorator for Tests.
+ *
+ * TestDecorator provides an alternate means to extend functionality
+ * of a test class without subclassing the test.  Instead, one can
+ * subclass the decorater and use it to wrap the test class.
+ *
+ * Does not assume ownership of the test it decorates
+ */ 
+class CPPUNIT_API TestDecorator : public Test
+{
+public:
+  TestDecorator( Test *test );
+  ~TestDecorator();
+
+  int countTestCases() const;
+
+  std::string getName() const;
+
+  void run( TestResult *result );
+
+  int getChildTestCount() const;
+
+protected:
+  Test *doGetChildTestAt( int index ) const;
+
+  Test *m_test;
+
+private:
+  TestDecorator( const TestDecorator &);
+  void operator =( const TestDecorator & );
+};
+
+
+CPPUNIT_NS_END
+
+#endif
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestFactory.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestFactory.h
new file mode 100644 (file)
index 0000000..214d353
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef CPPUNIT_EXTENSIONS_TESTFACTORY_H
+#define CPPUNIT_EXTENSIONS_TESTFACTORY_H
+
+#include <cppunit/Portability.h>
+
+CPPUNIT_NS_BEGIN
+
+
+class Test;
+
+/*! \brief Abstract Test factory.
+ */
+class CPPUNIT_API TestFactory 
+{
+public:
+  virtual ~TestFactory() {}
+
+  /*! Makes a new test.
+   * \return A new Test.
+   */
+  virtual Test* makeTest() = 0;
+};
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_EXTENSIONS_TESTFACTORY_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestFactoryRegistry.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestFactoryRegistry.h
new file mode 100644 (file)
index 0000000..fc8723e
--- /dev/null
@@ -0,0 +1,182 @@
+#ifndef CPPUNIT_EXTENSIONS_TESTFACTORYREGISTRY_H
+#define CPPUNIT_EXTENSIONS_TESTFACTORYREGISTRY_H
+
+#include <cppunit/Portability.h>
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( push )
+#pragma warning( disable: 4251)  // X needs to have dll-interface to be used by clients of class Z
+#endif
+
+#include <cppunit/portability/CppUnitSet.h>
+#include <cppunit/extensions/TestFactory.h>
+#include <string>
+
+CPPUNIT_NS_BEGIN
+
+
+class TestSuite;
+
+#if CPPUNIT_NEED_DLL_DECL
+//  template class CPPUNIT_API std::set<TestFactory *>;
+#endif
+
+
+/*! \brief Registry for TestFactory.
+ * \ingroup CreatingTestSuite
+ *
+ * Notes that the registry \b DON'T assumes lifetime control for any registered tests
+ * anymore.
+ *
+ * The <em>default</em> registry is the registry returned by getRegistry() with the 
+ * default name parameter value.
+ *
+ * To register tests, use the macros:
+ * - CPPUNIT_TEST_SUITE_REGISTRATION(): to add tests in the default registry.
+ * - CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(): to add tests in a named registry.
+ *
+ * Example 1: retreiving a suite that contains all the test registered with
+ * CPPUNIT_TEST_SUITE_REGISTRATION().
+ * \code
+ * CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry();
+ * CppUnit::TestSuite *suite = registry.makeTest();
+ * \endcode
+ *
+ * Example 2: retreiving a suite that contains all the test registered with
+ * \link CPPUNIT_TEST_SUITE_NAMED_REGISTRATION() CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ..., "Math" )\endlink.
+ * \code
+ * CppUnit::TestFactoryRegistry &mathRegistry = CppUnit::TestFactoryRegistry::getRegistry( "Math" );
+ * CppUnit::TestSuite *mathSuite = mathRegistry.makeTest();
+ * \endcode
+ *
+ * Example 3: creating a test suite hierarchy composed of unnamed registration and
+ * named registration:
+ * - All Tests
+ *   - tests registered with CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ..., "Graph" )
+ *   - tests registered with CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( ..., "Math" )
+ *   - tests registered with CPPUNIT_TEST_SUITE_REGISTRATION
+ *
+ * \code
+ * CppUnit::TestSuite *rootSuite = new CppUnit::TestSuite( "All tests" );
+ * rootSuite->addTest( CppUnit::TestFactoryRegistry::getRegistry( "Graph" ).makeTest() );
+ * rootSuite->addTest( CppUnit::TestFactoryRegistry::getRegistry( "Math" ).makeTest() );
+ * CppUnit::TestFactoryRegistry::getRegistry().addTestToSuite( rootSuite );
+ * \endcode
+ *
+ * The same result can be obtained with:
+ * \code
+ * CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry();
+ * registry.addRegistry( "Graph" );
+ * registry.addRegistry( "Math" );
+ * CppUnit::TestSuite *suite = registry.makeTest();
+ * \endcode
+ *
+ * Since a TestFactoryRegistry is a TestFactory, the named registries can be 
+ * registered in the unnamed registry, creating the hierarchy links.
+ *
+ * \see TestSuiteFactory, AutoRegisterSuite
+ * \see CPPUNIT_TEST_SUITE_REGISTRATION, CPPUNIT_TEST_SUITE_NAMED_REGISTRATION
+ */
+class CPPUNIT_API TestFactoryRegistry : public TestFactory
+{
+public:
+  /** Constructs the registry with the specified name.
+   * \param name Name of the registry. It is the name of TestSuite returned by
+   *             makeTest().
+   */
+  TestFactoryRegistry( std::string name );
+
+  /// Destructor.
+  virtual ~TestFactoryRegistry();
+
+  /** Returns a new TestSuite that contains the registered test.
+   * \return A new TestSuite which contains all the test added using 
+   * registerFactory(TestFactory *).
+   */
+  virtual Test *makeTest();
+
+  /** Returns a named registry.
+   *
+   * If the \a name is left to its default value, then the registry that is returned is
+   * the one used by CPPUNIT_TEST_SUITE_REGISTRATION(): the 'top' level registry.
+   *
+   * \param name Name of the registry to return.
+   * \return Registry. If the registry does not exist, it is created with the
+   *         specified name.
+   */
+  static TestFactoryRegistry &getRegistry( const std::string &name = "All Tests" );
+
+  /** Adds the registered tests to the specified suite.
+   * \param suite Suite the tests are added to.
+   */
+  void addTestToSuite( TestSuite *suite );
+
+  /** Adds the specified TestFactory to the registry.
+   *
+   * \param factory Factory to register. 
+   */
+  void registerFactory( TestFactory *factory );
+
+  /*! Removes the specified TestFactory from the registry.
+   * 
+   * The specified factory is not destroyed.
+   * \param factory Factory to remove from the registry.
+   * \todo Address case when trying to remove a TestRegistryFactory.
+   */
+  void unregisterFactory( TestFactory *factory );
+
+  /*! Adds a registry to the registry.
+   * 
+   * Convenience method to help create test hierarchy. See TestFactoryRegistry detail
+   * for examples of use. Calling this method is equivalent to:
+   * \code
+   * this->registerFactory( TestFactoryRegistry::getRegistry( name ) );
+   * \endcode
+   *
+   * \param name Name of the registry to add.
+   */
+  void addRegistry( const std::string &name );
+
+  /*! Tests if the registry is valid.
+   *
+   * This method should be used when unregistering test factory on static variable 
+   * destruction to ensure that the registry has not been already destroyed (in 
+   * that case there is no need to unregister the test factory).
+   *
+   * You should not concern yourself with this method unless you are writing a class
+   * like AutoRegisterSuite.
+   *
+   * \return \c true if the specified registry has not been destroyed, 
+   *         otherwise returns \c false.
+   * \see AutoRegisterSuite.
+   */
+  static bool isValid();
+
+  /** Adds the specified TestFactory with a specific name (DEPRECATED).
+   * \param name Name associated to the factory.
+   * \param factory Factory to register. 
+   * \deprecated Use registerFactory( TestFactory *) instead.
+   */
+  void registerFactory( const std::string &name,
+                        TestFactory *factory );
+
+private:
+  TestFactoryRegistry( const TestFactoryRegistry &copy );
+  void operator =( const TestFactoryRegistry &copy );
+
+private:
+  typedef CppUnitSet<TestFactory *, std::less<TestFactory*> > Factories;
+  Factories m_factories;
+
+  std::string m_name;
+};
+
+
+CPPUNIT_NS_END
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( pop )
+#endif
+
+
+#endif  // CPPUNIT_EXTENSIONS_TESTFACTORYREGISTRY_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestFixtureFactory.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestFixtureFactory.h
new file mode 100644 (file)
index 0000000..1e3e803
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef CPPUNIT_EXTENSIONS_TESTFIXTUREFACTORY_H
+#define CPPUNIT_EXTENSIONS_TESTFIXTUREFACTORY_H
+
+#include <cppunit/Portability.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+class TestFixture;
+
+/*! \brief Abstract TestFixture factory (Implementation).
+ *
+ * Implementation detail. Use by HelperMacros to handle TestFixture hierarchy.
+ */
+class TestFixtureFactory
+{
+public:
+  //! Creates a new TestFixture instance.
+  virtual TestFixture *makeFixture() =0;
+};
+
+
+/*! \brief Concret TestFixture factory (Implementation).
+ *
+ * Implementation detail. Use by HelperMacros to handle TestFixture hierarchy.
+ */
+template<class TestFixtureType>
+class ConcretTestFixtureFactory : public CPPUNIT_NS::TestFixtureFactory
+{
+  /*! \brief Returns a new TestFixture instance.
+   * \return A new fixture instance. The fixture instance is returned by
+   *         the TestFixtureFactory passed on construction. The actual type 
+   *         is that of the fixture on which the static method suite() 
+   *         was called.
+   */
+  TestFixture *makeFixture()
+  {
+    return new TestFixtureType();
+  }
+};
+
+
+CPPUNIT_NS_END
+
+
+#endif // CPPUNIT_EXTENSIONS_TESTFIXTUREFACTORY_H
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestNamer.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestNamer.h
new file mode 100644 (file)
index 0000000..5a6471c
--- /dev/null
@@ -0,0 +1,89 @@
+#ifndef CPPUNIT_EXTENSIONS_TESTNAMER_H
+#define CPPUNIT_EXTENSIONS_TESTNAMER_H
+
+#include <cppunit/Portability.h>
+#include <string>
+
+#if CPPUNIT_HAVE_RTTI
+#  include <typeinfo>
+#endif
+
+
+
+/*! \def CPPUNIT_TESTNAMER_DECL( variableName, FixtureType )
+ * \brief Declares a TestNamer.
+ *
+ * Declares a TestNamer for the specified type, using RTTI if enabled, otherwise
+ * using macro string expansion.
+ *
+ * RTTI is used if CPPUNIT_USE_TYPEINFO_NAME is defined and not null.
+ *
+ * \code
+ * void someMethod() 
+ * {
+ *   CPPUNIT_TESTNAMER_DECL( namer, AFixtureType );
+ *   std::string fixtureName = namer.getFixtureName();
+ *   ...
+ * \endcode
+ *
+ * \relates TestNamer
+ * \see TestNamer
+ */
+#if CPPUNIT_USE_TYPEINFO_NAME
+#  define CPPUNIT_TESTNAMER_DECL( variableName, FixtureType )       \
+              CPPUNIT_NS::TestNamer variableName( typeid(FixtureType) )
+#else
+#  define CPPUNIT_TESTNAMER_DECL( variableName, FixtureType )       \
+              CPPUNIT_NS::TestNamer variableName( std::string(#FixtureType) )
+#endif
+
+
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief Names a test or a fixture suite.
+ *
+ * TestNamer is usually instantiated using CPPUNIT_TESTNAMER_DECL.
+ *
+ */
+class CPPUNIT_API TestNamer
+{
+public:
+#if CPPUNIT_HAVE_RTTI
+  /*! \brief Constructs a namer using the fixture's type-info.
+   * \param typeInfo Type-info of the fixture type. Use to name the fixture suite.
+   */
+  TestNamer( const std::type_info &typeInfo );
+#endif
+
+  /*! \brief Constructs a namer using the specified fixture name.
+   * \param fixtureName Name of the fixture suite. Usually extracted using a macro.
+   */
+  TestNamer( const std::string &fixtureName );
+
+  virtual ~TestNamer();
+
+  /*! \brief Returns the name of the fixture.
+   * \return Name of the fixture.
+   */
+  virtual std::string getFixtureName() const;
+
+  /*! \brief Returns the name of the test for the specified method.
+   * \param testMethodName Name of the method that implements a test.
+   * \return A string that is the concatenation of the test fixture name 
+   *         (returned by getFixtureName()) and\a testMethodName, 
+   *         separated using '::'. This provides a fairly unique name for a given
+   *         test.
+   */
+  virtual std::string getTestNameFor( const std::string &testMethodName ) const;
+
+protected:
+  std::string m_fixtureName;
+};
+
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_EXTENSIONS_TESTNAMER_H
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestSetUp.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestSetUp.h
new file mode 100644 (file)
index 0000000..f2128ec
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef CPPUNIT_EXTENSIONS_TESTSETUP_H
+#define CPPUNIT_EXTENSIONS_TESTSETUP_H
+
+#include <cppunit/extensions/TestDecorator.h>
+
+CPPUNIT_NS_BEGIN
+
+
+class Test;
+class TestResult;
+
+/*! \brief Decorates a test by providing a specific setUp() and tearDown().
+ */
+class CPPUNIT_API TestSetUp : public TestDecorator 
+{
+public:
+  TestSetUp( Test *test );
+
+  void run( TestResult *result );
+
+protected:
+  virtual void setUp();
+  virtual void tearDown();
+
+private:
+  TestSetUp( const TestSetUp & );
+  void operator =( const TestSetUp & );
+};
+
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_EXTENSIONS_TESTSETUP_H
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestSuiteBuilderContext.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestSuiteBuilderContext.h
new file mode 100644 (file)
index 0000000..171455b
--- /dev/null
@@ -0,0 +1,122 @@
+#ifndef CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H
+#define CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H
+
+#include <cppunit/Portability.h>
+#include <cppunit/portability/CppUnitMap.h>
+#include <string>
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( push )
+#pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
+#endif
+
+CPPUNIT_NS_BEGIN
+
+class TestSuite;
+class TestFixture;
+class TestFixtureFactory;
+class TestNamer;
+
+/*! \brief Context used when creating test suite in HelperMacros.
+ *
+ * Base class for all context used when creating test suite. The
+ * actual context type during test suite creation is TestSuiteBuilderContext.
+ *
+ * \sa CPPUNIT_TEST_SUITE, CPPUNIT_TEST_SUITE_ADD_TEST, 
+ *     CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS.
+ */
+class CPPUNIT_API TestSuiteBuilderContextBase
+{
+public:
+  /*! \brief Constructs a new context.
+   *
+   * You should not use this. The context is created in 
+   * CPPUNIT_TEST_SUITE().
+   */
+  TestSuiteBuilderContextBase( TestSuite &suite,
+                               const TestNamer &namer,
+                               TestFixtureFactory &factory );
+
+  /*! \brief Adds a test to the fixture suite.
+   *
+   * \param test Test to add to the fixture suite. Must not be \c NULL.
+   */
+  void addTest( Test *test );
+
+  /*! \brief Returns the fixture name.
+   * \return Fixture name. It is the name used to name the fixture
+   *         suite.
+   */
+  std::string getFixtureName() const;
+
+  /*! \brief Returns the name of the test for the specified method.
+   *
+   * \param testMethodName Name of the method that implements a test.
+   * \return A string that is the concatenation of the test fixture name 
+   *         (returned by getFixtureName()) and\a testMethodName, 
+   *         separated using '::'. This provides a fairly unique name for a given
+   *         test.
+   */
+  std::string getTestNameFor( const std::string &testMethodName ) const;
+
+  /*! \brief Adds property pair.
+   * \param key   PropertyKey string to add.
+   * \param value PropertyValue string to add.
+   */
+  void addProperty( const std::string &key, 
+                    const std::string &value );
+  
+  /*! \brief Returns property value assigned to param key.
+   * \param key PropertyKey string.
+   */
+  const std::string getStringProperty( const std::string &key ) const;
+
+protected:
+  TestFixture *makeTestFixture() const;
+
+  typedef CppUnitMap<std::string,std::string> Properties;
+
+  TestSuite &m_suite;
+  const TestNamer &m_namer;
+  TestFixtureFactory &m_factory;
+  Properties m_properties;
+};
+
+
+/*! \brief Type-sage context used when creating test suite in HelperMacros.
+ * 
+ * \sa TestSuiteBuilderContextBase.
+ */
+template<class Fixture>
+class TestSuiteBuilderContext : public TestSuiteBuilderContextBase
+{
+public:
+  typedef Fixture FixtureType;
+
+  TestSuiteBuilderContext( TestSuiteBuilderContextBase &contextBase )
+      : TestSuiteBuilderContextBase( contextBase )
+  {
+  }
+
+  /*! \brief Returns a new TestFixture instance.
+   * \return A new fixture instance. The fixture instance is returned by
+   *         the TestFixtureFactory passed on construction. The actual type 
+   *         is that of the fixture on which the static method suite() 
+   *         was called.
+   */
+  FixtureType *makeFixture() const
+  {
+    return CPPUNIT_STATIC_CAST( FixtureType *, 
+                                TestSuiteBuilderContextBase::makeTestFixture() );
+  }
+};
+
+
+CPPUNIT_NS_END
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( pop )
+#endif
+
+#endif // CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TestSuiteFactory.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TestSuiteFactory.h
new file mode 100644 (file)
index 0000000..260b483
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef CPPUNIT_EXTENSIONS_TESTSUITEFACTORY_H
+#define CPPUNIT_EXTENSIONS_TESTSUITEFACTORY_H
+
+#include <cppunit/extensions/TestFactory.h>
+
+CPPUNIT_NS_BEGIN
+
+
+  class Test;
+
+  /*! \brief TestFactory for TestFixture that implements a static suite() method.
+   * \see AutoRegisterSuite.
+   */
+  template<class TestCaseType>
+  class TestSuiteFactory : public TestFactory
+  {
+  public:
+    virtual Test *makeTest()
+    {
+      return TestCaseType::suite();
+    }
+  };
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_EXTENSIONS_TESTSUITEFACTORY_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/extensions/TypeInfoHelper.h b/lib/cppunit-1.10.0/include/cppunit/extensions/TypeInfoHelper.h
new file mode 100644 (file)
index 0000000..8dad4f5
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef CPPUNIT_TYPEINFOHELPER_H
+#define CPPUNIT_TYPEINFOHELPER_H
+
+#include <cppunit/Portability.h>
+
+#if CPPUNIT_HAVE_RTTI
+
+#include <typeinfo>
+
+CPPUNIT_NS_BEGIN
+
+
+  /**! \brief Helper to use type_info.
+   */
+  class CPPUNIT_API TypeInfoHelper
+  {
+  public:
+    /*! \brief Get the class name of the specified type_info.
+     * \param info Info which the class name is extracted from.
+     * \return The string returned by type_info::name() without
+     *         the "class" prefix. If the name is not prefixed
+     *         by "class", it is returned as this.
+     */
+    static std::string getClassName( const std::type_info &info );
+  };
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_HAVE_RTTI
+
+#endif  // CPPUNIT_TYPEINFOHELPER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/DynamicLibraryManager.h b/lib/cppunit-1.10.0/include/cppunit/plugin/DynamicLibraryManager.h
new file mode 100644 (file)
index 0000000..b93ebad
--- /dev/null
@@ -0,0 +1,120 @@
+#ifndef CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGER_H
+#define CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGER_H
+
+#include <cppunit/Portability.h>
+
+#if !defined(CPPUNIT_NO_TESTPLUGIN)
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief Manages dynamic libraries.
+ *
+ * The Dynamic Library Manager provides a platform independent way to work with
+ * dynamic library. It load a specific dynamic library, and can returns specific
+ * symbol exported by the dynamic library.
+ *
+ * If an error occurs, a DynamicLibraryManagerException is thrown.
+ *
+ * \internal Implementation of the OS independent methods is in 
+ * DynamicLibraryManager.cpp.
+ *
+ * \internal Porting to a new platform:
+ * - Adds platform detection in config/SelectDllLoader.h. Should define a specific
+ *   macro for that platform of the form: CPPUNIT_HAVE_XYZ_DLL_LOADER, where
+ *   XYZ is the platform.
+ * - Makes a copy of UnixDynamicLibraryManager.cpp and named it after the platform.
+ * - Updated the 'guard' in your file (CPPUNIT_HAVE_XYZ_DLL_LOADER) so that it is
+ *   only processed if the matching platform has been detected.
+ * - Change the implementation of methods doLoadLibrary(), doReleaseLibrary(), 
+ *   doFindSymbol() in your copy. Those methods usually maps directly to OS calls.
+ * - Adds the file to the project.
+ */
+class DynamicLibraryManager
+{
+public:
+  typedef void *Symbol;
+  typedef void *LibraryHandle;
+
+  /*! \brief Loads the specified library.
+   * \param libraryFileName Name of the library to load.
+   * \exception DynamicLibraryManagerException if a failure occurs while loading
+   *            the library (fail to found or load the library).
+   */
+  DynamicLibraryManager( const std::string &libraryFileName );
+
+  /// Releases the loaded library..
+  ~DynamicLibraryManager();
+
+  /*! \brief Returns a pointer on the specified symbol exported by the library.
+   * \param symbol Name of the symbol exported by the library.
+   * \return Pointer on the symbol. Should be casted to the actual type. Never \c NULL.
+   * \exception DynamicLibraryManagerException if the symbol is not found.
+   */
+  Symbol findSymbol( const std::string &symbol );
+
+private:
+  /*! Loads the specified library.
+   * \param libraryName Name of the library to load.
+   * \exception DynamicLibraryManagerException if a failure occurs while loading
+   *            the library (fail to found or load the library).
+   */
+  void loadLibrary( const std::string &libraryName );
+
+  /*! Releases the loaded library.
+   * 
+   * \warning Must NOT throw any exceptions (called from destructor).
+   */
+  void releaseLibrary();
+
+  /*! Loads the specified library.
+   * 
+   * May throw any exceptions (indicates failure).
+   * \param libraryName Name of the library to load.
+   * \return Handle of the loaded library. \c NULL indicates failure.
+   */
+  LibraryHandle doLoadLibrary( const std::string &libraryName );
+
+  /*! Releases the loaded library.
+   *
+   * The handle of the library to free is in \c m_libraryHandle. It is never
+   * \c NULL.
+   * \warning Must NOT throw any exceptions (called from destructor).
+   */
+  void doReleaseLibrary();
+
+  /*! Returns a pointer on the specified symbol exported by the library.
+   * 
+   * May throw any exceptions (indicates failure).
+   * \param symbol Name of the symbol exported by the library.
+   * \return Pointer on the symbol. \c NULL indicates failure.
+   */
+  Symbol doFindSymbol( const std::string &symbol );
+
+  /*! Returns detailed information about doLoadLibrary() failure.
+   *
+   * Called just after a failed call to doLoadLibrary() to get extra
+   * error information.
+   *
+   * \return Detailed information about the failure of the call to
+   *         doLoadLibrary() that just failed.
+   */
+  std::string getLastErrorDetail() const;
+
+  /// Prevents the use of the copy constructor.
+  DynamicLibraryManager( const DynamicLibraryManager &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const DynamicLibraryManager &copy );
+
+private:
+  LibraryHandle m_libraryHandle;
+  std::string m_libraryName;
+};
+
+
+CPPUNIT_NS_END
+
+#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
+
+#endif  // CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/DynamicLibraryManagerException.h b/lib/cppunit-1.10.0/include/cppunit/plugin/DynamicLibraryManagerException.h
new file mode 100644 (file)
index 0000000..11ebbd9
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGEREXCEPTION_H
+#define CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGEREXCEPTION_H
+
+#include <cppunit/Portability.h>
+
+#if !defined(CPPUNIT_NO_TESTPLUGIN)
+#include <stdexcept>
+#include <string>
+
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief Exception thrown by DynamicLibraryManager when a failure occurs.
+ *
+ * Use getCause() to know what function caused the failure.
+ *
+ */
+class DynamicLibraryManagerException : public std::runtime_error
+{
+public:
+  enum Cause
+  {
+    /// Failed to load the dynamic library
+    loadingFailed =0,
+    /// Symbol not found in the dynamic library
+    symbolNotFound
+  };
+
+  /// Failed to load the dynamic library or Symbol not found in the dynamic library.
+  DynamicLibraryManagerException( const std::string &libraryName,
+                                  const std::string &errorDetail,
+                                  Cause cause );
+
+  ~DynamicLibraryManagerException() throw()
+  {
+  }
+
+  Cause getCause() const;
+
+  const char *what() const throw();
+
+private:
+  std::string m_message;
+  Cause m_cause;
+};
+
+
+CPPUNIT_NS_END
+
+#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
+
+#endif  // CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGEREXCEPTION_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/plugin/Makefile.am
new file mode 100644 (file)
index 0000000..5221a66
--- /dev/null
@@ -0,0 +1,9 @@
+libcppunitincludedir = $(includedir)/cppunit/plugin
+
+libcppunitinclude_HEADERS = \
+       DynamicLibraryManager.h \
+       DynamicLibraryManagerException.h \
+       TestPlugIn.h \
+       TestPlugInDefaultImpl.h \
+       PlugInManager.h \
+       PlugInParameters.h
diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/plugin/Makefile.in
new file mode 100644 (file)
index 0000000..b57b6db
--- /dev/null
@@ -0,0 +1,380 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+libcppunitincludedir = $(includedir)/cppunit/plugin
+
+libcppunitinclude_HEADERS = \
+       DynamicLibraryManager.h \
+       DynamicLibraryManagerException.h \
+       TestPlugIn.h \
+       TestPlugInDefaultImpl.h \
+       PlugInManager.h \
+       PlugInParameters.h
+
+subdir = include/cppunit/plugin
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+HEADERS = $(libcppunitinclude_HEADERS)
+
+DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  include/cppunit/plugin/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+uninstall-libcppunitincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libcppunitincludeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libcppunitincludeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool ctags distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am info \
+       info-am install install-am install-data install-data-am \
+       install-exec install-exec-am install-info install-info-am \
+       install-libcppunitincludeHEADERS install-man install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-info-am \
+       uninstall-libcppunitincludeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/PlugInManager.h b/lib/cppunit-1.10.0/include/cppunit/plugin/PlugInManager.h
new file mode 100644 (file)
index 0000000..a2b8e15
--- /dev/null
@@ -0,0 +1,113 @@
+#ifndef CPPUNIT_PLUGIN_PLUGINMANAGER_H
+#define CPPUNIT_PLUGIN_PLUGINMANAGER_H
+
+#include <cppunit/Portability.h>
+
+#if !defined(CPPUNIT_NO_TESTPLUGIN)
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( push )
+#pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
+#endif
+
+#include <cppunit/plugin/PlugInParameters.h>
+struct CppUnitTestPlugIn;
+
+CPPUNIT_NS_BEGIN
+
+
+class DynamicLibraryManager;
+class TestResult;
+class XmlOutputter;
+
+
+/*! \brief Manges TestPlugIn.
+ */
+class CPPUNIT_API PlugInManager
+{
+public:
+  /*! Constructs a PlugInManager object.
+   */
+  PlugInManager();
+
+  /// Destructor.
+  virtual ~PlugInManager();
+
+  /*! \brief Loads the specified plug-in.
+   *
+   * After being loaded, the CppUnitTestPlugIn::initialize() is called.
+   *
+   * \param libraryFileName Name of the file that contains the TestPlugIn.
+   * \param parameters List of string passed to the plug-in.
+   * \return Pointer on the DynamicLibraryManager associated to the library.
+   *         Valid until the library is unloaded. Never \c NULL.
+   * \exception DynamicLibraryManager is thrown if an error occurs during loading.
+   */
+  void load( const std::string &libraryFileName,
+             const PlugInParameters &parameters = PlugInParameters() );
+
+  /*! \brief Unloads the specified plug-in.
+   * \param libraryFileName Name of the file that contains the TestPlugIn passed
+   *                        to a previous call to load().
+   */
+  void unload( const std::string &libraryFileName );
+
+  /*! \brief Gives a chance to each loaded plug-in to register TestListener.
+   *
+   * For each plug-in, call CppUnitTestPlugIn::addListener().
+   */
+  void addListener( TestResult *eventManager );
+
+  /*! \brief Gives a chance to each loaded plug-in to unregister TestListener.
+   * For each plug-in, call CppUnitTestPlugIn::removeListener().
+   */
+  void removeListener( TestResult *eventManager );
+
+  /*! \brief Provides a way for the plug-in to register some XmlOutputterHook.
+   */
+  void addXmlOutputterHooks( XmlOutputter *outputter );
+
+  /*! \brief Called when the XmlOutputter is destroyed.
+   * 
+   * Can be used to free some resources allocated by addXmlOutputterHooks().
+   */
+  void removeXmlOutputterHooks();
+
+protected:
+  /*! \brief (INTERNAL) Information about a specific plug-in.
+   */
+  struct PlugInInfo
+  {
+    std::string m_fileName;
+    DynamicLibraryManager *m_manager;
+    CppUnitTestPlugIn *m_interface;
+  };
+
+  /*! Unloads the specified plug-in.
+   * \param plugIn Information about the plug-in.
+   */
+  void unload( PlugInInfo &plugIn );
+
+private:
+  /// Prevents the use of the copy constructor.
+  PlugInManager( const PlugInManager &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const PlugInManager &copy );
+
+private:
+  typedef CppUnitDeque<PlugInInfo> PlugIns;
+  PlugIns m_plugIns;
+};
+
+
+CPPUNIT_NS_END
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( pop )
+#endif
+
+#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
+
+
+#endif  // CPPUNIT_PLUGIN_PLUGINMANAGER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/PlugInParameters.h b/lib/cppunit-1.10.0/include/cppunit/plugin/PlugInParameters.h
new file mode 100644 (file)
index 0000000..c67d0f1
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef CPPUNIT_PLUGIN_PARAMETERS
+#define CPPUNIT_PLUGIN_PARAMETERS
+
+#include <cppunit/Portability.h>
+
+#if !defined(CPPUNIT_NO_TESTPLUGIN)
+
+#include <cppunit/portability/CppUnitDeque.h>
+#include <string>
+
+CPPUNIT_NS_BEGIN
+
+/*! \brief Test plug-ins parameters.
+ */
+class CPPUNIT_API PlugInParameters
+{
+public:
+  /// Constructs plug-in parameters from the specified command-line.
+  PlugInParameters( const std::string &commandLine = "" );
+
+  virtual ~PlugInParameters();
+
+  /// Returns the command line that was passed on construction.
+  std::string getCommandLine() const;
+
+private:
+  std::string m_commandLine;
+};
+
+
+CPPUNIT_NS_END
+
+#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
+
+
+#endif // CPPUNIT_PLUGIN_PARAMETERS
diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/TestPlugIn.h b/lib/cppunit-1.10.0/include/cppunit/plugin/TestPlugIn.h
new file mode 100644 (file)
index 0000000..3a6f908
--- /dev/null
@@ -0,0 +1,197 @@
+#ifndef CPPUNIT_PLUGIN_TESTPLUGIN
+#define CPPUNIT_PLUGIN_TESTPLUGIN
+
+#include <cppunit/Portability.h>
+
+#if !defined(CPPUNIT_NO_TESTPLUGIN)
+
+#include <cppunit/plugin/PlugInParameters.h>
+
+CPPUNIT_NS_BEGIN
+
+
+class Test;
+class TestFactoryRegistry;
+class TestResult;
+class XmlOutputter;
+
+CPPUNIT_NS_END
+
+/*! \file
+ */
+
+
+/*! \brief Test plug-in interface.
+ * \ingroup WritingTestPlugIn
+ *
+ * This class define the interface implemented by test plug-in. A pointer to that
+ * interface is returned by the function exported by the test plug-in.
+ *
+ * Plug-in are loaded/unloaded by PlugInManager. When a plug-in is loaded, 
+ * initialize() is called. Before unloading the plug-in, the PlugInManager
+ * call uninitialize().
+ *
+ * addListener() and removeListener() are called respectively before and after
+ * the test run.
+ *
+ * addXmlOutputterHooks() and removeXmlOutputterHooks() are called respectively
+ * before and after writing the XML output using a XmlOutputter.
+ *
+ * \see CPPUNIT_PLUGIN_IMPLEMENT, CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL
+ * \see CppUnit::TestPlugInDefaultImpl, CppUnit::XmlOutputter.
+ */
+struct CppUnitTestPlugIn
+{
+  /*! \brief Called just after loading the dynamic library. 
+   *
+   * Override this method to add additional suite to the registry, though this
+   * is preferably done using the macros (CPPUNIT_TEST_SUITE_REGISTRATION...).
+   * If you are creating a custom listener to extends the plug-in runner,
+   * you can use this to configure the listener using the \a parameters.
+   *
+   * You could also use the parameters to specify some global parameter, such
+   * as test datas location, database name...
+   *
+   * N.B.: Parameters interface is not define yet, and the plug-in runner does
+   * not yet support plug-in parameter.
+   */
+  virtual void initialize( CPPUNIT_NS::TestFactoryRegistry *registry,
+                           const CPPUNIT_NS::PlugInParameters &parameters ) =0;
+
+  /*! \brief Gives a chance to the plug-in to register TestListener.
+   * 
+   * Override this method to add a TestListener for the test run. This is useful
+   * if you are writing a custom TestListener, but also if you need to
+   * setUp some global resource: listen to TestListener::startTestRun(), 
+   * and TestListener::endTestRun().
+   */
+  virtual void addListener( CPPUNIT_NS::TestResult *eventManager ) =0;
+
+  /*! \brief Gives a chance to the plug-in to remove its registered TestListener.
+   *
+   * Override this method to remove a TestListener that has been added.
+   */
+  virtual void removeListener( CPPUNIT_NS::TestResult *eventManager ) =0;
+
+  /*! \brief Provides a way for the plug-in to register some XmlOutputterHook.
+   */
+  virtual void addXmlOutputterHooks( CPPUNIT_NS::XmlOutputter *outputter ) =0;
+
+  /*! \brief Called when the XmlOutputter is destroyed.
+   * 
+   * Can be used to free some resources allocated by addXmlOutputterHooks().
+   */
+  virtual void removeXmlOutputterHooks() = 0;
+
+  /*! \brief Called just before unloading the dynamic library.
+   * 
+   * Override this method to unregister test factory added in initialize().
+   * This is necessary to keep the TestFactoryRegistry 'clean'. When
+   * the plug-in is unloaded from memory, the TestFactoryRegistry will hold
+   * reference on test that are no longer available if they are not 
+   * unregistered.
+   */
+  virtual void uninitialize( CPPUNIT_NS::TestFactoryRegistry *registry ) =0;
+};
+
+
+
+/*! \brief Name of the function exported by a test plug-in.
+ * \ingroup WritingTestPlugIn
+ *
+ * The signature of the exported function is:
+ * \code
+ * CppUnitTestPlugIn *CPPUNIT_PLUGIN_EXPORTED_NAME(void);
+ * \endif
+ */
+#define CPPUNIT_PLUGIN_EXPORTED_NAME cppunitTestPlugIn
+
+/*! \brief Type of the function exported by a plug-in.
+ * \ingroup WritingTestPlugIn
+ */
+typedef CppUnitTestPlugIn *(*TestPlugInSignature)();
+
+
+/*! \brief Implements the function exported by the test plug-in
+ * \ingroup WritingTestPlugIn
+ */
+#define CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL( TestPlugInInterfaceType )       \
+  CPPUNIT_PLUGIN_EXPORT CppUnitTestPlugIn *CPPUNIT_PLUGIN_EXPORTED_NAME(void)  \
+  {                                                                            \
+    static TestPlugInInterfaceType plugIn;                                     \
+    return &plugIn;                                                            \
+  }                                                                            \
+  typedef char __CppUnitPlugInExportFunctionDummyTypeDef  // dummy typedef so it can end with ';'
+
+
+// Note: This include should remain after definition of CppUnitTestPlugIn
+#include <cppunit/plugin/TestPlugInDefaultImpl.h>
+
+
+/*! \def CPPUNIT_PLUGIN_IMPLEMENT_MAIN()
+ * \brief Implements the 'main' function for the plug-in.
+ *
+ * This macros implements the main() function for dynamic library.
+ * For example, WIN32 requires a DllMain function, while some Unix 
+ * requires a main() function. This macros takes care of the implementation.
+ */
+
+// Win32
+#if defined(CPPUNIT_HAVE_WIN32_DLL_LOADER)
+#if !defined(APIENTRY)
+#define WIN32_LEAN_AND_MEAN 
+#define NOGDI
+#define NOUSER
+#define NOKERNEL
+#define NOSOUND
+#define NOMINMAX
+#include <windows.h>
+#endif
+#define CPPUNIT_PLUGIN_IMPLEMENT_MAIN()               \
+  BOOL APIENTRY DllMain( HANDLE hModule,              \
+                         DWORD  ul_reason_for_call,   \
+                         LPVOID lpReserved )          \
+  {                                                   \
+      return TRUE;                                    \
+  }                                                   \
+  typedef char __CppUnitPlugInImplementMainDummyTypeDef
+
+// Unix
+#elif defined(CPPUNIT_HAVE_UNIX_DLL_LOADER) || defined(CPPUNIT_HAVE_UNIX_SHL_LOADER)
+#define CPPUNIT_PLUGIN_IMPLEMENT_MAIN()               \
+  int main( int argc, char *argv[] )                  \
+  {                                                   \
+    return 0;                                         \
+  }                                                   \
+  typedef char __CppUnitPlugInImplementMainDummyTypeDef
+
+
+// Other
+#else     // other platforms don't require anything specifics
+#endif
+
+
+
+/*! \brief Implements and exports the test plug-in interface.
+ * \ingroup WritingTestPlugIn
+ *
+ * This macro exports the test plug-in function using the subclass, 
+ * and implements the 'main' function for the plug-in using 
+ * CPPUNIT_PLUGIN_IMPLEMENT_MAIN().
+ *
+ * When using this macro, CppUnit must be linked as a DLL (shared library).
+ * Otherwise, tests registered to the TestFactoryRegistry in the DLL will 
+ * not be visible to the DllPlugInTester.
+ *
+ * \see CppUnitTestPlugIn
+ * \see CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL(), CPPUNIT_PLUGIN_IMPLEMENT_MAIN().
+ */
+#define CPPUNIT_PLUGIN_IMPLEMENT()                                          \
+  CPPUNIT_PLUGIN_EXPORTED_FUNCTION_IMPL( CPPUNIT_NS::TestPlugInDefaultImpl );  \
+  CPPUNIT_PLUGIN_IMPLEMENT_MAIN()
+
+
+#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
+
+
+#endif // CPPUNIT_PLUGIN_TESTPLUGIN
diff --git a/lib/cppunit-1.10.0/include/cppunit/plugin/TestPlugInDefaultImpl.h b/lib/cppunit-1.10.0/include/cppunit/plugin/TestPlugInDefaultImpl.h
new file mode 100644 (file)
index 0000000..f22d781
--- /dev/null
@@ -0,0 +1,52 @@
+#ifndef CPPUNIT_PLUGIN_TESTPLUGINADAPTER
+#define CPPUNIT_PLUGIN_TESTPLUGINADAPTER
+
+#include <cppunit/Portability.h>
+
+#if !defined(CPPUNIT_NO_TESTPLUGIN)
+
+#include <cppunit/plugin/TestPlugIn.h>
+
+CPPUNIT_NS_BEGIN
+
+
+class TestSuite;
+
+
+/*! \brief Default implementation of test plug-in interface.
+ * \ingroup WritingTestPlugIn
+ *
+ * Override getSuiteName() to specify the suite name. Default is "All Tests".
+ *
+ * CppUnitTestPlugIn::::getTestSuite() returns a suite that contains
+ * all the test registered to the default test factory registry 
+ * ( TestFactoryRegistry::getRegistry() ).
+ *
+ */
+class CPPUNIT_API TestPlugInDefaultImpl : public CppUnitTestPlugIn
+{
+public:
+  TestPlugInDefaultImpl();
+
+  virtual ~TestPlugInDefaultImpl();
+
+  void initialize( TestFactoryRegistry *registry,
+                   const PlugInParameters &parameters );
+
+  void addListener( TestResult *eventManager );
+
+  void removeListener( TestResult *eventManager );
+
+  void addXmlOutputterHooks( XmlOutputter *outputter );
+
+  void removeXmlOutputterHooks();
+
+  void uninitialize( TestFactoryRegistry *registry );
+};
+
+
+CPPUNIT_NS_END
+
+#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
+
+#endif // CPPUNIT_PLUGIN_TESTPLUGINADAPTER
diff --git a/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitDeque.h b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitDeque.h
new file mode 100644 (file)
index 0000000..bbab21f
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef CPPUNIT_PORTABILITY_CPPUNITDEQUE_H
+#define CPPUNIT_PORTABILITY_CPPUNITDEQUE_H
+
+// The technic used is similar to the wrapper of STLPort.
+#include <cppunit/Portability.h>
+#include <deque>
+
+
+#if CPPUNIT_STD_NEED_ALLOCATOR
+
+template<class T>
+class CppUnitDeque : public std::deque<T,CPPUNIT_STD_ALLOCATOR>
+{
+public:
+};
+
+#else // CPPUNIT_STD_NEED_ALLOCATOR
+
+#define CppUnitDeque std::deque
+
+#endif
+
+#endif // CPPUNIT_PORTABILITY_CPPUNITDEQUE_H
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitMap.h b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitMap.h
new file mode 100644 (file)
index 0000000..0cdc723
--- /dev/null
@@ -0,0 +1,29 @@
+#ifndef CPPUNIT_PORTABILITY_CPPUNITMAP_H
+#define CPPUNIT_PORTABILITY_CPPUNITMAP_H
+
+// The technic used is similar to the wrapper of STLPort.
+#include <cppunit/Portability.h>
+#include <functional>
+#include <map>
+
+
+#if CPPUNIT_STD_NEED_ALLOCATOR
+
+template<class Key, class T>
+class CppUnitMap : public std::map<Key
+                                  ,T
+                                  ,std::less<Key>
+                                  ,CPPUNIT_STD_ALLOCATOR>
+{
+public:
+};
+
+#else // CPPUNIT_STD_NEED_ALLOCATOR
+
+#define CppUnitMap std::map
+
+#endif
+
+#endif // CPPUNIT_PORTABILITY_CPPUNITMAP_H
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitSet.h b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitSet.h
new file mode 100644 (file)
index 0000000..18b8662
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef CPPUNIT_PORTABILITY_CPPUNITSET_H
+#define CPPUNIT_PORTABILITY_CPPUNITSET_H
+
+// The technic used is similar to the wrapper of STLPort.
+#include <cppunit/Portability.h>
+#include <functional>
+#include <set>
+
+
+#if CPPUNIT_STD_NEED_ALLOCATOR
+
+template<class T>
+class CppUnitSet : public std::set<T
+                                  ,std::less<T>
+                                  ,CPPUNIT_STD_ALLOCATOR>
+{
+public:
+};
+
+#else // CPPUNIT_STD_NEED_ALLOCATOR
+
+#define CppUnitSet std::set
+
+#endif
+
+#endif // CPPUNIT_PORTABILITY_CPPUNITSET_H
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitStack.h b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitStack.h
new file mode 100644 (file)
index 0000000..bc7785b
--- /dev/null
@@ -0,0 +1,26 @@
+#ifndef CPPUNIT_PORTABILITY_CPPUNITSTACK_H
+#define CPPUNIT_PORTABILITY_CPPUNITSTACK_H
+
+// The technic used is similar to the wrapper of STLPort.
+#include <cppunit/Portability.h>
+#include <deque>
+#include <stack>
+
+
+#if CPPUNIT_STD_NEED_ALLOCATOR
+
+template<class T>
+class CppUnitStack : public std::stack<T
+                                      ,std::deque<T,CPPUNIT_STD_ALLOCATOR> >
+{
+public:
+};
+
+#else // CPPUNIT_STD_NEED_ALLOCATOR
+
+#define CppUnitStack std::stack
+
+#endif
+
+#endif // CPPUNIT_PORTABILITY_CPPUNITSTACK_H
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitVector.h b/lib/cppunit-1.10.0/include/cppunit/portability/CppUnitVector.h
new file mode 100644 (file)
index 0000000..6666a63
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef CPPUNIT_PORTABILITY_CPPUNITVECTOR_H
+#define CPPUNIT_PORTABILITY_CPPUNITVECTOR_H
+
+// The technic used is similar to the wrapper of STLPort.
+#include <cppunit/Portability.h>
+#include <vector>
+
+
+#if CPPUNIT_STD_NEED_ALLOCATOR
+
+template<class T>
+class CppUnitVector : public std::vector<T,CPPUNIT_STD_ALLOCATOR>
+{
+public:
+};
+
+#else // CPPUNIT_STD_NEED_ALLOCATOR
+
+#define CppUnitVector std::vector
+
+#endif
+
+#endif // CPPUNIT_PORTABILITY_CPPUNITVECTOR_H
+
diff --git a/lib/cppunit-1.10.0/include/cppunit/portability/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/portability/Makefile.am
new file mode 100644 (file)
index 0000000..1fb032e
--- /dev/null
@@ -0,0 +1,8 @@
+libcppunitincludedir = $(includedir)/cppunit/portability
+
+libcppunitinclude_HEADERS = \
+       CppUnitDeque.h \
+       CppUnitMap.h \
+       CppUnitSet.h \
+       CppUnitStack.h \
+       CppUnitVector.h
diff --git a/lib/cppunit-1.10.0/include/cppunit/portability/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/portability/Makefile.in
new file mode 100644 (file)
index 0000000..d7d23f7
--- /dev/null
@@ -0,0 +1,379 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+libcppunitincludedir = $(includedir)/cppunit/portability
+
+libcppunitinclude_HEADERS = \
+       CppUnitDeque.h \
+       CppUnitMap.h \
+       CppUnitSet.h \
+       CppUnitStack.h \
+       CppUnitVector.h
+
+subdir = include/cppunit/portability
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+HEADERS = $(libcppunitinclude_HEADERS)
+
+DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  include/cppunit/portability/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+uninstall-libcppunitincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libcppunitincludeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libcppunitincludeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool ctags distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am info \
+       info-am install install-am install-data install-data-am \
+       install-exec install-exec-am install-info install-info-am \
+       install-libcppunitincludeHEADERS install-man install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-info-am \
+       uninstall-libcppunitincludeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/include/cppunit/tools/Algorithm.h b/lib/cppunit-1.10.0/include/cppunit/tools/Algorithm.h
new file mode 100644 (file)
index 0000000..e5746a2
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef CPPUNIT_TOOLS_ALGORITHM_H_INCLUDED
+#define CPPUNIT_TOOLS_ALGORITHM_H_INCLUDED
+
+#include <cppunit/Portability.h>
+
+CPPUNIT_NS_BEGIN
+
+template<class SequenceType, class ValueType>
+void
+removeFromSequence( SequenceType &sequence, 
+                    const ValueType &valueToRemove )
+{
+   for ( unsigned int index =0; index < sequence.size(); ++index )
+   {
+      if ( sequence[ index ] == valueToRemove )
+         sequence.erase( sequence.begin() + index );
+   }
+}
+
+CPPUNIT_NS_END
+
+
+#endif // CPPUNIT_TOOLS_ALGORITHM_H_INCLUDED
diff --git a/lib/cppunit-1.10.0/include/cppunit/tools/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/tools/Makefile.am
new file mode 100644 (file)
index 0000000..8ce0808
--- /dev/null
@@ -0,0 +1,7 @@
+libcppunitincludedir = $(includedir)/cppunit/tools
+
+libcppunitinclude_HEADERS = \
+       Algorithm.h             \
+       StringTools.h \
+       XmlElement.h \
+       XmlDocument.h
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/include/cppunit/tools/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/tools/Makefile.in
new file mode 100644 (file)
index 0000000..1b2ded4
--- /dev/null
@@ -0,0 +1,378 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+libcppunitincludedir = $(includedir)/cppunit/tools
+
+libcppunitinclude_HEADERS = \
+       Algorithm.h             \
+       StringTools.h \
+       XmlElement.h \
+       XmlDocument.h
+
+subdir = include/cppunit/tools
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+HEADERS = $(libcppunitinclude_HEADERS)
+
+DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  include/cppunit/tools/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+uninstall-libcppunitincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libcppunitincludeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libcppunitincludeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool ctags distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am info \
+       info-am install install-am install-data install-data-am \
+       install-exec install-exec-am install-info install-info-am \
+       install-libcppunitincludeHEADERS install-man install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-info-am \
+       uninstall-libcppunitincludeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/include/cppunit/tools/StringTools.h b/lib/cppunit-1.10.0/include/cppunit/tools/StringTools.h
new file mode 100644 (file)
index 0000000..7a6b6d7
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef CPPUNIT_TOOLS_STRINGTOOLS_H
+#define CPPUNIT_TOOLS_STRINGTOOLS_H
+
+#include <cppunit/Portability.h>
+#include <string>
+#include <cppunit/portability/CppUnitVector.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+/*! \brief Tool functions to manipulate string.
+ */
+struct StringTools
+{
+
+  typedef CppUnitVector<std::string> Strings;
+
+  static std::string CPPUNIT_API toString( int value );
+
+  static std::string CPPUNIT_API toString( double value );
+
+  static Strings CPPUNIT_API split( const std::string &text, 
+                                    char separator );
+
+  static std::string CPPUNIT_API wrap( const std::string &text,
+                                       int wrapColumn = CPPUNIT_WRAP_COLUMN );
+
+};
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_TOOLS_STRINGTOOLS_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/tools/XmlDocument.h b/lib/cppunit-1.10.0/include/cppunit/tools/XmlDocument.h
new file mode 100644 (file)
index 0000000..8d3f0c7
--- /dev/null
@@ -0,0 +1,71 @@
+#ifndef CPPUNIT_TOOLS_XMLDOCUMENT_H
+#define CPPUNIT_TOOLS_XMLDOCUMENT_H
+
+#include <cppunit/Portability.h>
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( push )
+#pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
+#endif
+
+#include <string>
+
+
+CPPUNIT_NS_BEGIN
+
+
+class XmlElement;
+
+
+/*! \brief A XML Document.
+ *
+ * A XmlDocument represents a XML file. It holds a pointer on the root XmlElement
+ * of the document. It also holds the encoding and style sheet used.
+ */
+class CPPUNIT_API XmlDocument
+{
+public:
+  /*! \brief Constructs a XmlDocument object.
+   * \param encoding Encoding used in the XML file (default is Latin-1, ISO-8859-1 ). 
+   * \param styleSheet Name of the XSL style sheet file used. If empty then no
+   *                   style sheet will be specified in the output.
+   */
+  XmlDocument( const std::string &encoding = "",
+               const std::string &styleSheet = "" );
+
+  /// Destructor.
+  virtual ~XmlDocument();
+
+  std::string encoding() const;
+  void setEncoding( const std::string &encoding = "" );
+  
+  std::string styleSheet() const;
+  void setStyleSheet( const std::string &styleSheet = "" );
+
+  void setRootElement( XmlElement *rootElement );
+  XmlElement &rootElement() const;
+
+  std::string toString() const;
+
+private:
+  /// Prevents the use of the copy constructor.
+  XmlDocument( const XmlDocument &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const XmlDocument &copy );
+
+protected:
+  std::string m_encoding;
+  std::string m_styleSheet;
+  XmlElement *m_rootElement;
+};
+
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( pop )
+#endif
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_TOOLS_XMLDOCUMENT_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/tools/XmlElement.h b/lib/cppunit-1.10.0/include/cppunit/tools/XmlElement.h
new file mode 100644 (file)
index 0000000..0b36bd2
--- /dev/null
@@ -0,0 +1,149 @@
+#ifndef CPPUNIT_TOOLS_XMLELEMENT_H
+#define CPPUNIT_TOOLS_XMLELEMENT_H
+
+#include <cppunit/Portability.h>
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( push )
+#pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
+#endif
+
+#include <cppunit/portability/CppUnitDeque.h>
+#include <string>
+
+
+CPPUNIT_NS_BEGIN
+
+
+class XmlElement;
+
+#if CPPUNIT_NEED_DLL_DECL
+//  template class CPPUNIT_API std::deque<XmlElement *>;
+#endif
+
+
+/*! \brief A XML Element.
+ * 
+ * A XML element has:
+ * - a name, specified on construction,
+ * - a content, specified on construction (may be empty),
+ * - zero or more attributes, added with addAttribute(),
+ * - zero or more child elements, added with addElement().
+ */
+class CPPUNIT_API XmlElement
+{
+public:
+  /*! \brief Constructs an element with the specified name and string content.
+   * \param elementName Name of the element. Must not be empty.
+   * \param content Content of the element.
+   */
+  XmlElement( std::string elementName,
+              std::string content ="" );
+
+  /*! \brief Constructs an element with the specified name and numeric content.
+   * \param elementName Name of the element. Must not be empty.
+   * \param numericContent Content of the element.
+   */
+  XmlElement( std::string elementName,
+              int numericContent );
+
+  /*! \brief Destructs the element and its child elements.
+   */
+  virtual ~XmlElement();
+
+  /*! \brief Returns the name of the element.
+   * \return Name of the element.
+   */
+  std::string name() const;
+
+  /*! \brief Returns the content of the element.
+   * \return Content of the element.
+   */
+  std::string content() const;
+
+  /*! \brief Sets the name of the element.
+   * \param name New name for the element.
+   */
+  void setName( const std::string &name );
+
+  /*! \brief Sets the content of the element.
+   * \param content New content for the element.
+   */
+  void setContent( const std::string &content );
+
+  /*! \overload void setContent( const std::string &content )
+   */
+  void setContent( int numericContent );
+
+  /*! \brief Adds an attribute with the specified string value.
+   * \param attributeName Name of the attribute. Must not be an empty.
+   * \param value Value of the attribute.
+   */
+  void addAttribute( std::string attributeName,
+                     std::string value );
+
+  /*! \brief Adds an attribute with the specified numeric value.
+   * \param attributeName Name of the attribute. Must not be empty.
+   * \param numericValue Numeric value of the attribute.
+   */
+  void addAttribute( std::string attributeName,
+                     int numericValue );
+
+  /*! \brief Adds a child element to the element.
+   * \param element Child element to add. Must not be \c NULL.
+   */
+  void addElement( XmlElement *element );
+
+  /*! \brief Returns the number of child elements.
+   * \return Number of child elements (element added with addElement()).
+   */
+  int elementCount() const;
+
+  /*! \brief Returns the child element at the specified index.
+   * \param index Zero based index of the element to return.
+   * \returns Element at the specified index. Never \c NULL.
+   * \exception std::invalid_argument if \a index < 0 or index >= elementCount().
+   */
+  XmlElement *elementAt( int index ) const;
+
+  /*! \brief Returns the first child element with the specified name.
+   * \param name Name of the child element to return.
+   * \return First child element found which is named \a name.
+   * \exception std::invalid_argument if there is no child element with the specified
+   *            name.
+   */
+  XmlElement *elementFor( const std::string &name ) const;
+
+  /*! \brief Returns a XML string that represents the element.
+   * \param indent String of spaces representing the amount of 'indent'.
+   * \return XML string that represents the element, its attributes and its
+   *         child elements.
+   */
+  std::string toString( const std::string &indent = "" ) const;
+
+private:
+  typedef std::pair<std::string,std::string> Attribute;
+
+  std::string attributesAsString() const;
+  std::string escape( std::string value ) const;
+
+private:
+  std::string m_name;
+  std::string m_content;
+
+  typedef CppUnitDeque<Attribute> Attributes;
+  Attributes m_attributes;
+
+  typedef CppUnitDeque<XmlElement *> Elements;
+  Elements m_elements;
+};
+
+
+CPPUNIT_NS_END
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( pop )
+#endif
+
+
+#endif  // CPPUNIT_TOOLS_XMLELEMENT_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/ui/Makefile.am
new file mode 100644 (file)
index 0000000..1b9f08e
--- /dev/null
@@ -0,0 +1 @@
+SUBDIRS = text mfc qt
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/ui/Makefile.in
new file mode 100644 (file)
index 0000000..27fe45a
--- /dev/null
@@ -0,0 +1,448 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = text mfc qt
+subdir = include/cppunit/ui
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+       ps-recursive install-info-recursive uninstall-info-recursive \
+       all-recursive install-data-recursive install-exec-recursive \
+       installdirs-recursive install-recursive uninstall-recursive \
+       check-recursive installcheck-recursive
+DIST_COMMON = Makefile.am Makefile.in
+DIST_SUBDIRS = $(SUBDIRS)
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  include/cppunit/ui/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+       @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       if (etags --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+       else \
+         include_option=--include; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -f $$subdir/TAGS && \
+             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d $(distdir)/$$subdir \
+           || mkdir $(distdir)/$$subdir \
+           || exit 1; \
+           (cd $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$(top_distdir)" \
+               distdir=../$(distdir)/$$subdir \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+       clean-generic clean-libtool clean-recursive ctags \
+       ctags-recursive distclean distclean-generic distclean-libtool \
+       distclean-recursive distclean-tags distdir dvi dvi-am \
+       dvi-recursive info info-am info-recursive install install-am \
+       install-data install-data-am install-data-recursive \
+       install-exec install-exec-am install-exec-recursive \
+       install-info install-info-am install-info-recursive install-man \
+       install-recursive install-strip installcheck installcheck-am \
+       installdirs installdirs-am installdirs-recursive \
+       maintainer-clean maintainer-clean-generic \
+       maintainer-clean-recursive mostlyclean mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-recursive pdf pdf-am \
+       pdf-recursive ps ps-am ps-recursive tags tags-recursive \
+       uninstall uninstall-am uninstall-info-am \
+       uninstall-info-recursive uninstall-recursive
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/mfc/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/ui/mfc/Makefile.am
new file mode 100644 (file)
index 0000000..1ea8b5e
--- /dev/null
@@ -0,0 +1,5 @@
+libcppunitincludedir = $(includedir)/cppunit/ui/mfc
+
+libcppunitinclude_HEADERS = \
+       TestRunner.h \
+  MfcTestRunner.h
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/mfc/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/ui/mfc/Makefile.in
new file mode 100644 (file)
index 0000000..def30cc
--- /dev/null
@@ -0,0 +1,376 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+libcppunitincludedir = $(includedir)/cppunit/ui/mfc
+
+libcppunitinclude_HEADERS = \
+       TestRunner.h \
+  MfcTestRunner.h
+
+subdir = include/cppunit/ui/mfc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+HEADERS = $(libcppunitinclude_HEADERS)
+
+DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  include/cppunit/ui/mfc/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+uninstall-libcppunitincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libcppunitincludeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libcppunitincludeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool ctags distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am info \
+       info-am install install-am install-data install-data-am \
+       install-exec install-exec-am install-info install-info-am \
+       install-libcppunitincludeHEADERS install-man install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-info-am \
+       uninstall-libcppunitincludeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/mfc/MfcTestRunner.h b/lib/cppunit-1.10.0/include/cppunit/ui/mfc/MfcTestRunner.h
new file mode 100644 (file)
index 0000000..6a5f7b7
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef CPPUNITUI_MFC_MFCTESTRUNNER_H
+#define CPPUNITUI_MFC_MFCTESTRUNNER_H
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#include <cppunit/Portability.h>
+#include <cppunit/portability/CppUnitVector.h>
+
+/* Refer to MSDN documentation to know how to write and use MFC extension DLL:
+   mk:@MSITStore:h:\DevStudio\MSDN\98VSa\1036\vcmfc.chm::/html/_mfcnotes_tn033.htm#_mfcnotes_how_to_write_an_mfc_extension_dll
+   
+   This can be found in the index with "mfc extension"
+   The basic:
+   Using:
+   - your application must use MFC DLL
+   - memory allocation is done using the same heap
+   - you must define the symbol _AFX_DLL
+
+   Building:
+   - you must define the symbol _AFX_DLL and _AFX_EXT
+   - export class using AFX_EXT_CLASS
+ */
+
+CPPUNIT_NS_BEGIN
+
+  class Test;
+  class TestSuite;
+
+
+/*! \brief MFC test runner.
+ * \ingroup ExecutingTest
+ *
+ * Use this to launch the MFC TestRunner. Usually called from you CWinApp subclass:
+ *
+ * \code
+ * #include <cppunit/ui/mfc/MfcTestRunner.h>
+ * #include <cppunit/extensions/TestFactoryRegistry.h>
+ *
+ * void 
+ * CHostAppApp::RunUnitTests()
+ * {
+ *   CppUnit::MfcTestRunner runner;
+ *   runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() );
+ *
+ *   runner.run();    
+ * }
+ * \endcode
+ * \see CppUnit::TextTestRunner, CppUnit::TestFactoryRegistry.
+ */
+class AFX_EXT_CLASS MfcTestRunner
+{
+public:
+  MfcTestRunner();
+  virtual ~MfcTestRunner();
+
+  void run();
+
+  void addTest( Test *test );
+
+  void addTests( const CppUnitVector<Test *> &tests );
+
+protected:
+  Test *getRootTest();
+
+  TestSuite *m_suite;
+
+  typedef CppUnitVector<Test *> Tests;
+  Tests m_tests;
+};
+
+
+CPPUNIT_NS_END
+
+#endif // CPPUNITUI_MFC_MFCTESTRUNNER_H
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/mfc/TestRunner.h b/lib/cppunit-1.10.0/include/cppunit/ui/mfc/TestRunner.h
new file mode 100644 (file)
index 0000000..c4d6aff
--- /dev/null
@@ -0,0 +1,21 @@
+#ifndef CPPUNITUI_MFC_TESTRUNNER_H
+#define CPPUNITUI_MFC_TESTRUNNER_H
+
+#include <cppunit/ui/mfc/MfcTestRunner.h>
+
+CPPUNIT_NS_BEGIN
+
+#if defined(CPPUNIT_HAVE_NAMESPACES)
+namespace MfcUi
+{
+  /*! Mfc TestRunner (DEPRECATED).
+   * \deprecated Use CppUnit::MfcTestRunner instead.
+   */
+  typedef CPPUNIT_NS::MfcTestRunner TestRunner;
+}
+#endif // defined(CPPUNIT_HAVE_NAMESPACES)
+
+CPPUNIT_NS_END
+
+
+#endif  // CPPUNITUI_MFC_TESTRUNNER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/qt/Config.h b/lib/cppunit-1.10.0/include/cppunit/ui/qt/Config.h
new file mode 100644 (file)
index 0000000..73eac3c
--- /dev/null
@@ -0,0 +1,21 @@
+#ifndef CPPUNIT_QTUI_CONFIG_H
+#define CPPUNIT_QTUI_CONFIG_H
+
+/*! Macro to export symbol to DLL with VC++.
+ *
+ * - QTTESTRUNNER_DLL_BUILD must be defined when building the DLL.
+ * - QTTESTRUNNER_DLL must be defined if linking against the DLL.
+ * - If none of the above are defined then you are building or linking against
+ *   the static library.
+ */
+
+#if defined( QTTESTRUNNER_DLL_BUILD )
+#  define QTTESTRUNNER_API __declspec(dllexport)
+#elif defined ( QTTESTRUNNER_DLL )
+#  define QTTESTRUNNER_API __declspec(dllimport)
+#else
+#  define QTTESTRUNNER_API
+#endif
+
+
+#endif // CPPUNIT_QTUI_CONFIG_H
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/qt/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/ui/qt/Makefile.am
new file mode 100644 (file)
index 0000000..7d4fb46
--- /dev/null
@@ -0,0 +1,6 @@
+libcppunitincludedir = $(includedir)/cppunit/ui/qt
+
+libcppunitinclude_HEADERS = \
+       TestRunner.h \
+       QtTestRunner.h \
+       Config.h
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/qt/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/ui/qt/Makefile.in
new file mode 100644 (file)
index 0000000..3e6662d
--- /dev/null
@@ -0,0 +1,377 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+libcppunitincludedir = $(includedir)/cppunit/ui/qt
+
+libcppunitinclude_HEADERS = \
+       TestRunner.h \
+       QtTestRunner.h \
+       Config.h
+
+subdir = include/cppunit/ui/qt
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+HEADERS = $(libcppunitinclude_HEADERS)
+
+DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  include/cppunit/ui/qt/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+uninstall-libcppunitincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libcppunitincludeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libcppunitincludeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool ctags distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am info \
+       info-am install install-am install-data install-data-am \
+       install-exec install-exec-am install-info install-info-am \
+       install-libcppunitincludeHEADERS install-man install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-info-am \
+       uninstall-libcppunitincludeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/qt/QtTestRunner.h b/lib/cppunit-1.10.0/include/cppunit/ui/qt/QtTestRunner.h
new file mode 100644 (file)
index 0000000..4b6ab4e
--- /dev/null
@@ -0,0 +1,85 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestRunner.h for class TestRunner
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/19
+// //////////////////////////////////////////////////////////////////////////
+#ifndef CPPUNIT_QTUI_QTTESTRUNNER_H
+#define CPPUNIT_QTUI_QTTESTRUNNER_H
+
+#include <cppunit/portability/CppUnitVector.h>
+#include "Config.h"
+
+CPPUNIT_NS_BEGIN
+
+
+  class Test;
+  class TestSuite;
+
+
+/*! 
+ * \brief QT test runner.
+ * \ingroup ExecutingTest
+ *
+ * Here is an example of usage:
+ * \code
+ * #include <cppunit/extensions/TestFactoryRegistry.h>
+ * #include <cppunit/ui/qt/TestRunner.h>
+ *
+ * [...]
+ *
+ * void 
+ * QDepWindow::runTests()
+ * {
+ *   CppUnit::QtUi::TestRunner runner;
+ *   runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() );
+ *   runner.run( true );
+ * }
+ * \endcode
+ *
+ */
+class QTTESTRUNNER_API QtTestRunner
+{
+public:
+  /*! Constructs a TestRunner object.
+   */
+  QtTestRunner();
+
+  /*! Destructor.
+   */
+  virtual ~QtTestRunner();
+
+  void run( bool autoRun =false );
+
+  void addTest( Test *test );
+
+private:
+  /// Prevents the use of the copy constructor.
+  QtTestRunner( const QtTestRunner &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const QtTestRunner &copy );
+
+  Test *getRootTest();
+
+private:
+  typedef CppUnitVector<Test *> Tests;
+  Tests *_tests;
+
+  TestSuite *_suite;
+};
+
+
+#if CPPUNIT_HAVE_NAMESPACES
+  namespace QtUi
+  {
+    /*! Qt TestRunner (DEPRECATED).
+     * \deprecated Use CppUnit::QtTestRunner instead.
+     */
+    typedef CPPUNIT_NS::QtTestRunner TestRunner;
+  }
+#endif
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_QTUI_QTTESTRUNNER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/qt/TestRunner.h b/lib/cppunit-1.10.0/include/cppunit/ui/qt/TestRunner.h
new file mode 100644 (file)
index 0000000..9c53e4b
--- /dev/null
@@ -0,0 +1,11 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestRunner.h for class TestRunner
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/19
+// //////////////////////////////////////////////////////////////////////////
+#ifndef CPPUNIT_QTUI_TESTRUNNER_H
+#define CPPUNIT_QTUI_TESTRUNNER_H
+
+#include <cppunit/ui/qt/QtTestRunner.h>
+
+#endif  // CPPUNIT_QTUI_TESTRUNNER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/text/Makefile.am b/lib/cppunit-1.10.0/include/cppunit/ui/text/Makefile.am
new file mode 100644 (file)
index 0000000..5f01d81
--- /dev/null
@@ -0,0 +1,5 @@
+libcppunitincludedir = $(includedir)/cppunit/ui/text
+
+libcppunitinclude_HEADERS = \
+       TestRunner.h \
+  TextTestRunner.h
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/text/Makefile.in b/lib/cppunit-1.10.0/include/cppunit/ui/text/Makefile.in
new file mode 100644 (file)
index 0000000..03b56f7
--- /dev/null
@@ -0,0 +1,376 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+libcppunitincludedir = $(includedir)/cppunit/ui/text
+
+libcppunitinclude_HEADERS = \
+       TestRunner.h \
+  TextTestRunner.h
+
+subdir = include/cppunit/ui/text
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+HEADERS = $(libcppunitinclude_HEADERS)
+
+DIST_COMMON = $(libcppunitinclude_HEADERS) Makefile.am Makefile.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  include/cppunit/ui/text/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         $(libcppunitincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+uninstall-libcppunitincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " rm -f $(DESTDIR)$(libcppunitincludedir)/$$f"; \
+         rm -f $(DESTDIR)$(libcppunitincludedir)/$$f; \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(libcppunitincludedir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libcppunitincludeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libcppunitincludeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool ctags distclean distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am info \
+       info-am install install-am install-data install-data-am \
+       install-exec install-exec-am install-info install-info-am \
+       install-libcppunitincludeHEADERS install-man install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-info-am \
+       uninstall-libcppunitincludeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/text/TestRunner.h b/lib/cppunit-1.10.0/include/cppunit/ui/text/TestRunner.h
new file mode 100644 (file)
index 0000000..023eb83
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef CPPUNIT_UI_TEXT_TESTRUNNER_H
+#define CPPUNIT_UI_TEXT_TESTRUNNER_H
+
+#include <cppunit/ui/text/TextTestRunner.h>
+
+
+#if defined(CPPUNIT_HAVE_NAMESPACES)
+
+CPPUNIT_NS_BEGIN
+namespace TextUi
+{
+
+  /*! Text TestRunner (DEPRECATED).
+   * \deprecated Use TextTestRunner instead.
+   */
+  typedef TextTestRunner TestRunner;
+
+}
+CPPUNIT_NS_END
+
+#endif // defined(CPPUNIT_HAVE_NAMESPACES)
+
+
+#endif  // CPPUNIT_UI_TEXT_TESTRUNNER_H
diff --git a/lib/cppunit-1.10.0/include/cppunit/ui/text/TextTestRunner.h b/lib/cppunit-1.10.0/include/cppunit/ui/text/TextTestRunner.h
new file mode 100644 (file)
index 0000000..e26ba35
--- /dev/null
@@ -0,0 +1,93 @@
+#ifndef CPPUNIT_UI_TEXT_TEXTTESTRUNNER_H
+#define CPPUNIT_UI_TEXT_TEXTTESTRUNNER_H
+
+
+#include <cppunit/Portability.h>
+#include <string>
+#include <cppunit/TestRunner.h>
+
+CPPUNIT_NS_BEGIN
+
+
+class Outputter;
+class Test;
+class TestSuite;
+class TextOutputter;
+class TestResult;
+class TestResultCollector;
+
+
+
+/*!
+ * \brief A text mode test runner.
+ * \ingroup WritingTestResult
+ * \ingroup ExecutingTest
+ *
+ * The test runner manage the life cycle of the added tests.
+ *
+ * The test runner can run only one of the added tests or all the tests. 
+ *
+ * TestRunner prints out a trace as the tests are executed followed by a
+ * summary at the end. The trace and summary print are optional.
+ *
+ * Here is an example of use:
+ *
+ * \code
+ * CppUnit::TextTestRunner runner;
+ * runner.addTest( ExampleTestCase::suite() );
+ * runner.run( "", true );    // Run all tests and wait
+ * \endcode
+ *
+ * The trace is printed using a TextTestProgressListener. The summary is printed
+ * using a TextOutputter. 
+ *
+ * You can specify an alternate Outputter at construction
+ * or later with setOutputter(). 
+ *
+ * After construction, you can register additional TestListener to eventManager(),
+ * for a custom progress trace, for example.
+ *
+ * \code
+ * CppUnit::TextTestRunner runner;
+ * runner.addTest( ExampleTestCase::suite() );
+ * runner.setOutputter( CppUnit::CompilerOutputter::defaultOutputter( 
+ *                          &runner.result(),
+ *                          std::cerr ) );
+ * MyCustomProgressTestListener progress;
+ * runner.eventManager().addListener( &progress );
+ * runner.run( "", true );    // Run all tests and wait
+ * \endcode
+ *
+ * \see CompilerOutputter, XmlOutputter, TextOutputter.
+ */
+class CPPUNIT_API TextTestRunner : public CPPUNIT_NS::TestRunner
+{
+public:
+  TextTestRunner( Outputter *outputter =NULL );
+
+  virtual ~TextTestRunner();
+
+  bool run( std::string testPath ="",
+            bool doWait = false,
+            bool doPrintResult = true,
+            bool doPrintProgress = true );
+
+  void setOutputter( Outputter *outputter );
+
+  TestResultCollector &result() const;
+
+  TestResult &eventManager() const;
+
+protected:
+  virtual void wait( bool doWait );
+  virtual void printResult( bool doPrintResult );
+
+  TestResultCollector *m_result;
+  TestResult *m_eventManager;
+  Outputter *m_outputter;
+};
+
+
+CPPUNIT_NS_END
+
+#endif  // CPPUNIT_UI_TEXT_TEXTTESTRUNNER_H
diff --git a/lib/cppunit-1.10.0/include/msvc6/DSPlugin/TestRunnerDSPluginVC6.h b/lib/cppunit-1.10.0/include/msvc6/DSPlugin/TestRunnerDSPluginVC6.h
new file mode 100644 (file)
index 0000000..c19b4b0
--- /dev/null
@@ -0,0 +1,190 @@
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+/* File created by MIDL compiler version 5.01.0164 */
+/* at Sat Apr 13 11:47:16 2002
+ */
+/* Compiler settings for G:\prg\vc\Lib\cppunit\src\msvc6\DSPlugIn\TestRunnerDSPlugin.idl:
+    Os (OptLev=s), W1, Zp8, env=Win32, ms_ext, c_ext
+    error checks: allocation ref bounds_check enum stub_data 
+*/
+//@@MIDL_FILE_HEADING(  )
+
+
+/* verify that the <rpcndr.h> version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 440
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of <rpcndr.h>
+#endif // __RPCNDR_H_VERSION__
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __TestRunnerDSPluginVC6_h__
+#define __TestRunnerDSPluginVC6_h__
+
+#ifdef __cplusplus
+extern "C"{
+#endif 
+
+/* Forward Declarations */ 
+
+#ifndef __ITestRunnerDSPlugin_FWD_DEFINED__
+#define __ITestRunnerDSPlugin_FWD_DEFINED__
+typedef interface ITestRunnerDSPlugin ITestRunnerDSPlugin;
+#endif         /* __ITestRunnerDSPlugin_FWD_DEFINED__ */
+
+
+#ifndef __DSAddIn_FWD_DEFINED__
+#define __DSAddIn_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class DSAddIn DSAddIn;
+#else
+typedef struct DSAddIn DSAddIn;
+#endif /* __cplusplus */
+
+#endif         /* __DSAddIn_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "oaidl.h"
+#include "ocidl.h"
+
+void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free( void __RPC_FAR * ); 
+
+#ifndef __ITestRunnerDSPlugin_INTERFACE_DEFINED__
+#define __ITestRunnerDSPlugin_INTERFACE_DEFINED__
+
+/* interface ITestRunnerDSPlugin */
+/* [oleautomation][unique][helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_ITestRunnerDSPlugin;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("3ADE0E37-5A56-4a68-BD8D-67E9E7502971")
+    ITestRunnerDSPlugin : public IUnknown
+    {
+    public:
+        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE goToLineInSourceCode( 
+            /* [in] */ BSTR fileName,
+            /* [in] */ int lineNumber) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct ITestRunnerDSPluginVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( 
+            ITestRunnerDSPlugin __RPC_FAR * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( 
+            ITestRunnerDSPlugin __RPC_FAR * This);
+        
+        ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( 
+            ITestRunnerDSPlugin __RPC_FAR * This);
+        
+        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *goToLineInSourceCode )( 
+            ITestRunnerDSPlugin __RPC_FAR * This,
+            /* [in] */ BSTR fileName,
+            /* [in] */ int lineNumber);
+        
+        END_INTERFACE
+    } ITestRunnerDSPluginVtbl;
+
+    interface ITestRunnerDSPlugin
+    {
+        CONST_VTBL struct ITestRunnerDSPluginVtbl __RPC_FAR *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define ITestRunnerDSPlugin_QueryInterface(This,riid,ppvObject)        \
+    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
+
+#define ITestRunnerDSPlugin_AddRef(This)       \
+    (This)->lpVtbl -> AddRef(This)
+
+#define ITestRunnerDSPlugin_Release(This)      \
+    (This)->lpVtbl -> Release(This)
+
+
+#define ITestRunnerDSPlugin_goToLineInSourceCode(This,fileName,lineNumber)     \
+    (This)->lpVtbl -> goToLineInSourceCode(This,fileName,lineNumber)
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+/* [helpstring] */ HRESULT STDMETHODCALLTYPE ITestRunnerDSPlugin_goToLineInSourceCode_Proxy( 
+    ITestRunnerDSPlugin __RPC_FAR * This,
+    /* [in] */ BSTR fileName,
+    /* [in] */ int lineNumber);
+
+
+void __RPC_STUB ITestRunnerDSPlugin_goToLineInSourceCode_Stub(
+    IRpcStubBuffer *This,
+    IRpcChannelBuffer *_pRpcChannelBuffer,
+    PRPC_MESSAGE _pRpcMessage,
+    DWORD *_pdwStubPhase);
+
+
+
+#endif         /* __ITestRunnerDSPlugin_INTERFACE_DEFINED__ */
+
+
+
+#ifndef __TestRunnerDSPluginLib_LIBRARY_DEFINED__
+#define __TestRunnerDSPluginLib_LIBRARY_DEFINED__
+
+/* library TestRunnerDSPluginLib */
+/* [helpstring][version][uuid] */ 
+
+
+EXTERN_C const IID LIBID_TestRunnerDSPluginLib;
+
+EXTERN_C const CLSID CLSID_DSAddIn;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("F193CE54-716C-41CB-80B2-FA74CA3EE2AC")
+DSAddIn;
+#endif
+#endif /* __TestRunnerDSPluginLib_LIBRARY_DEFINED__ */
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long             __RPC_USER  BSTR_UserSize(     unsigned long __RPC_FAR *, unsigned long            , BSTR __RPC_FAR * ); 
+unsigned char __RPC_FAR * __RPC_USER  BSTR_UserMarshal(  unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * ); 
+unsigned char __RPC_FAR * __RPC_USER  BSTR_UserUnmarshal(unsigned long __RPC_FAR *, unsigned char __RPC_FAR *, BSTR __RPC_FAR * ); 
+void                      __RPC_USER  BSTR_UserFree(     unsigned long __RPC_FAR *, BSTR __RPC_FAR * ); 
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/lib/cppunit-1.10.0/include/msvc6/DSPlugin/TestRunnerDSPluginVC6_i.c b/lib/cppunit-1.10.0/include/msvc6/DSPlugin/TestRunnerDSPluginVC6_i.c
new file mode 100644 (file)
index 0000000..9490f9e
--- /dev/null
@@ -0,0 +1,50 @@
+/* this file contains the actual definitions of */
+/* the IIDs and CLSIDs */
+
+/* link this file in with the server and any clients */
+
+
+/* File created by MIDL compiler version 5.01.0164 */
+/* at Sat Apr 13 11:47:16 2002
+ */
+/* Compiler settings for G:\prg\vc\Lib\cppunit\src\msvc6\DSPlugIn\TestRunnerDSPlugin.idl:
+    Os (OptLev=s), W1, Zp8, env=Win32, ms_ext, c_ext
+    error checks: allocation ref bounds_check enum stub_data 
+*/
+//@@MIDL_FILE_HEADING(  )
+#ifdef __cplusplus
+extern "C"{
+#endif 
+
+
+#ifndef __IID_DEFINED__
+#define __IID_DEFINED__
+
+typedef struct _IID
+{
+    unsigned long x;
+    unsigned short s1;
+    unsigned short s2;
+    unsigned char  c[8];
+} IID;
+
+#endif // __IID_DEFINED__
+
+#ifndef CLSID_DEFINED
+#define CLSID_DEFINED
+typedef IID CLSID;
+#endif // CLSID_DEFINED
+
+const IID IID_ITestRunnerDSPlugin = {0x3ADE0E37,0x5A56,0x4a68,{0xBD,0x8D,0x67,0xE9,0xE7,0x50,0x29,0x71}};
+
+
+const IID LIBID_TestRunnerDSPluginLib = {0x3ADE0E38,0x5A56,0x4a68,{0xBD,0x8D,0x67,0xE9,0xE7,0x50,0x29,0x71}};
+
+
+const CLSID CLSID_DSAddIn = {0xF193CE54,0x716C,0x41CB,{0x80,0xB2,0xFA,0x74,0xCA,0x3E,0xE2,0xAC}};
+
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/lib/cppunit-1.10.0/include/msvc6/testrunner/TestPlugInInterface.h b/lib/cppunit-1.10.0/include/msvc6/testrunner/TestPlugInInterface.h
new file mode 100644 (file)
index 0000000..031f2a0
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef CPPUNIT_TESTPLUGINRUNNER_TESTPLUGININTERFACE_H
+#define CPPUNIT_TESTPLUGINRUNNER_TESTPLUGININTERFACE_H
+
+#include <cppunit/Test.h>
+#include <cppunit/TestSuite.h>
+
+#if !defined(WINAPI)
+#define WIN32_LEAN_AND_MEAN 
+#define NOGDI
+#define NOUSER
+#define NOKERNEL
+#define NOSOUND
+#define NOMINMAX
+#include <windows.h>
+#endif
+
+/*! \brief Abstract TestPlugIn for DLL.
+ * \deprecated Use CppUnitTestPlugIn instead.
+ *
+ * A Test plug-in DLL must subclass this class and "publish" an instance
+ * using the following exported function:
+ * \code
+ * extern "C" {
+ *   __declspec(dllimport) TestPlugInInterface *GetTestPlugInInterface();
+ * }
+ * \endcode
+ *
+ * When loading the DLL, the TestPlugIn runner look-up this function and
+ * retreives the 
+ *
+ * See the TestPlugIn example for VC++ for details.
+ */
+class TestPlugInInterface
+{
+public:
+  virtual ~TestPlugInInterface() {}
+
+  /*! Returns an instance of the "All Tests" suite.
+   *
+   * \return Instance of the top-level suite that contains all test. Ownership
+   *         is granted to the method caller.
+   */
+  virtual CppUnit::Test *makeTest() =0;
+};
+
+typedef TestPlugInInterface* (WINAPI *GetTestPlugInInterfaceFunction)(void);
+
+
+extern "C" {
+  __declspec(dllexport) TestPlugInInterface *GetTestPlugInInterface();
+}
+
+
+
+#endif // CPPUNIT_TESTPLUGINRUNNER_TESTPLUGININTERFACE_H
diff --git a/lib/cppunit-1.10.0/include/msvc6/testrunner/TestRunner.h b/lib/cppunit-1.10.0/include/msvc6/testrunner/TestRunner.h
new file mode 100644 (file)
index 0000000..0bee97a
--- /dev/null
@@ -0,0 +1,17 @@
+#ifndef CPPUNIT_MSVC_TESTRUNNER_H
+#define CPPUNIT_MSVC_TESTRUNNER_H
+
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#include <cppunit/ui/mfc/MfcTestRunner.h>
+
+/*! \brief MFC test runner (DEPRECATED)
+ * \ingroup ExecutingTest
+ * \deprecated Use CppUnit::MfcUi::TestRunner instead.
+ */
+typedef CPPUNIT_NS::MfcTestRunner TestRunner;
+
+#endif  // CPPUNIT_MSVC_TESTRUNNER_H
diff --git a/lib/cppunit-1.10.0/src/CppUnitLibraries.dsw b/lib/cppunit-1.10.0/src/CppUnitLibraries.dsw
new file mode 100644 (file)
index 0000000..1246aa3
--- /dev/null
@@ -0,0 +1,104 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00\r
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
+\r
+###############################################################################\r
+\r
+Project: "DSPlugIn"=.\msvc6\DSPlugIn\DSPlugIn.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "DllPlugInTester"=.\DllPlugInTester\DllPlugInTester.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit\r
+    End Project Dependency\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit_dll\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "TestPlugInRunner"=.\msvc6\testpluginrunner\TestPlugInRunner.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name TestRunner\r
+    End Project Dependency\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit_dll\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "TestRunner"=.\msvc6\testrunner\TestRunner.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+    Begin Project Dependency\r
+    Project_Dep_Name cppunit\r
+    End Project Dependency\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "cppunit"=.\cppunit\cppunit.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "cppunit_dll"=.\cppunit\cppunit_dll.dsp - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Global:\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<3>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParser.cpp b/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParser.cpp
new file mode 100644 (file)
index 0000000..4aecacb
--- /dev/null
@@ -0,0 +1,253 @@
+#include "CommandLineParser.h"
+
+
+CommandLineParser::CommandLineParser( int argc, 
+                                      char *argv[] )
+    : m_currentArgument( 0 )
+    , m_useCompiler( false )
+    , m_useXml( false )
+    , m_briefProgress( false )
+    , m_noProgress( false )
+    , m_useText( false )
+    , m_useCout( false )
+    , m_waitBeforeExit( false )
+{
+  for ( int index =1; index < argc; ++index )
+  {
+    std::string argument( argv[index ] );
+    m_arguments.push_back( argument );
+  }
+}
+
+
+CommandLineParser::~CommandLineParser()
+{
+}
+
+
+void 
+CommandLineParser::parse()
+{
+  while ( hasNextArgument() )
+  {
+    getNextOption();
+    if ( isOption( "c", "compiler" ) )
+      m_useCompiler = true;
+    else if ( isOption( "x", "xml" ) )
+    {
+      m_useXml = true;
+      m_xmlFileName = getNextOptionalParameter();
+    }
+    else if ( isOption( "s", "xsl" ) )
+      m_xsl = getNextParameter();
+    else if ( isOption( "e", "encoding" ) )
+      m_encoding = getNextParameter();
+    else if ( isOption( "b", "brief-progress" ) )
+      m_briefProgress = true;
+    else if ( isOption( "n", "no-progress" ) )
+      m_noProgress = true;
+    else if ( isOption( "t", "text" ) )
+      m_useText = true;
+    else if ( isOption( "o", "cout" ) )
+      m_useCout = true;
+    else if ( isOption( "w", "wait" ) )
+      m_waitBeforeExit = true;
+    else if ( !m_option.empty() )
+      fail( "Unknown option" );
+    else if ( hasNextArgument() )
+      readNonOptionCommands();
+  }
+}
+
+
+void 
+CommandLineParser::readNonOptionCommands()
+{
+  if ( argumentStartsWith( ":" ) )
+    m_testPath = getNextArgument().substr( 1 );
+  else
+  {
+    CommandLinePlugInInfo plugIn;
+    int indexParameter = getCurrentArgument().find( '=' );
+    if ( indexParameter < 0 )
+      plugIn.m_fileName = getCurrentArgument();
+    else
+    {
+      plugIn.m_fileName = getCurrentArgument().substr( 0, indexParameter );
+      std::string parameters = getCurrentArgument().substr( indexParameter +1 );
+      plugIn.m_parameters = CPPUNIT_NS::PlugInParameters( parameters );
+    }
+    
+    m_plugIns.push_back( plugIn );
+
+    getNextArgument();
+  }
+}
+
+
+bool 
+CommandLineParser::hasNextArgument() const
+{
+  return m_currentArgument < m_arguments.size();
+}
+
+
+std::string 
+CommandLineParser::getNextArgument()
+{
+  if ( hasNextArgument() )
+    return m_arguments[ m_currentArgument++ ];
+  return "";
+}
+
+
+std::string 
+CommandLineParser::getCurrentArgument() const
+{
+  if ( m_currentArgument < m_arguments.size() )
+    return m_arguments[ m_currentArgument ];
+  return "";
+}
+
+
+bool 
+CommandLineParser::argumentStartsWith( const std::string &expected ) const
+{
+  return getCurrentArgument().substr( 0, expected.length() ) == expected;
+}
+
+
+void 
+CommandLineParser::getNextOption()
+{
+  if ( argumentStartsWith( "-" )  ||  argumentStartsWith( "--" ) )
+    m_option = getNextArgument();
+  else
+    m_option = "";
+}
+
+
+bool 
+CommandLineParser::isOption( const std::string &shortName,
+                             const std::string &longName )
+{
+  return (m_option == "-" + shortName)  ||
+         (m_option == "--" + longName);
+}
+
+
+std::string 
+CommandLineParser::getNextParameter()
+{
+  if ( !hasNextArgument() )
+    fail( "missing parameter" );
+  return getNextArgument();
+}
+
+
+std::string
+CommandLineParser::getNextOptionalParameter()
+{
+  if ( argumentStartsWith( "-" )  ||  argumentStartsWith( ":" ) )
+    return "";
+  return getNextArgument();
+}
+
+
+void 
+CommandLineParser::fail( std::string message )
+{
+  throw CommandLineParserException( "while parsing option " + m_option+
+            ",\n" + message );
+}
+
+
+bool 
+CommandLineParser::useCompilerOutputter() const
+{
+  return m_useCompiler;
+}
+
+
+bool 
+CommandLineParser::useXmlOutputter() const
+{
+  return m_useXml;
+}
+
+
+std::string 
+CommandLineParser::getXmlFileName() const
+{
+  return m_xmlFileName;
+}
+
+
+std::string 
+CommandLineParser::getXmlStyleSheet() const
+{
+  return m_xsl;
+}
+
+
+std::string 
+CommandLineParser::getEncoding() const
+{
+  return m_encoding;
+}
+
+
+bool 
+CommandLineParser::useBriefTestProgress() const
+{
+  return m_briefProgress;
+}
+
+
+bool 
+CommandLineParser::noTestProgress() const
+{
+  return m_noProgress;
+}
+
+
+bool 
+CommandLineParser::useTextOutputter() const
+{
+  return m_useText;
+}
+
+
+bool 
+CommandLineParser::useCoutStream() const
+{
+  return m_useCout;
+}
+
+
+bool 
+CommandLineParser::waitBeforeExit() const
+{
+  return m_waitBeforeExit;
+}
+
+
+int 
+CommandLineParser::getPlugInCount() const
+{
+  return m_plugIns.size(); 
+}
+
+CommandLinePlugInInfo 
+CommandLineParser::getPlugInAt( int index ) const
+{
+  return m_plugIns[ index ];
+}
+
+
+std::string 
+CommandLineParser::getTestPath() const
+{
+  return m_testPath;
+}
+
diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParser.h b/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParser.h
new file mode 100644 (file)
index 0000000..2fc80eb
--- /dev/null
@@ -0,0 +1,127 @@
+#ifndef CPPUNIT_HELPER_COMMANDLINEPARSER_H
+#define CPPUNIT_HELPER_COMMANDLINEPARSER_H
+
+#include <cppunit/Portability.h>
+#include <cppunit/portability/CppUnitDeque.h>
+#include <cppunit/plugin/PlugInParameters.h>
+#include <string>
+#include <stdexcept>
+
+
+/*! Exception thrown on error while parsing command line.
+ */
+class CommandLineParserException : public std::runtime_error
+{
+public:
+  CommandLineParserException( std::string message )
+    : std::runtime_error( message )
+  {
+  }
+};
+
+
+struct CommandLinePlugInInfo
+{
+  std::string m_fileName;
+  CPPUNIT_NS::PlugInParameters m_parameters;
+};
+
+
+/*! \brief Parses a command line.
+
+-c --compiler
+-x --xml [filename]
+-s --xsl stylesheet
+-e --encoding encoding
+-b --brief-progress
+-n --no-progress
+-t --text
+-o --cout
+-w --wait
+filename[="options"]
+:testpath
+
+ */
+class CommandLineParser
+{
+public:
+  /*! Constructs a CommandLineParser object.
+   */
+  CommandLineParser( int argc, 
+                     char *argv[] );
+
+  /// Destructor.
+  virtual ~CommandLineParser();
+
+  /*! Parses the command line.
+   * \exception CommandLineParserException if an error occurs.
+   */
+  void parse();
+
+  bool useCompilerOutputter() const;
+  bool useXmlOutputter() const;
+  std::string getXmlFileName() const;
+  std::string getXmlStyleSheet() const;
+  std::string getEncoding() const;
+  bool useBriefTestProgress() const;
+  bool noTestProgress() const;
+  bool useTextOutputter() const;
+  bool useCoutStream() const;
+  bool waitBeforeExit() const;
+  std::string getTestPath() const;
+  int getPlugInCount() const;
+  CommandLinePlugInInfo getPlugInAt( int index ) const;
+
+protected:
+  /// Prevents the use of the copy constructor.
+  CommandLineParser( const CommandLineParser &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const CommandLineParser &copy );
+
+  void readNonOptionCommands();
+
+  bool hasNextArgument() const;
+
+  std::string getNextArgument();
+
+  std::string getCurrentArgument() const;
+
+  bool argumentStartsWith( const std::string &expected ) const;
+
+  void getNextOption();
+
+  bool isOption( const std::string &shortName,
+                 const std::string &longName );
+
+  std::string getNextParameter();
+
+  std::string getNextOptionalParameter();
+
+  void fail( std::string message );
+
+protected:
+  bool m_useCompiler;
+  bool m_useXml;
+  std::string m_xmlFileName;
+  std::string m_xsl;
+  std::string m_encoding;
+  bool m_briefProgress;
+  bool m_noProgress;
+  bool m_useText;
+  bool m_useCout;
+  bool m_waitBeforeExit;
+  std::string m_testPath;
+
+  typedef CppUnitDeque<CommandLinePlugInInfo> PlugIns;
+  PlugIns m_plugIns;
+
+  typedef CppUnitDeque<std::string> Arguments;
+  Arguments m_arguments;
+  unsigned int m_currentArgument;
+
+  std::string m_option;
+};
+
+
+#endif  // CPPUNIT_HELPER_COMMANDLINEPARSER_H
diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParserTest.cpp b/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParserTest.cpp
new file mode 100644 (file)
index 0000000..7e9ac5d
--- /dev/null
@@ -0,0 +1,219 @@
+#include "CommandLineParser.h"
+#include "CommandLineParserTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( CommandLineParserTest );
+
+
+CommandLineParserTest::CommandLineParserTest()
+{
+}
+
+
+CommandLineParserTest::~CommandLineParserTest()
+{
+}
+
+
+void 
+CommandLineParserTest::setUp()
+{
+  _parser = NULL;
+}
+
+
+void 
+CommandLineParserTest::tearDown()
+{
+  delete _parser;
+}
+
+
+void 
+CommandLineParserTest::parse( char **lines )
+{
+  int count =0;
+  for ( char **line = lines; *line != NULL; ++line, ++count );
+
+  delete _parser;
+  _parser = new CommandLineParser( count, lines );
+  _parser->parse();
+}
+
+
+void 
+CommandLineParserTest::testEmptyCommandLine()
+{
+  static char *lines[] = { "", NULL };
+  parse( lines );
+
+  std::string none;
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getEncoding() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getTestPath() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlFileName() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlStyleSheet() );
+  CPPUNIT_ASSERT( !_parser->noTestProgress() );
+  CPPUNIT_ASSERT( !_parser->useBriefTestProgress() );
+  CPPUNIT_ASSERT( !_parser->useCompilerOutputter() );
+  CPPUNIT_ASSERT( !_parser->useCoutStream() );
+  CPPUNIT_ASSERT( !_parser->useTextOutputter() );
+  CPPUNIT_ASSERT( !_parser->useXmlOutputter() );
+}
+
+
+void 
+CommandLineParserTest::testFlagCompiler()
+{
+  static char *lines[] = { "", "-c", NULL };
+  parse( lines );
+
+  std::string none;
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getEncoding() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getTestPath() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlFileName() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlStyleSheet() );
+  CPPUNIT_ASSERT( !_parser->noTestProgress() );
+  CPPUNIT_ASSERT( !_parser->useBriefTestProgress() );
+  CPPUNIT_ASSERT( _parser->useCompilerOutputter() );
+  CPPUNIT_ASSERT( !_parser->useCoutStream() );
+  CPPUNIT_ASSERT( !_parser->useTextOutputter() );
+  CPPUNIT_ASSERT( !_parser->useXmlOutputter() );
+  CPPUNIT_ASSERT_EQUAL( 0, _parser->getPlugInCount() );
+}
+
+
+void 
+CommandLineParserTest::testLongFlagBriefProgress()
+{
+  static char *lines[] = { "", "--brief-progress", NULL };
+  parse( lines );
+
+  std::string none;
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getEncoding() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getTestPath() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlFileName() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlStyleSheet() );
+  CPPUNIT_ASSERT( !_parser->noTestProgress() );
+  CPPUNIT_ASSERT( _parser->useBriefTestProgress() );
+  CPPUNIT_ASSERT( !_parser->useCompilerOutputter() );
+  CPPUNIT_ASSERT( !_parser->useCoutStream() );
+  CPPUNIT_ASSERT( !_parser->useTextOutputter() );
+  CPPUNIT_ASSERT( !_parser->useXmlOutputter() );
+  CPPUNIT_ASSERT_EQUAL( 0, _parser->getPlugInCount() );
+}
+
+
+void 
+CommandLineParserTest::testFileName()
+{
+  static char *lines[] = { "", "TestPlugIn.dll", NULL };
+  parse( lines );
+
+  std::string none;
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getEncoding() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getTestPath() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlFileName() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlStyleSheet() );
+  CPPUNIT_ASSERT( !_parser->noTestProgress() );
+  CPPUNIT_ASSERT( !_parser->useBriefTestProgress() );
+  CPPUNIT_ASSERT( !_parser->useCompilerOutputter() );
+  CPPUNIT_ASSERT( !_parser->useCoutStream() );
+  CPPUNIT_ASSERT( !_parser->useTextOutputter() );
+  CPPUNIT_ASSERT( !_parser->useXmlOutputter() );
+
+  CPPUNIT_ASSERT_EQUAL( 1, _parser->getPlugInCount() );
+
+  CommandLinePlugInInfo info( _parser->getPlugInAt( 0 ) );
+  CPPUNIT_ASSERT_EQUAL( std::string("TestPlugIn.dll"), info.m_fileName );
+  CPPUNIT_ASSERT( info.m_parameters.getCommandLine().empty() );
+}
+
+
+void 
+CommandLineParserTest::testTestPath()
+{
+  static char *lines[] = { "", ":Core", NULL };
+  parse( lines );
+
+  std::string none;
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getEncoding() );
+  CPPUNIT_ASSERT_EQUAL( std::string("Core"), _parser->getTestPath() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlFileName() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlStyleSheet() );
+  CPPUNIT_ASSERT( !_parser->noTestProgress() );
+  CPPUNIT_ASSERT( !_parser->useBriefTestProgress() );
+  CPPUNIT_ASSERT( !_parser->useCompilerOutputter() );
+  CPPUNIT_ASSERT( !_parser->useCoutStream() );
+  CPPUNIT_ASSERT( !_parser->useTextOutputter() );
+  CPPUNIT_ASSERT( !_parser->useXmlOutputter() );
+  CPPUNIT_ASSERT_EQUAL( 0, _parser->getPlugInCount() );
+}
+
+
+void 
+CommandLineParserTest::testParameterWithSpace()
+{
+  static char *lines[] = { "", "--xml", "Test Results.xml", NULL };
+  parse( lines );
+
+  std::string none;
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getEncoding() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getTestPath() );
+  CPPUNIT_ASSERT_EQUAL( std::string("Test Results.xml"), 
+                        _parser->getXmlFileName() );
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlStyleSheet() );
+  CPPUNIT_ASSERT( !_parser->noTestProgress() );
+  CPPUNIT_ASSERT( !_parser->useBriefTestProgress() );
+  CPPUNIT_ASSERT( !_parser->useCompilerOutputter() );
+  CPPUNIT_ASSERT( !_parser->useCoutStream() );
+  CPPUNIT_ASSERT( !_parser->useTextOutputter() );
+  CPPUNIT_ASSERT( _parser->useXmlOutputter() );
+  CPPUNIT_ASSERT_EQUAL( 0, _parser->getPlugInCount() );
+}
+
+
+void 
+CommandLineParserTest::testMissingStyleSheetParameterThrow()
+{
+  static char *lines[] = { "", "--xsl", NULL };
+  parse( lines );
+}
+
+
+void 
+CommandLineParserTest::testMissingEncodingParameterThrow()
+{
+  static char *lines[] = { "", "--encoding", NULL };
+  parse( lines );
+}
+
+
+void 
+CommandLineParserTest::testXmlFileNameIsOptional()
+{
+  static char *lines[] = { "", "--xml", NULL };
+  parse( lines );
+
+  std::string none;
+  CPPUNIT_ASSERT_EQUAL( none, _parser->getXmlFileName() );
+}
+
+
+void 
+CommandLineParserTest::testPlugInsWithParameters()
+{
+  static char *lines[] = { "", "TestPlugIn1.dll=login = lain",
+                           "Clocker.dll", NULL };
+  parse( lines );
+
+  CPPUNIT_ASSERT_EQUAL( 2, _parser->getPlugInCount() );
+
+  CommandLinePlugInInfo info1( _parser->getPlugInAt( 0 ) );
+
+  CPPUNIT_ASSERT_EQUAL( std::string("TestPlugIn1.dll"), info1.m_fileName );
+  CPPUNIT_ASSERT_EQUAL( std::string("login = lain"), 
+                        info1.m_parameters.getCommandLine() );
+
+  CommandLinePlugInInfo info2( _parser->getPlugInAt( 1 ) );
+  CPPUNIT_ASSERT_EQUAL( std::string("Clocker.dll"), info2.m_fileName );
+  CPPUNIT_ASSERT( info2.m_parameters.getCommandLine().empty() );
+}
diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParserTest.h b/lib/cppunit-1.10.0/src/DllPlugInTester/CommandLineParserTest.h
new file mode 100644 (file)
index 0000000..fa15fb1
--- /dev/null
@@ -0,0 +1,61 @@
+#ifndef COMMANDLINEPARSERTEST_H
+#define COMMANDLINEPARSERTEST_H
+
+#include <cppunit/extensions/HelperMacros.h>
+
+
+class CommandLineParser;
+class CommandLineParserException;
+
+
+class CommandLineParserTest : public CPPUNIT_NS::TestCase
+{
+  CPPUNIT_TEST_SUITE( CommandLineParserTest );
+  CPPUNIT_TEST( testEmptyCommandLine );
+  CPPUNIT_TEST( testFlagCompiler );
+  CPPUNIT_TEST( testLongFlagBriefProgress );
+  CPPUNIT_TEST( testFileName );
+  CPPUNIT_TEST( testTestPath );
+  CPPUNIT_TEST( testParameterWithSpace );
+  CPPUNIT_TEST_EXCEPTION( testMissingStyleSheetParameterThrow, CommandLineParserException);
+  CPPUNIT_TEST_EXCEPTION( testMissingEncodingParameterThrow, CommandLineParserException);
+  CPPUNIT_TEST( testXmlFileNameIsOptional );
+  CPPUNIT_TEST( testPlugInsWithParameters );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  CommandLineParserTest();
+  virtual ~CommandLineParserTest();
+
+  void setUp();
+  void tearDown();
+
+  void testEmptyCommandLine();
+  void testFlagCompiler();
+  void testLongFlagBriefProgress();
+  void testFileName();
+  void testTestPath();
+  void testParameterWithSpace();
+  void testMissingStyleSheetParameterThrow();
+  void testMissingEncodingParameterThrow();
+  void testXmlFileNameIsOptional();
+  void testPlugInsWithParameters();
+
+private:
+  CommandLineParserTest( const CommandLineParserTest &other );
+  void operator =( const CommandLineParserTest &other );
+
+  void parse( char **lines );
+
+private:
+  CommandLineParser *_parser;
+};
+
+
+
+// Inlines methods for CommandLineParserTest:
+// ------------------------------------------
+
+
+
+#endif  // COMMANDLINEPARSERTEST_H
diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTester.cpp b/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTester.cpp
new file mode 100644 (file)
index 0000000..779757f
--- /dev/null
@@ -0,0 +1,258 @@
+#include <cppunit/BriefTestProgressListener.h>
+#include <cppunit/CompilerOutputter.h>
+#include <cppunit/TestPath.h>
+#include <cppunit/TestResult.h>
+#include <cppunit/TestResultCollector.h>
+#include <cppunit/TestRunner.h>
+#include <cppunit/TextOutputter.h>
+#include <cppunit/TextTestProgressListener.h>
+#include <cppunit/XmlOutputter.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/plugin/DynamicLibraryManagerException.h>
+#include <cppunit/plugin/PlugInParameters.h>
+#include <cppunit/plugin/PlugInManager.h>
+#include <cppunit/plugin/TestPlugIn.h>
+#include <iostream>
+#include <fstream>
+#include "CommandLineParser.h"
+
+
+/* Notes:
+
+  Memory allocated by test plug-in must be freed before unloading the test plug-in.
+  That is the reason why the XmlOutputter is explicitely destroyed.
+ */
+
+
+/*! Runs the specified tests located in the root suite.
+ * \param parser Command line parser.
+ * \return \c true if the run succeed, \c false if a test failed or if a test
+ *         path was not resolved.
+ */
+bool 
+runTests( const CommandLineParser &parser )
+{
+  bool wasSuccessful = false;
+  CPPUNIT_NS::PlugInManager plugInManager;
+
+  // The following scope is used to explicitely free all memory allocated before
+  // unload the test plug-ins (uppon plugInManager destruction).
+  {
+    CPPUNIT_NS::TestResult controller;
+    CPPUNIT_NS::TestResultCollector result;
+    controller.addListener( &result );        
+
+    // Set up outputters
+    std::ostream *stream = &std::cerr;
+    if ( parser.useCoutStream() )
+      stream = &std::cout;
+
+    std::ostream *xmlStream = stream;
+    if ( !parser.getXmlFileName().empty() )
+      xmlStream = new std::ofstream( parser.getXmlFileName().c_str() );
+
+    CPPUNIT_NS::XmlOutputter xmlOutputter( &result, *xmlStream, parser.getEncoding() );
+    xmlOutputter.setStyleSheet( parser.getXmlStyleSheet() );
+    CPPUNIT_NS::TextOutputter textOutputter( &result, *stream );
+    CPPUNIT_NS::CompilerOutputter compilerOutputter( &result, *stream );
+
+    // Set up test listeners
+    CPPUNIT_NS::BriefTestProgressListener briefListener;
+    CPPUNIT_NS::TextTestProgressListener dotListener;
+    if ( parser.useBriefTestProgress() )
+      controller.addListener( &briefListener );
+    else if ( !parser.noTestProgress() )
+      controller.addListener( &dotListener );
+
+    // Set up plug-ins
+    for ( int index =0; index < parser.getPlugInCount(); ++index )
+    {
+      CommandLinePlugInInfo plugIn = parser.getPlugInAt( index );
+      plugInManager.load( plugIn.m_fileName, plugIn.m_parameters );
+    }
+
+    // Registers plug-in specific TestListener (global setUp/tearDown, custom TestListener...)
+    plugInManager.addListener( &controller );
+
+    // Adds the default registry suite
+    CPPUNIT_NS::TestRunner runner;
+    runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
+
+    // Runs the specified test
+    try
+    {
+      runner.run( controller, parser.getTestPath() );
+      wasSuccessful = result.wasSuccessful();
+    }
+    catch ( std::invalid_argument & )
+    {
+      std::cerr  <<  "Failed to resolve test path: "  
+                 <<  parser.getTestPath() 
+                 <<  std::endl;
+    }
+
+    // Removes plug-in specific TestListener (not really needed but...)
+    plugInManager.removeListener( &controller );
+
+    // write using outputters
+    if ( parser.useCompilerOutputter() )
+      compilerOutputter.write();
+
+    if ( parser.useTextOutputter() )
+      textOutputter.write();
+
+    if ( parser.useXmlOutputter() )
+    {
+      plugInManager.addXmlOutputterHooks( &xmlOutputter );
+      xmlOutputter.write();
+      plugInManager.removeXmlOutputterHooks();
+    }
+
+    if ( !parser.getXmlFileName().empty() )
+      delete xmlStream;
+  }
+
+  return wasSuccessful;
+}
+
+
+void
+printShortUsage( const std::string &applicationName )
+{
+  std::cout  << "Usage:"  <<  std::endl
+             << applicationName  <<  " [-c -b -n -t -o -w] [-x xml-filename]"
+             "[-s stylesheet] [-e encoding] plug-in[=parameters] [plug-in...] [:testPath]"
+             << std::endl  <<  std::endl;
+}
+
+
+void
+printUsage( const std::string &applicationName )
+{
+  printShortUsage( applicationName );
+  std::cout  <<
+"-c --compiler\n"
+"      Use CompilerOutputter\n"
+"-x --xml [filename]\n"
+"      Use XmlOutputter (if filename is omitted, then output to cout or\n"
+"      cerr.\n"
+"-s --xsl stylesheet\n"
+"      XML style sheet for XML Outputter\n"
+"-e --encoding encoding\n"
+"      XML file encoding (UTF8, shift_jis, ISO-8859-1...)\n"
+"-b --brief-progress\n"
+"      Use BriefTestProgressListener (default is TextTestProgressListener)\n"
+"-n --no-progress\n"
+"      Show no test progress (disable default TextTestProgressListener)\n"
+"-t --text\n"
+"      Use TextOutputter\n"
+"-o --cout\n"
+"      Ouputters output to cout instead of the default cerr.\n"
+"-w --wait\n"
+"      Wait for the user to press a return before exit.\n"
+"filename[=\"options\"]\n"
+"      Many filenames can be specified. They are the name of the \n"
+"      test plug-ins to load. Optional plug-ins parameters can be \n"
+"      specified after the filename by adding '='.\n"
+"[:testpath]\n"
+"      Optional. Only one test path can be specified. It must \n"
+"      be prefixed with ':'. See TestPath constructor for syntax.\n"
+"\n"
+"'parameters' (test plug-in or XML filename, test path...) may contains \n"
+"spaces if double quoted. Quote may be escaped with \".\n"
+"\n"
+"Some examples of command lines:\n"
+"\n"
+"DllPlugInTesterd_dll.exe -b -x tests.xml -c simple_plugind.dll CppUnitTestPlugInd.dll\n"
+"\n"
+" Will load 2 tests plug-ins (available in lib/), use the brief test\n"
+"progress, output the result in XML in file tests.xml and also\n"
+"output the result using the compiler outputter.\n"
+"\n"
+"DllPlugInTesterd_dll.exe ClockerPlugInd.dll=\"flat\" -n CppUnitTestPlugInd.dll\n"
+"\n"
+" Will load the 2 test plug-ins, and pass the parameter string \"flat\"\n"
+"to the Clocker plug-in, disable test progress.\n"
+  << std::endl;
+
+}
+
+
+/*! Main
+ * 
+ * Usage: 
+ *
+ * DllPlugInTester.exe dll-filename1 [dll-filename2 [dll-filename3 ...]] [:testpath]
+ *
+ * <em>dll-filename</em> must be the name of the DLL. If the DLL use some other DLL, they
+ * should be in the path or in the same directory as the DLL. The DLL must export
+ * a function named "GetTestPlugInInterface" with the signature
+ * GetTestPlugInInterfaceFunction. Both are defined in:
+ * \code
+ * #include <msvc6/testrunner/TestPlugInInterface.h>
+ * \endcode.
+ *
+ * See examples/msvc6/TestPlugIn for an example of post-build testing.
+ *
+ * If no test path is specified, they all the test of the suite returned by the DLL
+ * are run. If a test path is specified, then only the specified test is run. The test
+ * path must be prefixed by ':'.
+ *
+ * Test paths are resolved using Test::resolveTestPath() on the suite returned by
+ * TestFactoryRegistry::getRegistry().makeTest();
+ *
+ * If all test succeed and no error happen then the application exit with code 0.
+ * If any error occurs (failed to load dll, failed to resolve test paths) or a 
+ * test fail, the application exit with code 1. If the application failed to
+ * parse the command line, it exits with code 2.
+ */
+int 
+main( int argc, 
+      char *argv[] )
+{
+  const int successReturnCode = 0;
+  const int failureReturnCode = 1;
+  const int badCommadLineReturnCode = 2;
+
+  // check command line
+  std::string applicationName( argv[0] );
+  if ( argc < 2 )
+  {
+    printUsage( applicationName );
+    return badCommadLineReturnCode;
+  }
+
+  CommandLineParser parser( argc, argv );
+  try
+  {
+    parser.parse();
+  }
+  catch ( CommandLineParserException &e )
+  {
+    std::cerr  <<  "Error while parsing command line: "  <<  e.what()  
+               << std::endl << std::endl;
+    printShortUsage( applicationName );
+    return badCommadLineReturnCode;
+  }
+
+  bool wasSuccessful = false;
+  try
+  {
+    wasSuccessful = runTests( parser );
+  }
+  catch ( CPPUNIT_NS::DynamicLibraryManagerException &e )
+  {
+    std::cerr  << "Failed to load test plug-in:"  <<  std::endl
+               << e.what() << std::endl;
+  }
+
+  if ( parser.waitBeforeExit() )
+  {
+    std::cout << "Please press <RETURN> to exit" << std::endl;
+    std::cin.get();
+  }
+
+  return wasSuccessful ? successReturnCode : failureReturnCode;
+}
+
+
diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTester.dsp b/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTester.dsp
new file mode 100644 (file)
index 0000000..6a75b90
--- /dev/null
@@ -0,0 +1,266 @@
+# Microsoft Developer Studio Project File - Name="DllPlugInTester" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
+\r
+CFG=DllPlugInTester - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "DllPlugInTester.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "DllPlugInTester.mak" CFG="DllPlugInTester - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "DllPlugInTester - Win32 Release Unicode" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "DllPlugInTester - Win32 Debug Unicode" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "DllPlugInTester - Win32 Release Static" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "DllPlugInTester - Win32 Debug Static" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "DllPlugInTester - Win32 Release" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "DllPlugInTester - Win32 Debug" (based on "Win32 (x86) Console Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "DllPlugInTester - Win32 Release Unicode"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "DllPlugInTester___Win32_Release_Unicode"\r
+# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Release_Unicode"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "ReleaseUnicode"\r
+# PROP Intermediate_Dir "ReleaseUnicode"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c\r
+# SUBTRACT BASE CPP /YX /Yc /Yu\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O1 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /libpath:"../../../lib"\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /out:"ReleaseUnicode\DllPlugInTesteru.exe" /libpath:"../../lib"\r
+# Begin Special Build Tool\r
+TargetPath=.\ReleaseUnicode\DllPlugInTesteru.exe\r
+TargetName=DllPlugInTesteru\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).exe\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "DllPlugInTester - Win32 Debug Unicode"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "DllPlugInTester___Win32_Debug_Unicode"\r
+# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Debug_Unicode"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "DebugUnicode"\r
+# PROP Intermediate_Dir "DebugUnicode"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c\r
+# SUBTRACT BASE CPP /YX /Yc /Yu\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /debug /machine:I386 /out:"Debug/DllPlugInTesterd.exe" /pdbtype:sept /libpath:"../../../lib"\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DebugUnicode\DllPlugInTesterud.exe" /pdbtype:sept /libpath:"../../lib"\r
+# Begin Special Build Tool\r
+TargetPath=.\DebugUnicode\DllPlugInTesterud.exe\r
+TargetName=DllPlugInTesterud\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).exe\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "DllPlugInTester - Win32 Release Static"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "DllPlugInTester___Win32_Release_Static"\r
+# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Release_Static"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /GR /GX /O1 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c\r
+# SUBTRACT BASE CPP /YX /Yc /Yu\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O1 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /out:"..\..\lib\DllPlugInTester.exe" /libpath:"../../lib"\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /libpath:"../../lib"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\DllPlugInTester.exe\r
+TargetName=DllPlugInTester\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).exe\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "DllPlugInTester - Win32 Debug Static"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "DllPlugInTester___Win32_Debug_Static"\r
+# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Debug_Static"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c\r
+# SUBTRACT BASE CPP /YX /Yc /Yu\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\lib\DllPlugInTesterd.exe" /pdbtype:sept /libpath:"../../lib"\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"Debug\DllPlugInTesterd.exe" /pdbtype:sept /libpath:"../../lib"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\DllPlugInTesterd.exe\r
+TargetName=DllPlugInTesterd\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).exe\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "DllPlugInTester - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "DllPlugInTester___Win32_Release"\r
+# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Release"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "ReleaseDll"\r
+# PROP Intermediate_Dir "ReleaseDll"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /GR /GX /O1 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /FD /c\r
+# SUBTRACT BASE CPP /YX /Yc /Yu\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O1 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /FD /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /subsystem:console /machine:I386 /out:"..\..\lib\DllPlugInTester_dll.exe" /libpath:"../../lib"\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /subsystem:console /machine:I386 /out:"ReleaseDll\DllPlugInTester_dll.exe" /libpath:"../../lib"\r
+# Begin Special Build Tool\r
+TargetPath=.\ReleaseDll\DllPlugInTester_dll.exe\r
+TargetName=DllPlugInTester_dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).exe\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "DllPlugInTester - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "DllPlugInTester___Win32_Debug"\r
+# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Debug"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "DebugDll"\r
+# PROP Intermediate_Dir "DebugDll"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /FD /GZ /c\r
+# SUBTRACT BASE CPP /YX /Yc /Yu\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /FD /GZ /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\lib\DllPlugInTesterd_dll.exe" /pdbtype:sept /libpath:"../../lib"\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DebugDll\DllPlugInTesterd_dll.exe" /pdbtype:sept /libpath:"../../lib"\r
+# Begin Special Build Tool\r
+TargetPath=.\DebugDll\DllPlugInTesterd_dll.exe\r
+TargetName=DllPlugInTesterd_dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).exe\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "DllPlugInTester - Win32 Release Unicode"\r
+# Name "DllPlugInTester - Win32 Debug Unicode"\r
+# Name "DllPlugInTester - Win32 Release Static"\r
+# Name "DllPlugInTester - Win32 Debug Static"\r
+# Name "DllPlugInTester - Win32 Release"\r
+# Name "DllPlugInTester - Win32 Debug"\r
+# Begin Source File\r
+\r
+SOURCE=.\CommandLineParser.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\CommandLineParser.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DllPlugInTester.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Makefile.am\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTesterTest.cpp b/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTesterTest.cpp
new file mode 100644 (file)
index 0000000..02488f1
--- /dev/null
@@ -0,0 +1,16 @@
+#include <cppunit/CompilerOutputter.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/ui/text/TestRunner.h>
+
+
+int main(int argc, char* argv[])
+{
+  CPPUNIT_NS::Test *suite = CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest();
+  CPPUNIT_NS::TextUi::TestRunner runner;
+  runner.addTest( suite );
+  runner.setOutputter( new CPPUNIT_NS::CompilerOutputter( &runner.result(),
+                                                       std::cerr ) );
+  bool wasSucessful = runner.run();
+  return wasSucessful ? 0 : 1;
+}
+
diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTesterTest.dsp b/lib/cppunit-1.10.0/src/DllPlugInTester/DllPlugInTesterTest.dsp
new file mode 100644 (file)
index 0000000..a71bc54
--- /dev/null
@@ -0,0 +1,180 @@
+# Microsoft Developer Studio Project File - Name="DllPlugInTesterTest" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
+\r
+CFG=DllPlugInTesterTest - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "DllPlugInTesterTest.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "DllPlugInTesterTest.mak" CFG="DllPlugInTesterTest - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "DllPlugInTesterTest - Win32 Release" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "DllPlugInTesterTest - Win32 Debug" (based on "Win32 (x86) Console Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "DllPlugInTesterTest - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "ReleaseTest"\r
+# PROP Intermediate_Dir "ReleaseTest"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /Ox /Ot /Oa /Ow /Og /Oi /Oy /Ob0 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /YX /FD /c\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit_dll.lib /nologo /subsystem:console /machine:I386 /libpath:"../../lib"\r
+# Begin Special Build Tool\r
+TargetPath=.\ReleaseTest\DllPlugInTesterTest.exe\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Unit testing...\r
+PostBuild_Cmds=$(TargetPath)\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "DllPlugInTesterTest - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "DebugTest"\r
+# PROP Intermediate_Dir "DebugTest"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "CPPUNIT_DLL" /YX /FD /GZ /c\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd_dll.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../lib"\r
+# Begin Special Build Tool\r
+TargetPath=.\DebugTest\DllPlugInTesterTest.exe\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Unit testing...\r
+PostBuild_Cmds=$(TargetPath)\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "DllPlugInTesterTest - Win32 Release"\r
+# Name "DllPlugInTesterTest - Win32 Debug"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\src\DllPlugInTester\CommandLineParser.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\src\DllPlugInTester\CommandLineParser.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\CommandLineParserTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\CommandLineParserTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\lib\cppunit_dll.dll\r
+\r
+!IF  "$(CFG)" == "DllPlugInTesterTest - Win32 Release"\r
+\r
+# Begin Custom Build - Updating $(InputPath)\r
+IntDir=.\ReleaseTest\r
+InputPath=..\..\lib\cppunit_dll.dll\r
+InputName=cppunit_dll\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF  "$(CFG)" == "DllPlugInTesterTest - Win32 Debug"\r
+\r
+# Begin Custom Build - Updating $(InputPath)\r
+IntDir=.\DebugTest\r
+InputPath=..\..\lib\cppunit_dll.dll\r
+InputName=cppunit_dll\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\lib\cppunitd_dll.dll\r
+\r
+!IF  "$(CFG)" == "DllPlugInTesterTest - Win32 Release"\r
+\r
+# Begin Custom Build - Updating $(InputPath)\r
+IntDir=.\ReleaseTest\r
+InputPath=..\..\lib\cppunitd_dll.dll\r
+InputName=cppunitd_dll\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF  "$(CFG)" == "DllPlugInTesterTest - Win32 Debug"\r
+\r
+# Begin Custom Build - Updating $(InputPath)\r
+IntDir=.\DebugTest\r
+InputPath=..\..\lib\cppunitd_dll.dll\r
+InputName=cppunitd_dll\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\src\DllPlugInTester\DllPlugInTesterTest.cpp\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/Makefile.am b/lib/cppunit-1.10.0/src/DllPlugInTester/Makefile.am
new file mode 100644 (file)
index 0000000..b4f7f6f
--- /dev/null
@@ -0,0 +1,28 @@
+EXTRA_DIST = DllPlugInTester.dsp DllPlugInTesterTest.dsp
+
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
+
+bin_PROGRAMS=DllPlugInTester
+
+TESTS = DllPlugInTesterTest
+check_PROGRAMS = $(TESTS)
+
+DllPlugInTester_SOURCES= DllPlugInTester.cpp \
+       CommandLineParser.h \
+       CommandLineParser.cpp
+
+DllPlugInTester_LDADD= \
+  $(top_builddir)/src/cppunit/libcppunit.la
+
+DllPlugInTester_LDFLAGS = $(LIBADD_DL)
+
+DllPlugInTesterTest_SOURCES = DllPlugInTesterTest.cpp \
+       CommandLineParser.cpp \
+       CommandLineParser.h \
+       CommandLineParserTest.cpp \
+       CommandLineParserTest.h
+
+DllPlugInTesterTest_LDADD= \
+  $(top_builddir)/src/cppunit/libcppunit.la
+
+DllPlugInTesterTest_LDFLAGS = $(LIBADD_DL)
diff --git a/lib/cppunit-1.10.0/src/DllPlugInTester/Makefile.in b/lib/cppunit-1.10.0/src/DllPlugInTester/Makefile.in
new file mode 100644 (file)
index 0000000..a39d3dd
--- /dev/null
@@ -0,0 +1,588 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+EXTRA_DIST = DllPlugInTester.dsp DllPlugInTesterTest.dsp
+
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
+
+bin_PROGRAMS = DllPlugInTester
+
+TESTS = DllPlugInTesterTest
+check_PROGRAMS = $(TESTS)
+
+DllPlugInTester_SOURCES = DllPlugInTester.cpp \
+       CommandLineParser.h \
+       CommandLineParser.cpp
+
+
+DllPlugInTester_LDADD = \
+  $(top_builddir)/src/cppunit/libcppunit.la
+
+
+DllPlugInTester_LDFLAGS = $(LIBADD_DL)
+
+DllPlugInTesterTest_SOURCES = DllPlugInTesterTest.cpp \
+       CommandLineParser.cpp \
+       CommandLineParser.h \
+       CommandLineParserTest.cpp \
+       CommandLineParserTest.h
+
+
+DllPlugInTesterTest_LDADD = \
+  $(top_builddir)/src/cppunit/libcppunit.la
+
+
+DllPlugInTesterTest_LDFLAGS = $(LIBADD_DL)
+subdir = src/DllPlugInTester
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+bin_PROGRAMS = DllPlugInTester$(EXEEXT)
+check_PROGRAMS = DllPlugInTesterTest$(EXEEXT)
+PROGRAMS = $(bin_PROGRAMS)
+
+am_DllPlugInTester_OBJECTS = DllPlugInTester.$(OBJEXT) \
+       CommandLineParser.$(OBJEXT)
+DllPlugInTester_OBJECTS = $(am_DllPlugInTester_OBJECTS)
+DllPlugInTester_DEPENDENCIES = $(top_builddir)/src/cppunit/libcppunit.la
+am_DllPlugInTesterTest_OBJECTS = DllPlugInTesterTest.$(OBJEXT) \
+       CommandLineParser.$(OBJEXT) CommandLineParserTest.$(OBJEXT)
+DllPlugInTesterTest_OBJECTS = $(am_DllPlugInTesterTest_OBJECTS)
+DllPlugInTesterTest_DEPENDENCIES = \
+       $(top_builddir)/src/cppunit/libcppunit.la
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/config
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/CommandLineParser.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/CommandLineParserTest.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/DllPlugInTester.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/DllPlugInTesterTest.Po
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+       $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(DllPlugInTester_SOURCES) $(DllPlugInTesterTest_SOURCES)
+DIST_COMMON = Makefile.am Makefile.in
+SOURCES = $(DllPlugInTester_SOURCES) $(DllPlugInTesterTest_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  src/DllPlugInTester/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+install-binPROGRAMS: $(bin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(bindir)
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
+         p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         if test -f $$p \
+            || test -f $$p1 \
+         ; then \
+           f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+          echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
+          $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
+         else :; fi; \
+       done
+
+uninstall-binPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
+         f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+         echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
+         rm -f $(DESTDIR)$(bindir)/$$f; \
+       done
+
+clean-binPROGRAMS:
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
+         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         echo " rm -f $$p $$f"; \
+         rm -f $$p $$f ; \
+       done
+
+clean-checkPROGRAMS:
+       @list='$(check_PROGRAMS)'; for p in $$list; do \
+         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         echo " rm -f $$p $$f"; \
+         rm -f $$p $$f ; \
+       done
+DllPlugInTester$(EXEEXT): $(DllPlugInTester_OBJECTS) $(DllPlugInTester_DEPENDENCIES) 
+       @rm -f DllPlugInTester$(EXEEXT)
+       $(CXXLINK) $(DllPlugInTester_LDFLAGS) $(DllPlugInTester_OBJECTS) $(DllPlugInTester_LDADD) $(LIBS)
+DllPlugInTesterTest$(EXEEXT): $(DllPlugInTesterTest_OBJECTS) $(DllPlugInTesterTest_DEPENDENCIES) 
+       @rm -f DllPlugInTesterTest$(EXEEXT)
+       $(CXXLINK) $(DllPlugInTesterTest_LDFLAGS) $(DllPlugInTesterTest_OBJECTS) $(DllPlugInTesterTest_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CommandLineParser.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CommandLineParserTest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DllPlugInTester.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DllPlugInTesterTest.Po@am__quote@
+
+distclean-depend:
+       -rm -rf ./$(DEPDIR)
+
+.cpp.o:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@  if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+       srcdir=$(srcdir); export srcdir; \
+       list='$(TESTS)'; \
+       if test -n "$$list"; then \
+         for tst in $$list; do \
+           if test -f ./$$tst; then dir=./; \
+           elif test -f $$tst; then dir=; \
+           else dir="$(srcdir)/"; fi; \
+           if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *" $$tst "*) \
+               xpass=`expr $$xpass + 1`; \
+               failed=`expr $$failed + 1`; \
+               echo "XPASS: $$tst"; \
+             ;; \
+             *) \
+               echo "PASS: $$tst"; \
+             ;; \
+             esac; \
+           elif test $$? -ne 77; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *" $$tst "*) \
+               xfail=`expr $$xfail + 1`; \
+               echo "XFAIL: $$tst"; \
+             ;; \
+             *) \
+               failed=`expr $$failed + 1`; \
+               echo "FAIL: $$tst"; \
+             ;; \
+             esac; \
+           else \
+             skip=`expr $$skip + 1`; \
+             echo "SKIP: $$tst"; \
+           fi; \
+         done; \
+         if test "$$failed" -eq 0; then \
+           if test "$$xfail" -eq 0; then \
+             banner="All $$all tests passed"; \
+           else \
+             banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+           fi; \
+         else \
+           if test "$$xpass" -eq 0; then \
+             banner="$$failed of $$all tests failed"; \
+           else \
+             banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+           fi; \
+         fi; \
+         dashes="$$banner"; \
+         skipped=""; \
+         if test "$$skip" -ne 0; then \
+           skipped="($$skip tests were not run)"; \
+           test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \
+             dashes="$$skipped"; \
+         fi; \
+         report=""; \
+         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+           report="Please report to $(PACKAGE_BUGREPORT)"; \
+           test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \
+             dashes="$$report"; \
+         fi; \
+         dashes=`echo "$$dashes" | sed s/./=/g`; \
+         echo "$$dashes"; \
+         echo "$$banner"; \
+         test -n "$$skipped" && echo "$$skipped"; \
+         test -n "$$report" && echo "$$report"; \
+         echo "$$dashes"; \
+         test "$$failed" -eq 0; \
+       else :; fi
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(PROGRAMS)
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(bindir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
+       clean-libtool mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-compile distclean-depend \
+       distclean-generic distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+       clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
+       clean-libtool ctags distclean distclean-compile \
+       distclean-depend distclean-generic distclean-libtool \
+       distclean-tags distdir dvi dvi-am info info-am install \
+       install-am install-binPROGRAMS install-data install-data-am \
+       install-exec install-exec-am install-info install-info-am \
+       install-man install-strip installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+       uninstall-am uninstall-binPROGRAMS uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/src/Makefile.am b/lib/cppunit-1.10.0/src/Makefile.am
new file mode 100644 (file)
index 0000000..81430b4
--- /dev/null
@@ -0,0 +1,4 @@
+SUBDIRS = cppunit DllPlugInTester
+
+# already handled by toplevel dist-hook.
+# DIST_SUBDIRS = msvc6
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/src/Makefile.in b/lib/cppunit-1.10.0/src/Makefile.in
new file mode 100644 (file)
index 0000000..edfbc35
--- /dev/null
@@ -0,0 +1,451 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = cppunit DllPlugInTester
+subdir = src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+       ps-recursive install-info-recursive uninstall-info-recursive \
+       all-recursive install-data-recursive install-exec-recursive \
+       installdirs-recursive install-recursive uninstall-recursive \
+       check-recursive installcheck-recursive
+DIST_COMMON = Makefile.am Makefile.in
+DIST_SUBDIRS = $(SUBDIRS)
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  src/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+       @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       if (etags --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+       else \
+         include_option=--include; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -f $$subdir/TAGS && \
+             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d $(distdir)/$$subdir \
+           || mkdir $(distdir)/$$subdir \
+           || exit 1; \
+           (cd $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$(top_distdir)" \
+               distdir=../$(distdir)/$$subdir \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+       clean-generic clean-libtool clean-recursive ctags \
+       ctags-recursive distclean distclean-generic distclean-libtool \
+       distclean-recursive distclean-tags distdir dvi dvi-am \
+       dvi-recursive info info-am info-recursive install install-am \
+       install-data install-data-am install-data-recursive \
+       install-exec install-exec-am install-exec-recursive \
+       install-info install-info-am install-info-recursive install-man \
+       install-recursive install-strip installcheck installcheck-am \
+       installdirs installdirs-am installdirs-recursive \
+       maintainer-clean maintainer-clean-generic \
+       maintainer-clean-recursive mostlyclean mostlyclean-generic \
+       mostlyclean-libtool mostlyclean-recursive pdf pdf-am \
+       pdf-recursive ps ps-am ps-recursive tags tags-recursive \
+       uninstall uninstall-am uninstall-info-am \
+       uninstall-info-recursive uninstall-recursive
+
+
+# already handled by toplevel dist-hook.
+# DIST_SUBDIRS = msvc6
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/src/cppunit/AdditionalMessage.cpp b/lib/cppunit-1.10.0/src/cppunit/AdditionalMessage.cpp
new file mode 100644 (file)
index 0000000..9f3da13
--- /dev/null
@@ -0,0 +1,41 @@
+#include <cppunit/AdditionalMessage.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+AdditionalMessage::AdditionalMessage()
+{
+}
+
+
+AdditionalMessage::AdditionalMessage( const std::string &detail1 )
+{
+  if ( !detail1.empty() )
+    addDetail( detail1 );
+}
+
+
+AdditionalMessage::AdditionalMessage( const char *detail1 )
+{
+  if ( detail1  &&  !std::string( detail1 ).empty() )
+    addDetail( std::string(detail1) );
+}
+
+
+AdditionalMessage::AdditionalMessage( const Message &other )
+    : SuperClass( other )
+{
+}
+
+
+AdditionalMessage &
+AdditionalMessage::operator =( const Message &other )
+{
+  SuperClass::operator =( other );
+
+  return *this;
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/Asserter.cpp b/lib/cppunit-1.10.0/src/cppunit/Asserter.cpp
new file mode 100644 (file)
index 0000000..a9cf95c
--- /dev/null
@@ -0,0 +1,101 @@
+#include <cppunit/Asserter.h>
+#include <cppunit/Exception.h>
+#include <cppunit/Message.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+void 
+Asserter::fail( std::string message, 
+                const SourceLine &sourceLine )
+{
+  fail( Message( "assertion failed", message ), sourceLine );
+}
+
+
+void 
+Asserter::fail( const Message &message, 
+                const SourceLine &sourceLine )
+{
+  throw Exception( message, sourceLine );
+}
+
+
+void 
+Asserter::failIf( bool shouldFail, 
+                  const Message &message, 
+                  const SourceLine &sourceLine )
+{
+  if ( shouldFail )
+    fail( message, sourceLine );
+}
+
+
+void 
+Asserter::failIf( bool shouldFail, 
+                  std::string message, 
+                  const SourceLine &sourceLine )
+{
+  failIf( shouldFail, Message( "assertion failed", message ), sourceLine );
+}
+
+
+std::string 
+Asserter::makeExpected( const std::string &expectedValue )
+{
+  return "Expected: " + expectedValue;
+}
+
+
+std::string 
+Asserter::makeActual( const std::string &actualValue )
+{
+  return "Actual  : " + actualValue;
+}
+
+
+Message 
+Asserter::makeNotEqualMessage( const std::string &expectedValue,
+                               const std::string &actualValue,
+                               const AdditionalMessage &additionalMessage,
+                               const std::string &shortDescription )
+{
+  Message message( shortDescription,
+                   makeExpected( expectedValue ),
+                   makeActual( actualValue ) );
+  message.addDetail( additionalMessage );
+
+  return message;
+}
+
+
+void 
+Asserter::failNotEqual( std::string expected, 
+                        std::string actual, 
+                        const SourceLine &sourceLine,
+                        const AdditionalMessage &additionalMessage,
+                        std::string shortDescription )
+{
+  fail( makeNotEqualMessage( expected,
+                             actual,
+                             additionalMessage,
+                             shortDescription ), 
+        sourceLine );
+}
+
+
+void 
+Asserter::failNotEqualIf( bool shouldFail,
+                          std::string expected, 
+                          std::string actual, 
+                          const SourceLine &sourceLine,
+                          const AdditionalMessage &additionalMessage,
+                          std::string shortDescription )
+{
+  if ( shouldFail )
+    failNotEqual( expected, actual, sourceLine, additionalMessage, shortDescription );
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/BeOsDynamicLibraryManager.cpp b/lib/cppunit-1.10.0/src/cppunit/BeOsDynamicLibraryManager.cpp
new file mode 100644 (file)
index 0000000..b8568be
--- /dev/null
@@ -0,0 +1,49 @@
+#include <cppunit/Portability.h>
+
+#if defined(CPPUNIT_HAVE_BEOS_DLL_LOADER)
+#include <cppunit/plugin/DynamicLibraryManager.h>
+
+#include <kernel/image.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+DynamicLibraryManager::LibraryHandle 
+DynamicLibraryManager::doLoadLibrary( const std::string &libraryName )
+{
+  return (LibraryHandle)::load_add_on( libraryName.c_str() );
+}
+
+
+void 
+DynamicLibraryManager::doReleaseLibrary()
+{
+  ::unload_add_on( (image_id)m_libraryHandle );
+}
+
+
+DynamicLibraryManager::Symbol 
+DynamicLibraryManager::doFindSymbol( const std::string &symbol )
+{
+  void *symbolPointer;
+  if ( ::get_image_symbol( (image_id)m_libraryHandle, 
+                           symbol.c_str(), 
+                           B_SYMBOL_TYPE_TEXT, 
+                           &symbolPointer ) == B_OK )
+    return symnolPointer;
+  return NULL;
+}
+
+
+std::string 
+DynamicLibraryManager::getLastErrorDetail() const
+{
+  return "";
+}
+
+
+CPPUNIT_NS_END
+
+
+#endif // defined(CPPUNIT_HAVE_BEOS_DLL_LOADER)
diff --git a/lib/cppunit-1.10.0/src/cppunit/BriefTestProgressListener.cpp b/lib/cppunit-1.10.0/src/cppunit/BriefTestProgressListener.cpp
new file mode 100644 (file)
index 0000000..953f659
--- /dev/null
@@ -0,0 +1,49 @@
+#include <cppunit/BriefTestProgressListener.h>
+#include <cppunit/Test.h>
+#include <cppunit/TestFailure.h>
+#include <iostream>
+
+
+CPPUNIT_NS_BEGIN
+
+
+BriefTestProgressListener::BriefTestProgressListener()
+    : m_lastTestFailed( false )
+{
+}
+
+
+BriefTestProgressListener::~BriefTestProgressListener()
+{
+}
+
+
+void 
+BriefTestProgressListener::startTest( Test *test )
+{
+  std::cerr << test->getName();
+  std::cerr.flush();
+
+  m_lastTestFailed = false;
+}
+
+
+void 
+BriefTestProgressListener::addFailure( const TestFailure &failure )
+{
+  std::cerr << " : " << (failure.isError() ? "error" : "assertion");
+  m_lastTestFailed  = true;
+}
+
+
+void 
+BriefTestProgressListener::endTest( Test *test )
+{
+  if ( !m_lastTestFailed )
+    std::cerr  <<  " : OK";
+  std::cerr << std::endl;
+}
+
+
+CPPUNIT_NS_END
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/CompilerOutputter.cpp b/lib/cppunit-1.10.0/src/cppunit/CompilerOutputter.cpp
new file mode 100644 (file)
index 0000000..790481a
--- /dev/null
@@ -0,0 +1,217 @@
+#include <cppunit/Exception.h>
+#include <cppunit/SourceLine.h>
+#include <cppunit/TestFailure.h>
+#include <cppunit/TestResultCollector.h>
+#include <cppunit/CompilerOutputter.h>
+#include <algorithm>
+#include <cppunit/tools/StringTools.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+CompilerOutputter::CompilerOutputter( TestResultCollector *result,
+                                      std::ostream &stream,
+                                      const std::string &locationFormat )
+    : m_result( result )
+    , m_stream( stream )
+    , m_locationFormat( locationFormat )
+    , m_wrapColumn( CPPUNIT_WRAP_COLUMN )
+{
+}
+
+
+CompilerOutputter::~CompilerOutputter()
+{
+}
+
+
+void 
+CompilerOutputter::setLocationFormat( const std::string &locationFormat )
+{
+  m_locationFormat = locationFormat;
+}
+
+
+CompilerOutputter *
+CompilerOutputter::defaultOutputter( TestResultCollector *result,
+                                     std::ostream &stream )
+{
+  return new CompilerOutputter( result, stream );
+}
+
+
+void 
+CompilerOutputter::write()
+{
+  if ( m_result->wasSuccessful() )
+    printSuccess();
+  else
+    printFailureReport();
+}
+
+
+void 
+CompilerOutputter::printSuccess()
+{
+  m_stream  << "OK (" << m_result->runTests()  << ")"  
+            <<  std::endl;
+}
+
+
+void 
+CompilerOutputter::printFailureReport()
+{
+  printFailuresList();
+  printStatistics();
+}
+
+
+void 
+CompilerOutputter::printFailuresList()
+{
+  for ( int index =0; index < m_result->testFailuresTotal(); ++index)
+  {
+    printFailureDetail( m_result->failures()[ index ] );
+  }
+}
+
+
+void 
+CompilerOutputter::printFailureDetail( TestFailure *failure )
+{
+  printFailureLocation( failure->sourceLine() );
+  printFailureType( failure );
+  printFailedTestName( failure );
+  printFailureMessage( failure );
+}
+
+void 
+CompilerOutputter::printFailureLocation( SourceLine sourceLine )
+{
+  if ( !sourceLine.isValid() )
+  {
+    m_stream  <<  "##Failure Location unknown## : ";
+    return;
+  }
+
+  std::string location;
+  for ( unsigned int index = 0; index < m_locationFormat.length(); ++index )
+  {
+    char c = m_locationFormat[ index ];
+    if ( c == '%'  &&  ( index+1 < m_locationFormat.length() ) )
+    {
+      char command = m_locationFormat[index+1];
+      if ( processLocationFormatCommand( command, sourceLine ) )
+      {
+        ++index;
+        continue;
+      }
+    }
+
+    m_stream  << c;
+  }
+}
+
+
+bool 
+CompilerOutputter::processLocationFormatCommand( char command, 
+                                                 const SourceLine &sourceLine )
+{
+  switch ( command )
+  {
+  case 'p':
+    m_stream  <<  sourceLine.fileName();
+    return true;
+  case 'l':
+    m_stream  <<  sourceLine.lineNumber();
+    return true;
+  case 'f':
+    m_stream  <<  extractBaseName( sourceLine.fileName() );
+    return true;
+  }
+  
+  return false;
+}
+
+
+std::string 
+CompilerOutputter::extractBaseName( const std::string &fileName ) const
+{
+  int indexLastDirectorySeparator = fileName.find_last_of( '/' );
+  
+  if ( indexLastDirectorySeparator < 0 )
+    indexLastDirectorySeparator = fileName.find_last_of( '\\' );
+  
+  if ( indexLastDirectorySeparator < 0 )
+    return fileName;
+
+  return fileName.substr( indexLastDirectorySeparator +1 );
+}
+
+
+void 
+CompilerOutputter::printFailureType( TestFailure *failure )
+{
+  m_stream  <<  (failure->isError() ? "Error" : "Assertion");
+}
+
+
+void 
+CompilerOutputter::printFailedTestName( TestFailure *failure )
+{
+  m_stream  <<  std::endl;
+  m_stream  <<  "Test name: "  <<  failure->failedTestName();
+}
+
+
+void 
+CompilerOutputter::printFailureMessage( TestFailure *failure )
+{
+  m_stream  <<  std::endl;
+  Exception *thrownException = failure->thrownException();
+  m_stream  << thrownException->message().shortDescription()  <<  std::endl;
+
+  std::string message = thrownException->message().details();
+  if ( m_wrapColumn > 0 )
+    message = StringTools::wrap( message, m_wrapColumn );
+
+  m_stream  <<  message  <<  std::endl;
+}
+
+
+void 
+CompilerOutputter::printStatistics()
+{
+  m_stream  <<  "Failures !!!"  <<  std::endl;
+  m_stream  <<  "Run: "  <<  m_result->runTests()  << "   "
+            <<  "Failure total: "  <<  m_result->testFailuresTotal()  << "   "
+            <<  "Failures: "  <<  m_result->testFailures()  << "   "
+            <<  "Errors: "  <<  m_result->testErrors()
+            <<  std::endl;
+}
+
+
+void 
+CompilerOutputter::setWrapColumn( int wrapColumn )
+{
+  m_wrapColumn = wrapColumn;
+}
+
+
+void 
+CompilerOutputter::setNoWrap()
+{
+  m_wrapColumn = 0;
+}
+
+
+int 
+CompilerOutputter::wrapColumn() const
+{
+  return m_wrapColumn;
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/DefaultProtector.cpp b/lib/cppunit-1.10.0/src/cppunit/DefaultProtector.cpp
new file mode 100644 (file)
index 0000000..6fb306b
--- /dev/null
@@ -0,0 +1,42 @@
+#include <cppunit/Exception.h>
+#include <cppunit/extensions/TypeInfoHelper.h>
+#include "DefaultProtector.h"
+
+
+CPPUNIT_NS_BEGIN
+
+
+bool 
+DefaultProtector::protect( const Functor &functor,
+                           const ProtectorContext &context )
+{
+  try
+  {
+    return functor();
+  }
+  catch ( Exception &failure )
+  {
+    reportFailure( context, failure );
+  }
+  catch ( std::exception &e )
+  {
+    std::string shortDescription( "uncaught exception of type " );
+#if CPPUNIT_USE_TYPEINFO_NAME
+    shortDescription += TypeInfoHelper::getClassName( typeid(e) );
+#else
+    shortDescription += "std::exception (or derived).";
+#endif
+    Message message( shortDescription, e.what() );
+    reportError( context, message );
+  }
+  catch ( ... )
+  {
+    reportError( context,
+                 Message( "uncaught exception of unknown type") );
+  }
+  
+  return false;
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/DefaultProtector.h b/lib/cppunit-1.10.0/src/cppunit/DefaultProtector.h
new file mode 100644 (file)
index 0000000..4a76ea0
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef CPPUNIT_DEFAULTPROTECTOR_H
+#define CPPUNIT_DEFAULTPROTECTOR_H
+
+#include <cppunit/Protector.h>
+
+CPPUNIT_NS_BEGIN
+
+/*! \brief Default protector that catch all exceptions (Implementation).
+ *
+ * Implementation detail.
+ * \internal This protector catch and generate a failure for the following
+ * exception types:
+ * - Exception
+ * - std::exception
+ * - ...
+ */
+class DefaultProtector : public Protector
+{
+public:
+  bool protect( const Functor &functor,
+                const ProtectorContext &context );
+};
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_DEFAULTPROTECTOR_H
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/DllMain.cpp b/lib/cppunit-1.10.0/src/cppunit/DllMain.cpp
new file mode 100644 (file)
index 0000000..97d1497
--- /dev/null
@@ -0,0 +1,15 @@
+#define WIN32_LEAN_AND_MEAN 
+#define NOGDI
+#define NOUSER
+#define NOKERNEL
+#define NOSOUND
+
+#include <windows.h>
+
+BOOL APIENTRY 
+DllMain( HANDLE hModule, 
+         DWORD  ul_reason_for_call, 
+         LPVOID lpReserved )
+{
+  return TRUE;
+}
diff --git a/lib/cppunit-1.10.0/src/cppunit/DynamicLibraryManager.cpp b/lib/cppunit-1.10.0/src/cppunit/DynamicLibraryManager.cpp
new file mode 100644 (file)
index 0000000..e6f6294
--- /dev/null
@@ -0,0 +1,77 @@
+#include <cppunit/plugin/DynamicLibraryManager.h>
+
+#if !defined(CPPUNIT_NO_TESTPLUGIN)
+#include <cppunit/plugin/DynamicLibraryManagerException.h>
+
+CPPUNIT_NS_BEGIN
+
+
+DynamicLibraryManager::DynamicLibraryManager( const std::string &libraryFileName )
+    : m_libraryHandle( NULL )
+    , m_libraryName( libraryFileName )
+{
+  loadLibrary( libraryFileName );
+}
+
+
+DynamicLibraryManager::~DynamicLibraryManager()
+{
+  releaseLibrary();
+}
+
+
+DynamicLibraryManager::Symbol 
+DynamicLibraryManager::findSymbol( const std::string &symbol )
+{
+  try
+  {
+    Symbol symbolPointer = doFindSymbol( symbol );
+    if ( symbolPointer != NULL )
+      return symbolPointer;
+  }
+  catch ( ... )
+  {
+  }
+
+  throw DynamicLibraryManagerException( m_libraryName, 
+                                        symbol,
+                                        DynamicLibraryManagerException::symbolNotFound );
+  return NULL;    // keep compiler happy
+}
+
+
+void
+DynamicLibraryManager::loadLibrary( const std::string &libraryName )
+{
+  try
+  {
+    releaseLibrary();
+    m_libraryHandle = doLoadLibrary( libraryName );
+    if ( m_libraryHandle != NULL )
+      return;
+  }
+  catch (...)
+  {
+  }
+
+  throw DynamicLibraryManagerException( m_libraryName,
+                                        getLastErrorDetail(),
+                                        DynamicLibraryManagerException::loadingFailed );
+}
+
+
+void 
+DynamicLibraryManager::releaseLibrary()
+{
+  if ( m_libraryHandle != NULL )
+  {
+    doReleaseLibrary();
+    m_libraryHandle = NULL;
+  }
+}
+
+
+CPPUNIT_NS_END
+
+
+#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
diff --git a/lib/cppunit-1.10.0/src/cppunit/DynamicLibraryManagerException.cpp b/lib/cppunit-1.10.0/src/cppunit/DynamicLibraryManagerException.cpp
new file mode 100644 (file)
index 0000000..71bbb76
--- /dev/null
@@ -0,0 +1,41 @@
+#include <cppunit/plugin/DynamicLibraryManagerException.h>
+
+#if !defined(CPPUNIT_NO_TESTPLUGIN)
+
+CPPUNIT_NS_BEGIN
+
+
+DynamicLibraryManagerException::DynamicLibraryManagerException( 
+                                         const std::string &libraryName,
+                                         const std::string &errorDetail,
+                                         Cause cause )
+    : m_cause( cause )
+    , std::runtime_error( "" )
+{
+  if ( cause == loadingFailed )
+    m_message = "Failed to load dynamic library: " + libraryName + "\n" + 
+                errorDetail;
+  else
+    m_message = "Symbol [" + errorDetail + "] not found in dynamic libary:" + 
+                libraryName;
+}
+
+
+DynamicLibraryManagerException::Cause 
+DynamicLibraryManagerException::getCause() const
+{
+  return m_cause;
+}
+
+
+const char *
+DynamicLibraryManagerException::what() const throw()
+{
+  return m_message.c_str();
+}
+
+
+CPPUNIT_NS_END
+
+
+#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
diff --git a/lib/cppunit-1.10.0/src/cppunit/Exception.cpp b/lib/cppunit-1.10.0/src/cppunit/Exception.cpp
new file mode 100644 (file)
index 0000000..3bbe24b
--- /dev/null
@@ -0,0 +1,126 @@
+#include <cppunit/Exception.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED
+/*!
+ * \deprecated Use SourceLine::isValid() instead.
+ */
+const std::string Exception::UNKNOWNFILENAME = "<unknown>";
+
+/*!
+ * \deprecated Use SourceLine::isValid() instead.
+ */
+const long Exception::UNKNOWNLINENUMBER = -1;
+#endif
+
+
+Exception::Exception( const Exception &other )
+   : std::exception( other )
+{ 
+  m_message = other.m_message; 
+  m_sourceLine = other.m_sourceLine;
+} 
+
+
+Exception::Exception( const Message &message, 
+                      const SourceLine &sourceLine )
+    : m_message( message )
+    , m_sourceLine( sourceLine )
+{
+}
+
+
+#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED
+Exception::Exception( std::string message, 
+                      long lineNumber, 
+                      std::string fileName )
+    : m_message( message )
+    , m_sourceLine( fileName, lineNumber )
+{
+}
+#endif
+
+
+Exception::~Exception() throw()
+{
+}
+
+
+Exception & 
+Exception::operator =( const Exception& other )
+{ 
+// Don't call superclass operator =(). VC++ STL implementation
+// has a bug. It calls the destructor and copy constructor of 
+// std::exception() which reset the virtual table to std::exception.
+//  SuperClass::operator =(other);
+
+  if ( &other != this )
+  {
+    m_message = other.m_message; 
+    m_sourceLine = other.m_sourceLine;
+  }
+
+  return *this; 
+}
+
+
+const char*
+Exception::what() const throw()
+{
+  Exception *mutableThis = CPPUNIT_CONST_CAST( Exception *, this );
+  mutableThis->m_whatMessage = m_message.shortDescription() + "\n" + 
+                               m_message.details();
+  return m_whatMessage.c_str();
+}
+
+
+SourceLine 
+Exception::sourceLine() const
+{
+  return m_sourceLine;
+}
+
+
+Message 
+Exception::message() const
+{
+  return m_message;
+}
+
+
+void 
+Exception::setMessage( const Message &message )
+{
+  m_message = message;
+}
+
+
+#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED
+long 
+Exception::lineNumber() const
+{ 
+  return m_sourceLine.isValid() ? m_sourceLine.lineNumber() : 
+                                  UNKNOWNLINENUMBER; 
+}
+
+
+std::string 
+Exception::fileName() const
+{ 
+  return m_sourceLine.isValid() ? m_sourceLine.fileName() : 
+                                  UNKNOWNFILENAME;
+}
+#endif
+
+
+Exception *
+Exception::clone() const
+{
+  return new Exception( *this );
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/Makefile.am b/lib/cppunit-1.10.0/src/cppunit/Makefile.am
new file mode 100644 (file)
index 0000000..0f28295
--- /dev/null
@@ -0,0 +1,67 @@
+#
+# $Id: Makefile.am,v 1.1 2004/08/24 00:21:14 robertc Exp $
+#
+
+EXTRA_DIST = cppunit.dsp cppunit_dll.dsp DllMain.cpp
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
+
+lib_LTLIBRARIES = libcppunit.la
+
+libcppunit_la_SOURCES = \
+  AdditionalMessage.cpp \
+  Asserter.cpp \
+  BeOsDynamicLibraryManager.cpp \
+  BriefTestProgressListener.cpp \
+  CompilerOutputter.cpp \
+  DefaultProtector.h \
+  DefaultProtector.cpp \
+  DynamicLibraryManager.cpp \
+  DynamicLibraryManagerException.cpp \
+  Exception.cpp \
+  Message.cpp \
+  RepeatedTest.cpp \
+  PlugInManager.cpp \
+  PlugInParameters.cpp \
+  Protector.cpp \
+  ProtectorChain.h \
+  ProtectorContext.h \
+  ProtectorChain.cpp \
+  SourceLine.cpp \
+  StringTools.cpp \
+  SynchronizedObject.cpp \
+  Test.cpp \
+  TestAssert.cpp \
+  TestCase.cpp \
+  TestCaseDecorator.cpp \
+  TestComposite.cpp \
+  TestDecorator.cpp \
+  TestFactoryRegistry.cpp \
+  TestFailure.cpp \
+  TestLeaf.cpp \
+  TestNamer.cpp \
+  TestPath.cpp \
+  TestPlugInDefaultImpl.cpp \
+  TestResult.cpp \
+  TestResultCollector.cpp \
+  TestRunner.cpp \
+  TestSetUp.cpp \
+  TestSuccessListener.cpp \
+  TestSuite.cpp \
+  TestSuiteBuilderContext.cpp \
+  TextOutputter.cpp \
+  TextTestProgressListener.cpp \
+  TextTestResult.cpp \
+  TextTestRunner.cpp \
+  TypeInfoHelper.cpp \
+  UnixDynamicLibraryManager.cpp \
+  ShlDynamicLibraryManager.cpp \
+  XmlDocument.cpp \
+  XmlElement.cpp \
+  XmlOutputter.cpp \
+  XmlOutputterHook.cpp \
+  Win32DynamicLibraryManager.cpp
+
+libcppunit_la_LDFLAGS= \
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE)
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/Makefile.in b/lib/cppunit-1.10.0/src/cppunit/Makefile.in
new file mode 100644 (file)
index 0000000..3bcbc98
--- /dev/null
@@ -0,0 +1,633 @@
+# Makefile.in generated by automake 1.7.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+#
+# $Id: Makefile.in,v 1.1 2004/08/24 00:21:14 robertc Exp $
+#
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_BINARY_AGE = @CPPUNIT_BINARY_AGE@
+CPPUNIT_INTERFACE_AGE = @CPPUNIT_INTERFACE_AGE@
+CPPUNIT_MAJOR_VERSION = @CPPUNIT_MAJOR_VERSION@
+CPPUNIT_MICRO_VERSION = @CPPUNIT_MICRO_VERSION@
+CPPUNIT_MINOR_VERSION = @CPPUNIT_MINOR_VERSION@
+CPPUNIT_VERSION = @CPPUNIT_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DOC_FALSE = @DOC_FALSE@
+DOC_TRUE = @DOC_TRUE@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBADD_DL = @LIBADD_DL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+enable_dot = @enable_dot@
+enable_html_docs = @enable_html_docs@
+enable_latex_docs = @enable_latex_docs@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+
+EXTRA_DIST = cppunit.dsp cppunit_dll.dsp DllMain.cpp
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
+
+lib_LTLIBRARIES = libcppunit.la
+
+libcppunit_la_SOURCES = \
+  AdditionalMessage.cpp \
+  Asserter.cpp \
+  BeOsDynamicLibraryManager.cpp \
+  BriefTestProgressListener.cpp \
+  CompilerOutputter.cpp \
+  DefaultProtector.h \
+  DefaultProtector.cpp \
+  DynamicLibraryManager.cpp \
+  DynamicLibraryManagerException.cpp \
+  Exception.cpp \
+  Message.cpp \
+  RepeatedTest.cpp \
+  PlugInManager.cpp \
+  PlugInParameters.cpp \
+  Protector.cpp \
+  ProtectorChain.h \
+  ProtectorContext.h \
+  ProtectorChain.cpp \
+  SourceLine.cpp \
+  StringTools.cpp \
+  SynchronizedObject.cpp \
+  Test.cpp \
+  TestAssert.cpp \
+  TestCase.cpp \
+  TestCaseDecorator.cpp \
+  TestComposite.cpp \
+  TestDecorator.cpp \
+  TestFactoryRegistry.cpp \
+  TestFailure.cpp \
+  TestLeaf.cpp \
+  TestNamer.cpp \
+  TestPath.cpp \
+  TestPlugInDefaultImpl.cpp \
+  TestResult.cpp \
+  TestResultCollector.cpp \
+  TestRunner.cpp \
+  TestSetUp.cpp \
+  TestSuccessListener.cpp \
+  TestSuite.cpp \
+  TestSuiteBuilderContext.cpp \
+  TextOutputter.cpp \
+  TextTestProgressListener.cpp \
+  TextTestResult.cpp \
+  TextTestRunner.cpp \
+  TypeInfoHelper.cpp \
+  UnixDynamicLibraryManager.cpp \
+  ShlDynamicLibraryManager.cpp \
+  XmlDocument.cpp \
+  XmlElement.cpp \
+  XmlOutputter.cpp \
+  XmlOutputterHook.cpp \
+  Win32DynamicLibraryManager.cpp
+
+
+libcppunit_la_LDFLAGS = \
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE)
+
+subdir = src/cppunit
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config/config.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(lib_LTLIBRARIES)
+
+libcppunit_la_LIBADD =
+am_libcppunit_la_OBJECTS = AdditionalMessage.lo Asserter.lo \
+       BeOsDynamicLibraryManager.lo BriefTestProgressListener.lo \
+       CompilerOutputter.lo DefaultProtector.lo \
+       DynamicLibraryManager.lo DynamicLibraryManagerException.lo \
+       Exception.lo Message.lo RepeatedTest.lo PlugInManager.lo \
+       PlugInParameters.lo Protector.lo ProtectorChain.lo \
+       SourceLine.lo StringTools.lo SynchronizedObject.lo Test.lo \
+       TestAssert.lo TestCase.lo TestCaseDecorator.lo TestComposite.lo \
+       TestDecorator.lo TestFactoryRegistry.lo TestFailure.lo \
+       TestLeaf.lo TestNamer.lo TestPath.lo TestPlugInDefaultImpl.lo \
+       TestResult.lo TestResultCollector.lo TestRunner.lo TestSetUp.lo \
+       TestSuccessListener.lo TestSuite.lo TestSuiteBuilderContext.lo \
+       TextOutputter.lo TextTestProgressListener.lo TextTestResult.lo \
+       TextTestRunner.lo TypeInfoHelper.lo \
+       UnixDynamicLibraryManager.lo ShlDynamicLibraryManager.lo \
+       XmlDocument.lo XmlElement.lo XmlOutputter.lo \
+       XmlOutputterHook.lo Win32DynamicLibraryManager.lo
+libcppunit_la_OBJECTS = $(am_libcppunit_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/config
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/AdditionalMessage.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/Asserter.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/BeOsDynamicLibraryManager.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/BriefTestProgressListener.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/CompilerOutputter.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/DefaultProtector.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/DynamicLibraryManager.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/DynamicLibraryManagerException.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/Exception.Plo ./$(DEPDIR)/Message.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/PlugInManager.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/PlugInParameters.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/Protector.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/ProtectorChain.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/RepeatedTest.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/ShlDynamicLibraryManager.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/SourceLine.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/StringTools.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/SynchronizedObject.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/Test.Plo ./$(DEPDIR)/TestAssert.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestCase.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestCaseDecorator.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestComposite.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestDecorator.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestFactoryRegistry.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestFailure.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestLeaf.Plo ./$(DEPDIR)/TestNamer.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestPath.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestPlugInDefaultImpl.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestResult.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestResultCollector.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestRunner.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestSetUp.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestSuccessListener.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestSuite.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TestSuiteBuilderContext.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TextOutputter.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TextTestProgressListener.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TextTestResult.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TextTestRunner.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/TypeInfoHelper.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/UnixDynamicLibraryManager.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/Win32DynamicLibraryManager.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/XmlDocument.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/XmlElement.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/XmlOutputter.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/XmlOutputterHook.Plo
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+       $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libcppunit_la_SOURCES)
+DIST_COMMON = Makefile.am Makefile.in
+SOURCES = $(libcppunit_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  src/cppunit/Makefile
+Makefile:  $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+libLTLIBRARIES_INSTALL = $(INSTALL)
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(libdir)
+       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         if test -f $$p; then \
+           f="`echo $$p | sed -e 's|^.*/||'`"; \
+           echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \
+           $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \
+         else :; fi; \
+       done
+
+uninstall-libLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+           p="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \
+         $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
+       done
+
+clean-libLTLIBRARIES:
+       -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" = "$$p" && dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+libcppunit.la: $(libcppunit_la_OBJECTS) $(libcppunit_la_DEPENDENCIES) 
+       $(CXXLINK) -rpath $(libdir) $(libcppunit_la_LDFLAGS) $(libcppunit_la_OBJECTS) $(libcppunit_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AdditionalMessage.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Asserter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BeOsDynamicLibraryManager.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BriefTestProgressListener.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CompilerOutputter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DefaultProtector.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DynamicLibraryManager.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DynamicLibraryManagerException.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Exception.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Message.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PlugInManager.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PlugInParameters.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Protector.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ProtectorChain.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RepeatedTest.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShlDynamicLibraryManager.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SourceLine.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StringTools.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SynchronizedObject.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestAssert.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestCase.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestCaseDecorator.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestComposite.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestDecorator.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestFactoryRegistry.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestFailure.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestLeaf.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestNamer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestPath.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestPlugInDefaultImpl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestResult.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestResultCollector.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestRunner.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSetUp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSuccessListener.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSuite.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSuiteBuilderContext.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TextOutputter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TextTestProgressListener.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TextTestResult.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TextTestRunner.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TypeInfoHelper.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnixDynamicLibraryManager.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Win32DynamicLibraryManager.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlDocument.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlElement.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlOutputter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XmlOutputterHook.Plo@am__quote@
+
+distclean-depend:
+       -rm -rf ./$(DEPDIR)
+
+.cpp.o:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@  if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCXX_TRUE@    -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+@am__fastdepCXX_TRUE@  else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCXX_TRUE@  fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(libdir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+       mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-compile distclean-depend \
+       distclean-generic distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am: install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libLTLIBRARIES clean-libtool ctags distclean \
+       distclean-compile distclean-depend distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am info \
+       info-am install install-am install-data install-data-am \
+       install-exec install-exec-am install-info install-info-am \
+       install-libLTLIBRARIES install-man install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am uninstall-info-am \
+       uninstall-libLTLIBRARIES
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/cppunit-1.10.0/src/cppunit/Message.cpp b/lib/cppunit-1.10.0/src/cppunit/Message.cpp
new file mode 100644 (file)
index 0000000..85f235e
--- /dev/null
@@ -0,0 +1,149 @@
+#include <cppunit/Message.h>
+#include <stdexcept>
+
+
+CPPUNIT_NS_BEGIN
+
+
+Message::Message()
+{
+}
+
+
+Message::Message( const std::string &shortDescription )
+    : m_shortDescription( shortDescription )
+{
+}
+
+
+Message::Message( const std::string &shortDescription,
+                  const std::string &detail1 )
+    : m_shortDescription( shortDescription )
+{
+  addDetail( detail1 );
+}
+
+
+Message::Message( const std::string &shortDescription,
+                  const std::string &detail1,
+                  const std::string &detail2 )
+    : m_shortDescription( shortDescription )
+{
+  addDetail( detail1, detail2 );
+}
+
+
+Message::Message( const std::string &shortDescription,
+                  const std::string &detail1,
+                  const std::string &detail2,
+                  const std::string &detail3 )
+    : m_shortDescription( shortDescription )
+{
+  addDetail( detail1, detail2, detail3 );
+}
+
+
+const std::string &
+Message::shortDescription() const
+{
+  return m_shortDescription;
+}
+
+
+int 
+Message::detailCount() const
+{
+  return m_details.size();
+}
+
+
+std::string 
+Message::detailAt( int index ) const
+{
+  if ( index < 0  ||  index >= detailCount() )
+    throw std::invalid_argument( "Message::detailAt() : invalid index" );
+
+  return m_details[ index ];
+}
+
+
+std::string 
+Message::details() const
+{
+  std::string details;
+  for ( Details::const_iterator it = m_details.begin(); it != m_details.end(); ++it )
+  {
+    details += "- ";
+    details += *it;
+    details += '\n';
+  }
+  return details;
+}
+
+
+void 
+Message::clearDetails()
+{
+  m_details.clear();
+}
+
+
+void 
+Message::addDetail( const std::string &detail )
+{
+  m_details.push_back( detail );
+}
+
+
+void 
+Message::addDetail( const std::string &detail1,
+                    const std::string &detail2 )
+{
+  addDetail( detail1 );
+  addDetail( detail2 );
+}
+
+
+void 
+Message::addDetail( const std::string &detail1,
+                    const std::string &detail2,
+                    const std::string &detail3 )
+{
+  addDetail( detail1, detail2 );
+  addDetail( detail3 );
+}
+
+
+void 
+Message::addDetail( const Message &message )
+{
+  m_details.insert( m_details.end(), 
+                    message.m_details.begin(), 
+                    message.m_details.end() );
+}
+
+
+void 
+Message::setShortDescription( const std::string &shortDescription )
+{
+  m_shortDescription = shortDescription;
+}
+
+
+bool 
+Message::operator ==( const Message &other ) const
+{
+  return m_shortDescription == other.m_shortDescription  &&
+         m_details == other.m_details;
+}
+
+
+bool 
+Message::operator !=( const Message &other ) const
+{
+  return !( *this == other );
+}
+
+
+CPPUNIT_NS_END
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/PlugInManager.cpp b/lib/cppunit-1.10.0/src/cppunit/PlugInManager.cpp
new file mode 100644 (file)
index 0000000..2a5eaf9
--- /dev/null
@@ -0,0 +1,109 @@
+#include <cppunit/XmlOutputterHook.h>
+
+#if !defined(CPPUNIT_NO_TESTPLUGIN)
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/plugin/PlugInManager.h>
+#include <cppunit/plugin/TestPlugIn.h>
+#include <cppunit/plugin/DynamicLibraryManager.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+PlugInManager::PlugInManager()
+{
+}
+
+
+PlugInManager::~PlugInManager()
+{
+  for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
+    unload( *it );
+}
+
+
+void
+PlugInManager::load( const std::string &libraryFileName,
+                     const PlugInParameters &parameters )
+{
+  PlugInInfo info;
+  info.m_fileName = libraryFileName;
+  info.m_manager = new DynamicLibraryManager( libraryFileName );
+
+  TestPlugInSignature plug = (TestPlugInSignature)info.m_manager->findSymbol( 
+        CPPUNIT_STRINGIZE( CPPUNIT_PLUGIN_EXPORTED_NAME ) );
+  info.m_interface = (*plug)();
+
+  m_plugIns.push_back( info );
+  
+  info.m_interface->initialize( &TestFactoryRegistry::getRegistry(), parameters );
+}
+
+
+void 
+PlugInManager::unload( const std::string &libraryFileName )
+{
+  for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
+  {
+    if ( (*it).m_fileName == libraryFileName )
+    {
+      unload( *it );
+      m_plugIns.erase( it );
+      break;
+    }
+  }
+}
+
+
+void 
+PlugInManager::addListener( TestResult *eventManager )
+{
+  for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
+    (*it).m_interface->addListener( eventManager );
+}
+
+
+void 
+PlugInManager::removeListener( TestResult *eventManager )
+{
+  for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
+    (*it).m_interface->removeListener( eventManager );
+}
+
+
+void 
+PlugInManager::unload( PlugInInfo &plugIn )
+{
+  try
+  {
+    plugIn.m_interface->uninitialize( &TestFactoryRegistry::getRegistry() );
+    delete plugIn.m_manager;
+  }
+  catch (...)
+  {
+    delete plugIn.m_manager;
+    plugIn.m_manager = NULL;
+    throw;
+  }
+}
+
+
+void 
+PlugInManager::addXmlOutputterHooks( XmlOutputter *outputter )
+{
+  for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
+    (*it).m_interface->addXmlOutputterHooks( outputter );
+}
+
+
+void 
+PlugInManager::removeXmlOutputterHooks()
+{
+  for ( PlugIns::iterator it = m_plugIns.begin(); it != m_plugIns.end(); ++it )
+    (*it).m_interface->removeXmlOutputterHooks();
+}
+
+
+CPPUNIT_NS_END
+
+#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
diff --git a/lib/cppunit-1.10.0/src/cppunit/PlugInParameters.cpp b/lib/cppunit-1.10.0/src/cppunit/PlugInParameters.cpp
new file mode 100644 (file)
index 0000000..1b532f9
--- /dev/null
@@ -0,0 +1,28 @@
+#include <cppunit/plugin/PlugInParameters.h>
+
+#if !defined(CPPUNIT_NO_TESTPLUGIN)
+
+CPPUNIT_NS_BEGIN
+
+
+PlugInParameters::PlugInParameters( const std::string &commandLine )
+    : m_commandLine( commandLine )
+{
+}
+
+
+PlugInParameters::~PlugInParameters()
+{
+}
+
+
+std::string 
+PlugInParameters::getCommandLine() const
+{
+  return m_commandLine;
+}
+
+
+CPPUNIT_NS_END
+
+#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
diff --git a/lib/cppunit-1.10.0/src/cppunit/Protector.cpp b/lib/cppunit-1.10.0/src/cppunit/Protector.cpp
new file mode 100644 (file)
index 0000000..5c171ec
--- /dev/null
@@ -0,0 +1,86 @@
+#include <cppunit/Exception.h>
+#include <cppunit/Message.h>
+#include <cppunit/Protector.h>
+#include <cppunit/TestResult.h>
+#include "ProtectorContext.h"
+#include <memory>
+
+CPPUNIT_NS_BEGIN
+
+Functor::~Functor()
+{
+}
+
+
+Protector::~Protector()
+{
+}
+
+
+void 
+Protector::reportError( const ProtectorContext &context,
+                        const Exception &error ) const
+{
+  std::auto_ptr<Exception> actualError( error.clone() );
+  actualError->setMessage( actualMessage( actualError->message(), context ) );
+  context.m_result->addError( context.m_test, 
+                              actualError.release() );
+}
+
+
+
+void 
+Protector::reportError( const ProtectorContext &context,
+                        const Message &message,
+                        const SourceLine &sourceLine ) const
+{
+  reportError( context, Exception( message, sourceLine ) );
+}
+
+
+void 
+Protector::reportFailure( const ProtectorContext &context,
+                          const Exception &failure ) const
+{
+  std::auto_ptr<Exception> actualFailure( failure.clone() );
+  actualFailure->setMessage( actualMessage( actualFailure->message(), context ) );
+  context.m_result->addFailure( context.m_test, 
+                                actualFailure.release() );
+}
+
+
+Message 
+Protector::actualMessage( const Message &message,
+                          const ProtectorContext &context ) const
+{
+  Message theActualMessage;
+  if ( context.m_shortDescription.empty() )
+    theActualMessage = message;
+  else
+  {
+    theActualMessage = Message( context.m_shortDescription, 
+                                message.shortDescription() );
+    theActualMessage.addDetail( message );
+  }
+
+  return theActualMessage;
+}
+
+
+
+
+ProtectorGuard::ProtectorGuard( TestResult *result,
+                                              Protector *protector )
+    : m_result( result )
+{
+  m_result->pushProtector( protector );
+}
+
+
+ProtectorGuard::~ProtectorGuard()
+{
+  m_result->popProtector();
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/ProtectorChain.cpp b/lib/cppunit-1.10.0/src/cppunit/ProtectorChain.cpp
new file mode 100644 (file)
index 0000000..f528341
--- /dev/null
@@ -0,0 +1,86 @@
+#include "ProtectorChain.h"
+
+CPPUNIT_NS_BEGIN
+
+
+class ProtectorChain::ProtectFunctor : public Functor
+{
+public:
+  ProtectFunctor( Protector *protector,
+                  const Functor &functor,
+                  const ProtectorContext &context )
+      : m_protector( protector )
+      , m_functor( functor )
+      , m_context( context )
+  {
+  }
+
+  bool operator()() const
+  {
+    return m_protector->protect( m_functor, m_context );
+  }
+
+private:
+  Protector *m_protector;
+  const Functor &m_functor;
+  const ProtectorContext &m_context;
+};
+
+
+ProtectorChain::~ProtectorChain()
+{
+  while ( count() > 0 )
+    pop();
+}
+
+
+void 
+ProtectorChain::push( Protector *protector )
+{
+  m_protectors.push_back( protector );
+}
+
+
+void 
+ProtectorChain::pop()
+{
+  delete m_protectors.back();
+  m_protectors.pop_back();
+}
+
+int 
+ProtectorChain::count() const
+{
+  return m_protectors.size();
+}
+
+
+bool 
+ProtectorChain::protect( const Functor &functor,
+                         const ProtectorContext &context )
+{
+  if ( m_protectors.empty() )
+    return functor();
+
+  Functors functors;
+  for ( int index = m_protectors.size()-1; index >= 0; --index )
+  {
+    const Functor &protectedFunctor = 
+              functors.empty() ? functor : *functors.back();
+
+    functors.push_back( new ProtectFunctor( m_protectors[index],
+                                            protectedFunctor, 
+                                            context ) );
+  }
+
+  const Functor &outermostFunctor = *functors.back();
+  bool succeed = outermostFunctor();
+
+  for ( unsigned int deletingIndex = 0; deletingIndex < m_protectors.size(); ++deletingIndex )
+    delete functors[deletingIndex];
+
+  return succeed;
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/ProtectorChain.h b/lib/cppunit-1.10.0/src/cppunit/ProtectorChain.h
new file mode 100644 (file)
index 0000000..711b56f
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef CPPUNIT_PROTECTORCHAIN_H
+#define CPPUNIT_PROTECTORCHAIN_H
+
+#include <cppunit/Protector.h>
+#include <cppunit/portability/CppUnitDeque.h>
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( push )
+#pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
+#endif
+
+
+CPPUNIT_NS_BEGIN
+
+/*! \brief Protector chain (Implementation).
+ * Implementation detail.
+ * \internal Protector that protect a Functor using a chain of nested Protector.
+ */
+class CPPUNIT_API ProtectorChain : public Protector
+{
+public:
+  ~ProtectorChain();
+
+  void push( Protector *protector );
+
+  void pop();
+
+  int count() const;
+
+  bool protect( const Functor &functor,
+                const ProtectorContext &context );
+
+private:
+  class ProtectFunctor;
+
+private:
+  typedef CppUnitDeque<Protector *> Protectors;
+  Protectors m_protectors;
+
+  typedef CppUnitDeque<Functor *> Functors;
+};
+
+
+CPPUNIT_NS_END
+
+#if CPPUNIT_NEED_DLL_DECL
+#pragma warning( pop )
+#endif
+
+#endif // CPPUNIT_PROTECTORCHAIN_H
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/ProtectorContext.h b/lib/cppunit-1.10.0/src/cppunit/ProtectorContext.h
new file mode 100644 (file)
index 0000000..c3d496c
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef CPPUNIT_PROTECTORCONTEXT_H
+#define CPPUNIT_PROTECTORCONTEXT_H
+
+#include <cppunit/Portability.h>
+#include <string>
+
+CPPUNIT_NS_BEGIN
+
+class Test;
+class TestResult;
+
+
+/*! \brief Protector context (Implementation).
+ * Implementation detail.
+ * \internal Context use to report failure in Protector.
+ */
+class CPPUNIT_API ProtectorContext
+{
+public:
+  ProtectorContext( Test *test,
+                    TestResult *result,
+                    const std::string &shortDescription )
+      : m_test( test )
+      , m_result( result )
+      , m_shortDescription( shortDescription )
+  {
+  }
+
+  Test *m_test;
+  TestResult *m_result;
+  std::string m_shortDescription;
+};
+
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_PROTECTORCONTEXT_H
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/RepeatedTest.cpp b/lib/cppunit-1.10.0/src/cppunit/RepeatedTest.cpp
new file mode 100644 (file)
index 0000000..2533ca1
--- /dev/null
@@ -0,0 +1,29 @@
+#include <cppunit/extensions/RepeatedTest.h>
+#include <cppunit/TestResult.h>
+
+CPPUNIT_NS_BEGIN
+
+
+// Counts the number of test cases that will be run by this test.
+int
+RepeatedTest::countTestCases() const
+{ 
+  return TestDecorator::countTestCases() * m_timesRepeat; 
+}
+
+
+// Runs a repeated test
+void 
+RepeatedTest::run( TestResult *result )
+{
+  for ( int n = 0; n < m_timesRepeat; n++ ) 
+  {
+    if ( result->shouldStop() )
+        break;
+
+    TestDecorator::run( result );
+  }
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/ShlDynamicLibraryManager.cpp b/lib/cppunit-1.10.0/src/cppunit/ShlDynamicLibraryManager.cpp
new file mode 100644 (file)
index 0000000..9f4be22
--- /dev/null
@@ -0,0 +1,53 @@
+#include <cppunit/Portability.h>
+
+#if defined(CPPUNIT_HAVE_UNIX_SHL_LOADER)
+#include <cppunit/plugin/DynamicLibraryManager.h>
+
+#include <dl.h>
+#include <unistd.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+DynamicLibraryManager::LibraryHandle 
+DynamicLibraryManager::doLoadLibrary( const std::string &libraryName )
+{
+   return ::shl_load(libraryName.c_str(), BIND_IMMEDIATE, 0L);
+}
+
+
+void 
+DynamicLibraryManager::doReleaseLibrary()
+{
+  ::shl_unload( (shl_t)m_libraryHandle);
+}
+
+
+DynamicLibraryManager::Symbol 
+DynamicLibraryManager::doFindSymbol( const std::string &symbol )
+{
+   DynamicLibraryManager::Symbol L_symaddr = 0;
+   if ( ::shl_findsym( (shl_t*)(&m_libraryHandle), 
+                       symbol.c_str(), 
+                       TYPE_UNDEFINED, 
+                       &L_symaddr ) == 0 )
+   {
+      return L_symaddr;
+   } 
+
+   return 0;
+}
+
+
+std::string 
+DynamicLibraryManager::getLastErrorDetail() const
+{
+  return "";
+}
+
+
+CPPUNIT_NS_END
+
+
+#endif // defined(CPPUNIT_HAVE_UNIX_SHL_LOADER)
diff --git a/lib/cppunit-1.10.0/src/cppunit/SourceLine.cpp b/lib/cppunit-1.10.0/src/cppunit/SourceLine.cpp
new file mode 100644 (file)
index 0000000..bd70709
--- /dev/null
@@ -0,0 +1,62 @@
+#include <cppunit/SourceLine.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+SourceLine::SourceLine() :
+    m_lineNumber( -1 )
+{
+}
+
+
+SourceLine::SourceLine( const std::string &fileName,
+                        int lineNumber ) :
+    m_fileName( fileName ),
+    m_lineNumber( lineNumber )
+{
+}
+
+
+SourceLine::~SourceLine()
+{
+}
+
+
+bool 
+SourceLine::isValid() const
+{
+  return !m_fileName.empty();
+}
+
+
+int 
+SourceLine::lineNumber() const
+{
+  return m_lineNumber;
+}
+
+
+std::string 
+SourceLine::fileName() const
+{
+  return m_fileName;
+}
+
+
+bool 
+SourceLine::operator ==( const SourceLine &other ) const
+{
+  return m_fileName == other.m_fileName  &&
+         m_lineNumber == other.m_lineNumber;
+}
+
+
+bool 
+SourceLine::operator !=( const SourceLine &other ) const
+{
+  return !( *this == other );
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/StringTools.cpp b/lib/cppunit-1.10.0/src/cppunit/StringTools.cpp
new file mode 100644 (file)
index 0000000..2f77d24
--- /dev/null
@@ -0,0 +1,79 @@
+#include <cppunit/tools/StringTools.h>
+#include <algorithm>
+
+
+CPPUNIT_NS_BEGIN
+
+
+std::string 
+StringTools::toString( int value )
+{
+  OStringStream stream;
+  stream << value;
+  return stream.str();
+}
+
+
+std::string 
+StringTools::toString( double value )
+{
+  OStringStream stream;
+  stream << value;
+  return stream.str();
+}
+
+
+StringTools::Strings
+StringTools::split( const std::string &text, 
+                    char separator )
+{
+  Strings splittedText;
+
+  std::string::const_iterator itStart = text.begin();
+  while ( !text.empty() )
+  {
+    std::string::const_iterator itSeparator = std::find( itStart, 
+                                                         text.end(), 
+                                                         separator );
+    splittedText.push_back( text.substr( itStart - text.begin(),
+                                         itSeparator - itStart ) );
+    if ( itSeparator == text.end() )
+      break;
+    itStart = itSeparator +1;
+  }
+
+  return splittedText;
+}
+
+
+std::string 
+StringTools::wrap( const std::string &text,
+                   int wrapColumn )
+{
+  const char lineBreak = '\n';
+  Strings lines = split( text, lineBreak );
+
+  std::string wrapped;
+  for ( Strings::const_iterator it = lines.begin(); it != lines.end(); ++it )
+  {
+    if ( it != lines.begin() )
+      wrapped += lineBreak;
+
+    const std::string &line = *it;
+    unsigned int index =0;
+    while ( index < line.length() )
+    {
+      std::string lineSlice( line.substr( index, wrapColumn ) );
+      wrapped += lineSlice;
+      index += wrapColumn;
+      if ( index < line.length() )
+        wrapped += lineBreak;
+    }
+  }
+
+  return wrapped;
+}
+
+
+CPPUNIT_NS_END
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/SynchronizedObject.cpp b/lib/cppunit-1.10.0/src/cppunit/SynchronizedObject.cpp
new file mode 100644 (file)
index 0000000..1764538
--- /dev/null
@@ -0,0 +1,32 @@
+#include <cppunit/SynchronizedObject.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+SynchronizedObject::SynchronizedObject( SynchronizationObject *syncObject )
+    : m_syncObject( syncObject == 0 ? new SynchronizationObject() : 
+                                      syncObject )
+{
+}
+
+
+SynchronizedObject::~SynchronizedObject()
+{
+  delete m_syncObject;
+}
+
+
+/** Accept a new synchronization object for protection of this instance
+ * TestResult assumes ownership of the object
+ */
+void 
+SynchronizedObject::setSynchronizationObject( SynchronizationObject *syncObject )
+{ 
+  delete m_syncObject; 
+  m_syncObject = syncObject; 
+}
+
+
+CPPUNIT_NS_END
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/Test.cpp b/lib/cppunit-1.10.0/src/cppunit/Test.cpp
new file mode 100644 (file)
index 0000000..fef8be7
--- /dev/null
@@ -0,0 +1,97 @@
+#include <cppunit/Portability.h>
+#include <cppunit/Test.h>
+#include <cppunit/TestPath.h>
+#include <stdexcept>
+
+
+CPPUNIT_NS_BEGIN
+
+
+Test *
+Test::getChildTestAt( int index ) const
+{
+  checkIsValidIndex( index );
+  return doGetChildTestAt( index );
+}
+
+
+Test *
+Test::findTest( const std::string &testName ) const
+{
+  TestPath path;
+  Test *mutableThis = CPPUNIT_CONST_CAST( Test *, this );
+  mutableThis->findTestPath( testName, path );
+  if ( !path.isValid() )
+    throw std::invalid_argument( "No test named <" + testName + "> found in test <"
+                                 + getName() + ">." );
+  return path.getChildTest();
+}
+
+
+bool 
+Test::findTestPath( const std::string &testName,
+                    TestPath &testPath ) const
+{
+  Test *mutableThis = CPPUNIT_CONST_CAST( Test *, this );
+  if ( getName() == testName )
+  {
+    testPath.add( mutableThis );
+    return true;
+  }
+
+  int childCount = getChildTestCount();
+  for ( int childIndex =0; childIndex < childCount; ++childIndex )
+  {
+    if ( getChildTestAt( childIndex )->findTestPath( testName, testPath ) )
+    {
+      testPath.insert( mutableThis, 0 );
+      return true;
+    }
+  }
+
+  return false;
+}
+
+
+bool 
+Test::findTestPath( const Test *test,
+                    TestPath &testPath ) const
+{
+  Test *mutableThis = CPPUNIT_CONST_CAST( Test *, this );
+  if ( this == test )
+  {
+    testPath.add( mutableThis );
+    return true;
+  }
+
+  int childCount = getChildTestCount();
+  for ( int childIndex =0; childIndex < childCount; ++childIndex )
+  {
+    if ( getChildTestAt( childIndex )->findTestPath( test, testPath ) )
+    {
+      testPath.insert( mutableThis, 0 );
+      return true;
+    }
+  }
+
+  return false;
+}
+
+
+TestPath 
+Test::resolveTestPath( const std::string &testPath ) const
+{
+  Test *mutableThis = CPPUNIT_CONST_CAST( Test *, this );
+  return TestPath( mutableThis, testPath );
+}
+
+
+void 
+Test::checkIsValidIndex( int index ) const
+{
+  if ( index < 0  ||  index >= getChildTestCount() )
+    throw std::out_of_range( "Test::checkValidIndex(): invalid index" );
+}
+  
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestAssert.cpp b/lib/cppunit-1.10.0/src/cppunit/TestAssert.cpp
new file mode 100644 (file)
index 0000000..484f372
--- /dev/null
@@ -0,0 +1,26 @@
+#if HAVE_CMATH
+#   include <cmath>
+#else
+#   include <math.h>
+#endif
+
+#include <cppunit/TestAssert.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+void 
+assertDoubleEquals( double expected,
+                    double actual,
+                    double delta,
+                    SourceLine sourceLine )
+{
+  Asserter::failNotEqualIf( fabs( expected - actual ) > delta,
+                            assertion_traits<double>::toString(expected),
+                            assertion_traits<double>::toString(actual),
+                            sourceLine );
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestCase.cpp b/lib/cppunit-1.10.0/src/cppunit/TestCase.cpp
new file mode 100644 (file)
index 0000000..13c0525
--- /dev/null
@@ -0,0 +1,137 @@
+#include <cppunit/Portability.h>
+#include <cppunit/Exception.h>
+#include <cppunit/Protector.h>
+#include <cppunit/TestCase.h>
+#include <cppunit/TestResult.h>
+#include <stdexcept>
+
+#if CPPUNIT_USE_TYPEINFO_NAME
+#  include <typeinfo>
+#endif
+
+CPPUNIT_NS_BEGIN
+
+/*! \brief Functor to call test case method (Implementation).
+ *
+ * Implementation detail.
+ */
+class TestCaseMethodFunctor : public Functor
+{
+public:
+  typedef void (TestCase::*Method)();
+
+  TestCaseMethodFunctor( TestCase *target,
+                         Method method )
+     : m_target( target )
+     , m_method( method )
+  {
+  }
+
+  bool operator()() const
+  {
+    (m_target->*m_method)();
+    return true;
+  }
+
+private:
+  TestCase *m_target;
+  Method m_method;
+};
+
+
+/** Constructs a test case.
+ *  \param name the name of the TestCase.
+ **/
+TestCase::TestCase( const std::string &name )
+    : m_name(name)
+{
+}
+
+
+/// Run the test and catch any exceptions that are triggered by it 
+void 
+TestCase::run( TestResult *result )
+{
+  result->startTest(this);
+/*
+  try {
+    setUp();
+
+    try {
+      runTest();
+    }
+    catch ( Exception &e ) {
+      Exception *copy = e.clone();
+      result->addFailure( this, copy );
+    }
+    catch ( std::exception &e ) {
+      result->addError( this, new Exception( Message( "uncaught std::exception", 
+                                                      e.what() ) ) );
+    }
+    catch (...) {
+      Exception *e = new Exception( Message( "uncaught unknown exception" ) );
+      result->addError( this, e );
+    }
+
+    try {
+      tearDown();
+    }
+    catch (...) {
+      result->addError( this, new Exception( Message( "tearDown() failed" ) ) );
+    }
+  }
+  catch (...) {
+    result->addError( this, new Exception( Message( "setUp() failed" ) ) );
+  }
+*/
+  if ( result->protect( TestCaseMethodFunctor( this, &TestCase::setUp ),
+                        this,
+                       "setUp() failed" ) )
+  {
+    result->protect( TestCaseMethodFunctor( this, &TestCase::runTest ),
+                     this );
+  }
+
+  result->protect( TestCaseMethodFunctor( this, &TestCase::tearDown ),
+                   this,
+                   "tearDown() failed" );
+
+  result->endTest( this );
+}
+
+
+/// All the work for runTest is deferred to subclasses 
+void 
+TestCase::runTest()
+{
+}
+
+
+/** Constructs a test case for a suite.
+ * \deprecated This constructor was used by fixture when TestFixture did not exist.
+ *             Have your fixture inherits TestFixture instead of TestCase.
+ * \internal
+ *  This TestCase was intended for use by the TestCaller and should not
+ *  be used by a test case for which run() is called.
+ **/
+TestCase::TestCase()
+    : m_name( "" )
+{
+}
+
+
+/// Destructs a test case
+TestCase::~TestCase()
+{
+}
+
+
+/// Returns the name of the test case
+std::string 
+TestCase::getName() const
+{ 
+  return m_name; 
+}
+  
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestCaseDecorator.cpp b/lib/cppunit-1.10.0/src/cppunit/TestCaseDecorator.cpp
new file mode 100644 (file)
index 0000000..4fb8f80
--- /dev/null
@@ -0,0 +1,47 @@
+#include <cppunit/extensions/TestCaseDecorator.h>
+
+CPPUNIT_NS_BEGIN
+
+
+TestCaseDecorator::TestCaseDecorator( TestCase *test )
+    : m_test( test )
+    , TestCase( test->getName() )
+{ 
+}
+
+
+TestCaseDecorator::~TestCaseDecorator()
+{
+  delete m_test;
+}
+
+
+std::string 
+TestCaseDecorator::getName() const
+{ 
+  return m_test->getName(); 
+}
+
+
+void 
+TestCaseDecorator::setUp()
+{
+  m_test->setUp();
+}
+
+
+void 
+TestCaseDecorator::tearDown()
+{
+  m_test->tearDown();
+}
+
+
+void 
+TestCaseDecorator::runTest()
+{
+  m_test->runTest();
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestComposite.cpp b/lib/cppunit-1.10.0/src/cppunit/TestComposite.cpp
new file mode 100644 (file)
index 0000000..4768791
--- /dev/null
@@ -0,0 +1,77 @@
+#include <cppunit/TestComposite.h>
+#include <cppunit/TestResult.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+TestComposite::TestComposite( const std::string &name )
+    : m_name( name )
+{
+}
+
+
+TestComposite::~TestComposite()
+{
+}
+
+
+void 
+TestComposite::run( TestResult *result )
+{
+  doStartSuite( result );
+  doRunChildTests( result );
+  doEndSuite( result );
+}
+
+
+int 
+TestComposite::countTestCases() const
+{
+  int count = 0;
+  
+  int childCount = getChildTestCount();
+  for ( int index =0; index < childCount; ++index )
+    count += getChildTestAt( index )->countTestCases();
+  
+  return count;
+}
+
+
+std::string 
+TestComposite::getName() const
+{
+  return m_name;
+}
+
+
+void 
+TestComposite::doStartSuite( TestResult *controller )
+{
+  controller->startSuite( this );
+}
+
+
+void 
+TestComposite::doRunChildTests( TestResult *controller )
+{
+  int childCount = getChildTestCount();
+  for ( int index =0; index < childCount; ++index )
+  {
+    if ( controller->shouldStop() )
+      break;
+
+    getChildTestAt( index )->run( controller );
+  }
+}
+
+
+void 
+TestComposite::doEndSuite( TestResult *controller )
+{
+  controller->endSuite( this );
+}
+
+
+CPPUNIT_NS_END
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestDecorator.cpp b/lib/cppunit-1.10.0/src/cppunit/TestDecorator.cpp
new file mode 100644 (file)
index 0000000..4e25a6a
--- /dev/null
@@ -0,0 +1,53 @@
+#include <cppunit/extensions/TestDecorator.h>
+
+CPPUNIT_NS_BEGIN
+
+
+TestDecorator::TestDecorator( Test *test )
+    : m_test( test)
+{ 
+}
+
+
+TestDecorator::~TestDecorator()
+{
+  delete m_test;
+}
+
+
+int 
+TestDecorator::countTestCases() const
+{ 
+  return m_test->countTestCases(); 
+}
+
+
+void 
+TestDecorator::run( TestResult *result )
+{ 
+  m_test->run(result); 
+}
+
+
+std::string 
+TestDecorator::getName() const
+{ 
+  return m_test->getName(); 
+}
+
+
+int 
+TestDecorator::getChildTestCount() const
+{
+  return m_test->getChildTestCount();
+}
+
+
+Test *
+TestDecorator::doGetChildTestAt( int index ) const
+{
+  return m_test->getChildTestAt( index );
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestFactoryRegistry.cpp b/lib/cppunit-1.10.0/src/cppunit/TestFactoryRegistry.cpp
new file mode 100644 (file)
index 0000000..d0339a9
--- /dev/null
@@ -0,0 +1,160 @@
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/portability/CppUnitMap.h>
+#include <cppunit/TestSuite.h>
+#include <assert.h>
+
+
+CPPUNIT_NS_BEGIN
+
+/*! \brief (INTERNAL) List of all TestFactoryRegistry.
+ */
+class TestFactoryRegistryList
+{
+private:
+  typedef CppUnitMap<std::string, TestFactoryRegistry *, std::less<std::string> > Registries;
+  Registries m_registries;
+
+  enum State {
+    doNotChange =0,
+    notCreated,
+    exist,
+    destroyed
+  };
+
+  static State stateFlag( State newState = doNotChange )
+  {
+    static State state = notCreated;
+    if ( newState != doNotChange )
+      state = newState;
+    return state;
+  }
+
+  static TestFactoryRegistryList *getInstance()
+  {
+    static TestFactoryRegistryList list;
+    return &list;
+  }
+
+  TestFactoryRegistry *getInternalRegistry( const std::string &name )
+  {
+    Registries::const_iterator foundIt = m_registries.find( name );
+    if ( foundIt == m_registries.end() )
+    {
+      TestFactoryRegistry *factory = new TestFactoryRegistry( name );
+      m_registries.insert( std::pair<const std::string, TestFactoryRegistry*>( name, factory ) );
+      return factory;
+    }
+    return (*foundIt).second;
+  }
+
+public:
+  TestFactoryRegistryList()
+  {
+    stateFlag( exist );
+  }
+
+  ~TestFactoryRegistryList()
+  {
+    for ( Registries::iterator it = m_registries.begin(); it != m_registries.end(); ++it )
+      delete (*it).second;
+
+    stateFlag( destroyed );
+  }
+
+  static TestFactoryRegistry *getRegistry( const std::string &name )
+  {
+    // If the following assertion failed, then TestFactoryRegistry::getRegistry() 
+    // was called during static variable destruction without checking the registry 
+    // validity beforehand using TestFactoryRegistry::isValid() beforehand.
+    assert( isValid() );
+    if ( !isValid() )         // release mode
+      return NULL;            // => force CRASH
+
+    return getInstance()->getInternalRegistry( name );
+  }
+
+  static bool isValid()
+  {
+    return stateFlag() != destroyed;
+  }
+};
+
+
+
+TestFactoryRegistry::TestFactoryRegistry( std::string name ) :
+    m_name( name )
+{
+}
+
+
+TestFactoryRegistry::~TestFactoryRegistry()
+{
+}
+
+
+TestFactoryRegistry &
+TestFactoryRegistry::getRegistry( const std::string &name )
+{
+  return *TestFactoryRegistryList::getRegistry( name );
+}
+
+
+void 
+TestFactoryRegistry::registerFactory( const std::string &name,
+                                      TestFactory *factory )
+{
+  registerFactory( factory );
+}
+
+
+void 
+TestFactoryRegistry::registerFactory( TestFactory *factory )
+{
+  m_factories.insert( factory );
+}
+
+
+void 
+TestFactoryRegistry::unregisterFactory( TestFactory *factory )
+{
+  m_factories.erase( factory );
+}
+
+
+void 
+TestFactoryRegistry::addRegistry( const std::string &name )
+{
+  registerFactory( &getRegistry( name ) );
+}
+
+
+Test *
+TestFactoryRegistry::makeTest()
+{
+  TestSuite *suite = new TestSuite( m_name );
+  addTestToSuite( suite );
+  return suite;
+}
+
+
+void 
+TestFactoryRegistry::addTestToSuite( TestSuite *suite )
+{
+  for ( Factories::iterator it = m_factories.begin(); 
+        it != m_factories.end(); 
+        ++it )
+  {
+    TestFactory *factory = *it;
+    suite->addTest( factory->makeTest() );
+  }
+}
+
+
+bool 
+TestFactoryRegistry::isValid()
+{
+  return TestFactoryRegistryList::isValid();
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestFailure.cpp b/lib/cppunit-1.10.0/src/cppunit/TestFailure.cpp
new file mode 100644 (file)
index 0000000..e31e138
--- /dev/null
@@ -0,0 +1,71 @@
+#include <cppunit/Exception.h>
+#include <cppunit/Test.h>
+#include <cppunit/TestFailure.h>
+
+CPPUNIT_NS_BEGIN
+
+
+/// Constructs a TestFailure with the given test and exception.
+TestFailure::TestFailure( Test *failedTest, 
+                          Exception *thrownException,
+                          bool isError ) :
+    m_failedTest( failedTest ), 
+    m_thrownException( thrownException ),
+    m_isError( isError )
+{
+}
+
+/// Deletes the owned exception.
+TestFailure::~TestFailure()
+{ 
+  delete m_thrownException; 
+}
+
+/// Gets the failed test.
+Test *
+TestFailure::failedTest() const
+{ 
+  return m_failedTest; 
+}
+
+
+/// Gets the thrown exception. Never \c NULL.
+Exception *
+TestFailure::thrownException() const
+{ 
+  return m_thrownException; 
+}
+
+
+/// Gets the failure location.
+SourceLine 
+TestFailure::sourceLine() const
+{
+  return m_thrownException->sourceLine();
+}
+
+
+/// Indicates if the failure is a failed assertion or an error.
+bool 
+TestFailure::isError() const
+{
+  return m_isError;
+}
+
+
+/// Gets the name of the failed test.
+std::string 
+TestFailure::failedTestName() const
+{
+  return m_failedTest->getName();
+}
+
+
+TestFailure *
+TestFailure::clone() const
+{
+  return new TestFailure( m_failedTest, m_thrownException->clone(), m_isError );
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestLeaf.cpp b/lib/cppunit-1.10.0/src/cppunit/TestLeaf.cpp
new file mode 100644 (file)
index 0000000..3d8767c
--- /dev/null
@@ -0,0 +1,28 @@
+#include <cppunit/TestLeaf.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+int 
+TestLeaf::countTestCases() const
+{
+  return 1;
+}
+
+
+int 
+TestLeaf::getChildTestCount() const
+{
+  return 0;
+}
+
+
+Test *
+TestLeaf::doGetChildTestAt( int index ) const
+{
+  checkIsValidIndex( index );
+  return NULL;    // never called, checkIsValidIndex() always throw.
+}
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestNamer.cpp b/lib/cppunit-1.10.0/src/cppunit/TestNamer.cpp
new file mode 100644 (file)
index 0000000..eec9be9
--- /dev/null
@@ -0,0 +1,44 @@
+#include <cppunit/extensions/TestNamer.h>
+#include <cppunit/extensions/TypeInfoHelper.h>
+#include <string>
+
+
+CPPUNIT_NS_BEGIN
+
+
+#if CPPUNIT_HAVE_RTTI
+TestNamer::TestNamer( const std::type_info &typeInfo )
+{
+  m_fixtureName = TypeInfoHelper::getClassName( typeInfo );
+}
+#endif
+
+
+TestNamer::TestNamer( const std::string &fixtureName )
+  : m_fixtureName( fixtureName )
+{
+}
+
+
+TestNamer::~TestNamer()
+{
+}
+
+
+std::string 
+TestNamer::getFixtureName() const
+{
+  return m_fixtureName;
+}
+
+
+std::string 
+TestNamer::getTestNameFor( const std::string &testMethodName ) const
+{
+  return getFixtureName() + "::" + testMethodName;
+}
+
+
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestPath.cpp b/lib/cppunit-1.10.0/src/cppunit/TestPath.cpp
new file mode 100644 (file)
index 0000000..2f4903f
--- /dev/null
@@ -0,0 +1,251 @@
+#include <cppunit/Portability.h>
+#include <cppunit/Test.h>
+#include <cppunit/TestPath.h>
+#include <stdexcept>
+
+
+CPPUNIT_NS_BEGIN
+
+
+TestPath::TestPath()
+{
+}
+
+
+TestPath::TestPath( Test *root )
+{
+  add( root );
+}
+
+
+TestPath::TestPath( const TestPath &other, 
+                    int indexFirst, 
+                    int count )
+{
+  int countAdjustment = 0;
+  if ( indexFirst < 0 )
+  {
+    countAdjustment = indexFirst;
+    indexFirst = 0;
+  }
+
+  if ( count < 0 )
+    count = other.getTestCount();
+  else
+    count += countAdjustment;
+
+  int index = indexFirst;
+  while ( count-- > 0  &&  index < other.getTestCount() )
+    add( other.getTestAt( index++ ) );
+}
+
+
+TestPath::TestPath( Test *searchRoot, 
+                    const std::string &pathAsString )
+{
+  PathTestNames testNames;
+
+  Test *parentTest = findActualRoot( searchRoot, pathAsString, testNames );
+  add( parentTest );
+
+  for ( unsigned int index = 1; index < testNames.size(); ++index )
+  {
+    bool childFound = false;
+    for ( int childIndex =0; childIndex < parentTest->getChildTestCount(); ++childIndex )
+    {
+      if ( parentTest->getChildTestAt( childIndex )->getName() == testNames[index] )
+      {
+        childFound = true;
+        parentTest = parentTest->getChildTestAt( childIndex );
+        break;
+      }
+    }
+
+    if ( !childFound )
+      throw std::invalid_argument( "TestPath::TestPath(): failed to resolve test name <"+
+                                   testNames[index] + "> of path <" + pathAsString + ">" );
+
+    add( parentTest );
+  }
+}
+
+
+TestPath::TestPath( const TestPath &other )
+  : m_tests( other.m_tests )
+{
+}
+
+
+TestPath::~TestPath()
+{
+}
+
+
+TestPath &
+TestPath::operator =( const TestPath &other )
+{
+  if ( &other != this )
+    m_tests = other.m_tests;
+  return *this;
+}
+
+
+bool 
+TestPath::isValid() const
+{
+  return getTestCount() > 0;
+}
+
+
+void 
+TestPath::add( Test *test )
+{
+  m_tests.push_back( test );
+}
+
+
+void 
+TestPath::add( const TestPath &path )
+{
+  for ( int index =0; index < path.getTestCount(); ++index )
+    add( path.getTestAt( index ) );
+}
+
+
+void 
+TestPath::insert( Test *test, 
+                  int index )
+{
+  if ( index < 0  ||  index > getTestCount() )
+    throw std::out_of_range( "TestPath::insert(): index out of range" );
+  m_tests.insert( m_tests.begin() + index, test );
+}
+
+void 
+TestPath::insert( const TestPath &path, 
+                  int index )
+{
+  int itemIndex = path.getTestCount() -1;
+  while ( itemIndex >= 0 )
+    insert( path.getTestAt( itemIndex-- ), index );
+}
+
+
+void 
+TestPath::removeTests()
+{
+  while ( isValid() )
+    removeTest( 0 );
+}
+
+
+void 
+TestPath::removeTest( int index )
+{
+  checkIndexValid( index );
+  m_tests.erase( m_tests.begin() + index );
+}
+
+
+void 
+TestPath::up()
+{
+  checkIndexValid( 0 );
+  removeTest( getTestCount() -1 );
+}
+
+
+int 
+TestPath::getTestCount() const
+{
+  return m_tests.size();
+}
+
+
+Test *
+TestPath::getTestAt( int index ) const
+{
+  checkIndexValid( index );
+  return m_tests[index];
+}
+
+
+Test *
+TestPath::getChildTest() const
+{
+  return getTestAt( getTestCount() -1 );
+}
+
+
+void 
+TestPath::checkIndexValid( int index ) const
+{
+  if ( index < 0  ||  index >= getTestCount() )
+    throw std::out_of_range( "TestPath::checkIndexValid(): index out of range" );
+}
+
+
+std::string 
+TestPath::toString() const
+{
+  std::string asString( "/" );
+  for ( int index =0; index < getTestCount(); ++index )
+  {
+    if ( index > 0 )
+      asString += '/';
+    asString += getTestAt(index)->getName();
+  }
+
+  return asString;
+}
+
+
+Test *
+TestPath::findActualRoot( Test *searchRoot,
+                          const std::string &pathAsString,
+                          PathTestNames &testNames )
+{
+  bool isRelative = splitPathString( pathAsString, testNames );
+
+  if ( isRelative  &&  pathAsString.empty() )
+    return searchRoot;
+
+  if ( testNames.empty() )
+    throw std::invalid_argument( "TestPath::TestPath(): invalid root or root name in absolute path" );
+
+  Test *root = isRelative ? searchRoot->findTest( testNames[0] )  // throw if bad test name
+                          : searchRoot;
+  if ( root->getName() != testNames[0] )
+    throw std::invalid_argument( "TestPath::TestPath(): searchRoot does not match path root name" );
+
+  return root;
+}
+
+
+bool
+TestPath::splitPathString( const std::string &pathAsString,
+                           PathTestNames &testNames )
+{
+  bool isRelative = (pathAsString.substr(0,1) != "/");
+
+  int index = (isRelative ? 0 : 1);
+  while ( true )
+  {
+    int separatorIndex = pathAsString.find( '/', index );
+    if ( separatorIndex >= 0 )
+    {
+      testNames.push_back( pathAsString.substr( index, separatorIndex - index ) );
+      index = separatorIndex + 1;
+    }
+    else
+    {
+      testNames.push_back( pathAsString.substr( index ) );
+      break;
+    }
+  }
+
+  return isRelative;
+}
+  
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestPlugInDefaultImpl.cpp b/lib/cppunit-1.10.0/src/cppunit/TestPlugInDefaultImpl.cpp
new file mode 100644 (file)
index 0000000..5d4c555
--- /dev/null
@@ -0,0 +1,63 @@
+#include <cppunit/Portability.h>
+
+#if !defined(CPPUNIT_NO_TESTPLUGIN)
+
+#include <cppunit/TestSuite.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/plugin/TestPlugInDefaultImpl.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+TestPlugInDefaultImpl::TestPlugInDefaultImpl() 
+{
+}
+
+
+TestPlugInDefaultImpl::~TestPlugInDefaultImpl()
+{
+}
+
+
+void 
+TestPlugInDefaultImpl::initialize( TestFactoryRegistry *registry,
+                                   const PlugInParameters &parameters )
+{
+}
+
+
+void 
+TestPlugInDefaultImpl::addListener( TestResult *eventManager )
+{
+}
+
+
+void 
+TestPlugInDefaultImpl::removeListener( TestResult *eventManager )
+{
+}
+
+
+void 
+TestPlugInDefaultImpl::addXmlOutputterHooks( XmlOutputter *outputter )
+{
+}
+
+
+void 
+TestPlugInDefaultImpl::removeXmlOutputterHooks()
+{
+}
+
+
+void 
+TestPlugInDefaultImpl::uninitialize( TestFactoryRegistry *registry )
+{
+}
+
+
+CPPUNIT_NS_END
+
+
+#endif // !defined(CPPUNIT_NO_TESTPLUGIN)
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestResult.cpp b/lib/cppunit-1.10.0/src/cppunit/TestResult.cpp
new file mode 100644 (file)
index 0000000..6be19f1
--- /dev/null
@@ -0,0 +1,196 @@
+#include <cppunit/Test.h>
+#include <cppunit/TestFailure.h>
+#include <cppunit/TestListener.h>
+#include <cppunit/TestResult.h>
+#include <cppunit/tools/Algorithm.h>
+#include <algorithm>
+#include "DefaultProtector.h"
+#include "ProtectorChain.h"
+#include "ProtectorContext.h"
+
+CPPUNIT_NS_BEGIN
+
+
+TestResult::TestResult( SynchronizationObject *syncObject )
+    : SynchronizedObject( syncObject )
+    , m_protectorChain( new ProtectorChain() )
+    , m_stop( false )
+{ 
+  m_protectorChain->push( new DefaultProtector() );
+}
+
+
+TestResult::~TestResult()
+{
+  delete m_protectorChain;
+}
+
+
+void 
+TestResult::reset()
+{
+  ExclusiveZone zone( m_syncObject ); 
+  m_stop = false;
+}
+
+
+void 
+TestResult::addError( Test *test, 
+                      Exception *e )
+{ 
+  TestFailure failure( test, e, true );
+  addFailure( failure );
+}
+
+
+void 
+TestResult::addFailure( Test *test, Exception *e )
+{ 
+  TestFailure failure( test, e, false );
+  addFailure( failure );
+}
+
+
+void 
+TestResult::addFailure( const TestFailure &failure )
+{
+  ExclusiveZone zone( m_syncObject ); 
+  for ( TestListeners::iterator it = m_listeners.begin();
+        it != m_listeners.end(); 
+        ++it )
+    (*it)->addFailure( failure );
+}
+
+
+void 
+TestResult::startTest( Test *test )
+{ 
+  ExclusiveZone zone( m_syncObject ); 
+  for ( TestListeners::iterator it = m_listeners.begin();
+        it != m_listeners.end(); 
+        ++it )
+    (*it)->startTest( test );
+}
+
+  
+void 
+TestResult::endTest( Test *test )
+{ 
+  ExclusiveZone zone( m_syncObject ); 
+  for ( TestListeners::iterator it = m_listeners.begin();
+        it != m_listeners.end(); 
+        ++it )
+    (*it)->endTest( test );
+}
+
+
+void 
+TestResult::startSuite( Test *test )
+{
+  ExclusiveZone zone( m_syncObject ); 
+  for ( TestListeners::iterator it = m_listeners.begin();
+        it != m_listeners.end(); 
+        ++it )
+    (*it)->startSuite( test );
+}
+
+
+void 
+TestResult::endSuite( Test *test )
+{
+  ExclusiveZone zone( m_syncObject ); 
+  for ( TestListeners::iterator it = m_listeners.begin();
+        it != m_listeners.end(); 
+        ++it )
+    (*it)->endSuite( test );
+}
+
+
+bool 
+TestResult::shouldStop() const
+{ 
+  ExclusiveZone zone( m_syncObject );
+  return m_stop; 
+}
+
+
+void 
+TestResult::stop()
+{ 
+  ExclusiveZone zone( m_syncObject );
+  m_stop = true; 
+}
+
+
+void 
+TestResult::addListener( TestListener *listener )
+{
+  ExclusiveZone zone( m_syncObject ); 
+  m_listeners.push_back( listener );
+}
+
+
+void 
+TestResult::removeListener ( TestListener *listener )
+{
+  ExclusiveZone zone( m_syncObject ); 
+  removeFromSequence( m_listeners, listener );
+}
+
+
+void 
+TestResult::runTest( Test *test )
+{
+  startTestRun( test );
+  test->run( this );
+  endTestRun( test );
+}
+
+
+void 
+TestResult::startTestRun( Test *test )
+{
+  ExclusiveZone zone( m_syncObject ); 
+  for ( TestListeners::iterator it = m_listeners.begin();
+        it != m_listeners.end(); 
+        ++it )
+    (*it)->startTestRun( test, this );
+}
+
+
+void 
+TestResult::endTestRun( Test *test )
+{
+  ExclusiveZone zone( m_syncObject ); 
+  for ( TestListeners::iterator it = m_listeners.begin();
+        it != m_listeners.end(); 
+        ++it )
+    (*it)->endTestRun( test, this );
+}
+
+
+bool 
+TestResult::protect( const Functor &functor,
+                     Test *test,
+                     const std::string &shortDescription )
+{
+  ProtectorContext context( test, this, shortDescription );
+  return m_protectorChain->protect( functor, context );
+}
+
+
+void 
+TestResult::pushProtector( Protector *protector )
+{
+  m_protectorChain->push( protector );
+}
+
+
+void 
+TestResult::popProtector()
+{
+  m_protectorChain->pop();
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestResultCollector.cpp b/lib/cppunit-1.10.0/src/cppunit/TestResultCollector.cpp
new file mode 100644 (file)
index 0000000..eee791d
--- /dev/null
@@ -0,0 +1,109 @@
+#include <cppunit/TestFailure.h>
+#include <cppunit/TestResultCollector.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+TestResultCollector::TestResultCollector( SynchronizationObject *syncObject )
+    : TestSuccessListener( syncObject )
+{
+  reset();
+}
+
+
+TestResultCollector::~TestResultCollector()
+{
+  TestFailures::iterator itFailure = m_failures.begin();
+  while ( itFailure != m_failures.end() )
+    delete *itFailure++;
+}
+
+
+void 
+TestResultCollector::reset()
+{
+  TestSuccessListener::reset();
+
+  ExclusiveZone zone( m_syncObject ); 
+  m_testErrors = 0;
+  m_tests.clear();
+  m_failures.clear();
+}
+
+
+void 
+TestResultCollector::startTest( Test *test )
+{
+  ExclusiveZone zone (m_syncObject); 
+  m_tests.push_back( test );
+}
+
+
+void 
+TestResultCollector::addFailure( const TestFailure &failure )
+{
+  TestSuccessListener::addFailure( failure );
+
+  ExclusiveZone zone( m_syncObject ); 
+  if ( failure.isError() )
+    ++m_testErrors;
+  m_failures.push_back( failure.clone() );
+}
+
+
+/// Gets the number of run tests.
+int 
+TestResultCollector::runTests() const
+{ 
+  ExclusiveZone zone( m_syncObject ); 
+  return m_tests.size(); 
+}
+
+
+/// Gets the number of detected errors (uncaught exception).
+int 
+TestResultCollector::testErrors() const
+{ 
+  ExclusiveZone zone( m_syncObject );
+  return m_testErrors;
+}
+
+
+/// Gets the number of detected failures (failed assertion).
+int 
+TestResultCollector::testFailures() const
+{ 
+  ExclusiveZone zone( m_syncObject ); 
+  return m_failures.size() - m_testErrors;
+}
+
+
+/// Gets the total number of detected failures.
+int 
+TestResultCollector::testFailuresTotal() const
+{
+  ExclusiveZone zone( m_syncObject ); 
+  return m_failures.size();
+}
+
+
+/// Returns a the list failures (random access collection).
+const TestResultCollector::TestFailures & 
+TestResultCollector::failures() const
+{ 
+  ExclusiveZone zone( m_syncObject );
+  return m_failures; 
+}
+
+
+const TestResultCollector::Tests &
+TestResultCollector::tests() const
+{
+  ExclusiveZone zone( m_syncObject );
+  return m_tests;
+}
+
+
+CPPUNIT_NS_END
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestRunner.cpp b/lib/cppunit-1.10.0/src/cppunit/TestRunner.cpp
new file mode 100644 (file)
index 0000000..91b07f6
--- /dev/null
@@ -0,0 +1,100 @@
+#include <cppunit/TestRunner.h>
+#include <cppunit/TestPath.h>
+#include <cppunit/TestResult.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+TestRunner::WrappingSuite::WrappingSuite( const std::string &name ) 
+    : TestSuite( name )
+{
+}
+
+
+int 
+TestRunner::WrappingSuite::getChildTestCount() const
+{
+  if ( hasOnlyOneTest() )
+    return getUniqueChildTest()->getChildTestCount();
+  return TestSuite::getChildTestCount();
+}
+
+
+std::string 
+TestRunner::WrappingSuite::getName() const
+{
+  if ( hasOnlyOneTest() )
+    return getUniqueChildTest()->getName();
+  return TestSuite::getName();
+}
+
+
+Test *
+TestRunner::WrappingSuite::doGetChildTestAt( int index ) const
+{
+  if ( hasOnlyOneTest() )
+    return getUniqueChildTest()->getChildTestAt( index );
+  return TestSuite::doGetChildTestAt( index );
+}
+
+
+void 
+TestRunner::WrappingSuite::run( TestResult *result )
+{
+  if ( hasOnlyOneTest() )
+    getUniqueChildTest()->run( result );
+  else
+    TestSuite::run( result );
+}
+
+
+bool 
+TestRunner::WrappingSuite::hasOnlyOneTest() const
+{
+  return TestSuite::getChildTestCount() == 1;
+}
+
+
+Test *
+TestRunner::WrappingSuite::getUniqueChildTest() const
+{
+  return TestSuite::doGetChildTestAt( 0 );
+}
+
+
+
+
+
+TestRunner::TestRunner()
+    : m_suite( new WrappingSuite() )
+{
+}
+
+
+TestRunner::~TestRunner()
+{
+  delete m_suite;
+}
+
+
+void 
+TestRunner::addTest( Test *test )
+{
+  m_suite->addTest( test ); 
+}
+
+
+void 
+TestRunner::run( TestResult &controller,
+                 const std::string &testPath )
+{
+  TestPath path = m_suite->resolveTestPath( testPath );
+  Test *testToRun = path.getChildTest();
+
+  controller.runTest( testToRun );
+}
+
+
+CPPUNIT_NS_END
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestSetUp.cpp b/lib/cppunit-1.10.0/src/cppunit/TestSetUp.cpp
new file mode 100644 (file)
index 0000000..d4d8530
--- /dev/null
@@ -0,0 +1,32 @@
+#include <cppunit/extensions/TestSetUp.h>
+
+CPPUNIT_NS_BEGIN
+
+
+TestSetUp::TestSetUp( Test *test ) : TestDecorator( test ) 
+{
+}
+
+
+void 
+TestSetUp::setUp()
+{
+}
+
+
+void 
+TestSetUp::tearDown() 
+{
+}
+
+
+void
+TestSetUp::run( TestResult *result )
+{ 
+  setUp();
+  TestDecorator::run(result);
+  tearDown();
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestSuccessListener.cpp b/lib/cppunit-1.10.0/src/cppunit/TestSuccessListener.cpp
new file mode 100644 (file)
index 0000000..3c9c821
--- /dev/null
@@ -0,0 +1,44 @@
+#include <cppunit/TestSuccessListener.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+TestSuccessListener::TestSuccessListener( SynchronizationObject *syncObject )
+    : SynchronizedObject( syncObject )
+    , m_success( true )
+{
+}
+
+
+TestSuccessListener::~TestSuccessListener()
+{
+}
+
+
+void 
+TestSuccessListener::reset()
+{
+  ExclusiveZone zone( m_syncObject );
+  m_success = true;
+}
+
+
+void 
+TestSuccessListener::addFailure( const TestFailure &failure )
+{
+  ExclusiveZone zone( m_syncObject );
+  m_success = false;
+}
+
+
+bool 
+TestSuccessListener::wasSuccessful() const
+{
+  ExclusiveZone zone( m_syncObject );
+  return m_success;
+}
+
+
+CPPUNIT_NS_END
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestSuite.cpp b/lib/cppunit-1.10.0/src/cppunit/TestSuite.cpp
new file mode 100644 (file)
index 0000000..4a27788
--- /dev/null
@@ -0,0 +1,63 @@
+#include <cppunit/TestSuite.h>
+#include <cppunit/TestResult.h>
+
+CPPUNIT_NS_BEGIN
+
+
+/// Default constructor
+TestSuite::TestSuite( std::string name )
+    : TestComposite( name )
+{
+}
+
+
+/// Destructor
+TestSuite::~TestSuite()
+{ 
+  deleteContents(); 
+}
+
+
+/// Deletes all tests in the suite.
+void 
+TestSuite::deleteContents()
+{
+  int childCount = getChildTestCount();
+  for ( int index =0; index < childCount; ++index )
+    delete getChildTestAt( index );
+
+  m_tests.clear();
+}
+
+
+/// Adds a test to the suite. 
+void 
+TestSuite::addTest( Test *test )
+{ 
+  m_tests.push_back( test ); 
+}
+
+
+const CppUnitVector<Test *> &
+TestSuite::getTests() const
+{
+  return m_tests;
+}
+
+
+int 
+TestSuite::getChildTestCount() const
+{
+  return m_tests.size();
+}
+
+
+Test *
+TestSuite::doGetChildTestAt( int index ) const
+{
+  return m_tests[index];
+}
+
+
+CPPUNIT_NS_END
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/TestSuiteBuilderContext.cpp b/lib/cppunit-1.10.0/src/cppunit/TestSuiteBuilderContext.cpp
new file mode 100644 (file)
index 0000000..06aa12e
--- /dev/null
@@ -0,0 +1,67 @@
+#include <cppunit/TestSuite.h>
+#include <cppunit/extensions/TestFixtureFactory.h>
+#include <cppunit/extensions/TestNamer.h>
+#include <cppunit/extensions/TestSuiteBuilderContext.h>
+
+
+CPPUNIT_NS_BEGIN
+
+TestSuiteBuilderContextBase::TestSuiteBuilderContextBase( 
+                                 TestSuite &suite,
+                                 const TestNamer &namer,
+                                 TestFixtureFactory &factory )
+  : m_suite( suite )
+  , m_namer( namer )
+  , m_factory( factory )
+{
+}
+
+
+void 
+TestSuiteBuilderContextBase::addTest( Test *test )
+{
+  m_suite.addTest( test );
+}
+
+
+std::string 
+TestSuiteBuilderContextBase::getFixtureName() const
+{
+  return m_namer.getFixtureName();
+}
+
+
+std::string 
+TestSuiteBuilderContextBase::getTestNameFor( 
+                                 const std::string &testMethodName ) const
+{
+  return m_namer.getTestNameFor( testMethodName );
+}
+
+
+TestFixture *
+TestSuiteBuilderContextBase::makeTestFixture() const
+{
+  return m_factory.makeFixture();
+}
+
+
+void 
+TestSuiteBuilderContextBase::addProperty( const std::string &key, 
+                                          const std::string &value )
+{
+    m_properties[ key ] = value;
+}
+
+const std::string 
+TestSuiteBuilderContextBase::getStringProperty( const std::string &key ) const
+{
+    Properties::const_iterator itFound = m_properties.find( key );
+    if ( itFound == m_properties.end() )
+        return "";
+
+    return (*itFound).second;
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TextOutputter.cpp b/lib/cppunit-1.10.0/src/cppunit/TextOutputter.cpp
new file mode 100644 (file)
index 0000000..6dd54e5
--- /dev/null
@@ -0,0 +1,141 @@
+#include <cppunit/Exception.h>
+#include <cppunit/SourceLine.h>
+#include <cppunit/TestFailure.h>
+#include <cppunit/TextOutputter.h>
+#include <cppunit/TestResultCollector.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+TextOutputter::TextOutputter( TestResultCollector *result,
+                              std::ostream &stream )
+    : m_result( result )
+    , m_stream( stream )
+{
+}
+
+
+TextOutputter::~TextOutputter()
+{
+}
+
+
+void 
+TextOutputter::write() 
+{
+  printHeader();
+  m_stream << std::endl;
+  printFailures();
+  m_stream << std::endl;
+}
+
+
+void 
+TextOutputter::printFailures()
+{
+  TestResultCollector::TestFailures::const_iterator itFailure = m_result->failures().begin();
+  int failureNumber = 1;
+  while ( itFailure != m_result->failures().end() ) 
+  {
+    m_stream  <<  std::endl;
+    printFailure( *itFailure++, failureNumber++ );
+  }
+}
+
+
+void 
+TextOutputter::printFailure( TestFailure *failure,
+                             int failureNumber )
+{
+  printFailureListMark( failureNumber );
+  m_stream << ' ';
+  printFailureTestName( failure );
+  m_stream << ' ';
+  printFailureType( failure );
+  m_stream << ' ';
+  printFailureLocation( failure->sourceLine() );
+  m_stream << std::endl;
+  printFailureDetail( failure->thrownException() );
+  m_stream << std::endl;
+}
+
+
+void 
+TextOutputter::printFailureListMark( int failureNumber )
+{
+  m_stream << failureNumber << ")";
+}
+
+
+void 
+TextOutputter::printFailureTestName( TestFailure *failure )
+{
+  m_stream << "test: " << failure->failedTestName();
+}
+
+
+void 
+TextOutputter::printFailureType( TestFailure *failure )
+{
+  m_stream << "("
+           << (failure->isError() ? "E" : "F")
+           << ")";
+}
+
+
+void 
+TextOutputter::printFailureLocation( SourceLine sourceLine )
+{
+  if ( !sourceLine.isValid() )
+    return;
+
+  m_stream << "line: " << sourceLine.lineNumber()
+           << ' ' << sourceLine.fileName();
+}
+
+
+void 
+TextOutputter::printFailureDetail( Exception *thrownException )
+{
+  m_stream  <<  thrownException->message().shortDescription()  <<  std::endl;
+  m_stream  <<  thrownException->message().details();
+}
+
+
+void 
+TextOutputter::printHeader()
+{
+  if ( m_result->wasSuccessful() )
+    m_stream << std::endl << "OK (" << m_result->runTests () << " tests)" 
+             << std::endl;
+  else
+  {
+    m_stream << std::endl;
+    printFailureWarning();
+    printStatistics();
+  }
+}
+
+
+void 
+TextOutputter::printFailureWarning()
+{
+  m_stream  << "!!!FAILURES!!!" << std::endl;
+}
+
+
+void 
+TextOutputter::printStatistics()
+{
+  m_stream  << "Test Results:" << std::endl;
+
+  m_stream  <<  "Run:  "  <<  m_result->runTests()
+            <<  "   Failures: "  <<  m_result->testFailures()
+            <<  "   Errors: "  <<  m_result->testErrors()
+            <<  std::endl;
+}
+
+
+CPPUNIT_NS_END
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/TextTestProgressListener.cpp b/lib/cppunit-1.10.0/src/cppunit/TextTestProgressListener.cpp
new file mode 100644 (file)
index 0000000..cb0a833
--- /dev/null
@@ -0,0 +1,43 @@
+#include <cppunit/TestFailure.h>
+#include <cppunit/TextTestProgressListener.h>
+#include <iostream>
+
+
+CPPUNIT_NS_BEGIN
+
+
+TextTestProgressListener::TextTestProgressListener()
+{
+}
+
+
+TextTestProgressListener::~TextTestProgressListener()
+{
+}
+
+
+void 
+TextTestProgressListener::startTest( Test *test )
+{
+  std::cerr << ".";
+}
+
+
+void 
+TextTestProgressListener::addFailure( const TestFailure &failure )
+{
+  std::cerr << ( failure.isError() ? "E" : "F" );
+}
+
+
+void 
+TextTestProgressListener::endTestRun( Test *test, 
+                                      TestResult *eventManager )
+{
+  std::cerr  <<  std::endl;
+  std::cerr.flush();
+}
+
+
+CPPUNIT_NS_END
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/TextTestResult.cpp b/lib/cppunit-1.10.0/src/cppunit/TextTestResult.cpp
new file mode 100644 (file)
index 0000000..c155745
--- /dev/null
@@ -0,0 +1,50 @@
+#include <cppunit/Exception.h>
+#include <cppunit/Test.h>
+#include <cppunit/TestFailure.h>
+#include <cppunit/TextTestResult.h>
+#include <cppunit/TextOutputter.h>
+#include <iostream>
+
+
+CPPUNIT_NS_BEGIN
+
+
+TextTestResult::TextTestResult()
+{
+  addListener( this );
+}
+
+
+void 
+TextTestResult::addFailure( const TestFailure &failure )
+{
+  TestResultCollector::addFailure( failure );
+  std::cerr << ( failure.isError() ? "E" : "F" );
+}
+
+
+void 
+TextTestResult::startTest( Test *test )
+{
+  TestResultCollector::startTest (test);
+  std::cerr << ".";
+}
+
+
+void 
+TextTestResult::print( std::ostream& stream ) 
+{
+  TextOutputter outputter( this, stream );
+  outputter.write();
+}
+
+
+std::ostream &
+operator <<( std::ostream &stream, 
+             TextTestResult &result )
+{ 
+  result.print (stream); return stream; 
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TextTestRunner.cpp b/lib/cppunit-1.10.0/src/cppunit/TextTestRunner.cpp
new file mode 100644 (file)
index 0000000..5ca182b
--- /dev/null
@@ -0,0 +1,132 @@
+// ==> Implementation of cppunit/ui/text/TestRunner.h
+
+#include <cppunit/TestSuite.h>
+#include <cppunit/TextTestResult.h>
+#include <cppunit/TextOutputter.h>
+#include <cppunit/TextTestProgressListener.h>
+#include <cppunit/TestResult.h>
+#include <cppunit/ui/text/TextTestRunner.h>
+#include <iostream>
+#include <stdexcept>
+
+
+CPPUNIT_NS_BEGIN
+
+
+/*! Constructs a new text runner.
+ * \param outputter used to print text result. Owned by the runner.
+ */
+TextTestRunner::TextTestRunner( Outputter *outputter ) 
+    : m_outputter( outputter )
+    , m_result( new TestResultCollector() )
+    , m_eventManager( new TestResult() )
+{
+  if ( !m_outputter )
+    m_outputter = new TextOutputter( m_result, std::cout );
+  m_eventManager->addListener( m_result );
+}
+
+
+TextTestRunner::~TextTestRunner()
+{
+  delete m_eventManager;
+  delete m_outputter;
+  delete m_result;
+}
+
+
+/*! Runs the named test case.
+ *
+ * \param testName Name of the test case to run. If an empty is given, then
+ *                 all added tests are run. The name can be the name of any
+ *                 test in the hierarchy.
+ * \param doWait if \c true then the user must press the RETURN key 
+ *               before the run() method exit.
+ * \param doPrintResult if \c true (default) then the test result are printed
+ *                      on the standard output.
+ * \param doPrintProgress if \c true (default) then TextTestProgressListener is
+ *                        used to show the progress.
+ * \return \c true is the test was successful, \c false if the test
+ *         failed or was not found.
+ */
+bool
+TextTestRunner::run( std::string testName,
+                       bool doWait,
+                       bool doPrintResult,
+                       bool doPrintProgress )
+{
+  TextTestProgressListener progress;
+  if ( doPrintProgress )
+    m_eventManager->addListener( &progress );
+
+  TestRunner *pThis = this;
+  pThis->run( *m_eventManager, testName );
+
+  if ( doPrintProgress )
+    m_eventManager->removeListener( &progress );
+
+  printResult( doPrintResult );
+  wait( doWait );
+
+  return m_result->wasSuccessful();
+}
+
+
+void 
+TextTestRunner::wait( bool doWait )
+{
+  if ( doWait ) 
+  {
+    std::cout << "<RETURN> to continue" << std::endl;
+    std::cin.get ();
+  }
+}
+
+
+void 
+TextTestRunner::printResult( bool doPrintResult )
+{
+  std::cout << std::endl;
+  if ( doPrintResult )
+    m_outputter->write();
+}
+
+
+/*! Returns the result of the test run.
+ * Use this after calling run() to access the result of the test run.
+ */
+TestResultCollector &
+TextTestRunner::result() const
+{
+  return *m_result;
+}
+
+
+/*! Returns the event manager.
+ * The instance of TestResult results returned is the one that is used to run the
+ * test. Use this to register additional TestListener before running the tests.
+ */
+TestResult &
+TextTestRunner::eventManager() const
+{
+  return *m_eventManager;
+}
+
+
+/*! Specifies an alternate outputter.
+ *
+ * Notes that the outputter will be use after the test run only if \a printResult was
+ * \c true.
+ * \param outputter New outputter to use. The previous outputter is destroyed. 
+ *                  The TextTestRunner assumes ownership of the outputter.
+ * \see CompilerOutputter, XmlOutputter, TextOutputter.
+ */
+void 
+TextTestRunner::setOutputter( Outputter *outputter )
+{
+  delete m_outputter;
+  m_outputter = outputter;
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/TypeInfoHelper.cpp b/lib/cppunit-1.10.0/src/cppunit/TypeInfoHelper.cpp
new file mode 100644 (file)
index 0000000..bd01001
--- /dev/null
@@ -0,0 +1,53 @@
+#include <cppunit/Portability.h>
+#include <cppunit/extensions/TypeInfoHelper.h>
+
+#if CPPUNIT_HAVE_RTTI
+
+#include <string>
+
+#if CPPUNIT_HAVE_GCC_ABI_DEMANGLE
+#include <cxxabi.h>
+#endif
+
+
+CPPUNIT_NS_BEGIN
+
+
+std::string 
+TypeInfoHelper::getClassName( const std::type_info &info )
+{
+#if defined(CPPUNIT_HAVE_GCC_ABI_DEMANGLE)  &&  CPPUNIT_HAVE_GCC_ABI_DEMANGLE
+
+  int status = 0;
+  char* c_name = 0;
+
+  c_name = abi::__cxa_demangle( info.name(), 0, 0, &status );
+  
+  std::string name( c_name );
+  free( c_name );  
+
+#else   // CPPUNIT_HAVE_GCC_ABI_DEMANGLE
+
+  static std::string classPrefix( "class " );
+  std::string name( info.name() );
+
+  // Work around gcc 3.0 bug: strip number before type name.
+  unsigned int firstNotDigitIndex = 0;
+  while ( firstNotDigitIndex < name.length()  &&
+          name[firstNotDigitIndex] >= '0'  &&
+          name[firstNotDigitIndex] <= '9' )
+    ++firstNotDigitIndex;
+  name = name.substr( firstNotDigitIndex );
+
+  if ( name.substr( 0, classPrefix.length() ) == classPrefix )
+    return name.substr( classPrefix.length() );
+
+#endif  // CPPUNIT_HAVE_GCC_ABI_DEMANGLE
+
+  return name;
+}
+
+
+CPPUNIT_NS_END
+
+#endif // CPPUNIT_HAVE_RTTI
diff --git a/lib/cppunit-1.10.0/src/cppunit/UnixDynamicLibraryManager.cpp b/lib/cppunit-1.10.0/src/cppunit/UnixDynamicLibraryManager.cpp
new file mode 100644 (file)
index 0000000..f235cce
--- /dev/null
@@ -0,0 +1,44 @@
+#include <cppunit/Portability.h>
+
+#if defined(CPPUNIT_HAVE_UNIX_DLL_LOADER)
+#include <cppunit/plugin/DynamicLibraryManager.h>
+
+#include <dlfcn.h>
+#include <unistd.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+DynamicLibraryManager::LibraryHandle 
+DynamicLibraryManager::doLoadLibrary( const std::string &libraryName )
+{
+  return ::dlopen( libraryName.c_str(), RTLD_NOW | RTLD_GLOBAL );
+}
+
+
+void 
+DynamicLibraryManager::doReleaseLibrary()
+{
+  ::dlclose( m_libraryHandle);
+}
+
+
+DynamicLibraryManager::Symbol 
+DynamicLibraryManager::doFindSymbol( const std::string &symbol )
+{
+  return ::dlsym ( m_libraryHandle, symbol.c_str() );
+}
+
+
+std::string 
+DynamicLibraryManager::getLastErrorDetail() const
+{
+  return "";
+}
+
+
+CPPUNIT_NS_END
+
+
+#endif // defined(CPPUNIT_HAVE_UNIX_DLL_LOADER)
diff --git a/lib/cppunit-1.10.0/src/cppunit/Win32DynamicLibraryManager.cpp b/lib/cppunit-1.10.0/src/cppunit/Win32DynamicLibraryManager.cpp
new file mode 100644 (file)
index 0000000..194b5ba
--- /dev/null
@@ -0,0 +1,72 @@
+#include <cppunit/Portability.h>
+
+#if defined(CPPUNIT_HAVE_WIN32_DLL_LOADER)
+#include <cppunit/plugin/DynamicLibraryManager.h>
+
+#define WIN32_LEAN_AND_MEAN 
+#define NOGDI
+#define NOUSER
+#define NOKERNEL
+#define NOSOUND
+#define NOMINMAX
+#include <windows.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+DynamicLibraryManager::LibraryHandle 
+DynamicLibraryManager::doLoadLibrary( const std::string &libraryName )
+{
+  return ::LoadLibrary( libraryName.c_str() );
+}
+
+
+void 
+DynamicLibraryManager::doReleaseLibrary()
+{
+  ::FreeLibrary( (HINSTANCE)m_libraryHandle );
+}
+
+
+DynamicLibraryManager::Symbol 
+DynamicLibraryManager::doFindSymbol( const std::string &symbol )
+{
+  return (DynamicLibraryManager::Symbol)::GetProcAddress( 
+     (HINSTANCE)m_libraryHandle, 
+     symbol.c_str() );
+}
+
+
+std::string 
+DynamicLibraryManager::getLastErrorDetail() const
+{
+  LPVOID lpMsgBuf;
+  ::FormatMessage( 
+      FORMAT_MESSAGE_ALLOCATE_BUFFER | 
+      FORMAT_MESSAGE_FROM_SYSTEM | 
+      FORMAT_MESSAGE_IGNORE_INSERTS,
+      NULL,
+      GetLastError(),
+      MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
+      (LPTSTR) &lpMsgBuf,
+      0,
+      NULL 
+  );
+
+  std::string message = (LPCTSTR)lpMsgBuf;
+
+  // Display the string.
+//  ::MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
+
+  // Free the buffer.
+  ::LocalFree( lpMsgBuf );
+
+  return message;
+}
+
+
+CPPUNIT_NS_END
+
+
+#endif // defined(CPPUNIT_HAVE_WIN32_DLL_LOADER)
diff --git a/lib/cppunit-1.10.0/src/cppunit/XmlDocument.cpp b/lib/cppunit-1.10.0/src/cppunit/XmlDocument.cpp
new file mode 100644 (file)
index 0000000..486c263
--- /dev/null
@@ -0,0 +1,86 @@
+#include <cppunit/tools/XmlDocument.h>
+#include <cppunit/tools/XmlElement.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+XmlDocument::XmlDocument( const std::string &encoding,
+                          const std::string &styleSheet )
+  : m_rootElement( new XmlElement( "DummyRoot" ) )
+  , m_styleSheet( styleSheet )
+{
+  setEncoding( encoding );
+}
+
+
+XmlDocument::~XmlDocument()
+{
+  delete m_rootElement;
+}
+
+
+
+std::string 
+XmlDocument::encoding() const
+{
+  return m_encoding;
+}
+
+
+void 
+XmlDocument::setEncoding( const std::string &encoding )
+{
+  m_encoding = encoding.empty() ? std::string("ISO-8859-1") : encoding;
+}
+
+
+std::string 
+XmlDocument::styleSheet() const
+{
+  return m_styleSheet;
+}
+
+
+void 
+XmlDocument::setStyleSheet( const std::string &styleSheet )
+{
+  m_styleSheet = styleSheet;
+}
+
+
+void 
+XmlDocument::setRootElement( XmlElement *rootElement )
+{
+  if ( rootElement == m_rootElement )
+    return;
+
+  delete m_rootElement;
+  m_rootElement = rootElement;
+}
+
+
+XmlElement &
+XmlDocument::rootElement() const
+{
+  return *m_rootElement;
+}
+
+
+std::string 
+XmlDocument::toString() const
+{
+  std::string asString = "<?xml version=\"1.0\" "
+                         "encoding='" + m_encoding + "' standalone='yes' ?>\n";
+
+  if ( !m_styleSheet.empty() )
+    asString += "<?xml-stylesheet type=\"text/xsl\" href=\"" + m_styleSheet + "\"?>\n";
+
+  asString += m_rootElement->toString();
+
+  return asString;
+}
+
+
+CPPUNIT_NS_END
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/XmlElement.cpp b/lib/cppunit-1.10.0/src/cppunit/XmlElement.cpp
new file mode 100644 (file)
index 0000000..f930ad4
--- /dev/null
@@ -0,0 +1,226 @@
+#include <cppunit/tools/StringTools.h>
+#include <cppunit/tools/XmlElement.h>
+#include <stdexcept>
+
+
+CPPUNIT_NS_BEGIN
+
+  
+XmlElement::XmlElement( std::string elementName,
+                        std::string content ) 
+  : m_name( elementName )
+  , m_content( content )
+{
+}
+
+    
+XmlElement::XmlElement( std::string elementName,
+                        int numericContent )
+  : m_name( elementName )
+{
+  setContent( numericContent );
+}
+
+
+XmlElement::~XmlElement()
+{
+  Elements::iterator itNode = m_elements.begin();
+  while ( itNode != m_elements.end() )
+  {
+    XmlElement *element = *itNode++;
+    delete element;
+  }
+}
+
+
+std::string 
+XmlElement::name() const
+{
+  return m_name;
+}
+
+
+std::string 
+XmlElement::content() const
+{
+  return m_content;
+}
+
+
+void 
+XmlElement::setName( const std::string &name )
+{
+  m_name = name;
+}
+
+
+void 
+XmlElement::setContent( const std::string &content )
+{
+  m_content = content;
+}
+
+
+void 
+XmlElement::setContent( int numericContent )
+{
+  m_content = StringTools::toString( numericContent );
+}
+
+
+void 
+XmlElement::addAttribute( std::string attributeName,
+                          std::string value  )
+{
+  m_attributes.push_back( Attribute( attributeName, value ) );
+}
+
+
+void 
+XmlElement::addAttribute( std::string attributeName,
+                          int numericValue )
+{
+  addAttribute( attributeName, StringTools::toString( numericValue ) );
+}
+
+
+void 
+XmlElement::addElement( XmlElement *node )
+{
+  m_elements.push_back( node );
+}
+
+
+int 
+XmlElement::elementCount() const
+{
+  return m_elements.size();
+}
+
+
+XmlElement *
+XmlElement::elementAt( int index ) const
+{
+  if ( index < 0  ||  index >= elementCount() )
+    throw std::invalid_argument( "XmlElement::elementAt(), out of range index" );
+
+  return m_elements[ index ];
+}
+
+
+XmlElement *
+XmlElement::elementFor( const std::string &name ) const
+{
+  Elements::const_iterator itElement = m_elements.begin();
+  for ( ; itElement != m_elements.end(); ++itElement )
+  {
+    if ( (*itElement)->name() == name )
+      return *itElement;
+  }
+
+  throw std::invalid_argument( "XmlElement::elementFor(), not matching child element found" );
+  return NULL;  // make some compilers happy.
+}
+
+
+std::string 
+XmlElement::toString( const std::string &indent ) const
+{
+  std::string element( indent );
+  element += "<";
+  element += m_name;
+  if ( !m_attributes.empty() )
+  {
+    element += " ";
+    element += attributesAsString();
+  }
+  element += ">";
+
+  if ( !m_elements.empty() )
+  {
+    element += "\n";
+
+    std::string subNodeIndent( indent + "  " );
+    Elements::const_iterator itNode = m_elements.begin();
+    while ( itNode != m_elements.end() )
+    {
+      const XmlElement *node = *itNode++;
+      element += node->toString( subNodeIndent );
+    }
+
+    element += indent;
+  }
+
+  if ( !m_content.empty() )
+  {
+    element += escape( m_content );
+    if ( !m_elements.empty() )
+    {
+      element += "\n";
+      element += indent;
+    }
+  }
+
+  element += "</";
+  element += m_name;
+  element += ">\n";
+
+  return element;
+}
+
+
+std::string 
+XmlElement::attributesAsString() const
+{
+  std::string attributes;
+  Attributes::const_iterator itAttribute = m_attributes.begin();
+  while ( itAttribute != m_attributes.end() )
+  {
+    if ( !attributes.empty() )
+       attributes += " ";
+
+    const Attribute &attribute = *itAttribute++;
+    attributes += attribute.first;
+    attributes += "=\"";
+    attributes += escape( attribute.second );
+    attributes += "\"";
+  }
+  return attributes;
+}
+
+
+std::string 
+XmlElement::escape( std::string value ) const
+{
+  std::string escaped;
+  for ( unsigned int index =0; index < value.length(); ++index )
+  {
+    char c = value[index ];
+    switch ( c )    // escape all predefined XML entity (safe?)
+    {
+    case '<': 
+      escaped += "&lt;";
+      break;
+    case '>': 
+      escaped += "&gt;";
+      break;
+    case '&': 
+      escaped += "&amp;";
+      break;
+    case '\'': 
+      escaped += "&apos;";
+      break;
+    case '"': 
+      escaped += "&quot;";
+      break;
+    default:
+      escaped += c;
+    }
+  }
+  
+  return escaped;
+}
+
+
+CPPUNIT_NS_END
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/XmlOutputter.cpp b/lib/cppunit-1.10.0/src/cppunit/XmlOutputter.cpp
new file mode 100644 (file)
index 0000000..8453424
--- /dev/null
@@ -0,0 +1,198 @@
+#include <cppunit/Exception.h>
+#include <cppunit/Test.h>
+#include <cppunit/TestFailure.h>
+#include <cppunit/TestResultCollector.h>
+#include <cppunit/XmlOutputter.h>
+#include <cppunit/XmlOutputterHook.h>
+#include <cppunit/tools/XmlDocument.h>
+#include <cppunit/tools/XmlElement.h>
+#include <stdlib.h>
+#include <algorithm>
+
+
+CPPUNIT_NS_BEGIN
+
+
+XmlOutputter::XmlOutputter( TestResultCollector *result,
+                            std::ostream &stream,
+                            std::string encoding )
+  : m_result( result )
+  , m_stream( stream )
+  , m_xml( new XmlDocument( encoding ) )
+{
+}
+
+
+XmlOutputter::~XmlOutputter()
+{
+  delete m_xml;
+}
+
+
+void 
+XmlOutputter::addHook( XmlOutputterHook *hook )
+{
+  m_hooks.push_back( hook );
+}
+
+
+void 
+XmlOutputter::removeHook( XmlOutputterHook *hook )
+{
+  m_hooks.erase( std::find( m_hooks.begin(), m_hooks.end(), hook ) );
+}
+
+
+void 
+XmlOutputter::write()
+{
+  setRootNode();
+  m_stream  <<  m_xml->toString();
+}
+
+
+void 
+XmlOutputter::setStyleSheet( const std::string &styleSheet )
+{
+  m_xml->setStyleSheet( styleSheet );
+}
+
+
+void
+XmlOutputter::setRootNode()
+{
+  XmlElement *rootNode = new XmlElement( "TestRun" );
+  m_xml->setRootElement( rootNode );
+
+  for ( Hooks::iterator it = m_hooks.begin(); it != m_hooks.end(); ++it )
+    (*it)->beginDocument( m_xml );
+
+  FailedTests failedTests;
+  fillFailedTestsMap( failedTests );
+
+  addFailedTests( failedTests, rootNode );
+  addSuccessfulTests( failedTests, rootNode );
+  addStatistics( rootNode );
+
+  for ( Hooks::iterator itEnd = m_hooks.begin(); itEnd != m_hooks.end(); ++itEnd )
+    (*itEnd)->endDocument( m_xml );
+}
+
+
+void 
+XmlOutputter::fillFailedTestsMap( FailedTests &failedTests )
+{
+  const TestResultCollector::TestFailures &failures = m_result->failures();
+  TestResultCollector::TestFailures::const_iterator itFailure = failures.begin();
+  while ( itFailure != failures.end() )
+  {
+    TestFailure *failure = *itFailure++;
+    failedTests.insert( std::pair<Test* const, TestFailure*>(failure->failedTest(), failure ) );
+  }
+}
+
+
+void
+XmlOutputter::addFailedTests( FailedTests &failedTests,
+                              XmlElement *rootNode )
+{
+  XmlElement *testsNode = new XmlElement( "FailedTests" );
+  rootNode->addElement( testsNode );
+
+  const TestResultCollector::Tests &tests = m_result->tests();
+  for ( unsigned int testNumber = 0; testNumber < tests.size(); ++testNumber )
+  {
+    Test *test = tests[testNumber];
+    if ( failedTests.find( test ) != failedTests.end() )
+      addFailedTest( test, failedTests[test], testNumber+1, testsNode );
+  }
+}
+
+
+void
+XmlOutputter::addSuccessfulTests( FailedTests &failedTests,
+                                           XmlElement *rootNode )
+{
+  XmlElement *testsNode = new XmlElement( "SuccessfulTests" );
+  rootNode->addElement( testsNode );
+
+  const TestResultCollector::Tests &tests = m_result->tests();
+  for ( unsigned int testNumber = 0; testNumber < tests.size(); ++testNumber )
+  {
+    Test *test = tests[testNumber];
+    if ( failedTests.find( test ) == failedTests.end() )
+      addSuccessfulTest( test, testNumber+1, testsNode );
+  }
+}
+
+
+void
+XmlOutputter::addStatistics( XmlElement *rootNode )
+{
+  XmlElement *statisticsElement = new XmlElement( "Statistics" );
+  rootNode->addElement( statisticsElement );
+  statisticsElement->addElement( new XmlElement( "Tests", m_result->runTests() ) );
+  statisticsElement->addElement( new XmlElement( "FailuresTotal", 
+                                                 m_result->testFailuresTotal() ) );
+  statisticsElement->addElement( new XmlElement( "Errors", m_result->testErrors() ) );
+  statisticsElement->addElement( new XmlElement( "Failures", m_result->testFailures() ) );
+
+  for ( Hooks::iterator it = m_hooks.begin(); it != m_hooks.end(); ++it )
+    (*it)->statisticsAdded( m_xml, statisticsElement );
+}
+
+
+void
+XmlOutputter::addFailedTest( Test *test,
+                             TestFailure *failure,
+                             int testNumber,
+                             XmlElement *testsNode )
+{
+  Exception *thrownException = failure->thrownException();
+  
+  XmlElement *testElement = new XmlElement( "FailedTest" );
+  testsNode->addElement( testElement );
+  testElement->addAttribute( "id", testNumber );
+  testElement->addElement( new XmlElement( "Name", test->getName() ) );
+  testElement->addElement( new XmlElement( "FailureType", 
+                                           failure->isError() ? "Error" : 
+                                                                "Assertion" ) );
+
+  if ( failure->sourceLine().isValid() )
+    addFailureLocation( failure, testElement );
+
+  testElement->addElement( new XmlElement( "Message", thrownException->what() ) );
+
+  for ( Hooks::iterator it = m_hooks.begin(); it != m_hooks.end(); ++it )
+    (*it)->failTestAdded( m_xml, testElement, test, failure );
+}
+
+
+void
+XmlOutputter::addFailureLocation( TestFailure *failure,
+                                  XmlElement *testElement )
+{
+  XmlElement *locationNode = new XmlElement( "Location" );
+  testElement->addElement( locationNode );
+  SourceLine sourceLine = failure->sourceLine();
+  locationNode->addElement( new XmlElement( "File", sourceLine.fileName() ) );
+  locationNode->addElement( new XmlElement( "Line", sourceLine.lineNumber() ) );
+}
+
+
+void
+XmlOutputter::addSuccessfulTest( Test *test, 
+                                 int testNumber,
+                                 XmlElement *testsNode )
+{
+  XmlElement *testElement = new XmlElement( "Test" );
+  testsNode->addElement( testElement );
+  testElement->addAttribute( "id", testNumber );
+  testElement->addElement( new XmlElement( "Name", test->getName() ) );
+
+  for ( Hooks::iterator it = m_hooks.begin(); it != m_hooks.end(); ++it )
+    (*it)->successfulTestAdded( m_xml, testElement, test );
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/cppunit/XmlOutputterHook.cpp b/lib/cppunit-1.10.0/src/cppunit/XmlOutputterHook.cpp
new file mode 100644 (file)
index 0000000..4b4e8d8
--- /dev/null
@@ -0,0 +1,44 @@
+#include <cppunit/XmlOutputterHook.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+void 
+XmlOutputterHook::beginDocument( XmlDocument *document )
+{
+}
+
+
+void 
+XmlOutputterHook::endDocument( XmlDocument *document )
+{
+}
+
+
+void 
+XmlOutputterHook::failTestAdded( XmlDocument *document,
+                                 XmlElement *testElement,
+                                 Test *test,
+                                 TestFailure *failure )
+{
+}
+
+
+void 
+XmlOutputterHook::successfulTestAdded( XmlDocument *document,
+                                       XmlElement *testElement,
+                                       Test *test )
+{
+}
+
+
+void 
+XmlOutputterHook::statisticsAdded( XmlDocument *document,
+                                   XmlElement *statisticsElement )
+{
+}
+
+
+CPPUNIT_NS_END
+
diff --git a/lib/cppunit-1.10.0/src/cppunit/cppunit.dsp b/lib/cppunit-1.10.0/src/cppunit/cppunit.dsp
new file mode 100644 (file)
index 0000000..aab9220
--- /dev/null
@@ -0,0 +1,691 @@
+# Microsoft Developer Studio Project File - Name="cppunit" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Static Library" 0x0104\r
+\r
+CFG=CPPUNIT - WIN32 DEBUG\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "cppunit.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "cppunit.mak" CFG="CPPUNIT - WIN32 DEBUG"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "cppunit - Win32 Release" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "cppunit - Win32 Debug" (based on "Win32 (x86) Static Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "cppunit - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\include" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "WIN32" /YX /FD /c\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo\r
+# ADD LIB32 /nologo\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\cppunit.lib\r
+TargetName=cppunit\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).lib\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "cppunit - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "WIN32" /YX /FD /GZ /c\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo\r
+# ADD LIB32 /nologo /out:"Debug\cppunitd.lib"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\cppunitd.lib\r
+TargetName=cppunitd\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).lib\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "cppunit - Win32 Release"\r
+# Name "cppunit - Win32 Debug"\r
+# Begin Group "documentation"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\ChangeLog\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\CodingGuideLines.txt\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\doc\cookbook.dox\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\doc\FAQ\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE="..\..\INSTALL-unix"\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE="..\..\INSTALL-WIN32.txt"\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\doc\Money.dox\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\NEWS\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\doc\other_documentation.dox\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\THANKS\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\TODO\r
+# End Source File\r
+# End Group\r
+# Begin Group "listener"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\BriefTestProgressListener.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\BriefTestProgressListener.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestResultCollector.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestResultCollector.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSuccessListener.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TextTestProgressListener.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TextTestProgressListener.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TextTestResult.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TextTestResult.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "textui"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\ui\text\TestRunner.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TextTestRunner.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TextTestRunner.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\ui\text\TextTestRunner.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "portability"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE="..\..\include\cppunit\config\config-bcb5.h"\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE="..\..\include\cppunit\config\config-mac.h"\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE="..\..\include\cppunit\config\config-msvc6.h"\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\config\CppUnitApi.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\portability\CppUnitDeque.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\portability\CppUnitMap.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\portability\CppUnitSet.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\portability\CppUnitStack.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\portability\CppUnitVector.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Portability.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\config\SelectDllLoader.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "output"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\CompilerOutputter.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\CompilerOutputter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Outputter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TextOutputter.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TextOutputter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlOutputter.cpp\r
+\r
+!IF  "$(CFG)" == "cppunit - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "cppunit - Win32 Debug"\r
+\r
+# ADD CPP /W3\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\XmlOutputter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlOutputterHook.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\XmlOutputterHook.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "core"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\AdditionalMessage.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\AdditionalMessage.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Asserter.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Asserter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Exception.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Exception.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Message.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Message.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\SourceLine.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\SourceLine.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\SynchronizedObject.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\SynchronizedObject.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Test.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Test.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestAssert.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestAssert.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestCase.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestComposite.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestComposite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestFailure.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestFailure.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestFixture.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestLeaf.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestLeaf.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestListener.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPath.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestPath.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestResult.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestResult.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestRunner.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestRunner.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSuite.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestSuite.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "helper"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\AutoRegisterSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\HelperMacros.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestCaller.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestFactory.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestFactoryRegistry.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestFactoryRegistry.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestFixtureFactory.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestNamer.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestNamer.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestSuiteBuilder.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSuiteBuilderContext.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestSuiteBuilderContext.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestSuiteFactory.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TypeInfoHelper.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TypeInfoHelper.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "extension"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\ExceptionTestCaseDecorator.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\Orthodox.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\RepeatedTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\RepeatedTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestCaseDecorator.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestCaseDecorator.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestDecorator.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestDecorator.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSetUp.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestSetUp.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "plugin"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\BeOsDynamicLibraryManager.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicLibraryManager.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\plugin\DynamicLibraryManager.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicLibraryManagerException.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\plugin\DynamicLibraryManagerException.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\PlugInManager.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\plugin\PlugInManager.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\PlugInParameters.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\plugin\PlugInParameters.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ShlDynamicLibraryManager.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\plugin\TestPlugIn.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPlugInDefaultImpl.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\plugin\TestPlugInDefaultImpl.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\UnixDynamicLibraryManager.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Win32DynamicLibraryManager.cpp\r
+# End Source File\r
+# End Group\r
+# Begin Group "tools"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\tools\Algorithm.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StringTools.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\tools\StringTools.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlDocument.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\tools\XmlDocument.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlElement.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\tools\XmlElement.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "protector"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\DefaultProtector.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DefaultProtector.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Protector.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Protector.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ProtectorChain.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ProtectorChain.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ProtectorContext.h\r
+# End Source File\r
+# End Group\r
+# Begin Source File\r
+\r
+SOURCE=..\..\configure.in\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Makefile.am\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Makefile.am\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/src/cppunit/cppunit_dll.dsp b/lib/cppunit-1.10.0/src/cppunit/cppunit_dll.dsp
new file mode 100644 (file)
index 0000000..ee32f3d
--- /dev/null
@@ -0,0 +1,678 @@
+# Microsoft Developer Studio Project File - Name="cppunit_dll" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=cppunit_dll - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "cppunit_dll.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "cppunit_dll.mak" CFG="cppunit_dll - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "cppunit_dll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "cppunit_dll - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "cppunit_dll - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "cppunit_dll___Win32_Release"\r
+# PROP BASE Intermediate_Dir "cppunit_dll___Win32_Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "ReleaseDll"\r
+# PROP Intermediate_Dir "ReleaseDll"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_DLL_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_BUILD_DLL" /YX /FD /c\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /pdb:"..\..\lib\cppunit_dll.pdb" /machine:I386\r
+# SUBTRACT LINK32 /pdb:none\r
+# Begin Special Build Tool\r
+TargetDir=.\ReleaseDll\r
+TargetPath=.\ReleaseDll\cppunit_dll.dll\r
+TargetName=cppunit_dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).dll  copy $(TargetDir)\$(TargetName).lib ..\..\lib\$(TargetName).lib\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "cppunit_dll - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "cppunit_dll___Win32_Debug"\r
+# PROP BASE Intermediate_Dir "cppunit_dll___Win32_Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "DebugDll"\r
+# PROP Intermediate_Dir "DebugDll"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_DLL_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_BUILD_DLL" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /pdb:"..\..\lib\cppunitd_dll.pdb" /debug /machine:I386 /out:"DebugDll\cppunitd_dll.dll" /pdbtype:sept\r
+# SUBTRACT LINK32 /pdb:none\r
+# Begin Special Build Tool\r
+TargetDir=.\DebugDll\r
+TargetPath=.\DebugDll\cppunitd_dll.dll\r
+TargetName=cppunitd_dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\lib\$(TargetName).dll  copy $(TargetDir)\$(TargetName).lib ..\..\lib\$(TargetName).lib\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "cppunit_dll - Win32 Release"\r
+# Name "cppunit_dll - Win32 Debug"\r
+# Begin Group "DllSpecific"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\DllMain.cpp\r
+# End Source File\r
+# End Group\r
+# Begin Group "extension"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\ExceptionTestCaseDecorator.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\Orthodox.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\RepeatedTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\RepeatedTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestCaseDecorator.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestCaseDecorator.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestDecorator.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestDecorator.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSetUp.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestSetUp.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "helper"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\AutoRegisterSuite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\HelperMacros.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestCaller.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestFactory.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestFactoryRegistry.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestFactoryRegistry.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestFixtureFactory.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestNamer.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestNamer.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestSuiteBuilder.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSuiteBuilderContext.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestSuiteBuilderContext.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TestSuiteFactory.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TypeInfoHelper.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\TypeInfoHelper.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "core"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\AdditionalMessage.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\AdditionalMessage.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Asserter.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Asserter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Exception.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Exception.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Message.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Message.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\SourceLine.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\SourceLine.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\SynchronizedObject.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\SynchronizedObject.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Test.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Test.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestAssert.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestAssert.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestCase.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestCase.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestComposite.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestComposite.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestFailure.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestFailure.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestFixture.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestLeaf.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestLeaf.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestListener.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPath.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestPath.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestResult.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestResult.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestRunner.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestRunner.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSuite.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestSuite.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "output"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\CompilerOutputter.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\CompilerOutputter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Outputter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestResultCollector.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TestResultCollector.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TextOutputter.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TextOutputter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlOutputter.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\XmlOutputter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlOutputterHook.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\XmlOutputterHook.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "portability"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE="..\..\include\cppunit\config\config-bcb5.h"\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE="..\..\include\cppunit\config\config-mac.h"\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE="..\..\include\cppunit\config\config-msvc6.h"\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\config\CppUnitApi.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\portability\CppUnitDeque.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\portability\CppUnitMap.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\portability\CppUnitSet.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\portability\CppUnitStack.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\portability\CppUnitVector.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Portability.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\config\SelectDllLoader.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "textui"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\ui\text\TestRunner.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TextTestRunner.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TextTestRunner.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\ui\text\TextTestRunner.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "listener"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\BriefTestProgressListener.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\BriefTestProgressListener.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestSuccessListener.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TextTestProgressListener.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TextTestProgressListener.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TextTestResult.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\TextTestResult.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "documentation"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\ChangeLog\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\doc\cookbook.dox\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\doc\FAQ\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\NEWS\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\doc\other_documentation.dox\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\TODO\r
+# End Source File\r
+# End Group\r
+# Begin Group "plugin"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\BeosDynamicLibraryManager.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicLibraryManager.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\plugin\DynamicLibraryManager.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicLibraryManagerException.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\plugin\DynamicLibraryManagerException.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\PlugInManager.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\plugin\PlugInManager.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\PlugInParameters.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\plugin\PlugInParameters.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\plugin\TestPlugIn.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPlugInDefaultImpl.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\plugin\TestPlugInDefaultImpl.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\UnixDynamicLibraryManager.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Win32DynamicLibraryManager.cpp\r
+# End Source File\r
+# End Group\r
+# Begin Group "tools"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\StringTools.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\tools\StringTools.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlDocument.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\tools\XmlDocument.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\XmlElement.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\tools\XmlElement.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "protector"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\DefaultProtector.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DefaultProtector.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Protector.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Protector.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ProtectorChain.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ProtectorChain.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ProtectorContext.h\r
+# End Source File\r
+# End Group\r
+# Begin Source File\r
+\r
+SOURCE="..\..\INSTALL-WIN32.txt"\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\Makefile.am\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Makefile.am\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\include\cppunit\extensions\XmlInputHelper.h\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/COMHelper.h b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/COMHelper.h
new file mode 100644 (file)
index 0000000..add0e28
--- /dev/null
@@ -0,0 +1,111 @@
+#ifndef COMHelper_h
+#define COMHelper_h
+
+#pragma warning( push)
+#pragma warning( disable: 4786)
+#pragma warning( disable: 4290)
+
+#include <new>
+#include <typeinfo>
+
+#include <comdef.h>
+#include <comip.h>
+
+namespace COMUtility
+{
+
+// simple template to reduce the typing effort when doing reinterpret<void**> casts
+template< typename Interface>
+  inline void** ppvoid( Interface **ppInterface)
+{
+  return reinterpret_cast< void**>( ppInterface);
+}
+
+
+template< typename Interface>
+  inline GUID* piid( const Interface* pInterface)
+{
+  return __uuidof( pInterface);
+}
+
+// to be used with _com_ptr_t, uses function overloading
+template< typename InterfacePtr>
+  inline GUID* piid( const InterfacePtr& pInterface)
+{
+  return const_cast< GUID*>( &pInterface.GetIID());
+}
+
+
+template< typename Interface>
+  inline const GUID& riid( const Interface* pInterface)
+{
+  return *__uuidof( pInterface);
+}
+
+// to be used with _com_ptr_t, use function overloading
+template< typename InterfacePtr>
+  inline const GUID& riid( const InterfacePtr& pInterface)
+{
+  return pInterface.GetIID();
+}
+
+
+// this is used for regular COM interface pointers
+template < class rawTargetInterface, class rawSourceInterface>
+  inline rawTargetInterface* interface_cast( rawSourceInterface* pSrcInterface) throw( std::bad_cast)
+{
+  rawTargetInterface* pTargetInterface = NULL;
+
+  if ( SUCCEEDED( pSrcInterface->QueryInterface( __uuidof( pTargetInterface),
+                                                 reinterpret_cast<void**>(&pTargetInterface))))
+    return pTargetInterface;
+  else
+    throw std::bad_cast();
+}
+
+
+// non-throwing versions of the same - need to use parameter std::nothrow on function call
+template < class rawTargetInterface, class rawSourceInterface>
+  inline rawTargetInterface* interface_cast( const std::nothrow_t&,
+                                             rawSourceInterface* pSrcInterface) throw()
+{
+  rawTargetInterface* pTargetInterface = NULL;
+
+  pSrcInterface->QueryInterface( __uuidof( pTargetInterface),
+                                 reinterpret_cast<void**>(&pTargetInterface));
+  return pTargetInterface;
+}
+
+
+// Is probably best used as a static member of the class, so it's
+// accessible everywhere
+class COMExceptionThrower
+{
+public:
+       COMExceptionThrower( void){}
+       ~COMExceptionThrower( void){}
+
+       COMExceptionThrower( const HRESULT errCode)
+       {
+               this->operator=( errCode);
+       }
+               
+protected:
+       // don't allow regular copy constructor call
+       COMExceptionThrower( const COMExceptionThrower&);
+
+public:
+       inline const COMExceptionThrower& operator=( const HRESULT errCode) const throw( _com_error)
+       {
+               if ( FAILED( errCode))
+                       _com_raise_error( errCode);
+                       
+               return *this;
+       }
+};
+
+} // end namespace COMUtility
+
+#pragma warning( pop) 
+
+#endif // COMHelper_h
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSAddIn.cpp b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSAddIn.cpp
new file mode 100644 (file)
index 0000000..ab8180e
--- /dev/null
@@ -0,0 +1,110 @@
+// AddInMod.cpp : implementation file
+//
+
+#include "stdafx.h"
+
+#include "DSPlugIn.h"
+#include "COMHelper.h"
+#include "DSAddIn.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+
+COMUtility::COMExceptionThrower CDSAddIn::cex_;
+
+CDSAddIn::~CDSAddIn( void)
+{
+}
+
+// This is called when the user first loads the add-in, and on start-up
+//  of each subsequent Developer Studio session
+STDMETHODIMP CDSAddIn::OnConnection(IApplication* pApp, VARIANT_BOOL bFirstTime,
+               long dwCookie, VARIANT_BOOL* OnConnection)
+{
+  HRESULT result = S_OK;
+
+  try
+  {
+    CComPtr< IUnknown> pIUnk;
+
+         AFX_MANAGE_STATE(AfxGetStaticModuleState());
+
+    cex_ = _Module.GetClassObject( GetObjectCLSID(), IID_IUnknown, reinterpret_cast<void**>(&pIUnk));
+
+    cex_ = CoRegisterClassObject( 
+      GetObjectCLSID(),
+      pIUnk,
+      CLSCTX_LOCAL_SERVER,
+      REGCLS_MULTIPLEUSE,
+      &classRegistrationId_
+      );
+
+    pIApp_ = pApp;
+
+    m_dwCookie = dwCookie;
+    *OnConnection = VARIANT_TRUE;
+  }
+  catch( const std::bad_cast&)
+  {
+    *OnConnection = VARIANT_FALSE;
+  }
+  catch( const _com_error&)
+  {
+    *OnConnection = VARIANT_FALSE;
+  }
+
+  return result;
+}
+
+// This is called on shut-down, and also when the user unloads the add-in
+STDMETHODIMP CDSAddIn::OnDisconnection(VARIANT_BOOL bLastTime)
+{
+  pIApp_.Release();
+  CoRevokeClassObject( classRegistrationId_);
+
+       return S_OK;
+}
+
+
+// ITestRunnerDSPlugin
+STDMETHODIMP CDSAddIn::goToLineInSourceCode( BSTR fileName, int lineNumber)
+{
+  HRESULT result = S_OK;
+
+       AFX_MANAGE_STATE(AfxGetStaticModuleState());
+
+  try
+  {
+    CComPtr< IDispatch> tmp;
+    CComPtr< IDocuments> pIDocuments;
+    CComPtr< ITextDocument> pITextDocu;
+    CComPtr< ITextSelection> pITextSel;
+
+    cex_ = pIApp_->get_Documents( &tmp);
+    pIDocuments.Attach( COMUtility::interface_cast<IDocuments>( tmp.p));
+    tmp.Release();
+    cex_ = pIDocuments->Open( fileName,
+                             CComVariant(),
+                             CComVariant(),
+                             &tmp);
+    pITextDocu.Attach( COMUtility::interface_cast< ITextDocument>( tmp.p));
+    tmp.Release();
+    cex_ = pITextDocu->get_Selection( &tmp);
+    pITextSel.Attach( COMUtility::interface_cast< ITextSelection>( tmp.p));
+    cex_ = pITextSel->GoToLine( lineNumber, CComVariant( 1));
+  }
+  catch( const std::bad_cast&)
+  {
+    result = E_FAIL;
+  }
+  catch( const _com_error&)
+  {
+    result = E_FAIL;
+  }
+  
+  return result;
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSAddIn.h b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSAddIn.h
new file mode 100644 (file)
index 0000000..556f336
--- /dev/null
@@ -0,0 +1,59 @@
+// DSAddIn.h : header file
+//
+
+#if !defined(AFX_DSADDIN_H__3F8385DE_5079_4944_A01B_236F76A0E901__INCLUDED_)
+#define AFX_DSADDIN_H__3F8385DE_5079_4944_A01B_236F76A0E901__INCLUDED_
+
+
+#include "ToAddToDistribution/TestRunnerDSPluginVC6.h"
+#include "COMHelper.h"
+
+// {F193CE54-716C-41CB-80B2-FA74CA3EE2AC}
+// DEFINE_GUID(CLSID_DSAddIn,
+// 0xf193ce54, 0x716c, 0x41cb, 0x80, 0xb2, 0xfa, 0x74, 0xca, 0x3e, 0xe2, 0xac);
+
+/////////////////////////////////////////////////////////////////////////////
+// CDSAddIn
+
+class CDSAddIn : 
+       public CComObjectRoot,
+       public CComCoClass<CDSAddIn, &CLSID_DSAddIn>,
+       public IDSAddIn,
+  public ITestRunnerDSPlugin
+{
+public:
+  DECLARE_REGISTRY_RESOURCEID( IDR_DSADDIN)
+
+  CDSAddIn(): classRegistrationId_( 0) {}
+  ~CDSAddIn();
+
+       BEGIN_COM_MAP(CDSAddIn)
+               COM_INTERFACE_ENTRY(IDSAddIn)
+    COM_INTERFACE_ENTRY(ITestRunnerDSPlugin)
+       END_COM_MAP()
+       DECLARE_NOT_AGGREGATABLE(CDSAddIn)
+
+  DECLARE_CLASSFACTORY_SINGLETON( CDSAddIn)
+
+// IDSAddIns
+public:
+       STDMETHOD( OnConnection)(THIS_ IApplication* pApp, VARIANT_BOOL bFirstTime,
+               long dwCookie, VARIANT_BOOL* OnConnection);
+       STDMETHOD( OnDisconnection)(THIS_ VARIANT_BOOL bLastTime);
+
+// ITestRunnerDSPlugin
+  STDMETHOD( goToLineInSourceCode)( BSTR fileName, int lineNumber);
+
+
+protected:
+  CComPtr< IApplication> pIApp_;
+  DWORD classRegistrationId_;
+       DWORD m_dwCookie;
+  
+  static COMUtility::COMExceptionThrower cex_;
+};
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_DSADDIN_H__3F8385DE_5079_4944_A01B_236F76A0E901__INCLUDED)
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.cpp b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.cpp
new file mode 100644 (file)
index 0000000..1767443
--- /dev/null
@@ -0,0 +1,170 @@
+// DSPlugIn.cpp : Defines the initialization routines for the DLL.
+//
+
+#include "stdafx.h"
+#include <initguid.h>
+#include "DSPlugIn.h"
+#include "DSAddIn.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+CComModule _Module;
+
+BEGIN_OBJECT_MAP(ObjectMap)
+       OBJECT_ENTRY(CLSID_DSAddIn, CDSAddIn)
+END_OBJECT_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CDSPlugInApp
+
+class CDSPlugInApp : public CWinApp
+{
+public:
+       CDSPlugInApp();
+
+// Overrides
+       // ClassWizard generated virtual function overrides
+       //{{AFX_VIRTUAL(CDSPlugInApp)
+       public:
+       virtual BOOL InitInstance();
+       virtual int ExitInstance();
+       //}}AFX_VIRTUAL
+
+       //{{AFX_MSG(CDSPlugInApp)
+               // NOTE - the ClassWizard will add and remove member functions here.
+               //    DO NOT EDIT what you see in these blocks of generated code !
+       //}}AFX_MSG
+       DECLARE_MESSAGE_MAP()
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+// CDSPlugInApp
+
+BEGIN_MESSAGE_MAP(CDSPlugInApp, CWinApp)
+       //{{AFX_MSG_MAP(CDSPlugInApp)
+               // NOTE - the ClassWizard will add and remove mapping macros here.
+               //    DO NOT EDIT what you see in these blocks of generated code!
+       //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// The one and only CDSPlugInApp object
+
+CDSPlugInApp theApp;
+
+/////////////////////////////////////////////////////////////////////////////
+// CDSPlugInApp construction
+
+CDSPlugInApp::CDSPlugInApp()
+{
+       // TODO: add construction code here,
+       // Place all significant initialization in InitInstance
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// CDSPlugInApp initialization
+
+BOOL CDSPlugInApp::InitInstance()
+{
+       _Module.Init(ObjectMap, m_hInstance, &LIBID_TestRunnerDSPluginLib);
+       return CWinApp::InitInstance();
+}
+
+int CDSPlugInApp::ExitInstance()
+{
+       _Module.Term();
+       return CWinApp::ExitInstance();
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// Special entry points required for inproc servers
+
+STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
+{
+       AFX_MANAGE_STATE(AfxGetStaticModuleState());
+       return _Module.GetClassObject(rclsid, riid, ppv);
+}
+
+STDAPI DllCanUnloadNow(void)
+{
+       AFX_MANAGE_STATE(AfxGetStaticModuleState());
+       return (AfxDllCanUnloadNow()==S_OK && _Module.GetLockCount()==0) ? S_OK : S_FALSE;
+}
+
+// by exporting DllRegisterServer, you can use regsvr32.exe
+STDAPI DllRegisterServer(void)
+{
+       AFX_MANAGE_STATE(AfxGetStaticModuleState());
+       HRESULT hRes = S_OK;
+       
+       // Registers object, typelib and all interfaces in typelib
+       hRes = _Module.RegisterServer(TRUE);
+       if (FAILED(hRes))
+               return hRes;
+
+       // Register description of this add-in object in its own
+       //  "/Description" subkey.
+       // TODO:  If you add more add-ins to this module, you need
+       //  to register all of their descriptions, each description
+       //  in each add-in object's registry CLSID entry:
+       // HKEY_CLASSES_ROOT\Clsid\{add-in CLSID}\Description="add-in description"
+/*
+  _ATL_OBJMAP_ENTRY* pEntry = _Module.m_pObjMap;
+       CRegKey key;
+       LONG lRes = key.Open(HKEY_CLASSES_ROOT, _T("CLSID"));
+       if (lRes == ERROR_SUCCESS)
+       {
+               USES_CONVERSION;
+               LPOLESTR lpOleStr;
+               StringFromCLSID(*pEntry->pclsid, &lpOleStr);
+               LPTSTR lpsz = OLE2T(lpOleStr);
+
+               lRes = key.Open(key, lpsz);
+               if (lRes == ERROR_SUCCESS)
+               {
+                       CString strDescription;
+                       strDescription.LoadString(IDS_DSPLUGIN_DESCRIPTION);
+                       key.SetKeyValue(_T("Description"), strDescription);
+               }
+               CoTaskMemFree(lpOleStr);
+       }
+       if (lRes != ERROR_SUCCESS)
+               hRes = HRESULT_FROM_WIN32(lRes);
+*/
+       return hRes;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// DllUnregisterServer - Removes entries from the system registry
+
+STDAPI DllUnregisterServer(void)
+{
+       AFX_MANAGE_STATE(AfxGetStaticModuleState());
+
+       HRESULT hRes = S_OK;
+       _Module.UnregisterServer();
+       return hRes;
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Debugging support
+
+// GetLastErrorDescription is used in the implementation of the VERIFY_OK
+//  macro, defined in stdafx.h.
+
+#ifdef _DEBUG
+
+void GetLastErrorDescription(CComBSTR& bstr)
+{
+       CComPtr<IErrorInfo> pErrorInfo;
+       if (GetErrorInfo(0, &pErrorInfo) == S_OK)
+               pErrorInfo->GetDescription(&bstr);
+}
+
+#endif //_DEBUG
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.def b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.def
new file mode 100644 (file)
index 0000000..38cc6e1
--- /dev/null
@@ -0,0 +1,11 @@
+; DSPlugIn.def : Declares the module parameters for the DLL.
+
+LIBRARY      "TestRunnerDSPlugin"
+DESCRIPTION  'TestRunnerDSPlugin Windows Dynamic Link Library'
+
+EXPORTS
+    ; Explicit exports can go here
+       DllCanUnloadNow PRIVATE
+       DllGetClassObject PRIVATE
+       DllRegisterServer PRIVATE
+       DllUnregisterServer PRIVATE
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.dsp b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.dsp
new file mode 100644 (file)
index 0000000..4617f55
--- /dev/null
@@ -0,0 +1,608 @@
+# Microsoft Developer Studio Project File - Name="DSPlugIn" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=DSPlugIn - Win32 Debug Unicode\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "DSPlugIn.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "DSPlugIn.mak" CFG="DSPlugIn - Win32 Debug Unicode"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "DSPlugIn - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "DSPlugIn - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "DSPlugIn - Win32 Release Unicode" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "DSPlugIn - Win32 Debug Unicode" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName "DSPlugIn"\r
+# PROP Scc_LocalPath ".."\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 2\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 2\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /YX /FD /c\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /win32\r
+# SUBTRACT MTL /mktyplib203\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x409 /i "../../../../lib" /d "NDEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 /nologo /subsystem:windows /dll /machine:I386\r
+# ADD LINK32 /nologo /subsystem:windows /dll /machine:I386 /out:"Release/TestRunnerDSPlugIn.dll"\r
+# Begin Custom Build - Performing Registration\r
+OutDir=.\Release\r
+TargetPath=.\Release\TestRunnerDSPlugIn.dll\r
+InputPath=.\Release\TestRunnerDSPlugIn.dll\r
+SOURCE="$(InputPath)"\r
+\r
+"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       rem echo Automatically done when the add-in is registered with VC++ \r
+       rem regsvr32 "$(TargetPath)" \r
+       echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" \r
+       rem echo Server registration done! \r
+       \r
+# End Custom Build\r
+# Begin Special Build Tool\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=duplicating DLL to lib directory\r
+PostBuild_Cmds=echo The following command may fail if you have already registered the add-in   copy Release\TestRunnerDSPlugIn.dll ..\..\..\lib\TestRunnerDSPlugIn.dll\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 2\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 2\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /YX /FD /GZ /c\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /win32\r
+# SUBTRACT MTL /mktyplib203\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x409 /i "../../../../lib" /d "_DEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug/TestRunnerDSPlugInD.dll" /pdbtype:sept\r
+# SUBTRACT LINK32 /pdb:none\r
+# Begin Custom Build - Performing Registration\r
+OutDir=.\Debug\r
+TargetPath=.\Debug\TestRunnerDSPlugInD.dll\r
+InputPath=.\Debug\TestRunnerDSPlugInD.dll\r
+SOURCE="$(InputPath)"\r
+\r
+"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       rem echo Automatically done when the add-in is registered with VC++ \r
+       rem regsvr32 "$(TargetPath)" \r
+       echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" \r
+       rem echo Server registration done! \r
+       \r
+# End Custom Build\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP BASE Use_MFC 2\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "DSPlugIn___Win32_Release_Unicode"\r
+# PROP BASE Intermediate_Dir "DSPlugIn___Win32_Release_Unicode"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 2\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "ReleaseUnicode"\r
+# PROP Intermediate_Dir "ReleaseUnicode"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../include" /D "NDEBUG" /D "_MBCS" /D "_USRDLL" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "WIN32" /D "_UNICODE" /YX /FD /c\r
+# ADD BASE MTL /nologo /D "NDEBUG" /win32\r
+# SUBTRACT BASE MTL /mktyplib203\r
+# ADD MTL /nologo /D "NDEBUG" /win32\r
+# SUBTRACT MTL /mktyplib203\r
+# ADD BASE RSC /l 0x409 /i "../../../../lib" /d "NDEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x409 /i "../../../../lib" /d "NDEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 /nologo /subsystem:windows /dll /machine:I386 /out:"Release/TestRunnerDSPlugIn.dll"\r
+# ADD LINK32 /nologo /entry:"wWinMainCRTStartup" /subsystem:windows /dll /machine:I386 /out:"ReleaseUnicode/TestRunnerDSPlugIn.dll"\r
+# Begin Custom Build - Performing Registration\r
+OutDir=.\ReleaseUnicode\r
+TargetPath=.\ReleaseUnicode\TestRunnerDSPlugIn.dll\r
+InputPath=.\ReleaseUnicode\TestRunnerDSPlugIn.dll\r
+SOURCE="$(InputPath)"\r
+\r
+"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       rem echo Automatically done when the add-in is registered with VC++ \r
+       rem regsvr32 "$(TargetPath)" \r
+       echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" \r
+       rem echo Server registration done! \r
+       \r
+# End Custom Build\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP BASE Use_MFC 2\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "DSPlugIn___Win32_Debug_Unicode"\r
+# PROP BASE Intermediate_Dir "DSPlugIn___Win32_Debug_Unicode"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 2\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "DebugUnicode"\r
+# PROP Intermediate_Dir "DebugUnicode"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../include" /D "_DEBUG" /D "_MBCS" /D "_USRDLL" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "WIN32" /D "_UNICODE" /YX /FD /GZ /c\r
+# ADD BASE MTL /nologo /D "_DEBUG" /win32\r
+# SUBTRACT BASE MTL /mktyplib203\r
+# ADD MTL /nologo /D "_DEBUG" /win32\r
+# SUBTRACT MTL /mktyplib203\r
+# ADD BASE RSC /l 0x409 /i "../../../../lib" /d "_DEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x409 /i "../../../../lib" /d "_DEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug/TestRunnerDSPlugInD.dll" /pdbtype:sept\r
+# SUBTRACT BASE LINK32 /pdb:none\r
+# ADD LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /out:"DebugUnicode/TestRunnerDSPlugInD.dll" /pdbtype:sept\r
+# SUBTRACT LINK32 /pdb:none\r
+# Begin Custom Build - Performing Registration\r
+OutDir=.\DebugUnicode\r
+TargetPath=.\DebugUnicode\TestRunnerDSPlugInD.dll\r
+InputPath=.\DebugUnicode\TestRunnerDSPlugInD.dll\r
+SOURCE="$(InputPath)"\r
+\r
+"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       rem echo Automatically done when the add-in is registered with VC++ \r
+       rem regsvr32 "$(TargetPath)" \r
+       echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" \r
+       rem echo Server registration done! \r
+       \r
+# End Custom Build\r
+# Begin Special Build Tool\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=duplicating DLL to lib directory\r
+PostBuild_Cmds=echo The following command may fail if you have already registered the add-in   copy Debug\TestRunnerDSPlugInD.dll ..\..\..\lib\TestRunnerDSPlugInD.dll\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "DSPlugIn - Win32 Release"\r
+# Name "DSPlugIn - Win32 Debug"\r
+# Name "DSPlugIn - Win32 Release Unicode"\r
+# Name "DSPlugIn - Win32 Debug Unicode"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=.\DSAddIn.cpp\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DSPlugIn.cpp\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DSPlugIn.def\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DSPlugIn.rc\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StdAfx.cpp\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+# ADD CPP /Yc"stdafx.h"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+# ADD CPP /Yc"stdafx.h"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+# ADD CPP /Yc"stdafx.h"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+# ADD CPP /Yc"stdafx.h"\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestRunnerDSPlugin.idl\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+# ADD MTL /tlb "TestRunnerDSPlugin.tlb" /h "ToAddToDistribution/TestRunnerDSPluginVC6.h" /iid "ToAddToDistribution/TestRunnerDSPluginVC6_i.c"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+# ADD MTL /tlb "TestRunnerDSPlugin.tlb" /h "ToAddToDistribution/TestRunnerDSPluginVC6.h" /iid "ToAddToDistribution/TestRunnerDSPluginVC6_i.c" /Oicf\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+# ADD BASE MTL /tlb "TestRunnerDSPlugin.tlb" /h "ToAddToDistribution/TestRunnerDSPluginVC6.h" /iid "ToAddToDistribution/TestRunnerDSPluginVC6_i.c"\r
+# ADD MTL /tlb "TestRunnerDSPlugin.tlb" /h "ToAddToDistribution/TestRunnerDSPluginVC6.h" /iid "ToAddToDistribution/TestRunnerDSPluginVC6_i.c"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+# ADD BASE MTL /tlb "TestRunnerDSPlugin.tlb" /h "ToAddToDistribution/TestRunnerDSPluginVC6.h" /iid "ToAddToDistribution/TestRunnerDSPluginVC6_i.c" /Oicf\r
+# ADD MTL /tlb "TestRunnerDSPlugin.tlb" /h "ToAddToDistribution/TestRunnerDSPluginVC6.h" /iid "ToAddToDistribution/TestRunnerDSPluginVC6_i.c" /Oicf\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ToAddToDistribution\TestRunnerDSPluginVC6_i.c\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=.\COMHelper.h\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DSAddIn.h\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DSPlugIn.h\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Resource.h\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StdAfx.h\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# Begin Source File\r
+\r
+SOURCE=.\res\DSPlugIn.rc2\r
+# PROP Exclude_From_Scan -1\r
+# PROP BASE Exclude_From_Build 1\r
+# PROP Exclude_From_Build 1\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DSPlugIn.rgs\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\res\TBarLrge.bmp\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\res\TBarMedm.bmp\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# End Group\r
+# Begin Source File\r
+\r
+SOURCE=.\ReadMe.txt\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestRunnerDSPlugin.tlb\r
+\r
+!IF  "$(CFG)" == "DSPlugIn - Win32 Release"\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Release Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "DSPlugIn - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.h b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.h
new file mode 100644 (file)
index 0000000..7d1720a
--- /dev/null
@@ -0,0 +1,23 @@
+// DSPlugIn.h : main header file for the DSPLUGIN DLL
+//
+
+#if !defined(AFX_DSPLUGIN_H__4DD05CAB_F04B_43DE_8B5D_17B299239CD9__INCLUDED_)
+#define AFX_DSPLUGIN_H__4DD05CAB_F04B_43DE_8B5D_17B299239CD9__INCLUDED_
+
+#ifndef __AFXWIN_H__
+       #error include 'stdafx.h' before including this file for PCH
+#endif
+
+#include "resource.h"          // main symbols
+
+#include <ObjModel\addguid.h>
+#include <ObjModel\appguid.h>
+#include <ObjModel\bldguid.h>
+#include <ObjModel\textguid.h>
+#include <ObjModel\dbgguid.h>
+
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_DSPLUGIN_H__4DD05CAB_F04B_43DE_8B5D_17B299239CD9__INCLUDED)
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.rc b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.rc
new file mode 100644 (file)
index 0000000..b2c9d36
--- /dev/null
@@ -0,0 +1,156 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
+    "#define _AFX_NO_OLE_RESOURCES\r\n"
+    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
+    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
+    "\r\n"
+    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
+    "#ifdef _WIN32\r\n"
+    "LANGUAGE 9, 1\r\n"
+    "#pragma code_page(1252)\r\n"
+    "#endif //_WIN32\r\n"
+    "#include ""res\\DSPlugIn.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
+    "#include ""afxres.rc""         // Standard components\r\n"
+    "#endif\r\n"
+    "1 TYPELIB ""TestRunnerDSPlugin.tlb""\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904b0"
+        BEGIN
+            VALUE "Comments", "\0"
+            VALUE "CompanyName", "GNU\0"
+            VALUE "FileDescription", "Cppunit.TestRunner Developer Studio Addin\0"
+            VALUE "FileVersion", "1, 0, 0, 1\0"
+            VALUE "InternalName", "DSPlugIn\0"
+            VALUE "LegalCopyright", "Copyright (C) 2001\0"
+            VALUE "LegalTrademarks", "\0"
+            VALUE "OriginalFilename", "TestRunnerDSPlugin.dll\0"
+            VALUE "PrivateBuild", "\0"
+            VALUE "ProductName", "TestRunnerDSPlugin Dynamic Link Library\0"
+            VALUE "ProductVersion", "1, 0, 0, 1\0"
+            VALUE "SpecialBuild", "\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1200
+    END
+END
+
+#endif    // !_MAC
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// REGISTRY
+//
+
+IDR_DSADDIN             REGISTRY DISCARDABLE    "DSPlugIn.rgs"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_DSPLUGIN_LONGNAME   "CppUnit Developer Studio Add-in"
+    IDS_DSPLUGIN_DESCRIPTION 
+                            "Allows TestRunner dialog of cppunit to invoke the line of code where assert occurred"
+    IDS_CMD_STRING          "\nDSPlugIn Sample Command\nDisplays a message box\nDSPlugIn Command"
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#define _AFX_NO_SPLITTER_RESOURCES
+#define _AFX_NO_OLE_RESOURCES
+#define _AFX_NO_TRACKER_RESOURCES
+#define _AFX_NO_PROPERTY_RESOURCES
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE 9, 1
+#pragma code_page(1252)
+#endif //_WIN32
+#include "res\DSPlugIn.rc2"  // non-Microsoft Visual C++ edited resources
+#include "afxres.rc"         // Standard components
+#endif
+1 TYPELIB "TestRunnerDSPlugin.tlb"
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.rgs b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/DSPlugIn.rgs
new file mode 100644 (file)
index 0000000..93aefb7
--- /dev/null
@@ -0,0 +1,32 @@
+HKCR
+{
+       GNU.cppunit.DevStudioAddin.1 = s 'CppUnit.Testrunner Developer Studio Add-in'
+       {
+               CLSID = s '{F193CE54-716C-41CB-80B2-FA74CA3EE2AC}'
+       }
+       GNU.cppunit.DevStudioAddin = s 'CppUnit.Testrunner Developer Studio Add-in'
+       {
+               CLSID = s '{F193CE54-716C-41CB-80B2-FA74CA3EE2AC}'
+               CurVer = s 'GNU.cppunit.DevStudioAddin.1'
+       }
+       NoRemove CLSID
+       {
+               ForceRemove {F193CE54-716C-41CB-80B2-FA74CA3EE2AC} = s 'CppUnit.Testrunner Developer Studio Add-in'
+               {
+                       ProgID = s 'GNU.cppunit.DevStudioAddin.1'
+                       VersionIndependentProgID = s 'GNU.cppunit.DevStudioAddin'
+                       InprocServer32 = s '%MODULE%'
+                       TypeLib = s '{3ADE0E38-5A56-4a68-BD8D-67E9E7502971}'
+                       Description = s 'Allows TestRunner dialog of cppunit to invoke the line of code where error occurred'
+               }
+       }
+       NoRemove Interface
+       {
+               ForceRemove {3ADE0E37-5A56-4a68-BD8D-67E9E7502971} = s 'ITestRunnerDSPlugin'
+               {
+                       ProxyStubClsid = s '{00020424-0000-0000-C000-000000000046}'
+                       ProxyStubClsid32 = s '{00020424-0000-0000-C000-000000000046}'
+                       TypeLib = s '{3ADE0E38-5A56-4a68-BD8D-67E9E7502971}'
+               }
+       }
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/ReadMe.txt b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/ReadMe.txt
new file mode 100644 (file)
index 0000000..0384029
--- /dev/null
@@ -0,0 +1,96 @@
+========================================================================
+       DEVELOPER STUDIO ADD-IN : DSPlugIn
+========================================================================
+
+
+The Add-in Wizard has created this DSPlugIn DLL for you.  This DLL not only
+demonstrates the basics of creating a Developer Studio add-in, but it is also
+a starting point for writing your own add-in.
+
+An add-in mainly does two things.
+       (1) It adds commands to Developer Studio, which can then be tied
+           to keystrokes or toolbar buttons by the user or programmatically
+               by the add-in.
+       (2) It responds to events fired by Developer Studio.
+In both cases, the add-in code has access to the full Developer Studio
+Automation Object Model, and may manipulate those objects to affect the
+behavior of Developer Studio.
+
+This file contains a summary of what you will find in each of the files that
+make up your DSPlugIn DLL.
+
+
+DSPlugIn.h
+       This is the main header file for the DLL.  It declares the
+       CDSPlugInApp class.
+
+DSPlugIn.cpp
+       This is the main DLL source file.  It contains the class CDSPlugInApp.
+       It also contains the OLE entry points required of inproc servers.
+
+DSPlugIn.dsp
+    This file (the project file) contains information at the project level and
+    is used to build a single project or subproject. Other users can share the
+    project (.dsp) file, but they should export the makefiles locally.
+
+DSPlugIn.odl
+    This file contains the Object Description Language source code for the
+    type library of your DLL.
+
+DSPlugIn.rc
+    This is a listing of all of the Microsoft Windows resources that the
+    program uses.  This file can be directly edited in Microsoft
+       Developer Studio.
+
+res\DSPlugIn.rc2
+    This file contains resources that are not edited by Microsoft 
+       Developer Studio.  You should place all resources not
+       editable by the resource editor in this file.
+
+DSPlugIn.def
+    This file contains information about the DLL that must be
+    provided to run with Microsoft Windows.  It defines parameters
+    such as the name and description of the DLL.  It also exports
+       functions from the DLL.
+
+DSPlugIn.clw
+    This file contains information used by ClassWizard to edit existing
+    classes or add new classes.  ClassWizard also uses this file to store
+    information needed to create and edit message maps and dialog data
+    maps and to create prototype member functions.
+
+/////////////////////////////////////////////////////////////////////////////
+Add-in-specific files:
+
+DSAddIn.cpp, DSAddIn.h
+    These files contain the CDSAddIn class, which implements the
+    IDSAddIn interface.  This interface contains handlers
+    for connecting and disconnecting the add-in.
+
+Commands.cpp, Commands.h
+    These files contain the CCommands class, which implements your
+    command dispatch interface.  This interface contains one method
+    for each command you add to Developer Studio.  It already implements
+    a sample command (DSPlugInCommand) which displays a message
+    box when it is invoked.  You will probably want to rename and modify this
+       command, as well as add your own commands.
+
+
+/////////////////////////////////////////////////////////////////////////////
+Other standard files:
+
+StdAfx.h, StdAfx.cpp
+    These files are used to build a precompiled header (PCH) file
+    named DSPlugIn.pch and a precompiled types file named StdAfx.obj.
+
+Resource.h
+    This is the standard header file, which defines new resource IDs.
+    Microsoft Developer Studio reads and updates this file.
+
+/////////////////////////////////////////////////////////////////////////////
+Other notes:
+
+AppWizard uses "TODO:" to indicate parts of the source code you
+should add to or customize.
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/StdAfx.cpp b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/StdAfx.cpp
new file mode 100644 (file)
index 0000000..f233c6e
--- /dev/null
@@ -0,0 +1,7 @@
+// stdafx.cpp : source file that includes just the standard includes
+//     DSPlugIn.pch will be the pre-compiled header
+//     stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+#include "atlimpl.cpp"
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/StdAfx.h b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/StdAfx.h
new file mode 100644 (file)
index 0000000..eef9da8
--- /dev/null
@@ -0,0 +1,72 @@
+// stdafx.h : include file for standard system include files,
+//  or project specific include files that are used frequently, but
+//      are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__4D384BCD_0580_402B_8270_1C9B5FB5ADA8__INCLUDED_)
+#define AFX_STDAFX_H__4D384BCD_0580_402B_8270_1C9B5FB5ADA8__INCLUDED_
+
+#define VC_EXTRALEAN           // Exclude rarely-used stuff from Windows headers
+
+#include <afxwin.h>         // MFC core and standard components
+#include <afxdisp.h>
+
+#include <atlbase.h>
+//You may derive a class from CComModule and use it if you want to override
+//something, but do not change the name of _Module
+extern CComModule _Module;
+#include <atlcom.h>
+
+// Developer Studio Object Model
+#include <ObjModel\addauto.h>
+#include <ObjModel\appdefs.h>
+#include <ObjModel\appauto.h>
+#include <ObjModel\blddefs.h>
+#include <ObjModel\bldauto.h>
+#include <ObjModel\textdefs.h>
+#include <ObjModel\textauto.h>
+#include <ObjModel\dbgdefs.h>
+#include <ObjModel\dbgauto.h>
+
+/////////////////////////////////////////////////////////////////////////////
+// Debugging support
+
+// Use VERIFY_OK around all calls to the Developer Studio objects which
+//  you expect to return S_OK.
+// In DEBUG builds of your add-in, VERIFY_OK displays an ASSERT dialog box
+//  if the expression returns an HRESULT other than S_OK.  If the HRESULT
+//  is a success code, the ASSERT box will display that HRESULT.  If it
+//  is a failure code, the ASSERT box will display that HRESULT plus the
+//  error description string provided by the object which raised the error.
+// In RETAIL builds of your add-in, VERIFY_OK just evaluates the expression
+//  and ignores the returned HRESULT.
+
+#ifdef _DEBUG
+
+void GetLastErrorDescription(CComBSTR& bstr);          // Defined in DSPlugIn.cpp
+#define VERIFY_OK(f) \
+       { \
+               HRESULT hr = (f); \
+               if (hr != S_OK) \
+               { \
+                       if (FAILED(hr)) \
+                       { \
+                               CComBSTR bstr; \
+                               GetLastErrorDescription(bstr); \
+                               _RPTF2(_CRT_ASSERT, "Object call returned %lx\n\n%S", hr, (BSTR) bstr); \
+                       } \
+                       else \
+                               _RPTF1(_CRT_ASSERT, "Object call returned %lx", hr); \
+               } \
+       }
+
+#else //_DEBUG
+
+#define VERIFY_OK(f) (f);
+
+#endif //_DEBUG
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__4D384BCD_0580_402B_8270_1C9B5FB5ADA8__INCLUDED)
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/TestRunnerDSPlugin.idl b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/TestRunnerDSPlugin.idl
new file mode 100644 (file)
index 0000000..9770d9c
--- /dev/null
@@ -0,0 +1,43 @@
+// BCProto.idl : IDL source for BCProto.dll
+//
+
+// This file will be processed by the MIDL tool to
+// produce the type library (BCProto.tlb) and marshalling code.
+
+import "oaidl.idl";
+import "ocidl.idl";
+
+[
+       object,
+       uuid(3ADE0E37-5A56-4a68-BD8D-67E9E7502971),
+       helpstring("ITestRunnerDSPlugin Interface"),
+       pointer_default(unique),
+  oleautomation
+]
+interface ITestRunnerDSPlugin : IUnknown
+{
+       // please let me know whether get_current is accessible through VB
+       [helpstring("command goToLineInSourceCode")] 
+  HRESULT goToLineInSourceCode( [in] BSTR fileName, [in] int lineNumber);
+};
+
+
+[
+       uuid(3ADE0E38-5A56-4a68-BD8D-67E9E7502971),
+       version(1.0),
+       helpstring("TestRunnerDSPlugin 1.0 Type Library")
+]
+library TestRunnerDSPluginLib
+{
+       importlib("stdole32.tlb");
+
+  [
+    uuid( F193CE54-716C-41CB-80B2-FA74CA3EE2AC),
+    version(1.0),
+         helpstring("TestRunner Developer Studio Plugin")
+  ]
+  coclass DSAddIn
+  {
+    [default] interface ITestRunnerDSPlugin;
+  }
+};
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/DSPlugIn.rc2 b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/DSPlugIn.rc2
new file mode 100644 (file)
index 0000000..f61a889
--- /dev/null
@@ -0,0 +1,13 @@
+//
+// DSPLUGIN.RC2 - resources Microsoft Visual C++ does not edit directly
+//
+
+#ifdef APSTUDIO_INVOKED
+       #error this file is not editable by Microsoft Visual C++
+#endif //APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Add manually edited resources here...
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/TBarLrge.bmp b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/TBarLrge.bmp
new file mode 100644 (file)
index 0000000..c128524
Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/TBarLrge.bmp differ
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/TBarMedm.bmp b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/TBarMedm.bmp
new file mode 100644 (file)
index 0000000..6f24e11
Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/res/TBarMedm.bmp differ
diff --git a/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/resource.h b/lib/cppunit-1.10.0/src/msvc6/DSPlugIn/resource.h
new file mode 100644 (file)
index 0000000..6bddcc0
--- /dev/null
@@ -0,0 +1,19 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by DSPlugIn.rc
+//
+#define IDS_DSPLUGIN_LONGNAME           1
+#define IDS_DSPLUGIN_DESCRIPTION        2
+#define IDS_CMD_STRING                  3
+#define IDR_DSADDIN                     133
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        134
+#define _APS_NEXT_COMMAND_VALUE         32771
+#define _APS_NEXT_CONTROL_VALUE         1000
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
diff --git a/lib/cppunit-1.10.0/src/msvc6/DllPlugInTester/DllPlugInTester.cpp b/lib/cppunit-1.10.0/src/msvc6/DllPlugInTester/DllPlugInTester.cpp
new file mode 100644 (file)
index 0000000..7292704
--- /dev/null
@@ -0,0 +1,195 @@
+#include <cppunit/TestPath.h>
+#include <cppunit/TestResult.h>
+#include <cppunit/TestResultCollector.h>
+#include <cppunit/TestRunner.h>
+#include <cppunit/TextTestProgressListener.h>
+#include <cppunit/CompilerOutputter.h>
+#include <tchar.h>
+#include <cppunit/plugin/TestPlugIn.h>
+#include <cppunit/plugin/TestPlugInSuite.h>
+#include <cppunit/plugin/DynamicLibraryManagerException.h>
+#include <cppunit/extensions/TestDecorator.h>
+
+
+#ifndef _UNICODE
+#define TCERR std::cerr
+#else
+#define TCERR std::wcerr
+#endif
+
+class NotOwningTestRunner : public CppUnit::TestRunner
+{
+public:
+  typedef CppUnit::TestRunner SuperClass;   // work around VC++ bug
+
+  void addTest( CppUnit::Test *test )
+  {
+    SuperClass::addTest( new CppUnit::TestDecorator( test ) );
+  }
+};
+
+
+/*! Converts a ansi string to a TCHAR string.
+ */
+std::basic_string<TCHAR>
+toVariableString( const char *text )
+{
+#ifdef _UNICODE
+  int textLength = ::strlen( text );
+
+  wchar_t *unicodeString = new wchar_t[ textLength + 1 ];
+       
+  ::MultiByteToWideChar( CP_THREAD_ACP, MB_PRECOMPOSED, 
+                         text, textLength,
+                                    unicodeString, textLength + 1 );
+
+       std::wstring str( unicodeString );
+  delete[] unicodeString;
+  return str;
+#else
+  return text;
+#endif
+}
+
+
+/*! Converts a TCHAR string to an ANSI string.
+ */
+std::string 
+toAnsiString( const TCHAR *text )
+{
+#ifdef _UNICODE
+  int bufferLength = ::WideCharToMultiByte( CP_THREAD_ACP, 0, 
+                                            text, text.GetLength(),
+                                            NULL, 0, NULL, NULL ) +1;
+  char *ansiString = new char[bufferLength];
+  ::WideCharToMultiByte( CP_THREAD_ACP, 0, 
+                         text, text.GetLength(),
+                         ansiString, bufferLength, 
+                                            NULL,
+                                            NULL );
+
+  std::string str( ansiString, bufferLength-1 );
+  delete[] ansiString;
+
+  return str;
+#else
+  return std::string( text );
+#endif
+}
+
+
+/*! Runs the specified tests located in the root suite.
+ * \param root Root suite that contains all the test of the DLL.
+ * \param testPaths Array of string that contains the test paths of all the test to run.
+ * \param numberOfPath Number of test paths in \a testPaths. If 0 then \a root suite
+ *                     is run.
+ * \return \c true if the run succeed, \c false if a test failed or if a test
+ *         path was not resolved.
+ */
+bool 
+runDllTest( CppUnit::Test *root,
+            TCHAR *testPaths[],
+            int numberOfPath )
+{
+  CppUnit::TestResult controller;
+  CppUnit::TestResultCollector result;
+  controller.addListener( &result );        
+  CppUnit::TextTestProgressListener progress;
+  controller.addListener( &progress );      
+
+  NotOwningTestRunner runner;
+  if ( numberOfPath == 0 )
+    runner.addTest( root );
+  else
+  {
+    for ( int index =0; index < numberOfPath; ++index )
+    {
+      const TCHAR *testPath = testPaths[index];
+      try
+      {
+        runner.addTest( root->resolveTestPath( testPath).getChildTest() );
+      }
+      catch ( std::invalid_argument & )
+      {
+        TCERR  <<  _T("Failed to resolve test path: ")  <<  testPath  <<  std::endl;
+        return false;
+      }
+    }
+  }
+
+  runner.run( controller );
+
+  std::cerr << std::endl;
+
+  CppUnit::CompilerOutputter outputter( &result, std::cerr );
+  outputter.write();
+
+  return result.wasSuccessful();
+}
+
+
+/*! Main
+ * 
+ * Usage: 
+ *
+ * DllPlugInTester.exe dll-filename [testpath1] [testpath2]...
+ *
+ * <em>dll-filename</em> must be the name of the DLL. If the DLL use some other DLL, they
+ * should be in the path or in the same directory as the DLL. The DLL must export
+ * a function named "GetTestPlugInInterface" with the signature
+ * GetTestPlugInInterfaceFunction. Both are defined in:
+ * \code
+ * #include <msvc6/testrunner/TestPlugInInterface.h>
+ * \endcode.
+ *
+ * See examples/msvc6/TestPlugIn for an example of post-build testing.
+ *
+ * If no test path is specified, they all the test of the suite returned by the DLL
+ * are run.
+ *
+ * You can specify as much test path as you which. Only the test specified by the
+ * test paths will be run. Test paths are resolved using Test::resolveTestPath() on
+ * the suite returned by the DLL.
+ * 
+ * If all test succeed and no error happen then the application exit with code 0.
+ * If any error occurs (failed to load dll, failed to resolve test paths) or a 
+ * test fail, the application exit with code 1.
+ */
+int 
+_tmain( int argc, 
+        TCHAR* argv[], 
+        TCHAR* envp[] )
+{
+  const int successReturnCode = 0;
+  const int failureReturnCode = 1;
+
+  // check command line
+  const TCHAR *applicationName = argv[0];
+  if ( argc < 2 )
+  {
+    TCERR  <<  _T("Usage: ")  <<  std::endl
+           <<  applicationName 
+           <<  " dll-filename [test-path] [test-path]..."
+           <<  std::endl;
+    return failureReturnCode;
+  }
+
+  // open the dll
+  const TCHAR *dllFileName = argv[1];
+
+  bool wasSuccessful = false;
+  try
+  {
+    CppUnit::TestPlugInSuite suite( dllFileName );
+    wasSuccessful = runDllTest( &suite, argv+2, argc-2 );
+  }
+  catch ( CppUnit::DynamicLibraryManagerException &e )
+  {
+    TCERR  << "Failed to load test plug-in:"  <<  std::endl
+           << toVariableString( e.what() )  << std::endl;
+  }
+
+  return wasSuccessful ? successReturnCode : failureReturnCode;
+}
+
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/DllPlugInTester/DllPlugInTester.dsp b/lib/cppunit-1.10.0/src/msvc6/DllPlugInTester/DllPlugInTester.dsp
new file mode 100644 (file)
index 0000000..2f831f0
--- /dev/null
@@ -0,0 +1,150 @@
+# Microsoft Developer Studio Project File - Name="DllPlugInTester" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
+\r
+CFG=DllPlugInTester - Win32 Debug Unicode\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "DllPlugInTester.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "DllPlugInTester.mak" CFG="DllPlugInTester - Win32 Debug Unicode"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "DllPlugInTester - Win32 Release" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "DllPlugInTester - Win32 Debug" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "DllPlugInTester - Win32 Release Unicode" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "DllPlugInTester - Win32 Debug Unicode" (based on "Win32 (x86) Console Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "DllPlugInTester - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O1 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\lib\DllPlugInTester.exe" /libpath:"../../../lib"\r
+\r
+!ELSEIF  "$(CFG)" == "DllPlugInTester - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\lib\DllPlugInTesterd.exe" /pdbtype:sept /libpath:"../../../lib"\r
+\r
+!ELSEIF  "$(CFG)" == "DllPlugInTester - Win32 Release Unicode"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "DllPlugInTester___Win32_Release_Unicode"\r
+# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Release_Unicode"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "ReleaseUnicode"\r
+# PROP Intermediate_Dir "ReleaseUnicode"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c\r
+# SUBTRACT BASE CPP /YX /Yc /Yu\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O1 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /libpath:"../../../lib"\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunit.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\lib\DllPlugInTesteru.exe" /libpath:"../../../lib"\r
+\r
+!ELSEIF  "$(CFG)" == "DllPlugInTester - Win32 Debug Unicode"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "DllPlugInTester___Win32_Debug_Unicode"\r
+# PROP BASE Intermediate_Dir "DllPlugInTester___Win32_Debug_Unicode"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "DebugUnicode"\r
+# PROP Intermediate_Dir "DebugUnicode"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c\r
+# SUBTRACT BASE CPP /YX /Yc /Yu\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /debug /machine:I386 /out:"Debug/DllPlugInTesterd.exe" /pdbtype:sept /libpath:"../../../lib"\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cppunitd.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\lib\DllPlugInTesterud.exe" /pdbtype:sept /libpath:"../../../lib"\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "DllPlugInTester - Win32 Release"\r
+# Name "DllPlugInTester - Win32 Debug"\r
+# Name "DllPlugInTester - Win32 Release Unicode"\r
+# Name "DllPlugInTester - Win32 Debug Unicode"\r
+# Begin Source File\r
+\r
+SOURCE=.\DllPlugInTester.cpp\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/ReadMe.txt b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/ReadMe.txt
new file mode 100644 (file)
index 0000000..fac5260
--- /dev/null
@@ -0,0 +1,88 @@
+========================================================================
+       MICROSOFT FOUNDATION CLASS LIBRARY : TestPlugInRunner
+========================================================================
+
+
+AppWizard has created this TestPlugInRunner application for you.  This application
+not only demonstrates the basics of using the Microsoft Foundation classes
+but is also a starting point for writing your application.
+
+This file contains a summary of what you will find in each of the files that
+make up your TestPlugInRunner application.
+
+TestPlugInRunner.dsp
+    This file (the project file) contains information at the project level and
+    is used to build a single project or subproject. Other users can share the
+    project (.dsp) file, but they should export the makefiles locally.
+
+TestPlugInRunner.h
+    This is the main header file for the application.  It includes other
+    project specific headers (including Resource.h) and declares the
+    TestPlugInRunnerApp application class.
+
+TestPlugInRunner.cpp
+    This is the main application source file that contains the application
+    class TestPlugInRunnerApp.
+
+TestPlugInRunner.rc
+    This is a listing of all of the Microsoft Windows resources that the
+    program uses.  It includes the icons, bitmaps, and cursors that are stored
+    in the RES subdirectory.  This file can be directly edited in Microsoft
+       Visual C++.
+
+TestPlugInRunner.clw
+    This file contains information used by ClassWizard to edit existing
+    classes or add new classes.  ClassWizard also uses this file to store
+    information needed to create and edit message maps and dialog data
+    maps and to create prototype member functions.
+
+res\TestPlugInRunner.ico
+    This is an icon file, which is used as the application's icon.  This
+    icon is included by the main resource file TestPlugInRunner.rc.
+
+res\TestPlugInRunner.rc2
+    This file contains resources that are not edited by Microsoft 
+       Visual C++.  You should place all resources not editable by
+       the resource editor in this file.
+
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+AppWizard creates one dialog class:
+
+TestPlugInRunnerDlg.h, TestPlugInRunnerDlg.cpp - the dialog
+    These files contain your TestPlugInRunnerDlg class.  This class defines
+    the behavior of your application's main dialog.  The dialog's
+    template is in TestPlugInRunner.rc, which can be edited in Microsoft
+       Visual C++.
+
+
+/////////////////////////////////////////////////////////////////////////////
+Other standard files:
+
+StdAfx.h, StdAfx.cpp
+    These files are used to build a precompiled header (PCH) file
+    named TestPlugInRunner.pch and a precompiled types file named StdAfx.obj.
+
+Resource.h
+    This is the standard header file, which defines new resource IDs.
+    Microsoft Visual C++ reads and updates this file.
+
+/////////////////////////////////////////////////////////////////////////////
+Other notes:
+
+AppWizard uses "TODO:" to indicate parts of the source code you
+should add to or customize.
+
+If your application uses MFC in a shared DLL, and your application is 
+in a language other than the operating system's current language, you
+will need to copy the corresponding localized resources MFC42XXX.DLL
+from the Microsoft Visual C++ CD-ROM onto the system or system32 directory,
+and rename it to be MFCLOC.DLL.  ("XXX" stands for the language abbreviation.
+For example, MFC42DEU.DLL contains resources translated to German.)  If you
+don't do this, some of the UI elements of your application will remain in the
+language of the operating system.
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/Resource.h b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/Resource.h
new file mode 100644 (file)
index 0000000..e9b1bea
--- /dev/null
@@ -0,0 +1,49 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by TestPlugInRunner.rc
+//
+#define IDS_ERROR_SELECT_TEST           1
+#define IDS_ERRORLIST_TYPE              2
+#define IDS_ERRORLIST_NAME              3
+#define IDS_ERRORLIST_FAILED_CONDITION  4
+#define IDS_ERRORLIST_LINE_NUMBER       5
+#define IDS_ERRORLIST_FILE_NAME         6
+#define IDR_MAINFRAME                   128
+#define IDR_ACCELERATOR_TEST_RUNNER     131
+#define IDC_LIST                        1000
+#define ID_RUN                          1001
+#define ID_STOP                         1002
+#define IDC_PROGRESS                    1003
+#define IDC_INDICATOR                   1004
+#define IDC_COMBO_TEST                  1005
+#define IDC_STATIC_RUNS                 1007
+#define IDC_STATIC_ERRORS               1008
+#define IDC_STATIC_FAILURES             1009
+#define IDC_EDIT_TIME                   1010
+#define IDC_BUTTON1                     1011
+#define IDC_BROWSE_TEST                 1011
+#define IDC_TREE_TEST                   1012
+#define IDC_DETAILS                     1012
+#define IDC_CHECK_AUTORUN               1013
+#define IDC_RUNNING_TEST_CASE_LABEL     1016
+#define IDC_STATIC_TEST_NAME            1017
+#define IDC_STATIC_PROGRESS             1018
+#define IDC_STATIC_LABEL_RUNS           1019
+#define IDC_STATIC_LABEL_ERRORS         1020
+#define IDC_STATIC_LABEL_FAILURES       1021
+#define IDC_STATIC_PROGRESS_BAR         1022
+#define IDC_STATIC_DETAILS              1023
+#define IDC_CHOOSE_DLL                  1040
+#define IDC_RELOAD_DLL                  1041
+#define ID_QUIT_APPLICATION             32771
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        130
+#define _APS_NEXT_COMMAND_VALUE         32772
+#define _APS_NEXT_CONTROL_VALUE         1042
+#define _APS_NEXT_SYMED_VALUE           103
+#endif
+#endif
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/StdAfx.cpp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/StdAfx.cpp
new file mode 100644 (file)
index 0000000..f0e3942
--- /dev/null
@@ -0,0 +1,8 @@
+// stdafx.cpp : source file that includes just the standard includes
+//     TestPlugInRunner.pch will be the pre-compiled header
+//     stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/StdAfx.h b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/StdAfx.h
new file mode 100644 (file)
index 0000000..7d2a6ea
--- /dev/null
@@ -0,0 +1,29 @@
+// stdafx.h : include file for standard system include files,
+//  or project specific include files that are used frequently, but
+//      are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__2CCC624C_C151_496F_A333_28951EA9A8D3__INCLUDED_)
+#define AFX_STDAFX_H__2CCC624C_C151_496F_A333_28951EA9A8D3__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#define VC_EXTRALEAN           // Exclude rarely-used stuff from Windows headers
+
+#pragma warning( disable : 4786 )  // warning of hell: debug symbol too long...
+
+#include <afxwin.h>         // MFC core and standard components
+#include <afxext.h>         // MFC extensions
+#include <afxdisp.h>        // MFC Automation classes
+#include <afxdtctl.h>          // MFC support for Internet Explorer 4 Common Controls
+#ifndef _AFX_NO_AFXCMN_SUPPORT
+#include <afxcmn.h>                    // MFC support for Windows Common Controls
+#endif // _AFX_NO_AFXCMN_SUPPORT
+
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__2CCC624C_C151_496F_A333_28951EA9A8D3__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugIn.cpp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugIn.cpp
new file mode 100644 (file)
index 0000000..7fd0574
--- /dev/null
@@ -0,0 +1,93 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file TestPlugIn.cpp for class TestPlugIn
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/06/23
+// //////////////////////////////////////////////////////////////////////////
+
+#include "StdAfx.h"
+#include "TestPlugIn.h"
+#include <cppunit/TestCase.h>
+#include <cppunit/plugin/DynamicLibraryManagerException.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include "TestPlugInException.h"
+
+
+TestPlugIn::TestPlugIn( const std::string fileName ) :
+    m_fileName( fileName )
+{
+  m_copyFileName = m_fileName + "-hotrunner";
+}
+
+
+TestPlugIn::~TestPlugIn()
+{
+  deleteDllCopy();
+}
+
+
+void 
+TestPlugIn::deleteDllCopy()
+{
+  ::DeleteFile( m_copyFileName.c_str() );
+}
+
+
+class NullTest : public CPPUNIT_NS::TestCase
+{
+public:
+  NullTest( std::string name ) : TestCase( name ) 
+  {
+  }
+
+  ~NullTest() 
+  {
+  }
+
+  void runTests()
+  {
+    CPPUNIT_ASSERT_MESSAGE( "Failed to load" + getName(), FALSE );
+  }
+};
+
+
+CPPUNIT_NS::Test *
+TestPlugIn::makeTest()
+{
+  reloadDll();
+  return CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest();
+}
+
+
+void 
+TestPlugIn::reloadDll()
+{
+  m_manager.unload( m_copyFileName );
+  makeDllCopy();
+  loadDll();
+}
+
+
+void 
+TestPlugIn::makeDllCopy()
+{
+  if ( ::CopyFile( m_fileName.c_str(), m_copyFileName.c_str(), FALSE ) == FALSE )
+  {
+    throw TestPlugInException( "Failed to copy DLL" + m_fileName +
+        " to " + m_copyFileName, TestPlugInException::failedToCopyDll );
+  }
+}
+
+
+void 
+TestPlugIn::loadDll()
+{
+  try
+  {
+    m_manager.load( m_copyFileName );
+  }
+  catch ( CPPUNIT_NS::DynamicLibraryManagerException &e )
+  {
+    throw TestPlugInException( e.what(), 
+                               TestPlugInException::failedToLoadDll );
+  }
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugIn.h b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugIn.h
new file mode 100644 (file)
index 0000000..73b0d14
--- /dev/null
@@ -0,0 +1,68 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestPlugIn.h for class TestPlugIn
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/06/23
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTPLUGIN_H
+#define TESTPLUGIN_H
+
+#include <string>
+#include <cppunit/test.h>
+#include <cppunit/plugin/PlugInManager.h>
+
+
+/*! \class TestPlugIn
+ * \brief This class represents a test plug-in.
+ */
+class TestPlugIn
+{
+public:
+  /*! Constructs a TestPlugIn object.
+   */
+  TestPlugIn( const std::string fileName );
+
+  /*! Destructor.
+   */
+  virtual ~TestPlugIn();
+
+  /*! Obtains a new test from a new copy of the dll.
+   * \exception TestPlugInException if a error occurs.
+   */
+  CPPUNIT_NS::Test *makeTest();
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestPlugIn( const TestPlugIn &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestPlugIn &copy );
+
+  void reloadDll();
+  void deleteDllCopy();
+
+  /*! Copy m_fileName DLL to m_copyFileName.
+   *
+   * Working on a copy of the DLL allow to update the original DLL.
+   * \exception TestPlugInException on copy failure.
+   */
+  void makeDllCopy();
+
+  /*! Load the DLL.
+   * \exception TestPlugInException on dll loading failure.
+   */
+  void loadDll();
+
+private:
+  std::string m_fileName;
+  std::string m_copyFileName;
+  CPPUNIT_NS::PlugInManager m_manager;
+};
+
+
+
+// Inlines methods for TestPlugIn:
+// -------------------------------
+
+
+
+#endif  // TESTPLUGIN_H
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInException.cpp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInException.cpp
new file mode 100644 (file)
index 0000000..f006c0f
--- /dev/null
@@ -0,0 +1,43 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file TestPlugInException.cpp for class TestPlugInException
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/06/23
+// //////////////////////////////////////////////////////////////////////////
+
+#include "StdAfx.h"
+#include "TestPlugInException.h"
+
+
+TestPlugInException::TestPlugInException( std::string message, 
+                                          Cause cause ) : 
+    runtime_error( message ),
+    m_cause( cause )
+{
+}
+
+
+TestPlugInException::TestPlugInException( const TestPlugInException &copy ) : 
+    runtime_error( copy )
+{
+}
+
+
+TestPlugInException::~TestPlugInException()
+{
+}
+
+
+TestPlugInException &
+TestPlugInException::operator =( const TestPlugInException &copy )
+{
+  runtime_error::operator =( copy );
+  m_cause = copy.m_cause;
+  return *this;
+}
+
+
+TestPlugInException::Cause 
+TestPlugInException::getCause() const
+{
+  return m_cause;
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInException.h b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInException.h
new file mode 100644 (file)
index 0000000..15005dc
--- /dev/null
@@ -0,0 +1,60 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestPlugInException.h for class TestPlugInException
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/06/23
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTPLUGINEXCEPTION_H
+#define TESTPLUGINEXCEPTION_H
+
+#include <stdexcept>
+#include <string>
+
+
+/*! \class TestPlugInException
+ * \brief This class represents a failure of using the test plug-in.
+ */
+class TestPlugInException : public std::runtime_error
+{
+public:
+  enum Cause
+  {
+    failedToLoadDll =0,
+    failedToCopyDll,
+    failedToGetInterfaceFunction,
+    failedToMakeTest
+  };
+
+  /*! Constructs a TestPlugInException object.
+   */
+  TestPlugInException( std::string message, 
+                       Cause cause );
+
+  /*! Copy constructor.
+   * @param copy Object to copy.
+   */
+  TestPlugInException( const TestPlugInException &copy );
+
+  /*! Destructor.
+   */
+  virtual ~TestPlugInException();
+
+  /*! Copy operator.
+   * @param copy Object to copy.
+   * @return Reference on this object.
+   */
+  TestPlugInException &operator =( const TestPlugInException &copy );
+
+  Cause getCause() const;
+
+private:
+  Cause m_cause;
+};
+
+
+
+// Inlines methods for TestPlugInException:
+// ----------------------------------------
+
+
+
+#endif  // TESTPLUGINEXCEPTION_H
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunner.dsp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunner.dsp
new file mode 100644 (file)
index 0000000..f12d11e
--- /dev/null
@@ -0,0 +1,472 @@
+# Microsoft Developer Studio Project File - Name="TestPlugInRunner" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Application" 0x0101\r
+\r
+CFG=TestPlugInRunner - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "TestPlugInRunner.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "TestPlugInRunner.mak" CFG="TestPlugInRunner - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "TestPlugInRunner - Win32 Release" (based on "Win32 (x86) Application")\r
+!MESSAGE "TestPlugInRunner - Win32 Debug" (based on "Win32 (x86) Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "TestPlugInRunner - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 6\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 6\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "../../include" /I "../TestRunner" /I "..\..\..\include" /I "..\..\..\include\msvc6" /I "..\TestRunner" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /D "CPPUNIT_SUBCLASSING_TESTRUNNERDLG_BUILD" /D "CPPUNIT_DLL" /Yu"stdafx.h" /FD /c\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x40c /d "NDEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386\r
+# ADD LINK32 cppunit_dll.lib winmm.lib /nologo /subsystem:windows /machine:I386 /libpath:"../../../lib/"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\TestPlugInRunner.exe\r
+TargetName=TestPlugInRunner\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\..\lib\$(TargetName).exe\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "TestPlugInRunner - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 6\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 6\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /I "..\TestRunner" /D "_DEBUG" /D "CPPUNIT_TESTPLUGINRUNNER_BUILD" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /D "CPPUNIT_SUBCLASSING_TESTRUNNERDLG_BUILD" /D "CPPUNIT_DLL" /Yu"stdafx.h" /FD /GZ /c\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x40c /d "_DEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 cppunitd_dll.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /out:"Debug/TestPlugInRunnerd.exe" /pdbtype:sept /libpath:"../../../lib/"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\TestPlugInRunnerd.exe\r
+TargetName=TestPlugInRunnerd\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\..\lib\$(TargetName).exe\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "TestPlugInRunner - Win32 Release"\r
+# Name "TestPlugInRunner - Win32 Debug"\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# Begin Source File\r
+\r
+SOURCE=.\res\errortype.bmp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\res\ico00001.ico\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\res\ico00001.ico\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\res\ico00002.ico\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\res\idr_test.ico\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\res\test_type.bmp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\res\test_type.bmp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\res\TestPlugInRunner.ico\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\res\TestPlugInRunner.rc2\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\res\tfwkui_r.bmp\r
+# End Source File\r
+# End Group\r
+# Begin Group "Gui"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\Resource.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StdAfx.cpp\r
+# ADD CPP /Yc"stdafx.h"\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StdAfx.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPlugInRunner.rc\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPlugInRunnerApp.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPlugInRunnerApp.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPlugInRunnerDlg.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPlugInRunnerDlg.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Interface"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\include\msvc6\testrunner\TestPlugInInterface.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Models"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPlugIn.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPlugIn.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPlugInException.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPlugInException.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPlugInRunnerModel.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestPlugInRunnerModel.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "DLL"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\lib\cppunit_dll.dll\r
+\r
+!IF  "$(CFG)" == "TestPlugInRunner - Win32 Release"\r
+\r
+# Begin Custom Build - Updating $(InputPath)\r
+IntDir=.\Release\r
+InputPath=..\..\..\lib\cppunit_dll.dll\r
+InputName=cppunit_dll\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ELSEIF  "$(CFG)" == "TestPlugInRunner - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\lib\cppunitd_dll.dll\r
+\r
+!IF  "$(CFG)" == "TestPlugInRunner - Win32 Release"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "TestPlugInRunner - Win32 Debug"\r
+\r
+# Begin Custom Build - Updating $(InputPath)\r
+IntDir=.\Debug\r
+InputPath=..\..\..\lib\cppunitd_dll.dll\r
+InputName=cppunitd_dll\r
+\r
+"$(IntDir)\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r
+       copy $(InputPath) $(IntDir)\$(InputName).dll\r
+\r
+# End Custom Build\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\lib\testrunner.dll\r
+# PROP Exclude_From_Build 1\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\lib\testrunnerd.dll\r
+# PROP Exclude_From_Build 1\r
+# End Source File\r
+# End Group\r
+# Begin Group "TestRunner-Was-In-Dll"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Group "UserInterface"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Group "DynamicWindow"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCDynamicBar.cpp\r
+# PROP Exclude_From_Build 1\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCDynamicBar.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCDynamicControlsManager.cpp\r
+# PROP Exclude_From_Build 1\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCDynamicControlsManager.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCDynamicDialog.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCDynamicDialog.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCDynamicFormView.cpp\r
+# PROP Exclude_From_Build 1\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCDynamicFormView.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCDynamicPropSheet.cpp\r
+# PROP Exclude_From_Build 1\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCDynamicPropSheet.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCDynamicWnd.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCDynamicWnd.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCDynamicWndEx.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCDynamicWndEx.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCSizeIconCtrl.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\cdxCSizeIconCtrl.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\SizeCBar.cpp\r
+# PROP Exclude_From_Build 1\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\DynamicWindow\SizeCBar.h\r
+# End Source File\r
+# End Group\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\ListCtrlFormatter.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\ListCtrlFormatter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\ListCtrlSetter.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\ListCtrlSetter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\MsDevCallerListCtrl.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\MsDevCallerListCtrl.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\ProgressBar.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\ProgressBar.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\ResourceLoaders.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\ResourceLoaders.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\TestRunnerDlg.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\TestRunnerDlg.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\TreeHierarchyDlg.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\TreeHierarchyDlg.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Components"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\ActiveTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\ActiveTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\MfcSynchronizationObject.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\TestRunnerModel.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\TestRunnerModel.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "NewFiles"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\MostRecentTests.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\testrunner\MostRecentTests.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\include\msvc6\DSPlugin\TestRunnerDSPluginVC6_i.c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# End Group\r
+# End Group\r
+# Begin Source File\r
+\r
+SOURCE=.\ReadMe.txt\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunner.rc b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunner.rc
new file mode 100644 (file)
index 0000000..ea866ae
--- /dev/null
@@ -0,0 +1,268 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+CPP_UNIT_TEST_RUNNER_PLUG_IN_IDD_TEST_PLUG_IN_RUNNER DIALOG DISCARDABLE  0, 0, 330, 226
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Test plug-in runner"
+FONT 8, "MS Sans Serif"
+BEGIN
+    PUSHBUTTON      "&Choose DLL",IDC_CHOOSE_DLL,273,72,50,14
+    PUSHBUTTON      "Re&load DLL",IDC_RELOAD_DLL,273,88,50,14
+    LTEXT           "&Test:",IDC_STATIC_TEST_NAME,7,7,17,8
+    COMBOBOX        IDC_COMBO_TEST,28,7,235,157,CBS_DROPDOWNLIST | 
+                    WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "&Browse",IDC_BROWSE_TEST,273,7,50,14
+    DEFPUSHBUTTON   "&Run",ID_RUN,273,23,50,14
+    LTEXT           "Progress:",IDC_STATIC_PROGRESS,7,23,33,9
+    LTEXT           "none",IDC_RUNNING_TEST_CASE_LABEL,43,23,220,9
+    LTEXT           "Progress Bar",IDC_STATIC_PROGRESS_BAR,7,34,256,15,NOT 
+                    WS_VISIBLE
+    LTEXT           "Runs:",IDC_STATIC_LABEL_RUNS,7,55,29,10
+    LTEXT           "0",IDC_STATIC_RUNS,48,55,30,8
+    LTEXT           "Errors:",IDC_STATIC_LABEL_ERRORS,89,55,29,10
+    LTEXT           "0",IDC_STATIC_ERRORS,127,55,19,8
+    LTEXT           "Failures:",IDC_STATIC_LABEL_FAILURES,174,55,29,10
+    LTEXT           "0",IDC_STATIC_FAILURES,212,55,19,8
+    LTEXT           "&Errors and Failures:",IDC_STATIC,7,70,67,9
+    CONTROL         "List1",IDC_LIST,"SysListView32",LVS_REPORT | 
+                    LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | 
+                    WS_TABSTOP,7,81,257,60
+    LTEXT           "&Details:",IDC_STATIC_DETAILS,7,145,24,8
+    EDITTEXT        IDC_DETAILS,7,156,316,48,ES_MULTILINE | ES_AUTOVSCROLL | 
+                    ES_AUTOHSCROLL | ES_READONLY
+    CONTROL         "&Autorun at startup",IDC_CHECK_AUTORUN,"Button",
+                    BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,273,46,49,19
+    PUSHBUTTON      "&Stop",ID_STOP,273,112,50,14
+    PUSHBUTTON      "&Close",IDOK,273,128,50,14
+    EDITTEXT        IDC_EDIT_TIME,7,206,316,13,ES_AUTOHSCROLL | ES_READONLY
+END
+
+CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TEST_HIERARCHY DIALOG DISCARDABLE  0, 0, 259, 250
+STYLE DS_MODALFRAME | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU
+CAPTION "Test hierarchy"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Select",IDOK,202,7,50,14
+    CONTROL         "Tree1",IDC_TREE_TEST,"SysTreeView32",TVS_HASBUTTONS | 
+                    TVS_HASLINES | TVS_LINESATROOT | TVS_FULLROWSELECT | 
+                    WS_BORDER | WS_TABSTOP,7,7,189,236
+    PUSHBUTTON      "&Close",IDCANCEL,202,34,50,14
+END
+
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904B0"
+        BEGIN
+            VALUE "CompanyName", "\0"
+            VALUE "FileDescription", "TestPlugInRunner MFC Application\0"
+            VALUE "FileVersion", "1, 0, 0, 1\0"
+            VALUE "InternalName", "TestPlugInRunner\0"
+            VALUE "LegalCopyright", "Copyright (C) 2001\0"
+            VALUE "LegalTrademarks", "\0"
+            VALUE "OriginalFilename", "TestPlugInRunner.EXE\0"
+            VALUE "ProductName", "TestPlugInRunner Application\0"
+            VALUE "ProductVersion", "1, 0, 0, 1\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1200
+    END
+END
+
+#endif    // !_MAC
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE 
+BEGIN
+    "CPP_UNIT_TEST_RUNNER_PLUG_IN_IDD_TEST_PLUG_IN_RUNNER", DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 323
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 219
+    END
+
+    "CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TEST_HIERARCHY", DIALOG
+    BEGIN
+        LEFTMARGIN, 7
+        RIGHTMARGIN, 252
+        TOPMARGIN, 7
+        BOTTOMMARGIN, 243
+    END
+END
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDR_ACCELERATOR_TEST_RUNNER ACCELERATORS DISCARDABLE 
+BEGIN
+    "Q",            ID_QUIT_APPLICATION,    VIRTKEY, NOINVERT
+    VK_SPACE,       ID_RUN,                 VIRTKEY, NOINVERT
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+CPP_UNIT_TEST_RUNNER_IDB_ERROR_TYPE          BITMAP  DISCARDABLE     "res\\errortype.bmp"
+CPP_UNIT_TEST_RUNNER_IDB_TEST_TYPE           BITMAP  DISCARDABLE     "res\\test_type.bmp"
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// French (France) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
+#ifdef _WIN32
+LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
+    "#define _AFX_NO_OLE_RESOURCES\r\n"
+    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
+    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
+    "\r\n"
+    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
+    "#ifdef _WIN32\r\n"
+    "LANGUAGE 9, 1\r\n"
+    "#pragma code_page(1252)\r\n"
+    "#endif //_WIN32\r\n"
+    "#include ""res\\TestPlugInRunner.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
+    "#include ""afxres.rc""         // Standard components\r\n"
+    "#endif\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+CPP_UNIT_TEST_RUNNER_PLUG_IN_IDR_TEST_PLUGIN_RUNNER ICON    DISCARDABLE     "res\\TestPlugInRunner.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_ERROR_SELECT_TEST   "You must select a test!"
+    IDS_ERRORLIST_TYPE      "Type"
+    IDS_ERRORLIST_NAME      "Name"
+    IDS_ERRORLIST_FAILED_CONDITION "Failed Condition"
+    IDS_ERRORLIST_LINE_NUMBER "Line Number"
+    IDS_ERRORLIST_FILE_NAME "File Name"
+END
+
+#endif    // French (France) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#define _AFX_NO_SPLITTER_RESOURCES
+#define _AFX_NO_OLE_RESOURCES
+#define _AFX_NO_TRACKER_RESOURCES
+#define _AFX_NO_PROPERTY_RESOURCES
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE 9, 1
+#pragma code_page(1252)
+#endif //_WIN32
+#include "res\TestPlugInRunner.rc2"  // non-Microsoft Visual C++ edited resources
+#include "afxres.rc"         // Standard components
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerApp.cpp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerApp.cpp
new file mode 100644 (file)
index 0000000..75d3d8c
--- /dev/null
@@ -0,0 +1,84 @@
+// TestPlugInRunner.cpp : Defines the class behaviors for the application.
+//
+
+#include "stdafx.h"
+#include "TestPlugInRunnerApp.h"
+#include "TestPlugInRunnerDlg.h"
+#include "TestPlugInRunnerModel.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+HINSTANCE g_testRunnerResource;
+
+/////////////////////////////////////////////////////////////////////////////
+// TestPlugInRunnerApp
+
+BEGIN_MESSAGE_MAP(TestPlugInRunnerApp, CWinApp)
+       //{{AFX_MSG_MAP(TestPlugInRunnerApp)
+               // NOTE - the ClassWizard will add and remove mapping macros here.
+               //    DO NOT EDIT what you see in these blocks of generated code!
+       //}}AFX_MSG
+       ON_COMMAND(ID_HELP, CWinApp::OnHelp)
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// TestPlugInRunnerApp construction
+
+TestPlugInRunnerApp::TestPlugInRunnerApp()
+{
+       // TODO: add construction code here,
+       // Place all significant initialization in InitInstance
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// The one and only TestPlugInRunnerApp object
+
+TestPlugInRunnerApp theApp;
+
+/////////////////////////////////////////////////////////////////////////////
+// TestPlugInRunnerApp initialization
+
+BOOL TestPlugInRunnerApp::InitInstance()
+{
+       AfxEnableControlContainer();
+
+       // Standard initialization
+       // If you are not using these features and wish to reduce the size
+       //  of your final executable, you should remove from the following
+       //  the specific initialization routines you do not need.
+
+#ifdef _AFXDLL
+# if _MSC_VER < 1300   // vc6
+       Enable3dControls();                     // Call this when using MFC in a shared DLL
+# endif
+#else
+       Enable3dControlsStatic();       // Call this when linking to MFC statically
+#endif
+
+  g_testRunnerResource = AfxGetResourceHandle();
+
+  SetRegistryKey(_T("CppUnit Test Plug-In Runner"));
+
+  TestPlugInRunnerModel model;
+       TestPlugInRunnerDlg dlg( &model );
+       m_pMainWnd = &dlg;
+       int nResponse = dlg.DoModal();
+       if (nResponse == IDOK)
+       {
+               // TODO: Place code here to handle when the dialog is
+               //  dismissed with OK
+       }
+       else if (nResponse == IDCANCEL)
+       {
+               // TODO: Place code here to handle when the dialog is
+               //  dismissed with Cancel
+       }
+
+       // Since the dialog has been closed, return FALSE so that we exit the
+       //  application, rather than start the application's message pump.
+       return FALSE;
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerApp.h b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerApp.h
new file mode 100644 (file)
index 0000000..fc022d2
--- /dev/null
@@ -0,0 +1,49 @@
+// TestPlugInRunner.h : main header file for the TESTPLUGINRUNNER application
+//
+
+#if !defined(AFX_TESTPLUGINRUNNER_H__C64A0384_27BB_4A9A_854C_B19BF07A81F8__INCLUDED_)
+#define AFX_TESTPLUGINRUNNER_H__C64A0384_27BB_4A9A_854C_B19BF07A81F8__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#ifndef __AFXWIN_H__
+       #error include 'stdafx.h' before including this file for PCH
+#endif
+
+#include "resource.h"          // main symbols
+
+/////////////////////////////////////////////////////////////////////////////
+// TestPlugInRunnerApp:
+// See TestPlugInRunner.cpp for the implementation of this class
+//
+
+class TestPlugInRunnerApp : public CWinApp
+{
+public:
+       TestPlugInRunnerApp();
+
+// Overrides
+       // ClassWizard generated virtual function overrides
+       //{{AFX_VIRTUAL(TestPlugInRunnerApp)
+       public:
+       virtual BOOL InitInstance();
+       //}}AFX_VIRTUAL
+
+// Implementation
+
+       //{{AFX_MSG(TestPlugInRunnerApp)
+               // NOTE - the ClassWizard will add and remove member functions here.
+               //    DO NOT EDIT what you see in these blocks of generated code !
+       //}}AFX_MSG
+       DECLARE_MESSAGE_MAP()
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_TESTPLUGINRUNNER_H__C64A0384_27BB_4A9A_854C_B19BF07A81F8__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.cpp
new file mode 100644 (file)
index 0000000..bf9e2a7
--- /dev/null
@@ -0,0 +1,197 @@
+// TestPlugInRunnerDlg.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "TestPlugInRunnerDlg.h"
+#include "TestPlugIn.h"
+#include "TestPlugInException.h"
+#include <algorithm>
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// TestPlugInRunnerDlg dialog
+
+TestPlugInRunnerDlg::TestPlugInRunnerDlg( TestPlugInRunnerModel *model,
+                                          CWnd* pParent ) 
+    : TestRunnerDlg( model, "CPP_UNIT_TEST_RUNNER_PLUG_IN_IDD_TEST_PLUG_IN_RUNNER", pParent )
+{
+  //{{AFX_DATA_INIT(TestPlugInRunnerDlg)
+         // NOTE: the ClassWizard will add member initialization here
+  //}}AFX_DATA_INIT
+  // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
+  m_hIcon = AfxGetApp()->LoadIcon("CPP_UNIT_TEST_RUNNER_PLUG_IN_IDR_TEST_PLUGIN_RUNNER");
+}
+
+
+void 
+TestPlugInRunnerDlg::DoDataExchange( CDataExchange* pDX )
+{
+  TestRunnerDlg::DoDataExchange(pDX);
+  //{{AFX_DATA_MAP(TestPlugInRunnerDlg)
+         // NOTE: the ClassWizard will add DDX and DDV calls here
+  //}}AFX_DATA_MAP
+}
+
+BEGIN_MESSAGE_MAP(TestPlugInRunnerDlg, TestRunnerDlg)
+  //{{AFX_MSG_MAP(TestPlugInRunnerDlg)
+  ON_WM_PAINT()
+  ON_WM_QUERYDRAGICON()
+  ON_BN_CLICKED(IDC_CHOOSE_DLL, OnChooseDll)
+  ON_BN_CLICKED(IDC_RELOAD_DLL, OnReloadDll)
+  //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// TestPlugInRunnerDlg message handlers
+
+BOOL TestPlugInRunnerDlg::OnInitDialog()
+{
+  TestRunnerDlg::OnInitDialog();
+
+  // Set the icon for this dialog.  The framework does this automatically
+  //  when the application's main window is not a dialog
+  SetIcon(m_hIcon, TRUE);                      // Set big icon
+  SetIcon(m_hIcon, FALSE);             // Set small icon
+
+  // TODO: Add extra initialization here
+  loadPluginIfNesseccary();
+
+  return TRUE;  // return TRUE  unless you set the focus to a control
+}
+
+// If you add a minimize button to your dialog, you will need the code below
+//  to draw the icon.  For MFC applications using the document/view model,
+//  this is automatically done for you by the framework.
+
+void TestPlugInRunnerDlg::OnPaint() 
+{
+  if (IsIconic())
+  {
+    CPaintDC dc(this); // device context for painting
+
+    SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
+
+    // Center icon in client rectangle
+    int cxIcon = GetSystemMetrics(SM_CXICON);
+    int cyIcon = GetSystemMetrics(SM_CYICON);
+    CRect rect;
+    GetClientRect(&rect);
+    int x = (rect.Width() - cxIcon + 1) / 2;
+    int y = (rect.Height() - cyIcon + 1) / 2;
+
+    // Draw the icon
+    dc.DrawIcon(x, y, m_hIcon);
+  }
+  else
+  {
+    TestRunnerDlg::OnPaint();
+  }
+}
+
+
+// The system calls this to obtain the cursor to display while the user drags
+//  the minimized window.
+HCURSOR TestPlugInRunnerDlg::OnQueryDragIcon()
+{
+  return (HCURSOR) m_hIcon;
+}
+
+
+TestPlugInRunnerModel &
+TestPlugInRunnerDlg::plugInModel()
+{
+  return *static_cast<TestPlugInRunnerModel*>( m_model );
+}
+
+
+void 
+TestPlugInRunnerDlg::OnChooseDll() 
+{
+  CFileDialog dlg( TRUE, "*.dll", "", 0, 
+                   "Test Plug-in (*.dll)|*.dll|All Files (*.*)|*.*||",
+                   this );
+  if ( dlg.DoModal() != IDOK )
+    return;
+
+  try
+  {
+    loadDll(std::string(dlg.GetPathName()));
+  }
+  catch ( TestPlugInException &e )
+  {
+    AfxMessageBox( e.what() );
+  }
+}
+
+
+void 
+TestPlugInRunnerDlg::OnReloadDll() 
+{
+  reset();
+  plugInModel().reloadPlugIn();
+}
+
+
+std::list<std::string> 
+TestPlugInRunnerDlg::getCommandLineArguments()
+{
+  int argc;
+  LPWSTR *argv = ::CommandLineToArgvW( ::GetCommandLineW(), &argc );
+
+  std::list<std::string> arguments;
+  for( int index = 0; index < argc; index++ ) 
+    arguments.push_back( std::string( CString( argv[index] ) ) );
+
+  ::GlobalFree( argv );
+
+  return arguments;
+} 
+
+
+void 
+TestPlugInRunnerDlg::loadPluginIfNesseccary()
+{
+  std::list<std::string> argv = getCommandLineArguments();
+  std::list<std::string>::iterator iter = std::find( argv.begin(), 
+                                                     argv.end(), 
+                                                     std::string( "-testsuite" ) );
+
+  if ( iter == argv.end() ) 
+    return;
+
+  try 
+  {
+    loadDll( *++iter );
+  } 
+  catch( std::exception &e ) 
+  {
+    AfxMessageBox( e.what() );
+  }
+}
+
+
+void 
+TestPlugInRunnerDlg::loadDll( std::string path )
+{
+  TestPlugIn *plugIn = new TestPlugIn( path );
+  plugInModel().setPlugIn( plugIn );
+
+  m_model->selectHistoryTest( plugInModel().rootTest() );
+  updateHistoryCombo();
+}
+
+
+void 
+TestPlugInRunnerDlg::initializeLayout()
+{
+  TestRunnerDlg::initializeLayout();
+
+  AddSzXControl( IDC_CHOOSE_DLL, mdRepos );
+  AddSzXControl( IDC_RELOAD_DLL, mdRepos );
+
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerDlg.h
new file mode 100644 (file)
index 0000000..8772a0a
--- /dev/null
@@ -0,0 +1,67 @@
+// TestPlugInRunnerDlg.h : header file
+//
+
+#if !defined(AFX_TESTPLUGINRUNNERDLG_H__AF6DB5BC_25E5_4459_8A54_9704298F64FF__INCLUDED_)
+#define AFX_TESTPLUGINRUNNERDLG_H__AF6DB5BC_25E5_4459_8A54_9704298F64FF__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#include "resource.h"
+#include <TestRunnerDlg.h>
+#include <TestRunnerModel.h>
+#include "TestPlugInRunnerModel.h"
+#include <list>
+#include <string>
+
+/////////////////////////////////////////////////////////////////////////////
+// TestPlugInRunnerDlg dialog
+
+class TestPlugInRunnerDlg : public TestRunnerDlg
+{
+// Construction
+public:
+  TestPlugInRunnerDlg( TestPlugInRunnerModel *model,
+                       CWnd* pParent = NULL);
+
+// Dialog Data
+  //{{AFX_DATA(TestPlugInRunnerDlg)
+  //}}AFX_DATA
+
+  // ClassWizard generated virtual function overrides
+  //{{AFX_VIRTUAL(TestPlugInRunnerDlg)
+  protected:
+  virtual void DoDataExchange(CDataExchange* pDX);     // DDX/DDV support
+  //}}AFX_VIRTUAL
+
+// Implementation
+protected:
+  HICON m_hIcon;
+
+  // Generated message map functions
+  //{{AFX_MSG(TestPlugInRunnerDlg)
+  virtual BOOL OnInitDialog();
+  afx_msg void OnPaint();
+  afx_msg HCURSOR OnQueryDragIcon();
+  afx_msg void OnChooseDll();
+  afx_msg void OnReloadDll();
+  //}}AFX_MSG
+  DECLARE_MESSAGE_MAP();
+
+protected:
+  virtual void initializeLayout();
+
+
+private:
+  TestPlugInRunnerModel &plugInModel();
+
+  static std::list<std::string> getCommandLineArguments();
+  void loadPluginIfNesseccary();
+  void loadDll( std::string path );
+};
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_TESTPLUGINRUNNERDLG_H__AF6DB5BC_25E5_4459_8A54_9704298F64FF__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerModel.cpp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerModel.cpp
new file mode 100644 (file)
index 0000000..71ae0cf
--- /dev/null
@@ -0,0 +1,52 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file TestPlugInRunnerModel.cpp for class TestPlugInRunnerModel
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/06/24
+// //////////////////////////////////////////////////////////////////////////
+
+#include "StdAfx.h"
+#include "TestPlugInRunnerModel.h"
+#include <cppunit/TestSuite.h>
+#include "TestPlugIn.h"
+
+
+TestPlugInRunnerModel::TestPlugInRunnerModel() : 
+    TestRunnerModel( new CPPUNIT_NS::TestSuite( "Default" ) ),
+    m_plugIn( new TestPlugIn( "default plug-in" ) )
+{
+}
+
+
+TestPlugInRunnerModel::~TestPlugInRunnerModel()
+{
+  delete m_plugIn;
+}
+
+
+void 
+TestPlugInRunnerModel::setPlugIn( TestPlugIn *plugIn )
+{
+  delete m_plugIn;
+  m_plugIn = plugIn;
+  reloadPlugIn();
+}
+
+
+void 
+TestPlugInRunnerModel::reloadPlugIn()
+{
+  try 
+  {
+    CWaitCursor waitCursor;
+    m_history.clear();
+    setRootTest( m_plugIn->makeTest() );
+
+    loadHistory();
+  }
+  catch (...)
+  {
+    setRootTest( new CPPUNIT_NS::TestSuite( "Default" ) );  
+    loadHistory();
+    throw;
+  }
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerModel.h b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/TestPlugInRunnerModel.h
new file mode 100644 (file)
index 0000000..b6c12d6
--- /dev/null
@@ -0,0 +1,48 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestPlugInRunnerModel.h for class TestPlugInRunnerModel
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/06/24
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTPLUGINRUNNERMODEL_H
+#define TESTPLUGINRUNNERMODEL_H
+
+#include <TestRunnerModel.h>
+class TestPlugIn;
+
+
+/*! \class TestPlugInRunnerModel
+ * \brief This class represents a model for the plug in runner.
+ */
+class TestPlugInRunnerModel : public TestRunnerModel
+{
+public:
+  /*! Constructs a TestPlugInRunnerModel object.
+   */
+  TestPlugInRunnerModel();
+
+  /*! Destructor.
+   */
+  virtual ~TestPlugInRunnerModel();
+
+  void setPlugIn( TestPlugIn *plugIn );
+
+  void reloadPlugIn();
+private:
+  /// Prevents the use of the copy constructor.
+  TestPlugInRunnerModel( const TestPlugInRunnerModel &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestPlugInRunnerModel &copy );
+
+private:
+  TestPlugIn *m_plugIn;
+};
+
+
+
+// Inlines methods for TestPlugInRunnerModel:
+// ------------------------------------------
+
+
+
+#endif  // TESTPLUGINRUNNERMODEL_H
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/TestPlugInRunner.ico b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/TestPlugInRunner.ico
new file mode 100644 (file)
index 0000000..4eafd8b
Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/TestPlugInRunner.ico differ
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/TestPlugInRunner.rc2 b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/TestPlugInRunner.rc2
new file mode 100644 (file)
index 0000000..0f08ced
--- /dev/null
@@ -0,0 +1,13 @@
+//
+// TESTPLUGINRUNNER.RC2 - resources Microsoft Visual C++ does not edit directly
+//
+
+#ifdef APSTUDIO_INVOKED
+       #error this file is not editable by Microsoft Visual C++
+#endif //APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Add manually edited resources here...
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/errortype.bmp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/errortype.bmp
new file mode 100644 (file)
index 0000000..aa645ba
Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/errortype.bmp differ
diff --git a/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/test_type.bmp b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/test_type.bmp
new file mode 100644 (file)
index 0000000..63e7fa0
Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/testpluginrunner/res/test_type.bmp differ
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ActiveTest.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/ActiveTest.cpp
new file mode 100644 (file)
index 0000000..94268ba
--- /dev/null
@@ -0,0 +1,83 @@
+#include "stdafx.h"
+#include "ActiveTest.h"
+
+
+
+// Construct the active test
+ActiveTest::ActiveTest( CPPUNIT_NS::Test *test )
+    : TestDecorator( test )
+    , m_runCompleted() 
+{ 
+  m_currentTestResult = NULL; 
+  m_threadHandle = INVALID_HANDLE_VALUE; 
+}
+
+
+// Pend until the test has completed
+ActiveTest::~ActiveTest()
+{ 
+  CSingleLock( &m_runCompleted, TRUE );
+  m_test = NULL;
+}
+
+
+// Set the test result that we are to run
+void 
+ActiveTest::setTestResult( CPPUNIT_NS::TestResult *result )
+{ 
+  m_currentTestResult = result; 
+}
+
+
+// Run our test result
+void 
+ActiveTest::run()
+{ 
+  TestDecorator::run( m_currentTestResult );
+}
+
+
+// Spawn a thread to a test
+void 
+ActiveTest::run( CPPUNIT_NS::TestResult *result )
+{
+  CWinThread *thread;
+  
+  setTestResult( result );
+  m_runCompleted.ResetEvent();
+
+  thread = ::AfxBeginThread( threadFunction, 
+                             this, 
+                             THREAD_PRIORITY_NORMAL, 
+                             0, 
+                             CREATE_SUSPENDED);
+  
+  ::DuplicateHandle( GetCurrentProcess(), 
+                     thread->m_hThread,
+                     GetCurrentProcess(), 
+                     &m_threadHandle, 
+                     0, 
+                     FALSE, 
+                     DUPLICATE_SAME_ACCESS );
+
+  thread->ResumeThread ();
+}
+
+
+// Simple execution thread.  Assuming that an ActiveTest instance
+// only creates one of these at a time.
+UINT 
+ActiveTest::threadFunction( LPVOID thisInstance )
+{
+  ActiveTest *test = (ActiveTest *)thisInstance;
+
+  test->run ();
+
+  ::CloseHandle( test->m_threadHandle );
+  test->m_threadHandle = INVALID_HANDLE_VALUE;
+
+  test->m_runCompleted.SetEvent();
+
+  return 0;
+}
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ActiveTest.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/ActiveTest.h
new file mode 100644 (file)
index 0000000..809d6e6
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef CPPUNIT_ACTIVETEST_H
+#define CPPUNIT_ACTIVETEST_H
+
+#include <afxmt.h>
+
+#ifndef CPPUNIT_TESTDECORATOR_H
+#include <cppunit/extensions/TestDecorator.h>
+#endif
+
+
+/* A Microsoft-specific active test
+ *
+ * An active test manages its own
+ * thread of execution.  This one 
+ * is very simple and only sufficient
+ * for the limited use we put it through
+ * in the TestRunner.  It spawns a thread
+ * on run (TestResult *) and signals
+ * completion of the test.
+ *
+ * We assume that only one thread 
+ * will be active at once for each
+ * instance.
+ *
+ */
+
+class ActiveTest : public CPPUNIT_NS::TestDecorator
+{
+public:
+  ActiveTest( CPPUNIT_NS::Test *test );
+  ~ActiveTest();
+
+  void run( CPPUNIT_NS::TestResult *result );
+
+protected:
+  HANDLE m_threadHandle;
+  CEvent m_runCompleted;
+  CPPUNIT_NS::TestResult *m_currentTestResult;
+
+  void run();
+  void setTestResult( CPPUNIT_NS::TestResult *result );
+  static UINT threadFunction( LPVOID thisInstance );
+};
+
+#endif
+
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/Change-Diary-ResourceBugFix.txt b/lib/cppunit-1.10.0/src/msvc6/testrunner/Change-Diary-ResourceBugFix.txt
new file mode 100644 (file)
index 0000000..7fcdd3d
--- /dev/null
@@ -0,0 +1,111 @@
+Diary of making test runner DLL resource safe.
+
+Repeat everything, that was done for version 1.8.0. This is point 1) to 9).
+
+0) With the unit-tests for the test runner DLL all four tests fail with the original 
+   version 1.9.8 of CPP-Unit.
+
+1) Replace the original integer dialog ids with new string ids
+    CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TEST_HIERARCHY
+    CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TESTRUNNER
+   Because these are not in resource.h VC++ interpretes these values
+   as string ids.
+
+2) TestRunnerDlg.cpp:
+   - Make a copy of the constructor and replace the integer id with a string id. 
+   - Move the initialization code in the two constructors to the new private member 
+     function init().
+   - Put an ASSERT in the old constructor.
+   - Remove the enum IDD=IDD_DIALOG_TESTRUNNER from the resource.h and TestRunnerDlg.h 
+     header files. Accordingly remove the default value nDialogResourceId in the
+     constructor, that uses the integer id.
+
+3) TreeHierarchyDlg.cpp:
+   - Replace the integer id in the call to the base class constructor with
+     the new string id.
+   - Remove the enum IDD=IDD_DIALOG_TEST_HIERARCHY from the resource.h and 
+     TreeHierarchyDlg.h header file.
+
+4) Test. Two of the four tests still fail. The remaining errors result from
+   the conflicts in the string table.
+
+5) Since strings ids don't work for the string table I created the new function
+   loadCString to load the strings from the correct resource module which is of 
+   course the test runner module. The new function is in the files 
+   ResourceLoaders.[cpp|h] since I didn't find a good existing place. Baptiste, 
+   if you know of a good existing place simply move the function and remove the 
+   two new files.
+
+6) Check all occurences of the strings and replace the original string refernces 
+   with the new function loadCString.
+    IDS_ERROR_SELECT_TEST  
+    IDS_ERRORLIST_TYPE     
+    IDS_ERRORLIST_NAME     
+    IDS_ERRORLIST_FAILED_CONDITION 
+    IDS_ERRORLIST_LINE_NUMBER 
+    IDS_ERRORLIST_FILE_NAME 
+
+7) Test. No more errors are found.
+
+8) Change the two bitmaps that are used in the list and the tree to use
+   string ids instead of integer ids.
+   - First changed the unit test so that the originally incorrect behaviour
+     is shown. Inserted red circles in the bitmaps in the unit test.
+     Then added the new test checkListBitmaps() and changed checkBrowseDlg()
+     to let the user visually check, if the correct bitmaps are used.
+     This has to be done by the user visually, because I couldn't think of
+     an automatic test, that could be implemented easily.
+     The last test for the correct bitmaps will ALWAYS fail, so that the
+     bitmaps can be checked visually.
+   - Changed the RC-file of the test runner DLL:
+        CPP_UNIT_TEST_RUNNER_IDB_TEST_TYPE           
+        CPP_UNIT_TEST_RUNNER_IDB_ERROR_TYPE     
+     Removed the original string ids from resource.h and changed TreeHierarchyDlg.cpp
+     and TestRunnerDlg.cpp so that the new string ids are used.
+
+
+9) Changed the TestPlugInRunner. I don't know, how I can test this and would
+   ask you Baptiste to check it or let me know, how I can check it.
+   I did the following:
+   - Change the dialog id to the string id
+        CPP_UNIT_TEST_RUNNER_PLUG_IN_IDD_TEST_PLUG_IN_RUNNER
+                             ^^^^^^^ => This is different from the string id used 
+                                        in the test runner DLL!
+   - Removed the original integer id from resource.h and TestPlugInRunnerDlg.h.
+   - Changed the constructor in TestPlugInRunnerDlg.cpp to use the new string id.
+   - Replaced the integer id IDR_TEST_PLUGIN_RUNNER for the icon with the string
+     id CPP_UNIT_TEST_RUNNER_PLUG_IN_IDR_TEST_PLUGIN_RUNNER in the RC-file and in
+     the constructor TestPlugInRunnerDlg and removed the original id from resource.h.
+
+
+Here start the changes, that were only needed for version 1.9.8.
+
+10) TestRunner is OK now. But I saw, that TestPlugInRunner has now more
+   resources than in version 1.8.0. After looking at it more carefully
+   it turned out that the sources of the test runner DLL have been 
+   included in the test plug-in runner. In version 1.8.0 the test runner
+   was used through the testrunner.dll. This means that some additional
+   changes have to be made to the test plug-in runner.
+   - Additionally changed IDD_DIALOG_TEST_HIERARCHY to 
+     CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TEST_HIERARCHY. This is the same
+     name as in the original test runner because the dialog is created
+     with the original code. I don't know how to check this, thus I'm 
+     not sure wether this is OK.
+   - Replaced the ids for the bitmaps. Here the same applies as in the 
+     previous point, I'm not sure, if it works. 
+   - Include ResourceLoaders.cpp in the subproject
+        TestPlugInRunner/TestRunner-Was-In-Dll/UserInterface
+   - Removed the original #include "TestRunnerApp.h" in ResourceLoaders.cpp
+     and replaced it with 
+        extern HINSTANCE g_testRunnerResource;
+   - Included 
+        HINSTANCE g_testRunnerResource;
+     in TestPlugInRunnerApp.cpp and set the variable in InitInstance() with 
+        g_testRunnerResource = AfxGetResourceHandle();
+   - Replaced the integer id for the icon with a string id 
+        m_hIcon = AfxGetApp()->LoadIcon("CPP_UNIT_TEST_RUNNER_PLUG_IN_IDR_TEST_PLUGIN_RUNNER");
+     in the constructor in TestPlugInRunnerDlg.cpp and in the RC-file.
+
+11) FINISHED.
+
+-- Steven Mitter
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.cpp
new file mode 100644 (file)
index 0000000..ea347dd
--- /dev/null
@@ -0,0 +1,1061 @@
+/////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1998, 1999 by Cristi Posea
+// All rights reserved
+//
+// Use and distribute freely, except: don't remove my name from the
+// source or documentation (don't take credit for my work), mark your
+// changes (don't get me blamed for your possible bugs), don't alter
+// or remove this notice.
+// No warrantee of any kind, express or implied, is included with this
+// software; use at your own risk, responsibility for damages (if any) to
+// anyone resulting from the use of this software rests entirely with the
+// user.
+//
+// This class is intended to be used as a base class. Do not simply add
+// your code to this file - instead create a new class derived from
+// CSizingControlBar and put there what you need.
+// Modify this file only to fix bugs, and don't forget to send me a copy.
+//
+// Send bug reports, bug fixes, enhancements, requests, flames, etc.,
+// and I'll try to keep a version up to date.  I can be reached at:
+//    cristip@dundas.com
+//
+// More details at MFC Programmer's SourceBook
+// http://www.codeguru.com/docking/docking_window.shtml or search
+// www.codeguru.com for my name if the article was moved.
+//
+/////////////////////////////////////////////////////////////////////////
+//
+// Acknowledgements:
+//  o   Thanks to Harlan R. Seymour (harlans@dundas.com) for his continuous
+//      support during development of this code.
+//  o   Thanks to Dundas Software for the opportunity to test this code
+//      on real-life applications.
+//      If you don't know who they are, visit them at www.dundas.com .
+//      Their award winning components and development suites are
+//      a pile of gold.
+//  o   Thanks to Chris Maunder (chrism@dundas.com) who came with the
+//      simplest way to query "Show window content while dragging" system
+//      setting.
+//  o   Thanks to Zafir Anjum (zafir@codeguru.com) for publishing this
+//      code on his cool site (www.codeguru.com).
+//  o   Some ideas for the gripper came from the CToolBarEx flat toolbar
+//      by Joerg Koenig (Joerg.Koenig@rhein-neckar.de). Also he inspired
+//      me on writing this notice:) . Thanks, Joerg!
+//  o   Thanks to Jakawan Ratiwanich (jack@alpha.fsec.ucf.edu) and to
+//      Udo Schaefer (Udo.Schaefer@vcase.de) for the dwStyle bug fix under
+//      VC++ 6.0.
+//  o   And, of course, many thanks to all of you who used this code,
+//      for the invaluable feedback I received.
+//      
+/////////////////////////////////////////////////////////////////////////
+
+
+// sizecbar.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "sizecbar.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////
+// CSizingControlBar
+
+CSCBArray CSizingControlBar::m_arrBars; // static member
+
+IMPLEMENT_DYNAMIC(CSizingControlBar, baseCSizingControlBar);
+
+CSizingControlBar::CSizingControlBar()
+{
+    m_szMin = CSize(33, 32);
+    m_szHorz = CSize(200, 200);
+    m_szVert = CSize(200, 200);
+    m_szFloat = CSize(200, 200);
+    m_bTracking = FALSE;
+    m_bKeepSize = FALSE;
+    m_bParentSizing = FALSE;
+    m_cxEdge = 5;
+    m_bDragShowContent = FALSE;
+    m_nDockBarID = 0;
+    m_dwSCBStyle = 0;
+}
+
+CSizingControlBar::~CSizingControlBar()
+{
+}
+
+BEGIN_MESSAGE_MAP(CSizingControlBar, baseCSizingControlBar)
+    //{{AFX_MSG_MAP(CSizingControlBar)
+    ON_WM_CREATE()
+    ON_WM_PAINT()
+    ON_WM_NCPAINT()
+    ON_WM_NCCALCSIZE()
+    ON_WM_WINDOWPOSCHANGING()
+    ON_WM_CAPTURECHANGED()
+    ON_WM_SETTINGCHANGE()
+    ON_WM_LBUTTONUP()
+    ON_WM_MOUSEMOVE()
+    ON_WM_NCLBUTTONDOWN()
+    ON_WM_LBUTTONDOWN()
+    ON_WM_LBUTTONDBLCLK()
+    ON_WM_RBUTTONDOWN()
+    ON_WM_NCLBUTTONUP()
+    ON_WM_NCMOUSEMOVE()
+    ON_WM_NCHITTEST()
+    //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+BOOL CSizingControlBar::Create(LPCTSTR lpszWindowName, CWnd* pParentWnd,
+                               CSize sizeDefault, BOOL bHasGripper,
+                               UINT nID, DWORD dwStyle)
+{
+    // must have a parent
+    ASSERT_VALID(pParentWnd);
+    // cannot be both fixed and dynamic
+    // (CBRS_SIZE_DYNAMIC is used for resizng when floating)
+    ASSERT (!((dwStyle & CBRS_SIZE_FIXED) &&
+              (dwStyle & CBRS_SIZE_DYNAMIC)));
+
+    m_dwStyle = dwStyle & CBRS_ALL; // save the control bar styles
+
+    m_szHorz = sizeDefault; // set the size members
+    m_szVert = sizeDefault;
+    m_szFloat = sizeDefault;
+
+    m_cyGripper = bHasGripper ? 12 : 0; // set the gripper width
+
+    // register and create the window - skip CControlBar::Create()
+    CString wndclass = ::AfxRegisterWndClass(CS_DBLCLKS,
+        ::LoadCursor(NULL, IDC_ARROW),
+        ::GetSysColorBrush(COLOR_BTNFACE), 0);
+
+    dwStyle &= ~CBRS_ALL; // keep only the generic window styles
+    dwStyle |= WS_CLIPCHILDREN; // prevents flashing
+    if (!CWnd::Create(wndclass, lpszWindowName, dwStyle,
+        CRect(0, 0, 0, 0), pParentWnd, nID))
+        return FALSE;
+
+    return TRUE;
+}
+
+/////////////////////////////////////////////////////////////////////////
+// CSizingControlBar message handlers
+
+int CSizingControlBar::OnCreate(LPCREATESTRUCT lpCreateStruct) 
+{
+    if (baseCSizingControlBar::OnCreate(lpCreateStruct) == -1)
+        return -1;
+    
+    // querry SPI_GETDRAGFULLWINDOWS system parameter
+    // OnSettingChange() will update m_bDragShowContent
+    m_bDragShowContent = FALSE;
+    ::SystemParametersInfo(SPI_GETDRAGFULLWINDOWS, 0,
+        &m_bDragShowContent, 0);
+
+    m_arrBars.Add(this);        // register
+    
+//    m_dwSCBStyle |= SCBS_SHOWEDGES;
+
+    return 0;
+}
+
+BOOL CSizingControlBar::DestroyWindow() 
+{
+    int nPos = FindSizingBar(this);
+    ASSERT(nPos >= 0);
+
+    m_arrBars.RemoveAt(nPos);   // unregister
+
+    return baseCSizingControlBar::DestroyWindow();
+}
+
+const BOOL CSizingControlBar::IsFloating() const
+{
+    return !IsHorzDocked() && !IsVertDocked();
+}
+
+const BOOL CSizingControlBar::IsHorzDocked() const
+{
+    return (m_nDockBarID == AFX_IDW_DOCKBAR_TOP ||
+        m_nDockBarID == AFX_IDW_DOCKBAR_BOTTOM);
+}
+
+const BOOL CSizingControlBar::IsVertDocked() const
+{
+    return (m_nDockBarID == AFX_IDW_DOCKBAR_LEFT ||
+        m_nDockBarID == AFX_IDW_DOCKBAR_RIGHT);
+}
+
+const BOOL CSizingControlBar::IsSideTracking() const
+{
+    // don't call this when not tracking
+    ASSERT(m_bTracking && !IsFloating());
+
+    return (m_htEdge == HTLEFT || m_htEdge == HTRIGHT) ?
+        IsHorzDocked() : IsVertDocked();
+}
+
+CSize CSizingControlBar::CalcFixedLayout(BOOL bStretch, BOOL bHorz)
+{
+    if (bStretch) // the bar is stretched (is not the child of a dockbar)
+        if (bHorz)
+            return CSize(32767, m_szHorz.cy);
+        else
+            return CSize(m_szVert.cx, 32767);
+
+    // dirty cast - using CSCBDockBar to access protected CDockBar members
+    CSCBDockBar* pDockBar = (CSCBDockBar*) m_pDockBar;
+
+    // force imediate RecalcDelayShow() for all sizing bars on the row
+    // with delayShow/delayHide flags set to avoid IsVisible() problems
+    CSCBArray arrSCBars;
+    GetRowSizingBars(arrSCBars);
+    AFX_SIZEPARENTPARAMS layout;
+    layout.hDWP = pDockBar->m_bLayoutQuery ?
+        NULL : ::BeginDeferWindowPos(arrSCBars.GetSize());
+    for (int i = 0; i < arrSCBars.GetSize(); i++)
+        arrSCBars[i]->RecalcDelayShow(&layout);
+    if (layout.hDWP != NULL)
+        ::EndDeferWindowPos(layout.hDWP);
+
+    // get available length
+    CRect rc = pDockBar->m_rectLayout;
+    if (rc.IsRectEmpty())
+        m_pDockSite->GetClientRect(&rc);
+    int nLengthAvail = bHorz ? rc.Width() + 2 : rc.Height() - 2;
+
+    if (IsVisible() && !IsFloating() &&
+        m_bParentSizing && arrSCBars[0] == this)
+        if (NegociateSpace(nLengthAvail, (bHorz != FALSE)))
+            AlignControlBars();
+
+    m_bParentSizing = FALSE;
+    
+    CSize szRet = bHorz ? m_szHorz : m_szVert;
+    szRet.cx = max(m_szMin.cx, szRet.cx);
+    szRet.cy = max(m_szMin.cy, szRet.cy);
+
+    return szRet;
+}
+
+CSize CSizingControlBar::CalcDynamicLayout(int nLength, DWORD dwMode)
+{
+    if (dwMode & (LM_HORZDOCK | LM_VERTDOCK)) // docked ?
+    {
+        if (nLength == -1)
+            m_bParentSizing = TRUE;
+
+        return baseCSizingControlBar::CalcDynamicLayout(nLength, dwMode);
+    }
+
+    if (dwMode & LM_MRUWIDTH) return m_szFloat;
+    if (dwMode & LM_COMMIT) return m_szFloat; // already committed
+
+    ((dwMode & LM_LENGTHY) ? m_szFloat.cy : m_szFloat.cx) = nLength;
+
+    m_szFloat.cx = max(m_szFloat.cx, m_szMin.cx);
+    m_szFloat.cy = max(m_szFloat.cy, m_szMin.cy);
+
+    return m_szFloat;
+}
+
+void CSizingControlBar::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
+{
+    // force non-client recalc if moved or resized
+    lpwndpos->flags |= SWP_FRAMECHANGED;
+
+    baseCSizingControlBar::OnWindowPosChanging(lpwndpos);
+
+    // find on which side are we docked
+    UINT nOldDockBarID = m_nDockBarID;
+    m_nDockBarID = GetParent()->GetDlgCtrlID();
+
+    if (!IsFloating())
+        if (lpwndpos->flags & SWP_SHOWWINDOW)
+            m_bKeepSize = TRUE;
+}
+
+/////////////////////////////////////////////////////////////////////////
+// Mouse Handling
+//
+void CSizingControlBar::OnLButtonDown(UINT nFlags, CPoint point) 
+{
+    if (m_pDockBar != NULL)
+    {
+        // start the drag
+        ASSERT(m_pDockContext != NULL);
+        ClientToScreen(&point);
+        m_pDockContext->StartDrag(point);
+    }
+    else
+        CWnd::OnLButtonDown(nFlags, point);
+}
+
+void CSizingControlBar::OnLButtonDblClk(UINT nFlags, CPoint point) 
+{
+    if (m_pDockBar != NULL)
+    {
+        // toggle docking
+        ASSERT(m_pDockContext != NULL);
+        m_pDockContext->ToggleDocking();
+    }
+    else
+        CWnd::OnLButtonDblClk(nFlags, point);
+}
+
+void CSizingControlBar::OnNcLButtonDown(UINT nHitTest, CPoint point) 
+{
+    if (IsFloating())
+    {
+        baseCSizingControlBar::OnNcLButtonDown(nHitTest, point);
+        return;
+    }
+
+    if (m_bTracking) return;
+
+    if ((nHitTest >= HTSIZEFIRST) && (nHitTest <= HTSIZELAST))
+        StartTracking(nHitTest); // sizing edge hit
+}
+
+void CSizingControlBar::OnNcLButtonUp(UINT nHitTest, CPoint point) 
+{
+    if (nHitTest == HTCLOSE)
+        m_pDockSite->ShowControlBar(this, FALSE, FALSE); // hide
+
+    baseCSizingControlBar::OnNcLButtonUp(nHitTest, point);
+}
+
+void CSizingControlBar::OnLButtonUp(UINT nFlags, CPoint point) 
+{
+    if (m_bTracking)
+        StopTracking();
+
+    baseCSizingControlBar::OnLButtonUp(nFlags, point);
+}
+
+void CSizingControlBar::OnRButtonDown(UINT nFlags, CPoint point) 
+{
+    if (m_bTracking)
+        StopTracking();
+    
+    baseCSizingControlBar::OnRButtonDown(nFlags, point);
+}
+
+void CSizingControlBar::OnMouseMove(UINT nFlags, CPoint point) 
+{
+    if (m_bTracking)
+        OnTrackUpdateSize(point);
+    
+    baseCSizingControlBar::OnMouseMove(nFlags, point);
+}
+
+void CSizingControlBar::OnCaptureChanged(CWnd *pWnd) 
+{
+    if (m_bTracking && (pWnd != this))
+        StopTracking();
+
+    baseCSizingControlBar::OnCaptureChanged(pWnd);
+}
+
+void CSizingControlBar::OnNcCalcSize(BOOL bCalcValidRects,
+                                     NCCALCSIZE_PARAMS FAR* lpncsp) 
+{
+    // compute the the client area
+    CRect rcClient = lpncsp->rgrc[0];
+    rcClient.DeflateRect(5, 5);
+
+    m_dwSCBStyle &= ~SCBS_EDGEALL;
+
+    switch(m_nDockBarID)
+    {
+    case AFX_IDW_DOCKBAR_TOP:
+        m_dwSCBStyle |= SCBS_EDGEBOTTOM;
+        rcClient.DeflateRect(m_cyGripper, 0, 0, 0);
+        break;
+    case AFX_IDW_DOCKBAR_BOTTOM:
+        m_dwSCBStyle |= SCBS_EDGETOP;
+        rcClient.DeflateRect(m_cyGripper, 0, 0, 0);
+        break;
+    case AFX_IDW_DOCKBAR_LEFT:
+        m_dwSCBStyle |= SCBS_EDGERIGHT;
+        rcClient.DeflateRect(0, m_cyGripper, 0, 0);
+        break;
+    case AFX_IDW_DOCKBAR_RIGHT:
+        m_dwSCBStyle |= SCBS_EDGELEFT;
+        rcClient.DeflateRect(0, m_cyGripper, 0, 0);
+        break;
+    default:
+        break;
+    }
+
+    if (!IsFloating() && m_pDockBar != NULL)
+    {
+        CSCBArray arrSCBars;
+        GetRowSizingBars(arrSCBars);
+
+        for (int i = 0; i < arrSCBars.GetSize(); i++)
+            if (arrSCBars[i] == this)
+            {
+                if (i > 0)
+                    m_dwSCBStyle |= IsHorzDocked() ?
+                        SCBS_EDGELEFT : SCBS_EDGETOP;
+                if (i < arrSCBars.GetSize() - 1)
+                    m_dwSCBStyle |= IsHorzDocked() ?
+                        SCBS_EDGERIGHT : SCBS_EDGEBOTTOM;
+            }
+    }
+
+    // make room for edges only if they will be painted
+    if (m_dwSCBStyle & SCBS_SHOWEDGES)
+        rcClient.DeflateRect(
+            (m_dwSCBStyle & SCBS_EDGELEFT) ? m_cxEdge : 0,
+            (m_dwSCBStyle & SCBS_EDGETOP) ? m_cxEdge : 0,
+            (m_dwSCBStyle & SCBS_EDGERIGHT) ? m_cxEdge : 0,
+            (m_dwSCBStyle & SCBS_EDGEBOTTOM) ? m_cxEdge : 0);
+
+    // "hide" button positioning
+    CPoint ptOrgBtn;
+    if (IsHorzDocked())
+        ptOrgBtn = CPoint(rcClient.left - m_cyGripper - 1,
+            rcClient.top - 1);
+    else
+        ptOrgBtn = CPoint(rcClient.right - 11,
+            rcClient.top - m_cyGripper - 1);
+
+    m_biHide.Move(ptOrgBtn - CRect(lpncsp->rgrc[0]).TopLeft());
+
+    lpncsp->rgrc[0] = rcClient;
+}
+
+void CSizingControlBar::OnNcPaint() 
+{
+    // get window DC that is clipped to the non-client area
+    CWindowDC dc(this);
+
+    CRect rcClient, rcBar;
+    GetClientRect(rcClient);
+    ClientToScreen(rcClient);
+    GetWindowRect(rcBar);
+    rcClient.OffsetRect(-rcBar.TopLeft());
+    rcBar.OffsetRect(-rcBar.TopLeft());
+
+    // client area is not our bussiness :)
+    dc.ExcludeClipRect(rcClient);
+
+    // draw borders in non-client area
+    CRect rcDraw = rcBar;
+    DrawBorders(&dc, rcDraw);
+
+    // erase parts not drawn
+    dc.IntersectClipRect(rcDraw);
+
+    // erase NC background the hard way
+    HBRUSH hbr = (HBRUSH)GetClassLong(m_hWnd, GCL_HBRBACKGROUND);
+    ::FillRect(dc.m_hDC, rcDraw, hbr);
+
+    if (m_dwSCBStyle & SCBS_SHOWEDGES)
+    {
+        CRect rcEdge; // paint the sizing edges
+        for (int i = 0; i < 4; i++)
+            if (GetEdgeRect(rcBar, GetEdgeHTCode(i), rcEdge))
+                dc.Draw3dRect(rcEdge, ::GetSysColor(COLOR_BTNHIGHLIGHT),
+                    ::GetSysColor(COLOR_BTNSHADOW));
+    }
+
+    if (m_cyGripper && !IsFloating())
+        NcPaintGripper(&dc, rcClient);
+
+    ReleaseDC(&dc);
+}
+
+void CSizingControlBar::NcPaintGripper(CDC* pDC, CRect rcClient)
+{
+    // paints a simple "two raised lines" gripper
+    // override this if you want a more sophisticated gripper
+    CRect gripper = rcClient;
+    CRect rcbtn = m_biHide.GetRect();
+    BOOL bHorz = IsHorzDocked();
+    
+    gripper.DeflateRect(1, 1);
+    if (bHorz)
+    {   // gripper at left
+        gripper.left -= m_cyGripper;
+        gripper.right = gripper.left + 3;
+        gripper.top = rcbtn.bottom + 3;
+    }
+    else
+    {   // gripper at top
+        gripper.top -= m_cyGripper;
+        gripper.bottom = gripper.top + 3;
+        gripper.right = rcbtn.left - 3;
+    }
+
+    pDC->Draw3dRect(gripper, ::GetSysColor(COLOR_BTNHIGHLIGHT),
+        ::GetSysColor(COLOR_BTNSHADOW));
+
+    gripper.OffsetRect(bHorz ? 3 : 0, bHorz ? 0 : 3);
+    
+    pDC->Draw3dRect(gripper, ::GetSysColor(COLOR_BTNHIGHLIGHT),
+        ::GetSysColor(COLOR_BTNSHADOW));
+
+    m_biHide.Paint(pDC);
+}
+
+void CSizingControlBar::OnPaint()
+{
+    // overridden to skip border painting based on clientrect
+    CPaintDC dc(this);
+}
+
+UINT CSizingControlBar::OnNcHitTest(CPoint point)
+{
+    if (IsFloating())
+        return baseCSizingControlBar::OnNcHitTest(point);
+
+    CRect rcBar, rcEdge;
+    GetWindowRect(rcBar);
+
+    for (int i = 0; i < 4; i++)
+        if (GetEdgeRect(rcBar, GetEdgeHTCode(i), rcEdge))
+            if (rcEdge.PtInRect(point)) return GetEdgeHTCode(i);
+
+    CRect rc = m_biHide.GetRect();
+    rc.OffsetRect(rcBar.TopLeft());
+    if (rc.PtInRect(point))
+        return HTCLOSE;
+
+    return HTCLIENT;
+}
+
+void CSizingControlBar::OnSettingChange(UINT uFlags, LPCTSTR lpszSection) 
+{
+    baseCSizingControlBar::OnSettingChange(uFlags, lpszSection);
+
+    m_bDragShowContent = FALSE;
+    ::SystemParametersInfo(SPI_GETDRAGFULLWINDOWS, 0,
+        &m_bDragShowContent, 0); // update
+}
+
+/////////////////////////////////////////////////////////////////////////
+// CSizingControlBar implementation helpers
+
+void CSizingControlBar::StartTracking(UINT nHitTest)
+{
+    SetCapture();
+
+    // make sure no updates are pending
+    RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_UPDATENOW);
+    
+    BOOL bHorz = IsHorzDocked();
+
+    m_szOld = bHorz ? m_szHorz : m_szVert;
+
+    CRect rc;
+    GetWindowRect(&rc);
+    CRect rcEdge;
+    VERIFY(GetEdgeRect(rc, nHitTest, rcEdge));
+    m_ptOld = rcEdge.CenterPoint();
+
+    m_htEdge = nHitTest;
+    m_bTracking = TRUE;
+
+    CSCBArray arrSCBars;
+    GetRowSizingBars(arrSCBars);
+
+    // compute the minsize as the max minsize of the sizing bars on row
+    m_szMinT = m_szMin;
+    for (int i = 0; i < arrSCBars.GetSize(); i++)
+        if (bHorz)
+            m_szMinT.cy = max(m_szMinT.cy, arrSCBars[i]->m_szMin.cy);
+        else
+            m_szMinT.cx = max(m_szMinT.cx, arrSCBars[i]->m_szMin.cx);
+
+    if (!IsSideTracking())
+    {
+        // the control bar cannot grow with more than the size of 
+        // remaining client area of the mainframe
+        m_pDockSite->RepositionBars(0, 0xFFFF, AFX_IDW_PANE_FIRST,
+            reposQuery, &rc, NULL, TRUE);
+        m_szMaxT = m_szOld + rc.Size() - CSize(4, 4);
+    }
+    else
+    {
+        // side tracking: max size is the actual size plus the amount
+        // the neighbour bar can be decreased to reach its minsize
+        for (int i = 0; i < arrSCBars.GetSize(); i++)
+            if (arrSCBars[i] == this) break;
+
+        CSizingControlBar* pBar = arrSCBars[i +
+            ((m_htEdge == HTTOP || m_htEdge == HTLEFT) ? -1 : 1)];
+
+        m_szMaxT = m_szOld + (bHorz ? pBar->m_szHorz :
+            pBar->m_szVert) - pBar->m_szMin;
+    }
+
+    OnTrackInvertTracker(); // draw tracker
+}
+
+void CSizingControlBar::StopTracking()
+{
+    OnTrackInvertTracker(); // erase tracker
+
+    m_bTracking = FALSE;
+    ReleaseCapture();
+    
+    m_pDockSite->DelayRecalcLayout();
+}
+
+void CSizingControlBar::OnTrackUpdateSize(CPoint& point)
+{
+    ASSERT(!IsFloating());
+
+    CPoint pt = point;
+    ClientToScreen(&pt);
+    CSize szDelta = pt - m_ptOld;
+
+    CSize sizeNew = m_szOld;
+    switch (m_htEdge)
+    {
+    case HTLEFT:    sizeNew -= CSize(szDelta.cx, 0); break;
+    case HTTOP:     sizeNew -= CSize(0, szDelta.cy); break;
+    case HTRIGHT:   sizeNew += CSize(szDelta.cx, 0); break;
+    case HTBOTTOM:  sizeNew += CSize(0, szDelta.cy); break;
+    }
+
+    // enforce the limits
+    sizeNew.cx = max(m_szMinT.cx, min(m_szMaxT.cx, sizeNew.cx));
+    sizeNew.cy = max(m_szMinT.cy, min(m_szMaxT.cy, sizeNew.cy));
+
+    BOOL bHorz = IsHorzDocked();
+    szDelta = sizeNew - (bHorz ? m_szHorz : m_szVert);
+    
+    if (szDelta == CSize(0, 0)) return; // no size change
+
+    OnTrackInvertTracker(); // erase tracker
+
+    (bHorz ? m_szHorz : m_szVert) = sizeNew; // save the new size
+
+    CSCBArray arrSCBars;
+    GetRowSizingBars(arrSCBars);
+
+    for (int i = 0; i < arrSCBars.GetSize(); i++)
+        if (!IsSideTracking())
+        {   // track simultaneously
+            CSizingControlBar* pBar = arrSCBars[i];
+            (bHorz ? pBar->m_szHorz.cy : pBar->m_szVert.cx) =
+                bHorz ? sizeNew.cy : sizeNew.cx;
+        }
+        else
+        {   // adjust the neighbour's size too
+            if (arrSCBars[i] != this) continue;
+
+            CSizingControlBar* pBar = arrSCBars[i +
+                ((m_htEdge == HTTOP || m_htEdge == HTLEFT) ? -1 : 1)];
+
+            (bHorz ? pBar->m_szHorz.cx : pBar->m_szVert.cy) -=
+                bHorz ? szDelta.cx : szDelta.cy;
+        }
+
+    OnTrackInvertTracker(); // redraw tracker at new pos
+
+    if (m_bDragShowContent)
+        m_pDockSite->DelayRecalcLayout();
+}
+
+void CSizingControlBar::OnTrackInvertTracker()
+{
+    ASSERT(m_bTracking);
+
+    if (m_bDragShowContent)
+        return; // don't show tracker if DragFullWindows is on
+
+    BOOL bHorz = IsHorzDocked();
+    CRect rc, rcBar, rcDock, rcFrame;
+    GetWindowRect(rcBar);
+    m_pDockBar->GetWindowRect(rcDock);
+    m_pDockSite->GetWindowRect(rcFrame);
+    VERIFY(GetEdgeRect(rcBar, m_htEdge, rc));
+    if (!IsSideTracking())
+        rc = bHorz ? 
+            CRect(rcDock.left + 1, rc.top, rcDock.right - 1, rc.bottom) :
+            CRect(rc.left, rcDock.top + 1, rc.right, rcDock.bottom - 1);
+
+    rc.OffsetRect(-rcFrame.TopLeft());
+
+    CSize sizeNew = bHorz ? m_szHorz : m_szVert;
+    CSize sizeDelta = sizeNew - m_szOld;
+    if (m_nDockBarID == AFX_IDW_DOCKBAR_LEFT && m_htEdge == HTTOP ||
+        m_nDockBarID == AFX_IDW_DOCKBAR_RIGHT && m_htEdge != HTBOTTOM ||
+        m_nDockBarID == AFX_IDW_DOCKBAR_TOP && m_htEdge == HTLEFT ||
+        m_nDockBarID == AFX_IDW_DOCKBAR_BOTTOM && m_htEdge != HTRIGHT)
+        sizeDelta = -sizeDelta;
+    rc.OffsetRect(sizeDelta);
+
+    CDC *pDC = m_pDockSite->GetDCEx(NULL,
+        DCX_WINDOW | DCX_CACHE | DCX_LOCKWINDOWUPDATE);
+    CBrush* pBrush = CDC::GetHalftoneBrush();
+    CBrush* pBrushOld = pDC->SelectObject(pBrush);
+
+    pDC->PatBlt(rc.left, rc.top, rc.Width(), rc.Height(), PATINVERT);
+    
+    pDC->SelectObject(pBrushOld);
+    m_pDockSite->ReleaseDC(pDC);
+}
+
+BOOL CSizingControlBar::GetEdgeRect(CRect rcWnd, UINT nHitTest,
+                                    CRect& rcEdge)
+{
+    rcEdge = rcWnd;
+    if (m_dwSCBStyle & SCBS_SHOWEDGES)
+        rcEdge.DeflateRect(1, 1);
+    BOOL bHorz = IsHorzDocked();
+
+    switch (nHitTest)
+    {
+    case HTLEFT:
+        if (!(m_dwSCBStyle & SCBS_EDGELEFT)) return FALSE;
+        rcEdge.right = rcEdge.left + m_cxEdge;
+        rcEdge.DeflateRect(0, bHorz ? m_cxEdge: 0);
+        break;
+    case HTTOP:
+        if (!(m_dwSCBStyle & SCBS_EDGETOP)) return FALSE;
+        rcEdge.bottom = rcEdge.top + m_cxEdge;
+        rcEdge.DeflateRect(bHorz ? 0 : m_cxEdge, 0);
+        break;
+    case HTRIGHT:
+        if (!(m_dwSCBStyle & SCBS_EDGERIGHT)) return FALSE;
+        rcEdge.left = rcEdge.right - m_cxEdge;
+        rcEdge.DeflateRect(0, bHorz ? m_cxEdge: 0);
+        break;
+    case HTBOTTOM:
+        if (!(m_dwSCBStyle & SCBS_EDGEBOTTOM)) return FALSE;
+        rcEdge.top = rcEdge.bottom - m_cxEdge;
+        rcEdge.DeflateRect(bHorz ? 0 : m_cxEdge, 0);
+        break;
+    default:
+        ASSERT(FALSE); // invalid hit test code
+    }
+    return TRUE;
+}
+
+UINT CSizingControlBar::GetEdgeHTCode(int nEdge)
+{
+    if (nEdge == 0) return HTLEFT;
+    if (nEdge == 1) return HTTOP;
+    if (nEdge == 2) return HTRIGHT;
+    if (nEdge == 3) return HTBOTTOM;
+    ASSERT(FALSE); // invalid edge no
+    return HTNOWHERE;
+}
+
+void CSizingControlBar::GetRowInfo(int& nFirst, int& nLast, int& nThis)
+{
+    ASSERT_VALID(m_pDockBar); // verify bounds
+
+    nThis = m_pDockBar->FindBar(this);
+    ASSERT(nThis != -1);
+
+    int i, nBars = m_pDockBar->m_arrBars.GetSize();
+
+    // find the first and the last bar in row
+    for (nFirst = -1, i = nThis - 1; i >= 0 && nFirst == -1; i--)
+        if (m_pDockBar->m_arrBars[i] == NULL)
+            nFirst = i + 1;
+    for (nLast = -1, i = nThis + 1; i < nBars && nLast == -1; i++)
+        if (m_pDockBar->m_arrBars[i] == NULL)
+            nLast = i - 1;
+
+    ASSERT((nLast != -1) && (nFirst != -1));
+}
+
+void CSizingControlBar::GetRowSizingBars(CSCBArray& arrSCBars)
+{
+    arrSCBars.RemoveAll();
+
+    int nFirst, nLast, nThis;
+    GetRowInfo(nFirst, nLast, nThis);
+
+    for (int i = nFirst; i <= nLast; i++)
+    {
+        CControlBar* pBar = (CControlBar*)m_pDockBar->m_arrBars[i];
+        if (HIWORD(pBar) == 0) continue; // placeholder
+        if (!pBar->IsVisible()) continue;
+        if (FindSizingBar(pBar) >= 0)
+            arrSCBars.Add((CSizingControlBar*)pBar);
+    }
+}
+
+const int CSizingControlBar::FindSizingBar(CControlBar* pBar) const
+{
+    for (int nPos = 0; nPos < m_arrBars.GetSize(); nPos++)
+        if (m_arrBars[nPos] == pBar)
+            return nPos; // got it
+
+    return -1; // not found
+}
+
+BOOL CSizingControlBar::NegociateSpace(int nLengthAvail, BOOL bHorz)
+{
+    ASSERT(bHorz == IsHorzDocked());
+
+    int nFirst, nLast, nThis;
+    GetRowInfo(nFirst, nLast, nThis);
+
+    // step 1: subtract the visible fixed bars' lengths
+    for (int i = nFirst; i <= nLast; i++)
+    {
+        CControlBar* pFBar = (CControlBar*)m_pDockBar->m_arrBars[i];
+        if (HIWORD(pFBar) == 0) continue; // placeholder
+        if (!pFBar->IsVisible() || (FindSizingBar(pFBar) >= 0)) continue;
+
+        CRect rcBar;
+        pFBar->GetWindowRect(&rcBar);
+
+        nLengthAvail -= (bHorz ? rcBar.Width() - 2 : rcBar.Height() - 2);
+    }
+
+    CSCBArray arrSCBars;
+    GetRowSizingBars(arrSCBars);
+    CSizingControlBar* pBar;
+
+    // step 2: compute actual and min lengths; also the common width
+    int nActualLength = 0;
+    int nMinLength = 2;
+    int nWidth = 0;
+    for (i = 0; i < arrSCBars.GetSize(); i++)
+    {
+        pBar = arrSCBars[i];
+        nActualLength += bHorz ? pBar->m_szHorz.cx - 2 :
+            pBar->m_szVert.cy - 2;
+        nMinLength += bHorz ? pBar->m_szMin.cx - 2:
+            pBar->m_szMin.cy - 2;
+        nWidth = max(nWidth, bHorz ? pBar->m_szHorz.cy :
+            pBar->m_szVert.cx);
+    }
+    
+    // step 3: pop the bar out of the row if not enough room
+    if (nMinLength > nLengthAvail)
+    {
+        if (nFirst < nThis || nThis < nLast)
+        {   // not enough room - create a new row
+            m_pDockBar->m_arrBars.InsertAt(nLast + 1, this);
+            m_pDockBar->m_arrBars.InsertAt(nLast + 1, (CControlBar*) NULL);
+            m_pDockBar->m_arrBars.RemoveAt(nThis);
+        }
+        return FALSE;
+    }
+
+    // step 4: make the bars same width
+    for (i = 0; i < arrSCBars.GetSize(); i++)
+        if (bHorz)
+            arrSCBars[i]->m_szHorz.cy = nWidth;
+        else
+            arrSCBars[i]->m_szVert.cx = nWidth;
+
+    if (nActualLength == nLengthAvail)
+        return TRUE; // no change
+
+    // step 5: distribute the difference between the bars, but
+    //         don't shrink them below minsize
+    int nDelta = nLengthAvail - nActualLength;
+
+    while (nDelta != 0)
+    {
+        int nDeltaOld = nDelta;
+        for (i = 0; i < arrSCBars.GetSize(); i++)
+        {
+            pBar = arrSCBars[i];
+            int nLMin = bHorz ? pBar->m_szMin.cx : pBar->m_szMin.cy;
+            int nL = bHorz ? pBar->m_szHorz.cx : pBar->m_szVert.cy;
+            
+            if ((nL == nLMin) && (nDelta < 0) || // already at min length
+                pBar->m_bKeepSize) // or wants to keep its size
+                continue;
+            
+            // sign of nDelta
+            int nDelta2 = (nDelta == 0) ? 0 : ((nDelta < 0) ? -1 : 1);
+
+            (bHorz ? pBar->m_szHorz.cx : pBar->m_szVert.cy) += nDelta2;
+            nDelta -= nDelta2;
+            if (nDelta == 0) break;
+        }
+        // clear m_bKeepSize flags
+        if ((nDeltaOld == nDelta) || (nDelta == 0))
+            for (i = 0; i < arrSCBars.GetSize(); i++)
+                arrSCBars[i]->m_bKeepSize = FALSE;
+    }
+
+    return TRUE;
+}
+
+void CSizingControlBar::AlignControlBars()
+{
+    int nFirst, nLast, nThis;
+    GetRowInfo(nFirst, nLast, nThis);
+
+    BOOL bHorz = IsHorzDocked();
+    BOOL bNeedRecalc = FALSE;
+    int nPos, nAlign = bHorz ? -2 : 0;
+
+    CRect rc, rcDock;
+    m_pDockBar->GetWindowRect(&rcDock);
+
+    for (int i = nFirst; i <= nLast; i++)
+    {
+        CControlBar* pBar = (CControlBar*)m_pDockBar->m_arrBars[i];
+        if (HIWORD(pBar) == 0) continue; // placeholder
+        if (!pBar->IsVisible()) continue;
+
+        pBar->GetWindowRect(&rc);
+        rc.OffsetRect(-rcDock.TopLeft());
+
+        if ((nPos = FindSizingBar(pBar)) >= 0)
+            rc = CRect(rc.TopLeft(), bHorz ?
+                m_arrBars[nPos]->m_szHorz : m_arrBars[nPos]->m_szVert);
+
+        if ((bHorz ? rc.left : rc.top) != nAlign)
+        {
+            if (!bHorz)
+                rc.OffsetRect(0, nAlign - rc.top - 2);
+            else if (m_nDockBarID == AFX_IDW_DOCKBAR_TOP)
+                rc.OffsetRect(nAlign - rc.left, -2);
+            else
+                rc.OffsetRect(nAlign - rc.left, 0);
+            pBar->MoveWindow(rc);
+            bNeedRecalc = TRUE;
+        }
+        nAlign += (bHorz ? rc.Width() : rc.Height()) - 2;
+    }
+
+    if (bNeedRecalc)
+    {
+        m_pDockSite->DelayRecalcLayout();
+        TRACE("ccc\n");
+    }
+}
+
+void CSizingControlBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler)
+{
+    BOOL bNeedPaint = FALSE;
+
+    CPoint pt;
+    ::GetCursorPos(&pt);
+    BOOL bHit = (OnNcHitTest(pt) == HTCLOSE);
+    BOOL bLButtonDown = (::GetKeyState(VK_LBUTTON) < 0);
+
+    BOOL bWasPushed = m_biHide.bPushed;
+    m_biHide.bPushed = bHit && bLButtonDown;
+
+    BOOL bWasRaised = m_biHide.bRaised;
+    m_biHide.bRaised = bHit && !bLButtonDown;
+
+    bNeedPaint |= (m_biHide.bPushed ^ bWasPushed) || 
+                  (m_biHide.bRaised ^ bWasRaised);
+
+    if (bNeedPaint)
+        SendMessage(WM_NCPAINT);
+}
+
+void CSizingControlBar::LoadState(LPCTSTR lpszProfileName)
+{
+    ASSERT_VALID(this);
+    ASSERT(GetSafeHwnd()); // must be called after Create()
+
+    CWinApp* pApp = AfxGetApp();
+
+    TCHAR szSection[256];
+    wsprintf(szSection, _T("%s-SCBar-%d"), lpszProfileName,
+        GetDlgCtrlID());
+
+    m_szHorz.cx = max(m_szMin.cx, (int) pApp->GetProfileInt(szSection,
+        _T("sizeHorzCX"), m_szHorz.cx));
+    m_szHorz.cy = max(m_szMin.cy, (int) pApp->GetProfileInt(szSection, 
+        _T("sizeHorzCY"), m_szHorz.cy));
+
+    m_szVert.cx = max(m_szMin.cx, (int) pApp->GetProfileInt(szSection, 
+        _T("sizeVertCX"), m_szVert.cx));
+    m_szVert.cy = max(m_szMin.cy, (int) pApp->GetProfileInt(szSection, 
+        _T("sizeVertCY"), m_szVert.cy));
+
+    m_szFloat.cx = max(m_szMin.cx, (int) pApp->GetProfileInt(szSection,
+        _T("sizeFloatCX"), m_szFloat.cx));
+    m_szFloat.cy = max(m_szMin.cy, (int) pApp->GetProfileInt(szSection,
+        _T("sizeFloatCY"), m_szFloat.cy));
+}
+
+void CSizingControlBar::SaveState(LPCTSTR lpszProfileName)
+{
+    // place your SaveState or GlobalSaveState call in
+    // CMainFrame::DestroyWindow(), not in OnDestroy()
+    ASSERT_VALID(this);
+    ASSERT(GetSafeHwnd());
+
+    CWinApp* pApp = AfxGetApp();
+
+    TCHAR szSection[256];
+    wsprintf(szSection, _T("%s-SCBar-%d"), lpszProfileName,
+        GetDlgCtrlID());
+
+    pApp->WriteProfileInt(szSection, _T("sizeHorzCX"), m_szHorz.cx);
+    pApp->WriteProfileInt(szSection, _T("sizeHorzCY"), m_szHorz.cy);
+
+    pApp->WriteProfileInt(szSection, _T("sizeVertCX"), m_szVert.cx);
+    pApp->WriteProfileInt(szSection, _T("sizeVertCY"), m_szVert.cy);
+
+    pApp->WriteProfileInt(szSection, _T("sizeFloatCX"), m_szFloat.cx);
+    pApp->WriteProfileInt(szSection, _T("sizeFloatCY"), m_szFloat.cy);
+}
+
+void CSizingControlBar::GlobalLoadState(LPCTSTR lpszProfileName)
+{
+    for (int i = 0; i < m_arrBars.GetSize(); i++)
+        ((CSizingControlBar*) m_arrBars[i])->LoadState(lpszProfileName);
+}
+
+void CSizingControlBar::GlobalSaveState(LPCTSTR lpszProfileName)
+{
+    for (int i = 0; i < m_arrBars.GetSize(); i++)
+        ((CSizingControlBar*) m_arrBars[i])->SaveState(lpszProfileName);
+}
+
+/////////////////////////////////////////////////////////////////////////
+// CSCBButton
+
+CSCBButton::CSCBButton()
+{
+    bRaised = FALSE;
+    bPushed = FALSE;
+}
+
+void CSCBButton::Paint(CDC* pDC)
+{
+    CRect rc = GetRect();
+
+    if (bPushed)
+        pDC->Draw3dRect(rc, ::GetSysColor(COLOR_BTNSHADOW),
+            ::GetSysColor(COLOR_BTNHIGHLIGHT));
+    else
+        if (bRaised)
+            pDC->Draw3dRect(rc, ::GetSysColor(COLOR_BTNHIGHLIGHT),
+                ::GetSysColor(COLOR_BTNSHADOW));
+
+    COLORREF clrOldTextColor = pDC->GetTextColor();
+    pDC->SetTextColor(::GetSysColor(COLOR_BTNTEXT));
+    int nPrevBkMode = pDC->SetBkMode(TRANSPARENT);
+    CFont font;
+    int ppi = pDC->GetDeviceCaps(LOGPIXELSX);
+    int pointsize = MulDiv(60, 96, ppi); // 6 points at 96 ppi
+    font.CreatePointFont(pointsize, _T("Marlett"));
+    CFont* oldfont = pDC->SelectObject(&font);
+
+    pDC->TextOut(ptOrg.x + 2, ptOrg.y + 2, CString(_T("r"))); // x-like
+    
+    pDC->SelectObject(oldfont);
+    pDC->SetBkMode(nPrevBkMode);
+    pDC->SetTextColor(clrOldTextColor);
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.h
new file mode 100644 (file)
index 0000000..8d23a42
--- /dev/null
@@ -0,0 +1,195 @@
+/////////////////////////////////////////////////////////////////////////
+// Copyright (C) 1998, 1999 by Cristi Posea
+// All rights reserved
+//
+// Use and distribute freely, except: don't remove my name from the
+// source or documentation (don't take credit for my work), mark your
+// changes (don't get me blamed for your possible bugs), don't alter
+// or remove this notice.
+// No warrantee of any kind, express or implied, is included with this
+// software; use at your own risk, responsibility for damages (if any) to
+// anyone resulting from the use of this software rests entirely with the
+// user.
+//
+// This class is intended to be used as a base class. Do not simply add
+// your code to this file - instead create a new class derived from
+// CSizingControlBar and put there what you need.
+// Modify this file only to fix bugs, and don't forget to send me a copy.
+//
+// Send bug reports, bug fixes, enhancements, requests, flames, etc.,
+// and I'll try to keep a version up to date.  I can be reached at:
+//    cristip@dundas.com
+//
+// More details at MFC Programmer's SourceBook
+// http://www.codeguru.com/docking/docking_window.shtml or search
+// www.codeguru.com for my name if the article was moved.
+//
+/////////////////////////////////////////////////////////////////////////
+
+#if !defined(__SIZECBAR_H__)
+#define __SIZECBAR_H__
+
+#include <afxpriv.h>    // for CDockContext
+#include <afxtempl.h>   // for CArray
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+/////////////////////////////////////////////////////////////////////////
+// CSCBButton (button info) helper class
+
+class CSCBButton
+{
+public:
+    CSCBButton();
+
+    void Move(CPoint ptTo) {ptOrg = ptTo; };
+    CRect GetRect() { return CRect(ptOrg, CSize(11, 11)); };
+    void Paint(CDC* pDC);
+
+    BOOL    bPushed;
+    BOOL    bRaised;
+
+protected:
+    CPoint  ptOrg;
+};
+
+/////////////////////////////////////////////////////////////////////////
+// CSCBDockBar dummy class for access to protected members
+
+class CSCBDockBar : public CDockBar
+{
+    friend class CSizingControlBar;
+};
+
+/////////////////////////////////////////////////////////////////////////
+// CSizingControlBar control bar styles
+
+#define SCBS_EDGELEFT       0x00000001
+#define SCBS_EDGERIGHT      0x00000002
+#define SCBS_EDGETOP        0x00000004
+#define SCBS_EDGEBOTTOM     0x00000008
+#define SCBS_EDGEALL        0x0000000F
+#define SCBS_SHOWEDGES      0x00000010
+#define SCBS_GRIPPER        0x00000020
+
+/////////////////////////////////////////////////////////////////////////
+// CSizingControlBar control bar
+
+#ifndef baseCSizingControlBar
+#define baseCSizingControlBar CControlBar
+#endif
+
+class CSizingControlBar;
+typedef CTypedPtrArray <CPtrArray, CSizingControlBar*> CSCBArray;
+
+class CSizingControlBar : public baseCSizingControlBar
+{
+    DECLARE_DYNAMIC(CSizingControlBar);
+
+// Construction
+protected:
+    CSizingControlBar();
+
+public:
+    virtual BOOL Create(LPCTSTR lpszWindowName, CWnd* pParentWnd,
+        CSize sizeDefault, BOOL bHasGripper, UINT nID,
+        DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP);
+
+// Attributes
+public:
+    CSize m_szHorz;
+    CSize m_szVert;
+    CSize m_szFloat;
+    const BOOL IsFloating() const;
+    const BOOL IsHorzDocked() const;
+    const BOOL IsVertDocked() const;
+    const BOOL IsSideTracking() const;
+
+// Operations
+public:
+    virtual void LoadState(LPCTSTR lpszProfileName);
+    virtual void SaveState(LPCTSTR lpszProfileName);
+    static void GlobalLoadState(LPCTSTR lpszProfileName);
+    static void GlobalSaveState(LPCTSTR lpszProfileName);
+
+// Overridables
+    virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+// Overrides
+public:
+    // ClassWizard generated virtual function overrides
+    //{{AFX_VIRTUAL(CSizingControlBar)
+    public:
+    virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
+    virtual CSize CalcDynamicLayout(int nLength, DWORD dwMode);
+    virtual BOOL DestroyWindow();
+    //}}AFX_VIRTUAL
+
+// Implementation
+public:
+    virtual ~CSizingControlBar();
+    
+protected:
+    // implementation helpers
+    UINT GetEdgeHTCode(int nEdge);
+    BOOL GetEdgeRect(CRect rcWnd, UINT nHitTest, CRect& rcEdge);
+    virtual void StartTracking(UINT nHitTest);
+    virtual void StopTracking();
+    virtual void OnTrackUpdateSize(CPoint& point);
+    virtual void OnTrackInvertTracker();
+    virtual void NcPaintGripper(CDC* pDC, CRect rcClient);
+
+    virtual void AlignControlBars();
+    const int FindSizingBar(CControlBar* pBar) const;
+    void GetRowInfo(int& nFirst, int& nLast, int& nThis);
+    void GetRowSizingBars(CSCBArray& arrSCBars);
+    BOOL NegociateSpace(int nLengthAvail, BOOL bHorz);
+
+protected:
+    static CSCBArray    m_arrBars;
+
+    DWORD   m_dwSCBStyle;
+    UINT    m_htEdge;
+
+    CSize   m_szMin;
+    CSize   m_szMinT;
+    CSize   m_szMaxT;
+    CSize   m_szOld;
+    CPoint  m_ptOld;
+    BOOL    m_bTracking;
+    BOOL    m_bKeepSize;
+    BOOL    m_bParentSizing;
+    BOOL    m_bDragShowContent;
+    UINT    m_nDockBarID;
+    int     m_cxEdge;
+    int     m_cyGripper;
+
+    CSCBButton m_biHide;
+
+// Generated message map functions
+protected:
+    //{{AFX_MSG(CSizingControlBar)
+    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+    afx_msg void OnNcPaint();
+    afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);
+    afx_msg UINT OnNcHitTest(CPoint point);
+    afx_msg void OnCaptureChanged(CWnd *pWnd);
+    afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);
+    afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
+    afx_msg void OnMouseMove(UINT nFlags, CPoint point);
+    afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
+    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
+    afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
+    afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
+    afx_msg void OnNcLButtonUp(UINT nHitTest, CPoint point);
+    afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos);
+    afx_msg void OnPaint();
+    //}}AFX_MSG
+
+    DECLARE_MESSAGE_MAP()
+};
+
+#endif // !defined(__SIZECBAR_H__)
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.html b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/SizeCBar.html
new file mode 100644 (file)
index 0000000..1158584
--- /dev/null
@@ -0,0 +1,180 @@
+
+
+<!-- This must be included -->
+<html>
+<head>
+       <title>The Code Project - CSizingControlBar - a resizable control bar</title>
+       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+       <meta HTTP-EQUIV="Reply-to" CONTENT="mailto:webmaster@codeproject.com">
+       <meta NAME="Description" CONTENT="Free source code and tutorials for Windows developers.">
+       <meta Name="keywords" Content="Free source code, Visual C++, MFC, Windows, GUI, MFC, docking">
+       <meta NAME="Robots" CONTENT="ALL">
+       <meta NAME="Copyright" CONTENT="Copyright Â© 1999-2000 CodeProject.com, All Rights Reserved.">
+       <meta NAME="Rating" CONTENT="Safe For Kids">
+       <meta NAME="Revisit-after" CONTENT="1 days">
+       <meta NAME="Classification" CONTENT="Software">
+       <meta NAME="Distribution" CONTENT="Global">
+       <meta NAME="Author" CONTENT="Chris Maunder">
+       <meta NAME="Language" CONTENT="english">
+       <link rel="stylesheet" href="/styles/global.css">
+</head>
+
+
+<body text=black bgColor=white aLink=red link=blue vLink=navy>
+
+<!-- Header-->
+<table width="100%" border=0 cellspacing=1 cellpadding=3>
+
+<tr>
+
+<td width="80%" bgcolor=#FBEDBB>
+<h1 align=center>CSizingControlBar - a resizable control bar</h1>
+<h4 align=center><a href="mailto:cristi@datamekanix.com">Cristi Posea</a></h4>
+<p align=center><i><font size=-1 style="font-size:9pt">DevStudio-like docking window&nbsp;</font></i></p>
+<p align=center><font style="font-size:8pt">
+<a href="/script/Newsletter/subscribe.asp">Newsletter</a> | 
+<a href="/General/vsforum.asp">Forums</a> | 
+<a href="/Search.asp">Search</a> | 
+<a href="/latest.asp">Latest Updates</a> | 
+<a href="/submit.html">Submit an Article</a> |
+<a href="/contest.asp"><b style="color:red">Win a Prize!</b></a>
+</font></p>
+</td>
+
+<td width="20%" valign="top" align="left" bgcolor=#FBEDBB>
+<p><font size=1>
+Level: &nbsp;&nbsp; Advanced<br>
+Posted: &nbsp; 17 Nov 1999<br>
+Updated: 12 Jan 2000<br>
+<dl>
+<dt>Platform:</dt><dd>VC++ 5.0-6.0, NT 4.0, Win95/98/2k</dd>
+<dt>Keywords:</dt><dd>GUI, MFC, docking</dd>
+</dl>
+</font>
+</td>
+
+</tr>
+<!-- Quick nav links -->
+<tr><td nowrap><font style="font-size:65%;"><a href='http://www.codeproject.com'>Home</a>
+
+&gt;&gt; <a href='http://www.codeproject.com/docking/'>Toolbars &amp; Docking Windows</a>
+
+&gt;&gt; <a href='http://www.codeproject.com/docking/index.asp#General'>General</a>
+
+</font></td>
+<td align=right nowrap><font style="font-size:65%;">Problems? Suggestions?
+<a href="mailto:webmaster@codeproject.com">Email us</a></font></td></tr>
+
+</table>
+<hr noshade size=1>
+
+<!-- Article Starts -->
+
+<h3>Features of CSizingControlBar 2.31</h3>
+
+<ul>
+<li>Resizable control bar, that can be resized both when docked and when floating.
+<li>Multiple sizing control bars can be docked on the same row/column.
+<li>Full dynamic resizing, both when docked and floating, including diagonal resizing when floating.
+<li>State persistence support (SaveState/LoadState).
+<li>Gripper with "hide bar" flat button.
+<li>Memory DC flickerless NC painting.
+<li>Sample extension class with focus autosensing text caption. On Win98/Win2k, the caption is painted with gradient.
+<li>No custom resources were used (bitmaps, cursors, strings, etc.), so the integration is easier and you have full control over the resources you eventually use in derived classes.
+<li>Easy to use: just derive your own control bar(s) from CSizingControlBar then add your child controls.
+</ul>
+
+<h3>Instructions</h3>
+<p>Derive a class from CSizingControlBar (you have an example in mybar.h and mybar.cpp).<br>
+Add a member variable to CMainFrame (in mainfrm.h).
+
+<pre>
+CMyBar m_wndMyBar;
+</pre>
+
+<p>Create the bar in CMainFrame::OnCreate(). Then set bar styles, enable it to dock... like any control bar. 
+<p>Some experience in working with control bars (like toolbars) is required.
+
+<pre>
+if (!m_wndMyBar.Create(_T("My Bar"), this, CSize(200, 100),
+    TRUE /*bHasGripper*/, AFX_IDW_CONTROLBAR_FIRST + 32))
+{
+    TRACE0("Failed to create mybar\n");
+    return -1;
+    // fail to create
+}
+m_wndMyBar.SetBarStyle(m_wndMyBar.GetBarStyle() |
+    CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
+m_wndMyBar.EnableDocking(CBRS_ALIGN_ANY);
+EnableDocking(CBRS_ALIGN_ANY);
+
+m_pFloatingFrameClass = RUNTIME_CLASS(CSCBMiniDockFrameWnd);
+
+DockControlBar(&m_wndMyBar, AFX_IDW_DOCKBAR_LEFT);
+</pre>
+
+Note: Starting with version 2.3, the line
+
+<pre>
+m_pFloatingFrameClass = RUNTIME_CLASS(CSCBMiniDockFrameWnd);
+</pre>
+
+must be added to CMainFrame::OnCreate(), <i>after</i> the EnableDocking() call. This is required!
+
+<h3>Plugging in the CSizingControlBarCF class</h3>
+
+<p>1. Add scbarcf.h and scbarcf.cpp to your project.
+<p>2. In your derived class header file change the "#include "sizecbar.h" to "#include "scbarcf.h".
+<p>3. Replace the base class for your custom bar from CSizingControlBar to CSizingControlBarCF. If you used the baseCMyBar trick, you only have to change a line. Otherwise, replace all occurences of CSizingControlBar with CSizingControlBarCF in your derived class.
+<p>4. Rebuild and run. Easy, huh?
+
+<h3>Remarks</h3>
+<p>This class is intended to be used as a base class.
+Do not simply add your code to the sizecbar.* files - instead create a new class derived from CSizingControlBar and put there what you need.
+
+<p><b>Window IDs</b>: You can see above that the control bar is created with the ID AFX_IDW_CONTROLBAR_FIRST + 32.
+The usage of IDs in the range of AFX_IDW_CONTROLBAR_FIRST + 32 .. AFX_IDW_CONTROLBAR_LAST is required only if the bar will not be enabled for docking (that's is - it will stay fixed right under the frame's menu).
+But in this situation you won't be able to fully use the features of this class, so if you will enable it to dock (a reasonable guess :) then you can use any valid window ID.<br>
+Another place where the IDs are important is the saving/loading of the bar's state. 
+You must use different IDs for each control bar that is enabled to dock, and this includes the other bars too.
+For example, if you have two toolbars, you can create the first one with the default ID (which is AFX_IDW_TOOLBAR = AFX_IDW_CONTROLBAR_FIRST), but the second one must have a different ID.
+
+<p><b>OnUpdateCmdUI</b>: This member function is pure virtual in CControlBar (the base class of CSizingControlBar).
+Its purpose is to allow updating of controls at idle time (from here CCmdUI::DoUpdate() is called for the toolbars' buttons, dialogbars' controls, the panes of status bar, etc.).<br>
+However, I found it very useful to update the look of the "x" flat button (no timers needed).
+So, if you will use this function, don't forget to call the base class' member (see mybar.cpp).
+
+<p><b>Dynamic resizing</b>: This feature allows redrawing of the bar during resizing.
+Also all the bars are repositioned and redrawn if necessary.<br>
+The SPI_GETDRAGFULLWINDOWS system parameter is queried for this (it is enabled by the "Show window contents while dragging" checkbox in Display Properties).
+
+<p><b>CBRS_SIZE_DYNAMIC</b>: This bar style is required. Make sure you add it to the bar, otherwise the application will crash when the user floats a bar. You can add it using SetBarStyle() after Create(), or by changing the default style for Create() to something like: WS_VISIBLE | WS_CHILD | CBRS_TOP | CBRS_SIZE_DYNAMIC.
+
+<p><b>State persistence</b>: The common MFC control bars' docking state is saved using CMainFrame::SaveBarState(). In addition to the info saved by this function, the CSizingControlBar class needs to save 3 sizes. This is done in CSizingControlBar::SaveState() function, so a m_wndMyBar.SaveState() call is required. Please note that the state storing code must be placed in CMainFrame's OnClose() or DestroyWindow(), not in OnDestroy(), because at the time WM_DESTROY message is received, the floating bars are already destroyed.<br>
+In CMainFrame::OnCreate(), the m_wndMyBar.LoadState() call must be placed before LoadBarState().<br>
+Alternatively, if you have multiple CSizingControlBar derived bars, you can call once the static member SizingControlBar::GlobalSaveState() instead of calling each bar's SaveState(). The same for LoadState() - there is a CSizingControlBar::GlobalLoadState() function. See both samples here for more details.
+
+<p>See also <a href="http://www.datamekanix.com">www.datamekanix.com</a> for a full changelog, FAQ, a dedicated message board and more.
+
+<!-- Article Ends -->
+<hr size="1" noshade align="center">
+
+
+
+<table width="100%">
+       <tr>
+       <td align="left" valign="top">
+       <h6><a href='http://www.codeproject.com'>Home</a>
+      &gt;&gt; <a href='http://www.codeproject.com/docking/'>Toolbars &amp; Docking Windows</a>
+      <br>last updated 12 Jan 2000</h6></td>
+       <td nowrap align="center" valign="top"> 
+       <h6>Copyright Â© CodeProject, 1999-2000.<br>All rights reserved</h6>
+       </td>
+       <td align="right" valign="top"> 
+       <h6><a href="mailto:webmaster@codeproject.com">webmaster@codeproject.com</a></h6>
+       </td>
+       </tr>
+</table>
+</body>
+</html>
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicBar.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicBar.cpp
new file mode 100644 (file)
index 0000000..edebbd4
--- /dev/null
@@ -0,0 +1,184 @@
+// cdxCDynamicBar.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "cdxCDynamicBar.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicBarDlg dialog
+/////////////////////////////////////////////////////////////////////////////
+
+IMPLEMENT_DYNAMIC(cdxCDynamicBarDlg,cdxCDynamicChildDlg);
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicBarDlg dialog
+/////////////////////////////////////////////////////////////////////////////
+
+BEGIN_MESSAGE_MAP(cdxCDynamicBarDlg, cdxCDynamicChildDlg)
+       ON_WM_CLOSE()
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicBarDlg functions
+/////////////////////////////////////////////////////////////////////////////
+
+bool cdxCDynamicBarDlg::Create(cdxCDynamicBar *pBar)
+{
+       return cdxCDynamicChildDlg::Create(m_nID,(CWnd *)pBar) != FALSE;
+}
+
+
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicBar
+/////////////////////////////////////////////////////////////////////////////
+
+IMPLEMENT_DYNAMIC(cdxCDynamicBar,CSizingControlBar);
+
+/////////////////////////////////////////////////////////////////////////////
+// construction
+/////////////////////////////////////////////////////////////////////////////
+
+BEGIN_MESSAGE_MAP(cdxCDynamicBar, CSizingControlBar)
+       //{{AFX_MSG_MAP(cdxCDynamicBar)
+       ON_WM_SIZING()
+       ON_WM_SIZE()
+       ON_WM_NCCALCSIZE()
+       //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicBar message handlers
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * create bar & dialog
+ */
+
+BOOL cdxCDynamicBar::Create(LPCTSTR lpszWindowName, CWnd* pParentWnd,
+        CSize sizeDefault, BOOL bHasGripper, UINT nID,
+        DWORD dwStyle)
+{
+       if(!( CSizingControlBar::Create(        lpszWindowName,
+                                                                                               pParentWnd,
+                                                                                               sizeDefault,
+                                                                                               bHasGripper,
+                                                                                               nID,
+                                                                                               dwStyle|WS_CLIPCHILDREN) ))
+       {
+               ASSERT(false);
+               return FALSE;
+       }
+
+       if(!( m_rDlg.Create(this) ))
+       {
+               DestroyWindow();
+               ASSERT(false);
+               return FALSE;
+       }
+
+       ASSERT(::IsWindow(m_hWnd));
+       ASSERT(m_rDlg.IsWindow());
+       ASSERT(!m_rectBorder.IsRectNull());
+
+       // the following code will even be provided by 
+       m_szMin.cx                              =       m_rectBorder.left + m_rectBorder.right;
+       m_szMin.cy                              =       m_rectBorder.top  + m_rectBorder.bottom;
+       m_szMin                                 +=      m_rDlg.m_szMin;
+
+       return TRUE;
+}
+                 
+/*
+ * route command UI updates to dialog
+ */
+
+void cdxCDynamicBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler)
+{
+       CSizingControlBar::OnUpdateCmdUI(pTarget,bDisableIfNoHndler);
+       if(m_rDlg.IsWindow())
+               m_rDlg.OnUpdateCmdUI(pTarget,bDisableIfNoHndler);
+}
+
+/*
+ * when sizing starts, we'll force the super-duper anti-flickering mode :
+ */
+
+void cdxCDynamicBar::OnSizing(UINT fwSide, LPRECT pRect) 
+{
+       CSizingControlBar::OnSizing(fwSide, pRect);
+       m_rDlg.StartAntiFlickering((fwSide == WMSZ_BOTTOM) ||
+                                                                               (fwSide == WMSZ_BOTTOMRIGHT) ||
+                                                                               (fwSide == WMSZ_RIGHT));
+}
+
+/*
+ * let my dialog cover the entire area
+ */
+
+void cdxCDynamicBar::OnSize(UINT nType, int cx, int cy) 
+{
+       CSizingControlBar::OnSize(nType, cx, cy);
+       if(::IsWindow(m_hWnd) && m_rDlg.IsWindow() && (nType != SIZE_MINIMIZED))
+       {
+               m_rDlg.SetWindowPos(    NULL,0,0,cx,cy, SWP_NOACTIVATE|
+                                                                                                                       SWP_NOOWNERZORDER|
+                                                                                                                       SWP_NOZORDER);
+                                                                                                                       
+       }       
+}
+
+/*
+ * OnNcCalcSize() is used to calculate the optimum
+ * min size for the dialog.
+ */
+
+void cdxCDynamicBar::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) 
+{
+       m_rectBorder                    =       lpncsp->rgrc[0];                // load initial rectangle
+
+       CSizingControlBar::OnNcCalcSize(bCalcValidRects, lpncsp);
+
+       ASSERT(m_rectBorder.left <= lpncsp->rgrc[0].left);
+       ASSERT(m_rectBorder.top <= lpncsp->rgrc[0].top);
+       ASSERT(m_rectBorder.right >= lpncsp->rgrc[0].right);
+       ASSERT(m_rectBorder.bottom >= lpncsp->rgrc[0].bottom);
+
+       m_rectBorder.left               =       lpncsp->rgrc[0].left - m_rectBorder.left;
+       m_rectBorder.top                =       lpncsp->rgrc[0].top  - m_rectBorder.top;
+       m_rectBorder.right      =       m_rectBorder.right  - lpncsp->rgrc[0].right;
+       m_rectBorder.bottom     =       m_rectBorder.bottom - lpncsp->rgrc[0].bottom;
+       m_szMin                                 =       m_rDlg.m_szMin;
+       m_szMin.cx                              +=      m_rectBorder.left + m_rectBorder.right;
+       m_szMin.cy                              +=      m_rectBorder.top  + m_rectBorder.bottom;
+}
+
+/*
+ * route commands a long...
+ */
+
+BOOL cdxCDynamicBar::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) 
+{
+       if(m_rDlg.IsWindow() && m_rDlg.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
+               return TRUE;
+       return CSizingControlBar::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
+}
+
+/*
+ * route commands ...
+ */
+
+BOOL cdxCDynamicBar::OnCommand(WPARAM wParam, LPARAM lParam) 
+{
+       if(m_rDlg.IsWindow() && m_rDlg.OnCommand(wParam, lParam))
+               return TRUE;
+       return CSizingControlBar::OnCommand(wParam, lParam);
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicBar.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicBar.h
new file mode 100644 (file)
index 0000000..5a9e924
--- /dev/null
@@ -0,0 +1,168 @@
+#if !defined(AFX_CDXCDYNAMICBAR_H__910C28F6_6854_11D3_803A_000000000000__INCLUDED_)
+#define AFX_CDXCDYNAMICBAR_H__910C28F6_6854_11D3_803A_000000000000__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+// cdxCDynamicBar.h : header file
+//
+
+#include "SizeCBar.h"
+#include       "cdxCDynamicDialog.h"
+
+/*
+ * cdxCDynamicDlgBarT
+ * ==================
+ * A resizable dialog bar.
+ * The entire bar stuff is handled using
+ *   CSizingControlBar by Cristi Posea <cristip@dundas.com>
+ *   http://www.codeguru.com/docking/docking_window2.shtml
+ *   titled "Resizable Docking Window 2".
+ * To use it, the following steps must be performed:
+ *
+ * a) Create a new dialog say
+ *       CMyBarDlg
+ *
+ * b) Change its base class from CDialog to cdxCDynamicBarDlg.
+ *
+ * c) In your mainframe, add a member variable
+ *       cdxCDynamicDlgBarT<MyBarDialog> m_wndMyBar;
+ *
+ * e) Add the following code to your CMainFrame::OnCreate()
+ *
+ *    if (!m_wndMyBar.Create(_T("My Bar"), this, CSize(200, 100),
+ *         TRUE, AFX_IDW_CONTROLBAR_FIRST + 32))
+ *    { 
+ *                      TRACE0("Failed to create mybar\n");
+ *                      return -1;      // fail to create
+ *    }
+ *
+ *             m_wndMyBar.SetBarStyle(m_wndMyBar.GetBarStyle() |
+ *                      CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
+ *
+ *             m_wndMyBar.EnableDocking(CBRS_ALIGN_ANY);
+ *             EnableDocking(CBRS_ALIGN_ANY);              // <---- needed only once for the frame
+ *             DockControlBar(&m_wndMyBar, AFX_IDW_DOCKBAR_LEFT);
+ *
+ * f) Refer to URL stated above to learn more about the features of the
+ *    CSizingControlBar class.
+ */
+
+/*
+ * cdxCDynamicBarDlg
+ * =================
+ * The child dialog.
+ */
+
+class cdxCDynamicBarDlg : public cdxCDynamicChildDlg
+{
+       DECLARE_DYNAMIC(cdxCDynamicBarDlg);
+
+       friend class cdxCDynamicBar;
+
+public:
+       const UINT      m_nID;
+
+public:
+       cdxCDynamicBarDlg(UINT idd, CWnd *pParent = NULL) : m_nID(idd), cdxCDynamicChildDlg(idd,pParent) { }
+       virtual ~cdxCDynamicBarDlg() {}
+
+       //
+       // Create() without parameters :)
+       //
+
+       virtual bool Create(cdxCDynamicBar *pBar);
+
+       //
+       // this handler might be used to update things
+       //
+protected:
+       virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler) { UpdateDialogControls(pTarget,bDisableIfNoHndler); }
+
+       //
+       // this catches OnOK, OnCancel and OnClose
+       // to protect the dialog from being closed accidentially
+       //
+protected:
+       virtual void OnOK() {}
+       virtual void OnCancel() {}
+       afx_msg void OnClose() { OnCancel(); }
+
+       DECLARE_MESSAGE_MAP();
+};
+
+/*
+ * cdxCDynamicBar
+ * ==============
+ * The bar.
+ */
+
+class cdxCDynamicBar : public CSizingControlBar
+{
+       DECLARE_DYNAMIC(cdxCDynamicBar);
+
+private:
+       cdxCDynamicBarDlg       & m_rDlg;
+       CRect                                   m_rectBorder;
+
+public:
+       cdxCDynamicBar(cdxCDynamicBarDlg & rDlg) : m_rDlg(rDlg), m_rectBorder(0,0,0,0) {}
+       virtual ~cdxCDynamicBar() {}
+
+// Attributes
+public:
+    virtual BOOL Create(LPCTSTR lpszWindowName, CWnd* pParentWnd,
+        CSize sizeDefault, BOOL bHasGripper, UINT nID,
+        DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP);
+
+// Operations
+public:
+
+// Overrides
+       // ClassWizard generated virtual function overrides
+       //{{AFX_VIRTUAL(cdxCDynamicBar)
+       public:
+       virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
+       protected:
+       virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
+       //}}AFX_VIRTUAL
+
+// Implementation
+protected:
+    virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
+
+       // Generated message map functions
+protected:
+       //{{AFX_MSG(cdxCDynamicBar)
+       afx_msg void OnSizing(UINT fwSide, LPRECT pRect);
+       afx_msg void OnSize(UINT nType, int cx, int cy);
+       afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);
+       //}}AFX_MSG
+       DECLARE_MESSAGE_MAP();
+};
+
+/*
+ * cdxCDynamicBarT
+ * ===============
+ * A nice template class, makes life easier :)
+ */
+
+template<class DLG>
+class cdxCDynamicBarT : public cdxCDynamicBar
+{
+public:
+       DLG             m_wndDlg;
+
+public:
+       cdxCDynamicBarT() : m_wndDlg(), cdxCDynamicBar(m_wndDlg) {}
+       virtual ~cdxCDynamicBarT() {  m_wndDlg.DestroyWindow(); cdxCDynamicBar::DestroyWindow(); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicBarDlg inlines
+/////////////////////////////////////////////////////////////////////////////
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_CDXCDYNAMICBAR_H__910C28F6_6854_11D3_803A_000000000000__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicControlsManager.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicControlsManager.cpp
new file mode 100644 (file)
index 0000000..b3334e9
--- /dev/null
@@ -0,0 +1,779 @@
+// cdxCDynamicControlsManager.cpp: implementation of the cdxCDynamicControlsManager class.
+//
+//////////////////////////////////////////////////////////////////////
+
+/*
+ * you should define OEMRESOURCE
+ * in your project settings (C/C++, General) !
+ */
+
+#include "stdafx.h"
+#include "cdxCDynamicControlsManager.h"
+
+#include       <winuser.h>
+#include       <afxmt.h>
+
+#ifndef OBM_SIZE
+#define        OBM_SIZE                32766
+#pragma message("*** NOTE: cdxCDynamicControlsManager.cpp: Please define OEMRESOURCE in your project settings !")
+// taken from WinresRc.h
+// if not used for any reason
+#endif
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Some static variables
+/////////////////////////////////////////////////////////////////////////////
+
+#define        REGVAL_NOSTATE          -1
+#define        REGVAL_VISIBLE          1
+#define        REGVAL_HIDDEN           0
+#define        REGVAL_MAXIMIZED        1
+#define        REGVAL_ICONIC           0
+#define        REGVAL_INVALID          0
+#define        REGVAL_VALID            1
+
+/*
+ * registry value names
+ * (for StoreWindowPosition()/RestoreWindowPosition())
+ */
+
+static LPCTSTR lpszRegVal_Left         =       _T("Left"),
+                                       lpszRegVal_Right                =       _T("Right"),
+                                       lpszRegVal_Top                  =       _T("Top"),
+                                       lpszRegVal_Bottom               =       _T("Bottom"),
+                                       lpszRegVal_Visible      =       _T("Visibility"),
+                                       lpszRegVal_State                =       _T("State"),
+                                       lpszRegVal_Valid                =       _T("(valid)");
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicControlsManager::ControlData::ControlEntry
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// construction/destruction
+/////////////////////////////////////////////////////////////////////////////
+
+cdxCDynamicControlsManager::ControlData::ControlEntry::ControlEntry(CWnd & ctrl, ControlData & rMaster)
+:      m_rMaster(rMaster), m_rCtrl(ctrl)
+{
+       if(m_pNext = rMaster.m_pCtrl)
+               m_pNext->m_pPrev        =       this;
+       rMaster.m_pCtrl =       this;
+       m_pPrev                         =       NULL;
+
+       // raise total counter
+       ++rMaster.m_rMaster.m_iTotalCnt;
+}
+
+cdxCDynamicControlsManager::ControlData::ControlEntry::~ControlEntry()
+{
+       if(m_pPrev)
+       {
+               if(m_pPrev->m_pNext = m_pNext)
+                       m_pNext->m_pPrev        =       m_pPrev;
+       }
+       else
+       {
+               ASSERT( m_rMaster.m_pCtrl == this );
+               if(m_rMaster.m_pCtrl = m_pNext)
+                       m_pNext->m_pPrev        =       NULL;
+       }
+
+       // lower
+       ASSERT( m_rMaster.m_rMaster.m_iTotalCnt > 0 );
+       ++m_rMaster.m_rMaster.m_iTotalCnt;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicControlsManager::ControlData
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// construction/destruction
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * constructor
+ * copies all paramaters and gets the controls initial position using
+ * GetWindowPos().
+ *
+ * NOTE that the constructor need ctrl.m_hWnd to exist (in contrast to
+ * Add()
+ */
+
+cdxCDynamicControlsManager::ControlData::ControlData(cdxCDynamicControlsManager & rMaster, CWnd & ctrl, const PositionSetup & rPosSetup)
+:      m_rMaster(rMaster), m_pCtrl(NULL),
+       m_pNext(NULL), m_pPrev(NULL),
+       m_posSetup(rPosSetup)
+{
+       ASSERT(::IsWindow(ctrl.m_hWnd));                // control must have already been created !
+       ASSERT(rPosSetup.IsValid());
+
+       //
+       // get initial values
+       //
+
+       WINDOWPLACEMENT wpl;
+       VERIFY( ctrl.GetWindowPlacement(&wpl) );
+
+       m_rectOriginal  =       wpl.rcNormalPosition;
+
+       //
+       // remember control
+       //
+
+       new ControlEntry(ctrl,*this);
+       ASSERT(m_pCtrl != NULL);
+
+       //
+       // link us to the cdxCDynamicControlsManager's list
+       //
+
+       if(m_pNext = m_rMaster.m_pFirst)
+               m_pNext->m_pPrev        =       this;
+       m_pPrev =       NULL;
+       m_rMaster.m_pFirst      =       this;
+}
+
+/*
+ * detach from list
+ * The m_Ctrl deletes all children by itself
+ */
+
+cdxCDynamicControlsManager::ControlData::~ControlData()
+{
+       //
+       // delete all control references
+       //
+
+       while(m_pCtrl)
+               delete m_pCtrl;
+
+       //
+       // unlink from list
+       //
+
+       if(m_pPrev)
+       {
+               if(m_pPrev->m_pNext = m_pNext)
+                       m_pNext->m_pPrev        =       m_pPrev;
+       }
+       else
+       {
+               ASSERT(m_rMaster.m_pFirst == this);
+               if(m_rMaster.m_pFirst = m_pNext)
+                       m_pNext->m_pPrev        =       NULL;
+       }
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicControlsManager::ControlData virtuals
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * checks whether the CWnd is part of this control data
+ */
+
+bool cdxCDynamicControlsManager::ControlData::IsMember(CWnd & ctrl) const
+{
+       for(const ControlEntry *pEntry = m_pCtrl; pEntry; pEntry = pEntry->GetNext())
+               if(*pEntry == ctrl)
+                       return true;
+
+       return false;
+}
+
+/*
+ * removes a CWnd from this chain
+ */
+
+bool cdxCDynamicControlsManager::ControlData::Rem(CWnd & ctrl)
+{
+       for(ControlEntry *pEntry = m_pCtrl; pEntry; pEntry = pEntry->GetNext())
+               if(*pEntry == ctrl)
+               {
+                       delete pEntry;
+                       return true;
+               }
+
+       return false;
+}
+
+/*
+ * Get current position
+ */
+
+CRect cdxCDynamicControlsManager::ControlData::GetCurrentPosition() const
+{
+       if(!IsUsed())
+       {
+               ASSERT(false);                  // all sub-controls have been deleted
+               return CRect(0,0,0,0);
+       }
+
+       WINDOWPLACEMENT wpl;
+       VERIFY( m_pCtrl->GetCWnd().GetWindowPlacement(&wpl) );
+       return CRect(wpl.rcNormalPosition);
+}
+
+/*
+ * modify initial setup
+ * NOTE: this function does not move the controls.
+ * You habe to call cdxCDynamicControlsManager::ReorganizeControls past
+ * using this function
+ */
+
+bool cdxCDynamicControlsManager::ControlData::Modify(const CRect & rectOriginal, const PositionSetup & rSetup)
+{
+       if((rectOriginal.left > rectOriginal.right) ||
+               (rectOriginal.top > rectOriginal.bottom) ||
+               !rSetup.IsValid())
+       {
+               ASSERT(false);                  // bad function call
+               return false;
+       }
+
+       m_rectOriginal  =       rectOriginal;
+       m_posSetup              =       rSetup;
+       return true;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicControlsManager
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// handling events from CWnd
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * this function initializes the following members:
+ * m_pWnd                      -       the window handle
+ * m_szCurrent         -       the current window's size
+ * m_szMin                     -       the minimum window's size (taken from current size)
+ * m_szMax                     -       the maximum window's size (set to (0,0) <=> don't change maximum)
+ * m_wndSizeIcon       -       the icon (if wanted)
+ *
+ * parameters:
+ * rWnd                                -       the window to supervise
+ * fd                                  -       in which directions can we size the window (does only apply to user-sizing)
+ * bSizeIcon           -       do you want a sizable icon ?
+ * pBaseClientSize-    if non-zero, this defines the real (normal) size of the
+ *                                                     window relative to all furher calculations will be made.
+ *                                                     if zero, the current window's size will be taken.
+ */
+
+void cdxCDynamicControlsManager::DoInitWindow(CWnd & rWnd, Freedom fd, bool bSizeIcon, const CSize * pBaseClientSize)
+{
+       ASSERT(m_pWnd == NULL);                                 // you MUST NOT call this function twice !
+       ASSERT(::IsWindow(rWnd.m_hWnd));                // rWnd MUST already exist !!
+
+       m_pWnd          =       &rWnd;
+       m_Freedom       =       fd;
+
+       //
+       // get current's window size
+       //
+
+       CRect                   rect;
+       m_pWnd->GetWindowRect(&rect);
+       CRect                   rectClient;
+       m_pWnd->GetClientRect(&rectClient);
+
+       if(!pBaseClientSize)
+       {
+               m_szClientRelative.cx   =       rectClient.Width();
+               m_szClientRelative.cy   =       rectClient.Height();
+
+               m_szMin.cx      =       rect.Width();
+               m_szMin.cy      =       rect.Height();
+       }
+       else
+       {
+               ASSERT((pBaseClientSize->cx > 0) && (pBaseClientSize->cy > 0));
+
+               m_szClientRelative      =       *pBaseClientSize;
+               m_szMin.cx                              =       m_szClientRelative.cx + (rect.Width() - rectClient.Width());
+               m_szMin.cy                              =       m_szClientRelative.cy + (rect.Height() - rectClient.Height());
+       }
+
+       m_szMax.cx      =       0;
+       m_szMax.cy      =       0;
+
+       //
+       // set up icon if wanted
+       //
+
+       if(bSizeIcon)
+       {
+               VERIFY( m_pWndSizeIcon = new cdxCSizeIconCtrl );
+               VERIFY( m_pWndSizeIcon->Create(m_pWnd,m_idSizeIcon) );  // creates my control; id is SIZE_CONTROL_ID
+
+               AddSzControl(*m_pWndSizeIcon,mdRepos,mdRepos);
+               m_pWndSizeIcon->ShowWindow(SW_SHOW);            // finally - show it
+       }
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * fill in MINMAXINFO as requested
+ * Call your CWnd's OnGetMinMaxInfo first !
+ *
+ * changed due to a but report by Michel Wassink <mww@mitutoyo.nl>
+ */
+
+void cdxCDynamicControlsManager::DoOnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
+{
+       if(IsReady() && !IsDisabled())
+       {
+               lpMMI->ptMinTrackSize.x =       m_szMin.cx;
+               lpMMI->ptMinTrackSize.y =       m_szMin.cy;
+
+               if(m_Freedom & fdHoriz)
+               {
+                       if(m_szMax.cx)
+                               lpMMI->ptMaxTrackSize.x =       m_szMax.cx;
+               }
+               else
+                       lpMMI->ptMaxTrackSize.x =       m_szMin.cx;
+
+               if(m_Freedom & fdVert)
+               {
+                       if(m_szMax.cy)
+                               lpMMI->ptMaxTrackSize.y =       m_szMax.cy;
+               }
+               else
+                       lpMMI->ptMaxTrackSize.y =       m_szMin.cy;
+       }
+}
+
+/*
+ * handle OnSize - we can't rely on cx,cy being client dimensions
+ * as stated in the documentation ...
+ */
+
+void cdxCDynamicControlsManager::DoOnSize(UINT nType, int cx, int cy)
+{
+       if(IsReady() && (nType != SIZE_MINIMIZED) && !IsDisabled())
+               ReorganizeControls(true);
+}
+
+/*
+ * free all memory
+ * after having called this function, you can reuse the object
+ * although I wouldn't recommend to do so :)
+ */
+
+void cdxCDynamicControlsManager::DoDestroyWindow()
+{
+       while(m_pFirst)
+       {
+               OnDeleteControlPosition(*m_pFirst);
+               delete m_pFirst;
+       }
+
+       if(m_pWndSizeIcon)
+       {
+               if(::IsWindow(m_pWndSizeIcon->m_hWnd))
+                       m_pWndSizeIcon->DestroyWindow();
+               delete m_pWndSizeIcon;
+               m_pWndSizeIcon  =       NULL;
+       }
+
+       m_pWnd = NULL;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// control positioning
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * Reposition (without current rectangle size)
+ *
+ * rectWin             -       window rectangle (including border)
+ * rectClient  -       window rectangle (client area)
+ *                Note that since release 6, rectClient.left and .top might be > zero
+ *                                        (for scrolling)
+ * bRedraw             -       invalidate & update window
+ */
+
+void cdxCDynamicControlsManager::ReorganizeControlsAdvanced(const CRect & rectWin, CRect rectClient, bool bRedraw)
+{
+       ASSERT(IsReady());
+
+       if(!GetTotalChildCnt())
+               return;
+
+       //
+       // we won't go smaller with the whole window than
+       // m_szMin
+       //
+
+       if(rectWin.Width() < m_szMin.cx)
+               rectClient.right        +=      (m_szMin.cx - rectWin.Width());
+       if(rectWin.Height() < m_szMin.cy)
+               rectClient.bottom       +=      (m_szMin.cy - rectWin.Height());
+
+       //
+       // we new replace all controls
+       //
+
+       CSize   szDelta;
+       szDelta.cx      =       rectClient.Width() - m_szClientRelative.cx;
+       szDelta.cy      =       rectClient.Height() - m_szClientRelative.cy;
+
+       CPoint  pntOffset       =       rectClient.TopLeft();
+
+       // newly added code by Rodger Bernstein
+
+       AFX_SIZEPARENTPARAMS layout;
+       ControlData                             *sz;
+       bool                                            bManual =       true;
+
+       if(!( layout.hDWP = ::BeginDeferWindowPos(GetTotalChildCnt()) ))
+       {
+               TRACE(_T("*** ERROR[cdxCDynamicControlsManager::ReorganizeControlsAdvanced()]: BeginDeferWindowPos() failed.\n"));
+       }
+       else
+       {
+               for(sz = m_pFirst; sz; sz = sz->GetNext())
+                       sz->OnSize(szDelta, &layout, &pntOffset);
+
+               if(!::EndDeferWindowPos(layout.hDWP))
+               {
+                       TRACE(_T("*** ERROR[cdxCDynamicControlsManager::ReorganizeControlsAdvanced()]: EndDeferWindowPos() failed.\n"));
+               }
+               else
+                       bManual =       false;
+       }
+
+       if(bManual)
+               for(sz = m_pFirst; sz; sz = sz->GetNext())
+                       sz->OnSize(szDelta, NULL);
+
+       if(bRedraw && m_pWnd->IsWindowVisible())
+       {
+               m_pWnd->RedrawWindow(NULL, NULL, RDW_UPDATENOW | RDW_NOERASE);
+       }
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// misc
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * change minimum and maximum height of window.
+ *
+ * szMin                                               -       new minimum size (use GetMinSize() to leave it as being before)
+ * szMax                                               -       new maximum size ( "  GetMaxSize() ")
+ *                                                                     Set to CSize(0,0) if you don't want a maximum size.
+ * bResizeIfNecessary  -       call FixWindowSize() past calculating new sizes.
+ *
+ * returns false if szMin and szMax are illegal (e.g. szMin > szMax)
+ */
+
+bool cdxCDynamicControlsManager::SetMinMaxSize(const CSize & szMin, const CSize & szMax, bool bResizeIfNecessary)
+{
+       ASSERT(IsReady());                      // DoInitWindow() not called ?
+
+       if((szMax.cx && (szMin.cx > szMax.cx)) ||
+               (szMax.cy && (szMin.cy > szMax.cy)))
+       {
+               return false;
+       }
+
+       m_szMin =       szMin;
+       m_szMax =       szMax;
+
+       if(bResizeIfNecessary)
+               FixWindowSize();
+
+       return true;
+}
+
+/*
+ * this function ensure that the window's size is between m_szMin and m_szMax.
+ * returns true if window size has been changed
+ */
+
+bool cdxCDynamicControlsManager::FixWindowSize()
+{
+       ASSERT(IsReady());                      // use DoInitWindow() first !
+
+       CSize   szCurrent       =       GetWindowSize(*m_pWnd),
+                       szDelta;
+
+       if(m_szMax.cx && (szCurrent.cx > m_szMax.cx))
+               szDelta.cx              =       m_szMax.cx - szCurrent.cx;              // is negative
+       else
+               if(szCurrent.cx < m_szMin.cx)
+                       szDelta.cx      =       m_szMin.cx - szCurrent.cx;              // is positive
+               else
+                       szDelta.cx      =       0;
+
+       if(m_szMax.cy && (szCurrent.cy > m_szMax.cy))
+               szDelta.cy              =       m_szMax.cy - szCurrent.cy;              // is negative
+       else
+               if(szCurrent.cy < m_szMin.cy)
+                       szDelta.cy      =       m_szMin.cy - szCurrent.cy;              // is positive
+               else
+                       szDelta.cy      =       0;
+
+       if(!szDelta.cx && !szDelta.cy)
+               return false;                   // nothing to do
+
+       StretchWindow(*m_pWnd,szDelta);
+       return true;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * hide and show icon
+ */
+
+void cdxCDynamicControlsManager::HideSizeIcon()
+{
+       if(m_pWndSizeIcon && ::IsWindow(m_pWndSizeIcon->m_hWnd))
+               m_pWndSizeIcon->ShowWindow(SW_HIDE);
+}
+
+void cdxCDynamicControlsManager::ShowSizeIcon()
+{
+       if(m_pWndSizeIcon && ::IsWindow(m_pWndSizeIcon->m_hWnd))
+               m_pWndSizeIcon->ShowWindow(SW_SHOW);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// static functions: window sizing
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * stretches the window by szDelta (i.e. if szDelta is 100, the window is enlarged by 100 pixels)
+ * stretching means that the center point of the window remains
+ *
+ * returns false if the window would be smaller than (1,1)
+ *
+ * NOTE: this function does NOT care of the min/max dimensions of a window
+ *                     Use MoveWindow() if you need to take care of it.
+ *
+ * STATIC
+ */
+
+bool cdxCDynamicControlsManager::StretchWindow(CWnd & rWnd, const CSize & szDelta)
+{
+       ASSERT(::IsWindow(rWnd.m_hWnd));
+
+       WINDOWPLACEMENT wpl;
+       rWnd.GetWindowPlacement(&wpl);
+
+       wpl.rcNormalPosition.left               -=      szDelta.cx / 2;
+       wpl.rcNormalPosition.right              +=      (szDelta.cx + 1) / 2;
+       wpl.rcNormalPosition.top                -=      szDelta.cy / 2;
+       wpl.rcNormalPosition.bottom     +=      (szDelta.cy + 1) / 2;
+//     wpl.flags       =       SW_SHOWNA|SW_SHOWNOACTIVATE;
+
+       if((wpl.rcNormalPosition.left >= wpl.rcNormalPosition.right) ||
+               (wpl.rcNormalPosition.top >= wpl.rcNormalPosition.bottom))
+               return false;
+
+       VERIFY( rWnd.SetWindowPos(      NULL,
+                                                                               wpl.rcNormalPosition.left,
+                                                                               wpl.rcNormalPosition.top,
+                                                                               wpl.rcNormalPosition.right - wpl.rcNormalPosition.left,
+                                                                               wpl.rcNormalPosition.bottom - wpl.rcNormalPosition.top,
+                                                                               SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER) );
+
+       return true;
+}
+
+/*
+ * stretch window by a percent value
+ * the algorithm calculates the new size for both dimensions by:
+ *
+ *  newWid = oldWid + (oldWid * iAddPcnt) / 100
+ *
+ * NOTE: iAddPcnt may even be nagtive, but it MUST be greater than -100.
+ * NOTE: this function does NOT care of the min/max dimensions of a window
+ *
+ * The function will return false if the new size would be empty.
+ *
+ * STATIC
+ */
+
+bool cdxCDynamicControlsManager::StretchWindow(CWnd & rWnd, int iAddPcnt)
+{
+       ASSERT(::IsWindow(rWnd.m_hWnd));
+
+       CSize   szDelta =       GetWindowSize(rWnd);
+
+       szDelta.cx      =       (szDelta.cx * iAddPcnt) / 100;
+       szDelta.cy      =       (szDelta.cy * iAddPcnt) / 100;
+
+       return StretchWindow(rWnd,szDelta);
+}
+
+/*
+ * get current window's size
+ *
+ * STATIC
+ */
+
+CSize cdxCDynamicControlsManager::GetWindowSize(CWnd & rWnd)
+{
+       ASSERT(::IsWindow(rWnd.m_hWnd));
+
+       CRect   rect;
+       rWnd.GetWindowRect(&rect);
+       return CSize(rect.Width(),rect.Height());
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// static functions: window & registry
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * stores a window's position and visiblity to the registry.
+ *
+ *     return false if any error occured
+ *
+ * STATIC
+ */
+
+bool cdxCDynamicControlsManager::StoreWindowPosition(CWnd & rWnd, LPCTSTR lpszProfile)
+{
+       ASSERT(::IsWindow(rWnd.m_hWnd) && lpszProfile && *lpszProfile);
+       // can't use an empty profile section string; see CWinApp::GetProfileInt() for further information
+
+       WINDOWPLACEMENT wpl;
+       VERIFY( rWnd.GetWindowPlacement(&wpl) );
+       BOOL    bVisible        =       rWnd.IsWindowVisible();
+       int     iState  =       REGVAL_NOSTATE;
+
+       if(rWnd.IsIconic())
+               iState  =       REGVAL_ICONIC;
+       else
+               if(rWnd.IsZoomed())
+                       iState  =       REGVAL_MAXIMIZED;
+
+       return  AfxGetApp()->WriteProfileInt(lpszProfile,       lpszRegVal_Valid,       REGVAL_INVALID) &&      // invalidate first
+                               AfxGetApp()->WriteProfileInt(lpszProfile,       lpszRegVal_Left,                wpl.rcNormalPosition.left) &&
+                               AfxGetApp()->WriteProfileInt(lpszProfile,       lpszRegVal_Right,               wpl.rcNormalPosition.right) &&
+                               AfxGetApp()->WriteProfileInt(lpszProfile,       lpszRegVal_Top,         wpl.rcNormalPosition.top) &&
+                               AfxGetApp()->WriteProfileInt(lpszProfile,       lpszRegVal_Bottom,      wpl.rcNormalPosition.bottom) &&
+                               AfxGetApp()->WriteProfileInt(lpszProfile,       lpszRegVal_Visible,     bVisible ? REGVAL_VISIBLE : REGVAL_HIDDEN) &&
+                               AfxGetApp()->WriteProfileInt(lpszProfile,       lpszRegVal_State,               iState) &&
+                               AfxGetApp()->WriteProfileInt(lpszProfile,       lpszRegVal_Valid,       REGVAL_VALID);          // validate position
+}
+
+/*
+ * load the registry data stored by StoreWindowPosition()
+ * returns true if data have been found in the registry
+ *
+ * STATIC
+ */
+
+bool cdxCDynamicControlsManager::RestoreWindowPosition(CWnd & rWnd, LPCTSTR lpszProfile, UINT restoreFlags)
+{
+       ASSERT(::IsWindow(rWnd.m_hWnd) && lpszProfile && *lpszProfile);
+       // can't use an empty profile section string; see CWinApp::GetProfileInt() for further information
+
+       //
+       // first, we check whether the position had been saved successful any time before
+       //
+
+       if( AfxGetApp()->GetProfileInt(lpszProfile,lpszRegVal_Valid,REGVAL_INVALID) != REGVAL_VALID )
+               return false;
+
+       //
+       // get old position
+       //
+
+       WINDOWPLACEMENT wpl;
+       VERIFY( rWnd.GetWindowPlacement(&wpl) );
+
+       //
+       // read registry
+       //
+
+       int     iState  =       AfxGetApp()->GetProfileInt(lpszProfile, lpszRegVal_State, REGVAL_NOSTATE);
+
+       //
+       // get window's previous normal position
+       //
+
+       wpl.rcNormalPosition.left               =       AfxGetApp()->GetProfileInt(lpszProfile, lpszRegVal_Left,                wpl.rcNormalPosition.left);
+       wpl.rcNormalPosition.right              =       AfxGetApp()->GetProfileInt(lpszProfile, lpszRegVal_Right,               wpl.rcNormalPosition.right);
+       wpl.rcNormalPosition.top                =       AfxGetApp()->GetProfileInt(lpszProfile, lpszRegVal_Top,         wpl.rcNormalPosition.top);
+       wpl.rcNormalPosition.bottom     =       AfxGetApp()->GetProfileInt(lpszProfile, lpszRegVal_Bottom,      wpl.rcNormalPosition.bottom);
+
+       if(wpl.rcNormalPosition.left > wpl.rcNormalPosition.right)
+       {
+               long    l       =       wpl.rcNormalPosition.right;
+               wpl.rcNormalPosition.right      =       wpl.rcNormalPosition.left;
+               wpl.rcNormalPosition.left       =       l;
+       }
+       if(wpl.rcNormalPosition.top > wpl.rcNormalPosition.bottom)
+       {
+               long    l       =       wpl.rcNormalPosition.bottom;
+               wpl.rcNormalPosition.bottom     =       wpl.rcNormalPosition.top;
+               wpl.rcNormalPosition.top        =       l;
+       }
+
+       //
+       // get restore stuff
+       //
+
+       UINT    showCmd =       SW_SHOWNA;
+       
+       if(restoreFlags & rflg_state)
+       {
+               if(iState == REGVAL_MAXIMIZED)
+                       showCmd =       SW_MAXIMIZE;
+               else
+                       if(iState == REGVAL_ICONIC)
+                               showCmd =       SW_MINIMIZE;
+       }
+
+       //
+       // use MoveWindow() which takes care of WM_GETMINMAXINFO
+       //
+
+       rWnd.MoveWindow(        wpl.rcNormalPosition.left,wpl.rcNormalPosition.top,
+                                                       wpl.rcNormalPosition.right - wpl.rcNormalPosition.left,
+                                                       wpl.rcNormalPosition.bottom - wpl.rcNormalPosition.top,
+                                                       showCmd == SW_SHOWNA);
+
+       if(showCmd != SW_SHOWNA)
+       {
+               // read updated position
+
+               VERIFY( rWnd.GetWindowPlacement(&wpl) );
+               wpl.showCmd     =       showCmd;
+               rWnd.SetWindowPlacement(&wpl);
+       }
+       
+       //
+       // get visiblity
+       //
+
+       if(restoreFlags & rflg_visibility)
+       {
+               int     i       =       AfxGetApp()->GetProfileInt(lpszProfile, lpszRegVal_Visible, REGVAL_NOSTATE);
+               if(i == REGVAL_VISIBLE)
+                       rWnd.ShowWindow(SW_SHOW);
+               else
+                       if(i == REGVAL_HIDDEN)
+                               rWnd.ShowWindow(SW_HIDE);
+       }
+
+       return true;
+}
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicControlsManager.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicControlsManager.h
new file mode 100644 (file)
index 0000000..c8bb3e9
--- /dev/null
@@ -0,0 +1,615 @@
+// cdxCDynamicControlsManager.h: interface for the cdxCDynamicControlsManager class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_CDXCDYNAMICCONTROLSMANAGER_H__6517AE13_5D12_11D2_BE4C_000000000000__INCLUDED_)
+#define AFX_CDXCDYNAMICCONTROLSMANAGER_H__6517AE13_5D12_11D2_BE4C_000000000000__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#include       "cdxCSizeIconCtrl.h"
+#include       <afxpriv.h>
+typedef cdxCSizeIconCtrl       cdxCSizeCtrl;
+
+//
+// cdxCDynamicControlsManager.h : header file
+// -----------------------------------------------------------------------
+// Author:  Hans Bühler (hans.buehler@student.hu-berlin.de)
+//          codex design (http://www-pool.mathematik.hu-berlin.de/~codex
+// Version: 1.5
+// Release: 5 (Mar 1999 to www.codeguru.com)
+// -----------------------------------------------------------------------
+// Changes for V1.1:
+// - cdxCSizeCtrl is now only a typedef on cdxCSizeIconCtrl which is been
+//   but in two extra files (header and impl.) to make it available to
+//   the programmer even if you don't use cdxCDynamicControls.
+//   The include/impl file for cdxCSizeIconCtrl must be available.
+// - GetSizeIconBitmap() is been deleted.
+// - ICON_CONTROL_ID has been changed to AFX_IDW_SIZE_BOX
+// Changes for V1.2:
+// - cdxCDynamicControlsManager::DoOnGetMinMaxInfo() has been modified
+//   (thanks to a bug report by Michel Wassink <mww@mitutoyo.nl>):
+//   Now, if you don't call SetMaxSize(), the maximum position of a window
+//   will not be changed.
+//       BUG: Under W95 and W98, resizing didn't work properly REMOVED.
+// Changes for V1.3:
+// - FindSzControl() and RemSzControl() have been added.
+// Changes for V1.4:
+// - RestoreWindowPosition() is been speed up.
+// - FixWindowSize() has been debugged
+// - RemSzControl() is been made more comfortable.
+//   You can now remove controls properly from the dynamic controls manager.
+//   Moreover, the embedded ControlPosition class has now some more virtual
+//   functions for your own use.
+//   For example, you can modify the way a control reacts later now.
+// - Enable() / Disable() have been added.
+//   Using them you can temporarily disable the automatic repositioning.
+// Changes to V1.5
+// - Flickering of controls during resize fixed thanks to great hint
+//   by Rodger Bernstein.
+// -----------------------------------------------------------------------
+// Comments welcome.
+//
+
+/*
+ * cdxCDynamicControlsManager
+ * ==========================
+ * Makes any CWnd derived class capable of dynamic control resizing
+ * and repositioning.
+ * Moreover, it can set a window's max/min tracking size (the size
+ * the user can change) and add a nice sizing icon to the windows
+ * lower right corner (if the window does not have one - as dialogs).
+ *
+ * To make any CWnd derived capable of automatically displaying
+ * its controls, you embed a member of this class in your window
+ * (or you derive your class from both this class and your window
+ * base class - that depends on how you want to use the member
+ * functions of this class).
+ *
+ * Then, the following functions must be called
+ *
+ *             DoInitWindow()                  -       Must be called after the window became
+ *                                                                             valid (i.e. CWnd::m_hWnd is non-zero)
+ *                                                                             and has its initial (minimum) size.
+ *             DoOnSize()                              -       by the OnSize() message handler
+ *             DoOnGetMinMaxInfo()     -       by the OnGetMinMaxInfo() message handler
+ *             DoDestroyWindow()               -       by DestroyWindow().
+ *
+ * See cdxCSizingDialog.h for an example.
+ * 
+ * NOTE:
+ * Unfortunately, we cannot derive this class from CObject, because
+ * those macros DECLARE_xxx are too lame to handle multipile derived
+ * classes if both classes have been derived from the same base-class
+ * CObject.
+ */
+
+class cdxCDynamicControlsManager
+{
+       //
+       // various constants
+       //
+public:
+       enum Mode               // flags for AddSzControl()
+       {
+               mdNone          =       0,                                      // does nothing
+               mdResize                =       1,                                      // resize in that dimension
+               mdRepos         =       2,                                      // reposition
+               mdRelative      =       3,                                      // center (size by delta/2 and repos by delta/2)
+               md__Last                =       mdRelative
+       };
+
+       enum Freedom
+       {
+               fdNone          =       0,                                      // might be used but I don't imagine what you want from this ??
+               fdHoriz         =       0x01,                           // horizantally sizable only
+               fdVert          =       0x02,                           // vertically sizable only
+               fdAll                   =       fdHoriz|fdVert  // sizable in all directions
+       };
+
+       enum RestoreFlags
+       {
+               rflg_none                       =       0,                      // only load window position
+               rflg_state                      =       0x01,           // make window iconic/zoomed if been before
+               rflg_visibility =       0x02,           // hide/show window as been before
+               rflg_all                                =       rflg_state|rflg_visibility
+       };
+
+       enum
+       {
+               ICON_CONTROL_ID =       AFX_IDW_SIZE_BOX
+       };
+
+       //
+       // a positioning parameter
+       //
+public:
+       class PositionSetup
+       {
+       public:
+               BYTE    m_dX1pcnt,m_dX2pcnt,                    // how positioning should work (see docs)
+                               m_dY1pcnt,m_dY2pcnt;
+       public:
+               PositionSetup(BYTE dX1pcnt = 0, BYTE dX2pcnt = 0, BYTE dY1pcnt = 0, BYTE dY2pcnt = 0) : m_dX1pcnt(dX1pcnt), m_dX2pcnt(dX2pcnt), m_dY1pcnt(dY1pcnt), m_dY2pcnt(dY2pcnt) {}
+               ~PositionSetup() {}
+
+               // validity check
+               bool IsValid() const { return (m_dX1pcnt <= m_dX2pcnt) && (m_dY1pcnt <= m_dY2pcnt); }
+
+               // transform
+               CRect Transform(const CRect & rectOriginal, const CSize & szDelta) const;
+
+               // quick-use
+               CRect operator()(const CRect & rectOriginal, const CSize & szDelta) const { return Transform(rectOriginal,szDelta); }
+       };
+
+       //
+       // an astract handle to a sizeable control that you can
+       // use to add further controls to
+       // see discussion of AddSzControl()
+       //
+public:
+       class ControlPosition
+       {
+       protected:
+               ControlPosition() {}
+       public:
+               virtual ~ControlPosition() {}
+
+       public:
+               virtual bool IsMember(CWnd & ctrl) const = NULL;
+               virtual bool IsUsed() const = NULL;
+
+               virtual void Add(CWnd & ctrl) = NULL;
+               virtual bool Rem(CWnd & ctrl) = NULL;
+
+               virtual bool Modify(const CRect & rectOriginal, const PositionSetup & rSetup) = NULL;
+               virtual CRect GetCurrentPosition() const = NULL;
+               virtual CRect GetOriginalPosition() const = NULL;
+               virtual PositionSetup GetPositionSetup() const = NULL; 
+       };
+
+       //
+       // internal storage class for controls and their
+       // original positions and their behaviour settings
+       //
+private:
+       class ControlData : public ControlPosition
+       {
+               //
+               // all controls with the same positioning arguments
+               // (used by Add())
+               // Note that the window is not need to be already created
+               //
+       private:
+               struct ControlEntry
+               {
+               private:
+                       ControlData             & m_rMaster;                    // container
+                       ControlEntry    *m_pNext,*m_pPrev;      // next, prev
+                       CWnd                            & m_rCtrl;                              // the control
+
+               public:
+                       ControlEntry(CWnd & ctrl, ControlData & rMaster);
+                       virtual ~ControlEntry();
+
+                       void Position(AFX_SIZEPARENTPARAMS *lpSz, int x, int y, int wid, int hi, bool bAll);
+
+                       void Add(CWnd & ctrl, int x, int y, int wid, int hi);
+
+                       ControlEntry *GetNext() { return m_pNext; }
+                       CWnd & GetCWnd() { return m_rCtrl; }
+                       const ControlEntry *GetNext() const { return m_pNext; }
+                       const CWnd & GetCWnd() const { return m_rCtrl; }
+
+                       bool operator==(const CWnd & ctrl) const { return &m_rCtrl == &ctrl; }
+               };
+
+               friend struct ControlEntry;
+
+       private:
+               cdxCDynamicControlsManager      & m_rMaster;                    // the master class
+               ControlData                                             *m_pNext,*m_pPrev;      // a linked list (root in m_rMaster.m_pFirst)
+
+               ControlEntry                                    *m_pCtrl;                               // control link list
+               PositionSetup                                   m_posSetup;
+               CRect                                                           m_rectOriginal;         // original position of control(s)
+
+       public:
+               ControlData(cdxCDynamicControlsManager & rMaster, CWnd & ctrl, const PositionSetup & rPosSetup);
+               virtual ~ControlData();
+
+               virtual bool IsUsed() const { return m_pCtrl != NULL; }
+
+               //
+               // access to CWnds
+               //
+
+               virtual bool IsMember(CWnd & ctrl) const;
+               virtual void Add(CWnd & ctrl) { new ControlEntry(ctrl,*this); }
+               virtual bool Rem(CWnd & ctrl);
+
+               //
+               // positioning
+               //
+
+               virtual bool Modify(const CRect & rectOriginal, const PositionSetup & rSetup);
+               virtual CRect GetCurrentPosition() const;
+               virtual CRect GetOriginalPosition() const { return CRect(m_rectOriginal); }
+               virtual PositionSetup GetPositionSetup() const { return PositionSetup(m_posSetup); }
+
+               //
+               // helpers
+               //
+
+               ControlData *GetNext() { return m_pNext; }
+               const ControlData *GetNext() const { return m_pNext; }
+
+               //
+               // events
+               //
+
+               void OnSize(const CSize & szDelta, AFX_SIZEPARENTPARAMS *lpSz, const CPoint *pOffset = NULL);
+       };
+
+       //
+       // my members
+       //
+
+       friend class ControlData;
+       friend struct ControlData::ControlEntry;
+
+private:
+       ControlData             *m_pFirst;
+       CWnd                            *m_pWnd;                                                // Use Init() !!!!!!!!!
+       CSize                           m_szClientRelative,             // original's window size (client !!) - used in OnSize() to calculate delta size
+                                               m_szMin,                                                // minimum size (whole window)
+                                               m_szMax;                                                // maximum (whole window)
+       Freedom                 m_Freedom;                                      // what is allowed
+       cdxCSizeCtrl    *m_pWndSizeIcon;                        // the icon control
+       int                             m_iDisabledCnt;                 // counts Disable() and Enable()
+       UINT                            m_iTotalCnt;                            // total counter of all ControlData::ControlEntry objects
+
+public:
+       UINT                            m_idSizeIcon;                           // ID of the icon control (you can set this to change the default, ICON_CONTROL_ID)
+       bool                            m_bApplyScrollPosition; // fix scroll position for controls (set this in your constructor)
+
+public:
+       cdxCDynamicControlsManager() : m_pFirst(NULL), m_pWnd(NULL), m_Freedom(fdAll), m_pWndSizeIcon(NULL), m_idSizeIcon(ICON_CONTROL_ID), m_iDisabledCnt(0), m_iTotalCnt(0), m_bApplyScrollPosition(false) {}
+       virtual ~cdxCDynamicControlsManager() { DoDestroyWindow(); }
+
+       //
+       // check status
+       //
+
+       bool IsReady() const { return (m_pWnd != NULL) && ::IsWindow(m_pWnd->m_hWnd); }
+       UINT GetTotalChildCnt() const { return m_iTotalCnt; }
+
+       //
+       // get some basics
+       //
+
+       const CSize & GetMinSize() const { return m_szMin; }
+       const CSize & GetMaxSize() const { return m_szMax; }
+       Freedom GetFreedom() const { return m_Freedom; }
+
+       //
+       // wanna change some basics ?
+       //
+       bool SetMinMaxSize(const CSize & szMin, const CSize & szMax, bool bResizeIfNecessary = true);
+       bool FixWindowSize();
+       void SetFreedom(Freedom fd) { m_Freedom = fd; }
+       void HideSizeIcon();
+       void ShowSizeIcon();
+
+       //
+       // add controls to handle
+       //
+       ControlPosition *AddSzControl(CWnd & ctrl, Mode modeX, Mode modeY);
+       ControlPosition *AddSzXControl(CWnd & ctrl, Mode modeX) { return AddSzControl(ctrl,modeX,mdNone); }
+       ControlPosition *AddSzYControl(CWnd & ctrl, Mode modeY) { return AddSzControl(ctrl,mdNone,modeY); }
+
+       ControlPosition *AddSzControlEx(CWnd & ctrl, BYTE dX1pcnt, BYTE dX2pcnt, BYTE dY1pcnt, BYTE dY2pcnt) { return AddSzControlEx(ctrl,PositionSetup(dX1pcnt,dX2pcnt,dY1pcnt,dY2pcnt)); }
+       ControlPosition *AddSzXControlEx(CWnd & ctrl, BYTE dX1pcnt, BYTE dX2pcnt) { return AddSzControlEx(ctrl,dX1pcnt,dX2pcnt,0,0); }
+       ControlPosition *AddSzYControlEx(CWnd & ctrl, BYTE dY1pcnt, BYTE dY2pcnt) { return AddSzControlEx(ctrl,0,0,dY1pcnt,dY2pcnt); }
+
+       virtual ControlPosition *AddSzControlEx(CWnd & ctrl, const PositionSetup & rSetup);
+
+       //
+       // advanced (new to V1.3)
+       //
+       ControlPosition *FindSzControl(CWnd & ctrl);
+       const ControlPosition *FindSzControl(CWnd & ctrl) const;
+       bool RemSzControl(CWnd & ctrl, bool bAutoDeleteUnusedControlPos = true);
+
+       //
+       // advanced (new to V1,4)
+       //
+       virtual bool Enable(bool bForce = false) { if(!bForce) { --m_iDisabledCnt; ASSERT(m_iDisabledCnt >= 0); } else m_iDisabledCnt = 0; return m_iDisabledCnt == 0; }
+       virtual void Disable() { ++m_iDisabledCnt; }
+       virtual bool IsDisabled() const { return m_iDisabledCnt > 0; }
+
+       //
+       // these must be called by the appropiate message handlers of the window
+       // class you're deriving from
+       //
+public:
+       void DoInitWindow(CWnd & rWnd, Freedom fd = fdAll, bool bSizeIcon = false, const CSize * pBaseClientSize = NULL);
+       void DoOnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
+       void DoOnSize(UINT nType, int cx, int cy);
+       void DoDestroyWindow();
+
+       //
+       // some helpers
+       //
+       void ReorganizeControls(bool bRedraw = true);
+       void ReorganizeControlsAdvanced(const CRect & rectWin, CRect rectClient, bool bRedraw = true);
+       bool StretchWindow(const CSize & szDelta) { ASSERT(IsReady()); return StretchWindow(*m_pWnd,szDelta); }
+       bool StretchWindow(int iAddPcnt) { ASSERT(IsReady()); return StretchWindow(*m_pWnd,iAddPcnt); }
+       CSize GetWindowSize() { ASSERT(IsReady()); return GetWindowSize(*m_pWnd); }
+       bool RestoreWindowPosition(LPCTSTR lpszProfile, UINT restoreFlags = rflg_none) { ASSERT(IsReady()); return RestoreWindowPosition(*m_pWnd,lpszProfile,restoreFlags); }
+       bool StoreWindowPosition(LPCTSTR lpszProfile) { ASSERT(IsReady()); return StoreWindowPosition(*m_pWnd,lpszProfile); }
+
+       //
+       // helpers; static
+       //
+public:
+       static bool StretchWindow(CWnd & rWnd, const CSize & szDelta);
+       static bool StretchWindow(CWnd & rWnd, int iAddPcnt);
+       static CSize GetWindowSize(CWnd & rWnd);
+       static bool RestoreWindowPosition(CWnd & rWnd, LPCTSTR lpszProfile, UINT restoreFlags = rflg_none);
+       static bool StoreWindowPosition(CWnd & rWnd, LPCTSTR lpszProfile);
+
+       //
+       // some virtuals
+       //
+protected:
+       virtual void OnDeleteControlPosition(ControlPosition & rWillBeDeleted) {}
+       virtual CRect GetRealClientRect() const;
+
+       //
+       // misc
+       //
+public:
+       /* removed */ //static CBitmap & GetSizeIconBitmap(CSize * pSzBmp = NULL);
+       static CImageList & GetSizeIconImageList(CSize * pSzBmp = NULL) { if(pSzBmp) *pSzBmp = cdxCSizeIconCtrl::M_ilImage.Size(); return cdxCSizeIconCtrl::M_ilImage; }
+};
+
+/*
+ * cdxCSizeCtrl
+ * ============
+ * Is now a typedef to cdxCSizeIconCtrl - see above.
+ */
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicControlsManager::PositionSetup inlines
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * this function transforms a control's original position (rectOriginal) into
+ * its new rectangle by taking the the difference between the original window's
+ * size (szDelta).
+ */
+
+inline CRect cdxCDynamicControlsManager::PositionSetup::Transform(const CRect & rectOriginal, const CSize & szDelta) const
+{
+       CRect   rectNew;
+
+       rectNew.left    =       rectOriginal.left   + (szDelta.cx * (int)m_dX1pcnt) / 100;
+       rectNew.right   =       rectOriginal.right  + (szDelta.cx * (int)m_dX2pcnt) / 100;
+       rectNew.top             =       rectOriginal.top    + (szDelta.cy * (int)m_dY1pcnt) / 100;
+       rectNew.bottom  =       rectOriginal.bottom + (szDelta.cy * (int)m_dY2pcnt) / 100;
+
+       return rectNew;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicControlsManager::ControlData::ControlEntry inlines
+/////////////////////////////////////////////////////////////////////////////
+
+
+/*
+ * add a control that has the same coordinates as the
+ * control embedded in the ControlData object.
+ * The coordinates are needed to immediately place the
+ * control to the original control's position.
+ */
+
+inline void cdxCDynamicControlsManager::ControlData::ControlEntry::Add(CWnd & ctrl, int x, int y, int wid, int hi)
+{
+       VERIFY( m_pNext = new ControlEntry(ctrl,m_rMaster) );
+       m_pNext->Position(NULL,x,y,wid,hi,false);
+}
+
+/*
+ * apply new position to all "ControlEntry" controls
+ * we don't change the z-order here !
+ */
+
+inline void cdxCDynamicControlsManager::ControlData::ControlEntry::Position(AFX_SIZEPARENTPARAMS *lpSz, int x, int y, int wid, int hi, bool bAll)
+{
+       if(::IsWindow(m_rCtrl.m_hWnd))          // those window don't need to exist :)
+       {
+               if (lpSz != NULL)
+                       AfxRepositionWindow(lpSz, m_rCtrl.m_hWnd, CRect(CPoint(x,y),CSize(wid,hi)));
+               else
+               {
+                       VERIFY( m_rCtrl.SetWindowPos(&CWnd::wndBottom,x,y,wid,hi,
+                                                       SWP_NOCOPYBITS|SWP_NOOWNERZORDER|
+                                                       SWP_NOACTIVATE|SWP_NOZORDER) );
+               }
+       }
+       if(m_pNext && bAll)
+               m_pNext->Position(lpSz, x,y,wid,hi,true);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicControlsManager::ControlData inlines
+/////////////////////////////////////////////////////////////////////////////
+/*
+ * called by cdxCDynamicControlsManager::ReorganizeControls() if the size of the window has been changed.
+ * repositions all controls applied to this ControlData
+ */
+
+inline void cdxCDynamicControlsManager::ControlData::OnSize(const CSize & szDelta, AFX_SIZEPARENTPARAMS *lpSz, const CPoint *pOffset)
+{
+       if(m_pCtrl)
+       {
+               CRect   rectNew =       m_posSetup(m_rectOriginal,szDelta);
+               if(pOffset)
+                       rectNew +=      *pOffset;
+               m_pCtrl->Position(lpSz, rectNew.left,rectNew.top,rectNew.Width(),rectNew.Height(),true);
+       }
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicControlsManager inlines
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * add a control - we leave that work
+ * to the embedded ControlData class
+ */
+
+inline cdxCDynamicControlsManager::ControlPosition *cdxCDynamicControlsManager::AddSzControlEx(CWnd & ctrl, const PositionSetup & rSetup)
+{
+       ASSERT(IsReady());                      // don't called DoInitWindow() before ?
+       ASSERT(rSetup.IsValid());
+
+       ControlData     *si     =       new ControlData(*this, ctrl, rSetup);
+       ASSERT(si != NULL);                     // if you don't throw exceptions :)
+       return si;
+}
+
+/*
+ * find a control's ControlPosition
+ */
+
+inline const cdxCDynamicControlsManager::ControlPosition *cdxCDynamicControlsManager::FindSzControl(CWnd & ctrl) const
+{
+       ASSERT(::IsWindow(ctrl.m_hWnd));        // will work for exiting windows only !
+
+       for(const ControlData *si = m_pFirst; si; si = si->GetNext())
+               if(si->IsMember(ctrl))
+                       return si;
+
+       return NULL;
+}
+
+inline cdxCDynamicControlsManager::ControlPosition *cdxCDynamicControlsManager::FindSzControl(CWnd & ctrl)
+{
+       ASSERT(::IsWindow(ctrl.m_hWnd));        // will work for exiting windows only !
+
+       for(ControlData *si = m_pFirst; si; si = si->GetNext())
+               if(si->IsMember(ctrl))
+                       return si;
+
+       return NULL;
+}
+
+/*
+ * delete an entry for a control
+ * ctrl                                                                        -       the control
+ * bAutoDeleteUnusedControlPos -       if true, and unused ControlPosition (no more
+ *                                                                                             CWnds are bound to it) will be deleted.
+ *                                                                                             Note that you can use OnDeleteControlPosition()
+ *                                                                                             to find out which one will be deleted if any.
+ *
+ * returns true of the control has been found and deleted
+ */
+
+inline bool cdxCDynamicControlsManager::RemSzControl(CWnd & ctrl, bool bAutoDeleteUnusedControlPos)
+{
+       for(ControlData *si = m_pFirst; si; si = si->GetNext())
+               if(si->Rem(ctrl))
+               {
+                       if(!si->IsUsed() && bAutoDeleteUnusedControlPos)
+                       {
+                               OnDeleteControlPosition(*si);
+                               delete si;
+                       }
+                       return true;
+               }
+
+       return false;
+}
+
+/*
+ * adding controls by my nice constants
+ */
+
+inline cdxCDynamicControlsManager::ControlPosition *cdxCDynamicControlsManager::AddSzControl(CWnd & ctrl, Mode modeX, Mode modeY)
+{
+       BYTE    dX1pcnt =       0,
+                       dX2pcnt =       0,
+                       dY1pcnt =       0,
+                       dY2pcnt =       0;
+
+       switch(modeX)
+       {
+               default :                       ASSERT(false);                  // unknown value for modeX
+               case    mdNone  :       break;
+               case    mdRepos :       dX1pcnt =       dX2pcnt =       100;
+                                                               break;
+               case    mdResize        :       dX2pcnt =       100;
+                                                               break;
+               case    mdRelative:     dX1pcnt =       dX2pcnt =       100 / 2;
+                                                               break;
+       }
+
+       switch(modeY)
+       {
+               default :                       ASSERT(false);                  // unknown value for modeY
+               case    mdNone  :       break;
+               case    mdRepos :       dY1pcnt =       dY2pcnt =       100;
+                                                               break;
+               case    mdResize        :       dY2pcnt =       100;
+                                                               break;
+               case    mdRelative:     dY1pcnt =       dY2pcnt =       100 / 2;
+                                                               break;
+       }
+
+       return AddSzControlEx(ctrl,dX1pcnt,dX2pcnt,dY1pcnt,dY2pcnt);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * Reposition
+ */
+
+inline void cdxCDynamicControlsManager::ReorganizeControls(bool bRedraw)
+{
+       ASSERT(IsReady());
+
+       CRect   clrect,winrect;
+       m_pWnd->GetClientRect(clrect);
+       m_pWnd->GetWindowRect(&winrect);
+
+       if(m_bApplyScrollPosition)
+       {
+               if(m_pWnd->IsKindOf(RUNTIME_CLASS(CScrollView)))
+               {
+                       clrect  +=      ((CScrollView *)m_pWnd)->GetDeviceScrollPosition();
+               }
+               else
+                       clrect  +=      CPoint(m_pWnd->GetScrollPos(SB_HORZ),m_pWnd->GetScrollPos(SB_VERT));
+       }
+       ReorganizeControlsAdvanced(winrect,clrect,bRedraw);
+}
+
+/*
+ *  get client rect
+ */
+
+inline CRect cdxCDynamicControlsManager::GetRealClientRect() const
+{
+       ASSERT(IsReady());
+       CRect   r;
+       
+       return r;
+}
+
+#endif // !defined(AFX_CDXCDYNAMICCONTROLSMANAGER_H__6517AE13_5D12_11D2_BE4C_000000000000__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicDialog.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicDialog.cpp
new file mode 100644 (file)
index 0000000..2a95ef9
--- /dev/null
@@ -0,0 +1,98 @@
+// cdxCDynamicChildDlg.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "cdxCDynamicDialog.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicDialog dialog
+/////////////////////////////////////////////////////////////////////////////
+
+IMPLEMENT_DYNAMIC(cdxCDynamicDialog,CDialog);
+
+/////////////////////////////////////////////////////////////////////////////
+// message map
+/////////////////////////////////////////////////////////////////////////////
+
+BEGIN_MESSAGE_MAP(cdxCDynamicDialog, CDialog)
+       //{{AFX_MSG_MAP(cdxCDynamicDialog)
+       ON_WM_GETMINMAXINFO()
+       ON_WM_DESTROY()
+       ON_WM_PARENTNOTIFY()
+       ON_WM_SIZE()
+       ON_WM_SIZING()
+       ON_WM_TIMER()
+       //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicDialog message handlers: redirect stuff to my class :)=
+/////////////////////////////////////////////////////////////////////////////
+
+BOOL cdxCDynamicDialog::OnInitDialog() 
+{
+       BOOL    bOK     =       CDialog::OnInitDialog();
+       DoInitWindow(*this);
+
+       return bOK;
+}
+
+BOOL cdxCDynamicDialog::DestroyWindow()
+{
+       DoOnDestroy();
+       return CDialog::DestroyWindow();
+}
+
+void cdxCDynamicDialog::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
+{
+       CDialog::OnGetMinMaxInfo(lpMMI);
+       DoOnGetMinMaxInfo(lpMMI);
+}
+
+void cdxCDynamicDialog::OnDestroy() 
+{
+       DoOnDestroy();
+       CDialog::OnDestroy();
+}
+
+void cdxCDynamicDialog::OnParentNotify(UINT message, LPARAM lParam) 
+{
+       CDialog::OnParentNotify(message, lParam);
+       DoOnParentNotify(message, lParam);
+}
+
+void cdxCDynamicDialog::OnSize(UINT nType, int cx, int cy) 
+{
+       CDialog::OnSize(nType, cx, cy);
+       DoOnSize(nType, cx, cy);
+}
+
+void cdxCDynamicDialog::OnSizing(UINT fwSide, LPRECT pRect) 
+{
+       CDialog::OnSizing(fwSide, pRect);
+       DoOnSizing(fwSide, pRect);
+}
+
+void cdxCDynamicDialog::OnTimer(UINT idEvent)
+{
+       CDialog::OnTimer(idEvent);
+       DoOnTimer(idEvent);
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicChildDlg dialog
+/////////////////////////////////////////////////////////////////////////////
+
+IMPLEMENT_DYNAMIC(cdxCDynamicChildDlg,cdxCDynamicDialog);
+
+/////////////////////////////////////////////////////////////////////////////
+// message map
+/////////////////////////////////////////////////////////////////////////////
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicDialog.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicDialog.h
new file mode 100644 (file)
index 0000000..d888313
--- /dev/null
@@ -0,0 +1,121 @@
+#if !defined(AFX_CDXCDYNAMICDIALOG_H__E8F2A005_63C6_11D3_802B_000000000000__INCLUDED_)
+#define AFX_CDXCDYNAMICDIALOG_H__E8F2A005_63C6_11D3_802B_000000000000__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+// cdxCDynamicDialog.h : header file
+//
+
+#include       "cdxCDynamicWndEx.h"
+
+/*
+ * cdxCDynamicDialog
+ * =================
+ * A new resizable dialog.
+ * This should be the base-class for your normal dialogs.
+ * This class supports:
+ * - A sizing icon
+ * - AutoPositioning (stores last position automatically and stuff)
+ * - Anti-Flickering system.
+ * - And of course, it provides
+ *   the Dynamic child control system DcCS by codex design
+ */
+
+class cdxCDynamicDialog : public CDialog, public cdxCDynamicWndEx
+{
+       DECLARE_DYNAMIC(cdxCDynamicDialog);
+
+public:
+       enum { flDefault = flAntiFlicker|flSizeIcon };
+
+public:
+       cdxCDynamicDialog(UINT idd = 0, CWnd* pParent = NULL, Freedom fd = fdAll, UINT nFlags = flDefault);
+       cdxCDynamicDialog(LPCTSTR lpszTemplateName, CWnd* pParent = NULL, Freedom fd = fdAll, UINT nFlags = flDefault);
+       virtual ~cdxCDynamicDialog() { DoOnDestroy(); }
+
+public:
+       virtual BOOL DestroyWindow();
+
+protected:
+       virtual BOOL OnInitDialog();
+       afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
+       afx_msg void OnDestroy();
+       afx_msg void OnParentNotify(UINT message, LPARAM lParam);
+       afx_msg void OnSize(UINT nType, int cx, int cy);
+       afx_msg void OnSizing(UINT fwSide, LPRECT pRect);
+       afx_msg void OnTimer(UINT nIDEvent);
+
+       DECLARE_MESSAGE_MAP();
+};
+
+/*
+ * cdxCDynamicChildDlg
+ * ===================
+ * Use this dialog class instead of cdxCDynamicDialog if
+ * you create dialogs which you want to embedd as child
+ * controls.
+ * In that case, this dialog is far more straight forward.
+ * This class provides:
+ * - NO sizing icon
+ * - NO auto anti-flickering (since the dialog itself won't be moved by hand)
+ * - NO auto-positioning
+ * - But of course, it provides
+ *   the Dynamic child control system DcCS by codex design
+ */
+
+class cdxCDynamicChildDlg : public cdxCDynamicDialog
+{
+       DECLARE_DYNAMIC(cdxCDynamicChildDlg);
+
+public:
+       enum { flDefault = flAntiFlicker };
+
+public:
+       cdxCDynamicChildDlg(UINT idd = 0, CWnd* pParent = NULL, Freedom fd = fdAll, UINT nFlags = flDefault);
+       cdxCDynamicChildDlg(LPCTSTR lpszTemplateName, CWnd* pParent = NULL, Freedom fd = fdAll, UINT nFlags = flDefault);
+       virtual ~cdxCDynamicChildDlg() { DoOnDestroy(); }
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicDialog Inlines
+/////////////////////////////////////////////////////////////////////////////
+
+inline cdxCDynamicDialog::cdxCDynamicDialog(UINT idd, CWnd* pParent, Freedom fd, UINT nFlags)
+:      CDialog(idd,pParent),
+       cdxCDynamicWndEx(fd,nFlags)
+{
+       if(idd)
+               ActivateAutoPos(idd);
+}
+
+inline cdxCDynamicDialog::cdxCDynamicDialog(LPCTSTR lpszTemplateName, CWnd* pParent, Freedom fd, UINT nFlags)
+:      CDialog(lpszTemplateName,pParent),
+       cdxCDynamicWndEx(fd,nFlags)
+{
+       if(lpszTemplateName && *lpszTemplateName)
+               ActivateAutoPos(lpszTemplateName);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicChildDlg Inlines
+/////////////////////////////////////////////////////////////////////////////
+
+inline cdxCDynamicChildDlg::cdxCDynamicChildDlg(UINT idd, CWnd* pParent, Freedom fd, UINT nFlags)
+:      cdxCDynamicDialog(idd,pParent,fd,nFlags)
+{
+       m_bUseScrollPos =       true;           // if you create scollbars I will use them ;)
+       NoAutoPos();                                            // not in this case....
+}
+
+inline cdxCDynamicChildDlg::cdxCDynamicChildDlg(LPCTSTR lpszTemplateName, CWnd* pParent, Freedom fd, UINT nFlags)
+:      cdxCDynamicDialog(lpszTemplateName,pParent,fd,nFlags)
+{
+       m_bUseScrollPos =       true;           // if you create scollbars I will use them ;)
+       NoAutoPos();                                            // not in this case....
+}
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_CDXCDYNAMICDIALOG_H__E8F2A005_63C6_11D3_802B_000000000000__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicFormView.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicFormView.cpp
new file mode 100644 (file)
index 0000000..6d98d75
--- /dev/null
@@ -0,0 +1,94 @@
+// cdxCDynamicFormView.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "cdxCDynamicFormView.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicFormView
+/////////////////////////////////////////////////////////////////////////////
+
+IMPLEMENT_DYNAMIC(cdxCDynamicFormView, CFormView)
+
+/////////////////////////////////////////////////////////////////////////////
+// creation
+/////////////////////////////////////////////////////////////////////////////
+
+BEGIN_MESSAGE_MAP(cdxCDynamicFormView, CFormView)
+       //{{AFX_MSG_MAP(cdxCDynamicFormView)
+       ON_WM_SIZE()
+       ON_WM_SIZING()
+       ON_WM_TIMER()
+       ON_WM_GETMINMAXINFO()
+       ON_WM_PARENTNOTIFY()
+       ON_WM_DESTROY()
+       //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicFormView message handlers
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * OnInitialUpdate()
+ * -----------------
+ * These functions set up the form view.
+ * New to this version is that the correct size will now be read
+ * automatically.
+ */
+
+void cdxCDynamicFormView::OnInitialUpdate()
+{
+       CFormView::OnInitialUpdate();
+       DoInitWindow(*this,GetTotalSize());
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+BOOL cdxCDynamicFormView::DestroyWindow()
+{
+       DoOnDestroy();
+       return CFormView::DestroyWindow();
+}
+
+void cdxCDynamicFormView::OnSize(UINT nType, int cx, int cy) 
+{
+       CFormView::OnSize(nType, cx, cy);
+       DoOnSize(nType, cx, cy);
+}
+
+void cdxCDynamicFormView::OnSizing(UINT fwSide, LPRECT pRect) 
+{
+       CFormView::OnSizing(fwSide, pRect);
+       DoOnSizing(fwSide, pRect);
+}
+
+void cdxCDynamicFormView::OnTimer(UINT nIDEvent) 
+{
+       CFormView::OnTimer(nIDEvent);
+       DoOnTimer(nIDEvent);
+}
+
+void cdxCDynamicFormView::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
+{
+       CFormView::OnGetMinMaxInfo(lpMMI);
+       DoOnGetMinMaxInfo(lpMMI);
+}
+
+void cdxCDynamicFormView::OnParentNotify(UINT message, LPARAM lParam) 
+{
+       CFormView::OnParentNotify(message, lParam);
+       DoOnParentNotify(message, lParam);
+}
+
+void cdxCDynamicFormView::OnDestroy() 
+{
+       DoOnDestroy();
+       CFormView::OnDestroy();
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicFormView.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicFormView.h
new file mode 100644 (file)
index 0000000..c6f6625
--- /dev/null
@@ -0,0 +1,51 @@
+#if !defined(AFX_CDXCDYNAMICFORMVIEW_H__82427295_6456_11D3_802D_000000000000__INCLUDED_)
+#define AFX_CDXCDYNAMICFORMVIEW_H__82427295_6456_11D3_802D_000000000000__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+// cdxCDynamicFormView.h : header file
+//
+
+#include       "cdxCDynamicWnd.h"
+
+/*
+ * cdxCDynamicFormView
+ * ===================
+ * My dynamic form view.
+ */
+
+#ifndef __AFXEXT_H__
+#include <afxext.h>
+#endif
+
+class cdxCDynamicFormView : public CFormView, public cdxCDynamicWnd
+{
+       DECLARE_DYNCREATE(cdxCDynamicFormView);
+
+       enum { flDefault = flAntiFlicker };
+
+public:
+       cdxCDynamicFormView(UINT idd = 0, Freedom fd = fdAll, UINT nFlags = flDefault) : CFormView(idd), cdxCDynamicWnd(fd,nFlags) { m_bUseScrollPos = true; }
+       cdxCDynamicFormView(LPCTSTR lpszTemplateName, Freedom fd = fdAll, UINT nFlags = flDefault) : CFormView(lpszTemplateName), cdxCDynamicWnd(fd,nFlags) { m_bUseScrollPos = true; }
+       virtual ~cdxCDynamicFormView() { DoOnDestroy(); }
+
+public:
+       virtual void OnInitialUpdate();
+       virtual BOOL DestroyWindow();
+
+protected:
+       afx_msg void OnSize(UINT nType, int cx, int cy);
+       afx_msg void OnSizing(UINT fwSide, LPRECT pRect);
+       afx_msg void OnTimer(UINT nIDEvent);
+       afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
+       afx_msg void OnParentNotify(UINT message, LPARAM lParam);
+       afx_msg void OnDestroy();
+
+       DECLARE_MESSAGE_MAP();
+};
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_CDXCDYNAMICFORMVIEW_H__82427295_6456_11D3_802D_000000000000__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicPropSheet.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicPropSheet.cpp
new file mode 100644 (file)
index 0000000..8935d00
--- /dev/null
@@ -0,0 +1,278 @@
+// cdxCDynamicPropSheet.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "cdxCDynamicPropSheet.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+#pragma warning(disable: 4706)
+
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicPropSheet
+/////////////////////////////////////////////////////////////////////////////
+
+IMPLEMENT_DYNCREATE(cdxCDynamicPropSheet, CPropertySheet)
+
+/////////////////////////////////////////////////////////////////////////////
+// maps
+/////////////////////////////////////////////////////////////////////////////
+
+BEGIN_MESSAGE_MAP(cdxCDynamicPropSheet, CPropertySheet)
+       //{{AFX_MSG_MAP(cdxCDynamicPropSheet)
+       ON_WM_CLOSE()
+       ON_WM_DESTROY()
+       ON_WM_CREATE()
+       ON_WM_SIZE()
+       ON_WM_SIZING()
+       ON_WM_TIMER()
+       ON_WM_GETMINMAXINFO()
+       //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/*
+ * we map the controls by our new dynamic map feature :)
+ */
+
+BEGIN_DYNAMIC_MAP(cdxCDynamicPropSheet,cdxCDynamicWnd)
+       DYNAMIC_MAP_ENTRY(      ID_WIZNEXT,                             mdRepos,mdRepos )
+       DYNAMIC_MAP_ENTRY(      ID_WIZFINISH,                   mdRepos,mdRepos )
+       DYNAMIC_MAP_ENTRY(      ID_WIZBACK,                             mdRepos,mdRepos )
+       DYNAMIC_MAP_ENTRY(      IDOK,                                           mdRepos,mdRepos )
+       DYNAMIC_MAP_ENTRY(      IDCANCEL,                               mdRepos,mdRepos )
+       DYNAMIC_MAP_ENTRY(      ID_WIZNEXT,                             mdRepos,mdRepos )
+       DYNAMIC_MAP_ENTRY(      ID_APPLY_NOW,                   mdRepos,mdRepos )
+       DYNAMIC_MAP_ENTRY(      IDHELP,                                 mdRepos,mdRepos )
+       DYNAMIC_MAP_ENTRY(      AFX_IDC_TAB_CONTROL,    mdResize,mdResize       )
+       DYNAMIC_MAP_ENTRY(      ID_WIZFINISH+1,         mdResize,mdRepos        )
+END_DYNAMIC_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicPropSheet message handlers
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * initialize window
+ */
+
+BOOL cdxCDynamicPropSheet::OnInitDialog() 
+{
+       // initialize window & dynamic manager
+
+       BOOL    b       =       CPropertySheet::OnInitDialog();
+       DoInitWindow(*this);
+
+       ModifyStyle(0,WS_CLIPSIBLINGS);
+
+       ASSERT(GetPageCount() > 0);                     // NO pages ??
+       cdxCDynamicPropPage     *pActive        =       (cdxCDynamicPropPage *)GetActivePage();
+
+       ASSERT(pActive && pActive->IsKindOf(RUNTIME_CLASS(cdxCDynamicPropPage)));
+       AddSzControl(*pActive,mdResize,mdResize);
+       VERIFY( GetControlPosition(*pActive,m_PagePos) );
+       m_bHasPos       =       true;
+
+       return b;
+}
+
+void cdxCDynamicPropSheet::AddPage( cdxCDynamicPropPage & rPage )
+{
+       ASSERT(rPage.m_pSheet == NULL);
+       rPage.m_pSheet  =       this;
+       CPropertySheet::AddPage(&rPage);
+}
+
+void cdxCDynamicPropSheet::RemovePage( cdxCDynamicPropPage & rPage )
+{
+       ASSERT(rPage.m_pSheet == this);
+       rPage.m_pSheet  =       NULL;
+}
+
+void cdxCDynamicPropSheet::OnInitPage(cdxCDynamicPropPage & rPage)
+{
+       ASSERT(::IsWindow(rPage));
+
+       if(m_bHasPos)
+               AddSzControl(rPage,m_PagePos);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * map WM_CLOSE to IDCANCEL if it is a modal sheet
+ */
+
+void cdxCDynamicPropSheet::OnClose() 
+{
+       if(!PressButton(PSBTN_CANCEL))
+               CPropertySheet::OnClose();
+}
+
+/*
+ * give us a resizable border
+ */
+
+int cdxCDynamicPropSheet::OnCreate(LPCREATESTRUCT lpCreateStruct) 
+{
+       if(CPropertySheet::OnCreate(lpCreateStruct) == -1)
+               return -1;
+       
+       ModifyStyle(0,WS_THICKFRAME|WS_SYSMENU);
+       ModifyStyleEx(0,WS_CLIPCHILDREN);
+       return 0;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+
+BOOL cdxCDynamicPropSheet::DestroyWindow() 
+{
+       DoOnDestroy();
+       return CPropertySheet::DestroyWindow();
+}
+
+void cdxCDynamicPropSheet::OnDestroy() 
+{
+       DoOnDestroy();
+       CPropertySheet::OnDestroy();
+}
+
+void cdxCDynamicPropSheet::OnSize(UINT nType, int cx, int cy) 
+{
+       CPropertySheet::OnSize(nType, cx, cy);
+       DoOnSize(nType, cx, cy);
+}
+
+void cdxCDynamicPropSheet::OnSizing(UINT fwSide, LPRECT pRect) 
+{
+       CPropertySheet::OnSizing(fwSide, pRect);
+       DoOnSizing(fwSide, pRect);
+}
+
+void cdxCDynamicPropSheet::OnTimer(UINT nIDEvent) 
+{
+       CPropertySheet::OnTimer(nIDEvent);
+       DoOnTimer(nIDEvent);
+}
+
+void cdxCDynamicPropSheet::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
+{
+       CPropertySheet::OnGetMinMaxInfo(lpMMI);
+       DoOnGetMinMaxInfo(lpMMI);
+}
+
+
+
+
+
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicPropSheet message handlers
+/////////////////////////////////////////////////////////////////////////////
+
+IMPLEMENT_DYNCREATE(cdxCDynamicPropPage, CPropertyPage)
+
+/////////////////////////////////////////////////////////////////////////////
+// creation
+/////////////////////////////////////////////////////////////////////////////
+
+void cdxCDynamicPropPage::DoDataExchange(CDataExchange* pDX)
+{
+       CPropertyPage::DoDataExchange(pDX);
+       //{{AFX_DATA_MAP(cdxCDynamicPropPage)
+               // NOTE: the ClassWizard will add DDX and DDV calls here
+       //}}AFX_DATA_MAP
+}
+
+
+BEGIN_MESSAGE_MAP(cdxCDynamicPropPage, CPropertyPage)
+       //{{AFX_MSG_MAP(cdxCDynamicPropPage)
+       ON_WM_SIZE()
+       ON_WM_TIMER()
+       ON_WM_DESTROY()
+       ON_WM_SIZING()
+       ON_WM_GETMINMAXINFO()
+       ON_WM_PARENTNOTIFY()
+       ON_WM_ACTIVATE()
+       //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// active/inactive stuff
+/////////////////////////////////////////////////////////////////////////////
+
+BOOL cdxCDynamicPropPage::OnInitDialog() 
+{
+       ASSERT(m_pSheet != NULL);
+
+       BOOL    b       =       CPropertyPage::OnInitDialog();
+       DoInitWindow(*this);
+       
+       return b;
+}
+
+BOOL cdxCDynamicPropPage::OnSetActive() 
+{
+       BOOL    bGetsActive     =       CPropertyPage::OnSetActive();
+       if(bGetsActive && !m_bFirstHit)
+       {
+               m_pSheet->OnInitPage(*this);
+               m_bFirstHit     =       true;
+       }
+       if(m_pSheet)
+               m_pSheet->OnSetActive(*this,bGetsActive);
+       return bGetsActive;
+}
+
+BOOL cdxCDynamicPropPage::OnKillActive() 
+{
+       BOOL    bGetsKilled     =       CPropertyPage::OnKillActive();
+       if(m_pSheet)
+               m_pSheet->OnKillActive(*this,bGetsKilled);
+       return bGetsKilled;
+}
+
+void cdxCDynamicPropPage::OnSize(UINT nType, int cx, int cy) 
+{
+       CPropertyPage::OnSize(nType, cx, cy);
+       DoOnSize(nType, cx, cy);
+}
+
+void cdxCDynamicPropPage::OnTimer(UINT nIDEvent) 
+{
+       CPropertyPage::OnTimer(nIDEvent);
+       DoOnTimer(nIDEvent);
+}
+
+void cdxCDynamicPropPage::OnDestroy() 
+{
+       DoOnDestroy();
+       CPropertyPage::OnDestroy();
+}
+
+void cdxCDynamicPropPage::OnSizing(UINT fwSide, LPRECT pRect) 
+{
+       CPropertyPage::OnSizing(fwSide, pRect);
+       DoOnSizing(fwSide, pRect);
+}
+
+void cdxCDynamicPropPage::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
+{
+       CPropertyPage::OnGetMinMaxInfo(lpMMI);
+       DoOnGetMinMaxInfo(lpMMI);
+}
+
+void cdxCDynamicPropPage::OnParentNotify(UINT message, LPARAM lParam) 
+{
+       CPropertyPage::OnParentNotify(message, lParam);
+       DoOnParentNotify(message, lParam);
+}
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicPropSheet.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicPropSheet.h
new file mode 100644 (file)
index 0000000..73ea350
--- /dev/null
@@ -0,0 +1,209 @@
+#if !defined(AFX_CDXCDYNAMICPROPSHEET_H__82427297_6456_11D3_802D_000000000000__INCLUDED_)
+#define AFX_CDXCDYNAMICPROPSHEET_H__82427297_6456_11D3_802D_000000000000__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+// cdxCDynamicPropSheet.h : header file
+//
+
+#include       "cdxCDynamicWndEx.h"
+#pragma warning(disable: 4100)
+
+class cdxCDynamicPropPage;
+
+/*
+ * cdxCDynamicPropSheet
+ * ====================
+ * Dynamic property sheet.
+ */
+
+class cdxCDynamicPropSheet : public CPropertySheet, public cdxCDynamicWndEx
+{
+       DECLARE_DYNCREATE(cdxCDynamicPropSheet);
+
+       enum { flDefault = flAntiFlicker|flSizeIcon|flSWPCopyBits };
+
+       friend class cdxCDynamicPropPage;
+
+private:
+       Position        m_PagePos;
+       bool            m_bHasPos;
+
+public:
+       cdxCDynamicPropSheet(Freedom fd = fdAll, UINT nFlags = flDefault);
+       cdxCDynamicPropSheet(UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0, Freedom fd = fdAll, UINT nFlags = flDefault);
+       cdxCDynamicPropSheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0, Freedom fd = fdAll, UINT nFlags = flDefault);
+       cdxCDynamicPropSheet(UINT sheetAutoPosID, UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0, Freedom fd = fdAll, UINT nFlags = flDefault);
+       cdxCDynamicPropSheet(UINT sheetAutoPosID, LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0, Freedom fd = fdAll, UINT nFlags = flDefault);
+       cdxCDynamicPropSheet(LPCTSTR lpszSheetAutoPosID, UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0, Freedom fd = fdAll, UINT nFlags = flDefault);
+       cdxCDynamicPropSheet(LPCTSTR lpszSheetAutoPosID, LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0, Freedom fd = fdAll, UINT nFlags = flDefault);
+       virtual ~cdxCDynamicPropSheet() { DoOnDestroy(); }
+
+       // ops
+public:
+       virtual void AddPage( cdxCDynamicPropPage & rPage );
+       virtual void RemovePage( cdxCDynamicPropPage & rPage );
+       void AddPage( cdxCDynamicPropPage *pPage ) { ASSERT(pPage != NULL); AddPage(*pPage); }
+       void RemovePage( cdxCDynamicPropPage *pPage ) { ASSERT(pPage != NULL); RemovePage(*pPage); }
+       void RemovePage( int nPage );
+
+       BOOL IsWizard() const { return (m_psh.dwFlags & PSH_WIZARD) != 0; }
+
+       // events
+protected:
+       virtual void OnInitPage(cdxCDynamicPropPage & rPage);
+       virtual void OnSetActive(cdxCDynamicPropPage & rPage, BOOL bStatus) { if(IsWindow() && IsWizard()) Layout(); }
+       virtual void OnKillActive(cdxCDynamicPropPage & rPage, BOOL bStatus) {}
+
+// Overrides
+       // ClassWizard generated virtual function overrides
+       //{{AFX_VIRTUAL(cdxCDynamicPropSheet)
+       public:
+       virtual BOOL DestroyWindow();
+       //}}AFX_VIRTUAL
+
+// Implementation
+public:
+
+       // Generated message map functions
+protected:
+       //{{AFX_MSG(cdxCDynamicPropSheet)
+       virtual BOOL OnInitDialog();
+       afx_msg void OnClose();
+       afx_msg void OnDestroy();
+       afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+       afx_msg void OnSize(UINT nType, int cx, int cy);
+       afx_msg void OnSizing(UINT fwSide, LPRECT pRect);
+       afx_msg void OnTimer(UINT nIDEvent);
+       afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
+       //}}AFX_MSG
+       DECLARE_MESSAGE_MAP();
+       DECLARE_DYNAMIC_MAP();
+};
+
+/*
+ * cdxCDynamicPropPage
+ * ===================
+ * The page for our sheet.
+ */
+
+class cdxCDynamicPropPage : public CPropertyPage, public cdxCDynamicWnd
+{
+       DECLARE_DYNCREATE(cdxCDynamicPropPage)
+
+       friend class cdxCDynamicPropSheet;
+
+       enum { flDefault = flAntiFlicker };
+
+private:
+       cdxCDynamicPropSheet    *m_pSheet;
+       bool                                            m_bFirstHit;
+
+public:
+       cdxCDynamicPropPage() : cdxCDynamicWnd(fdAll,flDefault), m_pSheet(NULL), m_bFirstHit(false) {}
+       cdxCDynamicPropPage(UINT nID, UINT nIDCaption = 0) : CPropertyPage(nID,nIDCaption), cdxCDynamicWnd(fdAll,flDefault), m_pSheet(NULL), m_bFirstHit(false) {}
+       cdxCDynamicPropPage(LPCTSTR lpszID, UINT nIDCaption = 0) : CPropertyPage(lpszID,nIDCaption), cdxCDynamicWnd(fdAll,flDefault), m_pSheet(NULL), m_bFirstHit(false) {}
+       virtual ~cdxCDynamicPropPage() { DoOnDestroy(); }
+
+       cdxCDynamicPropSheet *GetSheet() const { return m_pSheet; }
+
+// Dialog Data
+       //{{AFX_DATA(cdxCDynamicPropPage)
+               // NOTE - ClassWizard will add data members here.
+               //    DO NOT EDIT what you see in these blocks of generated code !
+       //}}AFX_DATA
+
+
+// Overrides
+       // ClassWizard generate virtual function overrides
+       //{{AFX_VIRTUAL(cdxCDynamicPropPage)
+       public:
+       virtual BOOL OnSetActive();
+       virtual BOOL OnKillActive();
+       protected:
+       virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
+       //}}AFX_VIRTUAL
+
+// Implementation
+protected:
+       // Generated message map functions
+       //{{AFX_MSG(cdxCDynamicPropPage)
+       afx_msg void OnSize(UINT nType, int cx, int cy);
+       afx_msg void OnTimer(UINT nIDEvent);
+       virtual BOOL OnInitDialog();
+       afx_msg void OnDestroy();
+       afx_msg void OnSizing(UINT fwSide, LPRECT pRect);
+       afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
+       afx_msg void OnParentNotify(UINT message, LPARAM lParam);
+       //}}AFX_MSG
+       DECLARE_MESSAGE_MAP()
+
+};
+
+//////////////////////////////////////////////////////////////////////
+// inlines
+//////////////////////////////////////////////////////////////////////
+
+inline cdxCDynamicPropSheet::cdxCDynamicPropSheet(Freedom fd, UINT nFlags)
+:      cdxCDynamicWndEx(fd,nFlags),
+       m_bHasPos(false)
+{
+}
+
+inline cdxCDynamicPropSheet::cdxCDynamicPropSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage, Freedom fd, UINT nFlags)
+:      CPropertySheet(nIDCaption,pParentWnd,iSelectPage),
+       cdxCDynamicWndEx(fd,nFlags),
+       m_bHasPos(false)
+{
+}
+
+inline cdxCDynamicPropSheet::cdxCDynamicPropSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage, Freedom fd, UINT nFlags)
+:      CPropertySheet(pszCaption,pParentWnd,iSelectPage),
+       cdxCDynamicWndEx(fd,nFlags),
+       m_bHasPos(false)
+{
+}
+
+inline cdxCDynamicPropSheet::cdxCDynamicPropSheet(UINT sheetAutoPosID, UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage, Freedom fd, UINT nFlags)
+:      CPropertySheet(nIDCaption,pParentWnd,iSelectPage),
+       cdxCDynamicWndEx(fd,nFlags),
+       m_bHasPos(false)
+{
+       if(sheetAutoPosID)
+               ActivateAutoPos(sheetAutoPosID);
+}
+
+inline cdxCDynamicPropSheet::cdxCDynamicPropSheet(UINT sheetAutoPosID, LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage, Freedom fd, UINT nFlags)
+:      CPropertySheet(pszCaption,pParentWnd,iSelectPage),
+       cdxCDynamicWndEx(fd,nFlags),
+       m_bHasPos(false)
+{
+       if(sheetAutoPosID)
+               ActivateAutoPos(sheetAutoPosID);
+}
+
+inline cdxCDynamicPropSheet::cdxCDynamicPropSheet(LPCTSTR lpszSheetAutoPosID, UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage, Freedom fd, UINT nFlags)
+:      CPropertySheet(nIDCaption,pParentWnd,iSelectPage),
+       cdxCDynamicWndEx(fd,nFlags),
+       m_bHasPos(false)
+{
+       if(lpszSheetAutoPosID && *lpszSheetAutoPosID)
+               ActivateAutoPos(lpszSheetAutoPosID);
+}
+
+inline cdxCDynamicPropSheet::cdxCDynamicPropSheet(LPCTSTR lpszSheetAutoPosID, LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage, Freedom fd, UINT nFlags)
+:      CPropertySheet(pszCaption,pParentWnd,iSelectPage),
+       cdxCDynamicWndEx(fd,nFlags),
+       m_bHasPos(false)
+{
+       if(lpszSheetAutoPosID && *lpszSheetAutoPosID)
+               ActivateAutoPos(lpszSheetAutoPosID);
+}
+
+#pragma warning(default: 4100)
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_CDXCDYNAMICPROPSHEET_H__82427297_6456_11D3_802D_000000000000__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWnd.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWnd.cpp
new file mode 100644 (file)
index 0000000..d35ebf5
--- /dev/null
@@ -0,0 +1,747 @@
+// cdxCDynamicWnd.cpp: implementation of the cdxCDynamicWnd class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "cdxCDynamicWnd.h"
+#include       "cdxCSizeIconCtrl.h"
+
+#ifdef _DEBUG
+#undef THIS_FILE
+static char THIS_FILE[]=__FILE__;
+#define new DEBUG_NEW
+#endif
+
+#pragma warning(disable: 4100)
+#pragma warning(disable: 4706)
+
+
+IMPLEMENT_DYNAMIC(cdxCDynamicLayoutInfo,CObject);
+
+//////////////////////////////////////////////////////////////////////
+// cdxCDynamicWnd::Position
+//////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////
+// Positioning engine
+//////////////////////////////////////////////////////////////////////
+
+/*
+ * Standard Controller's Position() routine
+ * This has the same functionality as known from the former
+ * cdxCDynamicControlsManager class.
+ *
+ * One exception is the new "szMin" property which allows
+ * the class to "hide" the control if it becomes too small
+ * (it will be moved outside the client area).
+ */
+
+void cdxCDynamicWnd::Position::Apply(HWND hwnd, CRect & rectNewPos, const cdxCDynamicLayoutInfo & li) const
+{
+       if(li.m_bUseScrollPos)
+       {
+               rectNewPos.left =       left   - li.m_pntScrollPos.x;
+               rectNewPos.right        =       right  - li.m_pntScrollPos.x;
+               rectNewPos.top          =       top    - li.m_pntScrollPos.y;
+               rectNewPos.bottom       =       bottom - li.m_pntScrollPos.y;
+
+               if(li.m_szDelta.cx >= 0)
+               {
+                       rectNewPos.left +=      (m_Bytes[X1] * li.m_szDelta.cx) / 100;
+                       rectNewPos.right        +=      (m_Bytes[X2] * li.m_szDelta.cx) / 100;
+               }
+               if(li.m_szDelta.cy >= 0)
+               {
+                       rectNewPos.top          +=      (m_Bytes[Y1] * li.m_szDelta.cy) / 100;
+                       rectNewPos.bottom       +=      (m_Bytes[Y2] * li.m_szDelta.cy) / 100;
+               }
+       }
+       else
+       {
+               rectNewPos.left =       left   + (m_Bytes[X1] * li.m_szDelta.cx) / 100;
+               rectNewPos.right        =       right  + (m_Bytes[X2] * li.m_szDelta.cx) / 100;
+               rectNewPos.top          =       top    + (m_Bytes[Y1] * li.m_szDelta.cy) / 100;
+               rectNewPos.bottom       =       bottom + (m_Bytes[Y2] * li.m_szDelta.cy) / 100;
+       }
+
+       if(rectNewPos.left + m_szMin.cx >= rectNewPos.right)
+       {
+               rectNewPos.right        =       -10;
+               rectNewPos.left =       rectNewPos.right - m_szMin.cx;
+       }
+       if(rectNewPos.top + m_szMin.cy >= rectNewPos.bottom)
+       {
+               rectNewPos.bottom       =       -10;
+               rectNewPos.top          =       rectNewPos.bottom - m_szMin.cy;
+       }
+}
+
+//////////////////////////////////////////////////////////////////////
+// cdxCDynamicWnd
+//////////////////////////////////////////////////////////////////////
+
+const CSize    cdxCDynamicWnd::M_szNull(0,0);
+const cdxCDynamicWnd::SBYTES   cdxCDynamicWnd::TopLeft         =       { 0,0,0,0 },
+                                                                               cdxCDynamicWnd::TopRight        =       { 100,0,100,0 },
+                                                                               cdxCDynamicWnd::BotLeft         =       { 0,100,0,100 },
+                                                                               cdxCDynamicWnd::BotRight        =       { 100,100,100,100 };
+
+
+//////////////////////////////////////////////////////////////////////
+// construction
+//////////////////////////////////////////////////////////////////////
+
+/*
+ * construction
+ */
+
+cdxCDynamicWnd::cdxCDynamicWnd(Freedom fd, UINT nFlags)
+:      m_pWnd(NULL),
+       m_iDisabled(0),
+       m_Freedom(fd),
+       m_szInitial(M_szNull),
+       m_szMin(0,0),
+       m_szMax(0,0),
+       m_bUseScrollPos(false),
+       m_pSizeIcon(NULL),
+       m_idSizeIcon(AFX_IDW_SIZE_BOX),
+       m_nMyTimerID(0),
+       m_nFlags(nFlags)
+{
+}
+
+
+//////////////////////////////////////////////////////////////////////
+// control work
+//////////////////////////////////////////////////////////////////////
+
+/*
+ * AddSzControl()
+ * --------------
+ * Add a control that will react on changes to the parent window's size.
+ *             hwnd                    -       the child control.
+ *             pos                     -       describes what to do at all.
+ *             bReposNow       -       true to immediately make the control change its position
+ *                                                     if necessary, false if not
+ *                                                     In the latter case you may like to call Layout() afterwards.
+ *
+ * returns false if an invalid window has been passed to this funciton.
+ */
+
+bool cdxCDynamicWnd::AddSzControl(HWND hwnd, const Position & pos, bool bReposNow)
+{
+       if(!IsWindow())
+       {
+               ASSERT(IsWindow());
+               return false;                   // NO assert if hwnd is invalid
+       }
+
+       if(!::IsWindow(hwnd))
+       {
+               TRACE(_T("*** NOTE[cdxCDynamicWnd::AddSzControl(HWND,const Position &,bool)]: Handle 0x%lx is not a valid window.\n"),(DWORD)hwnd);
+               return false;
+       }
+
+       m_Map.SetAt(hwnd,pos);
+
+       if(bReposNow)
+               UpdateControlPosition(hwnd);
+
+       return true;
+}
+
+/*
+ * AllControls()
+ * -------------
+ * Apply positioning to all controls of the window.
+ *             bytes                   -       positioning data
+ *             bOverwrite      -       overwrite any existing positioning data.
+ *             bReposNow       -       true to immediately make the control change its position
+ *                                                     if necessary, false if not
+ *                                                     In the latter case you may like to call Layout() afterwards.
+ */
+
+void cdxCDynamicWnd::AllControls(const SBYTES & bytes, bool bOverwrite, bool bReposNow)
+{
+       if(!IsWindow())
+       {
+               ASSERT(false);
+               return;
+       }
+
+       Position        pos;
+       UINT            nCnt    =       0;
+
+       for(HWND hwnd = ::GetWindow(m_pWnd->m_hWnd,GW_CHILD); hwnd; hwnd = ::GetNextWindow(hwnd,GW_HWNDNEXT))
+       {
+               if(bOverwrite || !m_Map.Lookup(hwnd,pos))
+                       if(AddSzControl(hwnd,bytes,false))
+                               ++nCnt;
+       }
+
+       if(nCnt && bReposNow)
+               Layout();
+}
+
+/*
+ * RemSzControl()
+ * --------------
+ * Removes a control from the internal list.
+ * The control will remain at its initial position if bMoveToInitialPos is false
+ * Returns false if an error occured.
+ */
+
+bool cdxCDynamicWnd::RemSzControl(HWND hwnd, bool bMoveToInitialPos)
+{
+       if(!::IsWindow(hwnd) || !IsWindow())
+               return false;
+
+       if(bMoveToInitialPos)
+       {
+               Position        pos;
+
+               if(!m_Map.Lookup(hwnd,pos))
+                       return false;
+
+               VERIFY( ::SetWindowPos(hwnd,HWND_TOP,
+                                                                       pos.left,pos.top,pos.Width(),pos.Height(),
+                                                                       SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER) );
+       }
+
+       return m_Map.RemoveKey(hwnd) != FALSE;
+}
+
+/*
+ * UpdateControlPosition()
+ * =======================
+ * Move control to its desired position.
+ * returns false if HWND is not valid.
+ */
+
+bool cdxCDynamicWnd::UpdateControlPosition(HWND hwnd)
+{
+       if(!IsWindow())
+       {
+               ASSERT(IsWindow());
+               return false;                   // NO assert if hwnd is invalid
+       }
+
+       if(!::IsWindow(hwnd))
+       {
+               TRACE(_T("*** NOTE[cdxCDynamicWnd::UpdateControlPosition()]: Handle 0x%lx is not a valid window.\n"),(DWORD)hwnd);
+               return false;
+       }
+
+       cdxCDynamicLayoutInfo   *pli    =       DoCreateLayoutInfo();
+       ASSERT(pli != NULL);
+
+       if(!pli || !pli->IsInitial())
+       {
+               try
+               {
+                       CRect                                                   rectNew;
+                       WINDOWPLACEMENT                 wpl;
+                       wpl.length      =       sizeof(WINDOWPLACEMENT);
+                       VERIFY(::GetWindowPlacement(hwnd,&wpl) );
+
+                       rectNew =       wpl.rcNormalPosition;
+
+                       if(DoMoveCtrl(hwnd,::GetDlgCtrlID(hwnd),rectNew,*pli) &&
+                               (rectNew != wpl.rcNormalPosition) )
+                       {
+                               VERIFY( ::SetWindowPos(hwnd,HWND_TOP,
+                                                                                               rectNew.left,rectNew.top,rectNew.Width(),rectNew.Height(),
+                                                                                               SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER) );
+                       }
+               }
+               catch(...)
+               {
+                       delete pli;
+                       throw;
+               }
+       }
+
+       delete pli;
+
+       return true;
+}
+
+
+//////////////////////////////////////////////////////////////////////
+// main layout engine
+//////////////////////////////////////////////////////////////////////
+
+/*
+ * Layout()
+ * --------
+ * Iterates through all child windows and calls DoMoveCtrl() for them.
+ * This function is NOT virtual.
+ * To implement your own layout algorithm, please
+ * a) overwrite DoCreateLayoutInfo() to return an object of a class
+ *    derived from cdxCDynamicLayoutInfo.
+ *    You can put any user-data into your object; it will be passed
+ *    on to the DoMoveCtrl() function.
+ * b) overwrite DoMoveCtrl() and implement the layout logic.
+ *    An example can be found in the example project, anytime.
+ */
+
+void cdxCDynamicWnd::Layout()
+{
+       if(!IsWindow())
+       {
+               ASSERT(IsWindow());
+               return;
+       }
+       
+       // resize stuff
+
+       cdxCDynamicLayoutInfo   *pli            =       DoCreateLayoutInfo();
+
+       if(!pli)
+       {
+               ASSERT(false);          // YOU MUST PROVIDE A LAYOUT INFO BLOCK !
+               return;
+       }
+
+       try
+       {
+               HDWP                                                    hdwp            =       ::BeginDeferWindowPos(pli->m_nCtrlCnt);
+               HWND                                                    hwnd;
+               bool                                                    bRepeat;
+               CRect                                                   rectNew;
+               UINT                                                    id;
+               WINDOWPLACEMENT                 wpl;
+               DWORD                                                   swpFlags        =       SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|(!(m_nFlags & flSWPCopyBits) ? SWP_NOCOPYBITS : 0);
+
+               if(!( hwnd = ::GetWindow(m_pWnd->m_hWnd,GW_CHILD) ))
+               {
+                       TRACE(_T("*** NOTE[cdxCDynamicWnd::Layout()]: The window at 0x%lx does not have child windows.\n"),(DWORD)m_pWnd->m_hWnd);
+                       return;
+               }
+
+               do
+               {
+                       bRepeat                         =       false;
+
+                       for(; hwnd; hwnd = ::GetNextWindow(hwnd,GW_HWNDNEXT))
+                       {
+                               wpl.length      =       sizeof(WINDOWPLACEMENT);
+
+                               if(!::GetWindowPlacement(hwnd,&wpl))
+                               {
+                                       ASSERT(false);          // GetWindowPlacement() failed
+                                       continue;
+                               }
+
+                               rectNew =       wpl.rcNormalPosition;
+                               ASSERT(rectNew.left >= 0);
+                               id                      =       ::GetDlgCtrlID(hwnd);
+
+                               if(!DoMoveCtrl(hwnd,id,rectNew,*pli) ||
+                                       (rectNew == wpl.rcNormalPosition) )
+                               {
+                                       // window doesn't need to be moved
+                                       // (position is not been changed)
+                                       continue;
+                               }
+
+                               if(hdwp)
+                               {
+                                       if(!( hdwp = ::DeferWindowPos(hdwp,hwnd,HWND_TOP,
+                                                                                                                       rectNew.left,rectNew.top,rectNew.Width(),rectNew.Height(),
+                                                                                                                       swpFlags) ))
+                                       {
+                                               TRACE(_T("*** ERROR[cdxCDynamicWnd::ReorganizeControls()]: DeferWindowPos() failed ??\n"));
+                                               bRepeat =       true;
+                                               break;          // error; we'll repeat the loop by using SetWindòwPos()
+                                                                               // this won't look good, but work :)
+                                       }
+                               }
+                               else
+                               {
+                                       VERIFY( ::SetWindowPos(hwnd,HWND_TOP,
+                                                                                               rectNew.left,rectNew.top,rectNew.Width(),rectNew.Height(),
+                                                                                               swpFlags) );
+                               }
+                       }
+               }
+               while(bRepeat);
+
+               if(hdwp)
+               {
+                       VERIFY( ::EndDeferWindowPos(hdwp) );
+               }
+       }
+       catch(...)
+       {
+               delete pli;
+               throw;
+       }
+
+       delete pli;
+}
+
+//////////////////////////////////////////////////////////////////////
+// message work
+//////////////////////////////////////////////////////////////////////
+
+/*
+ * DoMoveCtrl()
+ * ------------
+ * This virtual function is used to calculate a child window's new position
+ * based on the some data (from the cdxCDynamicLayoutInfo object).
+ * This standard routine is made to implement the algorithm as known from
+ * the cdxCDynamicControlsManager.
+ * You can implement your own code if you are not satisfied with the
+ * following function.
+ * If you need global data, overwrite DoCreateLayoutInfo() which will
+ * be called by Layout() and which you can use to collect these data
+ * once for the entire layout process.
+ *
+ * PARAMETERS:
+ *
+ *             hwnd                    -       handle of the child control
+ *             id                              -       its id
+ *             rectNewPos      -       write the new position here in.
+ *                                                     initially contains the current position
+ *             li                              -       Some information on the parent window.
+ *                                                     You can provide extra information here
+ *                                                     by overwriting DoCreateLayoutInfo().
+ *
+ * RETURN CODES:
+ *
+ * return false if you don't want to move the control
+ * return true if you updated the control's position and stored it into "rectNewPos"
+ * If you don't change it, the control will not be moved.
+ *
+ * #### don't move the control by yourself. Layout() will do for you to ensure
+ *      that as little flickering as possible will occur.
+ */
+
+bool cdxCDynamicWnd::DoMoveCtrl(HWND hwnd, UINT id, CRect & rectNewPos, const cdxCDynamicLayoutInfo & li)
+{
+       Position        pos;
+
+       if(!GetControlPosition(hwnd,pos))
+               return false;
+
+       pos.Apply(hwnd,rectNewPos,li);
+       return true;
+}      
+
+/*
+ * DoDestroyCtrl()
+ * ---------------
+ * Called when a child window is about being destroyed.
+ * We use it to remove our "Position" data from our database.
+ */
+void cdxCDynamicWnd::DoDestroyCtrl(HWND hwnd)
+{
+       m_Map.RemoveKey(hwnd);
+}
+
+//////////////////////////////////////////////////////////////////////
+// initialization & clean-uo
+//////////////////////////////////////////////////////////////////////
+
+/*
+ * DoInitWindow()
+ * --------------
+ * This function sets up the window pointer.
+ * It is recommended that "rWnd" points to an existing CWnd.
+ * However, it doesn't need to exist as long as you
+ * 1) provide a non-zero "szInitial" object.
+ * 2) don't want a size icon.
+ *
+ *     PARAMETERS:
+ *
+ *             rWnd                    -       reference to your window ("*this")
+ *                                                     the window must exist (::IsWindow(rWnd.m_hWnd) must be true)
+ *             fd                              -       Freedom (in which direction(s) your window shall be sizable BY THE USER):
+ *                                                     Possible values: fdAll, fdHorz, fdVert and fdNone.
+ *                                                     This is only applied to user-actions; resizing + layout may work
+ *                                                     even if the freedom parameter is fdNone (in that case user cannot resize
+ *                                                     your window, but you can).
+ *             flags                   -       several flags:
+ *                                                             flSizeIcon              -       creates a size icon
+ *                                                             flAntiFlicker   -       activates anti-flickering stuff
+ *             [szInitial      -       initial client size]
+ */
+
+void cdxCDynamicWnd::DoInitWindow(CWnd & rWnd)
+{
+       ASSERT(::IsWindow(rWnd.m_hWnd));        // ensure the window exists ...
+
+       m_pWnd          =       &rWnd;
+       DoInitWindow(rWnd,GetCurrentClientSize());
+}
+
+void cdxCDynamicWnd::DoInitWindow(CWnd & rWnd, const CSize & szInitial)
+{
+       ASSERT(::IsWindow(rWnd.m_hWnd) && szInitial.cx && szInitial.cy);        // ensure the window exists ...
+
+       m_pWnd          =       &rWnd;
+       m_szInitial     =       szInitial;
+       m_szMin         =       szInitial;
+
+       /*
+        * this window will flicker somewhat deadly if you do not have the
+        * WS_CLIPCHILDREN style set for you window.
+        * You may like to use the following line anywhere
+        * to apply it:
+        
+                 CWnd::ModifyStyle(0,WS_CLIPCHILDREN);
+
+    */
+
+#ifdef _DEBUG
+       if(!(rWnd.GetStyle() & WS_CLIPCHILDREN) && !(m_nFlags & flSWPCopyBits))
+       {
+               TRACE(_T("***\n")
+                                       _T("*** cdxCDynamicWnd class note: If your window flickers too much, add the WS_CLIPCHILDREN style to it\n")
+                                       _T("***                            or try to set the flSWPCopyBits flags !!!\n")
+                                       _T("***\n"));
+       }
+#endif
+
+       //
+       // now, if a DYNAMIC MAP is been defined,
+       // we start working with it
+       //
+
+       const __dynEntry        *pEntry,*pLast  =       NULL;
+       UINT                                    nInitCnt        =       GetCtrlCount();
+
+       if(pLast = __getDynMap(pLast))
+       {
+               HWND            hwnd;
+               SBYTES  bytes;
+
+               for(pEntry = pLast; pEntry->type != __end; ++pEntry)
+               {
+                       if((pEntry->id != DYNAMIC_MAP_DEFAULT_ID)
+                               && !( hwnd = ::GetDlgItem(m_pWnd->m_hWnd,pEntry->id) ))
+                       {
+                               TRACE(_T("*** NOTE[cdxCDynamicWnd::DoInitWindow()]: Dynamic map initialization: There's no control with the id 0x%lx !\n"),pEntry->id);
+                               continue;
+                       }
+
+                       switch(pEntry->type)
+                       {
+                               case    __bytes:
+
+                                       bytes[X1]       =       pEntry->b1;
+                                       bytes[Y1]       =       pEntry->b2;
+                                       bytes[X2]       =       pEntry->b3;
+                                       bytes[Y2]       =       pEntry->b4;
+                                       break;
+
+                               case    __modes:
+                                       
+                                       _translate((Mode)pEntry->b1,bytes[X1],bytes[X2]);
+                                       _translate((Mode)pEntry->b2,bytes[Y1],bytes[Y2]);
+                                       break;
+
+                               default:
+
+                                       ASSERT(false);          // never come here !!!!!
+                                       break;
+                       }
+
+                       if(pEntry->id == DYNAMIC_MAP_DEFAULT_ID)
+                               AllControls(bytes,false,false);
+                       else
+                               AddSzControl(hwnd,bytes,M_szNull,false);
+               }
+       }
+
+       //
+       // handle creation flags
+       //
+
+       if(m_nFlags & flSizeIcon)
+       {
+               m_pSizeIcon     =       new cdxCSizeIconCtrl;
+               VERIFY( m_pSizeIcon->Create(m_pWnd) );
+
+               AddSzControl(m_pSizeIcon->m_hWnd,BotRight,M_szNull,false);
+               m_pSizeIcon->ShowWindow(SW_SHOW);
+       }
+
+       m_bIsAntiFlickering     =       false;
+       m_nMyTimerID                    =       DEFAULT_TIMER_ID;
+       m_dwClassStyle                  =       ::GetClassLong(*m_pWnd,GCL_STYLE) & (CS_VREDRAW|CS_HREDRAW);
+
+       OnInitialized();
+
+       if(nInitCnt < GetCtrlCount())
+               Layout();
+}
+
+
+/*
+ * DoDestroyWindow()
+ * -----------------
+ * Clean up.
+ */
+
+void cdxCDynamicWnd::DoOnDestroy()
+{
+       if(IsWindow())
+               OnDestroying();
+
+       m_iDisabled             =       1;
+       m_pWnd                  =       NULL;
+       m_Map.RemoveAll();
+
+       if(m_pSizeIcon)
+       {
+               m_pSizeIcon->DestroyWindow();
+               delete m_pSizeIcon;
+
+               m_pSizeIcon     =       NULL;
+       }
+}
+
+//////////////////////////////////////////////////////////////////////
+// message work
+//////////////////////////////////////////////////////////////////////
+
+/*
+ * DoOnSize()
+ * ----------
+ * Calls Layout() if necessary.
+ */
+
+void cdxCDynamicWnd::DoOnSize(UINT nType, int cx, int cy)
+{
+       if(!IsDisabled() &&
+               IsWindow() &&
+               (nType != SIZE_MINIMIZED))
+       {
+               Layout();
+       }
+}
+
+/*
+ * DoOnSizing()
+ * ------------
+ * This is my turbo-new-super-duper anti-flickering function
+ * StartAntiFlickering() is called by the following handler.
+ */
+
+void cdxCDynamicWnd::DoOnSizing(UINT fwSide, LPRECT pRect)
+{
+       if(m_nMyTimerID && !IsDisabled() && IsWindow() && (m_nFlags & flAntiFlicker))
+               StartAntiFlickering(    (fwSide == WMSZ_BOTTOM) ||
+                                                                       (fwSide == WMSZ_BOTTOMRIGHT) ||
+                                                                       (fwSide == WMSZ_RIGHT));
+}
+
+/*
+ * StartAntiFlickering()
+ * ---------------------
+ * This routine modifies the CS_VREDRAW and CS_HREDRAW CLASS style
+ * flags.
+ * If you don't like this, set "m_nMyTimerID" to 0.
+ *             bIsBotRight     -       true if the window is sized in right, bottom or bot/right direction.
+ */
+
+void cdxCDynamicWnd::StartAntiFlickering(bool bIsBotRight)
+{
+       if(IsWindow() && m_nMyTimerID)
+       {
+               DWORD   dw      =       m_dwClassStyle;
+               if(bIsBotRight)
+                       dw      &=      ~(CS_VREDRAW|CS_HREDRAW);
+               else
+                       dw      |=      CS_VREDRAW|CS_HREDRAW;
+
+               m_pWnd->KillTimer(m_nMyTimerID);
+               m_pWnd->SetTimer(m_nMyTimerID,120,NULL);
+
+               if(!m_bIsAntiFlickering)
+               {
+                       ::SetClassLong(*m_pWnd,GCL_STYLE,dw);
+                       m_bIsAntiFlickering     =       true;
+               }
+       }
+}
+
+/*
+ * DoOnTimer()
+ * -----------
+ * Processes the timer associated to my DoOnSizing() routine.
+ * Changes back the class style.
+ */
+
+void cdxCDynamicWnd::DoOnTimer(UINT nIDEvent) 
+{
+       if(IsWindow() && (nIDEvent == m_nMyTimerID))
+       {
+               m_pWnd->KillTimer(m_nMyTimerID);
+               if(m_bIsAntiFlickering)
+               {
+                       ::SetClassLong(*m_pWnd,GCL_STYLE,m_dwClassStyle);
+                       m_bIsAntiFlickering     =       false;
+               }
+       }
+}
+
+//////////////////////////////////////////////////////////////////////
+
+/*
+ * DoOnGetMinMaxInfo()
+ * -------------------
+ * fill in MINMAXINFO as requested
+ * Call your CWnd's OnGetMinMaxInfo first !
+ * [changed due to a bug reported by Michel Wassink <mww@mitutoyo.nl>]
+ */
+
+void cdxCDynamicWnd::DoOnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
+{
+       if(IsWindow() && !IsDisabled()  &&  IsUp())
+       {
+               CSize   szDelta =       GetBorderSize();
+
+               lpMMI->ptMinTrackSize.x =       m_szMin.cx + szDelta.cx;
+               lpMMI->ptMinTrackSize.y =       m_szMin.cy + szDelta.cy;
+
+               if(m_Freedom & fdHoriz)
+               {
+                       if(m_szMax.cx > 0)
+                               lpMMI->ptMaxTrackSize.x =       m_szMax.cx + szDelta.cx;
+               }
+               else
+                       lpMMI->ptMaxTrackSize.x =       lpMMI->ptMinTrackSize.x;
+
+               if(m_Freedom & fdVert)
+               {
+                       if(m_szMax.cy > 0)
+                               lpMMI->ptMaxTrackSize.y =       m_szMax.cy + szDelta.cy;
+               }
+               else
+                       lpMMI->ptMaxTrackSize.y =       lpMMI->ptMinTrackSize.y;
+       }
+}
+
+//////////////////////////////////////////////////////////////////////
+
+/*
+ * DoOnParentNotify()
+ * ------------------
+ * When a child window is been destroyed, we remove the appropiate
+ * HWND entries.
+ */
+
+void cdxCDynamicWnd::DoOnParentNotify(UINT message, LPARAM lParam) 
+{
+       if(!lParam || (message != WM_DESTROY))
+               return;
+
+       DoDestroyCtrl((HWND)lParam);
+}
+
+
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWnd.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWnd.h
new file mode 100644 (file)
index 0000000..6f18a38
--- /dev/null
@@ -0,0 +1,694 @@
+// cdxCDynamicWnd.h: interface for the cdxCDynamicWnd class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_CDXCDYNAMICWND_H__1FEFDD69_5C1C_11D3_800D_000000000000__INCLUDED_)
+#define AFX_CDXCDYNAMICWND_H__1FEFDD69_5C1C_11D3_800D_000000000000__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#include <afxwin.h>
+#include <afxtempl.h>
+
+class cdxCSizeIconCtrl;
+class cdxCDynamicWnd;
+
+#ifndef DECLARE_CDX_HIDDENFUNC
+#define        DECLARE_CDX_HIDDENFUNC(name)            name
+#endif
+#ifndef DECLARE_CDX_HIDDENENUM
+#define        DECLARE_CDX_HIDDENENUM(name)            enum name
+#endif
+#ifndef DECLARE_CDX_HIDDENSTRUCT
+#define        DECLARE_CDX_HIDDENSTRUCT(name)  struct name
+#endif
+
+#pragma warning(disable: 4100)
+#pragma warning(disable: 4706)
+
+/*
+ * ---------------------------
+ * cdxCDynamicWnd beta 1 fix 9
+ * ---------------------------
+ * A) To make groupboxes work with WS_CLIPCHILDREN windows, set
+ *    the WS_EX_TRANSPARENT flag for this child window.
+ *    THIS IS NOT A PROBLEM WITH THIS CLASS BUT WITH MFC AT ALL
+ *    (you can check it by test-viewing the group box in the
+ *     resource editor).
+ * B) The property sheet now has the WS_CLIPCHILDREN flag and it
+ *    uses flSWPCopyBits.
+ * C) The same applies to cdxCDynamicBar.
+ * ---------------------------
+ * cdxCDynamicWnd beta 1 fix 8
+ * ---------------------------
+ * A) Flags flSWPCopyBits added (which will be cleared by default)
+ *             This leads into far less flickering but ensures proper updates
+ *             for all child controls.
+ *             Some controls do need you to clear this flag.
+ *             It ensures that I don't use SWP_NOCOPYBITS.
+ *    (Michel Wassink)
+ *
+ *    IMPORTANT:
+ *    People should use the WS_CLIPCHILDREN flag for DIALOGS to
+ *    avoid flickering !!!!!
+ *
+ * B) Added ModifyFlags() and GetFlags().
+ *    (To help people modifying my flags)
+ * ---------------------------
+ * cdxCDynamicWnd beta 1 fix 7
+ * ---------------------------
+ * A) Bug in two overloads taking SBYTE parameters removed.
+ *    (Uwe Keim)
+ * ---------------------------
+ * cdxCDynamicWnd beta 1 fix 6
+ * ---------------------------
+ * A) Added some #pragma warning(disable) to avoid ugly warnings
+ *    when compiling using warning level 4.
+ *    (Rick Hullinger)
+ * ---------------------------
+ * cdxCDynamicWnd beta 1 fix 5
+ * ---------------------------
+ * A) AddSzControl(...) overloads for control IDs added
+ *    (Uwe Keim)
+ * B) Design issue: AddSzControl() with bRepos == true didn't used
+ *    DoMoveCtrl() as it would supposed to be.
+ *    (Hans Bühler, concerning an issue of Roberto del Noce.
+ * C) Layout-Algorithm little changed:
+ *    If you now want to provide extra information by deriving
+ *    a class from cdxCDynamicLayoutInfo, you no longer overwrite Layout()
+ *    but DoCreateLayoutInfo().
+ *    (Hans Bühler)
+ * ---------------------------
+ * cdxCDynamicWnd beta 1 fix 4
+ * ---------------------------
+ * A) BEGIN_DYNAMIC_MAP() now takes TWO parameters:
+ *    The class itself and its base-class.
+ *    This way even maps defined for bade-classes will work properly.
+ *    (Rick Hullinger)
+ *    If this feature offends your code, define _CDX_SIMPLE_DYNAMIC_MAPS in your
+ *    project's settings to switch back to the old behaviour.
+ *    However, it's strongly recommended to modify the BEGIN_DYNAMIC_MAP()
+ *    declarations since the final release will surely have this feature.
+ * ---------------------------
+ * cdxCDynamicWnd beta 1 fix 3
+ * ---------------------------
+ * A) The size icon is now displayed using the right colors.
+ * ---------------------------
+ * cdxCDynamicWnd beta 1 fix 2
+ * ---------------------------
+ * A) changed cdxCDynamicWnd::BYTE to cdxCDynamicWnd::SBYTE
+ *    changed cdxCDynamicWnd::BYTES to cdxCDynamicWnd::SBYTES
+ *    to avoid conflicts with Window's BYTE data type.
+ *    (Joshua Jensen)
+ * B) Dialogs will be centered and sized to 110% by default.
+ *    (Hans Bühler)
+ * C) Bug when avoiding flAntiFlicker
+ * ---------------------------
+ * cdxCDynamicWnd beta 1 fix 1
+ * ---------------------------
+ * A) ::Get/SetWindowPlacement() needs length in structure
+ *    (Joshua Jensen)
+ */
+
+
+/*
+ * cdxCDynamicLayoutInfo
+ * =====================
+ * Layout information class.
+ * This class is derived from CObject and made dynamic using
+ * DECLARE_DYNAMIC.
+ * You can derive your own class from it to provide more information
+ * to your own DoMoveCtrl() function (if you have one).
+ */
+
+class cdxCDynamicLayoutInfo : public CObject
+{
+       DECLARE_DYNAMIC(cdxCDynamicLayoutInfo);
+
+public:
+       CSize           m_szCurrent,                    // current client size
+                               m_szInitial,                    // initial client size
+                               m_szDelta;                              // current - initial
+       UINT            m_nCtrlCnt;                             // number of controls (>=0)
+       CPoint  m_pntScrollPos;         // current scrolling position
+       bool            m_bUseScrollPos;                // use scroll pos if m_szDelta < 0
+
+public:
+       cdxCDynamicLayoutInfo() : m_bUseScrollPos(false) 
+        {
+        }
+
+       cdxCDynamicLayoutInfo(cdxCDynamicWnd *pWnd) : m_bUseScrollPos(false) 
+        { 
+          operator=(pWnd); 
+        }
+
+       virtual ~cdxCDynamicLayoutInfo() 
+        {
+        }
+
+       bool operator=(cdxCDynamicWnd *pWnd);
+
+       bool IsInitial() const { return !m_szDelta.cx && !m_szDelta.cy && (!m_bUseScrollPos || (!m_pntScrollPos.x && !m_pntScrollPos.y)); }
+};
+
+/*
+ * cdxCDynamicWnd
+ * ==============
+ * The dynamic window manager.
+ */
+
+class cdxCDynamicWnd
+{
+public:
+       // add sz control mode types
+
+       enum Mode               // flags for AddSzControl()
+       {
+               mdNone                  =       0,                                      // does nothing
+               mdResize                        =       1,                                      // resize in that dimension
+               mdRepos                 =       2,                                      // reposition
+               mdRelative              =       3,                                      // center (size by delta/2 and repos by delta/2)
+       };
+
+       // freedom
+
+       enum Freedom
+       {
+               fdNone                  =       0,                                      // might be used but I don't imagine what you want from this ??
+               fdHoriz                 =       0x01,                           // horizantally sizable only
+               fdVert                  =       0x02,                           // vertically sizable only
+               fdAll                           =       fdHoriz|fdVert,// sizable in all directions
+
+               fdHorz                  =       fdHoriz,                        // synonyms
+               fdX                             =       fdHoriz,
+               fdY                             =       fdVert
+       };
+
+       // some flags
+
+       enum Flags
+       {
+               flSizeIcon              =       0x01,                           // create size icon
+               flAntiFlicker   =       0x02,                           // some utility func
+               flSWPCopyBits   =       0x04,                           // make SetWindowPos() don't use SWP_NOCOPYBITS. This may lead
+                                                                                                       // into improper results for SOME child controls but speeds up redrawing (less flickering)
+
+               _fl_reserved_   =       0x0000ffff,             // reserved
+               _fl_freeuse_    =       0xffff0000              // free 4 u
+       };
+
+       // some constants
+
+       enum
+       {
+               DEFAULT_TIMER_ID        =       0x7164
+       };
+
+       // byte percentage
+
+       enum { X1=0, Y1=1, X2=2, Y2=3 };
+
+       typedef signed char     SBYTE;
+       typedef SBYTE                   SBYTES[4];
+
+       // some internal data; might be of any interest for you
+
+       class Position : public CRect
+       {
+       public:
+
+       public:
+               SBYTES          m_Bytes;
+               CSize                   m_szMin;
+
+       public:
+               Position() : CRect(0,0,0,0) {}
+               Position(const CRect & rect, const SBYTES & bytes, const CSize & szMin = M_szNull) : CRect(rect), m_szMin(szMin) { operator=(bytes); }
+               ~Position() {}
+
+               void operator=(const CRect & rectInitial) { *this = rectInitial; }
+               void operator=(const SBYTES & bytes) { for(int i=0; i<4; ++i) m_Bytes[i] = bytes[i]; }
+               void operator=(const CSize & szMin) { m_szMin = szMin; }
+
+               void Apply(HWND hwnd, CRect & rectNewPos, const cdxCDynamicLayoutInfo & li) const;
+       };
+
+private:
+       CWnd                                            *m_pWnd;                                // the parent window
+       cdxCSizeIconCtrl                *m_pSizeIcon;           // size icon (if wanted)
+       bool                                            m_bIsAntiFlickering;
+
+protected:
+       int                                             m_iDisabled;            // disabled counter
+       DWORD                                           m_dwClassStyle; // stored for AntiFlickering feature
+       CMap<HWND,HWND,Position,const Position &>
+                                                               m_Map;                          // controllers
+
+public:
+       Freedom                                 m_Freedom;                      // in which direction may we modify the window's size ?
+       UINT                                            m_nFlags;
+       CSize                                           m_szInitial;            // initial client size
+       CSize                                           m_szMin,                                // min/max CLIENT size (set to zero to disable)
+                                                               m_szMax;
+       UINT                                            m_idSizeIcon;           // id of size icon (default to AFX_IDW_SIZE_BOX)
+       UINT                                            m_nMyTimerID;           // id of the timer used by me
+       bool                                            m_bUseScrollPos;        // use scroll position when moving controls
+
+public:
+       cdxCDynamicWnd(Freedom fd, UINT nFlags);
+       virtual ~cdxCDynamicWnd() { DoOnDestroy(); }
+
+       //
+       // status
+       //
+
+       bool IsValid() const { return m_pWnd != NULL; }
+       bool IsWindow() const { return IsValid() && ::IsWindow(m_pWnd->m_hWnd); }
+       bool IsUp() const { return IsWindow() && !m_pWnd->IsIconic(); }
+       bool IsDisabled() const { return m_iDisabled > 0; }
+       CWnd *Window() const { return m_pWnd; }
+
+       virtual UINT GetCtrlCount() const { return m_Map.GetCount(); }
+
+       //
+       // basics
+       //
+
+       bool Enable() { return --m_iDisabled <= 0; }
+       void Disable() { ++m_iDisabled; }
+       UINT ModifyFlags(UINT nAdd, UINT nRem = 0) { UINT n = m_nFlags; m_nFlags &= ~nRem; m_nFlags |= nAdd; return n; }
+       UINT GetFlags() const { return m_nFlags; }
+
+       //
+       // client size stuff
+       //
+
+       virtual CSize GetCurrentClientSize() const;
+       CSize GetBorderSize() const;
+
+       //
+       // AddSzControl for HWNDs
+       //
+
+       bool AddSzXControl(HWND hwnd, SBYTE x1, SBYTE x2, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzControl(hwnd,x1,0,x2,0,szMin,bReposNow); }
+       bool AddSzXControl(HWND hwnd, Mode md, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzControl(hwnd,md,mdNone,szMin,bReposNow); }
+       bool AddSzYControl(HWND hwnd, SBYTE y1, SBYTE y2, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzControl(hwnd,0,y1,0,y2,szMin,bReposNow); }
+       bool AddSzYControl(HWND hwnd, Mode md, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzControl(hwnd,mdNone,md,szMin,bReposNow); }
+
+       bool AddSzControl(HWND hwnd, Mode mdX, Mode mdY, const CSize & szMin = M_szNull, bool bReposNow = true);
+       bool AddSzControl(HWND hwnd, SBYTE x1, SBYTE y1, SBYTE x2, SBYTE y2, const CSize & szMin = M_szNull, bool bReposNow = true);
+
+       bool AddSzControl(HWND hwnd, HWND hLikeThis, bool bReposNow = true);
+       bool AddSzControl(HWND hwnd, const SBYTES & bytes, const CSize & szMin = M_szNull, bool bReposNow = true);
+
+       virtual bool AddSzControl(HWND hwnd, const Position & pos, bool bReposNow = true);                                      // virtual entry point
+
+       //
+       // AddSzControl for IDss
+       //
+
+       bool AddSzXControl(UINT id, SBYTE x1, SBYTE x2, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzXControl(GetSafeChildHWND(id),x1,x2,szMin,bReposNow); }
+       bool AddSzXControl(UINT id, Mode md, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzXControl(GetSafeChildHWND(id),md,szMin,bReposNow); }
+       bool AddSzYControl(UINT id, SBYTE y1, SBYTE y2, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzYControl(GetSafeChildHWND(id),y1,y2,szMin,bReposNow); }
+       bool AddSzYControl(UINT id, Mode md, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzYControl(GetSafeChildHWND(id),md,szMin,bReposNow); }
+
+       bool AddSzControl(UINT id, Mode mdX, Mode mdY, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzControl(GetSafeChildHWND(id),mdX,mdY,szMin,bReposNow); }
+       bool AddSzControl(UINT id, SBYTE x1, SBYTE y1, SBYTE x2, SBYTE y2, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzControl(GetSafeChildHWND(id),x1,y1,x2,y2,szMin,bReposNow); }
+
+       bool AddSzControl(UINT id, HWND hLikeThis, bool bReposNow = true) { return AddSzControl(GetSafeChildHWND(id),hLikeThis,bReposNow); }
+       bool AddSzControl(UINT id, const SBYTES & bytes, const CSize & szMin = M_szNull, bool bReposNow = true) { return AddSzControl(GetSafeChildHWND(id),bytes,szMin,bReposNow); }
+
+       bool AddSzControl(UINT id, const Position & pos, bool bReposNow = true) { return AddSzControl(GetSafeChildHWND(id),pos,bReposNow); }
+
+       //
+       // all controls
+       //
+
+       void AllControls(Mode mdX, Mode mdY, bool bOverwrite = false, bool bReposNow = true);
+       void AllControls(SBYTE x1, SBYTE y1, SBYTE x2, SBYTE y2, bool bOverwrite = false, bool bReposNow = true);
+       void AllControls(const SBYTES & bytes, bool bOverwrite = false, bool bReposNow = true);
+       
+       // etc
+
+       bool GetControlPosition(HWND hwnd, Position & pos) { return m_Map.Lookup(hwnd,pos) != FALSE; }
+       bool RemSzControl(HWND hwnd, bool bMoveToInitialPos = false);
+       bool UpdateControlPosition(HWND hwnd);
+
+       //
+       // operational
+       //
+
+       virtual void Layout();
+
+       //
+       // you have to delegate work to these 
+       //
+
+protected:
+       void DoInitWindow(CWnd & rWnd, const CSize & szInitial);
+       void DoInitWindow(CWnd & rWnd);         // short-cut
+       void DoOnDestroy();
+
+       void DoOnParentNotify(UINT message, LPARAM lParam);
+       void DoOnTimer(UINT nIDEvent);
+       void DoOnSize(UINT nType, int cx, int cy);
+       void DoOnSizing(UINT fwSide, LPRECT pRect);
+       void DoOnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
+
+       //
+       // some advanced virtuals
+       //
+
+protected:
+       virtual bool DoMoveCtrl(HWND hwnd, UINT id, CRect & rectNewPos, const cdxCDynamicLayoutInfo & li);
+       virtual void DoDestroyCtrl(HWND hwnd);
+
+       virtual void OnInitialized() {}
+       virtual void OnDestroying() {}
+
+       virtual cdxCDynamicLayoutInfo *DoCreateLayoutInfo() { return new cdxCDynamicLayoutInfo(this); }
+
+       //
+       // misc utility functions
+       //
+
+public:
+       virtual void StartAntiFlickering(bool bIsBotRight);
+       HWND GetSafeChildHWND(UINT nID);
+
+       //
+       // some operators
+       //
+public:
+       operator CWnd * () const { return m_pWnd; }
+
+       //
+       // private members (hidden from classview)
+       //
+private:
+       // DON'T USE
+       DECLARE_CDX_HIDDENFUNC( cdxCDynamicWnd(const cdxCDynamicWnd & w) ) { ASSERT(false); }
+       void DECLARE_CDX_HIDDENFUNC( operator=(const cdxCDynamicWnd & w) ) { ASSERT(false); }
+       // helpers
+       void DECLARE_CDX_HIDDENFUNC( _translate(Mode md, SBYTE & b1, SBYTE & b2) );
+
+       //
+       // DYNAMIC_MAPping
+       //
+public:
+       DECLARE_CDX_HIDDENENUM( __dynEntryType )
+       {
+               __end,
+               __bytes,
+               __modes
+       };
+       DECLARE_CDX_HIDDENSTRUCT( __dynEntry )
+       {
+               __dynEntryType  type;
+               UINT                            id;
+               SBYTE                           b1,b2,b3,b4;
+       };
+protected:
+       virtual const __dynEntry * DECLARE_CDX_HIDDENFUNC( __getDynMap(const __dynEntry *pLast) ) const { return NULL; }
+
+public:
+       static const CSize              M_szNull;                       // for the "Config" class
+       static const SBYTES             TopLeft,
+                                                                       TopRight,
+                                                                       BotLeft,
+                                                                       BotRight;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicLayoutInfo DYNAMIC MAP macros
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * Macros that can be used to implement an automatic setup
+ * for any dynamic window.
+ * If you use these, you don't need to use AddSzControl():
+ */
+
+
+// declare map
+#ifndef DECLARE_DYNAMIC_MAP
+#define DECLARE_DYNAMIC_MAP()          \
+protected:                                                                                     \
+       virtual const __dynEntry *__getDynMap(const __dynEntry *pLast) const;   \
+private:                                                                                               \
+       static const __dynEntry __M_dynEntry[];
+#endif
+
+// begin the map and set freedom/size icon flags
+#ifdef _CDX_SIMPLE_DYNAMIC_MAPS
+#ifndef BEGIN_DYNAMIC_MAP
+#define        BEGIN_DYNAMIC_MAP(CLASS)        \
+       const cdxCDynamicWnd::__dynEntry *CLASS::__getDynMap(const __dynEntry *pLast) const { return __M_dynEntry; }    \
+       const cdxCDynamicWnd::__dynEntry CLASS::__M_dynEntry[]  =       {
+#endif
+#else
+
+// begin a dynamic map that even takes care of maps defined for base-class versions
+#ifndef BEGIN_DYNAMIC_MAP
+#define        BEGIN_DYNAMIC_MAP(CLASS,BASECLASS)      \
+       const cdxCDynamicWnd::__dynEntry *CLASS::__getDynMap(const __dynEntry *pLast)   const\
+       {       \
+               if(pLast == __M_dynEntry)       \
+                       return NULL;                            \
+               return (pLast = BASECLASS::__getDynMap(pLast)) ? pLast : __M_dynEntry;  \
+       }                                                                                                                                                                                                       \
+       const cdxCDynamicWnd::__dynEntry CLASS::__M_dynEntry[]  =       {
+#endif
+#endif
+
+// end up map
+#ifndef END_DYNAMIC_MAP
+#define        END_DYNAMIC_MAP()                                                                       {       cdxCDynamicWnd::__end   }       };
+#endif
+
+// declare operations
+#ifndef DYNAMIC_MAP_ENTRY_EX
+#define        DYNAMIC_MAP_ENTRY_EX(ID,X1,Y1,X2,Y2)            {       cdxCDynamicWnd::__bytes,        ID,     X1,Y1,X2,Y2     },
+#define        DYNAMIC_MAP_XENTRY_EX(ID,X1,X2)                         DYNAMIC_MAP_ENTRY_EX(ID,X1,0,X2,0)
+#define        DYNAMIC_MAP_YENTRY_EX(ID,Y1,Y2)                         DYNAMIC_MAP_ENTRY_EX(ID,0,Y1,0,Y2)
+#define        DYNAMIC_MAP_ENTRY(ID,MODEX,MODEY)                       {       cdxCDynamicWnd::__modes,        ID,     cdxCDynamicWnd::##MODEX,cdxCDynamicWnd::##MODEY },
+#define        DYNAMIC_MAP_XENTRY(ID,MODEX)                                    DYNAMIC_MAP_XENTRY(ID,MODEX,mdNone)
+#define        DYNAMIC_MAP_YENTRY(ID,MODEY)                                    DYNAMIC_MAP_YENTRY(ID,mdNone,MODEY)
+#endif
+
+// use this ID for the default position at the head of your map
+#ifndef DYNAMIC_MAP_DEFAULT_ID
+#define        DYNAMIC_MAP_DEFAULT_ID                                                  0
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicLayoutInfo inlines
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * auto-fill in struct
+ */
+
+inline bool cdxCDynamicLayoutInfo::operator=(cdxCDynamicWnd *pWnd)
+{
+       if(!pWnd || !pWnd->IsUp())
+               return false;
+
+       m_szCurrent                     =       pWnd->GetCurrentClientSize();
+       m_szInitial                     =       pWnd->m_szInitial;
+       m_szDelta                       =       m_szCurrent - m_szInitial;
+       m_nCtrlCnt                      =       pWnd->GetCtrlCount();
+
+       if(m_bUseScrollPos == pWnd->m_bUseScrollPos)
+       {
+               m_pntScrollPos.x        =       pWnd->Window()->GetScrollPos(SB_HORZ);
+               m_pntScrollPos.y        =       pWnd->Window()->GetScrollPos(SB_VERT);
+       }
+
+       return true;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicWnd inlines
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * Add a control
+ */
+
+inline bool cdxCDynamicWnd::AddSzControl(HWND hwnd, const SBYTES & bytes, const CSize & szMin, bool bReposNow)
+{
+       if(!::IsWindow(hwnd))
+       {
+               // Note that this might happen if you call 
+               TRACE(_T("*** NOTE[cdxCDynamicWnd::AddSzControl(HWND,const SBYTES &,const CSize &,bool)]: Handle 0x%lx is not a valid window.\n"),(DWORD)hwnd);
+               return false;
+       }
+
+       WINDOWPLACEMENT wpl;
+       wpl.length      =       sizeof(WINDOWPLACEMENT);
+       VERIFY( ::GetWindowPlacement(hwnd,&wpl) );
+
+       return AddSzControl(hwnd,Position(wpl.rcNormalPosition,bytes,szMin),bReposNow);
+}
+
+/*
+ * Add control that behaves like another
+ */
+
+inline bool cdxCDynamicWnd::AddSzControl(HWND hwnd, HWND hLikeThis, bool bReposNow)
+{
+       if(!::IsWindow(hwnd))
+       {
+               TRACE(_T("*** NOTE[cdxCDynamicWnd::AddSzControl(HWND,HWND,bool)]: Handle 0x%lx is not a valid window.\n"),(DWORD)hwnd);
+               return false;
+       }
+
+       Position        pos;
+
+       if(!m_Map.Lookup(hLikeThis,pos))
+       {
+               TRACE(_T("*** NOTE[cdxCDynamicWnd::AddSzControl(HWND,HWND,bool)]: For the 'hLikeThis' handle 0x%lx there hasn't been made an entry for yet.\n"),(DWORD)hLikeThis);
+               return false;
+       }
+
+       return AddSzControl(hwnd,pos);
+}
+
+/*
+ * old
+ */
+
+inline bool cdxCDynamicWnd::AddSzControl(HWND hwnd, Mode mdX, Mode mdY, const CSize & szMin, bool bReposNow)
+{
+       SBYTES  b;
+       _translate(mdX,b[X1],b[X2]);
+       _translate(mdY,b[Y1],b[Y2]);
+       return AddSzControl(hwnd,b,szMin,bReposNow);
+}
+
+/*
+ * old
+ */
+
+inline bool cdxCDynamicWnd::AddSzControl(HWND hwnd, SBYTE x1, SBYTE y1, SBYTE x2, SBYTE y2, const CSize & szMin, bool bReposNow)
+{
+       SBYTES b;
+       b[X1]   =       x1,
+       b[X2]   =       x2,
+       b[Y1]   =       y1,
+       b[Y2]   =       y2;
+       return AddSzControl(hwnd,b,szMin,bReposNow);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * short-cut
+ */
+
+inline void cdxCDynamicWnd::AllControls(Mode mdX, Mode mdY, bool bOverwrite, bool bReposNow)
+{
+       SBYTES  b;
+       _translate(mdX,b[X1],b[X2]);
+       _translate(mdY,b[Y1],b[Y2]);
+       AllControls(b,bOverwrite,bReposNow);
+}
+
+
+/*
+ * short-cut
+ */
+
+inline void cdxCDynamicWnd::AllControls(SBYTE x1, SBYTE y1, SBYTE x2, SBYTE y2, bool bOverwrite, bool bReposNow)
+{
+       SBYTES b;
+       b[X1]   =       x1,
+       b[X2]   =       x2,
+       b[Y1]   =       y1,
+       b[Y2]   =       y2;
+       AllControls(b,bOverwrite,bReposNow);
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * get size of current client area
+ */
+
+inline CSize cdxCDynamicWnd::GetCurrentClientSize() const
+{
+       if(!IsWindow())
+       {
+               ASSERT(false);
+               return M_szNull;
+       }
+
+       CRect   rect;
+       m_pWnd->GetClientRect(rect);
+
+       return rect.Size();
+}
+
+/*
+ * get difference between window and client size
+ */
+
+inline CSize cdxCDynamicWnd::GetBorderSize() const
+{
+       if(!IsUp())
+       {
+               ASSERT(false);
+               return M_szNull;
+       }
+
+       CRect   r1,r2;
+       m_pWnd->GetWindowRect(r1);
+       m_pWnd->GetClientRect(r2);
+
+       return r1.Size() - r2.Size();
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * translates a "mode" into percentage
+ */
+
+inline void cdxCDynamicWnd::_translate(Mode md, SBYTE & b1, SBYTE & b2)
+{
+       switch(md)
+       {
+               default                         :       ASSERT(false);
+               case    mdNone          :       b1      =       0;              b2      =       0;              break;
+               case    mdResize                :       b1      =       0;              b2      =       100;    break;
+               case    mdRepos         :       b1      =       100;    b2      =       100;    break;
+               case    mdRelative      :       b1      =       50;     b2      =       50;     break;
+       }
+}
+
+/*
+ * gets HWND of a child given by ID
+ */
+
+inline HWND cdxCDynamicWnd::GetSafeChildHWND(UINT nID)
+{
+       if(!IsWindow())
+       {
+               ASSERT(false);
+               return 0;
+       }
+
+       HWND    h       =       ::GetDlgItem(m_pWnd->m_hWnd,nID);
+       ASSERT(h!=0);
+       return h;
+}
+       
+#pragma warning(default: 4100)
+#pragma warning(default: 4706)
+
+#endif // !defined(AFX_CDXCDYNAMICWND_H__1FEFDD69_5C1C_11D3_800D_000000000000__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWndEx.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWndEx.cpp
new file mode 100644 (file)
index 0000000..1ba65a8
--- /dev/null
@@ -0,0 +1,327 @@
+// cdxCDynamicWndEx.cpp: implementation of the cdxCDynamicWndEx class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+#include "cdxCDynamicWndEx.h"
+
+#ifdef _DEBUG
+#undef THIS_FILE
+static char THIS_FILE[]=__FILE__;
+#define new DEBUG_NEW
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// Some static variables (taken from cdxCDynamicControlsManager)
+/////////////////////////////////////////////////////////////////////////////
+
+#define        REGVAL_NOSTATE          -1
+#define        REGVAL_VISIBLE          1
+#define        REGVAL_HIDDEN           0
+#define        REGVAL_MAXIMIZED        1
+#define        REGVAL_ICONIC           0
+#define        REGVAL_INVALID          0
+#define        REGVAL_VALID            1
+
+/*
+ * registry value names
+ * (for StoreWindowPosition()/RestoreWindowPosition())
+ */
+
+static LPCTSTR lpszRegVal_Left         =       _T("Left"),
+                                       lpszRegVal_Right                =       _T("Right"),
+                                       lpszRegVal_Top                  =       _T("Top"),
+                                       lpszRegVal_Bottom               =       _T("Bottom"),
+                                       lpszRegVal_Visible      =       _T("Visibility"),
+                                       lpszRegVal_State                =       _T("State"),
+                                       lpszRegVal_Valid                =       _T("(valid)");
+
+LPCTSTR        cdxCDynamicWndEx::M_lpszAutoPosProfileSection   =       _T("WindowPositions");
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicWndEx
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicWndEx stretches windows
+/////////////////////////////////////////////////////////////////////////////
+
+static inline CString _makeFullProfile(LPCTSTR lpszBase, const CString & str)
+{
+       CString s       =       lpszBase;
+
+       if(s.GetLength() && (s[s.GetLength()-1] != _T('\\')))
+               s       +=      _T('\\');
+
+       s       +=      str;
+       return s;
+}
+
+void cdxCDynamicWndEx::OnInitialized()
+{
+       ASSERT(IsWindow());
+
+       if(!m_strAutoPos.IsEmpty())
+       {
+#if _MSC_VER < 1300   // vc6
+               if(!RestoreWindowPosition(_makeFullProfile(M_lpszAutoPosProfileSection,m_strAutoPos),rflg_all))
+#else                 // vc7
+               if(!RestoreWindowPosition(_makeFullProfile(M_lpszAutoPosProfileSection,m_strAutoPos),"",rflg_all))
+#endif
+               {
+                       Window()->CenterWindow();
+                       StretchWindow(10);
+               }
+       }
+}
+
+void cdxCDynamicWndEx::OnDestroying()
+{
+       if(!m_strAutoPos.IsEmpty() && IsWindow())
+               StoreWindowPosition(_makeFullProfile(M_lpszAutoPosProfileSection,m_strAutoPos));
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicWndEx stretches windows
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * stretches the window by szDelta (i.e. if szDelta is 100, the window is enlarged by 100 pixels)
+ * stretching means that the center point of the window remains
+ *
+ * returns false if the window would be smaller than (1,1)
+ *
+ * NOTE: this function does NOT care of the min/max dimensions of a window
+ *                     Use MoveWindow() if you need to take care of it.
+ *
+ * STATIC
+ */
+
+bool cdxCDynamicWndEx::StretchWindow(const CSize & szDelta)
+{
+       if(!IsWindow())
+       {
+               ASSERT(false);
+               return false;
+       }
+
+       CWnd    *pWnd   =       Window();
+
+       WINDOWPLACEMENT wpl;
+       pWnd->GetWindowPlacement(&wpl);
+
+       wpl.rcNormalPosition.left               -=      szDelta.cx / 2;
+       wpl.rcNormalPosition.right              +=      (szDelta.cx + 1) / 2;
+       wpl.rcNormalPosition.top                -=      szDelta.cy / 2;
+       wpl.rcNormalPosition.bottom     +=      (szDelta.cy + 1) / 2;
+//     wpl.flags       =       SW_SHOWNA|SW_SHOWNOACTIVATE;
+
+       if((wpl.rcNormalPosition.left >= wpl.rcNormalPosition.right) ||
+               (wpl.rcNormalPosition.top >= wpl.rcNormalPosition.bottom))
+               return false;
+
+       VERIFY( pWnd->SetWindowPos(NULL,
+                                                                               wpl.rcNormalPosition.left,
+                                                                               wpl.rcNormalPosition.top,
+                                                                               wpl.rcNormalPosition.right - wpl.rcNormalPosition.left,
+                                                                               wpl.rcNormalPosition.bottom - wpl.rcNormalPosition.top,
+                                                                               SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER) );
+
+       return true;
+}
+
+/*
+ * stretch window by a percent value
+ * the algorithm calculates the new size for both dimensions by:
+ *
+ *  newWid = oldWid + (oldWid * iAddPcnt) / 100
+ *
+ * NOTE: iAddPcnt may even be nagtive, but it MUST be greater than -100.
+ * NOTE: this function does NOT care of the min/max dimensions of a window
+ *
+ * The function will return false if the new size would be empty.
+ */
+
+bool cdxCDynamicWndEx::StretchWindow(int iAddPcnt)
+{
+       if(!IsWindow())
+       {
+               ASSERT(false);
+               return false;
+       }
+
+       CSize   szDelta =       GetCurrentClientSize() + GetBorderSize();
+
+       szDelta.cx      =       (szDelta.cx * iAddPcnt) / 100;
+       szDelta.cy      =       (szDelta.cy * iAddPcnt) / 100;
+
+       return StretchWindow(szDelta);
+}
+
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCDynamicWndEx registry positioning
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * stores a window's position and visiblity to the registry.
+ *     return false if any error occured
+ */
+
+bool cdxCDynamicWndEx::StoreWindowPosition(LPCTSTR lpszProfile, 
+                                           const CString &entryPrefix)
+{
+       if(!IsWindow() || !lpszProfile || !*lpszProfile)
+       {
+               ASSERT(false);
+               return false;
+       }
+
+       CWnd    *pWnd   =       Window();
+
+       WINDOWPLACEMENT wpl;
+       VERIFY( pWnd->GetWindowPlacement(&wpl) );
+
+       BOOL    bVisible        =       pWnd->IsWindowVisible();
+       int     iState  =       REGVAL_NOSTATE;
+
+       if(pWnd->IsIconic())
+               iState  =       REGVAL_ICONIC;
+       else
+               if(pWnd->IsZoomed())
+                       iState  =       REGVAL_MAXIMIZED;
+
+       CWinApp *app    =       AfxGetApp();
+
+       if(!app->m_pszRegistryKey || !*app->m_pszRegistryKey)
+       {
+               TRACE(_T("*** NOTE[cdxCDynamicWndEx::StoreWindowPosition()]: To properly store and restore a window's position, please call CWinApp::SetRegistryKey() in you app's InitInstance() !\n"));
+               return false;
+       }
+
+       return  app->WriteProfileInt(lpszProfile,       entryPrefix+lpszRegVal_Valid,   REGVAL_INVALID) &&      // invalidate first
+                               app->WriteProfileInt(lpszProfile,       entryPrefix+lpszRegVal_Left,            wpl.rcNormalPosition.left) &&
+                               app->WriteProfileInt(lpszProfile,       entryPrefix+lpszRegVal_Right,           wpl.rcNormalPosition.right) &&
+                               app->WriteProfileInt(lpszProfile,       entryPrefix+lpszRegVal_Top,             wpl.rcNormalPosition.top) &&
+                               app->WriteProfileInt(lpszProfile,       entryPrefix+lpszRegVal_Bottom,  wpl.rcNormalPosition.bottom) &&
+                               app->WriteProfileInt(lpszProfile,       entryPrefix+lpszRegVal_Visible, bVisible ? REGVAL_VISIBLE : REGVAL_HIDDEN) &&
+                               app->WriteProfileInt(lpszProfile,       entryPrefix+lpszRegVal_State,           iState) &&
+                               app->WriteProfileInt(lpszProfile,       entryPrefix+lpszRegVal_Valid,   REGVAL_VALID);          // validate position
+}
+
+/*
+ * load the registry data stored by StoreWindowPosition()
+ * returns true if data have been found in the registry
+ */
+
+bool cdxCDynamicWndEx::RestoreWindowPosition(LPCTSTR lpszProfile, 
+                                             const CString &entryPrefix, 
+                                             UINT restoreFlags)
+{
+       if(!IsWindow() || !lpszProfile || !*lpszProfile)
+       {
+               ASSERT(false);
+               return false;
+       }
+
+       CWnd            *pWnd   =       Window();
+       CWinApp *app    =       AfxGetApp();
+
+       if(!app->m_pszRegistryKey || !*app->m_pszRegistryKey)
+       {
+               TRACE(_T("*** NOTE[cdxCDynamicWndEx::RestoreWindowPosition()]: To properly store and restore a window's position, please call CWinApp::SetRegistryKey() in you app's InitInstance() !\n"));
+               return false;
+       }
+
+       //
+       // first, we check whether the position had been saved successful any time before
+       //
+
+       if( app->GetProfileInt(lpszProfile,entryPrefix+lpszRegVal_Valid,REGVAL_INVALID) != REGVAL_VALID )
+               return false;
+
+       //
+       // get old position
+       //
+
+       WINDOWPLACEMENT wpl;
+       VERIFY( pWnd->GetWindowPlacement(&wpl) );
+
+       //
+       // read registry
+       //
+
+       int     iState  =       app->GetProfileInt(lpszProfile, entryPrefix+lpszRegVal_State, REGVAL_NOSTATE);
+
+       //
+       // get window's previous normal position
+       //
+
+       wpl.rcNormalPosition.left               =       app->GetProfileInt(lpszProfile, entryPrefix+lpszRegVal_Left,            wpl.rcNormalPosition.left);
+       wpl.rcNormalPosition.right              =       app->GetProfileInt(lpszProfile, entryPrefix+lpszRegVal_Right,           wpl.rcNormalPosition.right);
+       wpl.rcNormalPosition.top                =       app->GetProfileInt(lpszProfile, entryPrefix+lpszRegVal_Top,             wpl.rcNormalPosition.top);
+       wpl.rcNormalPosition.bottom     =       app->GetProfileInt(lpszProfile, entryPrefix+lpszRegVal_Bottom,  wpl.rcNormalPosition.bottom);
+
+       if(wpl.rcNormalPosition.left > wpl.rcNormalPosition.right)
+       {
+               long    l       =       wpl.rcNormalPosition.right;
+               wpl.rcNormalPosition.right      =       wpl.rcNormalPosition.left;
+               wpl.rcNormalPosition.left       =       l;
+       }
+       if(wpl.rcNormalPosition.top > wpl.rcNormalPosition.bottom)
+       {
+               long    l       =       wpl.rcNormalPosition.bottom;
+               wpl.rcNormalPosition.bottom     =       wpl.rcNormalPosition.top;
+               wpl.rcNormalPosition.top        =       l;
+       }
+
+       //
+       // get restore stuff
+       //
+
+       UINT    showCmd =       SW_SHOWNA;
+       
+       if(restoreFlags & rflg_state)
+       {
+               if(iState == REGVAL_MAXIMIZED)
+                       showCmd =       SW_MAXIMIZE;
+               else
+                       if(iState == REGVAL_ICONIC)
+                               showCmd =       SW_MINIMIZE;
+       }
+
+       //
+       // use MoveWindow() which takes care of WM_GETMINMAXINFO
+       //
+
+       pWnd->MoveWindow(       wpl.rcNormalPosition.left,wpl.rcNormalPosition.top,
+                                                       wpl.rcNormalPosition.right - wpl.rcNormalPosition.left,
+                                                       wpl.rcNormalPosition.bottom - wpl.rcNormalPosition.top,
+                                                       showCmd == SW_SHOWNA);
+
+       if(showCmd != SW_SHOWNA)
+       {
+               // read updated position
+
+               VERIFY( pWnd->GetWindowPlacement(&wpl) );
+               wpl.showCmd     =       showCmd;
+               pWnd->SetWindowPlacement(&wpl);
+       }
+       
+       //
+       // get visiblity
+       //
+
+       if(restoreFlags & rflg_visibility)
+       {
+               int     i       =       app->GetProfileInt(lpszProfile, entryPrefix+lpszRegVal_Visible, REGVAL_NOSTATE);
+               if(i == REGVAL_VISIBLE)
+                       pWnd->ShowWindow(SW_SHOW);
+               else
+                       if(i == REGVAL_HIDDEN)
+                               pWnd->ShowWindow(SW_HIDE);
+       }
+
+       return true;
+}
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWndEx.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCDynamicWndEx.h
new file mode 100644 (file)
index 0000000..eb55bae
--- /dev/null
@@ -0,0 +1,72 @@
+// cdxCDynamicWndEx.h: interface for the cdxCDynamicWndEx class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_CDXCDYNAMICWNDEX_H__96C8C1D4_6524_11D3_8030_000000000000__INCLUDED_)
+#define AFX_CDXCDYNAMICWNDEX_H__96C8C1D4_6524_11D3_8030_000000000000__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#include "cdxCDynamicWnd.h"
+
+/*
+ * cdxCDynamicWndEx
+ * ================
+ * A class extended to offer some useful additions.
+ */
+
+class cdxCDynamicWndEx : public cdxCDynamicWnd
+{
+public:
+       enum RestoreFlags
+       {
+               rflg_none                       =       0,                      // only load window position
+               rflg_state                      =       0x01,           // make window iconic/zoomed if been before
+               rflg_visibility =       0x02,           // hide/show window as been before
+               rflg_all                                =       rflg_state|rflg_visibility
+       };
+
+       enum ExFlags
+       {
+               flAutoPos       =       0x0100
+       };
+
+private:
+       CString m_strAutoPos;
+
+public:
+       cdxCDynamicWndEx(Freedom fd, UINT nFlags) : cdxCDynamicWnd(fd,nFlags) {}
+       virtual ~cdxCDynamicWndEx() {}
+
+       //
+       // utilities
+       //
+
+       bool StretchWindow(const CSize & szDelta);
+       bool StretchWindow(int iAddPcnt);
+       bool RestoreWindowPosition(LPCTSTR lpszProfile, const CString &entryPrefix = "", UINT restoreFlags = rflg_all);
+       bool StoreWindowPosition(LPCTSTR lpszProfile, const CString &entryPrefix = "");
+
+       //
+       // feature one: auto-positioning :)
+       // 
+
+       void ActivateAutoPos(UINT nID) { m_strAutoPos.Format(_T("ID=0x%08lx"),nID); }
+       void ActivateAutoPos(const CString & strID) { m_strAutoPos = strID; }
+       void NoAutoPos() { m_strAutoPos.Empty(); }
+
+       //
+       // we need these
+       //
+
+protected:
+       virtual void OnInitialized();
+       virtual void OnDestroying();
+
+public:
+       static LPCTSTR  M_lpszAutoPosProfileSection;
+};
+
+#endif // !defined(AFX_CDXCDYNAMICWNDEX_H__96C8C1D4_6524_11D3_8030_000000000000__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCSizeIconCtrl.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCSizeIconCtrl.cpp
new file mode 100644 (file)
index 0000000..ec15f2c
--- /dev/null
@@ -0,0 +1,148 @@
+// cdxCSizeIconCtrl.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "cdxCSizeIconCtrl.h"
+
+#include       <winuser.h>
+
+#ifndef OBM_SIZE
+#define        OBM_SIZE                32766
+#pragma message("*** NOTE[cdxCSizeIconCtrl.cpp]: Please define OEMRESOURCE in your project settings !")
+// taken from WinresRc.h
+// if not used for any reason
+#endif
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+#pragma warning(disable: 4100)
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCSizeIconCtrl::AutoOEMImageList
+/////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////
+// construction
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * one-step construction for my image list
+ * (allows to use the AutoOEMImageList as static member)
+ */
+
+cdxCSizeIconCtrl::AutoOEMImageList::AutoOEMImageList(UINT nBitmapID, COLORREF crMask)
+{
+       CBitmap cbmp;
+       BITMAP  bmp;
+       VERIFY( cbmp.LoadOEMBitmap(nBitmapID) );
+       VERIFY( cbmp.GetBitmap(&bmp) );
+
+       m_szImage.cx    =       bmp.bmWidth;
+       m_szImage.cy    =       bmp.bmHeight;
+  
+       InitCommonControls();
+
+       VERIFY( Create(bmp.bmWidth,bmp.bmHeight,ILC_COLOR16|ILC_MASK,0,1) );
+       int     i       =       Add(&cbmp,crMask);
+       ASSERT(i == 0);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCSizeIconCtrl
+/////////////////////////////////////////////////////////////////////////////
+
+IMPLEMENT_DYNAMIC(cdxCSizeIconCtrl,CScrollBar);
+
+/////////////////////////////////////////////////////////////////////////////
+
+cdxCSizeIconCtrl::AutoOEMImageList     cdxCSizeIconCtrl::M_ilImage(OBM_SIZE,::GetSysColor(COLOR_BTNFACE));
+HCURSOR                                                                                cdxCSizeIconCtrl::M_hcSize      =       ::LoadCursor(NULL,IDC_SIZENWSE);
+
+/////////////////////////////////////////////////////////////////////////////
+// construction
+/////////////////////////////////////////////////////////////////////////////
+
+BEGIN_MESSAGE_MAP(cdxCSizeIconCtrl, CScrollBar)
+       //{{AFX_MSG_MAP(cdxCSizeIconCtrl)
+       ON_WM_PAINT()
+       ON_WM_SETCURSOR()
+       ON_WM_LBUTTONDBLCLK()
+       //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCSizeIconCtrl inlines
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * create short-cut
+ */
+
+BOOL cdxCSizeIconCtrl::Create(CWnd *pParent, UINT id)
+{
+       ASSERT(pParent != NULL);
+       CRect   rect;pParent->GetClientRect(&rect);
+       if(!CScrollBar::Create(         SBS_SIZEBOX|SBS_SIZEBOXBOTTOMRIGHTALIGN|
+                                                                               WS_CHILD,
+                                                                               rect,
+                                                                               pParent,id))
+               return FALSE;
+
+       VERIFY( ModifyStyleEx(0,WS_EX_TRANSPARENT) );
+       return TRUE;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCSizeIconCtrl message handlers
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * draw icon
+ */
+
+void cdxCSizeIconCtrl::OnPaint() 
+{
+       CPaintDC dc(this); // device context for painting
+
+       if(GetParent() && (!GetParent()->IsZoomed() || !m_bReflectParentState))
+       {
+               CRect   rect;GetClientRect(&rect);
+               CSize   sz      =       M_ilImage.Size();
+
+               VERIFY( M_ilImage.Draw( &dc,
+                                                               0,
+                                                               CPoint(rect.right - sz.cx,rect.bottom - sz.cy),
+                                                               ILD_NORMAL|ILD_TRANSPARENT) );
+       }
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// cdxCSizeIconCtrl Cursor
+/////////////////////////////////////////////////////////////////////////////
+
+/*
+ * set the cursor.
+ */
+
+BOOL cdxCSizeIconCtrl::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
+{
+       if(GetParent() && (!GetParent()->IsZoomed() || !m_bReflectParentState))
+               ::SetCursor((nHitTest == HTCLIENT) ? M_hcSize : NULL);
+       return TRUE;
+}
+
+/*
+ * catch Doubleclick - if you don't do that,
+ * the window will be maximized if you double-blick
+ * the control.
+ * Don't know why, but it's annoying.
+ */
+
+void cdxCSizeIconCtrl::OnLButtonDblClk(UINT nFlags, CPoint point) 
+{
+//     CScrollBar::OnLButtonDblClk(nFlags, point);
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCSizeIconCtrl.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/cdxCSizeIconCtrl.h
new file mode 100644 (file)
index 0000000..3672918
--- /dev/null
@@ -0,0 +1,95 @@
+#if !defined(AFX_CDXCSIZEICONCTRL_H__9B4AD1C3_8AA5_11D2_BE9C_000000000000__INCLUDED_)
+#define AFX_CDXCSIZEICONCTRL_H__9B4AD1C3_8AA5_11D2_BE9C_000000000000__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+// cdxCSizeIconCtrl.h : header file
+//
+
+//
+// cdxCSizeIconCtrl.h : header file
+// -----------------------------------------------------------------------
+// Author:  Hans Bühler (hb@codex-design.de)
+//          codex design (http://www.codex-design.de)
+// Version: 1.3
+// -----------------------------------------------------------------------
+// Changes for 1.1:
+// - cdxCSizeIconCtrl catches left-mb-doubleclick what caused the window
+//       to get maximized for any reason. 
+// Changes for 1.2:
+// - Ability to check parent's state: If it is zoomed, the control won't
+//   draw a sizing icon.
+// Changes for 1.3:
+// - Icon now has proper colors.
+// -----------------------------------------------------------------------
+// Comments welcome.
+//
+
+/*
+ * cdxCSizeIconCtrl
+ * ================
+ * A simple class that is a size-icon.
+ *
+ * (w)Nov.1998 mailto:hans.buehler@student.hu-berlin.de,
+ *    codex design
+ */
+
+class cdxCSizeIconCtrl : public CScrollBar
+{
+       DECLARE_DYNAMIC(cdxCSizeIconCtrl);
+
+public:
+       class AutoOEMImageList : public CImageList
+       {
+       private:
+               CSize   m_szImage;
+
+       public:
+               AutoOEMImageList(UINT nBitmapID, COLORREF crMask);
+               virtual ~AutoOEMImageList() {}
+
+               const CSize & Size() const { return m_szImage; }
+       };
+
+private:
+       bool    m_bCapture;
+public:
+       bool    m_bReflectParentState;
+
+public:
+       cdxCSizeIconCtrl(bool bReflectParentState = true) : m_bCapture(false), m_bReflectParentState(bReflectParentState) {}
+       virtual ~cdxCSizeIconCtrl() {}
+
+       virtual BOOL Create(CWnd *pParent, UINT id = AFX_IDW_SIZE_BOX);
+
+// Operations
+public:
+
+// Overrides
+       // ClassWizard generated virtual function overrides
+       //{{AFX_VIRTUAL(cdxCSizeIconCtrl)
+       //}}AFX_VIRTUAL
+
+       // Generated message map functions
+protected:
+       //{{AFX_MSG(cdxCSizeIconCtrl)
+       afx_msg void OnPaint();
+       afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
+       afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
+       //}}AFX_MSG
+
+       DECLARE_MESSAGE_MAP();
+
+       //
+       // static members
+       //
+public:
+       static AutoOEMImageList M_ilImage;
+       static HCURSOR                          M_hcSize;
+};
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_CDXCSIZEICONCTRL_H__9B4AD1C3_8AA5_11D2_BE9C_000000000000__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC-big.gif b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC-big.gif
new file mode 100644 (file)
index 0000000..76d580e
Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC-big.gif differ
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC-small.gif b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC-small.gif
new file mode 100644 (file)
index 0000000..7dd937f
Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC-small.gif differ
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC.html b/lib/cppunit-1.10.0/src/msvc6/testrunner/DynamicWindow/doc/cdxCDynamicWnd-DOC.html
new file mode 100644 (file)
index 0000000..6b5798f
--- /dev/null
@@ -0,0 +1,303 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type"
+content="text/html; charset=iso-8859-1">
+<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
+<title></title>
+
+<style type="text/css">
+body,td /* p,h1,h2,h3,h4,ul,ol,li,div,td,th,address,a,blockquote,nobr,b,i,em */
+{
+   font-size:13px;
+   font-family:sans-serif,arial,Verdana;
+}
+
+small  { font-size=11px; }
+.small { font-size=11px; }
+
+h1 { font-size:16px; }
+h2 { font-size:16px;color:#FF0000; }
+h3 { font-size:15px; }
+h4 { font-size:15px;color:#FF0000; }
+h5 { font-size:14px;font-weight:bold; }
+h6 { font-size:14px;color:#FF0000;font-weight:bold; }
+
+a:link    { color:#800000;text-decoration:none; }
+a:visited { color:#BF0000;text-decoration:none; }
+a:active  { color:#0000C0;text-decoration:none; }
+a:hover   { color:#0000C0;text-decoration:underline; }
+
+</style>
+
+</head>
+
+<body bgcolor="#FFFFFF">
+
+<h2 align="center"><a name="top"></a></h2>
+
+<h2 align="center"><font color="#00000A">cdxCDynamicWnd and
+derived classes<br>
+</font><font color="#00000A" size="2">by Hans Bühler : codex
+design</font></h2>
+
+<h2 align="center"><font color="#00000A">documentation</font></h2>
+<!-- Author and contact details -->
+<p align="center"><small>[ <a href="#p1">preface</a> | <a href="#p2">about</a> | <a href="#p3">techniques</a>
+| <a href="#p4">a <i>dynamic</i>&nbsp;dialog</a> | <a href="#p5">finally</a></small><small>
+]</small></p>
+
+<h3><a name="p1">1 | Preface, Definition</a></h3>
+
+<blockquote>
+    <p><u>Definiton:</u><br>
+    A <em>dynamic</em> window is a window that automatically
+    repositions its child controls when its size changes.<br>
+    The opposite behaviour is called <em>static.</em></p>
+    <p>The classes described here will help you implementing <em>dynamic</em>&nbsp;dialogs,
+    formviews, property sheets and control bars.</p>
+    <p>It replaces my former class tree &quot;cdxCSizingDialog, ...&quot;.</p>
+</blockquote>
+
+<h3><a name="p2">2 | About this document</a></h3>
+
+<blockquote>
+    <p>Since I found out that not many of you seem to like
+    reading documentation, I shortened this documentation.<br>
+    If you have any suggestions, problems or questions that are
+    not covered by this text, feel free to write an <a
+    href="mailto:Hans%20Buehler%20%3chans.buehler@topmail.de%3e">email
+    to me</a>.</p>
+    <p>As a result, I won't discuss all my member functions but
+    will give you a quick introduction in making windows dynamic.<br>
+    The basic example will be a dialog.<br>
+    The technique is nearly the same for property sheets,
+    formviews and control bars.</p>
+    <p>Here it is:</p>
+    <blockquote>
+        <p><img src="cdxCDynamicWnd-DOC-small.gif" width="188"
+        height="192" alt="small window"><br>
+        (picture#1)</p>
+    </blockquote>
+</blockquote>
+
+<blockquote>
+    <p>We want to make it <em>dynamic</em>&nbsp;i.e. it should
+    look like this if you change its size:</p>
+    <blockquote>
+        <p><img src="cdxCDynamicWnd-DOC-big.gif" width="320"
+        height="229" alt="big window"><br>
+        (picture #2)</p>
+    </blockquote>
+</blockquote>
+
+<h3><a name="p3">3 | Techniques</a></h3>
+
+<blockquote>
+  <p>The cdxCDynamicWnd class is a base class of all the ready-to-use classes as
+  cdxCDynamicDialog.<br>
+  To implement the resizing code, you need to tell the cdxCDynamicWnd object,
+  which of your child controls should react on a resizing of your windows and
+  how.</p>
+
+  <p>To do so, there are now two techniques:</p>
+
+  <ul>
+    <li><u>Using AddSzControl():<br>
+      </u>As you may know from my former cdxCSizing... classes, you use one of
+      the AddSzControl() overloads to make the dynamic window known to a child
+      window of it.<br>
+      In the upper example window, you would add the following lines to your
+      OnInitDialog() code:</li>
+  </ul>
+  <blockquote>
+    <blockquote>
+      <blockquote>
+        <p><code><font color="#008000">AddSzControl(IDC_BOX_1,mdResize,mdResize);<br>
+        AddSzControl(IDC_LIST,mdResize,mdResize);<br>
+        AddSzControl(IDC_EDIT,mdResize,mdRepos);<br>
+        AddSzControl(IDC_NEW,mdRepos,mdRepos);<br>
+        AddSzControl(IDOK,mdRelative,mdRepos);<br>
+        AddSzControl(IDCANCEL,mdRelative,mdRepos);</font></code></p>
+      </blockquote>
+    </blockquote>
+    <ul>
+      <li>The first argument is the ID of the child control to make known to the
+        dynamic window (note that we do not assign IDC_CHECKBOX since this
+        control does not need to react on changes to the window's size).</li>
+      </ul><ul>      <li>The second argument defines how the control should be treated if the
+        window's width changes,<br>
+        The third defines how to deal with height-changes:<br>
+        You can choose among the following constants:<br>
+        - mdNone (do nothing)<br>
+        - mdRepos (move to left)<br>
+        - mdResize (resize)<br>
+        - mdRelative (keep relative position; e.g. keep centered if control was
+        centered before)</li>
+    </ul>
+    <p>Among others, the following overloads of AddSzControl() are defined (the <i>wnd</i>
+    parameter might be either an ID or a HWND object while a CWnd casts properly
+    to a HWND):</p>
+    <blockquote>
+      <blockquote>
+        <p><code><font color="#008000">AddSzControl(wnd, Mode mdX, Mode mdY);<br>
+        AddSzXControl(wnd, Mode md);<br>
+        AddSzYControl(hwnd, Mode md);</font></code></p>
+      </blockquote>
+    </blockquote>
+    <p>If you are not satisfied with my predefined modes, you can make your own:<br>
+    The following overload takes two bytes for each direction: They defined how
+    much percent of the change in width should be added to the left side of the
+    the child control (<i>x1</i>) and to the right side (<i>x2</i>) (equally for
+    height changes):</p>
+    <blockquote>
+      <blockquote>
+        <p><font color="#008000"><code>AddSzControl(wnd, SBYTE x1, SBYTE y1, SBYTE x2, SBYTE y2);</code><br>
+        <code>AddSzXControl(wnd, SBYTE x1, SBYTE x2);<br>
+        AddSzYControl(wnd, SBYTE y1, SBYTE y2);
+        </code></font></p>
+        <p>My predefined modes have the following values:<br>
+        - mdNone is (<i>x1=</i>0,<i>x2=</i>0)<br>
+        - mdRepos is (100,100)<br>
+        - mdResize is (0,100)<br>
+        - mdRelative is (50,50)</p>
+      </blockquote>
+    </blockquote>
+    <p>Depending on the base class you use the following functions are suitable
+    places to call AddSzControl():</p>
+    <ul>
+      <li>Dialog: OnInitDialog()</li>
+      <li>FormView: OnInitialUpdate()</li>
+      <li>PropPage: OnInitDialog()</li>
+    </ul>
+  </blockquote>
+  <ul>
+    <li><u>Using my new <i>dynamic maps</i>:<br>
+      </u>Some people noted that it is annoying to use the AddSzControl() method
+      since they don't need OnInitDialog() for example - only for the
+      AddSzControl() code.<br>
+      Therefore I added the <i>dynamic maps</i>&nbsp;feature.<br>
+      To use it, add the line DECLARE_DYNAMIC_MAP() to your class definition,
+      and add something like:</li>
+  </ul>
+  <blockquote>
+    <blockquote>
+      <p><code><font color="#008000">BEGIN_DYNAMIC_MAP(CTestDlg,cdxCDynamicDialog)<br>
+      &nbsp;&nbsp;&nbsp; DYNAMIC_MAP_ENTRY(IDC_BOX_1, mdResize, mdResize)<br>
+      &nbsp;&nbsp;&nbsp; DYNAMIC_MAP_ENTRY(IDC_LIST1, mdResize, mdResize)<br>
+      &nbsp;&nbsp;&nbsp; DYNAMIC_MAP_ENTRY(IDC_EDIT, mdResize, mdRepos)<br>
+      &nbsp;&nbsp;&nbsp; DYNAMIC_MAP_ENTRY(IDC_NEW, mdRepos, mdRepos)<br>
+      &nbsp;&nbsp;&nbsp; DYNAMIC_MAP_ENTRY(IDOK, mdRelative, mdRepos)<br>
+      &nbsp;&nbsp;&nbsp; DYNAMIC_MAP_ENTRY(IDCANCEL, mdRelative, mdRepos)<br>
+      END_DYNAMIC_MAP()</font></code></p>
+    </blockquote>
+    <p>If you compare these lines to the above AddSzControl() statements, you'll
+    note that they act similarily.<br>
+    The following macros are defined:</p>
+    <blockquote>
+      <p><code><font color="#008000">DYNAMIC_MAP_ENTRY(ID,MODEX,MODEY)<br>
+      DYNAMIC_MAP_XENTRY(ID,MODEX)<br>
+      DYNAMIC_MAP_YENTRY(ID,MODEY)</font></code></p>
+      <p><code><font color="#008000">DYNAMIC_MAP_ENTRY_EX(ID,X1,Y1,X2,Y2)<br>
+       DYNAMIC_MAP_XENTRY_EX(ID,X1,X2)<br>
+      DYNAMIC_MAP_YENTRY_EX(ID,Y1,Y2)</font></code></p>
+    </blockquote>
+  </blockquote>
+</blockquote>
+
+<h3><a name="p4">4 | Example: How to create a <em>dynamic</em> dialog</a></h3>
+
+<blockquote>
+    <ol>
+        <li><u>A dialog:</u><br>
+            I suggest that you used your dialog resource editor
+            to design a dialog as shown in picture #1.<br>
+            The names of the controls should indicate their
+            control IDs.<br>
+          <i><u>Important note #1:</u>
+            Every control that should dynamically move need a
+            unique ID (=&gt; it is not possible to move static
+            texts with IDC_STATIC).</i><strong>
+            <br>
+            </strong>Moreoever, I assume that you have created a
+            dialog class called &quot;CTestDlg&quot; for this
+            dialog.<br>
+          <br>
+            </li>
+        <li><u>Resizable border and WS_CLIPCHILDREN for your dialog:<br>
+            </u>Please open your dialog's properties (in the
+            resource editor), go to the tab &quot;Styles&quot;
+            and change the &quot;Border&quot; into &quot;resizing&quot;
+            (otherwise use won't be able to resize your dialog
+            although it might be dynamic by code).<br>
+          Then, switch to the first tab and activate &quot;clip children&quot;.<br>
+          <br>
+          <b>NOTE</b>: If &quot;clip children&quot; is on and you use <u>group
+          boxes</u>, these boxes need the WS_EX_TRANSPARENT style (can be found
+          at the &quot;extended styles&quot; tab of the group box).<br>
+          This is not a problem with these classes but with the MFC at all !<br>
+          <br>
+            </li>
+        <li><u>Changing the base-class of your dialog:</u><br>
+            Open your dialog classes header file, add an<br>
+            #include &quot;cdxCDynamicDialog.h&quot;<br>
+            to its head and replace <i> all</i> &quot;CDialog&quot; by
+            &quot;cdxCDynamicDialog&quot; in both your header and
+            implementation file.<br>
+          <br>
+            </li>
+        <li><u>Define how childs should be moved:<br>
+            </u>Since this release, you can choose among the two techniques
+          described above to implement this behaviour (they can
+            be mixed if you need that).<br>
+          <br>
+          See <a href="#p3">above</a> to learn how to do so.<br>
+          <br>
+        </li>
+        <li><u>Compile and run.<br>
+          <br>
+          </u>
+        </li>
+        <li>Open your constructor and try to add&nbsp;<code>
+          <font color="#008000">
+          ModifyFlags(flSWPCopyBits,0)</font>&nbsp;</code> to your code.<br>
+          This is an anti-flickering option which does not work with all
+          childconstrols, unfortunately - thus you may need to disable it one
+          time.<br>
+        </li>
+    </ol>
+    <p>Once your code runs, you can modify the behaviour of your class in many
+    ways.</p>
+    <p>The options you may want to make use of are:</p>
+    <ul>
+      <li>Disabling the size icon.</li>
+      <li>Setting a window's minimum and maximum size.</li>
+      <li>Advanced anti-flickering.</li>
+      <li>Advanced AddSzControl() code.</li>
+      <li>Virtual functions that you may like to overload for a more
+        sofisticated <i>dynamic</i> reaction.</li>
+      <li>Default resizing values and many more...</li>
+    </ul>
+    <p>
+    Check the flags, available to you, check functions and if you don't make it
+    work, <a href="mailto:hans.buehler@topmail.de">drop a note to me</a>.</p>
+</blockquote>
+
+<h3><a name="p5">5 | </a><a name="p2">Finally</a></h3>
+<blockquote>
+  <p>The classes described in this document have been written by</p>
+  <blockquote>
+    <p>Hans Bühler, codex design (w)1997 - 2000<br>
+    <a href="mailto:hans.buehler@topmail.de">hans.buehler@topmail.de</a></p>
+  </blockquote>
+  <p>You are free to use and modify the code and the classes but I would like
+  you to note the author (that's me :) in your product's documentation at any
+  place, if possible.<br>
+  You use this code at your own risk.<br>
+  Any damange caused by the use or misuse of this code is the sole
+  responsibility of the user.</p>
+  <p align="center"><small>[ back to <a href="#top">top</a>  of this document ]</small></p>
+</blockquote>
+
+</body>
+</html>
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlFormatter.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlFormatter.cpp
new file mode 100644 (file)
index 0000000..1a21d7e
--- /dev/null
@@ -0,0 +1,70 @@
+#include "StdAfx.h"
+#include "ListCtrlFormatter.h"
+#include <string>
+
+
+ListCtrlFormatter::ListCtrlFormatter( CListCtrl &list ) :
+    m_List( list ),
+    m_nColNo( 0 )
+{
+}
+
+
+ListCtrlFormatter::~ListCtrlFormatter()
+{
+}
+
+
+void 
+ListCtrlFormatter::AddColumn( CString strHeading,
+                              int nWidth,
+                              int nFormat,
+                              int nSubItemNo )
+{
+  LVCOLUMN column;
+  column.mask = LVCF_FMT | LVCF_SUBITEM  | LVCF_TEXT | LVCF_WIDTH;
+  column.cx = nWidth;
+  column.fmt = nFormat;
+  column.pszText = strHeading.GetBuffer( strHeading.GetLength() );
+  column.iSubItem = nSubItemNo == -1 ? m_nColNo : nSubItemNo;
+  column.iImage = 0;
+  column.iOrder = 0;
+  VERIFY( m_List.InsertColumn( m_nColNo++, &column ) >= 0 );
+  strHeading.ReleaseBuffer();
+/*
+  VERIFY( m_List.InsertColumn( m_nColNo++, 
+                               strHeading, 
+                               nFormat,
+                               nWidth, 
+                               nSubItemNo ) >= 0 );
+*/
+  }
+
+
+void 
+ListCtrlFormatter::AddColumn( const std::string &strHeading,
+                              int nWidth,
+                              int nFormat,
+                              int nSubItemNo )
+{
+  AddColumn( CString( strHeading.c_str() ), nWidth, nFormat, nSubItemNo );
+}
+
+
+void 
+ListCtrlFormatter::AddColumn( UINT nIdStringHeading,
+                              int nWidth,
+                              int nFormat,
+                              int nSubItemNo )
+{
+  CString strHeading;
+  VERIFY( strHeading.LoadString( nIdStringHeading ) );
+  AddColumn( strHeading, nWidth, nFormat, nSubItemNo );
+}
+
+
+int
+ListCtrlFormatter::GetNextColumnIndex() const
+{
+  return m_nColNo;
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlFormatter.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlFormatter.h
new file mode 100644 (file)
index 0000000..badb7aa
--- /dev/null
@@ -0,0 +1,71 @@
+#ifndef LISTCTRLFORMATTER_H
+#define LISTCTRLFORMATTER_H
+
+#include <string>
+
+/*! \brief Helper to setup ListCtrl columns format.
+ */
+class ListCtrlFormatter
+{
+public:
+  /*!
+   * Constructor.
+   * \param list List control to setup.
+   */
+  ListCtrlFormatter( CListCtrl &list );
+
+  /*!
+   * Destructeur.
+   */
+  virtual ~ListCtrlFormatter();
+
+  /*! Adds a column to the list control.
+   * \param strHeading Column title.
+   * \param nWidth Column width in pixel. (-1 if not defined).
+   * \param nFormat Text alignment (LVCFMT_LEFT, LVCFMT_RIGHT, LVCFMT_CENTER).
+   * \param nSubItemNo Index of the sub-item associates to the column.
+   */
+  void AddColumn( const std::string &strHeading,
+                  int nWidth =-1,
+                  int nFormat = LVCFMT_LEFT,
+                  int nSubItemNo =-1 );
+
+  /*! Adds a column to the list control.
+   * \param strHeading Column title.
+   * \param nWidth Column width in pixel. (-1 if not defined).
+   * \param nFormat Text alignment (LVCFMT_LEFT, LVCFMT_RIGHT, LVCFMT_CENTER).
+   * \param nSubItemNo Index of the sub-item associates to the column.
+   */
+  void AddColumn( CString strHeading,
+                  int nWidth =-1,
+                  int nFormat = LVCFMT_LEFT,
+                  int nSubItemNo =-1 );
+
+  /*! Adds a column to the list control.
+   * \param nIdStringHeading Resource ID of the column title string (IDS_xxx).
+   * \param nWidth Column width in pixel. (-1 if not defined).
+   * \param nFormat Text alignment (LVCFMT_LEFT, LVCFMT_RIGHT, LVCFMT_CENTER).
+   * \param nSubItemNo Index of the sub-item associates to the column.
+   */
+  void AddColumn( UINT nIdStringHeading,
+                  int nWidth =-1,
+                  int nFormat = LVCFMT_LEFT,
+                  int nSubItemNo =-1 );
+
+  /*! Gets the sub item index of the next column.
+   * \return Sub item index of the next column, starting with 0.
+   */
+  int GetNextColumnIndex() const;
+
+private:
+  /*! Associated list control.
+   */
+  CListCtrl &m_List;
+
+  /*! Next column number.
+   */
+  int m_nColNo;
+};
+
+
+#endif //WILLISTCTRLFORMATTER_H
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlSetter.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlSetter.cpp
new file mode 100644 (file)
index 0000000..ea25f94
--- /dev/null
@@ -0,0 +1,115 @@
+#include "StdAfx.h"
+#include "ListCtrlSetter.h"
+
+
+ListCtrlSetter::ListCtrlSetter( CListCtrl &list ) :
+    m_List( list ),
+    m_nLineNo( -1 )
+{
+}
+
+
+ListCtrlSetter::~ListCtrlSetter()
+{
+}
+
+
+void 
+ListCtrlSetter::modifyLine( int nLineNo )
+{
+  editLine( nLineNo, nLineNo >= m_List.GetItemCount() );
+}
+
+
+void 
+ListCtrlSetter::addLine()
+{
+  editLine( m_List.GetItemCount(), true );
+}
+
+
+void 
+ListCtrlSetter::insertLine( int nLineNo )
+{
+  editLine( nLineNo, true );
+}
+
+
+void 
+ListCtrlSetter::editLine( int nLineNo, 
+                          bool bInsertLine )
+{
+  m_nLineNo = nLineNo;
+  m_bInsertLine = bInsertLine;
+  m_nNextSubItem = 0;
+}
+
+
+void 
+ListCtrlSetter::addSubItem( const CString &strText )
+{
+  doAddSubItem( LVIF_TEXT, strText, 0 );
+}
+
+
+void 
+ListCtrlSetter::addSubItem( const CString &strText, 
+                            void *lParam )
+{
+  doAddSubItem( LVIF_TEXT | LVIF_PARAM, strText, 0, lParam );
+}
+
+
+void 
+ListCtrlSetter::addSubItem( const CString &strText,
+                            int nImage )
+{
+  doAddSubItem( LVIF_TEXT | LVIF_IMAGE, strText, nImage );
+}
+
+
+void 
+ListCtrlSetter::addSubItem( const CString &strText, 
+                            void *lParam,
+                            int nImage )
+{
+  doAddSubItem( LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM, strText, 0, lParam );
+}
+
+
+void 
+ListCtrlSetter::doAddSubItem( UINT nMask, 
+                              CString strText, 
+                              int nImage, 
+                              void *lParam )
+{
+  int textLength = strText.GetLength();
+
+  LVITEM item;
+  item.mask = nMask;
+  item.pszText = strText.GetBuffer( textLength );
+  item.cchTextMax = textLength;
+  item.iImage = nImage;
+  item.lParam = (LPARAM)lParam;
+  item.iItem = m_nLineNo;
+  item.iSubItem = m_nNextSubItem++;
+  if ( m_nNextSubItem == 1  &&
+       m_bInsertLine )      // First item & new line
+  {
+    m_nLineNo = m_List.InsertItem( &item );
+    VERIFY( m_nLineNo >= 0 );
+  }
+  else
+  {
+    VERIFY( m_List.SetItem( &item ) );
+  }
+
+  strText.ReleaseBuffer();
+}
+
+
+int 
+ListCtrlSetter::getLineNo() const
+{
+  return m_nLineNo;
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlSetter.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/ListCtrlSetter.h
new file mode 100644 (file)
index 0000000..1965a79
--- /dev/null
@@ -0,0 +1,90 @@
+#ifndef LISTCTRLSETTER_H
+#define LISTCTRLSETTER_H
+
+#include <string>
+
+
+/*! \brief Helper to set up the content of a list control.
+ */
+class ListCtrlSetter
+{
+public:
+  /*!
+   * Constructor.
+   * \param list List control to fill.
+   */
+  ListCtrlSetter( CListCtrl &list );
+
+  /*!
+   * Destructor.
+   */
+  virtual ~ListCtrlSetter();
+
+
+  /*! Modifies the specified line.
+   * \param nLineNo number of the line to modify.
+   */
+  void modifyLine( int nLineNo );
+
+  /*! Adds a new line at the end of the list.
+   */
+  void addLine();
+
+  /*! Insert a new line in the list.
+   * \param nLineNo Line number before the new line is insert.
+   */
+  void insertLine( int nLineNo );
+
+
+  void addSubItem( const CString &strText );
+
+  void addSubItem( const CString &strText, void *lParam );
+
+  void addSubItem( const CString &strText, int nImage );
+
+  void addSubItem( const CString &strText, void *lParam, int nImage );
+
+  /*! Gets the number of the line being modified.
+   * \return Number of the line being modified.
+   */
+  int getLineNo() const;
+
+private:
+  /*! Edit a line.
+   * \param nLineNo Number of the line to edit.
+   * \param bInsertLine \c true if the line is inserted, \c false if it is modified.
+   */
+  void editLine( int nLineNo, 
+                 bool bInsertLine );
+
+  /*! Add a sub-item.
+   * \param nMask Mask LV_IF... to set.
+   * \param strText Sub-item Text.
+   * \param nImage Image number.
+   * \param lParam Item data pointer.
+   */
+  void doAddSubItem( UINT nMask, 
+                     CString strText, 
+                     int nImage, 
+                     void *lParam =NULL );
+
+private:
+  /*! List control which content is being set up.
+   */
+  CListCtrl &m_List;
+
+  /*! Current line number (line being edited).
+   */
+  int m_nLineNo;
+
+  /*! Line should be inserted ?
+   */
+  bool m_bInsertLine;
+
+  /*! Next sub-item number.
+   */
+  int m_nNextSubItem;
+};
+
+
+#endif //LISTCTRLSETTER_H
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/MfcSynchronizationObject.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/MfcSynchronizationObject.h
new file mode 100644 (file)
index 0000000..34a6aa4
--- /dev/null
@@ -0,0 +1,39 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file LightweightSynchronizationObject.h for class LightweightSynchronizationObject
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2002/02/27
+// //////////////////////////////////////////////////////////////////////////
+#ifndef LIGHTWEIGHTSYNCHRONIZATIONOBJECT_H
+#define LIGHTWEIGHTSYNCHRONIZATIONOBJECT_H
+
+#include <cppunit/SynchronizedObject.h>
+
+
+/*! \class LightweightSynchronizationObject
+ * \brief This class represents a lock object for synchronized object.
+ */
+class MfcSynchronizationObject 
+    : public CPPUNIT_NS::SynchronizedObject::SynchronizationObject
+{
+  CCriticalSection m_syncObject;
+
+public:
+    void lock()
+    {
+      m_syncObject.Lock();
+    }
+    
+    void unlock()
+    {
+      m_syncObject.Unlock();
+    }
+};
+
+
+
+// Inlines methods for LightweightSynchronizationObject:
+// -----------------------------------------------------
+
+
+
+#endif  // LIGHTWEIGHTSYNCHRONIZATIONOBJECT_H
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/MfcTestRunner.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/MfcTestRunner.cpp
new file mode 100644 (file)
index 0000000..0d383a1
--- /dev/null
@@ -0,0 +1,79 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file MfcTestRunner.cpp for class MfcTestRunner
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/04/26
+// //////////////////////////////////////////////////////////////////////////
+
+#include "StdAfx.h"
+#include <cppunit/ui/mfc/MfcTestRunner.h>
+#include <cppunit/TestSuite.h>
+#include "TestRunnerModel.h"
+#include "TestRunnerDlg.h"
+
+
+
+CPPUNIT_NS_BEGIN
+
+
+MfcTestRunner::MfcTestRunner()
+  : m_suite( new CPPUNIT_NS::TestSuite() )
+{
+}
+
+
+MfcTestRunner::~MfcTestRunner() 
+{
+  delete m_suite;
+
+  for ( Tests::iterator it = m_tests.begin(); it != m_tests.end(); ++it )
+    delete *it;
+}
+
+
+void 
+MfcTestRunner::run() 
+{ 
+  bool comInit = SUCCEEDED( CoInitialize( NULL) );
+
+  TestRunnerModel model( getRootTest() );
+  TestRunnerDlg dlg( &model ); 
+  dlg.DoModal (); 
+
+  if ( comInit)
+    CoUninitialize();
+}
+
+
+void            
+MfcTestRunner::addTest( CPPUNIT_NS::Test *test ) 
+{ 
+  m_tests.push_back( test );
+}
+
+
+void            
+MfcTestRunner::addTests( const CppUnitVector<CPPUNIT_NS::Test *> &tests )
+{ 
+  for ( Tests::const_iterator it=tests.begin();
+        it != tests.end();
+        ++it )
+  {
+    addTest( *it );
+  }
+}
+
+
+CPPUNIT_NS::Test *   
+MfcTestRunner::getRootTest()
+{
+  if ( m_tests.size() != 1 )
+  {
+    for ( Tests::iterator it = m_tests.begin(); it != m_tests.end(); ++it )
+      m_suite->addTest( *it );
+    m_tests.clear();
+    return m_suite;
+  }
+  return m_tests[0];
+}
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/MostRecentTests.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/MostRecentTests.cpp
new file mode 100644 (file)
index 0000000..9d437a7
--- /dev/null
@@ -0,0 +1,63 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file MostRecentTests.cpp for class MostRecentTests
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/06/27
+// //////////////////////////////////////////////////////////////////////////
+
+#include "StdAfx.h"
+#include "MostRecentTests.h"
+#include <algorithm>
+
+
+MostRecentTests::MostRecentTests()
+{
+}
+
+
+MostRecentTests::~MostRecentTests()
+{
+}
+
+
+void 
+MostRecentTests::setLastTestRun( CPPUNIT_NS::Test *test )
+{
+  for ( TestRuns::iterator it = m_runs.begin(); it != m_runs.end(); ++it )
+  {
+    if ( it->second == test )
+    {
+      m_runs.erase( it );
+      break;
+    }
+  }
+  
+  if ( test != NULL )
+    m_runs.push_front( TestRun( test->getName(), test ) );
+}
+
+
+CPPUNIT_NS::Test *
+MostRecentTests::lastTestRun() const
+{
+  return m_runs.front().second;
+}
+
+
+int 
+MostRecentTests::getRunCount() const
+{
+  return m_runs.size();
+}
+
+
+CPPUNIT_NS::Test *
+MostRecentTests::getTestAt( int indexTest ) const
+{
+  return m_runs.at( indexTest ).second;
+}
+
+std::string 
+MostRecentTests::getTestNameAt( int indexTest ) const
+{
+  return m_runs.at( indexTest ).first;
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/MostRecentTests.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/MostRecentTests.h
new file mode 100644 (file)
index 0000000..339c3b7
--- /dev/null
@@ -0,0 +1,50 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file MostRecentTests.h for class MostRecentTests
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/06/27
+// //////////////////////////////////////////////////////////////////////////
+#ifndef MOSTRECENTTESTS_H
+#define MOSTRECENTTESTS_H
+
+#include <cppunit/Test.h>
+#include <deque>
+#include <utility>
+
+
+/*! \class MostRecentTests
+ * \brief This class represents a list of the tests most recently run.
+ */
+class MostRecentTests
+{
+public:
+  /*! Constructs a MostRecentTests object.
+   */
+  MostRecentTests();
+
+  /*! Destructor.
+   */
+  virtual ~MostRecentTests();
+
+  void setLastTestRun( CPPUNIT_NS::Test *test );
+  CPPUNIT_NS::Test *lastTestRun() const;
+
+  int getRunCount() const;
+  CPPUNIT_NS::Test *getTestAt( int indexTest ) const;
+  std::string getTestNameAt( int indexTest ) const;
+
+
+private:
+  /// Prevents the use of the copy constructor.
+  MostRecentTests( const MostRecentTests &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const MostRecentTests &copy );
+
+private:
+  typedef std::pair<std::string, CPPUNIT_NS::Test *> TestRun;
+  typedef std::deque<TestRun> TestRuns;
+  TestRuns m_runs;
+};
+
+
+#endif  // MOSTRECENTTESTS_H
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/MsDevCallerListCtrl.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/MsDevCallerListCtrl.cpp
new file mode 100644 (file)
index 0000000..0cf565e
--- /dev/null
@@ -0,0 +1,93 @@
+// MsDevCallerListCtrl.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include <atlbase.h>
+
+#include "MsDevCallerListCtrl.h"
+#include <msvc6/testrunner/TestRunner.h>
+#include <msvc6/DSPlugin/TestRunnerDSPluginVC6.h>
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// MsDevCallerListCtrl
+
+
+
+MsDevCallerListCtrl::MsDevCallerListCtrl()
+    : m_lineNumberSubItem( 3 )
+    , m_fileNameSubItem( 4 )
+{
+  m_comInitialized = SUCCEEDED( CoInitialize(NULL) );
+}
+
+MsDevCallerListCtrl::~MsDevCallerListCtrl()
+{
+       if ( m_comInitialized )
+    CoUninitialize();
+}
+
+
+void 
+MsDevCallerListCtrl::setLineNumberSubItem( int subItemIndex )
+{
+  m_lineNumberSubItem = subItemIndex;
+}
+
+
+void 
+MsDevCallerListCtrl::setFileNameSubItem( int fileNameItemIndex )
+{
+  m_fileNameSubItem = fileNameItemIndex;
+}
+
+
+BEGIN_MESSAGE_MAP(MsDevCallerListCtrl, CListCtrl)
+       //{{AFX_MSG_MAP(MsDevCallerListCtrl)
+       ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
+       //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// MsDevCallerListCtrl message handlers
+
+void MsDevCallerListCtrl::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
+{
+  HRESULT hr = S_OK;
+  int hotItem = 0;
+
+  CComPtr< ITestRunnerDSPlugin> pIDSPlugin;
+  hr = CoCreateInstance( CLSID_DSAddIn, NULL, CLSCTX_LOCAL_SERVER, IID_ITestRunnerDSPlugin, 
+                          reinterpret_cast< void**>(&pIDSPlugin));
+  
+  if ( SUCCEEDED( hr))
+  {
+    CPoint pt;
+    UINT flags = 0;
+    CString lineNumber, fileName;
+
+    GetCursorPos( &pt);
+    ScreenToClient( &pt);
+
+    // some dirty hack to get some selection
+    // should get the border-width + 1, but WINDOWINFO
+    // is not supported in Win95
+    pt.x = 5;
+
+    hotItem = HitTest( pt, &flags);
+
+    lineNumber = GetItemText( hotItem, m_lineNumberSubItem);
+    fileName = GetItemText( hotItem, m_fileNameSubItem);
+    
+    pIDSPlugin->goToLineInSourceCode( CComBSTR( fileName), _ttoi( lineNumber));
+
+  }
+
+  *pResult = 0;
+}
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/MsDevCallerListCtrl.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/MsDevCallerListCtrl.h
new file mode 100644 (file)
index 0000000..cf63edd
--- /dev/null
@@ -0,0 +1,56 @@
+#if !defined(AFX_MSDEVCALLERLISTCTRL_H__4B5EE0C1_D251_45CF_BBD1_D5003C80B238__INCLUDED_)
+#define AFX_MSDEVCALLERLISTCTRL_H__4B5EE0C1_D251_45CF_BBD1_D5003C80B238__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+// MsDevCallerListCtrl.h : header file
+//
+
+/////////////////////////////////////////////////////////////////////////////
+// MsDevCallerListCtrl window
+
+class MsDevCallerListCtrl : public CListCtrl
+{
+// Construction
+public:
+       MsDevCallerListCtrl();
+
+  void setLineNumberSubItem( int subItemIndex );
+  void setFileNameSubItem( int fileNameItemIndex );
+
+// Attributes
+public:
+
+// Operations
+public:
+
+// Overrides
+       // ClassWizard generated virtual function overrides
+       //{{AFX_VIRTUAL(MsDevCallerListCtrl)
+       //}}AFX_VIRTUAL
+
+// Implementation
+public:
+       virtual ~MsDevCallerListCtrl();
+
+       // Generated message map functions
+protected:
+       //{{AFX_MSG(MsDevCallerListCtrl)
+       afx_msg void OnDblclk(NMHDR* pNMHDR, LRESULT* pResult);
+       //}}AFX_MSG
+
+       DECLARE_MESSAGE_MAP()
+
+private:
+  int m_lineNumberSubItem;
+  int m_fileNameSubItem;
+  bool m_comInitialized;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_MSDEVCALLERLISTCTRL_H__4B5EE0C1_D251_45CF_BBD1_D5003C80B238__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ProgressBar.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/ProgressBar.cpp
new file mode 100644 (file)
index 0000000..9cb0f99
--- /dev/null
@@ -0,0 +1,185 @@
+#include "stdafx.h"
+#include "ProgressBar.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+ProgressBar::ProgressBar()
+    : m_error( false )
+    , m_total( 0 )
+    , m_progress( 0 ) 
+    , m_progressX( 0 )
+{
+}
+
+
+ProgressBar::~ProgressBar()
+{
+}
+
+
+BEGIN_MESSAGE_MAP(ProgressBar, CWnd)
+       //{{AFX_MSG_MAP(ProgressBar)
+       ON_WM_PAINT()
+       ON_WM_SIZE()
+       ON_WM_ERASEBKGND()
+       //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+
+void 
+ProgressBar::OnPaint() 
+{
+       CPaintDC dc(this); // device context for painting
+  paint( dc );
+}
+
+
+// Paint the progress bar in response to a paint message
+void 
+ProgressBar::paint( CDC &dc )
+{
+  paintBackground( dc );
+  paintStatus( dc );
+}
+
+
+// Paint the background of the progress bar region
+void 
+ProgressBar::paintBackground( CDC &dc )
+{
+  CBrush brshBackground;
+  CPen penGray( PS_SOLID, 1, RGB (128, 128, 128) );
+  CPen penWhite( PS_SOLID, 1, RGB (255, 255, 255) );
+
+  VERIFY( brshBackground.CreateSolidBrush( ::GetSysColor (COLOR_BTNFACE) ) );
+
+  dc.FillRect( m_bounds, &brshBackground );
+  
+  CPen *pOldPen = dc.SelectObject( &penGray );
+  int xRight = m_bounds.left + m_bounds.Width() -1;
+  int yBottom = m_bounds.top + m_bounds.Height() -1;
+  {
+    dc.MoveTo( m_bounds.left, m_bounds.top );
+    dc.LineTo( xRight, m_bounds.top );
+
+    dc.MoveTo( m_bounds.left, m_bounds.top );
+    dc.LineTo( m_bounds.left, yBottom );
+  }
+
+  dc.SelectObject( &penWhite );
+  {
+    dc.MoveTo( xRight, m_bounds.top );
+    dc.LineTo( xRight, yBottom );
+
+    dc.MoveTo( m_bounds.left, yBottom );
+    dc.LineTo( xRight, yBottom );
+  }
+
+  dc.SelectObject( pOldPen );
+}
+
+
+// Paint the actual status of the progress bar
+void 
+ProgressBar::paintStatus( CDC &dc )
+{
+  if ( m_progress <= 0 )
+    return;
+
+  CBrush brshStatus;
+  CRect rect( m_bounds.left, m_bounds.top, 
+              m_bounds.left + m_progressX, m_bounds.bottom );
+
+  COLORREF statusColor = getStatusColor();
+
+  VERIFY( brshStatus.CreateSolidBrush( statusColor ) );
+
+  rect.DeflateRect( 1, 1 );
+  dc.FillRect( rect, &brshStatus );
+}
+
+
+// Paint the current step
+void 
+ProgressBar::paintStep( int startX, 
+                        int endX )
+{
+  CRect redrawBounds( m_bounds.left + startX-1, m_bounds.top, 
+                      m_bounds.left + endX, m_bounds.bottom );
+  RedrawWindow( redrawBounds );
+}
+
+
+// Setup the progress bar for execution over a total number of steps
+void 
+ProgressBar::start( int total )
+{
+  m_total = total;
+  reset ();
+}
+
+
+// Take one step, indicating whether it was a successful step
+void 
+ProgressBar::step( bool successful )
+{
+  m_progress++;
+
+  int x = m_progressX;
+
+  m_progressX = scale (m_progress);
+
+  if ( !m_error  &&  !successful )
+  {
+    m_error = true;
+    x = 1;
+  }
+
+  paintStep( x, m_progressX );
+}
+
+
+// Map from steps to display units
+int 
+ProgressBar::scale( int value )
+{
+  if ( m_total > 0 )
+      return max( 1, value * (m_bounds.Width() - 1) / m_total );
+
+  return value;
+}
+
+
+// Reset the progress bar
+void 
+ProgressBar::reset()
+{
+  m_progressX = 1;
+  m_progress = 0;
+  m_error = false;
+
+  RedrawWindow( m_bounds );
+  UpdateWindow( );
+}
+
+
+void 
+ProgressBar::OnSize(UINT nType, int cx, int cy) 
+{
+       CWnd::OnSize(nType, cx, cy);
+
+  GetClientRect( &m_bounds );
+  m_progressX = scale (m_progress);
+  Invalidate();
+}
+
+
+BOOL 
+ProgressBar::OnEraseBkgnd( CDC *pDC )
+{
+  return FALSE;
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ProgressBar.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/ProgressBar.h
new file mode 100644 (file)
index 0000000..0fb89e0
--- /dev/null
@@ -0,0 +1,71 @@
+#if !defined(AFX_PROGRESSBAR_H__F2CB2DBB_467B_4978_829B_CAD101EA4B8A__INCLUDED_)
+#define AFX_PROGRESSBAR_H__F2CB2DBB_467B_4978_829B_CAD101EA4B8A__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+
+
+class ProgressBar : public CWnd
+{
+public:
+       ProgressBar();
+       virtual ~ProgressBar();
+
+  void step( bool successful );
+
+  int scale( int value );
+
+  void reset();
+
+  void start( int total );
+
+       // ClassWizard generated virtual function overrides
+       //{{AFX_VIRTUAL(ProgressBar)
+       //}}AFX_VIRTUAL
+
+protected:
+       //{{AFX_MSG(ProgressBar)
+       afx_msg void OnPaint();
+       afx_msg void OnSize(UINT nType, int cx, int cy);
+       afx_msg BOOL OnEraseBkgnd(CDC* pDC);
+       //}}AFX_MSG
+       DECLARE_MESSAGE_MAP();
+
+
+protected:
+  void paint( CDC &dc );
+
+  void paintBackground( CDC &dc );
+
+  void paintStatus( CDC &dc );
+
+  COLORREF getStatusColor();
+
+  void paintStep( int startX, 
+                  int endX );
+
+private:
+  CRect m_bounds;
+  bool m_error;
+  int m_total;
+  int m_progress;
+  int m_progressX;
+};
+
+
+
+// Get the current color
+inline COLORREF 
+ProgressBar::getStatusColor ()
+{ 
+  return m_error ? RGB (255, 0, 0) : 
+                   RGB (0, 255, 0); 
+}
+
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_PROGRESSBAR_H__F2CB2DBB_467B_4978_829B_CAD101EA4B8A__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/Resource.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/Resource.h
new file mode 100644 (file)
index 0000000..4b3ef4c
--- /dev/null
@@ -0,0 +1,47 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by TestRunner.rc
+//
+#define IDS_ERROR_SELECT_TEST           1
+#define IDS_ERRORLIST_TYPE              2
+#define IDS_ERRORLIST_NAME              3
+#define IDS_ERRORLIST_FAILED_CONDITION  4
+#define IDS_ERRORLIST_LINE_NUMBER       5
+#define IDS_ERRORLIST_FILE_NAME         6
+#define IDS_STRING7                     100
+#define IDR_ACCELERATOR_TEST_RUNNER     131
+#define IDC_LIST                        1000
+#define ID_RUN                          1001
+#define ID_STOP                         1002
+#define IDC_PROGRESS                    1003
+#define IDC_INDICATOR                   1004
+#define IDC_COMBO_TEST                  1005
+#define IDC_STATIC_RUNS                 1007
+#define IDC_STATIC_ERRORS               1008
+#define IDC_STATIC_FAILURES             1009
+#define IDC_EDIT_TIME                   1010
+#define IDC_BUTTON1                     1011
+#define IDC_BROWSE_TEST                 1011
+#define IDC_TREE_TEST                   1012
+#define IDC_DETAILS                     1012
+#define IDC_CHECK_AUTORUN               1013
+#define IDC_RUNNING_TEST_CASE_LABEL     1016
+#define IDC_STATIC_TEST_NAME            1017
+#define IDC_STATIC_PROGRESS             1018
+#define IDC_STATIC_LABEL_RUNS           1019
+#define IDC_STATIC_LABEL_ERRORS         1020
+#define IDC_STATIC_LABEL_FAILURES       1021
+#define IDC_STATIC_PROGRESS_BAR         1022
+#define IDC_STATIC_DETAILS              1023
+#define ID_QUIT_APPLICATION             32771
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        134
+#define _APS_NEXT_COMMAND_VALUE         32772
+#define _APS_NEXT_CONTROL_VALUE         1024
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ResourceLoaders.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/ResourceLoaders.cpp
new file mode 100644 (file)
index 0000000..88699da
--- /dev/null
@@ -0,0 +1,34 @@
+#include "stdafx.h"
+
+#include "ResourceLoaders.h"
+
+extern HINSTANCE g_testRunnerResource;
+
+CString loadCString(UINT stringId)
+{
+  CString string;
+  
+  HRSRC stringRes = ::FindResource( g_testRunnerResource, 
+                                   MAKEINTRESOURCE( (stringId>>4) + 1),
+                                   RT_STRING );
+  if ( stringRes )
+  {
+    int stringLen = ::SizeofResource( g_testRunnerResource, 
+                                      stringRes) / sizeof(TCHAR);
+    if (stringLen > 0)
+    {
+      LPTSTR stringBuffer = string.GetBuffer( stringLen+2 );
+      int realStringLen = ::LoadString( g_testRunnerResource, 
+                                        stringId, 
+                                        stringBuffer, 
+                                        (stringLen+1)*2 );
+      string.ReleaseBuffer( realStringLen );
+
+      ASSERT(realStringLen > 0);
+    }
+  }
+
+  ASSERT( !string.IsEmpty() );
+  return string;
+}
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/ResourceLoaders.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/ResourceLoaders.h
new file mode 100644 (file)
index 0000000..b273e40
--- /dev/null
@@ -0,0 +1,7 @@
+#if !defined(AFX_RESOURCELOADERS_H)
+#define AFX_RESOURCELOADERS_H
+
+/// loads a CString from the test runner DLL module 
+CString loadCString(UINT stringId);
+
+#endif // !defined(AFX_RESOURCELOADERS_H)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/StdAfx.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/StdAfx.cpp
new file mode 100644 (file)
index 0000000..e41bdff
--- /dev/null
@@ -0,0 +1,6 @@
+// stdafx.cpp : source file that includes just the standard includes
+//  TestRunner.pch will be the pre-compiled header
+//  stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/StdAfx.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/StdAfx.h
new file mode 100644 (file)
index 0000000..eda0805
--- /dev/null
@@ -0,0 +1,43 @@
+// stdafx.h : include file for standard system include files,
+//  or project specific include files that are used frequently, but
+//      are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__D15A539F_17E8_11D2_A49B_00805FC1C042__INCLUDED_)
+#define AFX_STDAFX_H__D15A539F_17E8_11D2_A49B_00805FC1C042__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#pragma warning( disable : 4786 )  // warning of hell: debug symbol too long...
+
+#define VC_EXTRALEAN        // Exclude rarely-used stuff from Windows headers
+
+#include <afxwin.h>         // MFC core and standard components
+#include <afxext.h>         // MFC extensions
+
+#ifndef _AFX_NO_OLE_SUPPORT
+#include <afxole.h>         // MFC OLE classes
+#include <afxodlgs.h>       // MFC OLE dialog classes
+#include <afxdisp.h>        // MFC OLE automation classes
+#endif // _AFX_NO_OLE_SUPPORT
+
+
+#ifndef _AFX_NO_DB_SUPPORT
+#include <afxdb.h>          // MFC ODBC database classes
+#endif // _AFX_NO_DB_SUPPORT
+
+#ifndef _AFX_NO_DAO_SUPPORT
+#include <afxdao.h>         // MFC DAO database classes
+#endif // _AFX_NO_DAO_SUPPORT
+
+#ifndef _AFX_NO_AFXCMN_SUPPORT
+#include <afxcmn.h>         // MFC support for Windows Common Controls
+#endif // _AFX_NO_AFXCMN_SUPPORT
+
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__D15A539F_17E8_11D2_A49B_00805FC1C042__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/SynchronizedTestResult.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/SynchronizedTestResult.h
new file mode 100644 (file)
index 0000000..322c3ba
--- /dev/null
@@ -0,0 +1,106 @@
+#ifndef SYNCHRONIZEDTESTRESULTDECORATOR_H
+#define SYNCHRONIZEDTESTRESULTDECORATOR_H
+
+#include <afxmt.h>
+#include "TestResultDecorator.h"
+
+class SynchronizedTestResult : public TestResultDecorator
+{
+public:
+                                                               SynchronizedTestResult (TestResult *result);
+                                                               ~SynchronizedTestResult ();
+
+
+       bool                                            shouldStop      ();
+       void                                            addError        (Test *test, CppUnitException *e);
+       void                                            addFailure      (Test *test, CppUnitException *e);
+       void                                            startTest       (Test *test);
+       void                                            endTest         (Test *test);
+       int                                                     runTests        ();
+       int                                                     testErrors  ();
+       int                                                     testFailures ();
+       bool                                            wasSuccessful ();
+       void                                            stop ();
+
+       vector<TestFailure *>&          errors ();
+       vector<TestFailure *>&          failures ();
+
+private:
+       CCriticalSection                        m_criticalSection;
+
+};
+
+
+// Constructor
+inline SynchronizedTestResult::SynchronizedTestResult (TestResult *result)
+: TestResultDecorator (result) {}
+
+// Destructor
+inline SynchronizedTestResult::~SynchronizedTestResult ()
+{}
+
+// Returns whether the test should stop
+inline bool SynchronizedTestResult::shouldStop ()
+{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->shouldStop (); }
+
+
+// Adds an error to the list of errors. The passed in exception
+// caused the error
+inline void SynchronizedTestResult::addError (Test *test, CppUnitException *e)
+{ CSingleLock sync (&m_criticalSection, TRUE); m_result->addError (test, e); }
+
+
+// Adds a failure to the list of failures. The passed in exception
+// caused the failure.
+inline void SynchronizedTestResult::addFailure (Test *test, CppUnitException *e)
+{ CSingleLock sync (&m_criticalSection, TRUE); m_result->addFailure (test, e); }
+
+
+// Informs the result that a test will be started.
+inline void SynchronizedTestResult::startTest (Test *test)
+{ CSingleLock sync (&m_criticalSection, TRUE); m_result->startTest (test); }
+
+  
+// Informs the result that a test was completed.
+inline void SynchronizedTestResult::endTest (Test *test)
+{ CSingleLock sync (&m_criticalSection, TRUE); m_result->endTest (test); }
+
+
+// Gets the number of run tests.
+inline int SynchronizedTestResult::runTests ()
+{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->runTests (); }
+
+
+// Gets the number of detected errors.
+inline int SynchronizedTestResult::testErrors ()
+{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->testErrors (); }
+
+
+// Gets the number of detected failures.
+inline int SynchronizedTestResult::testFailures ()
+{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->testFailures (); }
+
+
+// Returns whether the entire test was successful or not.
+inline bool SynchronizedTestResult::wasSuccessful ()
+{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->wasSuccessful (); }
+
+
+// Marks that the test run should stop.
+inline void SynchronizedTestResult::stop ()
+{ CSingleLock sync (&m_criticalSection, TRUE); m_result->stop (); }
+
+
+// Returns a vector of the errors.
+inline vector<TestFailure *>& SynchronizedTestResult::errors ()
+{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->errors (); }
+
+
+// Returns a vector of the failures.
+inline vector<TestFailure *>& SynchronizedTestResult::failures ()
+{ CSingleLock sync (&m_criticalSection, TRUE); return m_result->failures (); }
+
+
+#endif
+
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestResultDecorator.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestResultDecorator.h
new file mode 100644 (file)
index 0000000..af2362c
--- /dev/null
@@ -0,0 +1,102 @@
+#ifndef CPP_UNIT_TESTRESULTDECORATOR_H
+#define CPP_UNIT_TESTRESULTDECORATOR_H
+
+#include "TestResult.h"
+
+class TestResultDecorator
+{
+public:
+                                                               TestResultDecorator (TestResult *result);
+       virtual                                         ~TestResultDecorator ();
+
+
+       virtual bool                            shouldStop      ();
+       virtual void                            addError        (Test *test, CppUnitException *e);
+       virtual void                            addFailure      (Test *test, CppUnitException *e);
+       virtual void                            startTest       (Test *test);
+       virtual void                            endTest         (Test *test);
+       virtual int                                     runTests        ();
+       virtual int                                     testErrors  ();
+       virtual int                                     testFailures ();
+       virtual bool                            wasSuccessful ();
+       virtual void                            stop ();
+
+       vector<TestFailure *>&          errors ();
+       vector<TestFailure *>&          failures ();
+
+protected:
+       TestResult                                      *m_result;
+};
+
+
+inline TestResultDecorator::TestResultDecorator (TestResult *result)
+: m_result (result) {}
+
+inline TestResultDecorator::~TestResultDecorator ()
+{}
+
+// Returns whether the test should stop
+inline bool TestResultDecorator::shouldStop ()
+{ return m_result->shouldStop (); }
+
+
+// Adds an error to the list of errors. The passed in exception
+// caused the error
+inline void TestResultDecorator::addError (Test *test, CppUnitException *e)
+{ m_result->addError (test, e); }
+
+
+// Adds a failure to the list of failures. The passed in exception
+// caused the failure.
+inline void TestResultDecorator::addFailure (Test *test, CppUnitException *e)
+{ m_result->addFailure (test, e); }
+
+
+// Informs the result that a test will be started.
+inline void TestResultDecorator::startTest (Test *test)
+{ m_result->startTest (test); }
+
+  
+// Informs the result that a test was completed.
+inline void TestResultDecorator::endTest (Test *test)
+{ m_result->endTest (test); }
+
+
+// Gets the number of run tests.
+inline int TestResultDecorator::runTests ()
+{ return m_result->runTests (); }
+
+
+// Gets the number of detected errors.
+inline int TestResultDecorator::testErrors ()
+{ return m_result->testErrors (); }
+
+
+// Gets the number of detected failures.
+inline int TestResultDecorator::testFailures ()
+{ return m_result->testFailures (); }
+
+
+// Returns whether the entire test was successful or not.
+inline bool TestResultDecorator::wasSuccessful ()
+{ return m_result->wasSuccessful (); }
+
+
+// Marks that the test run should stop.
+inline void TestResultDecorator::stop ()
+{ m_result->stop (); }
+
+
+// Returns a vector of the errors.
+inline vector<TestFailure *>& TestResultDecorator::errors ()
+{ return m_result->errors (); }
+
+
+// Returns a vector of the failures.
+inline vector<TestFailure *>& TestResultDecorator::failures ()
+{ return m_result->failures (); }
+
+
+#endif
+
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.def b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.def
new file mode 100644 (file)
index 0000000..d2eaca0
--- /dev/null
@@ -0,0 +1,7 @@
+; TestRunner.def : Declares the module parameters for the DLL.
+
+;LIBRARY      "TestRunner"
+DESCRIPTION  'TestRunner Windows Dynamic Link Library'
+
+EXPORTS
+    ; Explicit exports can go here
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.dsp b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.dsp
new file mode 100644 (file)
index 0000000..271d43b
--- /dev/null
@@ -0,0 +1,458 @@
+# Microsoft Developer Studio Project File - Name="TestRunner" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=TestRunner - Win32 Debug Unicode\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "TestRunner.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "TestRunner.mak" CFG="TestRunner - Win32 Debug Unicode"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "TestRunner - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "TestRunner - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "TestRunner - Win32 Release Unicode" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "TestRunner - Win32 Debug Unicode" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "TestRunner - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 6\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 6\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "NDEBUG" /D "_AFXEXT" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "WIN32" /D "OEMRESOURCE" /Yu"stdafx.h" /FD /c\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 /nologo /subsystem:windows /dll /machine:I386\r
+# ADD LINK32 ..\..\..\lib\cppunit.lib winmm.lib /nologo /subsystem:windows /dll /machine:I386 /def:".\TestRunner.def"\r
+# SUBTRACT LINK32 /pdb:none\r
+# Begin Special Build Tool\r
+TargetDir=.\Release\r
+TargetPath=.\Release\TestRunner.dll\r
+TargetName=TestRunner\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\..\lib\$(TargetName).dll       copy $(TargetDir)\$(TargetName).lib ..\..\..\lib\$(TargetName).lib\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "TestRunner - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 6\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 6\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_AFXEXT" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "WIN32" /D "OEMRESOURCE" /FR /Yu"stdafx.h" /FD /c\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 ..\..\..\lib\cppunitd.lib winmm.lib /nologo /subsystem:windows /dll /debug /machine:I386 /def:".\TestRunner.def" /out:"Debug\testrunnerd.dll" /pdbtype:sept\r
+# SUBTRACT LINK32 /pdb:none\r
+# Begin Special Build Tool\r
+TargetDir=.\Debug\r
+TargetPath=.\Debug\testrunnerd.dll\r
+TargetName=testrunnerd\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\..\lib\$(TargetName).dll       copy $(TargetDir)\$(TargetName).lib ..\..\..\lib\$(TargetName).lib\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "TestRunner - Win32 Release Unicode"\r
+\r
+# PROP BASE Use_MFC 6\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "TestRunner___Win32_Release_Unicode"\r
+# PROP BASE Intermediate_Dir "TestRunner___Win32_Release_Unicode"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 6\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "ReleaseUnicode"\r
+# PROP Intermediate_Dir "ReleaseUnicode"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_AFXEXT" /D "WIN32" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "NDEBUG" /D "_UNICODE" /D "_AFXEXT" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "WIN32" /D "OEMRESOURCE" /Yu"stdafx.h" /FD /c\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 ..\..\..\lib\cppunit.lib winmm.lib /nologo /subsystem:windows /dll /machine:I386 /def:".\TestRunner.def" /out:"..\..\..\lib\testrunner.dll" /implib:"..\..\..\lib\testrunner.lib"\r
+# SUBTRACT BASE LINK32 /pdb:none\r
+# ADD LINK32 ..\..\..\lib\cppunit.lib winmm.lib /nologo /subsystem:windows /dll /machine:I386 /def:".\TestRunner.def" /out:"ReleaseUnicode\testrunneru.dll"\r
+# SUBTRACT LINK32 /pdb:none\r
+# Begin Special Build Tool\r
+TargetDir=.\ReleaseUnicode\r
+TargetPath=.\ReleaseUnicode\testrunneru.dll\r
+TargetName=testrunneru\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\..\lib\$(TargetName).dll       copy $(TargetDir)\$(TargetName).lib ..\..\..\lib\$(TargetName).lib\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "TestRunner - Win32 Debug Unicode"\r
+\r
+# PROP BASE Use_MFC 6\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "TestRunner___Win32_Debug_Unicode"\r
+# PROP BASE Intermediate_Dir "TestRunner___Win32_Debug_Unicode"\r
+# PROP BASE Ignore_Export_Lib 0\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 6\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "DebugUnicode"\r
+# PROP Intermediate_Dir "DebugUnicode"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_AFXEXT" /D "WIN32" /FR /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\include\msvc6" /D "_DEBUG" /D "_UNICODE" /D "_AFXEXT" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "WIN32" /D "OEMRESOURCE" /FR /Yu"stdafx.h" /FD /c\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"\r
+# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 ..\..\..\lib\cppunitd.lib winmm.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"..\..\..\lib\testrunnerd.dll" /implib:"..\..\..\lib\testrunnerd.lib" /pdbtype:sept\r
+# SUBTRACT BASE LINK32 /profile /pdb:none /map\r
+# ADD LINK32 ..\..\..\lib\cppunitd.lib winmm.lib /nologo /subsystem:windows /dll /debug /machine:I386 /def:".\TestRunner.def" /out:"DebugUnicode\testrunnerud.dll" /pdbtype:sept\r
+# SUBTRACT LINK32 /pdb:none\r
+# Begin Special Build Tool\r
+TargetDir=.\DebugUnicode\r
+TargetPath=.\DebugUnicode\testrunnerud.dll\r
+TargetName=testrunnerud\r
+SOURCE="$(InputPath)"\r
+PostBuild_Desc=Copying target to lib/\r
+PostBuild_Cmds=copy $(TargetPath) ..\..\..\lib\$(TargetName).dll       copy $(TargetDir)\$(TargetName).lib ..\..\..\lib\$(TargetName).lib\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "TestRunner - Win32 Release"\r
+# Name "TestRunner - Win32 Debug"\r
+# Name "TestRunner - Win32 Release Unicode"\r
+# Name "TestRunner - Win32 Debug Unicode"\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"\r
+# Begin Source File\r
+\r
+SOURCE=.\res\errortype.bmp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\res\test_type.bmp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\res\TestRunner.rc2\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\res\tfwkui_r.bmp\r
+# End Source File\r
+# End Group\r
+# Begin Group "UserInterface"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Group "DynamicWindow"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCDynamicBar.cpp\r
+# PROP Exclude_From_Build 1\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCDynamicBar.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCDynamicControlsManager.cpp\r
+# PROP Exclude_From_Build 1\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCDynamicControlsManager.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCDynamicDialog.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCDynamicDialog.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCDynamicFormView.cpp\r
+# PROP Exclude_From_Build 1\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCDynamicFormView.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCDynamicPropSheet.cpp\r
+# PROP Exclude_From_Build 1\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCDynamicPropSheet.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCDynamicWnd.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCDynamicWnd.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCDynamicWndEx.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCDynamicWndEx.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCSizeIconCtrl.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\cdxCSizeIconCtrl.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\SizeCBar.cpp\r
+# PROP Exclude_From_Build 1\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\DynamicWindow\SizeCBar.h\r
+# End Source File\r
+# End Group\r
+# Begin Source File\r
+\r
+SOURCE=.\ListCtrlFormatter.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ListCtrlFormatter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ListCtrlSetter.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ListCtrlSetter.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MsDevCallerListCtrl.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MsDevCallerListCtrl.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ProgressBar.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ProgressBar.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\Resource.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ResourceLoaders.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ResourceLoaders.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StdAfx.cpp\r
+# ADD CPP /Yc"stdafx.h"\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\StdAfx.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestRunner.def\r
+\r
+!IF  "$(CFG)" == "TestRunner - Win32 Release"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "TestRunner - Win32 Debug"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "TestRunner - Win32 Release Unicode"\r
+\r
+# PROP BASE Exclude_From_Build 1\r
+# PROP Exclude_From_Build 1\r
+\r
+!ELSEIF  "$(CFG)" == "TestRunner - Win32 Debug Unicode"\r
+\r
+# PROP Exclude_From_Build 1\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestRunner.rc\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestRunnerApp.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestRunnerApp.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestRunnerDlg.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestRunnerDlg.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TreeHierarchyDlg.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TreeHierarchyDlg.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Components"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Source File\r
+\r
+SOURCE=.\ActiveTest.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\ActiveTest.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MfcSynchronizationObject.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MfcTestRunner.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\include\cppunit\ui\mfc\MfcTestRunner.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\include\cppunit\ui\mfc\TestRunner.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\include\msvc6\testrunner\TestRunner.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestRunnerModel.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\TestRunnerModel.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "NewFiles"\r
+\r
+# PROP Default_Filter "*.cpp;*.h"\r
+# Begin Source File\r
+\r
+SOURCE=.\MostRecentTests.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\MostRecentTests.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\include\msvc6\DSPlugin\TestRunnerDSPluginVC6_i.c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# End Source File\r
+# End Group\r
+# Begin Source File\r
+\r
+SOURCE=.\ReadMe.txt\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.rc b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunner.rc
new file mode 100644 (file)
index 0000000..c0d41e1
--- /dev/null
@@ -0,0 +1,229 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE 
+BEGIN
+    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
+    "#define _AFX_NO_OLE_RESOURCES\r\n"
+    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
+    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
+    "\r\n"
+    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
+    "#ifdef _WIN32\r\n"
+    "LANGUAGE 9, 1\r\n"
+    "#pragma code_page(1252)\r\n"
+    "#endif\r\n"
+    "#include ""res\\TestRunner.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
+    "#include ""afxres.rc""         // Standard components\r\n"
+    "#endif\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "040904B0"
+        BEGIN
+            VALUE "CompanyName", "\0"
+            VALUE "FileDescription", "TestRunner DLL\0"
+            VALUE "FileVersion", "1, 0, 0, 1\0"
+            VALUE "InternalName", "TestRunner\0"
+            VALUE "LegalCopyright", "Copyright (C) 1998\0"
+            VALUE "LegalTrademarks", "\0"
+            VALUE "OriginalFilename", "TestRunner.DLL\0"
+            VALUE "ProductName", "TestRunner Dynamic Link Library\0"
+            VALUE "ProductVersion", "1, 0, 0, 1\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x409, 1200
+    END
+END
+
+#endif    // !_MAC
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TEST_HIERARCHY DIALOG DISCARDABLE  0, 0, 259, 250
+STYLE DS_MODALFRAME | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU
+CAPTION "Test hierarchy"
+FONT 8, "MS Sans Serif"
+BEGIN
+    DEFPUSHBUTTON   "Select",IDOK,202,7,50,14
+    CONTROL         "Tree1",IDC_TREE_TEST,"SysTreeView32",TVS_HASBUTTONS | 
+                    TVS_HASLINES | TVS_LINESATROOT | TVS_FULLROWSELECT | 
+                    WS_BORDER | WS_TABSTOP,7,7,189,236
+    PUSHBUTTON      "&Close",IDCANCEL,202,34,50,14
+END
+
+CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TESTRUNNER DIALOG DISCARDABLE  0, 0, 330, 226
+STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CLIPCHILDREN | 
+    WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
+CAPTION "TestRunner"
+FONT 8, "MS Sans Serif"
+BEGIN
+    LTEXT           "&Test:",IDC_STATIC_TEST_NAME,7,7,17,8
+    COMBOBOX        IDC_COMBO_TEST,28,7,235,157,CBS_DROPDOWNLIST | 
+                    WS_VSCROLL | WS_TABSTOP
+    PUSHBUTTON      "&Browse",IDC_BROWSE_TEST,273,7,50,14
+    DEFPUSHBUTTON   "&Run",ID_RUN,273,23,50,14
+    LTEXT           "Progress:",IDC_STATIC_PROGRESS,7,23,33,9
+    LTEXT           "none",IDC_RUNNING_TEST_CASE_LABEL,43,23,220,9
+    LTEXT           "Progress Bar",IDC_STATIC_PROGRESS_BAR,7,34,256,15,NOT 
+                    WS_VISIBLE
+    LTEXT           "Runs:",IDC_STATIC_LABEL_RUNS,7,55,29,10
+    LTEXT           "0",IDC_STATIC_RUNS,48,55,30,8
+    LTEXT           "Errors:",IDC_STATIC_LABEL_ERRORS,89,55,29,10
+    LTEXT           "0",IDC_STATIC_ERRORS,127,55,19,8
+    LTEXT           "Failures:",IDC_STATIC_LABEL_FAILURES,174,55,29,10
+    LTEXT           "0",IDC_STATIC_FAILURES,212,55,19,8
+    LTEXT           "&Errors and Failures:",IDC_STATIC,7,70,67,9
+    CONTROL         "List1",IDC_LIST,"SysListView32",LVS_REPORT | 
+                    LVS_SINGLESEL | LVS_SHOWSELALWAYS | WS_BORDER | 
+                    WS_TABSTOP,7,81,257,60
+    LTEXT           "&Details:",IDC_STATIC_DETAILS,7,145,24,8
+    EDITTEXT        IDC_DETAILS,7,154,316,48,ES_MULTILINE | ES_AUTOVSCROLL | 
+                    ES_AUTOHSCROLL | ES_READONLY
+    CONTROL         "&Autorun at startup",IDC_CHECK_AUTORUN,"Button",
+                    BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,273,52,49,19
+    PUSHBUTTON      "&Stop",ID_STOP,273,82,50,14
+    PUSHBUTTON      "&Close",IDOK,273,98,50,14
+    EDITTEXT        IDC_EDIT_TIME,7,206,316,13,ES_AUTOHSCROLL | ES_READONLY
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+CPP_UNIT_TEST_RUNNER_IDB_TEST_TYPE BITMAP  DISCARDABLE     "res\\test_type.bmp"
+CPP_UNIT_TEST_RUNNER_IDB_ERROR_TYPE BITMAP  DISCARDABLE     "res\\errortype.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Accelerator
+//
+
+IDR_ACCELERATOR_TEST_RUNNER ACCELERATORS DISCARDABLE 
+BEGIN
+    "Q",            ID_QUIT_APPLICATION,    VIRTKEY, NOINVERT
+    VK_SPACE,       ID_RUN,                 VIRTKEY, NOINVERT
+END
+
+#endif    // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// French (France) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
+#ifdef _WIN32
+LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE 
+BEGIN
+    IDS_ERROR_SELECT_TEST   "You must select a test!"
+    IDS_ERRORLIST_TYPE      "Type"
+    IDS_ERRORLIST_NAME      "Name"
+    IDS_ERRORLIST_FAILED_CONDITION "Failed Condition"
+    IDS_ERRORLIST_LINE_NUMBER "Line Number"
+    IDS_ERRORLIST_FILE_NAME "File Name"
+END
+
+#endif    // French (France) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#define _AFX_NO_SPLITTER_RESOURCES
+#define _AFX_NO_OLE_RESOURCES
+#define _AFX_NO_TRACKER_RESOURCES
+#define _AFX_NO_PROPERTY_RESOURCES
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE 9, 1
+#pragma code_page(1252)
+#endif
+#include "res\TestRunner.rc2"  // non-Microsoft Visual C++ edited resources
+#include "afxres.rc"         // Standard components
+#endif
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerApp.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerApp.cpp
new file mode 100644 (file)
index 0000000..60d0fe9
--- /dev/null
@@ -0,0 +1,56 @@
+// TestRunner.cpp : Defines the initialization routines for the DLL.
+//
+
+#include "stdafx.h"
+#include <afxdllx.h>
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+
+static AFX_EXTENSION_MODULE TestRunnerDLL = { NULL, NULL };
+
+HINSTANCE g_testRunnerResource;
+
+extern "C" int APIENTRY
+DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
+{
+    // Remove this if you use lpReserved
+    UNREFERENCED_PARAMETER(lpReserved);
+
+    if (dwReason == DLL_PROCESS_ATTACH)
+    {
+        TRACE0("TESTRUNNER.DLL Initializing!\n");
+        
+        // Extension DLL one-time initialization
+        if (!AfxInitExtensionModule(TestRunnerDLL, hInstance))
+            return 0;
+
+        // Can't find any other way to have LoadAccelerators working...
+        g_testRunnerResource = TestRunnerDLL.hResource;
+
+        // Insert this DLL into the resource chain
+        // NOTE: If this Extension DLL is being implicitly linked to by
+        //  an MFC Regular DLL (such as an ActiveX Control)
+        //  instead of an MFC application, then you will want to
+        //  remove this line from DllMain and put it in a separate
+        //  function exported from this Extension DLL.  The Regular DLL
+        //  that uses this Extension DLL should then explicitly call that
+        //  function to initialize this Extension DLL.  Otherwise,
+        //  the CDynLinkLibrary object will not be attached to the
+        //  Regular DLL's resource chain, and serious problems will
+        //  result.
+
+        new CDynLinkLibrary(TestRunnerDLL);
+    }
+    else if (dwReason == DLL_PROCESS_DETACH)
+    {
+        TRACE0("TESTRUNNER.DLL Terminating!\n");
+        // Terminate the library before destructors are called
+        AfxTermExtensionModule(TestRunnerDLL);
+    }
+    return 1;   // ok
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerApp.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerApp.h
new file mode 100644 (file)
index 0000000..fa5c78e
--- /dev/null
@@ -0,0 +1,19 @@
+// TestRunner.h : main header file for the TESTRUNNER application
+//
+
+#if !defined(AFX_TESTRUNNER_H)
+#define AFX_TESTRUNNER_H
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#ifndef __AFXWIN_H__
+    #error include 'stdafx.h' before including this file for PCH
+#endif
+
+// Handle to the instance to retreive module resource.
+extern HINSTANCE g_testRunnerResource;
+
+
+#endif // !defined(AFX_TESTRUNNER_H)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerDlg.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerDlg.cpp
new file mode 100644 (file)
index 0000000..b509f53
--- /dev/null
@@ -0,0 +1,674 @@
+// TestRunnerDlg.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "mmsystem.h"
+#include "TestRunnerApp.h"
+#include "TestRunnerDlg.h"
+#include "Resource.h"
+#include "ActiveTest.h"
+#include "ProgressBar.h"
+#include "TreeHierarchyDlg.h"
+#include "ListCtrlFormatter.h"
+#include "ListCtrlSetter.h"
+#include "MfcSynchronizationObject.h"
+#include "ResourceLoaders.h"
+#include <cppunit/TestFailure.h>
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/* Notes:
+ - code duplication between OnOK() and OnQuitApplication()
+ - the threading need to be rewrite, so that GUI update occures in the original
+ thread, not in the thread that is running the tests. This slow down the time
+ needed to run the test much...
+ */
+
+
+/////////////////////////////////////////////////////////////////////////////
+// TestRunnerDlg dialog
+
+const CString TestRunnerDlg::ms_cppunitKey( "CppUnit" );
+
+
+TestRunnerDlg::TestRunnerDlg( TestRunnerModel *model,
+                              int nDialogResourceId,
+                              CWnd* pParent )
+    : cdxCDynamicDialog( nDialogResourceId, pParent )
+{
+  ASSERT(0); // this constructor should not be used because of possible resource problems
+             // => use the constructor with the string parameter
+  init(model);
+}
+
+TestRunnerDlg::TestRunnerDlg( TestRunnerModel *model,
+                              const TCHAR* szDialogResourceId,
+                              CWnd* pParent )
+    : cdxCDynamicDialog( szDialogResourceId == NULL ? 
+                                _T("CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TESTRUNNER")
+                              : szDialogResourceId, 
+                         pParent)
+{
+  init(model);
+}
+
+void
+TestRunnerDlg::init(TestRunnerModel *model)
+{
+  m_model = model;
+
+  //{{AFX_DATA_INIT(TestRunnerDlg)
+    m_bAutorunAtStartup = FALSE;
+  //}}AFX_DATA_INIT
+
+  m_testsProgress     = 0;
+  m_selectedTest      = 0;
+  m_bAutorunAtStartup = true;
+  m_bIsRunning = false;
+
+  ModifyFlags( flSWPCopyBits, 0 );      // anti-flickering option for resizing
+}
+
+void 
+TestRunnerDlg::DoDataExchange(CDataExchange* pDX)
+{
+  cdxCDynamicDialog::DoDataExchange(pDX);
+  //{{AFX_DATA_MAP(TestRunnerDlg)
+    DDX_Control(pDX, IDC_DETAILS, m_details);
+    DDX_Control(pDX, IDC_LIST, m_listCtrl);
+    DDX_Control(pDX, IDOK, m_buttonClose);
+    DDX_Control(pDX, ID_STOP, m_buttonStop);
+    DDX_Control(pDX, ID_RUN, m_buttonRun);
+    DDX_Control(pDX, IDC_BROWSE_TEST, m_buttonBrowse);
+    DDX_Check(pDX, IDC_CHECK_AUTORUN, m_bAutorunAtStartup);
+       //}}AFX_DATA_MAP
+}
+
+
+BEGIN_MESSAGE_MAP(TestRunnerDlg, cdxCDynamicDialog)
+  //{{AFX_MSG_MAP(TestRunnerDlg)
+  ON_BN_CLICKED(ID_RUN, OnRun)
+  ON_BN_CLICKED(ID_STOP, OnStop)
+  ON_BN_CLICKED(IDC_BROWSE_TEST, OnBrowseTest)
+  ON_COMMAND(ID_QUIT_APPLICATION, OnQuitApplication)
+  ON_WM_CLOSE()
+       ON_WM_SIZE()
+       ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST, OnSelectedFailureChange)
+       ON_CBN_SELCHANGE(IDC_COMBO_TEST, OnSelectTestInHistoryCombo)
+       //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// TestRunnerDlg message handlers
+
+BOOL 
+TestRunnerDlg::OnInitDialog() 
+{
+  cdxCDynamicDialog::OnInitDialog();
+
+#ifdef CPPUNIT_SUBCLASSING_TESTRUNNERDLG_BUILD
+  m_hAccelerator = ::LoadAccelerators( AfxGetResourceHandle(),
+#else
+  m_hAccelerator = ::LoadAccelerators( g_testRunnerResource,
+#endif
+                                       MAKEINTRESOURCE( IDR_ACCELERATOR_TEST_RUNNER ) );
+// It always fails!!! I don't understand why. Complain about not finding the resource name!
+  ASSERT( m_hAccelerator !=NULL );
+  
+  CComboBox   *comboBox = (CComboBox *)GetDlgItem (IDC_COMBO_TEST);
+
+  ASSERT (comboBox);
+
+  VERIFY( m_errorListBitmap.Create( _T("CPP_UNIT_TEST_RUNNER_IDB_ERROR_TYPE"), 
+                                    16, 1, 
+                                    RGB( 255,0,255 ) ) );
+
+  m_testsProgress = new ProgressBar();
+  m_testsProgress->Create( NULL, NULL, WS_CHILD, CRect(), this, 0 );
+  m_testsProgress->ShowWindow( SW_SHOW );
+  m_testsProgress->MoveWindow( getItemClientRect( IDC_STATIC_PROGRESS_BAR ) );
+
+  initializeLayout();
+  loadSettings();
+  initializeFixedSizeFont();
+  m_details.SetFont( &m_fixedSizeFont );  // Does not work. Need to investigate...
+      
+  m_listCtrl.SetImageList( &m_errorListBitmap, LVSIL_SMALL );
+  m_listCtrl.SetExtendedStyle( m_listCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT );
+
+  int total_col_1_4 = m_settings.col_1 + m_settings.col_2 + 
+                     m_settings.col_3 + m_settings.col_4;
+
+  CRect listBounds;
+  m_listCtrl.GetClientRect(&listBounds);
+  int col_5_width = listBounds.Width() - total_col_1_4; // 5th column = rest of listview space
+  ListCtrlFormatter formatter( m_listCtrl );
+  formatter.AddColumn( loadCString(IDS_ERRORLIST_TYPE), m_settings.col_1, LVCFMT_LEFT, 0 );
+  formatter.AddColumn( loadCString(IDS_ERRORLIST_NAME), m_settings.col_2, LVCFMT_LEFT, 1 );
+  formatter.AddColumn( loadCString(IDS_ERRORLIST_FAILED_CONDITION), m_settings.col_3, LVCFMT_LEFT, 2 );
+  m_listCtrl.setLineNumberSubItem( formatter.GetNextColumnIndex() );
+  formatter.AddColumn( loadCString(IDS_ERRORLIST_LINE_NUMBER), m_settings.col_4, LVCFMT_LEFT, 3 );
+  m_listCtrl.setFileNameSubItem( formatter.GetNextColumnIndex() );
+  formatter.AddColumn( loadCString(IDS_ERRORLIST_FILE_NAME), col_5_width, LVCFMT_LEFT, 4 );
+
+  reset ();
+  updateHistoryCombo();
+  UpdateData( FALSE );
+
+  updateListColumnSize();
+
+  m_buttonRun.SetFocus();
+
+  if ( m_bAutorunAtStartup )
+    OnRun();
+  
+  return FALSE;  // return TRUE unless you set the focus to a control
+                 // EXCEPTION: OCX Property Pages should return FALSE
+}
+
+
+TestRunnerDlg::~TestRunnerDlg()
+{ 
+  freeState();
+  delete m_testsProgress;
+}
+
+
+void 
+TestRunnerDlg::OnRun() 
+{
+  if ( m_bIsRunning )
+    return;
+
+  m_selectedTest = m_model->selectedTest();
+
+  if ( m_selectedTest == 0 )
+    return;
+
+  freeState(); 
+  reset();
+
+  beRunning();
+
+  int numberOfTests = m_selectedTest->countTestCases();
+
+  m_testsProgress->start( numberOfTests );
+
+  
+  m_result = new CPPUNIT_NS::TestResultCollector( new MfcSynchronizationObject() );
+  m_testObserver = new CPPUNIT_NS::TestResult( new MfcSynchronizationObject() );
+  m_testObserver->addListener( m_result );
+  m_testObserver->addListener( this );
+  m_activeTest = new ActiveTest( m_selectedTest );
+
+  m_testStartTime = timeGetTime();
+
+  m_activeTest->run( m_testObserver );
+
+  m_testEndTime = timeGetTime();
+}
+
+
+void 
+TestRunnerDlg::addListEntry( const CPPUNIT_NS::TestFailure &failure )
+{
+  CListCtrl *listCtrl = (CListCtrl *)GetDlgItem (IDC_LIST);
+  int currentEntry = m_result->testErrors() + 
+                     m_result->testFailures() -1;
+
+  ErrorTypeBitmaps errorType;
+  if ( failure.isError() )
+    errorType = errorTypeError;
+  else
+    errorType = errorTypeFailure;
+
+  ListCtrlSetter setter( *listCtrl );
+  setter.insertLine( currentEntry );
+  setter.addSubItem( failure.isError() ? _T("Error") : _T("Failure"), errorType );
+
+  // Set test name
+  setter.addSubItem( failure.failedTestName().c_str(), errorType );
+
+  // Set the asserted text
+  CString message( failure.thrownException()->message().shortDescription().c_str() );
+  message.Replace( '\n', ' ' );   // should only print the short description there,
+  setter.addSubItem( message );   // and dump the detail on an edit control when clicked.
+
+  // Set the line number
+  if ( failure.sourceLine().isValid() )
+  {
+    CString lineNumber;
+    lineNumber.Format( _T("%ld"), failure.sourceLine().lineNumber() );
+    setter.addSubItem( lineNumber );
+  }
+  else
+    setter.addSubItem( _T("") );
+
+  // Set the file name
+  setter.addSubItem( failure.sourceLine().fileName().c_str() );
+
+  if ( !listCtrl->GetFirstSelectedItemPosition() )
+  {
+    // Select first entry => display details of first entry.
+    listCtrl->SetItemState( currentEntry, LVIS_SELECTED, LVIS_SELECTED );
+    listCtrl->SetFocus();   // Does not work ?!?
+  }
+
+  listCtrl->RedrawItems( currentEntry, currentEntry );
+  listCtrl->UpdateWindow();
+}
+
+
+void 
+TestRunnerDlg::startTest( CPPUNIT_NS::Test *test )
+{
+  CWnd *runningTestCaseLabel = GetDlgItem(IDC_RUNNING_TEST_CASE_LABEL);
+  if ( runningTestCaseLabel )
+    runningTestCaseLabel->SetWindowText( CString( test->getName().c_str() ) );
+}
+
+
+void 
+TestRunnerDlg::addFailure( const CPPUNIT_NS::TestFailure &failure )
+{
+  addListEntry( failure );
+  if ( failure.isError() )
+    m_errors++;
+  else
+    m_failures++;
+
+  updateCountsDisplay();
+}
+
+
+void 
+TestRunnerDlg::endTest( CPPUNIT_NS::Test *test )
+{
+  if ( m_selectedTest == 0 )
+    return;
+
+  m_testsRun++;
+  updateCountsDisplay();
+  m_testsProgress->step( m_failures == 0  &&  m_errors == 0 );
+
+  m_testEndTime = timeGetTime();
+
+  updateCountsDisplay();
+
+  if ( m_testsRun >= m_selectedTest->countTestCases() )
+    beIdle ();
+}
+
+
+void 
+TestRunnerDlg::beRunning()
+{
+  m_bIsRunning = true;
+  m_buttonRun.EnableWindow( FALSE );
+  m_buttonClose.EnableWindow( FALSE );
+  m_buttonBrowse.EnableWindow( FALSE );
+
+//    m_buttonRun.SetButtonStyle( m_buttonRun.GetButtonStyle() & ~BS_DEFPUSHBUTTON );
+//    m_buttonStop.SetButtonStyle( m_buttonStop.GetButtonStyle() | BS_DEFPUSHBUTTON );
+}
+
+
+void 
+TestRunnerDlg::beIdle()
+{
+  m_bIsRunning = false;
+  m_buttonRun.EnableWindow( TRUE );
+  m_buttonBrowse.EnableWindow( TRUE );
+  m_buttonClose.EnableWindow( TRUE );
+
+  m_buttonRun.SetButtonStyle( m_buttonRun.GetButtonStyle() | BS_DEFPUSHBUTTON );
+//    m_buttonStop.SetButtonStyle( m_buttonStop.GetButtonStyle() & ~BS_DEFPUSHBUTTON );
+}
+
+
+void 
+TestRunnerDlg::beRunDisabled()
+{
+  m_bIsRunning = false;
+  m_buttonRun.EnableWindow( FALSE );
+  m_buttonBrowse.EnableWindow( FALSE );
+  m_buttonStop.EnableWindow( FALSE );
+  m_buttonClose.EnableWindow( TRUE );
+
+//    m_buttonRun.SetButtonStyle( m_buttonRun.GetButtonStyle() | BS_DEFPUSHBUTTON );
+//    m_buttonStop.SetButtonStyle( m_buttonStop.GetButtonStyle() & ~BS_DEFPUSHBUTTON );
+}
+
+
+void 
+TestRunnerDlg::freeState()
+{
+  delete m_activeTest;
+  delete m_result;
+  delete m_testObserver;
+}
+
+
+void 
+TestRunnerDlg::reset()
+{
+  m_testsRun = 0;
+  m_errors = 0;
+  m_failures = 0;
+  m_testEndTime = m_testStartTime;
+
+  updateCountsDisplay();
+
+  m_activeTest = NULL;
+  m_result = NULL;
+  m_testObserver = NULL;
+
+  CListCtrl *listCtrl = (CListCtrl *)GetDlgItem (IDC_LIST);
+
+  listCtrl->DeleteAllItems();
+  m_testsProgress->reset();
+  displayFailureDetailsFor( -1 );
+}
+
+
+void 
+TestRunnerDlg::updateCountsDisplay()
+{
+  CStatic *statTestsRun = (CStatic *)GetDlgItem( IDC_STATIC_RUNS );
+  CStatic *statErrors = (CStatic *)GetDlgItem( IDC_STATIC_ERRORS );
+  CStatic *statFailures = (CStatic *)GetDlgItem( IDC_STATIC_FAILURES );
+  CEdit *editTime = (CEdit *)GetDlgItem( IDC_EDIT_TIME );
+
+  CString argumentString;
+
+  argumentString.Format( _T("%d"), m_testsRun );
+  statTestsRun->SetWindowText (argumentString);
+
+  argumentString.Format( _T("%d"), m_errors );
+  statErrors->SetWindowText( argumentString );
+
+  argumentString.Format( _T("%d"), m_failures );
+  statFailures->SetWindowText( argumentString );
+
+  argumentString.Format( _T("Execution time: %3.3lf seconds"), 
+                         (m_testEndTime - m_testStartTime) / 1000.0 );
+  editTime->SetWindowText( argumentString );
+}
+
+
+void 
+TestRunnerDlg::OnStop() 
+{
+  if ( m_testObserver )
+    m_testObserver->stop ();
+
+  beIdle ();
+}
+
+
+void 
+TestRunnerDlg::OnOK() 
+{
+  if ( m_testObserver )
+    m_testObserver->stop ();
+
+  UpdateData();
+  saveSettings();
+
+  cdxCDynamicDialog::OnOK ();
+}
+
+
+void 
+TestRunnerDlg::OnSelectTestInHistoryCombo() 
+{
+  unsigned int currentSelection = getHistoryCombo()->GetCurSel ();
+
+  if ( currentSelection >= 0  &&
+       currentSelection < m_model->history().size() )
+  {
+    CPPUNIT_NS::Test *selectedTest = m_model->history()[currentSelection];
+    m_model->selectHistoryTest( selectedTest );
+    updateHistoryCombo();
+    beIdle();
+  }
+  else
+    beRunDisabled();
+}
+
+
+void
+TestRunnerDlg::updateHistoryCombo()
+{
+  getHistoryCombo()->LockWindowUpdate();
+
+  getHistoryCombo()->ResetContent();
+
+  const TestRunnerModel::History &history = m_model->history();
+  for ( TestRunnerModel::History::const_iterator it = history.begin(); 
+        it != history.end(); 
+        ++it )
+  {
+    CPPUNIT_NS::Test *test = *it;
+    getHistoryCombo()->AddString( CString(test->getName().c_str()) );
+  }
+
+  if ( history.size() > 0 )
+  {
+    getHistoryCombo()->SetCurSel( 0 );
+    beIdle();
+  }
+  else
+  {
+    beRunDisabled();
+    m_buttonBrowse.EnableWindow( TRUE );
+       }
+
+  getHistoryCombo()->UnlockWindowUpdate();
+}
+
+
+void 
+TestRunnerDlg::OnBrowseTest() 
+{
+  TreeHierarchyDlg dlg;
+  dlg.setRootTest( m_model->rootTest() );
+  if ( dlg.DoModal() == IDOK )
+  {
+    m_model->selectHistoryTest( dlg.getSelectedTest() );
+    updateHistoryCombo();
+  }
+}
+
+
+BOOL 
+TestRunnerDlg::PreTranslateMessage(MSG* pMsg) 
+{
+  if ( ::TranslateAccelerator( m_hWnd,
+                               m_hAccelerator,
+                               pMsg ) )
+  {
+    return TRUE;
+  }
+  return cdxCDynamicDialog::PreTranslateMessage(pMsg);
+}
+
+
+CComboBox *
+TestRunnerDlg::getHistoryCombo()
+{
+  CComboBox   *comboBox = (CComboBox *)GetDlgItem (IDC_COMBO_TEST);
+  ASSERT (comboBox);
+  return comboBox;
+}
+
+
+void
+TestRunnerDlg::loadSettings()
+{
+  m_model->loadSettings(m_settings);
+  RestoreWindowPosition( TestRunnerModel::settingKey, 
+                         TestRunnerModel::settingMainDialogKey );
+
+
+  m_bAutorunAtStartup = m_settings.autorunOnLaunch;
+}
+
+
+void
+TestRunnerDlg::saveSettings()
+{
+  m_settings.autorunOnLaunch = ( m_bAutorunAtStartup != 0 );
+  StoreWindowPosition( TestRunnerModel::settingKey, 
+                       TestRunnerModel::settingMainDialogKey );
+  
+  m_settings.col_1 = m_listCtrl.GetColumnWidth(0);
+  m_settings.col_2 = m_listCtrl.GetColumnWidth(1);
+  m_settings.col_3 = m_listCtrl.GetColumnWidth(2);
+  m_settings.col_4 = m_listCtrl.GetColumnWidth(3);
+
+  m_model->saveSettings(m_settings);
+}
+
+
+void 
+TestRunnerDlg::OnQuitApplication() 
+{
+  if ( m_testObserver )
+    m_testObserver->stop();
+
+  UpdateData();
+  saveSettings();
+  
+  CWinApp *app = AfxGetApp();
+  ASSERT( app != NULL );
+  app->PostThreadMessage( WM_QUIT, 0, 0 );
+}
+
+
+TestRunnerModel &
+TestRunnerDlg::model()
+{
+  ASSERT( m_model != NULL );
+  return *m_model;
+}
+
+
+void 
+TestRunnerDlg::OnClose() 
+{
+       OnOK();
+}
+
+
+CRect 
+TestRunnerDlg::getItemWindowRect( unsigned int itemId )
+{
+  CWnd * pItem = GetDlgItem( itemId );
+  CRect rect;
+  if ( pItem )
+    pItem->GetWindowRect( &rect );
+  return rect;
+}
+
+
+CRect 
+TestRunnerDlg::getItemClientRect( unsigned int itemId )
+{
+  CRect rect = getItemWindowRect( itemId );
+  if ( !rect.IsRectNull() )
+  {
+    CPoint clientTopLeft = rect.TopLeft();
+    ScreenToClient( &clientTopLeft );
+    rect = CRect( clientTopLeft, rect.Size() );
+  }
+
+  return rect;
+}
+
+
+void 
+TestRunnerDlg::initializeLayout()
+{
+  // see DynamicWindow/doc for documentation
+  const int listGrowthRatio = 30;
+  AddSzXControl( IDC_COMBO_TEST, mdResize );
+  AddSzXControl( IDC_BROWSE_TEST, mdRepos );
+  AddSzXControl( IDC_RUNNING_TEST_CASE_LABEL, mdResize );
+  AddSzXControl( ID_RUN, mdRepos );
+  AddSzXControl( *m_testsProgress, mdResize );
+  AddSzXControl( IDC_CHECK_AUTORUN, mdRepos );
+  AddSzControl( IDC_LIST, 0, 0, 100, listGrowthRatio );
+  AddSzXControl( ID_STOP, mdRepos );
+  AddSzXControl( IDOK, mdRepos );
+  AddSzYControl( IDC_STATIC_DETAILS, listGrowthRatio, listGrowthRatio );
+  AddSzControl( IDC_DETAILS, 0, listGrowthRatio, 100, 100 );
+  AddSzControl( IDC_EDIT_TIME, mdResize, mdRepos );
+}
+
+
+void 
+TestRunnerDlg::OnSize( UINT nType, int cx, int cy ) 
+{
+       cdxCDynamicDialog::OnSize(nType, cx, cy);
+       updateListColumnSize();
+}
+
+
+void 
+TestRunnerDlg::updateListColumnSize()
+{
+  if ( !m_listCtrl.GetSafeHwnd() )
+    return;
+
+  // resize to fit last column
+  CRect listBounds = getItemClientRect( IDC_LIST );
+  
+  int width_1_4 = 0;
+  for (int i = 0; i < 4; ++i)
+    width_1_4 += m_listCtrl.GetColumnWidth( i );
+  
+  // the 4 offset is so no horiz scroll bar will appear
+  m_listCtrl.SetColumnWidth(4, listBounds.Width() - width_1_4 - 4); 
+}
+
+
+void 
+TestRunnerDlg::OnSelectedFailureChange( NMHDR* pNMHDR, 
+                                        LRESULT* pResult )
+{
+       NM_LISTVIEW *pNMListView = (NM_LISTVIEW*)pNMHDR;
+
+  if ( (pNMListView->uNewState & LVIS_SELECTED) != 0 )  // item selected
+    displayFailureDetailsFor( pNMListView->iItem );
+       
+       *pResult = 0;
+}
+
+
+void 
+TestRunnerDlg::displayFailureDetailsFor( unsigned int failureIndex )
+{
+  CString details;
+  if ( m_result  &&  failureIndex < m_result->failures().size() )
+    details = m_result->failures()[ failureIndex ]->thrownException()->what();
+
+  details.Replace( _T("\n"), _T("\r\n") );
+
+  m_details.SetWindowText( details );
+}
+
+
+void 
+TestRunnerDlg::initializeFixedSizeFont()
+{
+  LOGFONT font;
+  GetFont()->GetLogFont( &font );
+  font.lfPitchAndFamily = FIXED_PITCH | //VARIABLE_PITCH
+                          (font.lfPitchAndFamily & ~15);   // font family
+  m_fixedSizeFont.CreateFontIndirect( &font );
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerDlg.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerDlg.h
new file mode 100644 (file)
index 0000000..3da294f
--- /dev/null
@@ -0,0 +1,170 @@
+#if !defined(AFX_TESTRUNNERDLG_H)
+#define AFX_TESTRUNNERDLG_H
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+// TestRunnerDlg.h : header file
+//
+
+/* Refer to MSDN documentation:
+   mk:@MSITStore:h:\DevStudio\MSDN\98VSa\1036\vcmfc.chm::/html/_mfcnotes_tn033.htm#_mfcnotes_how_to_write_an_mfc_extension_dll
+   to know how to write and use MFC extension DLL
+   Can be found in the index with "mfc extension"
+   =>
+   Using:
+   - your application must link  Multithreaded MFC DLL
+   - memory allocation is done using the same heap
+   - you must define the symbol _AFX_DLL
+   Building:
+   - you must define the symbol _AFX_DLL and _AFX_EXT
+ */
+
+// Define the folowing symbol to subclass TestRunnerDlg
+#ifndef CPPUNIT_SUBCLASSING_TESTRUNNERDLG_BUILD
+#include "resource.h"
+#else
+#define IDD_DIALOG_TESTRUNNER 0
+#endif
+
+#include <vector>
+#include <cppunit/TestSuite.h>
+#include <cppunit/Exception.h>
+#include <cppunit/TestResult.h>
+#include <cppunit/TestListener.h>
+#include <cppunit/TestResultCollector.h>
+
+#include "ActiveTest.h"
+#include "MsDevCallerListCtrl.h"
+#include "TestRunnerModel.h"
+#include "DynamicWindow/cdxCDynamicDialog.h"
+
+class ProgressBar;
+class TestRunnerModel;
+
+
+/////////////////////////////////////////////////////////////////////////////
+// TestRunnerDlg dialog
+
+class TestRunnerDlg : public cdxCDynamicDialog,
+                      public CPPUNIT_NS::TestListener
+{
+public:
+  TestRunnerDlg( TestRunnerModel *model,
+                int nDialogResourceId,
+                CWnd* pParent = NULL);
+  TestRunnerDlg( TestRunnerModel *model,
+                const TCHAR* szDialogResourceId = NULL,
+                CWnd* pParent = NULL);
+  ~TestRunnerDlg();
+
+  // overrided from TestListener;
+  void startTest( CPPUNIT_NS::Test *test );
+  void addFailure( const CPPUNIT_NS::TestFailure &failure );
+  void endTest( CPPUNIT_NS::Test *test );
+
+  // IDD is not use, it is just there for the wizard.
+  //{{AFX_DATA(TestRunnerDlg)
+       CEdit   m_details;
+  MsDevCallerListCtrl m_listCtrl;
+  CButton m_buttonClose;
+  CButton m_buttonStop;
+  CButton m_buttonRun;
+  CButton m_buttonBrowse;
+  BOOL m_bAutorunAtStartup;
+       //}}AFX_DATA
+
+  //{{AFX_VIRTUAL(TestRunnerDlg)
+public:
+  virtual BOOL PreTranslateMessage(MSG* pMsg);
+protected:
+  virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
+  //}}AFX_VIRTUAL
+
+protected:
+
+  //{{AFX_MSG(TestRunnerDlg)
+  virtual BOOL OnInitDialog();
+  afx_msg void OnRun();
+  afx_msg void OnStop();
+  virtual void OnOK();
+  afx_msg void OnBrowseTest();
+  afx_msg void OnQuitApplication();
+  afx_msg void OnClose();
+       afx_msg void OnSize(UINT nType, int cx, int cy);
+       afx_msg void OnSelectedFailureChange(NMHDR* pNMHDR, LRESULT* pResult);
+       afx_msg void OnSelectTestInHistoryCombo();
+       //}}AFX_MSG
+  DECLARE_MESSAGE_MAP()
+
+  typedef std::vector<CPPUNIT_NS::Test *> Tests;
+  ProgressBar *m_testsProgress;
+  CPPUNIT_NS::Test *m_selectedTest;
+  ActiveTest *m_activeTest;
+  CPPUNIT_NS::TestResult *m_testObserver;
+  CPPUNIT_NS::TestResultCollector *m_result;
+  int m_testsRun;
+  int m_errors;
+  int m_failures;
+  DWORD m_testStartTime;
+  DWORD m_testEndTime;
+  static const CString ms_cppunitKey;
+  HACCEL m_hAccelerator;
+  bool m_bIsRunning;
+  TestRunnerModel *m_model;
+  CImageList m_errorListBitmap;
+  CFont m_fixedSizeFont;
+
+  enum ErrorTypeBitmaps
+  {
+    errorTypeFailure =0,
+    errorTypeError
+  };
+
+  void addListEntry( const CPPUNIT_NS::TestFailure &failure );
+  void beIdle();
+  void beRunning();
+  void beRunDisabled();
+  void reset();
+  void freeState();
+  void updateCountsDisplay();
+  void setupHistoryCombo();
+  CPPUNIT_NS::Test *findTestByName( std::string name ) const;
+  CPPUNIT_NS::Test *findTestByNameFor( const std::string &name, 
+                                    CPPUNIT_NS::Test *test ) const;
+  void addNewTestToHistory( CPPUNIT_NS::Test *test );
+  void addTestToHistoryCombo( CPPUNIT_NS::Test *test, 
+                              int idx =-1 );
+  void removeTestFromHistory( CPPUNIT_NS::Test *test );
+  CComboBox *getHistoryCombo();
+  void updateSelectedItem();
+  void saveHistory();
+  void loadSettings();
+  void saveSettings();
+  TestRunnerModel &model();
+  void updateHistoryCombo();
+  void displayFailureDetailsFor( unsigned int failureIndex );
+
+  CRect getItemWindowRect( unsigned int itemId );
+  CRect getItemClientRect( unsigned int itemId );
+
+  //CRect getDialogBounds();
+
+  virtual void initializeLayout();
+  void updateListColumnSize();
+  void initializeFixedSizeFont();
+
+
+private:
+  TestRunnerModel::Settings m_settings;
+
+  /// do all initialization, that is usually done in the constructor, so that the
+  /// code is not duplicated in the two constructors
+  void TestRunnerDlg::init(TestRunnerModel *model);
+};
+
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_TESTRUNNERDLG_H)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerModel.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerModel.cpp
new file mode 100644 (file)
index 0000000..a0a44ca
--- /dev/null
@@ -0,0 +1,223 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file TestRunnerModel.cpp for class TestRunnerModel
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/04/26
+// //////////////////////////////////////////////////////////////////////////
+
+#include "StdAfx.h"
+#include "TestRunnerModel.h"
+#include <cppunit/tools/Algorithm.h>
+#include <algorithm>
+#include <stdexcept>
+#include <cppunit/testsuite.h>
+
+
+const CString TestRunnerModel::settingKey( _T("CppUnit") );
+const CString TestRunnerModel::settingMainDialogKey( _T( "MainDialog" ) );
+const CString TestRunnerModel::settingBrowseDialogKey( _T( "BrowseDialog" ) );
+
+
+TestRunnerModel::TestRunnerModel( CPPUNIT_NS::Test *rootTest ) :
+    m_rootTest( rootTest )
+{
+}
+
+
+TestRunnerModel::~TestRunnerModel()
+{
+}
+
+const TestRunnerModel::History &
+TestRunnerModel::history() const
+{
+  return m_history;
+}
+
+
+void 
+TestRunnerModel::selectHistoryTest( CPPUNIT_NS::Test *test )
+{
+   CPPUNIT_NS::removeFromSequence( m_history, test );
+  
+  if ( test != NULL )
+    m_history.push_front( test );
+}
+
+
+CPPUNIT_NS::Test *
+TestRunnerModel::selectedTest() const
+{
+  if ( m_history.size() > 0 )
+    return m_history[0];
+  return NULL;
+}
+
+
+void 
+TestRunnerModel::loadSettings(Settings & s)
+{
+  CWinApp *app = AfxGetApp();
+  ASSERT( app != NULL );
+
+  int autorun = app->GetProfileInt( _T("CppUnit"),
+                                    _T("AutorunAtStartup"),
+                                    1 );
+  s.autorunOnLaunch = (autorun == 1);
+
+  s.col_1 = app->GetProfileInt( _T("CppUnit"), _T("Col_1"), 40 );
+  s.col_2 = app->GetProfileInt( _T("CppUnit"), _T("Col_2"), 40 );
+  s.col_3 = app->GetProfileInt( _T("CppUnit"), _T("Col_3"), 40 );
+  s.col_4 = app->GetProfileInt( _T("CppUnit"), _T("Col_4"), 40 );
+
+  loadHistory();
+}
+
+
+void 
+TestRunnerModel::loadHistory()
+{
+  m_history.clear();
+  int idx = 1;
+  do
+  {
+    CString testName = loadHistoryEntry( idx++ );
+    if ( testName.IsEmpty() )
+      break;
+
+    try
+    {
+      m_history.push_back( m_rootTest->findTest( toAnsiString(testName ) ) );
+    }
+    catch ( std::invalid_argument &)
+    {
+    }
+  }
+  while ( true );
+}
+
+
+CString
+TestRunnerModel::loadHistoryEntry( int idx )
+{
+  CWinApp *app = AfxGetApp();
+  ASSERT( app != NULL );
+
+  return app->GetProfileString( _T("CppUnit"), getHistoryEntryName( idx ) );
+}
+
+
+void 
+TestRunnerModel::saveSettings( const Settings & s )
+{
+  CWinApp *app = AfxGetApp();
+  ASSERT( app != NULL );
+
+  int autorun = s.autorunOnLaunch ? 1 : 0;
+  app->WriteProfileInt( _T("CppUnit"), _T("AutorunAtStartup"), autorun );
+
+  app->WriteProfileInt( _T("CppUnit"), _T("Col_1"),     s.col_1 );
+  app->WriteProfileInt( _T("CppUnit"), _T("Col_2"),     s.col_2 );
+  app->WriteProfileInt( _T("CppUnit"), _T("Col_3"),     s.col_3 );
+  app->WriteProfileInt( _T("CppUnit"), _T("Col_4"),     s.col_4 );
+
+  int idx = 1;
+  for ( History::const_iterator it = m_history.begin(); 
+        it != m_history.end(); 
+        ++it , ++idx )
+  {
+    CPPUNIT_NS::Test *test = *it;
+    saveHistoryEntry( idx, test->getName().c_str() );
+  }
+}
+
+
+void 
+TestRunnerModel::saveHistoryEntry( int idx, 
+                                   CString testName )
+{
+  CWinApp *app = AfxGetApp();
+  ASSERT( app != NULL );
+
+  app->WriteProfileString( _T("CppUnit"),
+                           getHistoryEntryName( idx ),
+                           testName );
+}
+
+
+CString
+TestRunnerModel::getHistoryEntryName( int idx ) const
+{
+  CString entry;
+  entry.Format( _T("HistoryTest%d"), idx );
+  return entry;
+}
+
+
+CPPUNIT_NS::Test *
+TestRunnerModel::rootTest()
+{
+  return m_rootTest;
+}
+
+
+void 
+TestRunnerModel::setRootTest( CPPUNIT_NS::Test *test )
+{
+  m_rootTest = test;
+}
+
+
+CPPUNIT_NS::Test * 
+TestRunnerModel::findTestByName( CString name ) const
+{
+  return findTestByNameFor( name, m_rootTest );
+}
+
+
+CPPUNIT_NS::Test * 
+TestRunnerModel::findTestByNameFor( const CString &name, 
+                                    CPPUNIT_NS::Test *test ) const
+{
+  if ( name == test->getName().c_str() )
+    return test;
+
+  CPPUNIT_NS::TestSuite *suite = dynamic_cast<CPPUNIT_NS::TestSuite *>(test);
+  if ( suite == NULL )
+    return NULL;
+
+  const std::vector<CPPUNIT_NS::Test *> &tests = suite->getTests();
+  for ( std::vector<CPPUNIT_NS::Test *>::const_iterator it = tests.begin(); 
+        it != tests.end(); 
+        ++it )
+  {
+    CPPUNIT_NS::Test *testFound = findTestByNameFor( name, *it );
+    if ( testFound != NULL )
+      return testFound;
+  }
+  return NULL;
+}
+
+
+// Utility method, should be moved somewhere else...
+std::string 
+TestRunnerModel::toAnsiString( const CString &text )
+{
+#ifdef _UNICODE
+  int bufferLength = ::WideCharToMultiByte( CP_THREAD_ACP, 0, 
+                                            text, text.GetLength(),
+                                            NULL, 0, NULL, NULL ) +1;
+  char *ansiString = new char[bufferLength];
+  ::WideCharToMultiByte( CP_THREAD_ACP, 0, 
+                         text, text.GetLength(),
+                         ansiString, bufferLength, 
+                                            NULL,
+                                            NULL );
+
+  std::string str( ansiString, bufferLength-1 );
+  delete[] ansiString;
+
+  return str;
+#else
+  return std::string( (LPCTSTR)text );
+#endif
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerModel.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/TestRunnerModel.h
new file mode 100644 (file)
index 0000000..ed12380
--- /dev/null
@@ -0,0 +1,87 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestRunnerModel.h for class TestRunnerModel
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/04/26
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTRUNNERMODEL_H
+#define TESTRUNNERMODEL_H
+
+#include <deque>
+#include <cppunit/Test.h>
+
+
+/*! \class TestRunnerModel
+ * \brief This class represents a model for the test runner.
+ */
+class TestRunnerModel
+{
+public:
+  static const CString settingKey;
+  static const CString settingMainDialogKey;
+  static const CString settingBrowseDialogKey;
+
+  struct Settings
+  {
+    bool autorunOnLaunch;
+    int  col_1; // 1st column width in list view
+    int  col_2; // 2nd column width in list view
+    int  col_3; // 3rd column width in list view
+    int  col_4; // 4th column width in list view  
+  };
+
+  typedef std::deque<CPPUNIT_NS::Test *> History;
+
+  /*! Constructs a TestRunnerModel object.
+   */
+  TestRunnerModel( CPPUNIT_NS::Test *rootTest );
+
+  /*! Destructor.
+   */
+  virtual ~TestRunnerModel();
+
+  virtual void setRootTest( CPPUNIT_NS::Test *rootTest );
+
+  void loadSettings(Settings & s);
+  void saveSettings(const Settings & s);
+
+  const History &history() const;
+  void selectHistoryTest( CPPUNIT_NS::Test *test );
+  CPPUNIT_NS::Test *selectedTest() const;
+
+  CPPUNIT_NS::Test *rootTest();
+
+protected:
+  void loadHistory();
+  CString loadHistoryEntry( int idx );
+  CPPUNIT_NS::Test *findTestByName( CString name ) const;
+  CPPUNIT_NS::Test *findTestByNameFor( const CString &name, 
+                                    CPPUNIT_NS::Test *test ) const;
+
+  void saveHistoryEntry( int idx, 
+                         CString testName );
+
+  CString getHistoryEntryName( int idx ) const;
+
+  static std::string toAnsiString( const CString &text );
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestRunnerModel( const TestRunnerModel &copy );
+
+  /// Prevents the use of the copy operator.
+  TestRunnerModel &operator =( const TestRunnerModel &copy );
+
+protected:
+  History m_history;
+
+  CPPUNIT_NS::Test *m_rootTest;
+};
+
+
+
+// Inlines methods for TestRunnerModel:
+// ------------------------------------
+
+
+
+#endif  // TESTRUNNERMODEL_H
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TreeHierarchyDlg.cpp b/lib/cppunit-1.10.0/src/msvc6/testrunner/TreeHierarchyDlg.cpp
new file mode 100644 (file)
index 0000000..1c0b671
--- /dev/null
@@ -0,0 +1,208 @@
+// TreeHierarchyDlg.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include "resource.h"
+#include "TreeHierarchyDlg.h"
+#include "TestRunnerModel.h"
+#include "ResourceLoaders.h"
+#include <algorithm>
+
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// TreeHierarchyDlg dialog
+
+
+TreeHierarchyDlg::TreeHierarchyDlg(CWnd* pParent )
+       : cdxCDynamicDialog(_T("CPP_UNIT_TEST_RUNNER_IDD_DIALOG_TEST_HIERARCHY"), pParent)
+  , m_selectedTest( NULL )
+{
+  ModifyFlags( flSWPCopyBits, 0 );      // anti-flickering option for resizing
+
+       //{{AFX_DATA_INIT(TreeHierarchyDlg)
+               // NOTE: the ClassWizard will add member initialization here
+       //}}AFX_DATA_INIT
+}
+
+
+void 
+TreeHierarchyDlg::DoDataExchange(CDataExchange* pDX)
+{
+       cdxCDynamicDialog::DoDataExchange(pDX);
+       //{{AFX_DATA_MAP(TreeHierarchyDlg)
+       DDX_Control(pDX, IDC_TREE_TEST, m_treeTests);
+       //}}AFX_DATA_MAP
+}
+
+
+BEGIN_MESSAGE_MAP(TreeHierarchyDlg, cdxCDynamicDialog)
+       //{{AFX_MSG_MAP(TreeHierarchyDlg)
+       //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+
+
+void 
+TreeHierarchyDlg::setRootTest( CPPUNIT_NS::Test *test )
+{
+  m_rootTest = test;
+}
+
+
+BOOL 
+TreeHierarchyDlg::OnInitDialog() 
+{
+  cdxCDynamicDialog::OnInitDialog();
+       
+  fillTree();
+  initializeLayout();
+  RestoreWindowPosition( TestRunnerModel::settingKey, 
+                         TestRunnerModel::settingBrowseDialogKey );
+       
+  return TRUE;
+}
+
+
+void 
+TreeHierarchyDlg::initializeLayout()
+{
+  // see DynamicWindow/doc for documentation
+  AddSzControl( IDC_TREE_TEST, mdResize, mdResize );
+  AddSzControl( IDOK, mdRepos, mdNone );
+  AddSzControl( IDCANCEL, mdRepos, mdNone );
+}
+
+
+void 
+TreeHierarchyDlg::fillTree()
+{
+  VERIFY( m_imageList.Create( _T("CPP_UNIT_TEST_RUNNER_IDB_TEST_TYPE"), 
+                              16, 1, RGB( 255,0,255 ) ) );
+
+  m_treeTests.SetImageList( &m_imageList, TVSIL_NORMAL );
+
+  HTREEITEM hSuite = addTest( m_rootTest, TVI_ROOT );
+  m_treeTests.Expand( hSuite, TVE_EXPAND );
+}
+
+
+HTREEITEM
+TreeHierarchyDlg::addTest( CPPUNIT_NS::Test *test, 
+                           HTREEITEM hParent )
+{
+  int testType = isSuite( test ) ? imgSuite : imgUnitTest;
+  HTREEITEM hItem = m_treeTests.InsertItem( CString(test->getName().c_str()),
+                                            testType,
+                                            testType,
+                                            hParent );
+  if ( hItem != NULL )
+  {
+    VERIFY( m_treeTests.SetItemData( hItem, (DWORD)test ) );
+    if ( isSuite( test ) )
+      addTestSuiteChildrenTo( test, hItem );
+  }
+  return hItem;
+}
+
+
+void 
+TreeHierarchyDlg::addTestSuiteChildrenTo( CPPUNIT_NS::Test *suite,
+                                          HTREEITEM hItemSuite )
+{
+  Tests tests;
+  int childIndex = 0;
+  for ( ; childIndex < suite->getChildTestCount(); ++childIndex )
+    tests.push_back( suite->getChildTestAt( childIndex ) );
+  sortByName( tests );
+
+  for ( childIndex = 0; childIndex < suite->getChildTestCount(); ++childIndex )
+    addTest( suite->getChildTestAt( childIndex ), hItemSuite );
+}
+
+
+bool 
+TreeHierarchyDlg::isSuite( CPPUNIT_NS::Test *test )
+{
+  return ( test->getChildTestCount() > 0  ||    // suite with test
+           test->countTestCases() == 0 );       // empty suite
+}
+
+
+struct PredSortTest
+{
+  bool operator()( CPPUNIT_NS::Test *test1, CPPUNIT_NS::Test *test2 ) const
+  {
+    bool isTest1Suite = TreeHierarchyDlg::isSuite( test1 );
+    bool isTest2Suite = TreeHierarchyDlg::isSuite( test2 );
+    if ( isTest1Suite  &&  !isTest2Suite )
+      return true;
+    if ( isTest1Suite  &&  isTest2Suite )
+      return test1->getName() < test2->getName();
+    return false;
+  }
+};
+
+void 
+TreeHierarchyDlg::sortByName( Tests &tests ) const
+{
+  std::stable_sort( tests.begin(), tests.end(), PredSortTest() );
+}
+
+
+void 
+TreeHierarchyDlg::OnOK() 
+{
+  CPPUNIT_NS::Test *test = findSelectedTest();
+  if ( test == NULL )
+  {
+    AfxMessageBox( loadCString(IDS_ERROR_SELECT_TEST), MB_OK );
+    return;
+  }
+
+  m_selectedTest = test;
+  storeDialogBounds();
+  cdxCDynamicDialog::OnOK();
+}
+
+
+void 
+TreeHierarchyDlg::OnCancel() 
+{
+  storeDialogBounds();
+       cdxCDynamicDialog::OnCancel();
+}
+
+
+CPPUNIT_NS::Test *
+TreeHierarchyDlg::findSelectedTest()
+{
+  HTREEITEM hItem = m_treeTests.GetSelectedItem();
+  if ( hItem != NULL )
+  {
+    DWORD data;
+    VERIFY( data = m_treeTests.GetItemData( hItem ) );
+    return reinterpret_cast<CPPUNIT_NS::Test *>( data );
+  }
+  return NULL;
+}
+
+
+CPPUNIT_NS::Test *
+TreeHierarchyDlg::getSelectedTest() const
+{
+  return m_selectedTest;
+}
+
+
+void 
+TreeHierarchyDlg::storeDialogBounds()
+{
+  StoreWindowPosition( TestRunnerModel::settingKey, 
+                       TestRunnerModel::settingBrowseDialogKey );
+}
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/TreeHierarchyDlg.h b/lib/cppunit-1.10.0/src/msvc6/testrunner/TreeHierarchyDlg.h
new file mode 100644 (file)
index 0000000..b49126a
--- /dev/null
@@ -0,0 +1,81 @@
+#if !defined(AFX_TREEHIERARCHYDLG_H__81E65BC0_1F91_482C_A8BD_C1EC305CD6DA__INCLUDED_)
+#define AFX_TREEHIERARCHYDLG_H__81E65BC0_1F91_482C_A8BD_C1EC305CD6DA__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+// TreeHierarchyDlg.h : header file
+//
+
+#include <cppunit/Test.h>
+#include <vector>
+#include "DynamicWindow/cdxCDynamicDialog.h"
+
+
+/////////////////////////////////////////////////////////////////////////////
+// TreeHierarchyDlg dialog
+
+class TreeHierarchyDlg : public cdxCDynamicDialog
+{
+// Construction
+public:
+       TreeHierarchyDlg(CWnd* pParent = NULL);   // standard constructor
+
+  void setRootTest( CPPUNIT_NS::Test *test );
+  CPPUNIT_NS::Test *getSelectedTest() const;
+
+  static bool isSuite( CPPUNIT_NS::Test *test );
+
+  // Dialog Data
+       //{{AFX_DATA(TreeHierarchyDlg)
+       CTreeCtrl       m_treeTests;
+       //}}AFX_DATA
+
+
+// Overrides
+       // ClassWizard generated virtual function overrides
+       //{{AFX_VIRTUAL(TreeHierarchyDlg)
+       protected:
+       virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
+       //}}AFX_VIRTUAL
+
+// Implementation
+protected:
+  virtual void initializeLayout();
+  void storeDialogBounds();
+
+       // Generated message map functions
+       //{{AFX_MSG(TreeHierarchyDlg)
+       virtual BOOL OnInitDialog();
+  virtual void OnOK( );
+       virtual void OnCancel();
+       //}}AFX_MSG
+       DECLARE_MESSAGE_MAP();
+
+private:
+  typedef std::vector<CPPUNIT_NS::Test *> Tests;
+
+  void fillTree();
+  HTREEITEM addTest( CPPUNIT_NS::Test *test, 
+                     HTREEITEM hParent );
+  void addTestSuiteChildrenTo( CPPUNIT_NS::Test *suite,
+                               HTREEITEM hItemSuite );
+
+  void sortByName( Tests &tests ) const;
+  CPPUNIT_NS::Test *findSelectedTest();
+
+  enum
+  {
+    imgSuite =0,
+    imgUnitTest,
+  };
+
+  CImageList m_imageList;
+  CPPUNIT_NS::Test *m_selectedTest;
+  CPPUNIT_NS::Test *m_rootTest;
+};
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_TREEHIERARCHYDLG_H__81E65BC0_1F91_482C_A8BD_C1EC305CD6DA__INCLUDED_)
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/res/TestRunner.rc2 b/lib/cppunit-1.10.0/src/msvc6/testrunner/res/TestRunner.rc2
new file mode 100644 (file)
index 0000000..55dca09
--- /dev/null
@@ -0,0 +1,13 @@
+//
+// TESTRUNNER.RC2 - resources Microsoft Visual C++ does not edit directly
+//
+
+#ifdef APSTUDIO_INVOKED
+       #error this file is not editable by Microsoft Visual C++
+#endif //APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Add manually edited resources here...
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/res/errortype.bmp b/lib/cppunit-1.10.0/src/msvc6/testrunner/res/errortype.bmp
new file mode 100644 (file)
index 0000000..aa645ba
Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/testrunner/res/errortype.bmp differ
diff --git a/lib/cppunit-1.10.0/src/msvc6/testrunner/res/test_type.bmp b/lib/cppunit-1.10.0/src/msvc6/testrunner/res/test_type.bmp
new file mode 100644 (file)
index 0000000..63e7fa0
Binary files /dev/null and b/lib/cppunit-1.10.0/src/msvc6/testrunner/res/test_type.bmp differ
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/MostRecentTests.cpp b/lib/cppunit-1.10.0/src/qttestrunner/MostRecentTests.cpp
new file mode 100644 (file)
index 0000000..e286ed1
--- /dev/null
@@ -0,0 +1,68 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file MostRecentTests.cpp for class MostRecentTests
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/20
+// //////////////////////////////////////////////////////////////////////////
+
+#include "MostRecentTests.h"
+
+
+MostRecentTests::MostRecentTests()
+{
+}
+
+
+MostRecentTests::~MostRecentTests()
+{
+}
+
+
+void 
+MostRecentTests::setTestToRun( CPPUNIT_NS::Test *test )
+{
+  m_tests.removeRef( test );
+  m_tests.prepend( test );
+
+  const int maxRecentTest = 20;
+  if ( m_tests.count() > maxRecentTest )
+    m_tests.remove( maxRecentTest );
+
+  emit listChanged();
+  emit testToRunChanged( testToRun() );
+}
+
+
+CPPUNIT_NS::Test *
+MostRecentTests::testToRun()
+{
+  return testAt( 0 );
+}
+
+
+void 
+MostRecentTests::selectTestToRun( int index )
+{
+  if ( index < testCount() )
+    setTestToRun( testAt( index ) );
+}
+
+
+int 
+MostRecentTests::testCount()
+{
+  return m_tests.count();
+}
+
+
+QString 
+MostRecentTests::testNameAt( int index )
+{
+  return QString::fromLatin1( testAt( index )->getName().c_str() );
+}
+
+
+CPPUNIT_NS::Test *
+MostRecentTests::testAt( int index )
+{
+  return m_tests.at( index );
+}
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/MostRecentTests.h b/lib/cppunit-1.10.0/src/qttestrunner/MostRecentTests.h
new file mode 100644 (file)
index 0000000..39cb4d1
--- /dev/null
@@ -0,0 +1,62 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file MostRecentTests.h for class MostRecentTests
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/20
+// //////////////////////////////////////////////////////////////////////////
+#ifndef MOSTRECENTTESTS_H
+#define MOSTRECENTTESTS_H
+
+#include <cppunit/Test.h>
+#include <qstring.h>
+#include <qlist.h>
+#include <qobject.h>
+
+
+/*! \class MostRecentTests
+ * \brief This class represents the list of the recent tests.
+ */
+class MostRecentTests : public QObject
+{
+  Q_OBJECT
+public:
+  /*! Constructs a MostRecentTests object.
+   */
+  MostRecentTests();
+
+  /*! Destructor.
+   */
+  virtual ~MostRecentTests();
+
+  void setTestToRun( CPPUNIT_NS::Test *test );
+  CPPUNIT_NS::Test *testToRun();
+
+  int testCount();
+  QString testNameAt( int index );
+  CPPUNIT_NS::Test *testAt( int index );
+
+signals:
+  void listChanged();
+  void testToRunChanged( CPPUNIT_NS::Test *testToRun );
+
+public slots:
+  void selectTestToRun( int index );
+
+private:
+  /// Prevents the use of the copy constructor.
+  MostRecentTests( const MostRecentTests &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const MostRecentTests &copy );
+
+private:
+  QList<CPPUNIT_NS::Test> m_tests;
+};
+
+
+
+// Inlines methods for MostRecentTests:
+// ------------------------------------
+
+
+
+#endif  // MOSTRECENTTESTS_H
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/QtTestRunner.cpp b/lib/cppunit-1.10.0/src/qttestrunner/QtTestRunner.cpp
new file mode 100644 (file)
index 0000000..9f203cd
--- /dev/null
@@ -0,0 +1,70 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file QtTestRunner.cpp for class QtTestRunner
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/19
+// //////////////////////////////////////////////////////////////////////////
+
+#include <qapplication.h>
+#include <cppunit/TestSuite.h>
+#include <cppunit/ui/qt/QtTestRunner.h>
+#include "TestRunnerDlgImpl.h"
+#include "TestRunnerModel.h"
+
+
+CPPUNIT_NS_BEGIN
+
+QtTestRunner::QtTestRunner() :
+  _suite( new CPPUNIT_NS::TestSuite( "All Tests" ) ),
+  _tests( new Tests() )
+{
+}
+
+
+QtTestRunner::~QtTestRunner()
+{
+  delete _suite;
+
+  Tests::iterator it = _tests->begin();
+  while ( it != _tests->end() )
+    delete *it++;
+
+  delete _tests;
+}
+
+
+Test *
+QtTestRunner::getRootTest()
+{
+  if ( _tests->size() != 1 )
+  {
+    Tests::iterator it = _tests->begin();
+    while ( it != _tests->end() )
+      _suite->addTest( *it++ );
+    _tests->clear();
+    return _suite;
+  }
+  return (*_tests)[0];
+}
+
+
+void 
+QtTestRunner::run( bool autoRun )
+{
+  TestRunnerDlg *dlg = new TestRunnerDlg( qApp->mainWidget(), 
+                                          "QtTestRunner", 
+                                          TRUE );
+  dlg->setModel( new TestRunnerModel( getRootTest() ),
+                 autoRun );
+  dlg->exec();
+  delete dlg;
+}
+
+
+void 
+QtTestRunner::addTest( CPPUNIT_NS::Test *test )
+{
+  _tests->push_back( test );
+}
+
+
+CPPUNIT_NS_END
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/QtTestRunnerDll.pro b/lib/cppunit-1.10.0/src/qttestrunner/QtTestRunnerDll.pro
new file mode 100644 (file)
index 0000000..3d6c2d4
--- /dev/null
@@ -0,0 +1,39 @@
+TEMPLATE       = lib
+CONFIG         = qt warn_on release thread dll
+TARGET         = qttestrunner
+DESTDIR                = ../../lib
+win32-msvc:INCLUDEPATH         = ../../include
+win32-msvc:LIBS                        = ../../lib/cppunit.lib
+win32-msvc:TMAKE_CXXFLAGS      = /GX /GR
+win32-msvc:DEFINES             = QT_DLL QTTESTRUNNER_DLL_BUILD
+
+HEADERS                = MostRecentTests.h \
+                 TestBrowserDlgImpl.h \
+                 TestFailureInfo.h \
+                 TestFailureListViewItem.h \
+                 TestListViewItem.h \
+                 TestRunnerDlgImpl.h \
+                 TestRunnerFailureEvent.h \
+                 TestRunnerModel.h \
+                 TestRunnerModelThreadInterface.h \
+                 TestRunnerTestCaseRunEvent.h \
+                 TestRunnerThread.h \
+                 TestRunnerThreadEvent.h \
+                 TestRunnerThreadFinishedEvent.h \
+                 ../../include/cppunitui/qt/TestRunner.h
+SOURCES                = MostRecentTests.cpp \
+                 TestBrowserDlgImpl.cpp \
+                 TestFailureInfo.cpp \
+                 TestFailureListViewItem.cpp \
+                 TestListViewItem.cpp \
+                 QtTestRunner.cpp \
+                 TestRunnerDlgImpl.cpp \
+                 TestRunnerFailureEvent.cpp \
+                 TestRunnerModel.cpp \
+                 TestRunnerModelThreadInterface.cpp \
+                 TestRunnerTestCaseRunEvent.cpp \
+                 TestRunnerThread.cpp \
+                 TestRunnerThreadEvent.cpp \
+                 TestRunnerThreadFinishedEvent.cpp
+INTERFACES     = testbrowserdlg.ui \
+                 testrunnerdlg.ui
\ No newline at end of file
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestBrowserDlgImpl.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestBrowserDlgImpl.cpp
new file mode 100644 (file)
index 0000000..cef7c52
--- /dev/null
@@ -0,0 +1,83 @@
+#include <cppunit/Test.h>
+#include <qlistview.h>
+#include <qmessagebox.h>
+#include "TestBrowserDlgImpl.h"
+#include "TestListViewItem.h"
+
+
+/* 
+ *  Constructs a TestBrowser which is a child of 'parent', with the 
+ *  name 'name' and widget flags set to 'f' 
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+TestBrowser::TestBrowser( QWidget* parent,  const char* name, bool modal, WFlags fl )
+    : TestBrowserBase( parent, name, modal, fl ),
+    _selectedTest( NULL )
+{
+  _listTests->setRootIsDecorated( TRUE );
+}
+
+/*  
+ *  Destroys the object and frees any allocated resources
+ */
+TestBrowser::~TestBrowser()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+
+void 
+TestBrowser::setRootTest( CPPUNIT_NS::Test *rootTest )
+{
+  QListViewItem *dummyRoot = new QListViewItem( _listTests );
+
+  insertItemFor( rootTest, dummyRoot );
+  
+  dummyRoot->firstChild()->moveItem( dummyRoot );
+  delete dummyRoot;
+
+  _listTests->firstChild()->setOpen( TRUE );
+  _listTests->triggerUpdate();
+}
+
+
+void 
+TestBrowser::insertItemFor( CPPUNIT_NS::Test *test,
+                            QListViewItem *parentItem )
+{
+  QListViewItem *item = new TestListViewItem( test, parentItem );
+  QString testName = QString::fromLatin1( test->getName().c_str() );
+  item->setText( 0, testName );
+  if ( test->getChildTestCount() > 0  ||    // suite with test
+       test->countTestCases() == 0 )        // empty suite
+  {
+    for ( int index =0; index < test->getChildTestCount(); ++index )
+      insertItemFor( test->getChildTestAt( index ), item );
+  }
+}
+
+
+CPPUNIT_NS::Test *
+TestBrowser::selectedTest()
+{
+  return _selectedTest;
+}
+
+
+void 
+TestBrowser::accept()
+{
+  TestListViewItem *item = (TestListViewItem *)_listTests->selectedItem();
+  if ( item == NULL )
+  {
+    QMessageBox::information( this, tr("Selected test"),
+                              tr( "You must select a test." ) );
+    return;
+  }
+
+  _selectedTest = item->test();
+
+  TestBrowserBase::accept();
+}
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestBrowserDlgImpl.h b/lib/cppunit-1.10.0/src/qttestrunner/TestBrowserDlgImpl.h
new file mode 100644 (file)
index 0000000..d4c113a
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef TESTBROWSER_H
+#define TESTBROWSER_H
+
+#include <cppunit/Test.h>
+#include "testbrowserdlg.h"
+
+class QListViewItem;
+
+class TestBrowser : public TestBrowserBase
+{ 
+    Q_OBJECT
+
+public:
+  TestBrowser( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+  ~TestBrowser();
+
+  void setRootTest( CPPUNIT_NS::Test *rootTest );
+
+  CPPUNIT_NS::Test *selectedTest();
+
+protected slots:
+  void accept();
+
+private:
+  void insertItemFor( CPPUNIT_NS::Test *test,
+                      QListViewItem *parentItem );
+
+private:
+  CPPUNIT_NS::Test *_selectedTest;
+};
+
+#endif // TESTBROWSER_H
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestFailureInfo.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestFailureInfo.cpp
new file mode 100644 (file)
index 0000000..54c5b1d
--- /dev/null
@@ -0,0 +1,21 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file TestFailureInfo.cpp for class TestFailureInfo
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/20
+// //////////////////////////////////////////////////////////////////////////
+
+#include "TestFailureInfo.h"
+#include <cppunit/Exception.h>
+
+
+TestFailureInfo::TestFailureInfo( CPPUNIT_NS::Test *failedTest, 
+                                  CPPUNIT_NS::Exception *thrownException,
+                                  bool isError ) : 
+    CPPUNIT_NS::TestFailure( failedTest, thrownException->clone(), isError )
+{
+}
+
+
+TestFailureInfo::~TestFailureInfo()
+{
+}
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestFailureInfo.h b/lib/cppunit-1.10.0/src/qttestrunner/TestFailureInfo.h
new file mode 100644 (file)
index 0000000..64a2ceb
--- /dev/null
@@ -0,0 +1,43 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestFailureInfo.h for class TestFailureInfo
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/20
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTFAILUREINFO_H
+#define TESTFAILUREINFO_H
+
+#include <cppunit/TestFailure.h>
+
+
+/*! \class TestFailureInfo
+ * \brief This class represents a test failure.
+ */
+class TestFailureInfo : public CPPUNIT_NS::TestFailure
+{
+public:
+  /*! Constructs a TestFailureInfo object.
+   */
+  TestFailureInfo( CPPUNIT_NS::Test *failedTest, 
+                   CPPUNIT_NS::Exception *thrownException,
+                   bool isError );
+
+  /*! Destructor.
+   */
+  virtual ~TestFailureInfo();
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestFailureInfo( const TestFailureInfo &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestFailureInfo &copy );
+};
+
+
+
+// Inlines methods for TestFailureInfo:
+// ------------------------------------
+
+
+
+#endif  // TESTFAILUREINFO_H
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestFailureListViewItem.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestFailureListViewItem.cpp
new file mode 100644 (file)
index 0000000..d4aa13a
--- /dev/null
@@ -0,0 +1,28 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file TestFailureListViewItem.cpp for class TestFailureListViewItem
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/20
+// //////////////////////////////////////////////////////////////////////////
+
+#include "TestFailureListViewItem.h"
+
+
+TestFailureListViewItem::TestFailureListViewItem(
+                           TestFailureInfo *failure,
+                           QListView *parent ) : 
+    QListViewItem( parent ),
+    _failure( failure )
+{
+}
+
+
+TestFailureListViewItem::~TestFailureListViewItem()
+{
+}
+
+
+TestFailureInfo *
+TestFailureListViewItem::failure()
+{
+  return _failure;
+}
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestFailureListViewItem.h b/lib/cppunit-1.10.0/src/qttestrunner/TestFailureListViewItem.h
new file mode 100644 (file)
index 0000000..97d3716
--- /dev/null
@@ -0,0 +1,48 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestFailureListViewItem.h for class TestFailureListViewItem
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/20
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTFAILURELISTVIEWITEM_H
+#define TESTFAILURELISTVIEWITEM_H
+
+#include <qlistview.h>
+class TestFailureInfo;
+
+
+/*! \class TestFailureListViewItem
+ * \brief This class represents a test failure item.
+ */
+class TestFailureListViewItem : public QListViewItem
+{
+public:
+  /*! Constructs a TestFailureListViewItem object.
+   */
+  TestFailureListViewItem( TestFailureInfo *failure,
+                           QListView *parent );
+
+  /*! Destructor.
+   */
+  virtual ~TestFailureListViewItem();
+
+  TestFailureInfo *failure();
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestFailureListViewItem( const TestFailureListViewItem &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestFailureListViewItem &copy );
+
+private:
+  TestFailureInfo *_failure;
+};
+
+
+
+// Inlines methods for TestFailureListViewItem:
+// --------------------------------------------
+
+
+
+#endif  // TESTFAILURELISTVIEWITEM_H
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestListViewItem.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestListViewItem.cpp
new file mode 100644 (file)
index 0000000..b4032dc
--- /dev/null
@@ -0,0 +1,27 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file TestListViewItem.cpp for class TestListViewItem
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/19
+// //////////////////////////////////////////////////////////////////////////
+
+#include "TestListViewItem.h"
+
+
+TestListViewItem::TestListViewItem( CPPUNIT_NS::Test *test,
+                                    QListViewItem *parent ) : 
+    QListViewItem( parent ),
+    _test( test )
+{
+}
+
+
+TestListViewItem::~TestListViewItem()
+{
+}
+
+
+CPPUNIT_NS::Test *
+TestListViewItem::test() const
+{
+  return _test;
+}
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestListViewItem.h b/lib/cppunit-1.10.0/src/qttestrunner/TestListViewItem.h
new file mode 100644 (file)
index 0000000..4032f68
--- /dev/null
@@ -0,0 +1,43 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestListViewItem.h for class TestListViewItem
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/19
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTLISTVIEWITEM_H
+#define TESTLISTVIEWITEM_H
+
+#include <qlistview.h>
+#include <cppunit/Test.h>
+
+
+/*! \class TestListViewItem
+ * \brief This class represents an list item pointing to a Test.
+ */
+class TestListViewItem : public QListViewItem
+{
+public:
+  /*! Constructs a TestListViewItem object.
+   */
+  TestListViewItem( CPPUNIT_NS::Test *test,
+                    QListViewItem *parent );
+
+  /*! Destructor.
+   */
+  virtual ~TestListViewItem();
+
+  CPPUNIT_NS::Test *test() const;
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestListViewItem( const TestListViewItem &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestListViewItem &copy );
+
+private:
+  CPPUNIT_NS::Test *_test;
+};
+
+
+
+#endif  // TESTLISTVIEWITEM_H
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerDlgImpl.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerDlgImpl.cpp
new file mode 100644 (file)
index 0000000..d00616c
--- /dev/null
@@ -0,0 +1,259 @@
+#include <qcombobox.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlistview.h>
+#include <qmultilineedit.h>
+#include <qprogressbar.h>
+#include <qpushbutton.h>
+#include <cppunit/Exception.h>
+#include "TestRunnerDlgImpl.h"
+#include "TestBrowserDlgImpl.h"
+#include "MostRecentTests.h"
+#include "TestRunnerModel.h"
+#include "TestFailureListViewItem.h"
+
+
+/* 
+ *  Constructs a TestRunnerDlg which is a child of 'parent', with the 
+ *  name 'name' and widget flags set to 'f' 
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+TestRunnerDlg::TestRunnerDlg( QWidget* parent,  const char* name, bool modal, WFlags fl )
+    : TestRunnerDlgBase( parent, name, modal, fl ),
+    _model( NULL ),
+    _recentTests( new MostRecentTests() )
+{
+}
+
+
+/*  
+ *  Destroys the object and frees any allocated resources
+ */
+TestRunnerDlg::~TestRunnerDlg()
+{
+  delete _model;
+  delete _recentTests;
+}
+
+
+void 
+TestRunnerDlg::setModel( TestRunnerModel *model,
+                         bool autorunTest )
+{
+  delete _model;
+
+  _model = model;
+
+  // update combo when recent list change
+  connect( _recentTests, SIGNAL( listChanged() ),
+           SLOT( refreshRecentTests() ) );
+
+  // make selected test in combo the "most recent"
+  connect( _comboTest, SIGNAL( activated(int) ),
+           _recentTests, SLOT( selectTestToRun(int) ) );
+
+  // refresh the test report counters when a test is selected
+  connect( _recentTests, SIGNAL( testToRunChanged(CPPUNIT_NS::Test *) ),
+           _model, SLOT( resetTestReportCounterFor(CPPUNIT_NS::Test *) ) );
+
+  // refresh progress bar
+  connect( _model, SIGNAL( numberOfTestCaseChanged(int) ),
+           _progressRun, SLOT( setTotalSteps(int) ) );
+  connect( _model, SIGNAL( numberOfTestCaseRunChanged(int) ),
+           _progressRun, SLOT( setProgress(int) ) );
+  
+  // refresh test report counters
+  connect( _model, SIGNAL( numberOfTestCaseChanged( int ) ),
+           SLOT( setNumberOfTestCase( int ) ) );
+  connect( _model, SIGNAL( numberOfTestCaseRunChanged( int ) ),
+           SLOT( setNumberOfTestCaseRun( int ) ) );
+  connect( _model, SIGNAL( numberOfTestCaseFailureChanged( int ) ),
+           SLOT( setNumberOfTestCaseFailure( int ) ) );
+
+  // clear failure list
+  connect( _model, SIGNAL( failuresCleared() ),
+           SLOT( clearTestFailureList() ) );
+
+  // clear failure detail list
+  connect( _model, SIGNAL( failuresCleared() ),
+           SLOT( clearFailureDetail() ) );
+
+  // add failure to failure list
+  connect( _model, SIGNAL( failureAdded(TestFailureInfo *) ),
+           SLOT( reportFailure(TestFailureInfo*) ) );
+
+  // show detail on failure selection
+  connect( _listFailures, SIGNAL( selectionChanged(QListViewItem*) ),
+           SLOT( showFailureDetailAt(QListViewItem*) ) );
+
+  // disable button when running test
+  connect( _model, SIGNAL( testRunStarted( CPPUNIT_NS::Test *, CPPUNIT_NS::TestResult *) ),
+           SLOT( beRunningTest() ) );
+
+  // enable button when finished running test
+  connect( _model, SIGNAL( testRunFinished() ),
+           SLOT( beCanRunTest() ) );
+
+  _recentTests->setTestToRun( model->rootTest() );
+  beCanRunTest();
+
+  if ( autorunTest )
+    runTest();
+}
+
+
+void 
+TestRunnerDlg::browseForTest()
+{
+  TestBrowser *dlg = new TestBrowser( this,
+                                      "Test Browser",
+                                      TRUE );
+  dlg->setRootTest( _model->rootTest() );
+
+  if ( dlg->exec() )
+    _recentTests->setTestToRun( dlg->selectedTest() );
+
+  delete dlg;
+}
+
+
+void 
+TestRunnerDlg::runTest()
+{
+  CPPUNIT_NS::Test *testToRun = _recentTests->testToRun();
+  if ( testToRun == NULL )
+    return;
+  _model->runTest( testToRun );
+}
+
+
+void 
+TestRunnerDlg::stopTest()
+{
+  _model->stopRunningTest();
+  if ( _model->isTestRunning() )
+    beStoppingTest();
+}
+
+
+void 
+TestRunnerDlg::clearTestFailureList()
+{
+  _listFailures->clear();
+}
+
+
+void 
+TestRunnerDlg::refreshRecentTests()
+{
+  _comboTest->clear();
+  for ( int index =0; index < _recentTests->testCount(); ++index )
+    _comboTest->insertItem( _recentTests->testNameAt( index ) );
+}
+
+
+void 
+TestRunnerDlg::setNumberOfTestCase( int numberOfTestCase )
+{
+  _labelTestCaseCount->setText( QString::number( numberOfTestCase ) );
+}
+
+
+void 
+TestRunnerDlg::setNumberOfTestCaseRun( int numberOfRun )
+{
+  _labelTestRunCount->setText( QString::number( numberOfRun ) );
+}
+
+
+void 
+TestRunnerDlg::setNumberOfTestCaseFailure( int numberOfFailure )
+{
+  _labelFailureCount->setText( QString::number( numberOfFailure ) );
+}
+
+
+void 
+TestRunnerDlg::reportFailure( TestFailureInfo *failure )
+{
+  QListViewItem *item = new TestFailureListViewItem( failure, 
+                                                     _listFailures );
+  item->setText( indexType, 
+                 failure->isError() ? tr("Error") : tr("Failure") );
+  std::string failedtestName = failure->failedTestName().c_str();
+  item->setText( indexTestName, QString::fromLatin1( failedtestName.c_str() ) );
+
+  CPPUNIT_NS::Exception *thrownException = failure->thrownException();
+  item->setText( indexMessage, thrownException->what() );
+  item->setText( indexFilename, failure->sourceLine().fileName().c_str() );
+  item->setText( indexLineNumber,
+                 QString::number( failure->sourceLine().lineNumber() ) );
+
+  _listFailures->insertItem( item );
+  _listFailures->triggerUpdate();
+
+  if ( _listFailures->childCount() == 1 )
+    _listFailures->setSelected( item, TRUE );
+}
+
+
+void 
+TestRunnerDlg::showFailureDetailAt( QListViewItem *selection )
+{
+  TestFailureInfo *failure = ((TestFailureListViewItem*)selection)->failure();
+  
+  QString title = tr("Failure detail for: ");
+  title += QString::fromLatin1( failure->failedTestName().c_str() );
+  _groupFailureDetail->setTitle( title );
+
+  QString location( failure->sourceLine().fileName().c_str() );
+  location += " (" + 
+              QString::number( failure->sourceLine().lineNumber() ) +
+              ")";
+  _labelFailureLocation->setText( location );
+
+  _editFailureMessage->setText( failure->thrownException()->what() );
+}
+
+
+void 
+TestRunnerDlg::clearFailureDetail()
+{
+  _groupFailureDetail->setTitle( tr("Failure detail for:...") );
+  _labelFailureLocation->setText( QString::null );
+  _editFailureMessage->setText( QString::null );
+}
+
+
+void 
+TestRunnerDlg::beCanRunTest()
+{
+  _buttonRunTest->setEnabled( true );
+  _buttonBrowse->setEnabled( true );
+  _comboTest->setEnabled( true );
+  _buttonStop->setDisabled( true );
+  _buttonStop->setText( tr("Stop") );
+  _buttonClose->setEnabled( true );
+}
+
+
+void 
+TestRunnerDlg::beRunningTest()
+{
+  _buttonRunTest->setDisabled( true );
+  _buttonBrowse->setDisabled( true );
+  _comboTest->setDisabled( true );
+  _buttonStop->setEnabled( true );
+  _buttonStop->setText( tr("Stop") );
+  _buttonClose->setDisabled( true );
+}
+
+
+void 
+TestRunnerDlg::beStoppingTest()
+{
+  _buttonStop->setDisabled( true );
+  _buttonStop->setText( tr("Stopping") );
+}
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerDlgImpl.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerDlgImpl.h
new file mode 100644 (file)
index 0000000..a3befc6
--- /dev/null
@@ -0,0 +1,58 @@
+#ifndef TESTRUNNERDLG_H
+#define TESTRUNNERDLG_H
+
+#include "testrunnerdlg.h"
+#include <cppunit/Test.h>
+class TestRunnerModel;
+class MostRecentTests;
+class TestFailureInfo;
+class QListViewItem;
+
+class TestRunnerDlg : public TestRunnerDlgBase
+{ 
+  Q_OBJECT
+
+public:
+  TestRunnerDlg( QWidget* parent = 0, 
+                 const char* name = 0, 
+                 bool modal = FALSE, 
+                 WFlags fl = 0 );
+  ~TestRunnerDlg();
+
+  void setModel( TestRunnerModel *model,
+                 bool autorunTest );
+
+public slots:
+  void refreshRecentTests();
+
+protected slots:
+  void browseForTest();
+  void runTest();
+  void stopTest();
+  void setNumberOfTestCase( int numberOfTestCase );
+  void setNumberOfTestCaseRun( int numberOfRun );
+  void setNumberOfTestCaseFailure( int numberOfFailure );
+  void clearTestFailureList();
+  void clearFailureDetail();
+  void reportFailure( TestFailureInfo *failure );
+  void showFailureDetailAt( QListViewItem *selection );
+  void beCanRunTest();
+  void beRunningTest();
+  void beStoppingTest();
+
+private:
+
+  enum Columns
+  {
+    indexType =0,
+    indexTestName,
+    indexMessage,
+    indexFilename,
+    indexLineNumber
+  };
+
+  TestRunnerModel *_model;
+  MostRecentTests *_recentTests;
+};
+
+#endif // TESTRUNNERDLG_H
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerFailureEvent.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerFailureEvent.cpp
new file mode 100644 (file)
index 0000000..bceb2f6
--- /dev/null
@@ -0,0 +1,28 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file TestRunnerFailureEvent.cpp for class TestRunnerFailureEvent
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/22
+// //////////////////////////////////////////////////////////////////////////
+
+#include "TestRunnerFailureEvent.h"
+#include "TestRunnerModelThreadInterface.h"
+
+
+TestRunnerFailureEvent::TestRunnerFailureEvent( TestFailureInfo *failure,
+                                                int numberOfFailure ) :
+    _failure( failure ),
+    _numberOfFailure( numberOfFailure )
+{
+}
+
+
+TestRunnerFailureEvent::~TestRunnerFailureEvent()
+{
+}
+
+
+void 
+TestRunnerFailureEvent::process( TestRunnerModelThreadInterface *target )
+{
+  target->eventNewFailure( _failure, _numberOfFailure );
+}
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerFailureEvent.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerFailureEvent.h
new file mode 100644 (file)
index 0000000..fa6fef0
--- /dev/null
@@ -0,0 +1,48 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestRunnerFailureEvent.h for class TestRunnerFailureEvent
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/22
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTRUNNERFAILUREEVENT_H
+#define TESTRUNNERFAILUREEVENT_H
+
+#include "TestRunnerThreadEvent.h"
+class TestFailureInfo;
+
+
+/*! \class TestRunnerFailureEvent
+ * \brief This class represents a new TestCase failure event.
+ */
+class TestRunnerFailureEvent : public TestRunnerThreadEvent
+{
+public:
+  /*! Constructs a TestRunnerFailureEvent object.
+   */
+  TestRunnerFailureEvent( TestFailureInfo *failure,
+                          int numberOfFailure );
+
+  /// Destructor.
+  virtual ~TestRunnerFailureEvent();
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestRunnerFailureEvent( const TestRunnerFailureEvent &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestRunnerFailureEvent &copy );
+
+  void process( TestRunnerModelThreadInterface *target );
+
+private:
+  TestFailureInfo *_failure;
+  int _numberOfFailure;
+};
+
+
+
+// Inlines methods for TestRunnerFailureEvent:
+// -------------------------------------------
+
+
+
+#endif  // TESTRUNNERFAILUREEVENT_H
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModel.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModel.cpp
new file mode 100644 (file)
index 0000000..7058101
--- /dev/null
@@ -0,0 +1,221 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file TestRunnerModel.cpp for class TestRunnerModel
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/20
+// //////////////////////////////////////////////////////////////////////////
+
+#include <cppunit/TestResult.h>
+#include "TestRunnerFailureEvent.h"
+#include "TestRunnerModel.h"
+#include "TestRunnerTestCaseRunEvent.h"
+#include "TestRunnerThread.h"
+#include "TestRunnerThreadFinishedEvent.h"
+
+
+TestRunnerModel::TestRunnerModel( CPPUNIT_NS::Test *rootTest ) :
+    _rootTest( rootTest ),
+    _runnerThread( NULL ),
+    _result( NULL )
+{
+}
+
+
+TestRunnerModel::~TestRunnerModel()
+{
+  delete _runnerThread;
+}
+
+
+CPPUNIT_NS::Test *
+TestRunnerModel::rootTest()
+{
+  return _rootTest;
+}
+
+
+void 
+TestRunnerModel::resetTestReportCounterFor( CPPUNIT_NS::Test *testToRun )
+{
+  if ( isTestRunning() )
+    return;
+
+  {
+    LockGuard guard( _lock );
+    _numberOfTestCase = testToRun->countTestCases();
+    _numberOfTestCaseRun =0;
+    _numberOfTestCaseFailure =0;
+    _failures.clear();
+  }
+  emit failuresCleared();
+
+  emit numberOfTestCaseChanged( _numberOfTestCase );
+  emit numberOfTestCaseRunChanged( _numberOfTestCaseRun );
+  emit numberOfTestCaseFailureChanged( _numberOfTestCaseFailure );
+}
+
+
+int 
+TestRunnerModel::numberOfTestCase()
+{
+  LockGuard guard( _lock );
+  return _numberOfTestCase;
+}
+
+
+int 
+TestRunnerModel::numberOfTestCaseFailure()
+{
+  LockGuard guard( _lock );
+  return _numberOfTestCaseFailure;
+}
+
+
+int 
+TestRunnerModel::numberOfTestCaseRun()
+{
+  LockGuard guard( _lock );
+  return _numberOfTestCaseRun;
+}
+
+
+TestFailureInfo *
+TestRunnerModel::failureAt( int index )
+{
+  LockGuard guard( _lock );
+  return _failures.at( index );
+}
+
+
+void 
+TestRunnerModel::runTest( CPPUNIT_NS::Test *testToRun )
+{
+  if ( isTestRunning() )
+    return;
+
+  resetTestReportCounterFor( testToRun );
+
+  {
+    LockGuard guard( _lock );
+    delete _result;
+    _result = new CPPUNIT_NS::TestResult();
+    _result->addListener( this );
+  }
+
+  emit testRunStarted( testToRun, _result );
+
+  LockGuard guard( _lock );
+  _runnerThread = new TestRunnerThread( testToRun, 
+                                        _result, 
+                                        this, 
+                                        new TestRunnerThreadFinishedEvent() );
+}
+
+
+bool 
+TestRunnerModel::isTestRunning()
+{
+  LockGuard guard( _lock );
+  return _runnerThread != NULL  &&  _runnerThread->running();
+}
+
+
+void 
+TestRunnerModel::stopRunningTest()
+{
+  {
+    LockGuard guard( _lock );
+    if ( _result == NULL )
+      return;
+  }
+  if ( isTestRunning() )
+  {
+    LockGuard guard( _lock );
+    _result->stop();
+  }
+}
+
+
+// Called from the TestRunnerThread.
+void 
+TestRunnerModel::startTest( CPPUNIT_NS::Test *test )
+{
+}
+
+
+// Called from the TestRunnerThread.
+void 
+TestRunnerModel::addFailure( const CPPUNIT_NS::TestFailure &failure )
+{
+  addFailureInfo( new TestFailureInfo( failure.failedTest(), 
+                                       failure.thrownException(),
+                                       failure.isError() ) );
+}
+
+
+// Called from the TestRunnerThread.
+void 
+TestRunnerModel::endTest( CPPUNIT_NS::Test *test )
+{
+  int numberOfTestCaseRun;
+  {
+    LockGuard guard( _lock );
+    numberOfTestCaseRun = ++_numberOfTestCaseRun;
+  }
+
+  // emit signal asynchronously
+  QThread::postEvent( this, 
+                      new TestRunnerTestCaseRunEvent( numberOfTestCaseRun ) );
+}
+
+
+// Called from the TestRunnerThread.
+void 
+TestRunnerModel::addFailureInfo( TestFailureInfo *failure )
+{
+  int numberOfTestCaseFailure;
+  {
+    LockGuard guard( _lock );
+    _failures.append( failure );
+    numberOfTestCaseFailure = ++_numberOfTestCaseFailure;
+  }
+
+  // emit signals asynchronously
+  QThread::postEvent( this, 
+                      new TestRunnerFailureEvent( failure,
+                                                  numberOfTestCaseFailure ) );
+}
+
+
+bool 
+TestRunnerModel::event( QEvent *event )
+{
+  if ( event->type() != QEvent::User )
+    return false;
+
+  TestRunnerThreadEvent *threadEvent = (TestRunnerThreadEvent *)event;
+  threadEvent->process( this );
+  return true;
+}
+
+
+void 
+TestRunnerModel::eventNewFailure( TestFailureInfo *failure,
+                                  int numberOfFailure )
+{
+  emit numberOfTestCaseFailureChanged( numberOfFailure );
+  emit failureAdded( failure );
+}
+
+
+void 
+TestRunnerModel::eventNumberOfTestRunChanged( int numberOfRun )
+{
+  emit numberOfTestCaseRunChanged( numberOfRun );
+}
+
+
+void 
+TestRunnerModel::eventTestRunnerThreadFinished()
+{
+  emit testRunFinished();
+}
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModel.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModel.h
new file mode 100644 (file)
index 0000000..a9893dc
--- /dev/null
@@ -0,0 +1,154 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestRunnerModel.h for class TestRunnerModel
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/20
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTRUNNERMODEL_H
+#define TESTRUNNERMODEL_H
+
+#include <cppunit/Test.h>
+#include <cppunit/TestListener.h>
+#include <qlist.h>
+#include <qobject.h>
+#include <qthread.h>
+#include "TestFailureInfo.h"
+#include "TestRunnerModelThreadInterface.h"
+class TestRunnerThread;
+
+/*! \class TestRunnerModel
+ * \brief This class represents the model for the TestRunner.
+ *
+ * Warning: methods that override CppUnit::TestListener are called
+ * from the TestRunner thread !
+ *
+ * Warning: _lock is not recursive. Might want to introduce Doug Lea
+ * Thread Interface pattern for methods used while locked (isTestRunning()).
+ *
+ * Refactoring note: a large part of this object actually duplicate
+ * TestResult. 
+ */
+class TestRunnerModel : public QObject,
+                        private CPPUNIT_NS::TestListener,
+                        private TestRunnerModelThreadInterface
+{
+  Q_OBJECT
+public:
+  /*! Constructs a TestRunnerModel object.
+   */
+  TestRunnerModel( CPPUNIT_NS::Test *rootTest );
+
+  /*! Destructor.
+   */
+  virtual ~TestRunnerModel();
+
+  CPPUNIT_NS::Test *rootTest();
+
+  int numberOfTestCase();
+  int numberOfTestCaseFailure();
+  int numberOfTestCaseRun();
+
+  TestFailureInfo *failureAt( int index );
+
+
+  bool isTestRunning();
+
+signals:
+  void numberOfTestCaseChanged( int numberOfTestCase );
+  void numberOfTestCaseRunChanged( int numberOfRun );
+  void numberOfTestCaseFailureChanged( int numberOfFailure );
+  void failureAdded( TestFailureInfo *failure );
+  void failuresCleared();
+  void testRunStarted( CPPUNIT_NS::Test *runningTest,
+                       CPPUNIT_NS::TestResult *result );
+  void testRunFinished();
+
+public slots:
+  void resetTestReportCounterFor( CPPUNIT_NS::Test *testToRun );
+
+  /*! Request to run the specified test.
+   * Returns immedialty. If a test is already running, then
+   * the run request is ignored.
+   */
+  void runTest( CPPUNIT_NS::Test *testToRun );
+
+  /*! Request to stop running test.
+   * This methods returns immediately. testRunFinished() signal
+   * should be used to now when the test actually stopped running.
+   */
+  void stopRunningTest();
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestRunnerModel( const TestRunnerModel &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestRunnerModel &copy );
+
+  /// Called from the TestRunnerThread.
+  void startTest( CPPUNIT_NS::Test *test );
+
+  /// Called from the TestRunnerThread.
+  void addFailure( const CPPUNIT_NS::TestFailure &failure );
+  
+  /// Called from the TestRunnerThread.
+  void endTest( CPPUNIT_NS::Test *test );
+
+  /// Called from the TestRunnerThread.
+  void addFailureInfo( TestFailureInfo *failure );
+
+  bool event( QEvent *event );
+
+  /*! Emits new failure signals.
+   * Called by the TestRunnerThreadEvent from the GUI thread to
+   * emit the following signals:
+   * - numberOfTestCaseFailureChanged()
+   * - failureAdded()
+   */
+  void eventNewFailure( TestFailureInfo *failure,
+                        int numberOfFailure );
+
+  /*! Emits numberOfTestCaseRunChanged() signal.
+   * Called by the TestRunnerThreadEvent from the GUI thread to
+   * emit the numberOfTestCaseRunChanged() signal.
+   */
+  void eventNumberOfTestRunChanged( int numberOfRun );
+
+  void eventTestRunnerThreadFinished();
+
+private:
+  class LockGuard
+  {
+  public:
+    LockGuard( QMutex &mutex ) : _mutex( mutex )
+    {
+      _mutex.lock();
+    }
+
+    ~LockGuard()
+    {
+      _mutex.unlock();
+    }
+
+  private:
+    QMutex &_mutex;
+  };
+
+
+  QMutex _lock;
+  CPPUNIT_NS::Test *_rootTest;
+  int _numberOfTestCase;
+  int _numberOfTestCaseRun;
+  int _numberOfTestCaseFailure;
+  QList<TestFailureInfo> _failures;
+  TestRunnerThread *_runnerThread;
+  CPPUNIT_NS::TestResult *_result;
+};
+
+
+
+// Inlines methods for TestRunnerModel:
+// ------------------------------------
+
+
+
+#endif  // TESTRUNNERMODEL_H
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModelThreadInterface.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModelThreadInterface.cpp
new file mode 100644 (file)
index 0000000..3196054
--- /dev/null
@@ -0,0 +1,8 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file TestRunnerModelThreadInterface.cpp for class TestRunnerModelThreadInterface
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/21
+// //////////////////////////////////////////////////////////////////////////
+
+#include "TestRunnerModelThreadInterface.h"
+
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModelThreadInterface.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerModelThreadInterface.h
new file mode 100644 (file)
index 0000000..6a663a5
--- /dev/null
@@ -0,0 +1,35 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestRunnerModelThreadInterface.h for class TestRunnerModelThreadInterface
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/21
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTRUNNERMODELTHREADINTERFACE_H
+#define TESTRUNNERMODELTHREADINTERFACE_H
+
+class TestFailureInfo;
+
+/*! \class TestRunnerModelThreadInterface
+ * \brief This class represents the interface used to process gui thread event.
+ */
+class TestRunnerModelThreadInterface
+{
+public:
+  /// Destructor.
+  virtual ~TestRunnerModelThreadInterface() {}
+
+  virtual void eventNewFailure( TestFailureInfo *failure,
+                                int numberOfFailure ) =0;
+
+  virtual void eventNumberOfTestRunChanged( int numberOfRun ) =0;
+
+  virtual void eventTestRunnerThreadFinished() =0;
+};
+
+
+
+// Inlines methods for TestRunnerModelThreadInterface:
+// ---------------------------------------------------
+
+
+
+#endif  // TESTRUNNERMODELTHREADINTERFACE_H
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerTestCaseRunEvent.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerTestCaseRunEvent.cpp
new file mode 100644 (file)
index 0000000..177b358
--- /dev/null
@@ -0,0 +1,26 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file TestRunnerTestCaseRunEvent.cpp for class TestRunnerTestCaseRunEvent
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/22
+// //////////////////////////////////////////////////////////////////////////
+
+#include "TestRunnerModelThreadInterface.h"
+#include "TestRunnerTestCaseRunEvent.h"
+
+
+TestRunnerTestCaseRunEvent::TestRunnerTestCaseRunEvent( int numberOfRun ) :
+    _numberOfRun( numberOfRun )
+{
+}
+
+
+TestRunnerTestCaseRunEvent::~TestRunnerTestCaseRunEvent()
+{
+}
+
+
+void 
+TestRunnerTestCaseRunEvent::process( TestRunnerModelThreadInterface *target )
+{
+  target->eventNumberOfTestRunChanged( _numberOfRun );
+}
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerTestCaseRunEvent.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerTestCaseRunEvent.h
new file mode 100644 (file)
index 0000000..bd2c635
--- /dev/null
@@ -0,0 +1,45 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestRunnerTestCaseRunEvent.h for class TestRunnerTestCaseRunEvent
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/22
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTRUNNERTESTCASERUNEVENT_H
+#define TESTRUNNERTESTCASERUNEVENT_H
+
+#include "TestRunnerThreadEvent.h"
+
+
+/*! \class TestRunnerTestCaseRunEvent
+ * \brief This class represents a new TestCase run event.
+ */
+class TestRunnerTestCaseRunEvent : public TestRunnerThreadEvent
+{
+public:
+  /*! Constructs a TestRunnerTestCaseRunEvent object.
+   */
+  TestRunnerTestCaseRunEvent( int numberOfRun );
+
+  /// Destructor.
+  virtual ~TestRunnerTestCaseRunEvent();
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestRunnerTestCaseRunEvent( const TestRunnerTestCaseRunEvent &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestRunnerTestCaseRunEvent &copy );
+
+  void process( TestRunnerModelThreadInterface *target );
+
+private:
+  int _numberOfRun;
+};
+
+
+
+// Inlines methods for TestRunnerTestCaseRunEvent:
+// -----------------------------------------------
+
+
+
+#endif  // TESTRUNNERTESTCASERUNEVENT_H
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThread.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThread.cpp
new file mode 100644 (file)
index 0000000..cc45526
--- /dev/null
@@ -0,0 +1,38 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file TestRunnerThread.cpp for class TestRunnerThread
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/22
+// //////////////////////////////////////////////////////////////////////////
+
+#include "TestRunnerThread.h"
+#include "TestRunnerThreadFinishedEvent.h"
+
+
+TestRunnerThread::TestRunnerThread( CPPUNIT_NS::Test *testToRun,
+                                    CPPUNIT_NS::TestResult *result,
+                                    QObject *eventTarget,
+                              TestRunnerThreadFinishedEvent *finishedEvent ) :
+    _testToRun( testToRun ),
+    _result( result ),
+    _eventTarget( eventTarget ),
+    _finishedEvent( finishedEvent )
+{
+  start();
+}
+
+
+TestRunnerThread::~TestRunnerThread()
+{
+}
+
+
+void 
+TestRunnerThread::run()
+{
+  _testToRun->run( _result );
+
+  // Signal TestRunnerModel GUI thread
+  QThread::postEvent( _eventTarget, _finishedEvent );
+  _eventTarget = NULL;
+  _finishedEvent = NULL;
+}
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThread.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThread.h
new file mode 100644 (file)
index 0000000..54cb4f1
--- /dev/null
@@ -0,0 +1,55 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestRunnerThread.h for class TestRunnerThread
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/22
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTRUNNERTHREAD_H
+#define TESTRUNNERTHREAD_H
+
+#include <qthread.h>
+#include <cppunit/Test.h>
+#include <cppunit/TestResult.h>
+class QObject;
+class TestRunnerThreadFinishedEvent;
+
+
+/*! \class TestRunnerThread
+ * \brief This class represents the thread used to run TestCase.
+ */
+class TestRunnerThread : public QThread
+{
+public:
+  /*! Constructs a TestRunnerThread object.
+   */
+  TestRunnerThread( CPPUNIT_NS::Test *testToRun,
+                    CPPUNIT_NS::TestResult *result,
+                    QObject *eventTarget,
+                    TestRunnerThreadFinishedEvent *finishedEvent );
+
+  /// Destructor.
+  virtual ~TestRunnerThread();
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestRunnerThread( const TestRunnerThread &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestRunnerThread &copy );
+
+  void run();
+
+private:
+ CPPUNIT_NS::Test *_testToRun;
+ CPPUNIT_NS::TestResult *_result;
+ QObject *_eventTarget;
+ TestRunnerThreadFinishedEvent *_finishedEvent;
+};
+
+
+
+// Inlines methods for TestRunnerThread:
+// -------------------------------------
+
+
+
+#endif  // TESTRUNNERTHREAD_H
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadEvent.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadEvent.cpp
new file mode 100644 (file)
index 0000000..17be770
--- /dev/null
@@ -0,0 +1,19 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file TestRunnerThreadEvent.cpp for class TestRunnerThreadEvent
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/21
+// //////////////////////////////////////////////////////////////////////////
+
+#include "TestRunnerThreadEvent.h"
+
+
+TestRunnerThreadEvent::TestRunnerThreadEvent() : 
+    QCustomEvent( User )
+{
+}
+
+
+TestRunnerThreadEvent::~TestRunnerThreadEvent()
+{
+}
+
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadEvent.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadEvent.h
new file mode 100644 (file)
index 0000000..32389bd
--- /dev/null
@@ -0,0 +1,37 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestRunnerThreadEvent.h for class TestRunnerThreadEvent
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/21
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTRUNNERTHREADEVENT_H
+#define TESTRUNNERTHREADEVENT_H
+
+#include <qevent.h>
+class TestRunnerModelThreadInterface;
+
+/*! \class TestRunnerThreadEvent
+ * \brief This class represents an event send by the test runner thread.
+ */
+class TestRunnerThreadEvent : public QCustomEvent
+{
+public:
+  /*! Constructs a TestRunnerThreadEvent object.
+   */
+  TestRunnerThreadEvent();
+
+  /// Destructor.
+  virtual ~TestRunnerThreadEvent();
+
+  virtual void process( TestRunnerModelThreadInterface *target ) =0;
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestRunnerThreadEvent( const TestRunnerThreadEvent &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestRunnerThreadEvent &copy );
+};
+
+
+
+#endif  // TESTRUNNERTHREADEVENT_H
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadFinishedEvent.cpp b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadFinishedEvent.cpp
new file mode 100644 (file)
index 0000000..5c2f2ba
--- /dev/null
@@ -0,0 +1,25 @@
+// //////////////////////////////////////////////////////////////////////////
+// Implementation file TestRunnerThreadFinishedEvent.cpp for class TestRunnerThreadFinishedEvent
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/22
+// //////////////////////////////////////////////////////////////////////////
+
+#include "TestRunnerThreadFinishedEvent.h"
+#include "TestRunnerModelThreadInterface.h"
+
+
+TestRunnerThreadFinishedEvent::TestRunnerThreadFinishedEvent()
+{
+}
+
+
+TestRunnerThreadFinishedEvent::~TestRunnerThreadFinishedEvent()
+{
+}
+
+
+void 
+TestRunnerThreadFinishedEvent::process( TestRunnerModelThreadInterface *target )
+{
+  target->eventTestRunnerThreadFinished();
+}
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadFinishedEvent.h b/lib/cppunit-1.10.0/src/qttestrunner/TestRunnerThreadFinishedEvent.h
new file mode 100644 (file)
index 0000000..b390e7a
--- /dev/null
@@ -0,0 +1,42 @@
+// //////////////////////////////////////////////////////////////////////////
+// Header file TestRunnerThreadFinishedEvent.h for class TestRunnerThreadFinishedEvent
+// (c)Copyright 2000, Baptiste Lepilleur.
+// Created: 2001/09/22
+// //////////////////////////////////////////////////////////////////////////
+#ifndef TESTRUNNERTHREADFINISHEDEVENT_H
+#define TESTRUNNERTHREADFINISHEDEVENT_H
+
+#include "TestRunnerThreadEvent.h"
+
+
+/*! \class TestRunnerThreadFinishedEvent
+ * \brief This class represents an event indicating that the TestRunnerThread finished.
+ */
+class TestRunnerThreadFinishedEvent : public TestRunnerThreadEvent
+{
+public:
+  /*! Constructs a TestRunnerThreadFinishedEvent object.
+   */
+  TestRunnerThreadFinishedEvent();
+
+  /// Destructor.
+  virtual ~TestRunnerThreadFinishedEvent();
+
+  void process( TestRunnerModelThreadInterface *target );
+
+private:
+  /// Prevents the use of the copy constructor.
+  TestRunnerThreadFinishedEvent( const TestRunnerThreadFinishedEvent &copy );
+
+  /// Prevents the use of the copy operator.
+  void operator =( const TestRunnerThreadFinishedEvent &copy );
+};
+
+
+
+// Inlines methods for TestRunnerThreadFinishedEvent:
+// --------------------------------------------------
+
+
+
+#endif  // TESTRUNNERTHREADFINISHEDEVENT_H
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/build b/lib/cppunit-1.10.0/src/qttestrunner/build
new file mode 100644 (file)
index 0000000..c3a01da
--- /dev/null
@@ -0,0 +1,2 @@
+tmake qttestrunner.pro -o makefile
+export INTERFACE_DECL_PATH=. && make
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/build.bat b/lib/cppunit-1.10.0/src/qttestrunner/build.bat
new file mode 100755 (executable)
index 0000000..30074c4
--- /dev/null
@@ -0,0 +1,3 @@
+tmake QtTestRunnerDll.pro -o Makefile
+nmake clean
+nmake
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/qttestrunner.pro b/lib/cppunit-1.10.0/src/qttestrunner/qttestrunner.pro
new file mode 100644 (file)
index 0000000..2a52339
--- /dev/null
@@ -0,0 +1,44 @@
+TEMPLATE       = lib
+CONFIG         += qt warn_on thread
+
+HEADERS                = MostRecentTests.h \
+                 TestBrowserDlgImpl.h \
+                 TestFailureInfo.h \
+                 TestFailureListViewItem.h \
+                 TestListViewItem.h \
+                 TestRunnerDlgImpl.h \
+                 TestRunnerFailureEvent.h \
+                 TestRunnerModel.h \
+                 TestRunnerModelThreadInterface.h \
+                 TestRunnerTestCaseRunEvent.h \
+                 TestRunnerThread.h \
+                 TestRunnerThreadEvent.h \
+                 TestRunnerThreadFinishedEvent.h \
+                 ../../include/cppunit/ui/qt/TestRunner.h
+
+SOURCES                = MostRecentTests.cpp \
+                 TestBrowserDlgImpl.cpp \
+                 TestFailureInfo.cpp \
+                 TestFailureListViewItem.cpp \
+                 TestListViewItem.cpp \
+                 QtTestRunner.cpp \
+                 TestRunnerDlgImpl.cpp \
+                 TestRunnerFailureEvent.cpp \
+                 TestRunnerModel.cpp \
+                 TestRunnerModelThreadInterface.cpp \
+                 TestRunnerTestCaseRunEvent.cpp \
+                 TestRunnerThread.cpp \
+                 TestRunnerThreadEvent.cpp \
+                 TestRunnerThreadFinishedEvent.cpp
+
+INTERFACES     = testbrowserdlg.ui \
+                 testrunnerdlg.ui
+
+INTERFACE_DECL_PATH = .
+DESTDIR         = ../../lib
+TARGET          = qttestrunner
+INCLUDEPATH     = ../../include
+DEPENDPATH      = .
+OBJECTS_DIR     = objs
+MOC_DIR         = mocs
+#!REQUIRES        = full-config
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/testbrowserdlg.ui b/lib/cppunit-1.10.0/src/qttestrunner/testbrowserdlg.ui
new file mode 100644 (file)
index 0000000..4daedf8
--- /dev/null
@@ -0,0 +1,148 @@
+<!DOCTYPE UI><UI>
+<class>TestBrowserBase</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>TestBrowserBase</cstring>
+    </property>
+    <property>
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>352</width>
+            <height>292</height>
+        </rect>
+    </property>
+    <property>
+        <name>caption</name>
+        <string>TestBrowser</string>
+    </property>
+    <property>
+        <name>sizeGripEnabled</name>
+        <bool>true</bool>
+    </property>
+    <hbox>
+        <property>
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property>
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget>
+            <class>QListView</class>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Test Name</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>_listTests</cstring>
+            </property>
+        </widget>
+        <widget>
+            <class>QLayoutWidget</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Layout6</cstring>
+            </property>
+            <vbox>
+                <property>
+                    <name>margin</name>
+                    <number>0</number>
+                </property>
+                <property>
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget>
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>buttonOk</cstring>
+                    </property>
+                    <property>
+                        <name>caption</name>
+                        <string></string>
+                    </property>
+                    <property>
+                        <name>text</name>
+                        <string>&amp;Select</string>
+                    </property>
+                    <property>
+                        <name>autoDefault</name>
+                        <bool>true</bool>
+                    </property>
+                    <property>
+                        <name>default</name>
+                        <bool>true</bool>
+                    </property>
+                </widget>
+                <widget>
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>buttonCancel</cstring>
+                    </property>
+                    <property>
+                        <name>text</name>
+                        <string>&amp;Cancel</string>
+                    </property>
+                    <property>
+                        <name>autoDefault</name>
+                        <bool>true</bool>
+                    </property>
+                </widget>
+                <spacer>
+                    <property>
+                        <name>name</name>
+                        <cstring>Spacer2</cstring>
+                    </property>
+                    <property>
+                        <name>orientation</name>
+                        <enum>Vertical</enum>
+                    </property>
+                    <property>
+                        <name>sizeType</name>
+                        <enum>Expanding</enum>
+                    </property>
+                    <property>
+                        <name>sizeHint</name>
+                        <size>
+                            <width>20</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+            </vbox>
+        </widget>
+    </hbox>
+</widget>
+<connections>
+    <connection>
+        <sender>buttonOk</sender>
+        <signal>clicked()</signal>
+        <receiver>TestBrowserBase</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>buttonCancel</sender>
+        <signal>clicked()</signal>
+        <receiver>TestBrowserBase</receiver>
+        <slot>reject()</slot>
+    </connection>
+</connections>
+</UI>
diff --git a/lib/cppunit-1.10.0/src/qttestrunner/testrunnerdlg.ui b/lib/cppunit-1.10.0/src/qttestrunner/testrunnerdlg.ui
new file mode 100644 (file)
index 0000000..9727fb1
--- /dev/null
@@ -0,0 +1,687 @@
+<!DOCTYPE UI><UI>
+<class>TestRunnerDlgBase</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>TestRunnerDlgBase</cstring>
+    </property>
+    <property>
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>429</width>
+            <height>370</height>
+        </rect>
+    </property>
+    <property>
+        <name>caption</name>
+        <string>Qt Test Runner</string>
+    </property>
+    <property>
+        <name>sizeGripEnabled</name>
+        <bool>true</bool>
+    </property>
+    <vbox>
+        <property>
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property>
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget>
+            <class>QLayoutWidget</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Layout25</cstring>
+            </property>
+            <hbox>
+                <property>
+                    <name>margin</name>
+                    <number>0</number>
+                </property>
+                <property>
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget>
+                    <class>QLayoutWidget</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Layout24</cstring>
+                    </property>
+                    <vbox>
+                        <property>
+                            <name>margin</name>
+                            <number>0</number>
+                        </property>
+                        <property>
+                            <name>spacing</name>
+                            <number>6</number>
+                        </property>
+                        <widget>
+                            <class>QComboBox</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>_comboTest</cstring>
+                            </property>
+                            <property>
+                                <name>enabled</name>
+                                <bool>true</bool>
+                            </property>
+                            <property>
+                                <name>sizePolicy</name>
+                                <sizepolicy>
+                                    <hsizetype>3</hsizetype>
+                                    <vsizetype>0</vsizetype>
+                                </sizepolicy>
+                            </property>
+                            <property>
+                                <name>autoResize</name>
+                                <bool>false</bool>
+                            </property>
+                        </widget>
+                        <spacer>
+                            <property>
+                                <name>name</name>
+                                <cstring>Spacer27</cstring>
+                            </property>
+                            <property>
+                                <name>orientation</name>
+                                <enum>Vertical</enum>
+                            </property>
+                            <property>
+                                <name>sizeType</name>
+                                <enum>Expanding</enum>
+                            </property>
+                            <property>
+                                <name>sizeHint</name>
+                                <size>
+                                    <width>20</width>
+                                    <height>20</height>
+                                </size>
+                            </property>
+                        </spacer>
+                        <widget>
+                            <class>QLayoutWidget</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>Layout9</cstring>
+                            </property>
+                            <hbox>
+                                <property>
+                                    <name>margin</name>
+                                    <number>0</number>
+                                </property>
+                                <property>
+                                    <name>spacing</name>
+                                    <number>6</number>
+                                </property>
+                                <widget>
+                                    <class>QLayoutWidget</class>
+                                    <property stdset="1">
+                                        <name>name</name>
+                                        <cstring>Layout8</cstring>
+                                    </property>
+                                    <hbox>
+                                        <property>
+                                            <name>margin</name>
+                                            <number>0</number>
+                                        </property>
+                                        <property>
+                                            <name>spacing</name>
+                                            <number>6</number>
+                                        </property>
+                                        <widget>
+                                            <class>QLabel</class>
+                                            <property stdset="1">
+                                                <name>name</name>
+                                                <cstring>TextLabel2</cstring>
+                                            </property>
+                                            <property>
+                                                <name>text</name>
+                                                <string>TestCases:</string>
+                                            </property>
+                                        </widget>
+                                        <widget>
+                                            <class>QLabel</class>
+                                            <property stdset="1">
+                                                <name>name</name>
+                                                <cstring>_labelTestCaseCount</cstring>
+                                            </property>
+                                            <property>
+                                                <name>text</name>
+                                                <string>999999</string>
+                                            </property>
+                                        </widget>
+                                    </hbox>
+                                </widget>
+                                <spacer>
+                                    <property>
+                                        <name>name</name>
+                                        <cstring>Spacer3</cstring>
+                                    </property>
+                                    <property>
+                                        <name>orientation</name>
+                                        <enum>Horizontal</enum>
+                                    </property>
+                                    <property>
+                                        <name>sizeType</name>
+                                        <enum>Fixed</enum>
+                                    </property>
+                                    <property>
+                                        <name>sizeHint</name>
+                                        <size>
+                                            <width>20</width>
+                                            <height>20</height>
+                                        </size>
+                                    </property>
+                                </spacer>
+                                <widget>
+                                    <class>QLayoutWidget</class>
+                                    <property stdset="1">
+                                        <name>name</name>
+                                        <cstring>Layout7</cstring>
+                                    </property>
+                                    <hbox>
+                                        <property>
+                                            <name>margin</name>
+                                            <number>0</number>
+                                        </property>
+                                        <property>
+                                            <name>spacing</name>
+                                            <number>6</number>
+                                        </property>
+                                        <widget>
+                                            <class>QLabel</class>
+                                            <property stdset="1">
+                                                <name>name</name>
+                                                <cstring>TextLabel2_2</cstring>
+                                            </property>
+                                            <property>
+                                                <name>text</name>
+                                                <string>Run:</string>
+                                            </property>
+                                        </widget>
+                                        <widget>
+                                            <class>QLabel</class>
+                                            <property stdset="1">
+                                                <name>name</name>
+                                                <cstring>_labelTestRunCount</cstring>
+                                            </property>
+                                            <property>
+                                                <name>text</name>
+                                                <string>999999</string>
+                                            </property>
+                                        </widget>
+                                    </hbox>
+                                </widget>
+                                <spacer>
+                                    <property>
+                                        <name>name</name>
+                                        <cstring>Spacer4</cstring>
+                                    </property>
+                                    <property>
+                                        <name>orientation</name>
+                                        <enum>Horizontal</enum>
+                                    </property>
+                                    <property>
+                                        <name>sizeType</name>
+                                        <enum>Fixed</enum>
+                                    </property>
+                                    <property>
+                                        <name>sizeHint</name>
+                                        <size>
+                                            <width>20</width>
+                                            <height>20</height>
+                                        </size>
+                                    </property>
+                                </spacer>
+                                <widget>
+                                    <class>QLayoutWidget</class>
+                                    <property stdset="1">
+                                        <name>name</name>
+                                        <cstring>Layout6</cstring>
+                                    </property>
+                                    <hbox>
+                                        <property>
+                                            <name>margin</name>
+                                            <number>0</number>
+                                        </property>
+                                        <property>
+                                            <name>spacing</name>
+                                            <number>6</number>
+                                        </property>
+                                        <widget>
+                                            <class>QLabel</class>
+                                            <property stdset="1">
+                                                <name>name</name>
+                                                <cstring>TextLabel1</cstring>
+                                            </property>
+                                            <property>
+                                                <name>text</name>
+                                                <string>Failure:</string>
+                                            </property>
+                                        </widget>
+                                        <widget>
+                                            <class>QLabel</class>
+                                            <property stdset="1">
+                                                <name>name</name>
+                                                <cstring>_labelFailureCount</cstring>
+                                            </property>
+                                            <property>
+                                                <name>text</name>
+                                                <string>999999</string>
+                                            </property>
+                                        </widget>
+                                    </hbox>
+                                </widget>
+                                <spacer>
+                                    <property>
+                                        <name>name</name>
+                                        <cstring>Spacer5</cstring>
+                                    </property>
+                                    <property>
+                                        <name>orientation</name>
+                                        <enum>Horizontal</enum>
+                                    </property>
+                                    <property>
+                                        <name>sizeType</name>
+                                        <enum>Expanding</enum>
+                                    </property>
+                                    <property>
+                                        <name>sizeHint</name>
+                                        <size>
+                                            <width>20</width>
+                                            <height>20</height>
+                                        </size>
+                                    </property>
+                                </spacer>
+                            </hbox>
+                        </widget>
+                        <widget>
+                            <class>QProgressBar</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>_progressRun</cstring>
+                            </property>
+                        </widget>
+                    </vbox>
+                </widget>
+                <widget>
+                    <class>QLayoutWidget</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Layout18</cstring>
+                    </property>
+                    <vbox>
+                        <property>
+                            <name>margin</name>
+                            <number>0</number>
+                        </property>
+                        <property>
+                            <name>spacing</name>
+                            <number>6</number>
+                        </property>
+                        <widget>
+                            <class>QPushButton</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>_buttonBrowse</cstring>
+                            </property>
+                            <property>
+                                <name>text</name>
+                                <string>&amp;Browse...</string>
+                            </property>
+                        </widget>
+                        <widget>
+                            <class>QPushButton</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>_buttonRunTest</cstring>
+                            </property>
+                            <property>
+                                <name>text</name>
+                                <string>Run &amp;Test</string>
+                            </property>
+                            <property>
+                                <name>accel</name>
+                                <number>276824148</number>
+                            </property>
+                        </widget>
+                        <widget>
+                            <class>QPushButton</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>_buttonStop</cstring>
+                            </property>
+                            <property>
+                                <name>text</name>
+                                <string>&amp;Stop</string>
+                            </property>
+                        </widget>
+                        <widget>
+                            <class>QPushButton</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>_buttonClose</cstring>
+                            </property>
+                            <property>
+                                <name>caption</name>
+                                <string></string>
+                            </property>
+                            <property>
+                                <name>text</name>
+                                <string>&amp;Close</string>
+                            </property>
+                            <property>
+                                <name>accel</name>
+                                <number>276824131</number>
+                            </property>
+                            <property>
+                                <name>autoDefault</name>
+                                <bool>true</bool>
+                            </property>
+                            <property>
+                                <name>default</name>
+                                <bool>true</bool>
+                            </property>
+                        </widget>
+                    </vbox>
+                </widget>
+            </hbox>
+        </widget>
+        <widget>
+            <class>QListView</class>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Type</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Test Name</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Message</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Filename</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Line Number</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>_listFailures</cstring>
+            </property>
+            <property>
+                <name>resizePolicy</name>
+                <enum>AutoOneFit</enum>
+            </property>
+            <property>
+                <name>allColumnsShowFocus</name>
+                <bool>true</bool>
+            </property>
+            <property>
+                <name>showSortIndicator</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget>
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>_groupFailureDetail</cstring>
+            </property>
+            <property>
+                <name>title</name>
+                <string>Failure detail...</string>
+            </property>
+            <vbox>
+                <property>
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property>
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget>
+                    <class>QLayoutWidget</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Layout17</cstring>
+                    </property>
+                    <hbox>
+                        <property>
+                            <name>margin</name>
+                            <number>0</number>
+                        </property>
+                        <property>
+                            <name>spacing</name>
+                            <number>6</number>
+                        </property>
+                        <widget>
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>TextLabel3</cstring>
+                            </property>
+                            <property>
+                                <name>text</name>
+                                <string>Location:</string>
+                            </property>
+                        </widget>
+                        <widget>
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>_labelFailureLocation</cstring>
+                            </property>
+                            <property>
+                                <name>text</name>
+                                <string>...</string>
+                            </property>
+                        </widget>
+                        <spacer>
+                            <property>
+                                <name>name</name>
+                                <cstring>Spacer18</cstring>
+                            </property>
+                            <property>
+                                <name>orientation</name>
+                                <enum>Horizontal</enum>
+                            </property>
+                            <property>
+                                <name>sizeType</name>
+                                <enum>Expanding</enum>
+                            </property>
+                            <property>
+                                <name>sizeHint</name>
+                                <size>
+                                    <width>20</width>
+                                    <height>20</height>
+                                </size>
+                            </property>
+                        </spacer>
+                    </hbox>
+                </widget>
+                <widget>
+                    <class>QLayoutWidget</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Layout15</cstring>
+                    </property>
+                    <hbox>
+                        <property>
+                            <name>margin</name>
+                            <number>0</number>
+                        </property>
+                        <property>
+                            <name>spacing</name>
+                            <number>6</number>
+                        </property>
+                        <widget>
+                            <class>QLayoutWidget</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>Layout14</cstring>
+                            </property>
+                            <vbox>
+                                <property>
+                                    <name>margin</name>
+                                    <number>0</number>
+                                </property>
+                                <property>
+                                    <name>spacing</name>
+                                    <number>6</number>
+                                </property>
+                                <widget>
+                                    <class>QLabel</class>
+                                    <property stdset="1">
+                                        <name>name</name>
+                                        <cstring>TextLabel5</cstring>
+                                    </property>
+                                    <property>
+                                        <name>text</name>
+                                        <string>Message:</string>
+                                    </property>
+                                </widget>
+                                <spacer>
+                                    <property>
+                                        <name>name</name>
+                                        <cstring>Spacer11</cstring>
+                                    </property>
+                                    <property>
+                                        <name>orientation</name>
+                                        <enum>Vertical</enum>
+                                    </property>
+                                    <property>
+                                        <name>sizeType</name>
+                                        <enum>Expanding</enum>
+                                    </property>
+                                    <property>
+                                        <name>sizeHint</name>
+                                        <size>
+                                            <width>20</width>
+                                            <height>20</height>
+                                        </size>
+                                    </property>
+                                </spacer>
+                            </vbox>
+                        </widget>
+                        <widget>
+                            <class>QMultiLineEdit</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>_editFailureMessage</cstring>
+                            </property>
+                            <property>
+                                <name>wordWrap</name>
+                                <enum>WidgetWidth</enum>
+                            </property>
+                            <property>
+                                <name>readOnly</name>
+                                <bool>true</bool>
+                            </property>
+                        </widget>
+                    </hbox>
+                </widget>
+            </vbox>
+        </widget>
+    </vbox>
+</widget>
+<connections>
+    <connection>
+        <sender>_buttonClose</sender>
+        <signal>clicked()</signal>
+        <receiver>TestRunnerDlgBase</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>_buttonBrowse</sender>
+        <signal>clicked()</signal>
+        <receiver>TestRunnerDlgBase</receiver>
+        <slot>browseForTest()</slot>
+    </connection>
+    <connection>
+        <sender>_buttonRunTest</sender>
+        <signal>clicked()</signal>
+        <receiver>TestRunnerDlgBase</receiver>
+        <slot>runTest()</slot>
+    </connection>
+    <connection>
+        <sender>_buttonStop</sender>
+        <signal>clicked()</signal>
+        <receiver>TestRunnerDlgBase</receiver>
+        <slot>stopTest()</slot>
+    </connection>
+    <slot access="protected">browseForTest()</slot>
+    <slot access="protected">stopTest()</slot>
+    <slot access="protected">runTest()</slot>
+</connections>
+<tabstops>
+    <tabstop>_comboTest</tabstop>
+    <tabstop>_buttonBrowse</tabstop>
+    <tabstop>_buttonRunTest</tabstop>
+    <tabstop>_listFailures</tabstop>
+    <tabstop>_editFailureMessage</tabstop>
+    <tabstop>_buttonClose</tabstop>
+</tabstops>
+</UI>