From 79d8e4c14ad8fef4470e2abe4be0311b480e65e4 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sun, 1 Jun 2014 17:33:50 +0200 Subject: [PATCH 001/196] SimpleTexturedOpenGL/CMakeLists.txt: add path to DEVIL prebuilt library. --- samples/SimpleTexturedOpenGL/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/samples/SimpleTexturedOpenGL/CMakeLists.txt b/samples/SimpleTexturedOpenGL/CMakeLists.txt index 083e22e6e..cc1db1024 100644 --- a/samples/SimpleTexturedOpenGL/CMakeLists.txt +++ b/samples/SimpleTexturedOpenGL/CMakeLists.txt @@ -22,6 +22,7 @@ INCLUDE_DIRECTORIES( LINK_DIRECTORIES( ${Assimp_BINARY_DIR} ${Assimp_BINARY_DIR}/lib/ + ${Assimp_SOURCE_DIR}/samples/DevIL/lib/ ) ADD_EXECUTABLE( assimp_simpletexturedogl WIN32 From 1403cabb71c92dd135dae542de1fd18a7ddfc202 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sun, 1 Jun 2014 17:34:11 +0200 Subject: [PATCH 002/196] FBXParser: fix compiler warning on double -> float. --- code/FBXParser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/FBXParser.cpp b/code/FBXParser.cpp index 4ea7efb20..f6dc2e7e2 100644 --- a/code/FBXParser.cpp +++ b/code/FBXParser.cpp @@ -381,7 +381,7 @@ float ParseTokenAsFloat(const Token& t, const char*& err_out) // Same double out_double; ::memcpy(&out_double, data+1, sizeof(double)); - return out_double; + return static_cast(out_double); } } From 8b1a6ba92070763d6e1c0b1db6da31b235e5cdf4 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Mon, 2 Jun 2014 01:45:23 +0200 Subject: [PATCH 003/196] Bump version number to 3.1 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6fef21202..db0a9b635 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ PROJECT( Assimp ) # Define here the needed parameters set (ASSIMP_VERSION_MAJOR 3) -set (ASSIMP_VERSION_MINOR 0) +set (ASSIMP_VERSION_MINOR 1) set (ASSIMP_VERSION_PATCH 1) # subversion revision? set (ASSIMP_VERSION ${ASSIMP_VERSION_MAJOR}.${ASSIMP_VERSION_MINOR}.${ASSIMP_VERSION_PATCH}) set (ASSIMP_SOVERSION 3) From e09d88fa592f1f3e4043a8ce131b584068084056 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 4 Jun 2014 21:08:19 +0200 Subject: [PATCH 004/196] bugfix: fix cmake static linkage option. Signed-off-by: Kim Kulling --- CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index db0a9b635..a9bfd1992 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,11 +76,18 @@ SET( ASSIMP_INCLUDE_INSTALL_DIR "include" CACHE PATH "Path the header files are installed to." ) SET( ASSIMP_BIN_INSTALL_DIR "bin" CACHE PATH "Path the tool executables are installed to." ) +SET ( ASSIMP_BUILD_STATIC_LIB OFF CACHE BOOL + "Build a static (.a) version of the library" ) SET(ASSIMP_DEBUG_POSTFIX "d" CACHE STRING "Debug Postfitx for lib, samples and tools") # Allow the user to build a static library option ( BUILD_SHARED_LIBS "Build a shared version of the library" ON ) +IF ( ASSIMP_BUILD_STATIC_LIB ) + option ( BUILD_SHARED_LIBS "Build a shared version of the library" OFF ) +ELSE ( ASSIMP_BUILD_STATIC_LIB ) + option ( BUILD_SHARED_LIBS "Build a shared version of the library" ON ) +ENDIF ( ASSIMP_BUILD_STATIC_LIB ) # Generate a pkg-config .pc for the Assimp library. CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/assimp.pc.in" "${PROJECT_BINARY_DIR}/assimp.pc" @ONLY ) From 8549e4b1b185712f1beffcb39a17d566f9090271 Mon Sep 17 00:00:00 2001 From: EdgarsT Date: Tue, 10 Jun 2014 19:58:02 +0300 Subject: [PATCH 005/196] fixed OgreImporter compilation error with boost scoped_ptr --- code/OgreImporter.cpp | 8 ++++---- code/OgreStructs.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/OgreImporter.cpp b/code/OgreImporter.cpp index d28b2cf90..fbb50cfc3 100644 --- a/code/OgreImporter.cpp +++ b/code/OgreImporter.cpp @@ -108,10 +108,10 @@ void OgreImporter::InternReadFile(const std::string &pFile, aiScene *pScene, Ass MemoryStreamReader reader(f); // Import mesh - boost::scoped_ptr mesh = OgreBinarySerializer::ImportMesh(&reader); + boost::scoped_ptr mesh(OgreBinarySerializer::ImportMesh(&reader)); // Import skeleton - OgreBinarySerializer::ImportSkeleton(pIOHandler, mesh); + OgreBinarySerializer::ImportSkeleton(pIOHandler, mesh.get()); // Import mesh referenced materials ReadMaterials(pFile, pIOHandler, pScene, mesh.get()); @@ -128,10 +128,10 @@ void OgreImporter::InternReadFile(const std::string &pFile, aiScene *pScene, Ass boost::scoped_ptr reader(irr::io::createIrrXMLReader(xmlStream.get())); // Import mesh - boost::scoped_ptr mesh = OgreXmlSerializer::ImportMesh(reader.get()); + boost::scoped_ptr mesh(OgreXmlSerializer::ImportMesh(reader.get())); // Import skeleton - OgreXmlSerializer::ImportSkeleton(pIOHandler, mesh); + OgreXmlSerializer::ImportSkeleton(pIOHandler, mesh.get()); // Import mesh referenced materials ReadMaterials(pFile, pIOHandler, pScene, mesh.get()); diff --git a/code/OgreStructs.cpp b/code/OgreStructs.cpp index cfedc2320..3eaf2df01 100644 --- a/code/OgreStructs.cpp +++ b/code/OgreStructs.cpp @@ -325,7 +325,7 @@ uint32_t VertexData::VertexSize(uint16_t source) const MemoryStream *VertexData::VertexBuffer(uint16_t source) { if (vertexBindings.find(source) != vertexBindings.end()) - return vertexBindings[source]; + return vertexBindings[source].get(); return 0; } From 16ae05eeeb225cd518cee894f7836bf7680fa07c Mon Sep 17 00:00:00 2001 From: Gregory Jaegy Date: Fri, 13 Jun 2014 10:56:10 +0200 Subject: [PATCH 006/196] obj loader: added multiline support collada loaded: bug fixed when importing several files, whith one containing animation --- code/ColladaLoader.cpp | 3 +++ code/ObjFileImporter.cpp | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp index 7e4704b8f..e721c99b8 100644 --- a/code/ColladaLoader.cpp +++ b/code/ColladaLoader.cpp @@ -133,6 +133,7 @@ void ColladaLoader::InternReadFile( const std::string& pFile, aiScene* pScene, I mLights.clear(); mCameras.clear(); mTextures.clear(); + mAnims.clear(); // parse the input file ColladaParser parser( pIOHandler, pFile); @@ -904,6 +905,8 @@ void ColladaLoader::StoreAnimations( aiScene* pScene, const ColladaParser& pPars pScene->mAnimations = new aiAnimation*[mAnims.size()]; std::copy( mAnims.begin(), mAnims.end(), pScene->mAnimations); } + + mAnims.clear(); } // ------------------------------------------------------------------------------------------------ diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index ab5d4c351..65a8be314 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -139,7 +139,23 @@ void ObjFileImporter::InternReadFile( const std::string& pFile, aiScene* pScene, { strModelName = pFile; } - + + // process all '\' + std::vector ::iterator iter = m_Buffer.begin(); + while (iter != m_Buffer.end()) + { + if (*iter == '\\') + { + // remove '\' + iter = m_Buffer.erase(iter); + // remove next character + while (*iter == '\r' || *iter == '\n') + iter = m_Buffer.erase(iter); + } + else + ++iter; + } + // parse the file into a temporary representation ObjFileParser parser(m_Buffer, strModelName, pIOHandler); From 01057f6ef0b65fc1af0abf5840c75faac5677018 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 13 Jun 2014 17:33:58 +0200 Subject: [PATCH 007/196] bugfix: assimp now deals with boost 1.55. Signed-off-by: Kim Kulling --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a9bfd1992..d3324285d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -111,7 +111,7 @@ IF ( ASSIMP_ENABLE_BOOST_WORKAROUND ) MESSAGE( STATUS "Building a non-boost version of Assimp." ) ELSE ( ASSIMP_ENABLE_BOOST_WORKAROUND ) SET( Boost_DETAILED_FAILURE_MSG ON ) - SET( Boost_ADDITIONAL_VERSIONS "1.47" "1.47.0" "1.48.0" "1.48" "1.49" "1.49.0" "1.50" "1.50.0" "1.51" "1.51.0" "1.52.0" "1.53.0" "1.54.0") + SET( Boost_ADDITIONAL_VERSIONS "1.47" "1.47.0" "1.48.0" "1.48" "1.49" "1.49.0" "1.50" "1.50.0" "1.51" "1.51.0" "1.52.0" "1.53.0" "1.54.0" "1.55" ) FIND_PACKAGE( Boost ) IF ( NOT Boost_FOUND ) MESSAGE( FATAL_ERROR From 7bab8cd4d9985dd4c0f2a7c07cdd963acff92adf Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 14 Jun 2014 09:47:01 +0200 Subject: [PATCH 008/196] workaround: disable config for boost. Signed-off-by: Kim Kulling --- assimp-config.cmake.in | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/assimp-config.cmake.in b/assimp-config.cmake.in index 0cc380bd1..1b68b4f18 100644 --- a/assimp-config.cmake.in +++ b/assimp-config.cmake.in @@ -44,20 +44,20 @@ if (CMAKE_BUILD_TYPE EQUAL "DEBUG") set( ASSIMP_LIBRARIES ${ASSIMP_LIBRARIES}D) endif (CMAKE_BUILD_TYPE EQUAL "DEBUG") +# search for the boost version assimp was compiled with +#set(Boost_USE_MULTITHREAD ON) +#set(Boost_USE_STATIC_LIBS OFF) +#set(Boost_USE_STATIC_RUNTIME OFF) +#find_package(Boost ${ASSIMP_Boost_VERSION} EXACT COMPONENTS thread date_time) +#if(Boost_VERSION AND NOT "${Boost_VERSION}" STREQUAL "0") +# set( ASSIMP_INCLUDE_DIRS "${ASSIMP_INCLUDE_DIRS}" ${Boost_INCLUDE_DIRS}) +#else(Boost_VERSION AND NOT "${Boost_VERSION}" STREQUAL "0") +# message(WARNING "Failed to find Boost ${ASSIMP_Boost_VERSION} necessary for assimp") +#endif(Boost_VERSION AND NOT "${Boost_VERSION}" STREQUAL "0") + # the boost version assimp was compiled with set( ASSIMP_Boost_VERSION "@Boost_MAJOR_VERSION@.@Boost_MINOR_VERSION@") -# search for the boost version assimp was compiled with -set(Boost_USE_MULTITHREAD ON) -set(Boost_USE_STATIC_LIBS OFF) -set(Boost_USE_STATIC_RUNTIME OFF) -find_package(Boost ${ASSIMP_Boost_VERSION} EXACT COMPONENTS thread date_time) -if(Boost_VERSION AND NOT "${Boost_VERSION}" STREQUAL "0") - set( ASSIMP_INCLUDE_DIRS "${ASSIMP_INCLUDE_DIRS}" ${Boost_INCLUDE_DIRS}) -else(Boost_VERSION AND NOT "${Boost_VERSION}" STREQUAL "0") - message(WARNING "Failed to find Boost ${ASSIMP_Boost_VERSION} necessary for assimp") -endif(Boost_VERSION AND NOT "${Boost_VERSION}" STREQUAL "0") - # for compatibility wiht pkg-config set(ASSIMP_CFLAGS_OTHER "${ASSIMP_CXX_FLAGS}") set(ASSIMP_LDFLAGS_OTHER "${ASSIMP_LINK_FLAGS}") From 8328f79b1eb93730785b342c65d3e57fe438b4d4 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sat, 14 Jun 2014 17:14:12 +0200 Subject: [PATCH 009/196] Drop VC solutions. Fixes #292. --- workspaces/vc9/UnitTest.vcproj | 1891 ------ workspaces/vc9/assimp.sln | 164 - workspaces/vc9/assimp.vcproj | 5260 ----------------- workspaces/vc9/assimp_cmd.vcproj | 1501 ----- workspaces/vc9/assimp_view.vcproj | 1642 ----- workspaces/vc9/shared/DllShared.vsprops | 17 - workspaces/vc9/shared/FastSTL.vsprops | 11 - workspaces/vc9/shared/LibShared.vsprops | 9 - workspaces/vc9/shared/NoBoostShared.vsprops | 12 - .../vc9/shared/SingleThreadedShared.vsprops | 11 - workspaces/vc9/shared/UnitTest.vsprops | 17 - 11 files changed, 10535 deletions(-) delete mode 100644 workspaces/vc9/UnitTest.vcproj delete mode 100644 workspaces/vc9/assimp.sln delete mode 100644 workspaces/vc9/assimp.vcproj delete mode 100644 workspaces/vc9/assimp_cmd.vcproj delete mode 100644 workspaces/vc9/assimp_view.vcproj delete mode 100644 workspaces/vc9/shared/DllShared.vsprops delete mode 100644 workspaces/vc9/shared/FastSTL.vsprops delete mode 100644 workspaces/vc9/shared/LibShared.vsprops delete mode 100644 workspaces/vc9/shared/NoBoostShared.vsprops delete mode 100644 workspaces/vc9/shared/SingleThreadedShared.vsprops delete mode 100644 workspaces/vc9/shared/UnitTest.vsprops diff --git a/workspaces/vc9/UnitTest.vcproj b/workspaces/vc9/UnitTest.vcproj deleted file mode 100644 index 45203ee56..000000000 --- a/workspaces/vc9/UnitTest.vcproj +++ /dev/null @@ -1,1891 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/workspaces/vc9/assimp.sln b/workspaces/vc9/assimp.sln deleted file mode 100644 index 15805344a..000000000 --- a/workspaces/vc9/assimp.sln +++ /dev/null @@ -1,164 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "assimpview", "assimp_view.vcproj", "{B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}" - ProjectSection(ProjectDependencies) = postProject - {5691E159-2D9B-407F-971F-EA5C592DC524} = {5691E159-2D9B-407F-971F-EA5C592DC524} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "assimp", "assimp.vcproj", "{5691E159-2D9B-407F-971F-EA5C592DC524}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unit", "UnitTest.vcproj", "{9B9D1C90-8A03-409A-B547-AE7B48B90F1A}" - ProjectSection(ProjectDependencies) = postProject - {5691E159-2D9B-407F-971F-EA5C592DC524} = {5691E159-2D9B-407F-971F-EA5C592DC524} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "assimpcmd", "assimp_cmd.vcproj", "{7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}" - ProjectSection(ProjectDependencies) = postProject - {5691E159-2D9B-407F-971F-EA5C592DC524} = {5691E159-2D9B-407F-971F-EA5C592DC524} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - debug|Win32 = debug|Win32 - debug|x64 = debug|x64 - debug-dll|Win32 = debug-dll|Win32 - debug-dll|x64 = debug-dll|x64 - debug-noboost-st|Win32 = debug-noboost-st|Win32 - debug-noboost-st|x64 = debug-noboost-st|x64 - debug-st|Win32 = debug-st|Win32 - debug-st|x64 = debug-st|x64 - release|Win32 = release|Win32 - release|x64 = release|x64 - release-dll|Win32 = release-dll|Win32 - release-dll|x64 = release-dll|x64 - release-noboost-st|Win32 = release-noboost-st|Win32 - release-noboost-st|x64 = release-noboost-st|x64 - release-st|Win32 = release-st|Win32 - release-st|x64 = release-st|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug|Win32.ActiveCfg = debug|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug|Win32.Build.0 = debug|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug|x64.ActiveCfg = debug|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug|x64.Build.0 = debug|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug-dll|Win32.ActiveCfg = debug-dll|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug-dll|Win32.Build.0 = debug-dll|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug-dll|x64.ActiveCfg = debug-dll|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug-dll|x64.Build.0 = debug-dll|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug-noboost-st|Win32.ActiveCfg = debug-noboost-st|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug-noboost-st|Win32.Build.0 = debug-noboost-st|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug-noboost-st|x64.ActiveCfg = debug-noboost-st|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug-noboost-st|x64.Build.0 = debug-noboost-st|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug-st|Win32.ActiveCfg = debug-st|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug-st|Win32.Build.0 = debug-st|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug-st|x64.ActiveCfg = debug-st|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.debug-st|x64.Build.0 = debug-st|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release|Win32.ActiveCfg = release|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release|Win32.Build.0 = release|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release|x64.ActiveCfg = release|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release|x64.Build.0 = release|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release-dll|Win32.ActiveCfg = release-dll|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release-dll|Win32.Build.0 = release-dll|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release-dll|x64.ActiveCfg = release-dll|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release-dll|x64.Build.0 = release-dll|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release-noboost-st|Win32.ActiveCfg = release-noboost-st|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release-noboost-st|Win32.Build.0 = release-noboost-st|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release-noboost-st|x64.ActiveCfg = release-noboost-st|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release-noboost-st|x64.Build.0 = release-noboost-st|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release-st|Win32.ActiveCfg = release-st|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release-st|Win32.Build.0 = release-st|Win32 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release-st|x64.ActiveCfg = release-st|x64 - {B17B959B-BB8A-4596-AF0F-A8C8DBBC3C5E}.release-st|x64.Build.0 = release-st|x64 - {5691E159-2D9B-407F-971F-EA5C592DC524}.debug|Win32.ActiveCfg = debug|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.debug|Win32.Build.0 = debug|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.debug|x64.ActiveCfg = debug|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.debug-dll|Win32.ActiveCfg = debug-dll|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.debug-dll|Win32.Build.0 = debug-dll|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.debug-dll|x64.ActiveCfg = debug-dll|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.debug-noboost-st|Win32.ActiveCfg = debug-noboost-st|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.debug-noboost-st|Win32.Build.0 = debug-noboost-st|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.debug-noboost-st|x64.ActiveCfg = debug-noboost-st|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.debug-st|Win32.ActiveCfg = debug-st|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.debug-st|Win32.Build.0 = debug-st|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.debug-st|x64.ActiveCfg = debug-st|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.release|Win32.ActiveCfg = release|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.release|Win32.Build.0 = release|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.release|x64.ActiveCfg = release|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.release-dll|Win32.ActiveCfg = release-dll|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.release-dll|Win32.Build.0 = release-dll|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.release-dll|x64.ActiveCfg = release-dll|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.release-noboost-st|Win32.ActiveCfg = release-noboost-st|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.release-noboost-st|Win32.Build.0 = release-noboost-st|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.release-noboost-st|x64.ActiveCfg = release-noboost-st|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.release-st|Win32.ActiveCfg = release-st|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.release-st|Win32.Build.0 = release-st|Win32 - {5691E159-2D9B-407F-971F-EA5C592DC524}.release-st|x64.ActiveCfg = release-st|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug|Win32.ActiveCfg = debug|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug|Win32.Build.0 = debug|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug|x64.ActiveCfg = debug|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug|x64.Build.0 = debug|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug-dll|Win32.ActiveCfg = debug-dll|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug-dll|x64.ActiveCfg = debug-dll|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug-dll|x64.Build.0 = debug-dll|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug-noboost-st|Win32.ActiveCfg = debug-noboost-st|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug-noboost-st|Win32.Build.0 = debug-noboost-st|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug-noboost-st|x64.ActiveCfg = debug-noboost-st|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug-noboost-st|x64.Build.0 = debug-noboost-st|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug-st|Win32.ActiveCfg = debug-st|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug-st|Win32.Build.0 = debug-st|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug-st|x64.ActiveCfg = debug-st|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.debug-st|x64.Build.0 = debug-st|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release|Win32.ActiveCfg = release|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release|Win32.Build.0 = release|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release|x64.ActiveCfg = release|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release|x64.Build.0 = release|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release-dll|Win32.ActiveCfg = release-dll|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release-dll|Win32.Build.0 = release-dll|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release-dll|x64.ActiveCfg = release-dll|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release-dll|x64.Build.0 = release-dll|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release-noboost-st|Win32.ActiveCfg = release-noboost-st|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release-noboost-st|Win32.Build.0 = release-noboost-st|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release-noboost-st|x64.ActiveCfg = release-noboost-st|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release-noboost-st|x64.Build.0 = release-noboost-st|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release-st|Win32.ActiveCfg = release-st|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release-st|Win32.Build.0 = release-st|Win32 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release-st|x64.ActiveCfg = release-st|x64 - {9B9D1C90-8A03-409A-B547-AE7B48B90F1A}.release-st|x64.Build.0 = release-st|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug|Win32.ActiveCfg = Debug|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug|Win32.Build.0 = Debug|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug|x64.ActiveCfg = Debug|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug|x64.Build.0 = Debug|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug-dll|Win32.ActiveCfg = debug-dll|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug-dll|Win32.Build.0 = debug-dll|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug-dll|x64.ActiveCfg = debug-dll|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug-dll|x64.Build.0 = debug-dll|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug-noboost-st|Win32.ActiveCfg = debug-noboost-st|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug-noboost-st|Win32.Build.0 = debug-noboost-st|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug-noboost-st|x64.ActiveCfg = debug-noboost-st|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug-noboost-st|x64.Build.0 = debug-noboost-st|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug-st|Win32.ActiveCfg = debug-st|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug-st|Win32.Build.0 = debug-st|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug-st|x64.ActiveCfg = debug-st|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.debug-st|x64.Build.0 = debug-st|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release|Win32.ActiveCfg = Release|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release|Win32.Build.0 = Release|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release|x64.ActiveCfg = Release|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release|x64.Build.0 = Release|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release-dll|Win32.ActiveCfg = release-dll|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release-dll|Win32.Build.0 = release-dll|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release-dll|x64.ActiveCfg = release-dll|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release-dll|x64.Build.0 = release-dll|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release-noboost-st|Win32.ActiveCfg = release-noboost-st|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release-noboost-st|Win32.Build.0 = release-noboost-st|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release-noboost-st|x64.ActiveCfg = release-noboost-st|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release-noboost-st|x64.Build.0 = release-noboost-st|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release-st|Win32.ActiveCfg = release-st|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release-st|Win32.Build.0 = release-st|Win32 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release-st|x64.ActiveCfg = release-st|x64 - {7C8F7B44-C990-4EA8-A2A5-9028472E0AD3}.release-st|x64.Build.0 = release-st|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/workspaces/vc9/assimp.vcproj b/workspaces/vc9/assimp.vcproj deleted file mode 100644 index 120577b67..000000000 --- a/workspaces/vc9/assimp.vcproj +++ /dev/null @@ -1,5260 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/workspaces/vc9/assimp_cmd.vcproj b/workspaces/vc9/assimp_cmd.vcproj deleted file mode 100644 index eb0a81066..000000000 --- a/workspaces/vc9/assimp_cmd.vcproj +++ /dev/null @@ -1,1501 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/workspaces/vc9/assimp_view.vcproj b/workspaces/vc9/assimp_view.vcproj deleted file mode 100644 index 78a07c9b2..000000000 --- a/workspaces/vc9/assimp_view.vcproj +++ /dev/null @@ -1,1642 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/workspaces/vc9/shared/DllShared.vsprops b/workspaces/vc9/shared/DllShared.vsprops deleted file mode 100644 index b19c45e7d..000000000 --- a/workspaces/vc9/shared/DllShared.vsprops +++ /dev/null @@ -1,17 +0,0 @@ - - - - - diff --git a/workspaces/vc9/shared/FastSTL.vsprops b/workspaces/vc9/shared/FastSTL.vsprops deleted file mode 100644 index dd1a5f575..000000000 --- a/workspaces/vc9/shared/FastSTL.vsprops +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/workspaces/vc9/shared/LibShared.vsprops b/workspaces/vc9/shared/LibShared.vsprops deleted file mode 100644 index f5ac51231..000000000 --- a/workspaces/vc9/shared/LibShared.vsprops +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/workspaces/vc9/shared/NoBoostShared.vsprops b/workspaces/vc9/shared/NoBoostShared.vsprops deleted file mode 100644 index 8b28b882e..000000000 --- a/workspaces/vc9/shared/NoBoostShared.vsprops +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/workspaces/vc9/shared/SingleThreadedShared.vsprops b/workspaces/vc9/shared/SingleThreadedShared.vsprops deleted file mode 100644 index efbb6515f..000000000 --- a/workspaces/vc9/shared/SingleThreadedShared.vsprops +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/workspaces/vc9/shared/UnitTest.vsprops b/workspaces/vc9/shared/UnitTest.vsprops deleted file mode 100644 index 1f93b380d..000000000 --- a/workspaces/vc9/shared/UnitTest.vsprops +++ /dev/null @@ -1,17 +0,0 @@ - - - - - From 1c4a8e90177a61740a5665bc31ba027c4a65d4db Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sat, 14 Jun 2014 19:00:09 +0200 Subject: [PATCH 010/196] Update doxygen documentation. Drop custom stylesheet. --- doc/AssimpCmdDoc_Html/AssimpCmdDoc.chm | Bin 81782 -> 128901 bytes doc/AssimpDoc_Html/AssimpDoc.chm | Bin 766003 -> 952607 bytes doc/Doxyfile | 2198 ++++++++++++++++--- doc/Doxyfile_Cmd | 2664 +++++++++++++++++++++--- doc/style.css | 445 ---- 5 files changed, 4268 insertions(+), 1039 deletions(-) delete mode 100644 doc/style.css diff --git a/doc/AssimpCmdDoc_Html/AssimpCmdDoc.chm b/doc/AssimpCmdDoc_Html/AssimpCmdDoc.chm index c81fa6e531c6148053e0a13d4716e984c73bce0a..5bac786ff407c8274b1fd43c0de378eb4291591b 100644 GIT binary patch literal 128901 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 n2it)600000000000000000000000000000000000005wN$z6IO literal 81782 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

+!Gu| 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 diff --git a/doc/AssimpDoc_Html/AssimpDoc.chm b/doc/AssimpDoc_Html/AssimpDoc.chm index 66a0b7446cfbfd8c68b47f9304242a534dbe13bb..ce8c91c99c9f4888848f75d8100a0702fb0da4de 100644 GIT binary patch literal 952607 zcmeFabyQSe_%A$^N;d-1AtekQ(y5fRwB*p;DGc4Aw19NCNQWS$AP5LZi6Y&CAd>Ik z0Y&}(?!E83*1OjI!^0XrGf#Z>v!Ao~K6~#o9HdoMq!2(LkUs1M2YY4tf$NbGK_IMS zIIkklx7g`upo~{k3v1Yad_J>3I|u;)xt*h`2=J!w98bDsX;9r6kZI6_~Y( zri!YhJSglz<_*{z9B6! zAqMLiLre^ut(^3%Y)wsnsO{_kgO()gLS#I!9>ndZ=Y^_u%^{bO0IX-OXRGJvk#Rd4Q#k1HXI%dz9ZZ;ujjfY`6T}$EB(!vl z4H`s@3^p{GjxPKfkpMW^0JG zA;iJ)Jm#3MimyR5{~Mok+sNa)e&4P!|84wxd z{=uC01u=v1KeF-5;hZ`zUTKo!KTb9AI+B0seBEB|p~{&YJprm#V=Tj0E+uo1|} z*2>m_)9H84`N#MTO!z<~zia@4&%;X4RtbuqO4xP4!Q73*jpGlF&Cir0XoUY^2GFc0 zyZXIi{F8>$?axrYzDGVV`;+F(44~PnV-9$#bKV+Yq1rpc#y|%f*p=yzaE?D;Z}TDg z8O|j;faq|+0(!(u_S3)xV&r7&!2SmdG%!)KotWS+D}V#)-+}=hm;ICE&&)uBSJhtG z|4G7eUL$DWxT9aJAv#b7N^I9|QW^I29-&Z2bOl27ivc&*w=C z(Xf9?&26lJ;A)~6pf9D)%xz4}O@Er#4%!BFJwyQ;!zKrS;n!!tf10(l zxj+*=uwX(v2Z+(H>&$eeVl0ReY;5kJ$Hr=4$jSjRG3MmvGUhVjF=FTB;(@(4;xaLU z7#ee*=cqWu2^wkvxN!6GLHJBKIk-64O(5(h+=jedu#XT<9zITXZZ;FHbC;4Am~nW3 zhXEU}F^>_%7-GQA#b>~6$i~CUYrxCK$!-WS;xynouL86rPbgUl@G#*r;$}7E;ovqh zsO9pU`K zW3E8EaDNGbE9*C`G;wUOv4erBt&O7{?2>2p;|%%v9@_f9P{9NnyW2Rz+7ql*I6 zSi-)EB}t%xA#P3(oAV3yR2nnXA08Eac6q%x=bbtF+ng9+6DJpTLn{Lt%k$Hod-Xor z523NG(S=Ai&;tL5%*58p7~=3-Gbz3kV1|2137c77%m6CD0czMkRIs3(Y;27o=Y-D@ z@1p~9*gW+@rWI&`^FwI;hjpU_)CGvs`VvR;ZKw-Ca!J_AdLQ68OVi~NUtEDg01mrL z=53Zx2oNAFujWpM1`g-Jblmj24JcsKAtx(yn~TU_D&EHgn>gE?r~AjW6k5@M@R}KB zej(N~JU{J~0jw1`mlZ}AifXYY`OAuniB;tn%v!6<3dp%fRe@)f0^X%EAU4j{=emwD zjU@8lbS?(x{Sw-->6#{Rnb72da8jm%^Rm-f_~*LDXyO(nf=h*+>3-I#@r`AU{9oFi zzT3Q&5`Sqg>erO*RU-J8_M(zaZ~4kN{?cAV+;n19B>R`v^gQO~LY`N2e`(Lx2GHj1 z2cu~P-q7SV~=r8R>=YDY_)1>*A_TnPY)<|8*|CiSJoVji8LB920 zT9 zAd2t~UL3v(juLu~w>z5T5-Shcl ztu@-qii^ha{M4tIou>7v=xeUvSszpS`uG4&CS z`No&oTnv6L%3g-MLaW6tdtJ1o`fBwO{>uut^F~zv38#SIvcmmb(GW`iyTao_Q7M%F zTLLcHW5avP8ZbK8)XLV-!0I9^U5R)ZhL{&Zy^Ab%)w=k-x%o?eG2XojBuTTx`DuPO zuQ@Nazt|4iV(?3KX~gc^h0C~cN%L#GeiKguO;G(+%*EjMD*I|0*DsGtgLUty>RZ^% z>%0Z%97crKbuZ=q|6?k|T+?V>NA_z5y5*vuTZdEj7Vc5#Z! z%ZZ?27I@%`Wu6{vTjF9uGx?UM&jtUd${6Bk^mDTHqWM;x*!;w)htj>0vpe669d&SXVB1b0!tMi^dvVbrsg95g&cZN8)|Cn(F zbjk-+I%9yX%uUUHZMU@5->t*M2E\?MutDnKN*P-}jD&t;K{G3L2jO(OuV*b>e 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
)Co{k$L6&>zTieIj? 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 mZ;ZsQ7h5IH418d*z@a!ixHk{(-yuyM^ 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
>aj1~)jTJetHf9M@EZ*)6-!=^ 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 $JG}7olh7S%9i|GBVL zC`&nJ4v1jIg#=1#r+F*HX)idH ztY1xz|1Jnt^)XxkKoAfE00jUuMo=RF08eFo)h^&9!amq;0MhC>Hw1{raEL(L2o`H^ zAqu^%=G)5*VPod~_Zj~H7@;B~kpO^$12Y?OW^;Y4b7s%`LV7aqVH@L;o-R(OZ+DwF zeQt}V?oP|l0@LEiYwl3fLISzSo$k=_RG{1y9rQ!fQF5n6k77VNty3z>qY%A zHd2im13^iQfCPvnSP-cYK}10Xkg!N#Pyh-cz7ME;gndK|V(|r-4+BI|;fMlxIUtaT z^Ee0MjNk)&0wh2qkkAJ};UWnSFan@3Oq@dSnCt@FHM1zw!jckuRRGTjUoC!FJg96O4EuDS&J9Gc|N3j{O*%mN{@X~LY2`gMRJ0PioLKB>$=TF$|B zWf={a*+H86eY8U}9hX1Q&Mhd79Km!^NvbW{{OQzhc9!5y^XQ^p3hYOzE<2TwL7FbB zOVjY^W>!g)y84WxOLshbDvaICzS2XQUH&aWx8CuZ2 z(Mehi@rbHtz>TSQlnW~LWe}If#hTg+bm7(UUU743?GE2;i$_*OT9dR1+56bg4i4DLv)FkYkbw=z>u@~CGZ5N8}M_svM# z68)po!M8>QD*n%^J)w6cQJzH-!aZnIPgJkB^MfN}ulnv)ANz2q+y9(;LPqwzz43A? zhY;+jp;~HT)sEs<*R60-?2orohR9I&smpJlgG;WU9;_m+HAT;7|60OJwE07Y>XW*^ zYHUvG?Mesu9O7vZojO_F<*ZLCe`Auf3kCsiaC$~i9prg00�&jq2a88(G@vw`*TR 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�BGTviCed@SF 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%0DxS8*%7!Fv%lHtl~S+T-d zC7KEDu*QVMJprz8n85#XND^cv#vC|y-fO77wGD+FN^@P<)m>ZP^I~OuSDxM{hs21; zb59NbMaU^e#iv&|?y_33v7NC&*6v5B%U`Q&9}2_FwSWFr^(U?%Ya+BO%ZzOgFT|DA zvSNUm^lv8U`HE7soW$kU zaz*|Dmfi0D){OcA)FEL2nCKE^tg=>CM084th!jQ1fFl4D&tL#7R!@j}AsY9jH9TMM ze%3d3-uW9l7ST23&T`{JFkzNaSv4zGIV%XqjG>4aDS?%!T9yY<25C#mXRg@}=;mQZ*HGX3*tlHdK zD`+x4klcDeIRSM-Wa8wAzYLV}Cy8+b&lL7Z;2EvP)a5H}92iy{OM{HD7X{Q&%1IGj z)_72EqU0*MSTC-mof=UU+7u>jo|3Dk*FjMcMp8?gB~P2-@^Y-QS60NTs}IzmMAOhq zSJY1uz_P_@1EznCh`~zUt!+Yx;P}Qz&Us~qry$Z40zoB<1bzt!(G%k^YCI(nQZg~h z85BD2j9t;vRfxfSRb<6lQz`v$4pWg~5yoyOlv`5GvdU+;zC%cfn8AbqzL6H-_##p? zKuHVPPw=k%JM1462+Al+Xdk#eC5Ex)Iv?vH{02rB?nqA*!jE;~*dX^4id_8H@ zH1ux0r=For>FS#F7JW~DqD^SfdY^h)FRgxtg~3C7lvWfbvhK=bq};98bju_dD$CHy z$$0@71Dsxw9xBVe135L#P69+U_>_z>Y<^M$41lqrzhXW1D9t^E$$g}9tgu&2`VWV< z7^s>_pgMaD*#9tu1oS~NR#_`63pkWSf&wXE$^zmjFv;!-B2SAhNSDi zJTy$oX66JFvA`NvH)K%R+8XB}BfR2L!{ad`gqT$pp_PR|mqVs)ksuc8N;DV5i3B8e zNt4S03=?BmV^qywk_NGX*`>4_vlD10riuiU$Z%B_st6RN-2_GGz7sa;RhFQY z5|zdga+dCAH6{<>YJ;gJF<~J=*N5<=SOI4?~l6I-to*Tq{aedV~-`!=5&4 zo3-34#29v2(lg0j>cK_$5kmw)3e22DNO8)s4Y${S*UXlZYbdy}){6h{aqcj8%I?7j znu0Sc?H!?ZZMzhK<9%l4{Oy6rWeBWdR#}BsaLPq&mpaV zyc7O1-oI!daW_SNe1wPXWGW&ap@Ek;P{^TBxT2cI7)OX!fNB`T4m9(sGPO-scx#r*Mti0x^$ncEWRuq+0 zB%!&4xPWiKNoIuT%&RF(lI+~iNkvTE$1>a!{xV0uWBC(3u?g}bw8~oVPyJfSj+SS? z(=>02R^TYVbDDSXGPT#2tPZiXWC9XNS!juAz!af*%qU75n1l$VKK%mS?`a1#KX_2- z-QDnr(9_oO!+~}<URg~8C@4;({R<5vLom}kI*L~M_Rb~K4XBtWGJ0Xf)!rzU%w!vg z4Evgx+)|RYyTevl4_DO00s4P|1`=qv{_aQv+_y0uHQp$ZK}Vc z_iXdc5UkC-yuEO9=xqy8VU;SU(S2y12dZ7+3b`&b9^fnx7y`^c~D15SY$ zGG;Rc3IBrqhX?Nk#CvOpRe9<6oNt0SKH9Q)YCoi6951e@xI?eoHyjFgP0Gvn3=FTA z>~7sv72geKyWk(nIPYphraOh>@}h=YuF`NW3jclNU$2aHkrhk~{1v2Xn<78>je_sP z=1|$s=Gq|d&~+d9Up(N=vc5RuGEmM8oFg4yI!ECTVIdtHe{;c`N7&uun*)MPb4&O8 z+mZ8nVu~?5()epO!(9C9tm1ZQqj4ny569hsR0_9enebsy&UsOR`~Rv7ft~RC<+mn= zTSy(3-X8NmJMe_MkCTUnRM*ru%8x~Bbaa}e%$Lp#>V~2Q-Gf4av3K^HoCd3PgD=wO zQ`6Jb^XUrum0#1PRMcqGI?IrAi5Jjsso?QFnj&Hl%kup)r_5i0Y( zx_SM~-LU&Ic7^ZXYq)VJ?t)cTy>TKluchGsoR++ zdTL~*OL}Y@lMK}^asHvtJy%oR8hMm)o=W)npx21QzC78uv5#7~99RYX_Ec=UaT3S7 zulfE&zm5*bF>-+mda;tF_Gf8R*Bg6s@0!;wHx}7y=S#d8$<`Y*v?*&dIk{y{Hiz83 zO65j*XpQ;fXswDNNKqU!AFWb5Qef27Uug8d&C^<#ohpYt*Fk7zRJcp+twwZs$HWCI zk|9@Urb+8A8M*LClYPx4^lU{T_tGv+B>d5Q zA)A}{z+vd`oofs!llAd&b&@wefH)=B!;?!U-ky{Fj*tChu&%t$tDZ`CI)f(Jt8knw zOl|YbqmGiOc@(QAt=v=HWL!|i094&)K*9HFJfAD+P!6|hRI(#m2fs|C_#U@{c|;(J zZl8qzTn=Q{BO^9j^*<2gey>e;Uh?1lVv~39bCS%626JG7w3`iG%!A+InNd3?XUdE* zG{vAdgQZL%=>hg#abOvqow2HzK>6jzccr{MN5-@6B$HRcZ}`5}>H5}TsRp;D>N_G{ zx`Ik_K#q$o{MU%6)2TFQeh?R@=Jg(@{oH?fbdtFZ)g|b#L|}zVMkYE&mi+@bNyq_u zz2W7xSE_My&yLfjkyI?3mBzXGec3YN-jeCqhFvksf;qNOq4qIBx=YOpb63e(xZf$@ zs=uFcJ}*bXNIRkZ%0U_*7DYQi|IDPUT9r?e)q`f0-Ids` z-ehD0S(sqb`r*v%=*AOfvBkTxW=(EnpReU3@2w&axz6E^976r{zDq|NR6c(}^jr4j z^W1xMUpKGK4{P1$(+9e9J^XW>d-VUdE)X{Ig{B2-o2hz_eacrS(xPYVWBxSsUA6G= z+^A3rz2O_w`0|IinvK7HZ7U%bV!$)|!z5;`O%ytIOBI*B?we)Dm>qfBqbdbDHoiiW zoh>r+etfJ`ll15w_Y=1IJ(e^C-ErL;`f~eA3wrG=1L_pV_6%s6;uTw+JOF^L{(a!i z3Gdpsv`>C3s7oV)Pg}H=WN4?CVA49LZ0y6e0Sv%*HrnJmnXC-0UnDz^==#phqQV}s zU3-;3z}cTe3-Pj(<*ZeC3hay9w!df;uQuE5c=zW86L84Xv=sU=JDo3{dQ<&wy|uEO zzlTv$5x?TE)@kK#kZxrMNbK+)I;NG{g29vLb|>G%IHryrc;Tcv22X4>+;Fa73iz0^OOAodwtBVuK12Y%1Mhzz4{i> z5aAaz!wU_@^{=)o!qolV;olWbg6p)(@eXi5oGUMEl*3;^Db^3>&mY|ru-Q>2+rA#! zUtSRNP3p$f$yAdridJUVKAFpl=@9*UQg(^t+aTLBe7nAY%aeQI9_XQFb7GF)W9Lk= z(6Wdh{1&~*o9sJvb<#ezFaR%0L4ZdDoyDaILC;tr#D{4-gHrAt~Qaz{?=x z?1uZ#K9+DDebB(G`V|M^-nQpJ!-z`B?jeBf6A@%&xtNL%`aAyzQp1=E{7+rVP9=|Q z+MR`53p`!FwZHNIPmg)D3>yP?LRaku`A=_AZLx2=-ro2NRBhh$r?!!7;10)*0f{); zBWHsNoYLsoZ6GZPn|+J(ZZf1H?Bv2L=c|q&y2{S>_vMjvrBU6}OF@`ZE>aO&HXV9# z@qRLaqip3BKXziq;r|A5+nkVzApqn9y?dkz9D{S_2I=t6-hY6f@D7S0Hd)h^PcP>v zVLc{r6Yo64^Bo@FpQ1psNaJ?Eip_ve%(|ia`+A~y*PB*-Hu6VxJRTJ7g|5kte383& zDL@a{O9i$FHS_&EwnCSfDM#)i?&-8Z1MI*gDQ;VK%cqx^1ykCz9X&1`qmB-e-0qkD z;JNnn*FCfuL+{*)|AT;Ez{1ZRaX-a!k_#g(F~2cvw~4&TaOv~n(3|uDeM1ir!9?CM zgTH*SEqm9>%s;QNxLKl6o#9c_s_fVaEqmc-6UKeCe%V!NF!3)m7#I1YY!= zaL#;L3dEH80$v}&41}%q>e@!e1;=;dj<{wWOnHHG{FTFnKR_^S=c+FLa^_MT`+OOm z(s+Aa!)|e}bJ#EWwcb=>e78NNiiWk?blbS^xY84Nb2GEt-g~u`#(0M_R)C#kGe2IA zSJ$oMyE0Fi6fYnK2BOo}C(xgH$8IDS!hW&^U>6ec) zSJ&_Ripn>$RTD~7xRy7`S5*Lj5D)_Z001&YMKb^ZZ)J0pTfoxDjcFee_V)(t5+r5= z3}8XR;_-;Z-d%R@%Sx^-K--d-|9<1Y03$O1G$Q~|U;q+pdQIEJu6~t9M6u73Sm9Ur zI0>!RAIYc^qdqn)%LoyG6nlCv+1jYx-AlH$wfCL1@Yn5fzIDM`yG%}7s9m-!In)GZ zSj$!h9MV>>t#bLuGXNWsBp(yhM@c{+003qLplA%>{SSBVy|(SOx76Lc?(VnRv{mkA z-Pfh1rLL)+<<=mi0E}$RKt-gWg0cdVsY((83Z{_NU@4Xq1bl=oASyv50e<=c2L&JF zew1%94(F;m;Yu=BVsp%-4E;>P!vww(R2Wo;hT2OW0~vK#*%`xl_!2=sq0m?!$nrI@qs+N_ibV~}4< zWG{`vpgcgHxL0p+BLV@Sg9ts-mM29p-OykXth8NiP_Z4ZSb@szrC`Cuz32y0K^%c2 z<^_=)3HM^dsT(~U9>P9Oz`L7zx|8CY)q*yzhO>*c>%T${rq*vTY!dVwAzL-&o`&$B zW@D|aj4S(2;4OT~OJi|C*yYCSLGRejHE6ssCEmM%S8#>h+rB>GNHbS%n*rc2eULuF zD&vPXpGm&Yd-~@bCyhU}(MZs)uDWpDBFKsHY;iR^am{!d@62UQd%B^!u#nl=eis?- z$k(r@hTIFZ@MF7;@(CEY<@lkDXP>of?l!9N9sf{2naXWx;br#n>Ap8hDT8t0@%f5y zoGuLT%=X=6JInv@V6n$@@qCckD^5TYF8&{nt=Hwg)OQ`Ln=RNsyrkD)=S=;M=-8n_ z)q;gk)hUQ;x;EDhFWqkevz`G(P0&#?KfS04oe&d^vIj&+yF`@9omF1pyZj9Fe_^|7 z<(@Z7Es-$D&~4VvkP_fTpe}fk<446y%w^9c8+XKuBu^Z-C-t2zkV}I;-2{} zczC?W%V~_PqOM%J5)7;EK0#ILjk;xaS+spHXxn!7vU0~vN{$QS>j+4wAfT*hNrX+Z zBnbrxnCY){&FEm~HPn)O`*ADSm3};`*X28yPPTMWEsJP&v!Jq3B#@t%nptVj8Fas{ zp-X7ec{3i(t(WP}^J;yalU|%h>!{s&O&#b~-yf=#<HB3RI*lX@n4FxMbTa zhOzuHaLY`debWl>6@9Uc#Jt|7DQj8>dxwXKfk!FCHIK}dxn=uxt#jI1lh`7k=XTC< zoK8e-iHe*nl}Iovu8jV=X%X2h)U`NZWmAd{!+dt8X4Esws(gGHesT)jD^}f8-XoCr z=%dooJ@J8svN5fmafIjvZEDr(j?CItxcdXEcg524tz}8UttIZO-ck~$d&Kp02yw+_ zQner7>9j%I5@TmS`XCN-B&PuGN^ij6bb>Mcj|P30^3BK)+Hx(Q)Rw7hd6%!LJ-TX5 znKe>oy5a1d?zZjPBxDSW;dcD8Y!te?9Zo-2N!<5u<gf>NL_#3S6R=XP}{0;?&0y$_KoZw zh33R>S~<6Z)q?WqpW4I;-*?*fJ6B{w+&puo<_4R3*AqY0ByFxC!SL|iiJ>*x@zQsL zN?pY+ZPc}vR@xt{J@yJeA`zc(yHfGPiYffhx+O3nRHjGjLb!{(Rj(1w1kc^A33W-yxBe5yRKJul+6*#KS|1`l%O)0&$JI|2nR0XbtSz3o`%w7Tma5REcT7+#f7v1JTGnmO_L>>*wvlY%IPAe zH^3xOE|eodyC~~EzP2^wtp5e{h(79zfp2KR%1w)RObd13R{(xMfxnc=ZkO^Y+#>9| z>xO6;Hh9`t{4es@#~!xFnt z-=31>bvfFDzKWY2C#1E4sK#R?y6|RSwj!{oL_m1fA9_w%>`MG)t*s(!xZi7M*4|lI z9J=+%X}@d^t(s0hEFdP5X_UifM5mE@&gkHA?ja8`S@$*E-fPI>1o8g{T;cTvy811) zXD=MT>AkEdcWxPs72f67&;C})wRq~*xD7UZ+_D2rb5$+;)oehMAr-ZruR+S&{@7G} zk+{ZOZ!NI?Drr>$yia3?2Vt5^xch;|sQ$?T4US{yNfeGmH4u`7n2Hf1T_7bXQFIXb zBW2X-FBmZA_xEeb7kczVeF?Vgy^byiUGkJJ@RR>y{xP9`2z`#^#BrdK=7Dh|DMGBv zBzaIVOi?rUxQ(j|PzC706(V4vU106AZ2wMN*F}Q$yoCU`TY6ARtp9 zBzReGt$UEyN%BR6n-|2m91_GCT!E)`+_8uSJYEjOtR;sv=+lCT7bd*TA!q4y zlL7;gfR4sLY!O$2&YKGZNwSdO4EBoF&7x_)Sxsl+#l$RN<(fAF{tY7rAcP^LJ!_FD zwFtD~C3P(nd%W5L=?0)B?Y3nMzkbDGuUm9yEp(M+C zBBfXB=XVeSk|oR-5YAgQ2`*%m9^yf9yN>7RaEcX#I*B7e-e3k= z)gdi*$Z-`EJ|7qGl}<7<=CJc4o*;<{gP|ObCE+>*w&3w4J~-v*pHp!JGdbVNI1vj zdcsN%QI5UnAkxwpjp`gLv>lrMU{O$p(}iJTlH4XDOxmG#c?%@MPH9r3Lk@e+504*# zJQNGDFc#r3S%f^#JfloU<4lbXC~9QyCzWZX=}be|z;}pzL!;C{Le%)uzpx(2f}JP# z`)RK3Iz)UTji_gg%e2rrV==|JNUp>%Ycw86(<)q!C~S1+cX)5(2Tk*aL(uf7WO^ZX z>=GVwIGv;<$B5g&lTP-?MSJV#aXFc*bXQ&IGa%pHG3YcdTNiRB#xdNH=W029N5}YL zm}5k|)&qMA8d+$bWC?LP7?x-?@5SM}hrcPgf&2F0v}%q%1s>_c78XdV$Gqr|CfVM> zDbyeZ3V{OkPpZS<>Zf}M0rZQV%}XQQEY(`oD-+!suKN%N$=#j0=lnKFhJAT*q7E|{ zlC7g_E}dYFMoYA&OnS}rDY?6lZ$DQ_(RJ@T6}5@`R??Z4Dv%4>dAADrQA@=k^zRz` znH8#DzxJ8gU>g%=ZutRP(R$jp22FFhu5+quY7xTkXX6g2-oLYP|5$&5T-hbivuaOC zs~YdSu}xROxR2RUOm2>#pW|2MyJqwDBG0kHNQ2Y$9E+J_Go!5m$q>a*kbodJhKz!s z9KYE4A;#e8d*$cwuZHB7RX6(ZmPYMhpB#OhkGLcD0kc&-yjShJZCcW%w}Kf&tn660G<=I6B#K*2;E939FlhF8 zRY*Ib!R&YWFiPevJbNB3D~&XK#SK6QzMLb3A_Zjy@d{8 zl+Z(3AQH4ZW*vqM_dG$Ad^Tdb9as)H;X%|+D@g`f)$JH!CiW>zuVl5ex;YYi&u?nk|LB#N?P_WZa zrFc)ndY}sGDiY8gii9A*)UAf1YSB6(Nef6$z;Zt90F`WzLStpM(~@MEofeA*t7Wod zjFzp~V}w9vqZ(_c<>JzDZs%wG7FnGW_ZH}h5F-f5YVtU5CNSc^mosG&GX;N|Ra2zm zDj+bnqN<;>%4XQzShtty)t7&l8jV%X8+;FkAd>(rN{zC@_b)LlOfsLbIJguEq!JS` zY>`qME9Hr_^)^-lN${_pd|sv~84{wRKmR((i*pqBcp7!8S{}WklI5tT5e{A^bH*WZ7X!Zm%lxr|@l%0v1QzFz~j9n&JyR$28-R>Y`=lVm8V z+dEk~YS$p9$55Db)$oT;!cAhw8OF;hFi=DhebJ?YH#OIZkXMMoUuIRNvyPR1YpFE$ zT}b?{YOw1+IHwTZZs}n!@Z4{<7wmP)9q}U5R_*s%Gs#sxHM4)Q3z8l!!gj7G=*cpA zM_7kqkts)1TQnY*9?PMZrfjNnjuN*TzEy=MIhh}`^@_bA1 zCTPI<(ndjWalr4+{XP0?VaiQ;NA`*QraHi$6C&h#$wj2y$f>i=_`eN>PJCoRM4Z& zJSfEiuGi%LUXOz_RY9V%U#9qr-NHgxZiPCv3}c*5K>9KEpae`8B_&doUXfWZHCDFn zQUGjOC6+s~k2cRCGmqxW-d!Iy&y2wD!MnPNA+BxwXMciByjX04>ScaJmo+z3<{W0< z-2bX_9#7*Er7@s^D?03181ldW@ZiNqWQ4=7r}duwzOX+OVSr6vvE>TpG)(*Z@~$+7 z_H+0@C~Ss#45m=itXnBS>4h(W+RZ|lRFueT0$hDW{VJ-^l=+!*>2tsI&Oq6x{*cWB z@V%+VXaCB;<`wEHwfgYUZkQCU@5E*AgLi_A~Q(bKpI2yV0y(C~3O|L_ql> zr$B*FpcE*d=nH4zs22>>j(Ex*9b)+Br~TUF48`reaL)-s$2Z!`=hHJL@-KE1jU5#A zPrsrv^f}(1b`a9@MTI!To-g}73keUM7Zh_(GBK_$bRsoKFBh9<#|E%m;7iQMcI2X$ z?!XHux$~Bvf%a)qWu$(>sdTw8uDgGTXaE3_pYtBdI0C9_5jX`Ca;WS`2oxv<3V{Ns zMuK0pw`hz|eC1pywu4{W4sXMt3>5shciqsvf}#sRY{cZ?c;hTI%ZsB)5_%K>DNMu* zA4ITZr6Ko!UM63h<47E?L-nZ%K)mbfN33$+iq5f;eF{(zM~FD2FvrX(2*j;$06-pw z3i+rQXFU}%lf;5^KygC`DMH*Ra%q$pMbZMY941Qc_%R<;gX2BNiugn?syFqjY3ip5 zb;pHsKV@X5H01x)mRxk%WSR*&L(6D=3twk_ZnC9+?L@S#ULLYia*NhpQ%t?KRby4->kCqa%^o|4HUsU^O6x6OGy=6coD;2DFwxA^d<6=D z0!Km6d9W>$6Jl^&PHhG_{6G1(GX9~w-$F$~1sx^e zWhyIL&^*VGunhxiS`;k;&Rk#0bR-e@l#fBYglHvts&hTS0*E$`?lpF{j-ODBQlHG{ zqx~;awy`ug97v6j3CWpJmOuffaM2T}2#v})ULDPpfpxG;I27apR_aF^MaqZ-=DZj~ zhfxFsKr3Km6mv%G_t>m3HG!py5=aV4A{1tXNlKocC1--%fk?M1m5v3h!SW^OjJ1!- z`+lP*8#p3SfGD8?!^Z&zD6xoOQ2fWuOWg5ItJ)0dJVQaL=_$-bdT>t8sR5PgX*5)yvFP3_%5RO4@j#-@m}}+9 zcm9LtS_A7dmgV~w8LeIGy(Y{%2}nPi86;%TZMVxa_TAZL8;i26?oCCp7{(LARe-N- zDk|ewhmyeanlk?VKny@B&+H!X3`$2i1qu`b1wesBrUugoaeUi;GqB$Q7Yn z35mjm&`#9x+BxqCovRqn^4bkkpy`LJ{Hn}u?{9blRX~AIpzBbZQzZYTX)JL+*VwQo zm``lm_M$R1m(QY&Q}Z~`5Ta#l37&D`Euvjb=Ee0t*N&W|%l_+!fy*Xd1^?e{yM4v~ zRJf_#r^6T$3Lyv1g@`0PiXbLVXyZLxGfR*ZB&a1C{yT>tW45Ct2HhZHg^bfh=TDLv z)l?H(gMGP9cw6(t=Sgz<-I3gPs;2(GkdkBSu@BBlhrTAG;bNZS1wyfzL>Q!HdIta_ zqAbqd;eO&ea!|Qa__xXlAYAd$*SakOFTciqE|dlrgIgi0Zm(NB``0MK2?Qlhi9tXb zWg==u0$>h>wN-QH$Vuy480xdC!jFd5V=H8Us7NAqI^mz^CTl{{mupNu*yl5E}+*nXuUG{~m96Im|p#5KuML>a2pwTIqk>^4qVQhT9O)V97rz6R5A_FxsOC)I| znt@{5Py1D^j#gLb(w`eg{bjfa)c*`UN{U>^yCm~885K%_0-!+uQ?a2(IoKQ*;vMC| zRznT<1c^62VUC?(32+nqQ7swWc)~CZf)Ho?wYWy7F7NgE?VPA%Tz6A_XwwSAzk zoH5GJ6p}P849zhBc_&#(JaHamle40tXI(J~|FC=&)0qrE{Z&?tVsMy&=mG-|VS>II zCxo3K4@*ml>-p!Q`^Ej_ck(0va1am!0000oMMg6K0AFPt)z$)@G(-cthwSDg0tY!5 z&a;7h02XgeEbne?-@BE(Ez-7kO8@~q3|tWb0Na5~GEDM#$l0GIizAs$@$k8F zO_SWfLe`vhT0yyT)u@i-LH9v1l+fPpX;akKxb|>SuBzGTr*NgJ>87WTix5Sv=$cM! zfV9vK*wWz+q*j02R#vfIEQq-nP5C-L&m{&wKCMZeW``y6(NZ zms>ZN2|H<)xY$Rxa8uF7s9DfV^0YHWD7Z4B$1fNu* zkPv|pRI2f69Hb*)nF0HOFm&;{=t%y-NcRh#j)T0%kxrvCHkmgr3Vp_oTe};TD;i>F zthR9kU;h;TY89W)k(&%)w8=o=V)6y!FY8TY`Z-LZhKYfrutAiqBmEl#ooo781Mr#` z_q`JWcX`K?6#ZmUSEE5Kq64SRi0?PLS;k+|DV@)sv!qV=&I_MyGE+^vGzeg zX6@hBIB=?Wxita2w6_-1-29Zd15cy1QT%!2B%?&&{`6|;7%B1+wRm(GxfU1KcP``iZEpL)fI7`j{2>kWeQD7a_BC%iBsks&^7Y zd3jVB(a_pk`C%XoJ8p2*WiVJr1SmOY@e9`(EnuM-X+%;RBN*zAZj(48qD%=A(!)T& z#mMHfa+Q{xi+&0=bRWms`rcM`gy$MJP+RqJ;jJ3tlSsCC=+aM2dHM`5L0iO57SCE1 zt}tFtNXsO;+@1)gk-=Fg?855_bX*`T7AuE&X4Vx0TL_(M1W%^iQbzX8xR41g z(9(xbN9i;%Z7xD5180Q`*BLF6g@;iD5CP4oMhXJ(E{>I=CxH?u$di~WfP%5BZS|Cx zOGp;|eWbmuDsWvy0Oe{m&q}ZgDIz)2BwKzY!jzn|E`{rimYybwaqoh}z$s9YL$e$g zd5KD+C5uX#M4mJx$0<{fGMaLCw~08s4390|XzG<=qHTl1TlqcKHDJM|0B1Gl()#cjEMy82ukT6D}mp(Tz6 z^nl_d(xQC}z;({`?w~=o)$2q_WJbw8YgxGCXf;Au;|Oy*L?9di3l@g#i7H+pJ)Fo2 ztS??op(S5+AG+Q$ZIR5JaI)xF7F;a(s7@zwa?RzWWp+fG4iF5_a~!X!p+hkx2@WPK zc?3WzV9X)N>qi;RvEU9-*O`)%(b3GZh~O00NGVfFBd{cEF$WAo96=Ju0>IHmB|$Vv zch;an7A}}LO8V_=u|WlUt<5r%Nwm;-Ip9uwx)|=K)-|>RULh}plk2mVg*1*xNrIv- zcTmpFqeDATUx5iFj#f zj1R>np#w>om`SI~5cGoX8iHG9#k{n|Y&(&;(I0^rNfqZGtaH~x^Yl9!{5-{ zzJAcXzK?P}0nva_>x$qoTc9z8qxu#{%ua>XS^>{4(4YBEx`)+)UTp6q2sIcBp|i>S zjT01=8t$(k?OJp8Hz60+3Ey+LyhkN$;HjieAbAqz+R(DLw~k8rl}m{s)CciBnZGa1 z#5TMIAP~sxkq06&AW}S~M>!@Tu^6f2K~30gq^G>@vAAkAraV4PSOG<;6UQ z-^FM;c+xbJvuK(sHasie!sb%~eycIZHpA?)14il({V%oJFSUKu<}}Ip({sXHSRbh8 zYIWcRGFgR-`kVhdO3DPC(vw|2TopxX0^kSK+dPy=(gMGmqaqR~SwKX7!HfF|7uUou zwmeObJ|7cM(|kU|kEa^hPj<56+O(!vlK(j%S!)=-w}ZIQR6A0W^bY?s`>baryO`>N z4aa{SUtLqpfuf`qWSN>We2?}mYfo+OjQd-9G`mZ6bF49HEKl^a-VV6koxSPQeNqj= z_wHSKymwgJQ=4f!5ss%`^iNy0`1(JBHnKGO`yydjX;Tl^*x$Ytaalgw=a%&ftZny9 z^Rg_VT|sHz>A-RuZ5oasT|Qs+Qre*$hO=k3M?QU(tA^tquljc>Jl|vtGVZp&B}yg) zfXmtiR;YJJdM~$ommu>BUpH$*^H3i-G9vqXz3wxZRYC&`c(#%Pq4vlBli%cC#j-uG zM?~-*KI?fd!5!C-1Itb6 zKTF`Ny>ij`*8h<$ouswX6+)p~N|w5IpjkG+YW}JL#nedU@1bi#qxAByE1s$CDMl}| z6+o*P@71yagD1gNKihCVp2eWHC`OWltXDo`FJ;24ceC7K#e#%NyKERhBbLB`mM*c) z&Zd4>ajX!UNbQN~$cP+u6y}fpl_oL@Lp4cD?&K?bwOz_hb!31C$Em zwvK;!;VfevL%&>Jv}_Fqxp-z&38ZOj*-o@Ia}~F)$VtwtRie^tV_Z+qB`(%$!Be|_ zQ+2Szz$jCc^tC=u=l&;`hw4P0x3!Z-sV6o&+b0@A9Fp5q@|}3mnbtb1w|#u#MNPsT zxG>S?_ka7>m6{B7<*RO@n+OEDpBjA_4*F_L)EYy-8=y7L;Vi51bnEeYy5Lq)pmT~eb8-Qucr(SPrcp$ty0#GSXsYQkYQxkJKIsNsdzI^V2NIz*|%4{ zzro>d-_km-ivdq9@))Ac0<;w4-rsAD@S)Go++$&v8ojL{&79rQtp2`+Eo& zuDj3in<3Wsvtsx5@qnnt5$Vr-nTnHr{!?rk_5Wi3onbZnjjV7BB9R!>{^^4{jFXt; zzfQ(oFg{k5sL*!ZFaS4&uEzgSx&$3 z$Mw70GHan7uy%klQ`bgcE-ObhVvj>YQ}Sa~NM32VV9va|K5@j) z8rtqUNaWGrjBA6B2kJUk^j(sWw1y!_AiR>pkshtePC-+ndid;L&iZbPRNc3$tBbWZoBOR*# zR5xIJ9*h$=$h(^w;G%DtfLv!6%5MGX_iN`6zXiRez{^fn<98vlo_C0Hlwvj?@%sf& zw|Y)=|0R+nrV;HU&c^tY{E)N~<4cEr+Oxzt{HH$fYuH0jI;0|T66l?uGQ{$D*d0(yu6qQJa({`2EY4u+Qc8X>#qiya~H|ILFb$7ryT z;neS)wzB-2@AY2d$#<1H;No&Q02ZmUsCWzTH9?`IRD)tT>gFIAy6mSE9h46u69Y+pT&2_ zdT#R*PR;nAd0*I(lG|M;`CG1QRGS5HEV^<3(h^%~YZ-69&AJn5ZImjfn@N}3c$|#{ z77Ckir+NX(X$9}Fm$#~QSJQ8Xt2Vt~ecAwDdvnUvOowY~rpdn=rC4vUZS#!q^tT=~ z8V}T239B{l?=|WxorEx;UA8Qchi69YBb*^C?ZG#?t{CVyM`KQGkl;Nt&#X}oxG%}z zrdh-LYxjA_yn&H}3mZa9kOyga#BNtRJM&WMd-<$jcG~|iW!e4TTj#JTB(OxbpvsQv zC@MwXi8Y;%zmETDAB~5FA%~-R!2Ge1Weoqr*;8ljL}`!CwBA}-Lki~CSMD$A11to4 z@`f98+VWY3GZV)bqM{Lh0Z!G(Uo##X;3eX~5JPiq8oXy4&P^QJ=ockjDy+?g@-r4$-;Sf7b#WyuvNRHmZ0;$MTuwWKuGd7#62x$OyqZwY5SPC0%1J4;>4-DKzDTOj!LBnpUEt3~By)?*mD zW`$3M%)?0ZvOU8XV%4gvT545b`K&@mtoq*y?r)|fp|;@Vj-5?6$3ud=B(#R%cz|wq z(dms;ga zADmpBEdn~{-WyvpZpYE+A`hstIEumn1Pc}PNC8PPaWS?ir3l8w9aVI5%xbTOhn7)) z_>%YF%)L&FaO;q!p_=y05tcU+fmnc%5rMoEY7PY@2@(?wmuqkB$a0ap(`0poI(2I*&<#S~oRl+cT(n)EgVULe1L>2#$&`M2E0D zq`lduUg3>$oc+AvPyanDo% zAgO7~ZMz1=>lx@*;VtU(G`~tESH5eWVc20VSDy@9Q>LyboFu1Wp9=~l5U*CA&uIAj z4neI7V%4gvT545atp|=f6=*{^LORey8Q?8n+}kK|WM{(xW9#h=Vg~W7#CM7GnF%R` zUq7@i0puVg%J6znP1M4s0R=>Xnl0c<0|^2u;t6~b`_XW-JzrlVMeY$7reX=NMM!l= zRN(eG{e0qgJO@4BZzZ_^ED`sNOwN&g2kaPKG0&2&ED|y&Vg+Gk%{inPCQwM#2^97S zI%pys6p8^nQwZb+pNrNzGpZqb&8C7x(~wIUA3q1~>mSD}hz8k)mQ|u+cwi+9i+yPN zEZXk8d<5z^4k9E;6w^=%$Y^H-rfl@sRAo|#qrIz|MU)k_Y7`yR6e`|^zI}H_+_YO_ z2zW*Dqz>ji7&)?5L_l^#Y#QFIxrnp_1Ou=w%m))9DPdTI1tuqkaioN=5iE(3_zvqD zC$HH}&hGO%Tr?ud^WBIsT7gh-Y0&x??H(CJJ^ksM7-U8PO0Mup}k}Ry+luQtq z4mUOdXi^k7dE1WdTOxa_Ps*EFgBAnkO47284$rSg!wV!NxQWz!@*NDLMOqy0F=33C8ol0~W>X%a|D zM478~H{_6WLvGL!G7T-jMB3_B2XKASvJ!-q)!5vL;%o8 zP|d=SP)d>=2oexcq1!c2Cd;xqWfJetf7&fUHnG`%Y)AM)X+TkA&9uAC3z|->xs0^q z93+#7a!OHS`B|K?sQL^jhiZ}-Md(T$P(x?I*=QC~wzuEtH(jBFE240H-|c1mp>{vL zv;b2mmftnBDSv4y6JhLD#6cz{?DcW7-O$*8#Pk6eRp?c z3!xNY*9_Aly5clv9Ruz^b({WKN7ifXZGdeWHO6^yV^`6|d8Rrl5_{R0Cl8Qh$HI3o zSnciirUc%Ln-nb%)G=TGbW6+xN#@noG73rh<&4S})7RN_8{Wo0#J83)P?{RsP6(!d z6mzN_QythKMe&C~c@!24myP9rY)Uz>lb(^7Cr6f19?`nT8|1Bp!tUy?g~Q<5xNke2 z+RSHB#9EZ+4$1(h=23WRQu1hlKmYWaIxg`U9@jmhv!bN$i|K4nFq;FYgkats&e0yQ z@$`A>_EwbV?*)V@;te_F2Xrthq1;n~&Sm;kb=Xq{`sR*XeZ&LNN|#tY`VpQlVF2I& z2oMkh0000oQ${oZ0AFQ3)oFoJVsJwDwB39JutJA(NRWh4R@1gZ<9GYE?~~le%$S>r z7T>4+_b@U8035JDwz#Ep1+(*h2x>c;zw2HE3r< zKE5C0T+Y4kGp=%%_kEm<%XfNxA{P_kboAgI}f|m&!-rBcLEJC`X7l#5VQbQ~V7m`93h*e~b{Y zlcp${PM+WeJujADXJ0zkffrdl9jUF#seZqqCuGp>Vp*B!lwSL>#0Y+&5y1wY{yu4> zdWsl$xk)$l&>93wKV_!UeNpnt)Hniv5x%l&!jJ7Ckwt%TIiIkAv$2b(cD(BCq(lwW zPLro?WgT>knvs%w!7JW9#KPiP{&wd^G19kB*?jYBGy8@Ae=Z!cv*u$r+P(l)OPN?x z{^jq=0Crpp8XfDqa8Yr4r?vPS;RyXwgLTH^E)?io!_l`0NWh^+LWz(f$s$pa0O2e! z(t@L;QH7wjHH@GN3Dhwq8+kV$gnhuj9CoC&1I9RH)};n$r@=`t((udLMw^yrRN$*Q`-#Qn0;1Dc^o_Ei7VV~u`hwi7#YY;rB z+Y-1~()kRIJ4;}SxtBKs5J(6fC}navl9uCRQE{ZNi9rcW60k&qt)psDl?I~l`tvQ^ zJ(?g;X5-WnK!SqKH3p@Zi7jz%)cWCLZlshp%6Y^X1 zG~hBf@3&HJki1AOfV3Flqhk01t=SS zXDdJ+e~hK2G2Egi4cW@H*}U> zq+Ly5RTZo%|7oXU5NQEfoTQ1#c}XN38F8!-w7s*;-KHGxx`{WXt?7z3~4J&oe`1^ zhm4k4z@ud533jWgb6O>$RmV{1evb~y2F=5qWr6}+k{J*O1A#Pt8zNx;bM8iMeyqUT zVDP(0rtcz5arNPV-#`y|1HmPLCn}jX%O-+q7Kmg%oN|(s;9ttuY<^{D2GuXzYi;=0 z<50K6)8>XGd=}G%_sjJBtPZej-AmV?*vi_r$ibQfzjh|i0_sl=P}Gg?rI(X)Vh0t4as4Tji8endHX7aL=heT+H}TY>@V8NYM$+x-@59~ zx}Ei{zLa!eRq(N=n#Gkq9Yw>;f5_Y5PW-xRQsN7=LWCqZro?QC9zspR-k0(L{1xe( zd~dp&J}ZbDW1Udnb!n2O$E2KjMqAn$xr)kN0+i6jiZ+~w%K)(^>xwdspG-NnbT7p+^yZ{?6r%>mX_SA zgYLVFSfYQbyS&JMI5utAMujkSoZ|hNUwOGFa-LLCp0^IHzm11*{KTO#7W^Xz*_hNx zbzCRm2v0xkAC34_y<`KDl)qresdMCw-M2*c)ifIx65mfAZ>(Iwe-#w}$f(Tzyd5LBuB=&QG!kNDaQqho9ARXw@xN)f{|W*41vB4g1Z` z+^Aw|YVLUQ`>d*Jxvj%}>Uugg4xMDl-fv4bmTV$azva)Y99!{g0rD#THHZWM z(rM7?;F67kb9^0YANF;RNWvyU(vKYtf^R211n`pKS0|m_Q(SPg?60at8)iK*5ccC? zi13xqe!lbpW-mbzzqAxcOo4x!Pt(fG@X?L7^Q;bE#)c-Xm<{IJ*SMT_^Q^{x>jlj8`!e9C8JgZ2xWx0ZiKUUblS?>hV9D~$#N@&|gIw2r=f$giZ_x0iRRf5lauYdLnj#f$TBA&nLeuq^6LSj*iFLtlT>(k^<`{}BGzcTM%s?)S*8 z_kE*xac=5ox6cc1F?2xYWjBD&&v|^wzT@Cj`j-~lyaIRp4L*rv zzXA^aQon2Um+H5ix9;tl-`c)y&s`Tv>#{M{){C*L(_5=C z-cTqtBVX^nsofE8bv>Fp+Yb_tAC zRBB6!0nF)(T}3g@RjRHf;9y<$#2ln9XC|6=kEtc|Z4u+RChw-jDD4q-$B=;l+H4myiq#s!a* znhCWK7o{{MlwPn>oxW?n!v&H4UZg4u>P~wID9a;xa@mqO7?VgTE{FwlN6-}&(fo98 zDi~TKt~<~Kx7R|meWQLCC7(zLtH}3F?={z2$c04;I(aT~PR-bI`s}Sx3#@cP<8Li+ z?U@W!cRmL~-j&0@?qV|+JxxHm5(XxxHRAHmYv$XTi^Xe`Pr|?{5SyO`<^<7br)S8- zeRmV+P;-H6EX~iop=yN`E>+HNc~Jfi#BjB5dW+b<(<}b<9 zr7kOASg5K?=4e=p%dVE1p%uwSsqt^%=#O?2n@c^d z=-5#J?JQ#L-9=B%^?$XyNJ{Yo??U|Z`Lw%(m=Se*M&$DYxMmCW2Q8Rjyv@jroXZ+a zMN(rN0FO{4L~srqj8d|)Kh5w#8U_l0#ELg}ubA=q`1YF=mg=zEwscMn+wGnAjzmem zw86rrSE5M``aGkcp09P(I~s~^aTQFeUbtO(al~x`?G|H-vDC{;qWxythLsb?i9Ocb zj$_Iq_G}04dQLLOX+3^HSg|LAy|@?k3oXFDvUbX*O&JknDNANS*#$qT!QPq9I%)qk zo8E7>(I7I%0ky*z$f$`$h@-PZd4;$s;Zl&GDQ}DQWYx>VzK2BeaoI8KKVagtmNdsr zk5DgnF_mtHEVRJJTsE>Z)uJIYtz`j=uD%a`k1S~#a4^l#;w(%!yk(m!9LkiEZ$oDJ zxHTEMeF6ch(UNVgHq+`BFuz)a5x|{q7JuJ5k@<5ZJ2oam--{)rJS9h%9dII;>1F|e z9P)>_l^(ANTbk-YEW_i@YqY@wr-#e5t%gNvsW0s+ucq?Jfr6TuNkwGM0ShpSg9SYZ z%FoVPW_9i0lv+^?i|tgal9H84xh;B$@|#sK4W&gR91Fxv7%@HKH7V=Xz(uW6fP~j$ zfsmde;mtN}Pvej=h>axDBs`F>1Ns`ux-f8}7F5H2wd_kEz>81eTaKXg&zJ+m7`N>E zdJsB2{`TBrS@(HGu4TWHkFD!|4)d0t>~D^^(*RSfekD$1-vCJGev9aM*X8{oqyyCf zQpdN?$0OWwzjH%(j4oc~+<8~ko@x2+oOjh8qp*HaLCBWjl5XdPJG}uW@r*rxqKE0Dr*g*w7Wzx|abXI|jlJ5eJ=nTUIOlgXZ*{#-;NMzCNK0#7 z*!J`;JJ>$@8|gHdZebz4R*eNWck2HvdrzwNb>xP4_I1MoZ4{j zDrC>MELzR{u5a-07FWQRW*KOc{zysDpxx~TA)=a%uT)VLRZ&HrS4WMd4GqTYDQWtF zcZs3*Ug%n)C36Erua)?P>VmFJWy`#Aj!P)L^<%{`M(0-Bp_ek2ix$<-W;t5NuCwgP zCN*cN;>N8a5*(H7r3VZVOgewhCiRmla?gapR~Zphy|67=LR_~l-IlF~ zTaD}MT9Si+dvRp>37{$VEM^(c?s}G#1Ch++IOpM7maYqAdT4|@N(&91xlJ#d-|dhz zzKGt2P0LyK0^a8U&drnPzYZEee3p@fOy^S&&=f|rU$gNY3yHV3In6;@lnzBoqUGyR zZyhhk@)zOS@P?28Oq26D%jIZhcO_cqIJR%F^tg(3^5MdwT4%J*OEfzF1LA7)Ap86~ z^DNu#Hp6SM(|(z;0Y^5|wA!upa$u&lELL>_kuW8h8kz~BStCIa3?4{JV1q1izz~>G zs@Woq?S3~?zVw2d6qbr9@&{O0VECZ_g4pRocH?r-pkdvH*sanEAbh}vEo)hc-3dS@ z>E9?ROc5540D+<$2vBg6ByWqY#K9@|JcI5rb1Jviupg}>xYcwtB&L-tVAQqtI?7gI z0uZJnnHky`hwwRp@Zu93VAb0uF~cQ|bbjCKl%*f?%?q7tn2uI9wEEQC**K-9g)Crq zwJJWLUssTtJ?d4Lux{rk?1`0^1#sN-g>I0>r2V`+o6Qq6b0?Q&9$6SAN!AH ze0F{5pd?NlIe$I0@PEeDX3%)Sk5sME^=*o5wgi6Aqo6gw;HTU+n4PKmYi8X8;NCsB zzsvBrchj_>?Z+7s>}8}3(T1I<0A3CSds*N zw&8JYI}U&v{$o(aI7xULdU=~plb|7qii_~o#UsBza`v}#xxPHC7ch-K__pAp4^jTT|8CK~S5ojr-La?6N~{k( z+~0$PArZ7M3PGWIo^mGGKiO7#vl+c>cfv-VljN4!z@zGCtqb`60wMt3-Cux@LA#xJ zu>YsEw{H2IST@!Fv>~s`s8g445UYAlQybsqsvH-2#AVHW`ggHx>fJl^SO;3itOB>= zTwC`M9B^T&5Tq=JP)fh~zoE1d{Z%fx+YqT4ZLH^X+NXfE4ZYWtEc4Hz$A9S&1J>C*Hc`!yDh^nyM{Jj4BTv$el=er``hH-?cRaa>~T0+>bTIt!hHj z*Ksz5yS0>f2890Ul83Ud<~I-6`|*l&>X407uB4CTmateDmU!na zwE*DnUBWu)iW?;Iw;EWxmW*`noz&+G!peX8esN722i^m>7@h!FcW25Qcpsi3+@DTI zUe@+8HnD=n)!%BH-svDd-@9IygpgeT!L~EP`Hp+;#svjKNT_PetE#AqDyX8)t5D^o zNQUx>-kt=hLGY#ShK!Cmp?aT44VP8{sv>8&3GT42{O*+Pa2xH_KR-q0(s7r%wMDY1 zm219ZZO9up3JuhqqxJ}dv0tcWYi5+YYQk6|RMeT}o+$zKo9Vl92o)7{dA}KOeU1Mq zIdcdV6;VZ1RD2b)5Zsv`Br7Rso19j=GL-m$TPNhN5z~^!+b5P+|Pxy|j=D5T9 zgPemv)?SM0P!k>z(-A=+XGMV%0Z5Y=aWG^dlOm*rhWhFjb3+Pkd~QnIQybQ_mEhH; zS5kPSOh^(`HayNs)Wl3Q$U>xmZXD#4g~fh3YmC<9)|4Pw;O}cJ(F3k9EpiZ)#fR&h z8eC@|)%Jun4}G;Ybzt?6=QM8OhQb*pKHD*z;xTEFdW16X5 z4ETO`44*cD(Jh{cjxor$O+f036OR7Nu&6Dy=M#(js?*qVs$uH}dtD23Msrz4ozNX~ zWzHEZr~FxenVf@@!SX6s0Bk^$zrE90b#+L6aNQ%USvqfyDeG@V@)i=wu?K_moP;QP*>LUXzIu!VvM7NOlIxsw#;eYK%GCcST~M-BR}q=?ixVXgvgbQ$w}(C39WTXad$eV>_u*GstFhe{LEN)*^LN9U5C5wm z(34b3{nQr}<{%8txzA8#WM^(($99H;jFybrkmsYehHKU5<{opJ%@BSe)jIOF%0>Sq z_`r_}rEOtb-Do-Tcp=gsAAU~@{NmN`i9kXy26tKc^xUl6lK|nG#jWi-+h@m|2E=tS z1|xRt@)S+cQjfWWERf<3RD+JjHljQ@BUfKQ4pSI2XPx51B=_3*$i#E}~YN+1|5uyMnImR=1 z6VY@unYVVEY@yN%Q1%3B09oZ>s*y*UY8Vb@#{&jLN|-`U@Monr1M*|6cbMscCQX-A zCm?2XfkLSpdX}a|$cX`%V;kZ)XAU67B)!o2nyhTr@ZCYl#o99I&U2?ayEOwQm$%KL zHxL3}nIVx7ETK)L-9U&1G`pG8li^rDgHnsNSNyY=a2tROYjKXLWQtgtVMJ%)5=cfC z=Qv3g6zJ0vC=CGxWv$6HV}^>9xy^I@8+aA*{yOd64?Kp)qemZ zGXOL)09IfCQ2_0?Xi`!1ur^JU`7M7fsuiV?6^W~Jrxoo=z@{{mK`kuA?LBvESa7)K zFD)8yt({+Xr7e&TUP1y`#q#p8Ins+fStHa9!?FvCj|B^rl5ck%X_D{Nd&xxe002e+ zjAj7f|DgSSw%yn5TYv92ec!is=r&eNOZWA<)tZ-d?oO%Jb7ahx_mb>pDzc*@5#S4y z1q+0>FepI`izTEKBpQ?O2V_3LKr!Si1r_i`1Bf5sfZ3!FL=c&Y6sUq4>?^H=uhD^E z)1^p>tgwrVUsb{utw%qP`im9wtzfVtgayAmmSOTJ@p4eq=GGf7*rvk@7CS@NO#_m9 zr*9hs#-2_@kQM4aedfCb z?HZW~3V~kso`T8-uD5E;`MeZFc`#T(dBTJ-TeP)p6jGNM^hcMLgE*_Wp24>(7CQX{n#ixZUKhS)RPg@s%VE^?W6EW zBaI7aA%0w=>eDRVJDHnM<)D3Vaj33$MTr8Y5~Wm0$~%(=i{7)ok_5g=O~=0$AJ>9H zfl=`K;>kb(APRw5yGXH^1SDeFVn!9FR!rOGMhRJ^PrE0k6kQB!oc$mdrwHYtFr+`d zC8tGjeH?{lCI>;bU6oYsvNYnAU;yb@=)ATt74!Y&)5bzshqJk|;Uuwpm;?~W)9jR~ zmXuFGU2(nlf_A|?p-#3P*}uNvAc;Lm#%Nwnp2SZil`z3=a+XI^A03gDB*J6l4yq_- z6+}I0aM}z^*g{Yh1cxV*Cn+*zR8BV#i_ax!Z}dbxj;VOllEoYFy}9YkWb+8 z(f&mUKpr^b01@3k3i9HoW-f2`pN#Qbn-m~(`C(Me(&Zj z7ZD0knWabAHxc7u{s`K*Eu!yX-K#U5To5MLWq-A2TrPYsig$AJv$ta0^IU8cq#L%) zeWhUAn=l12Kn_gxBnqzJJi#c6suj=;M}m=}hiEH>$N=To*r*W6MCJC+k22Q{liS6m z67}g3*JEN(a-Z_rWT}J^_0#Rp3K%??uXDb)39Sz~`!ohaKk2#I(vDG2m8MQ@m6cPB z=to*IYGTLU&tS##JI6o&ads}XiOJY!xi4M{?G=42Gn8wlCFN|rdYt4I*rp@07Wi#2 zlj0k1|5ko$PjgpW>WdII34`iO8~LN_(ZbnC#lf`_E`XATXI7}M|Y8b#Vm+n2XqzEPK#2Q3TDCNyY)zbc^~LQWFrl1TVuxuj_~OX_`3p>IbmKc$1bvhq7;JL`X{!<0Iq z^4wxq5{DcF{X9l=?q<#As|XcJ@k!X{+FU=i2WZ8={7iZ6Q~0r%nH=@64i6)#ObW*& zm?}D_M`hR}6DQ8>?tOyK_IJsePwoh0Z`kOwe*RP{WJq#^)|G0es#e2umq{Q=JrB2? z(|?_Ma5=sq+=rG(To*_UWruMX5+G2H7kg3A00heU zi;Cvgb6cD1xbkrO<>*o*qNb{$l&8S*_7O7luv7jyJ+2xp1Rr%A+o8&ji)5uCpA#Km7_r6H6l2C;f3I$7LK(rp5I;XD$QcF|~ytIP*IiC@AZiGTwoMN6M7sG_z~q9s_V^p-^vN(BTt=TC}k%JUCEPqkJPXsI9sBRlN` zu5R^#YV*<7%5ypl1_%&5)I%RF_^A0m+3jYj-{<2Y4l-13SJFV&-eG^{#Z zjm3xPTvgH$fJBu)(E+t(3jZHAykl*RpcBsGUtp0sH*9{+fEdObHcms9($NI+J-jU? zQ0u0j=vw_n)Dpj}Ma91qeh_1Hdm&Zs|K&CebSIv*^r}?iH`*g!4Q*$1lvame^le&3qP*p5UqcWsRL_Obi*hY~2z+3k)JWk1k*4AO zL0p@)!g>Yp5P8C2eAMqee01YAvl3@9aR)F+8ZwrG_y9h6%g~i}{TdtnSOengYrkXN zUKB>64-V}Sz4^11FzgNwpfLBUaH4hKHTB#)UJR$LQr*55nncQy_byS$4RQ6*kJndO zkDsXO-K!9m0?K07ki%u7g)@Hg#sFl$(yB1eN_i0v~{MV)?-7c3* zP@JIer}J=W^N=zul9Kt>*?=^6;8_B;62-b~U8J7%%MQ)j`g&_BwYg(I#kYR64wdSQsr06_>2VNS$*0ivJuYGY0^@ zC_nixQWiIBC=`dgLfDJb#Fl=%?$+)jK2xR?$3y>0^)8G2(*0Gqb+GE&IvvUntY`HC z95H0~MomM#1>;SBV&%Vl90F0$h#p~mb;s)np#{Uo%d~vdy=4F79=;}`Dc(mlze?9; z_>aX)cVGyd;9iLTcmu#(R0lSmO^XCdIyl%3d??%MgUjL>~6?BQ%J)Yi#b++*#){?)5GTe z)Xp;YDUVTEzig?ALbNJ6zmHAFPcqh-6{L{*k6MhB+;z2@^uJO-HZCoS7*RxGR6-1k z1OQ7bM?X`V3tmm^jon%6X7Xbsz7WY6&|8==_B?-8GvQxcy`(J*Bg~V0^KvU<%ElCmkEe#H)2oF1r zK#57;Af}x@)`+Gy3U_hWi1|l-M|ang?~|Rf|ADvucZLxSeAzd3)$hr!&Ddai?Zy0F zJ9FxphfEU9-ibl=y257a-vb=~(tZ)? z@`hzdmz$~EERW}tB&2TVIKx8IR%GXShBG}=3h+#Kyga#i|4vkjM#x-_mv)FiT%LQ- z1l>mSB85{~$*`RM<88AYA3v)K!CTW02On6YvX`tO5FXR3FxD!n%xaX@AOJCfalxm_ zN*+gLn1q}c!&p?^aMLvYhKEK&7BvU@UfK|n|-z>NErnxvN< zjKx6OpkKfXo}2|`rqLz?O5LN(2~mKCV;v0c!#^z6Mg zEd!t|YM01)_J9LeObG%-$?Cy{V#2#^dQZQxE%uSM*xNbx0J0#RMSw*SZK;G?ggP$7 z{md&XfPVC%s`8)@HomW~svmHL9Q3xt)Z+g~NXDpQEW!%Bq7)<{4qb}PP+irMAuRMb zp6_X*m?l))QlEBMrlYhDYL_{Dgb@Q%-8IE%WRAoXzMcbf;blMysS!_HK}aGoib69+ z&O>Nr?|1x4>u)rk(HDuZyndr84a1geK#MDfILdYyI1)(fVrbMx# zH1fu#{}Z&};y971@)vt(vVOODx8OJ-B+@Ni zL|+(?XR4$KDH;2=!=$*2AeQO2F$$)tF9^x`-{u#Iz<~1rxf2C0Sr)1(B~q($7-wgZ zXzQ`K%6_YPp_$w2_L+B#5PjDYmEt$_({S-ISfQ5mrpx`#MHa*ayIuusgqP6blDDvU z53m<;H6aXX+J@C&*#&OE6u!v6W9ZYdw+*tBsl(I$Il%+nYBLlnm2>b@8v!Yx*-J^((l0#KFIfi zwotKGWoNr%F_?5~W|a*3zvX?XH@@Fy_oJ^`A0PD) zSko7+u*q9(%cz#ooXc=`I{Mgd>GX;8k*{z+(4kk|94^Ebp0~NT2v5rlZvK9Ufj>EH z3ikS3XHvuMk5wzM+)t({BmnY%^0@lj+Zu;|OCP`<0P#{Ew#N1O+R{m9E^f!++Qb%4&c zL{cg%o<_a<#-7-gKcs0-PuS{k>v!5{)G_5ah^Q3y-L={kPPqHu4h%JDWOWS#-#= z_?>1sOD`^!#^0a4B7gxj3_;0H8I+D3I56*Q%U?Z8gnPy*qEV_B?e+#$O7pxehF{8s zx?ootg6Ff2`#mvqn$u;xZ{tzKTK$(Am};-D1};STxI?;2U~A_HWMz z)8%7?4+r*$dGs{-82>D>eM=H+vBXO(-xB)!_XFL(2&jz3Jk!CyGf>C$Um$lvBQccz zP0ces1Nl~B0Duq>0{{R3GE+q~003`gPnB!|C$VJ!{6ELwvFJ{RGu4TvPH#F8X(5)gO^*#nZ;hqb zO(}+)5Is7x%S`zr0KxzOGb3O{U;uj$?%s9x=kA4d@14`VwYFQ!-6q%W>u&1`7majx zgl$V@p%!J9{!%Jqp#dc{5S0)$tD_=l5d={HLL?K25b(esaeoH^7WII?$Np`=3DvGA zlwGFx2Cp4gonadgppD42*^SDUt`oz@p-1$};nr@Fj|Y`9vx4q=vf2j>MryF$Cu>e( z`rtiLw4gumWL?Ddl`ky2BR;uz13wa<;l_XP_;xy8p9Rj^C?H&m*0$embj7}%U)J6F zdgX>8py?1Rk#<-M*~EbK#6ToR%n%Ne@v!+5=IX$@d48x=lq7zppot6oshZtbRx6yb9f+>rd7t{ zPVfCjsfGh(2`VHY%A60wtN{V1-$NiN5*LIe@HZbZiJGZ+ZP`cF+sl_zLZpO8XLu$8 z@mk3tm`s@8H)>L%1VxBZqW&D{l|@{)xGi6~oH~A*eWe0~3oWR5B?vemKu_MNWSS0b zCHjePx*V_*YIhAY)L+N%7Jq*YMMH5890rUzAgS5WQBd4ymMN@p!nPM{$OT?1DUS&- zGLmAaC1DGWCkbGh9_0lAnlS7@NuyRKCqap(r0|-8f5_5q_WI%F_GqzT4x z00l~%8D<^^Oi4hOf<$9Oq&K*k+c{EeW35)U)$B3E!jXx+WrPtH22GYtj);^Y5yGKU zlLMJ3n$W>XipNnx{1)7=>C_?T-sjM79S2c11qAi70+yF8p9g_&AesKFQZ5^R)#QXH za-^qa_$~~3w~ooA$+Xf$K|nudDd7~PYJFCoDW{PsvZKRzNw3h`b53}4M0AoGp>UjL zf<&*J$C+Y)JYm33FgZ2GfP!WmHWsOO(>o|JArl=CV~-R?lJkL#pOlyWK7!T!*C~Z*M+gQYl2eV!fHw3^sc*7|Pyc=O(Fbk3 zW@G9lciE&{8fE6x4@lrT(=-9c&Pm9*k~zO6CEQIImb}P7sY$t?26T*++yW#)ijE#+ z1V>@a5=fSAcUdYtRwud+h`gEIDAwpt!jY*pjK}9B&GGmZsadtlot&iUvhaxGosho| zfx?JQKT0fMVPXOqP80{A*TEa5Oe0W&fFyHq@%=zBhBRKdGiGQ_&#ugg5rc} z%(*4IVS-cqwDg3_EKRuLEwJOQ{Bbdzk}$>NJP?Oz^BmDftZ}441QDkfRO90V5qr`0 zoBq#a9F-6$m0>6bS^gq$p@+CpM!!mn{%gAwkFM6iivF zwG8Ajb~a@6x!gf}I$qt=ip9g$QeVHa*k>0*7Y)mDZQ~Fcy%BuVn~34_PngctdNwx( zeaavLiLw13A0%axNFKJ6i7d3twm|4`ZDb##P||rwoHzyYvmXdu|Rf*$CV@BJF7Ank18fr?$2zCDALFE9oKfJz?pQsK=qJ| zcH0R)$MzjFUQVpTbk26;Y>0p6X5%@tt8rp0^SjFm^V=B~x`C6wn_+9sJ*b%R;oF{l zjkZk0-9k`5uwpy2)N$A>+wOO$>(x2~2y zh^^(zi$EV#R%ERW+3u+A~!{O#Z zo(+p+pybgx2q!{aGE}gpxqBnTH=jv(sDHWggD5aveoN!MXxs5MH7-qZ8s1+6=vyn*XDU}J5(x~rSl-t%kXSZl0ph}o2v;{5^4GKRw5Td}uMe^ths zQ}TL!U^BbiRhJB$m1whPx|g`;Xmf=qY_e*%;Suy<%!h1*W)4(g(T5tRN z0{#RabVXUQh;LG!#fvhGvmTvNhi{#}OU-Se;1K-M?_mGuiz^1{>KZ54eyWGty!+Mw zN!+O1#`V8NFz<}tmAmJ5y{&+SS%Ve4FS#i=vg})3`4Tw7`zEVGeuy0#pYph9%q9JQ zUNgA!zAl5u=m)aC=SZKi~rHvBxN>UX59l8ANSInPuz@Yy6?=dIHXj#df7`)sSs8wWJ4~jRlktMh+z!qU#{z@eFMQSA@vK~(#naAM zOy5KC6Yv$PSE5&xNdP}&`>1V&{sWRr?|hAYSfaYO`zynHV%C1ySn$HEn{9-!JpQd2 zx2Zk@zkllT;*wO-nP68nsz>8)Yi8KHD)Hc!&jK^2EPzV1ZL(H>EA3?~XP@rLMUHP> z_^g#phM!w(>G*yXFi$P}Fo(^Ep3c?-N8fUC^YH+OXPp1szlP~ZHS$NeCoA6}=Po`j zFj%w=Z!F=Dc;^Xjk_>wCWz-7u;T$0y+H(4oHu}=HoM&$|$)eQo4SEF+6y209CbzA; zIRj}-aKgmhz1KXW&PRi{tboXn|9`1zeu&5m-*VjGu7;0##a@%puB>NR@{;{B1kk?Q z@L?OE9hnT4Q}|u@Fq{++=|(f z>8q~s;9Ei`>I9J$(>=Rb`EvBurke)!nAY$N(Q}?P5hKg9c!_vmvuxes1(J~t97CfU z!z@8Uo0u@Hh)ELzpK+cCTrck}Go$nKO;|>MWMt2NcSm)l(*l1|r#@4F@!$bx)}42< z9>Fu+G>kF>fO-#@Z5nk`jy=f7B+qxwD~YVBv2E`N-D}q#t~?!L^8vnhLyT#)y33m3 zbSqPMmT6+tU;U*fg7*$|9VNyl_Z+o-8jbQ>(m+E~$rA{ilG7=Hm9LQEERu->#1imH zC{!xf0c)?~W>GqJ=FB59-6k~1-tUrjcG;_|GjqjfuT?xt2nH)A*$yo)V#hbyAGc}| zAcAuqZOpj925ys^Qehe^Wx@Jw>~{9f&;xd;S`*BwdaK+_#6SX+$u}$FIim<79B}1G zL7U>4DNZj-@@Tt~amOLy0LL=xvK>&_ED9^A|23b-#Pls!?i2aSm%SRRfO@R2>UD^d zN(^i`Yj`zQ%7SUz6vvleXla8ZCHwm&;6VrjzX(7KkVfr^$1UOoCf4w%EI#(r6nD>*aa`;ber^Zx%_|J3hK{TFAuCdC~scL_8DQGzIw%R zKoOb2!3JL-Pq6z8*$}TZX&s}P;4tciT>>rbSCGWis>KuI#dU=HyxMiru+-H zrsL?o2{t|db$s+}^!Ao4wM%kgGM+BT9anYQYpQPn=fIJg$Cc@P9=XaAeWS)2A_7 zT`|te;qIFLjL1jT$)DN^`4OO^<7*tcf_N$PSZws~G(CIw($N4LsPv^I(|&V!UL!z( zh8Fs$2ydR zyfjSHm^YT%^J`(x<~9%kYxC#I^r|^l%AO5}MvqEkGVC%LK)PtHVZ=wsu1%gn(x*H| zF8B_~`e2Lvr?5_K{DyV`Asi4yT0o13t(i?#5hP6Eni2o(J>4eW+ZD45s{%h0V z7UFdjjy13=Uc%1KpCQU%l6VWmn)hrIj}sN{PHOc5JJ49>wGAm{8*ghDa-%D{Ko_rB zq*QE1hh0n-iZNaol}B6i7)^z%dKZxST++~PVhpS7y-UY?N|WS63hHd1(e8Az$A=Y^ zK?PJ$HWhK+`n(iN?RgqXFP7nEX}J1s$lkrQQm9+WfMfH}W zQPDcc*~~e!MD8|hOl>#y!gd;e|JoH|NAHT!kA4-)t+w=!PLdbZ&4%L0KR~I&2GmKq ziMhzmourO7(hcvGNw2{2*EwM03vEbj`-gjgJeIH@JO{m0N|;*aj>{a5^-JZur-JAy zHTg5C3`aBu`j#eZ+{$#u$A?QV2@|-Wr;l?-G_DWJnKduuS41hTQa=z@0~Vy8zteqq z&ppdcVM=V1YR`U8G!Ip_EK%~H6rCD`ONGmiFQ}Izc z1jtN+!#tI#_!$b~08aaY$e*yW%^Wh**?;*xk7oekle7D#cqS8__tcQ6^eK3?Wt2oU z;e;L0h6>&&zhkfbnV1=(RLS&tqmm+&=8&G5q@IB=vMHKs4C6J#TPW<;8eeA2bHGAA z_ErG~Am2eZc$u#)UZ7|=0j*shoH(3^Fz`|$#9`%4iJxULh^|43wWeK|<$yh1anK5L zBuB}To-67V*>PVo^H6>hL_-3ErwX)oMz_W~f>#befmR+rOt^y}r_D1SzeKvJ6zxh` z4$4w^Nsh*>2Q0rT3+3UHz{0J30Ri+>O_I?#fsULj^cMe3&=tx8gqD)VWY@ysa=`qn zW5AP>bR0f`+?b>&2$4ac>UUGe(ei=CXC!1+Et7G;`IB}dnF9dww9lFrXAj~MXLHCC z=LM_!wGVKnBY5n=V)}DIL2b28`$VJNis{DF_z8faBe2 z&;G@H4A^UP*f}awn%?YY+t>t*#;R?yNr$czPn?KQ;>J#4xMw;a=b%i_)8PaqM}zy2 z9I$q^P0yXRBxSH3Q4Q#%RFFZtjuR*3V;{=EfGSNL7a>$b0u=J-27H+VUN`LdE6K!u zQ4Xi4h9bTu1&#lXaz0!N3MY^MA333Hp2KPaJ3-mrzF&2 zRS+~uCqp(5l>?W19Jm00n#HxkHehNxPN_?H0}_dv)TA#EB*%Fta!h+y0jWz$kVq0yS$MsfG{kl zI+#R4|J_7#SbZhv(m9|3i{u6!!+M`P*vl<=s-NUN0Uea>WK;@P2Wfwsf(8I&o~neva81#^4Lb5HGiU-pV4W3DYtIi$U(S8{h(t_)JX}_phHb) z;X)8iQ4kgcgOHjC_?@VcXRw!gMq9cZ)4Sy)Mua;W#`ypcI35U(Tu$xxEdYuJ;{}`l z26IQMe;QHg4y+8?WmO{i=x)zTUESF)R!(~&P0Hxp=xA21;{3_as%v&I==OXP1Kw=~ z8Dw|kc`r@T@S=`gssod?du5m?MVh_u5Rx2+m-HH`2_ld^{d4&8_q69tGi|`KtV9KCpp}GhOXF}lS%LwA zl4oF<14%7~in1VPk&b?I!w%;O=h~T6x-_C)-rz9R;t5Ra6i;-&Xa;h#ygg}zCW)*7 z$yJl(X=RffC(SY5`D1|Vq(_ce-YOtU1Sx|8l1sa5!W90oR=VvDx?t+I6z|-FEY)0O z@jrakZfP<(97`nO2!H}j5)c$=BVOJp@ zg9!tq5DDW)gi0XEk@NIGO$rkd@-ST0TKo_*pgmYHMTKtu_@Y*NOf(!L0KEn z?>m&jc@YMnWa(nHrQ5u^#lO1vT<#QmM%lQnAA9yuY_xSADA;tCz`T?uaa6ye)T$eW zowmq0Kdv?iv_PvCLf)G!s{OIU#!3Wb)vH(O98i-pjhW4BHW%ICk(aP=yY*d^+<^!* zZIg-cWoUuLu6Hir6oS|eBQ(p7bY{F6hqdX;&HB3r`Z&zH!_O89GOq9-`BRoGwHdO? z<|tvW6_LqvS0Qw&U$2u3Rb4gJyoh+{mlu-k*jrn znRQTSh0BnSCAw0pj%;F~ARjZ89-LX%yfeJI3r_;8Dywr~UzO95 z8GPj4aUNF8+O=)GZnr1>uF9;FGG^Guv|EtVq}2(YU^_j%pI-}jd>yeUX8~HFuDd8N z1#3^N@qY`nFEJ7&u}e;G2>iAcz_IKPH!RMmf80VQdD-eN0j}PYY9eFVxuv+_EBOf|d`-<#^Djz`f%sClzls;L?# zS9P9e2j!RD+OC3By?xEx9Q>Sjv&@_BSmc__&OOdJ>=76Z2D6~l*r{bwP6dH_CDAH+g=Ptu5{r)eh5EDeuX(wI(J>G-GLqk4ABoDr2ny-Rzq*r6e@#*ay;`lEG{u?R%qKj z{6F63bw~%mdXKCgwGVF;V+DBVyyht9qoGt9Z9*D4VAJ>12@|b1=9X%xiGQgesk#=K z=L@Bs#f{wynGN^ZN_?r`-V%JN8MLT@d#SZ8@Smn|bqMh)yz%S|z8ofk_ZE0cs_7FB zx|lLX#zKm##xxehAfGi;xTiv5^vBo+-Z+3R?ZC-uQ}>8R$0RPY7HoI3L!0Yw8@lrp z_Eohf<2TYm@khw}7fGi6&F3sidQvf)fq2f+4fGJhTwh&z*GgCTE>~y1tj?{C4W$bG zAJ{a$c*a3x&k|3QPVA7xysvHxMnCiMv3F1XG_WR>%X<+2_u6edZrA&BSA|>QY2fGv zrT5Rh*`4oyo~1)Gj=^)Y0Jh=w@#r`E8-V7cEB{N?s=>i#+50Wfu6(Gs)71y(rmB>T z<8q@JQr-ns(@TwH9!;C-BJ)*&0{{R3GE+u0003WQKGkc1 zPNH@M-P3mS3CIZ$&LIeRjkF}bzL4MD+_ssAGmnKbCu#TJGW`HBGG#X;00007vMhCb z!7Y}}w4zZoiY_{OOMNA2uMhW0iPiuB5da#R0I&xz_r34Ec5SxZ zUbfr!cXu;O+bV5)-K}1&m+p^BZFK~(6(DN_+iI59S|#Zul4TJA#!`d@e*gg?fDi&G z0g2Eb5VZjW2LvDcPuz%9(1K?(poSG(SfXVNH4P`L40oCj)7&$5a$YFBs8gsM-W|e(MN^ z#bUJUuS!qQ1z$TX@gGwS?!Xwj6G#~}fkZ5Qud?<|8!;sk+K>suI%T`?7ptta@yy?d zvC_R9FJ}&3h4TPy43(3Dn~^p8ph0C8t~)dvb@Uevw=Jc;m(2#cPaO21dQ5ZWGF@5? zpMByIyLxiOBy9Uf@$Muy8!+NeI=72%6^$>IyB6OVu*l;=zn=e5=5EL-KoTtADI1*FEu~8~i6`Es zW(j#rb1uM|P-#4;*a!u}X^cv8lEVQQ(HtR&$vShwNuCsBjC;W7jv*EUXewP5{^Ap6 zVGS^7nYG7<@#NRI?^9x`7+I0UoHJ8vFuBfe){=<;SZNymoVcs$U1t#_Qy@f(oURG;qib3hJVle8bw1^20@lcqpz)+$A)Pyimk88kD+es|=dt|la zw`=T|@GiUkz0$i2KOCKADP|GOt0rjB?XhS?O2D*xJMBb^_SQ`s#7teWMfrDpcz)l( zfLB$67p{m)GjqXOq~wCh5$hn@vZMJWlzddvXDp`x(##rIh?P;tt#l9b z)6u%YT1;V*dNp`6`npGMvW}sit)?O-=24q4&8O&{rb2D^SE`yBln@X^zp2_UaT?~@ z3|pE-uoaqZ?3G9Mmf)F~-bF0&xFHAA+=QU@`UP#z zBR3GPxQ*yKhCj&z=X&JHuwELjv|ExBI}B8ohVAM51!QPoyY<>1)oxO+s|D^6u*UH^ zk>ZLvMN?i5fCgFzhPBXI(<{ut6jzBC%u#5c8~iwDu$nh;Dp0>$*0v|;l~K&NZUfB) zV=$!x0`;EVxPkpR)oSzR?zuZN@VNEJo%Y`^Jvp(#d|)z%?%svaR%F;Wi1x#d56Y z!K>h=SU$BOQGIz}w|BOr`a?QG=!k>meZ#3gSpFhR1&Flj3;*1^Lie57cTfW&eAA6m z^49!8F@$KQxy(?Wp@~jevK*VQGnaUgyhQ=7nhpsNMz{|`Wr*u+Sd9@PX73LkmpMlv zcj|u05emn2;i&3eV$a4FKVR(SRvws>$o!f3X~gPd!rK<|sx9ghwzalzYvSN^vPw)A z_J#8HY_`Na3ZpSxLN%G6m)2%gNfyMHlH3e~M>7~o*U&dGab*Z9wJf)! zz0ueU{%Z2Fu(@S4&h3#q-#&3O#2l^v3DZ&;)g|f!P8Au-VT=j73oK*yz=L8C^nld$ zHQoY(oc6IRJmn8bpShu=0Z_q1UO0?vI3$?H#(6@Vj7LV1Ba@mFYg6qiBm5^3gLb67 zZY5H#klm-?UAEWKP0`A^UJ`Vx6q2j5iiapci6ke;)F_BkBY{~Wsb&MuFeCkiuuBkS zn3Y!tElrxs@ix4NsbEx>hvK5GsCgB0!~hQMNl_@iu6F8iYflB3A)Sz5O?*q zop)PrU9x-?7>!}lxp2j7aT@h9iB{gIJ`I5v^P93M=5@l;ut;RbpMyrl z!ztOIX+V34|{;;yl&eL~JY9h=dOQP9CTv#70S9qwN2|2-Juv8>S=vT0mcjK8$u{~r@g z5KTN}Bie(kJWp}G!`o>-9V611Jp-HGx=#jI2RYO|`ax~2Ja$j4(dtb_igY{eH#=W| z{fX6e%xtzUn@*y!G&P$~(?7|gDB`l7Rn;-JU+Y*IUd-(nTM^`OZR=pPpUuSzpneZK z6FM5>eYg#%o**lx=5W5B`uKZ!2mP1gj5c_h;jv{y27O<0qQ= zmJDezG@U{13{u9-Jm^L<*oG`C;WP2u|^+yRcW=L>V@3uc_sN>tNSYb^|f`a?biK^v@TW_wX=k( zMRN;*n?Y_&z5}lSPQ7W z^tjd@7t%Wb0k$u(0Z5W$`TT+Buq~3h#wZD`j)M+Lk?=n!chBvQ(DhtT-)??;n%9I3 zcYOZNQ9Z%olODjg<$J>Rr+VyPf2yLPBaDYw#|wY(b62-ws=GrZm?#w zH~HoXFuDJ`0Tt=20UL3RUQfd#%T3;TJlK9iyx;_w#9Nnr(P@RqEc2f{2GPv8vV4U1 zch}(zu1Ak5Y_+9#AH6dQjg;VZ&pq!bZ`I7I5}-1*nM=xMV)deDm}L^YHHi!YoV}C%6+7c^3RbSJnM!zk z9Z0FHK6&1`{7A(igK@GD#-)Ig4m*$Ix_TAwQtet%IhsL*pA!f;EkI!4yJ1Mrw_#j1 z%JA=MEQ8UL5afUw=sT`y=QX^F5u#JHN{Y)!K(ja~&yDc1aioz|7)t3!0#jEG%N`}~ zty-GRpA%R)EsF@XXu~$l7c;2i$P~Ubi4FAQxI7t_MWmwJ5?ZChX5GI9_sk9ZzSi9C zT}gVUIcc7`SCH6(7}bt))P2&l>($1IL98-cK zrpUB|khY0UnCAI?nNNB1-~9KIlB+P!myXlwepz%ffi~_=(4!4Uk-{M^0*5u4 zH%L+s^CcMTAXGi>!hHRkxGU|6NpppnGFZS03PZ+^`*`?z>d7Yw z6wH@F>J-UW%K+z&Wa}6}2E~GLh5+}Be_>|9(DZcf6CDPCqPlWDsaBK_AauF>oOZk}lgJO#ca5R55p=Aq| z+Pe|2lXquE%D^=<$sh^mK2|GJgmyU=a5s9ra2$jEZb^(V0f$ru=1MwQ zTx#7bax#Gr?adJ=9CQ5jqj3dBkRJX4lK8$5s7nIjQp4??vI_K)(%F%Bg3j-5d(scL zTHYLepu=c5Gb{)$rQ|II#uz!7Kq+`K@Jku}$Y!G=r+Y!7K)su6=+_(^l{U@cH`u=i9!DN^fs3W{6RNei^sXX>Ms4>`=A?Ab6S`MzRsj8 zZto{Ysk7t>gSK6B40D1=C;aZG2$bL^UM5iJT#{iha}`5T)wnpCRrV$L||nA$yQm_6H$6WYHMm)2FzvqiHA07ak~>7j?b zMo;HlDk3qUq)(qJ`%DlqnRH)C;QTmSL>GOrjMv-W+C-Z1Z7gVX= z=KG*GDClzTKQmJ{rnrRt_FeL^T-Y%a=?2}+=xW_~*lSH5;XJ2fKgp1c31r6< zT({Uq9+Mlf?E088QT!OxZ}_BRN<0(1Ed_)j1{0_RpEgS^So1|~b_H`-`;jhwz^4*r zZ7w`G%b{|_^TFGUDfG>@@zw1T_2VlKRO~&maBy90^uj?^fI?>emjvY(U`g8XSJ~SG z1+7(!GE-Qp)67ldSK9cl{O-=9`6fsoMwq@!7=1Ef`Qnm6!@{R2d>tRrk5X90y0TV7 z*pQcQc`q;DBl?uL8i=c>R-fBCzFoB;=}fz4E>hDc{{83$8TD7A8kD34@*C7XY-In1 z8038$M%@B!!IX=LLBkrHvBPRy*()oqlalr*7g}wP<3{<88qjFWp82=i?eGP1dA-vW&P>~GY|@qlf8mNVXv3n{lGw>kYoAyw>c z=BiqR?HO+0qQ>DzMxj4apIDT5G2Jq%ZAZ#0S*3R$!~=1s(zIOqv|W^ieoxg@A>^e} zw4#^FMZVKTdD$+y8@T8M{IS$C7lowT?_OAH)yUY#_ zKI%1^M#TKv(+9&B^D4XV@QL~Ho&6Ker^#xvVQ$+103B^5C5rj22hFB2Sz9)?WoG%3 z>GhO-w%f8mB}MfY&_Ca8-qz;&dv%tE&VH-neo9pM#t4bNhZAN*bxdD6PrB(+=&8j^ z^qGPP)+5JUYPc$HiVo)Tq03eag!h#fW0G#Ed zJCYfx1Av+>&QWm@Ac|Iau$4&*Q!VJ)GPQ#2HJFfpC|))ar%0x@Qbwpgyf#)Pe9@pZ z(MiJ6C_s@;@wX)7F#sShqWeHM+^XTE=2ZPmhD*!51vC>14rQ%DjG9KB{Fpbk11K<% zj2_5gNffjRQmi6%nG-A3UJ%m|_E%B74p2y@#3X+s5Yn}+=xtp}8goYNjaOF)_4k+X zX=|NF7qr?s6d&?r#jv#f@LTg1hLti3qUWtk{u5(REv@5E{QOzq(yxQvx&JF=IMaX^ z-iROk&`-Mo8HSMYwi~{_H~l!eISUqmhdZQ}_``r*xlCi!C{vwCBdZvZtc$P~#Qgom zU}Uno@ue6Xy3pIHs>Ap9*3EflkBIOt%-b^f#?x|x^KYYqNE{EUD5!}uL*ICt4KUy6 z1u*Uo$0q)Q1OqN~PMDuiS5ISQAev<8>0C+iFpmV6xw(_sv%6z97< zLZ>@Vx{D9x3`Ge?2tIF4Cc{rKB2Zinx)_n;QxGkQKc$>l6Bbp5aPfv4zP>lyD{3AD z7fW*br=mna3Lwy@P+%S~{VR2!EmaJr-YRf~gt4*Nl)$1%AVWK(Ji+ru&jiAkpndzC zK7MUwWiJHMpc=c2zrV92hVFwP7txShraPQ8IB5<+w-2_lkF zpw^}SNw{(-O`(uhON`Z%@;2J)!JngL2tRKfs4%^QyfP#BauBSVTpB?cR9ywD-i+DR zn-c}!c$*Cz-w3n<7-HBCL(fTC`=m4&O&%ytVng|%#x_pq6qk_Z^+;#K=ks=h;*rTb zv=EsuAWcf!_Y75paPd|fzR)+n{bmA**V^{POb_|f+FPdL@^Pe+qNs>_k2-Xsd{9VJ z5=gE&z(^t}ji#QR>6^&|68P#j@d_L;cra6i%IJPpW@V~cD2xwZ%4S{kWMivKnCg85 zW4n?k^suro7Y^2#7}m;5P`5XouaqzxFb5OyIs921q^!foHFa@|TVPu?jpg0fpfQA# z#`4kLtZjMmn&!*>fq6o;w}iwLii%+lEQl1O3lS+qsKS-R()kl&X-lR|L72lP_5{r9 zrrWdsBbzUK8<*ETBCcj+}3=z;r6fvHz!k02pey+;RJkw7T6;Q zQWFlG9~37l86wJwmKlgCT|{3&oVP!bx7>a%Wz#@8O4aMl2^sFASPh`zTcd=?n^yUJ zZ-R0pig~|$(jTHz@a+u&kCf$pV)&9ky@L`Xg#kndOh(GJOG9OPQDPLi1XkG&TSX87zJl{KSwaG+Im*_+y%4FN0`~G4oJd-D9Psb&0chp8viSX< zkT%VG3uZcl9g7TLm&6>9a~M-ABD z_XWiMi$X-O?00%UtS4Uqmi5rKlLdXTsts0~T_44fp|(|3p(Fxr9G7G}|B3h?0<;PH7v_n(=KKQL zpLdV!Us-QRq9C!nUGDddJ4e$;v*V|*HKF&A%|HCfX`Tc=hA%g8r# zav86X0TzWm@|#tw&ZtcgqS62$jfYVoK^%_jZ&wlbIO7colT6L}z|fwQsAJSJ2foWvF7#SYNz@KMpxHGlbx z0y57eufRNOob_p8s+A`2yLBRPW*^qPS2O^?_TJlIpb|@*4jC8}6I0-H0I%=xLUST$ zZq~(~1S-V-kcFW3DlXx36c6bph2P5LP}Qg`YIS{ue!!ojqWGmlaX!DYA>DaEPxaW< z2d@lXS6gjWRC%^A4<@EaQfr9-Dqksz+W7hPst`X`mmXSKn>FV+oqQ9&58!hJY-uar*a#a$n}7+0ndRX{%4ID>+mcvlBGZw-kGJAFe#8nowUjOvA4=lN~_kr zI}3~RY#a2zh_@|1UZrLvQBLTjM^8;@7(H^*lNswB_lfni{9r4r2EbAH@%7X)R3oSI zrD!u#bQF{*{rVMm$+ubS=L0Y%C*@%-N2xM+<{8pCI@sf!Wl)i0GcGrg$GqzPIKa8T za#!R1@GnAm!T`&MHpXb(t5`%|_AJldqvp?^qWOr|qt&|+D+RKzW30+*|9?2)ES*IL z9tPgtTkNlUwlcUFUYR<{^V|q6andwUyYAv5FgnqwK?XQY+2q)N%B>swS>Ztf1X}ct z=vMV`pJXC-fJ%8(r4|AEdbg+5P);(;$%=JiJ8c?exvdH=lokZG9Qvx?Af2A}FfS(K z-WS{Y|HTCbN*=Y^q0D+{f#-)G;GLm(3;5=_1N^G?s%05k_)Y6zHssqvx(q|`=*&HQ zdGYv)lK}C;j_%hUc$0Ic=PJqzJZ)I2PEsmD|7kL6SI<-AT%4gFs$V%x`lc(K@{bF& z)!hPwvQbVbFptP}nLV*|Ax~ZS1K-X9p%4)`p=KY_c7^rtja>$mB5~_0p&5!A`SL-P z==!3cx`)XDIGgdO=oGJx_@Q1r&Elvjk)~~~WXQQK`l;>{9}Jo3+1!+yQn1+_WI;rK znMe8vWM`EE4E-Tl_KEyNe|V%-aF`fn;D6TC00>oiF)O{yWg4@WSvo(kJa|0<-|bEx zyDRQCVoi@$AQ~IkE=|?Q%U7kzXC))E1{da0gco0Y@MjTrV^ZArBV6QW6U%4@|)|~ z;AYm6r!kNwjZ>E+IHs8m)j)skA*T<^k(-Wv)!T2>wb(z3H|}+wgWzWUW;QeZk>4`I zy#Sn?PavmxyJ&^;4)BO}uVgvL9XtX$b~gr<43V`x@Znod>8=|7k!OK6CtPGp2YsQi zkZS`X97CcZpmGm)<+}=WDmq(3l>A7#g8azh$H^SQ9rXlPStP49wke*HjLqGLjB`a1 z!&!Ynh~Lwwt9(6eZNSv6EwYCCnIl<=xSN$?>t!H0l0WnZ71}q6g$_+#-^9aKX}PrQ z!~c!=ISay&jqOdDcsH767RJ2)xsxf0>t}{QF;ADNn7JGA2$_b0mb%}`+zl3ZD7Qk8 z|6~SihuIi2+NssAzV3KVd9zyH+|2b2%VgBK_b$!9-B*4ZSJ;_I)!Zix=myd%2ef>Q zs6}QBx=-aSFmm>Zg@<3;98F*2^?2^?=mBYezG7?9^Ul8?S65k|CNA8uUnX9Lvonvl ztK`8BA`_|5y+Qt=g&I_9LSETH)<_ky`d1U;S+Ad-?L)RL%QUN1iM}#k-NJ6h$aC#Z z`YAn#S*p1{Y!qi^{`sXz$u8qwZqBYmP-Jx`F6y($xlY88ICS;3X0MfBh->%8_elWj ziJ$|XsHOl(`2T{<`+96GfXd!(BVR=f$IqC}mnik84fapPj$mTr>O5f@Y)dC8GSvO7tnz0g+#p$Picr z6b0tgEIbB>a)CT7M-QZ;NE0RORyiE}XH?gITztq(z|J3?%YNbLKfpIgMCY^PGbj^Qj?| z8=XK%4PrwBNd{|wZPW&O2oRQm$|_Hp13+8C%9TkBDG-X%%2o!Mgu!1VluU*hZjnAF zu{>Tbmk8$o0E_??%>jTtfW7Z~?{~ZIb}i}dySMH2Ha6Pb?QPSu-M1yWT1I9{T8v339 z=a`hBaZDFL0aG40C#je9Po38Tg|Zr1r(VU81uBxUnQ5w+P0FcnR2ARLE=`9B`i@M1sR*GRWFutG3ZGSX-8Y5g-Kna`Rn8Z zn>0&@2fm#zuj*RM1(|AcM17{yvNAcK#@48G>R*f6YP)iC6%(bQl+xBM(~IvGstg~? zR8TQbDB3gsVbIn+&8B9mlQC0CF?EUIXFq*z%Wyfbu&EeMNmtKmTJwkDHt|;GHf{G1 zfZ?7K)$Dk@bUN13b<6LR)2%4&3gTw-sBK+-TYXp_!1;+IwQp38?e0cJdMaYgkF|m_ zRjwD|RaGXMN_DEVBg{gnEfRg9_hZb7wwlT<>_$ac zX6V$?lTEZb*EjeS)S;hLOp5+I_hvW6JeG&MltMI|@112Gvw> zEjZN!9kjJVLHcy5pbOr??ws@N*Nkgxs6(DL=h;=HS!8R~?!7q%k)aW6{pYS~q_ig6 z&eJKeJKgiNDN|aqJSwZ8w7+nD{8Xl`y)D5EXM3x+`^v6XxsAfFU|Rh=g7ADC zE2%l~_qdekE~YBOw?K}0UwK@Qc4~ARlr!iMPKP$aiqYC*HrfgSw!dDLN1cWD#zT7> zYQsCwlIA(pbiI!GZq9ORQ?7Ji^|ioqbWwRFY`1#bttWJp zkxZAr;GQaq0#jG} zD_BOZeZ+!oUby}cdI7(sKkU8Eq^+nAHG1k{&)dnWG>7{q+J{$&eGmAdMnYAYwuWum4mL(Mf7)1Hg8P0H zNC7%AUk#?j20r+)p#ku}z7)I~(aESlYrE3!8{rW`?&O_XpbntZ_AnT~* zPp}7G70#pq4f4HkC)KMnoYtbWfzvj6TpCtA{7mOi{hem2ny#rsS?;V_M{r^Hu+?1l zyHU@adN;cyL@*p01*91$4iKZJF$or?B3Wfh?Vx&;A~j(o480^(x1|~?yyNb;?xDwj zoa7Hf&>f*AXG{DRZIs+rDjav*r@2gOJ^v@%{nO`c4UjqqsNcwhn-x2*t$)m*;Y}AR z0$Y9jzGsC*aqiF)F7d9m1&xX$eWj^e)^{XU1Z^E|n_}$h#PRr1lU=Rp=Q^B{m-hyh zfRX1awqh8V9>pXm2$(H~GGI)yLE>2$2ib$-(Kiyo$EzmZ#a!h1_UK>Q4Jg0rJbv!F zrzvjZ%(tL$>^)c(yAsFY4aHNoAnsSqNY0&49^>nV`wIW#wl+BmDqX3ait(>!s=c_A z0xgSip@}IphsKlQFigY3AR8K)G6Bl7eq1d=xIjo@iHT9b)$*%*mo<`usa=jdS#DfH z++;IWgT8TUUEEUG8Sw%yfdx>%NRq3ys)f;5$@yx1?^pQVgl*A#t39Kc&O>CmyMNzu zF4N3T^srSv&6N6zv)Ogd>yU=`wj}}_Ye+G-B#6I(7%3V(V(;yeg5F~*jr=UefP%z` z#|E2kp$moUd*4djQO*VMc2jdl(f!b@T#n26`yO9 z#EBK9!~^LR6BCmbTPHphgPhhIWn4K1QdNm`+pnbzvCzHf$>6O*YwZJ60i>^epdsk< zZn>LWrnGi3pnMIl%Q9gg7=E++5O(H3(Myc&)AFr86H@A}9WPd$B2)M?VOjNNU3ZN! zuy(p($}p-d&mB1ShH1|CpXPK6)ioEI%X5m#zk!0WKx!j<38|sjW1VjDSvp#mmd`a5x`|Oo4{4Wm7)<@mUoJAo6GNX z@)mrJ_D1D?C$G#L-g9E4?S*@&7#6T=FEtHC!AJU4gtp!@w_D|z1r8tNERN`>I7W3- zl$TVI4P?F2jpzS`3Vn38Hed@`oeWv*WH;V96VBy1f#syOtbd2)`W8u&Iqer_wg-Kj^I!YTOU^J$LkT^^nqvS;t zG-XD3&M~i;pb0T#qA9qnQ@&hS@TyWwd+tW4796i->!x@A4U%XPTVAmWy#B#Fi?`y-+@Bs4b{(p0!~}QVpA?OC#v+f0#etOn-}=t)>(YOw=)LoH^Qx|@IV0;dxyqzke0*(V8zVCf-%-c&{s5m70HEDxyQhn)bF1`2~leMaq;|9VIxNV#( zvd(tr{P3KUC+3!9xy4a@fl8u}_e%9=QQ5ACFEQ^0<3lx#@e5U!cL4eIp~L_Xf`y^{ zXL1-Q#za!fCLkCLkGw;4Jb*mZXeYy%k8O7f120@S$k;@izLv z_rEW~P>G7~3dPjL<9Z*4%Y?%5SrukPt%|&nlTjL`wfQ03F}?x_6s@~+1WC0w)z!|R z7jL38Zk(fs*STyX=&;9n+4Y2&^SLZDp~_z!)5ra=w<&-Vy}PSLU4(g`p<04DoX5t;Ew{DB?onu{@?r z!jcRQiY7!4Qw5Wr7v92szs0?-0(s@1_Z%ANmxb@w#XXgHh>vB>M}KTApbp%&bT1Y5 z>=()&cZ0~HwnSush%>okShe0_l>Qw->Ndu#=&T$p4~MR?wE5s%^tUpa#%t~u8HSjR89KsvbpuNVUP_OC(j?x zn<3at@dap8+|Xd7yJ#(SOsWx!p_4mtgc>&INRFR@FqjeolDQE_*)bdjM`C*7=?k*5 zJjf9ge<(GHjFMD{2=J(EkDL}>X7Y`56_PVl6}@+#UZ76oEj*cJ@A|dP#4nlHlZc{$ z7zhCmGkXZyskBH$;LHvPzN2MwkWv-AW18sJOvL5^P90O8;yUjDHZ|nh!6Q;%=w6#; zu{xQv`r|IWUZAcb9J9(;`%Z2)!;umCo=%q0x8hc)XB?w5Fty(ls>v!|S#)q6lR`to zfXK+S_E99u`lB|m{d$ccxte4<{drl1cv)8#OgTOa-nn+DmcI{%Ejw;~ zBJ6-2@{f6=g~>Fv?p^O0_>B7K4^dwz1cL!W;9w%=VIKotU>n6To#q}^geST#s4-W= zhO%T=*mCpLbTF)jtqqGz@wTRJ*V?v;C+HOn>-lA^h}QhlahQwWk*D3j7zzs%M$3H8 zsn?>PC)EN?8$SN_c`*msI1jqV=>bll;n^|f4t9D8YP9{xE@^cgywV*k7VIagh*Te z3=n(6{B=klw9-F>_q)>9W!ig}=((V_KbqYX9_15p|ABIGSS@17@*i?=qW-zQv}!_b zUaa@NF2}!A2IlOYAX*XB&{)s9?a7`&+hn0Mw-OZKix|BbEfYJ7P|FlD+;N36I_&KXGBY-CsW6>4fR&qJv&*sKA<4(lw{OhI!i zllRHn68HW5jqu>JS5O>h-1t{g?V|eW?C(6_6KthwKz>WL0D0`5C+%mXykUaNLcxHN zS+$N}B>ndX?eA|7ytYruZUO73gnrB6@0@HCIqiU6@qPWCvhIm?yas$4z5ABJ4&at_ zA>_#RLfm@`@M+h7oWAMU=|Yu9Gpr95Pd!r~vMG)=&v4W(IWicUy2M)Q{^zYeCn_$f zD^4E#5{hSKTwfoaansD*%G)i46BJXs5)%bWF6e@3H296VS38*cCWF zS8l3h%K@WB_1R2t0B6$Tb}G(|D$6;=IZW-Q;eL0xK@X|5f^EF^tqPeCzo|E2dmqK` zsq;2JYeW1ziz^$_!oMUPa$8Ft)o9_gNs)b~5D4mhP0QLHBC}J%*4rgbPm}S6S%G@X zwMa$cZHs8I>nF`~^t|4UR30Z!DDDwk;Z1!{Cv3~Nmvv#IM!=$*v@%_cB-EGqLaD-* zI$z@n>`nfoD<{fUvggzEoKz88OwIzaP2{G2COR|SmWDK~5IrBPXzNRY?u3+Pt@6*@J}1yXlA0o+2~XVz zBe*g@P?fOw%oL&GNgRkax8k;<%4betK2kkVXanm{DGup~YU%B9G-PMZ8@B-eWMV4M zqY$~zLER+$=&(Q#aS=xcrG&DAc|iowRV)r9iw_Z&ybJ-VnDK;W4ikarX!G99bw#hL zS3TZCCGL0p5W%Y(+AV*EF_?x76Y35o}AJ+)cWqR0%x z9Mzvk*$e46B*-Vy|CEElnjrKHi3g!UILIwo(ubp*1%e0(#7_j{;lAFo_0npAj6$tx z3S-_wtwa`QcYXn~Qs zrj_3oSf(R+Nl4|}f5rnHmD%q84u$+5JhOh<=x+D@xA&(`qZrZ+SJX8stAV#i_x`~$ zvnlRC(BMxwmP7aJLj5rQnDrsK3Zy%-08l3rCi1YqZa?vbyUH`Ds3EMKxeWaAe?$h< ziG*<{>^ouD3BykKgYpVTg)Ies=PDR`q&!OZw@`|Cu0Z!ZAhiO^8;_`zq zFQTN27O@<7Jv9J)Z5KfZZA$sq`5E6ZJ81`srt&!kxOaJ$R|~(Y2>5KaTwUhNUyjx^ zgL%n3)WzJHRJ}wOvR!J2t}{alJL{gdU0c81D^+Z?C^Qmw7A-l3Hi;jiB;Ou7BHbc( zn>oc#-IS7;nrU^JfKz!8MDKGEAP~aN>P&Hzi?F&L#v%{%QFkIw?b38;3q7&D6Ei*n zki?f-Hk4A6lZl1VkJ};U5(?GMGxY&VGE#D*j2)7KQ=5TG*0(#xX}d{Zx#Qw5D|YEL z>p0ke4YcVW<3d*-+bGk2Ej`HDm93c|W*bb33U(@#1C?MtS5Oa7+(k zZvIYR=Xv$LWp}=`1|{jOahH_-vXn09Lc_e;QQ#-{NT+-1sKvcwj6xaHnI@ z(H=?&L%O_ZA43t94K-ZXOWa9e%SB!kl{CHT!cd;Icfku>VAfLx2bbTIY4DHqaln`* zm9XXF+Opy3n*Z)OQr{s$zbvG%5EOypYKjH$Ws}l$Txw=;xuuuE2wGjK7AjPQSz`%j zopx*(q4}VG%WL7c=!nD(=IyrLlJ_k$2MOWArX;Mp`XzL4zj#=yA7|*iaK>^WFbF7x zP$$vk8AXn<;*c17&*J!IoMcc`!kR@;>hRr0^2d?*#$s*lXk9sU*IWwikYid-As(3Q z`5c{sY2KM{o^ai z=ldc`$DSe63FodOc_~nV@}dK`3yAzy_|O~}a~y%!Kx5h>Y~dR+Sxrt{$JM>QLOTK| zip&gNtMOa`E}I|=uVF4_0$(ij=NX6h?FGsg%#{=)%wEltIS?2#l))PaWh3zE0tG|) z9*c;xEtrgN@T{1IBjgQ2jWx$Md{gCN{J>!Vnx2Uv3&u17FgmLcCE!uU*3t*Y{$cVI z$4u~1Fc1euBFQ?D`10}ug-N53Ax84Yk@&*PT~E)WP$N zxk@OF3C`p41PDoTPzUocDUf484Z}Fa4-B}`1V|n@(jWQ14JLLpsMdtYSmqcRnu=z& zdFBsr8q7Ab6O@6eQ5=Yu$ADTM_a}ds$G{UuKZe8XR}B2WA}qWz#y=BVV{GbtqWAyP zU-%ecNE$rA7+?Co7`4(HnN4VJ(Fh6NLUN0Z$PEp`FbKj1^2^JR>ZUuyL~{mNI+IDt z3<`s$uJ-6+aQz{{+mqVBkRaTn=))U2y#XcF$EZtsUoV7vt7_#a{dEjrzt@;0CQ8ha zAP9v|LDCS^oQ(6J1UPT}wC?;IFAI^L>-WZjU26Bj!M8uQ7x5O{Hls%6T}cimq1>&3 zY1V`s(>!&=lPm}47;z9fr5QuVjppL2r;y9glC7;S&`F1$6l6j2v({?PJ-S1u?*B2K z*J4{|ryHlQzt*YhMavc4oP1*AI5?%nUy$H?jdeuC*lpn53KBl?$pp=W zp<{AyOGVPo8elO|Pf&@YG*Fhmu==zs0s)vjVmKP37GH9|x@$(>rs@|xXiDA9ED=1w z*lgel#};SjU^pC=AqM!!nl((SJK`X71ru{5BahT9iaOtQg2uR_(DWk?+D4>L>&e=&ongoe!?dwhsNF5i$Fx3gN|sytBpn4&%i{m z3V+i@y0x3)wkZ&e$)XA%6bwg)u%avs#KokLW*oyyk@o?fI7ooNatHeR9|K1r*I-eF zoCyIM9^fPfZ4BAaZ6G1#ngGg1^YWXZdcG6oHRu2U$p^AJp)-45BebBAcy#Pf2juv9 zcf-^yLCRorARbdeU`QO;!x$Iln9+DG#(p>58g(N%Wmn3kz0?*7K415e4LaW=?I1P~0wP)Z!FiD?A$6lD5Zwl@Ch1&EI<039IBqxymZYE3z$ z06~T|WVUw0a4{H!r>8K^i_YiMw2Yk%8-tLO9FQHyQBVx?jF6v3C1gnrh?qj}k!KPM zzzkgtE9{ZN`?%BwLPa5Qn5IIUHLwK>lC(RxPyHN`LIK*4{W$3qbrz+YFxL|m2dVKI zEAs2!G#&4u4d)BM;f0J^DUKv+tN~AKm0XDp4Su-hy7H|TQn z?hBPz>IT8~RAM&zC{-+GCz~CP>9r1IEFt(P=Ioy7NPk$CykdalZ6~!W08`rW05=&%&f>8v6ET;9!uHWxzRpj@(`(ZysrKb!=@C}Cv89_)Uh1443hR$5y7wPNAG}jD8o1^Px zeBc-*jNveG1cqcoImH)6)}$Eb!6KnI9z=e$0;w(!>Y8uk76EmYnW3a+cx54=oNY|# zixO8TlTAEk7b~-nD8nED-?ZiCWU;lPlQ3aG(lJg6g+_R*u|DcpUM=g;ZT<$LKM~E+ znxA;=9Z|@*fal#wDfwnK*}BEdykm>Zl{CntjG%j2i?UYO+Q(c@m8n-PrskheKVOoW znqtk+{92{1qiP;8Y%lH(SI)<%2(dscJ=_6xviv3Lb4|T+f@+FE zst`@P4VbZX44c#s@{?RqtF`50_~;q)t=Yq=pUVgo$YSOhNf%3l(!WpggjN&%)!=Ne zUIhyBPMTMBX9|+v(D9G$Nbi(p%F6fNk_GpWfYV0y!RKhn{p?bgs@1cqKJAdro_#0= zSadXbj#}dEwDzYoJzBuJy)O4SKlyy({Ip{?*+=B}U9d{3ywiFLp~-g^O0=rdRyL=B z+$>0@wN`D)@weLeJ)hQV?Ad55jaVz(DOD*Px9hBKJy2(&1NT+hw5%~!{vvbYpx~qA z_r#fAV=|731*Riv(~d$gt!d_rRN~62RXQO>$%s-U1Q2<{8!RnEG{kd8++?oHZCVf{)TJQSQMk+OklW9 zmCPE7TZbK{gAFF;J9Fo9PGOkQ7o&kAJw@eogYx$?ec&{YgDx;kYYBJ_XHF6EMmHNx zvk9C#Z>d`%nXAXqv(Hx!5co;A-uhhPSQPHG&M;n;ozC#wH#uLLf~d1zhX8IWE#Cxi0u+9N73?0GmHK#)$9FU|^IO3=$LEOwXh#U(v zlJowCx5m}3<4;Spt#YEmAEFp>Ptp{3;|&scggMfd$SnY;u@#%n$S43(AClP8D!57_ z2%E&3D;S45$()RYhU!F~lJ*Lt7magUsu|59__IYbqxJIsM`vGBjhmtgm~8h9(Il69 zRp8DuZ_J<#0&g*axV>@ScQjJoidOw8udCNQta$HWeQ0%iVCxW=ZPRBT zhVL4(y8$^i@cUUXGAE)`N6vwoq;*#RGJ(eaCN!!>x4r{!Mg*DU4?5MzU|Naza&v_vp zAy|Gx#=@k^axFWrZK>7d1LlCamW<@&*Z+Pg<-bV*K=1NQzRiVd)x52L`R|lOk%e!X zLJf0xvM{rRX)zoO&(4#xFa$?NV}mfPdN2b29vr31a*Q0OCWo$P7Io7WFEQS?a48Z6 z1muJm9hHl~p|TfxsY#nbElh7XVWPm?d(0Td8z3j|J@7#pvzHS$BZDHfj+EB8fSI!} z3!`Km23;c018)|{qH?$bsV~`FKlr_AK?0>p%B$6X&?%<|RtC{u2p4J{DbxN?o9~OH z0WU^2GE@&s1x6l;oGM8D{|lYy?DK!h6Ku7@nYQPRj&`Xz@ztbY%XY5Rebw`#*Ey^q z$HyuI3ZZO^6w@Cnsx5{|bqawib7cm~brG|I`i~3$$g471V&j?W#CN#S-yCQn-H-k` zAaL-?h8FXrN0xUR*uRO{+oyCg(vEG;r@IMV|39Ch`OgvMoHi%FE8!^iB>zi{%-mJ= zuKJD6e~bf{B?b1Ro6)-z=O_Gx{}U+^lvuL^$mxa#R>#`*Mu1~a?r-$P1NN;E2_K_z z;okyGQSn|H%e)`;meQ~n8oI7Vel*WdNn>o-39Nl#CkZ=F*mlCD6OjIwA<3NJ{yb>Skz5>87YxDsNX6i`Uz30qFH|3p_*rbby2u*1rkR z5zfk3zsWYr73#Fok^*J51ox8ISI|nmLz;D!L|o@KCA2{Bwo1nc&~|-}mdb}NQCju8 zGK*DQ=RrRZ7N+5|j$SG|x&5%TDr9(7B|@~sKUPvcgXM)I`ed%CmxK%4Kl1`9PH$0o zmv5gz3QpttMyNa?jyKg>LXA+DLYH7XV!BjFVSlCcL%t3GXb=zs00#gvb3iiy0DpCl z%5woGv33Ky)9rSNyOAIq006B}RKIbBz}^3bZg0D7o8N3tQup6v`~YBP$ZAFa000ch zHLrGbr#{D+Yb2L{mAr}t|7l~R@}F-HV({qXNE6hMh8SuljGfeq!EHtcLM8T64;jJ< zU})v#O9O2I%dHGDBm=Z*E3FL501Sa6sR5ZO1CAT{q`$XFB>(`798t{yz&n8Vzk7Gy z+uOU1S^MAZ*4keiTla3ecI(=@G`3~5T``Rs5F#P%;+AH#5Q!8cYr!CK03bjxDk4B2 zC?6mofi0*!sbT9D5WQqj>-{Q80Uaz z#CHlcbyI5xJ{{3}#lF*LB2xG$2?P>3ND8ZAOavjZS(Z~mQWjGb(?XmM6Ja=%o1u2e zC?EySR?FH#5GX{1z}h##RJ=Od<_;KP#|1*_5EfVzcm3n?m4TWm*l}L&(~u3ONlr_p z3Hbi1qQV3dQ!<27Q3->FM@h+S(zOY3@QRL znv-Hmr9*5T1Sl;8lF2p%2^h}Dol3KU4di#`?I*S}9a3>>mZ>nI%E%! zFd_6st7CDP_N-8d$TX}`v(;kDYnCSaQRvRAp#+@^!{9X(Wg}pa3Q3`nHjB2&Hn5Z& zlX-c1=BukOR03kh@B5v7Uvq29Bl89_1QVycdY5XJvGe&+ghlp{+9sd}#pyPBB6dGfRf|E5& zYjjzR(Hso3>2q6$w|sS1rjsq?#&e=a3QF9WhZ!CO?;#G2qL>Pz6fh8k!YLUe>IzaN zl^wJE2>x2T3Ls4_eNjlLviXO_%7idmrb!453Bw?mhIo1jV%8XG$p{i&U^KfbLH>(G zttc~n`QXPxe^#M3VTBb>3)HrpjX{ChE*R@U-4T)&Hg5K&ndPenjZ33qBFJE>kUX9H6u@1n2{S_Xj4Vy-VAgHC6Mm;(1iE+4z-b zj8fdVZQ{=djl*26#IB*fb-d57NLoinO`_;i#Ut$(wI;LdyYn_Fh-R_p(^sE+I-X_- zj8j&*A3m$*)GI&Bj*0z%+(I6A0^l*HWWX^^Om{mE!c86J$KdgQeJ=;elPGE#2)lQB zs`Zk14~B6eyLFVt_lzo#J$$(028eycIu?~uUGhC%A$ zq>0|N ze5!(4U5?2+2Ahgn-9!CV=oZnm;0+2=Z7uVCp~fy-fl9VtvEKg<{ig=6rm$XV>$H1O zOLZH{b}^eU`3_0F|}YvvlvFZ-3>ehE+3_ z5ezDh*wXJyH4E&FxIa9*wc$eQ$%IR_6=`-XPe>>@vDd0DBg`n$DWGQNIP&(NA@4s#{|S3s!0EOtHT3RKk~CasHs%$a=fI^(vMxC)mo zp))R%IL2S!m?-~M>V>#0=`w`SAALl(WdMcO6O zbnok-5f}(Hqkq<^YY+lSzZXMGYvC2Br1c zvQ&(??Cdtyb9QbP;--Kbj=n5#=$n58J;8g2dN70jkYNiSAWwc zu9twHv#>^z>up2tdD}ZR%c1~Jach}ps|jdRYJ+DI0@XQB)~8^r$+Eud)Z{#9tHBxO zG6Dp+r&7s!4D3BL7c-&FpM3T?R;mC8GjBO5&BiH3ewH~WnuOD1SE%PwOK4(N~bGuAm7 zSi5|JO#{TpX}A8HaeAE^A`1rotE)GLxO!|4Q1h+Asz!`8_0M3_FhklGt4aYOp76rkbx0{(`pI5I&B5DK4Ke^h)GbXIQtgU6>yaJ<1Hqh?J>+e zVmcW`d6mqSYghKaC+o8^1KL;VM$*Hko~Ym^XpSiHw^6=$mynWU02O`r&-=V8?B9(0 zC}6qitENAS=0T(Lg{CJ}vMXmEbw9G1iFKYeltLE)bhAan6%1zS-8A<2IT8(}PZf?| zh43PVfDA?*+*uY(L#opg$LP1-$nOYoeI(*%2DnkyI7@lYyuz8(f!n3=(qOe~UUe`b znFhApjn}}%?79Md1;M;G>|MI$RCu*n^%exOwouU6>Cfmc4ESi9etqvPry zm%&z7IrNATV={S;xOmH%H0zbS&-jF>0ffYMDXy@lYlS|l!zrwoIYZ*zXW5Y>JG1(? zob`9GTMR<>U?iLRSpY{hQY`GRG{mq!gkv;&=tEGkiC`$@yLjE%AQg}xA(-KBmUbbX zh9V&`1*f&W!igv;u&3stf!^ba!|1rka8Y3kBo(e4u9cLPl;9xpYhormXFsM4EyX4DXI?Xg$q*% zh^Pquc4inOZF|u%1ZoVJExrr?*F)RrNV*Jg5isi+e+1eMJ7s*UmOUR+o4D zhrpMZUC<)>JZ*s71{FpXpje~vD^*XC)72Tz9TKSQkpqsLXjPY&3^LOlaoqncng}WV z^*3GEb|uL)jvZV}Rt&Y%f6BbL^vYr}5k6Rabmrx_6>LKD5952B6;8#F^)mao)vME<Q)zF;kMXe6<0m=P z{6KD3Huyzw-Ytk8%5Bd2zR9ACbmri$c6%Sb(|Nm40gl*HW6x;MJo>TO8_m2&X)6p8 zvlW4bf&>7$8g024Cwh z9NZD6f7z-W@67!SLnu&o>BNg>0VBlxt}y7JtvZ&&YE($fZiPe1dl19uU7Tm}HR^i0 zBigQwakK^0nv(@wZypx?lH095he*?UJ+f`aPk`STd^j-J0`;et?@vcIvRJkJ3CKQR{_cC@-#7R()z>BEJa5o`> zfsW@MRhV9~N4o%%i;(>fvkB#I-_t}Qu~1{1dE}!{dJf?$UbHNl$+3DY-l>rc4{YD4 z9^fw&s@(6)AUX(x?3s1}#Y-5R#t_7)2G>%UQM-t-2-TbXqc1QIYN_=zGac_d z)g!GxL=~j4zU7!JajqdHu?jTb6-r&OeQd+*9=>%{sLn7VMeYA`8W~6(UUS5pOERJp zqedu(INbOiV#pjmCdz}Nxf%pmV;5C&(T&kgd08HJ*Qg-trMi9_a{nsj>u!!|x741S za`Lb;66)q#cN&|yi4sST=C2|nDknR$cEVIr?m(Y}?C(U~+!`I%kD5sKD98iNi(W_% zJK~Q#v;Ws4_nWIL@;ZcZlI+({CXN4OrpXH?5HD3thOCMEm}B9`Ru zUSe3fXZr5Xh@zkJN3|;+YHW_T)7I*Ojoc5$ft4H)%?HUlfvXZN;nr0%{}tUK;A}?= zo6wygm z%zjj|3O{$pW280(wvog&a(%9fUqYXTR;{C+nXiWyZq4|}K3II<&mn$#bou_vaQv&s zg(Z&*OgMfp=nu8o-!k=VLfR)MAWmRYaX@Z6?BMlNN2o{v)dr;#Ch|#Nq$Nz zlAfRTeacmClLSO&)}HKP?m3I5<^3}yB*#_pKE=gBlSwxtdVqhee9Ft<2R`gNKe)*{ zAlpm+pgvX9Ea4CN7nsiZfr5~7G2=%b6?5sWR(+8)7U;|+fhXK+egN)tR`IjE_RIWE zBYb~GHf2JEi-?(3bn+0@P6&W8HrF3(iMCwh65EFcaYsJmU?peHkeNjwX`h-?%@o-e zGgL|F>wU)&J{m8oz{b6gb_A_8fcGXzR&;WD?ocC}??92;4mU6k4Hn`TH}$A|58lzp zBUD(^m8?%7IC)}rBr)hd?PZ$Pvbk-SaFNASn+U(%QjCwT6W>mIoc%1Dz#n;1*TZK_{Oa#yjpW+}Lu{Wz zfx9}~oo2)0yKXffXKlkHS>5Z#li8FC{WLW)iXwEnXu2G<8TZL_lv0T)7}63`b4t7di6-rX11AJ&{qYZ5)OBy%(6EE(LC zo`TAG!e#g*7THl7f~~%M1!a4qF`^~VPq?Zvom;dW5hZ8Ek_w}z|m z*(9PcAJ=;xu}J0;m?jbX?%BvtZNa@_)T+G!oKsh9-J951Nv$NX~E zD`g$3UO};TAy_SS?0lCt%-Nu=)!rulPveWhsUSOhF3@D6#;N5K2_@$gyUYXPJ1{b? zY2#{4p(!{5v_S-=W)h#wR^_BPDHsYZX>g1}_$cukD`ToVPR4Z$NAP{{H*sN&;pV1* zA{p0C4Ah_ zP>6_sY+HvmU}M9H)^pvz3myEL&GW@yQ~XNX4`6Wb?MRJ|2~dls`NY% z_Sj2eL+W)9?1*1DfLZe65!w+aj=bN5>3Nfm%dI#Ul zLU~aQX&}2SXux!pJZv80Y~K>?PEl2%SGRXTm8n%z(1DuO(5pp5)>~fde~JoG zoEy4Kn7Ey-v=#@uay^Y-8`dmf5^Au#q>m%D zZjU2pxh?89Jkp9ffI$~Uqg4v*exzDzqds-?=?Z2V(?y&W-kLuu7E7ILnii))R<0Kt zfiJmHZMfX#?|(q1c`jG}$cvr1!VfiZfmdzWV%=WZ(!#1Z)$K0v!llbzQx z`}=}E>*jxu|s4*FEG zNB=WP@_+tRO}bI^gUZe`I+(Me77T}7{ccYt6#0_CiOODFk%^lv$#@zMWEOWi6fA*) zyGKPY{Cnr-N#)%jQuU)doYC9~p@#*-7t>8#U6u{JcsV8`f~Q7}z3;;31YVDgCWB2FU`%7+0BRJu(TwNckp z9rdApxI-U>5Jrq1QYs@VBuBq3Ys+Puc#MZ3m0v0gK0aGV#Af45dBWZD?P2V*rZmAdkVPI#4oXQPm{dWl2ep z@CtB7rsHL=1aA$ooX&$9KpH+dz{jj~RwOwW!9!#ghm}*k*?Id=IkvH0WHkqD;%Fm) z>?qMlkVgi`iS}JVDpNA| zk$a$KSbaj2T1t!wp`!TE>UZ2_&2ZC3q~5gf9ydy_#ZM&ar};JJh>F3 z$V4@!(n-@8PNsYiR#7N%gpk?A$fHsuO~e}@IU9K0b;p|QtB*q^``NO(g*YLk`bdSt z9jg6k-nh9#x8=vO7ShzPXWIPnUB(AOJ3c4wUEsn*!wfC|HImsO0&9)!y-j-PxsJ<2 z+(??CIZr#zCB3kfKG6|y;lYe8Fl|-xA>rhw0(Mo_OApg=?^wny6M!|Tjv{jC#udgh zlR@=y4Y#i}=j{D>Ah18l&mb?t$;fs6ckd-msa1~L-2DN@H**0SvKx}&g&G4I*vpmF zEzD17Q%M1W>a1tm>S{GK{z}|IeQuXwnd%r+sSUl&c7GrkWV^^^3LN%(BUG{uG|I0- zot3HuN3lIF9&r%aUB9ZuLoU`)DL0Xkxe`Xt73n)GYh1#ISw(o{5l=_Me2J7RSWcLH zRKaptxSRNR&ZS4q>cMlB3F;lue47p5%XBH?7b;eq*%XwdRg@cj|Hes@amcA~UK&p{z1 z6k$l8Rg~7;>TAHu-Iz(SqUVqI88a5jFjYo$;zLZd5X-np{Co)R3Zy7E`#WaQEfwvH zk|D-h;ZBB!g2$NVtTO$}en+7CMX5imKQ!Fo92GrP$;mapepT-q+Ya_{qIi|m_-4_N z+fM7H;Ry2eRt= z;gg;a1ni}vm38N(;TtOPo2OQACbvm)Kk*3$8`=~evjF5oC-Ji6A9!^q=s)5XnXxc= zM)h0r8&cW8aQ*n0?mQ_%ejkgq)&4|2|I8Mn3lXtEv}7jKw9w14?^mewTUuZa6~o2V=w+8@}c5&_{UYqV6au1_jOh!OG=!{4fm;B zFuerg`F%m_zMHzXO~`}Go)z-re|MK>oML-v;`Fw@2h?GN5Mf=$6^hGcj0|+U zJ}QB?a?iBF-U$E}Bba$vTi7uHVV(VP>3OqyOPo2u>${z1d1e;)>SY|uzl3?m;WHg$ zUT%TTJs%F;75ML;OGq-QKN6n9lwOjQj>zAkQz!@UlFQ>MnX+(sdP(!|lpXkyWeRrM zTGF!}=R5LblHhRU{}k%zja(fr)0BeCl}n?Akg~2nE>SX(R`@BIz&b2^mW;T|x3@zu z_>#+f)G9oY(QXv@>ZQ4=>xjh0ss`sB8%b z5Xy71D=(@iZwUURoqaiBRzqY?PUhxhWlp*Dcz@?x$nh20BD`TK?1ii-+1s0jqA*WU z!3r4mDqKW1C(X8SfRy^eSkYm_XnSF;P+<#iY^upX1cKwFLWqPxaU4iTf{;{QLa?X} zXG~Fe0-3kv6DSP)h3|8QEZ~v*x$MPoj+Yi0 zG6XnGNGG7iV-O$(qQn@Mr-O0?5kVv7;za4Ov2^d1T#LSY$-3xUvt;V+|tYztHj znJbPy7)qsNr&lg!az=jdA-W|dnM&&|F()WJlA)asv?vgjh($w`wjmIeoJ#=65D)_Z z001&`Kr;XUZ*`~Yxqy_|9fA9_yWJ$X45`Zj68RJrxQ!&g_l4ZLcFk?iv4H&~fB#0t z4gf@mu4n)N4#2WWx?4VOcXKXg$xZkrGo_s1?rvO3xyg>a{C;R~DGyL09u4cDChzy? zqgqk!bzcsxpsQ6`@=qP8R4u6VW$B%$aTQhRr7u0Iqbd#2qSIxXY?{e7Z-7yJ03ZSY zL^A+JU1@xh+Kx`u9kwR3YI{MjWcdgkKwSV`-*HwS! z%FWCTpm6qIIVG|%p|JMx=A0bOdeueT^O`}BcL;_dL9|}ysTp>aApY!OR%djT|IB{S zReKmclDari?Q9yoq7{9(zOkVT7YLJ^Gn}t)|6N?xdG;M|L|y4>HbyHu_E^*NYwaoK zfi|Td1UnGfc#OnZxk6~&A?K6m-LQJzbhx+DUR*_M+KgPMOULDp2PZ`&W|9y@3JBLfUQ$d^} z$66CwQ73D^5gZggAzM5HESriZ7Fh~aQ7}18AVY%~7CvlSd3}BI%quhPv?c~HqVWAw z{ps}7ZzfO^L)wDs(F*Z%;U6a`$tqeG{54^E9H#%UKlq&<<3GpbSHk&uIB|EJYpO>7 zWj`ISFuCFGZK0E9XII^@gV(kkw7jW~>RWawo6tt(1@>*%^!Z++onnH`qsed0gls20yJ#8h0{!t_Lsw?j;NU}s(Vh9umlsyC! z$`ZpVPT7kTktw##yyQ8a$O!lEsBX*DoLXvgAiRT5POV{u>I2->Lsf&*hYd{Gx2c|A zhT)wKHZ*)#nS-WiCWh5d3-JABYoACWUv1O)EAUv&%(m zX}a~q+U`+SIHTaUGeuqt?e?tqkNvq*$@?%6TmfSBBlao%%*k%ceHMgKR5fV%m?QC3 zCNm%2--LHPM%8!fruY@H9;YCD^yxh>Uh_sKgql_T&Wx(J7asiq-p&p}p%4-G#0pN3 zQX~m%EBe{(7`)Adu!D8Z8)b+Q=gVSe%t_Z$ovRwFL@Y-`+rwR7wQEFsg{nJ-s)HTB z#2faIQ9?%2`>ormi4#;hIq6sD%bT8H4UBzk;4hEzb6}AhWX4+ia17F2g9`ez37KI0 zQ&XLga`U-8`-z_Jc7`d{PAaNa5#&z;yP}tNXOvT!?gYIDOiOWp}Q!p0SCBoy^7GcIlhs z8!ue(T{jQPX?Mqy70wb7A8}6Xn0CmyvJ7ceYnISN{Hb7fj$f(QYnytlG^mZ00QC9T zPw_g~Z~I)ZGZM`psLTJJ+fB85?#e9$oMD{K=KmnBHw{YN=vN-*UCQC>o0s$iYjAREt@gRFU_IbbZgI};ucLlq+ zde@N`+7rFPZ+G{8>#N`y*G(SKwBm3(f^bt`8fN@{nosu`RQ_+)@vXZWu^$$j;;3@4@O^NJJ^82BlH}>ru2E?be z-qWD$x3oR3+ce@CvkGxBRR`lq&E9(~bH4;`;p{D1MKYDM(sE;)-LkfTP6Yt5#GUQW zlSQh)b~bL6qYh4`JL4f8m&FBNRt;P0G|hflM@7r2#etn4K<^9m{ztpn4WV~WNk$36 zfA6rC?esiC%=4&o-pQTZatY%DQ^7Yu{Cq1L($U=F*9W6FZdk4H#j>=afPHmDpMBB( zbM=>t6}7E}SatmuRjWPrzqu~|o{WL{;89OrnW`Ivo~QHWH-~M~xY`U6Wmjcb`}0-Y zsakt?U*?&*^Qi4CwSG>HE%6Ttbs`C2^y^DS&3Xp>T86R^@KQ>(#{pdZRGqcjFuNnn z-|V;&cYb_nCqH_-f3W$QLP!_%Vka5?$q7DK>=$s99cxPFJfd{7KH^GG|`iy}n)3Zpz8)`y}=$Bs4BpDe2@4I1cfq zx7BQR#pR7s?y6$ac^?nOitrHm61-(>vRp}Qi zo|B&8g7Z0KJ1KCG>ATD1%F)}#xgYqsJ7f0{U$YewHvY-8pvx&ZTBUT$=g@-A^zgz!dq(t(6^YoXo!Yv z4_$Pfn7-MdMTt(ex5d(KftDwF13=R_6{&g)ca>LsoCb+RHZ z(oe`9nRg;YX)A7=s;TPQ)|kV;L5o=`hs{#AhCR?}dw{a20}960cf&0aTx9H;*p`+e z^B7zp$6#S(9Iqnl3=FE1g6RBe#_I+WWlJ-g8$4_AJS+u#x*^*jfWVVm(p{GLwWEDcuV>6DU{anLeE@*WoWAxSBSqvf#;G(#_C5LL$aqG93nAXY;CWX`);z3%Bk z?Ob!qSGsMKjK6Po_TYO?i)>N1Z>DioMkTDZObw>Ae`$EPj>LW6jty;Yn=`Z54figl zhK90#0-#lKiCjB1O7=#klUgy390CYIqzEM&`81=+^K{93kA;m*U0U@6AbJ>A$ zv^LEZD=odfcLH41PRUuBkt(u4xG0e>1{(nFffZlT>Vs ztL+%67^4a+R#djL<%g@xudw4@H;100knw1|gswP*R&kwOU|8e(0_5U4p~=%JB`XM0 z7zn?^S)?{H;s+RV-a*5VO+ktZ5htV_IEdDIQXwi&uN8>9ID+AhfO9V(j<;-7!HzMl zPO^e1JWo(jkqi_Fi9>fJMX6c_eV#~a(Xi+rk!JkPAbs94U)wKDpBwn`xJD?X>I$?) zynP7bjj=(&P|nQb->C?^wE0F=7^agcBpXxf5u-F1r$_U^EQKUd8yYCqifl)Hh8Tn>%e}C8`X53X;e7q7x)@2zfESXQtWk}M!3Uzk~p=vhw zI14K1vo8@ivS?xR0fVwJG)`2($1!V$Ng>fV5z2e!i7FUp9YI~==D2Gs5DUG1O!u1T zOSU|lDlYJww*xVKeV^+smi*4Vus#H1y|i96U|Gl8*}1^j+iMlO4z!jqZ;_)=$L*i)D*l6~{dePwxsiV>$7T~thcG8tke)f8+6K}zy309iM zF55WtMsvT-9XWm_zUtY|(y1gbfTR~tav}P~WMd+nlsB{-p;Qp(QKb?+B*ZGDiUJ~W zVw4N*%UJ+_sPaso;QqXY-W9)t13Zq2y7VN9eLIn4Vdsb-&(a=D_6caYGAkbyb|9QZT(EiN8Thk;$U>YD6P4g`9my%ZM#J1Z;?VDjUb64k6 z&KCjwBiK6%KqH}=mQ@^;>8XLLD+|Z9`J#hDCi%W$z`U|i7*`eTccJ2^n zU+BP2Su)#;qla~)m}j9Ld4dksBWx9*1xHH}pSOTn+9Ha>L&D=`VzdoL`njs zBtx=LNn8%1#8`a}^OI%cl&576N*lt`PlD@nE2TioXheELw9gjquQ&qC^=o8GI=Yg( zslbyO8x!Fq4^;R_BK=^4wi%lNPxN9OM@eR;#lqG+TT-R@FY&}W?suxgj9Ixt%rbtO zAA=L^a*Q?Wl%j9IY)pldP&gLJ3nO79h>!q^c1W{yeD1+Y(dS7b<7&Q*sy@B{61@dw zlqu4r@U0zzrt1XVC9CO)vM~!x!A<37Q*ykfLs&w<9dS-{$k*-98AI3mvU$~X=*xymjJ+VOny=z`VN1S!sV<@q~b zk`A#cL3+c`cA!4!sOBEkZhE8N-u`gaWqa2kyR9=4m;SzekiW#&%>^ibPAHjKvXNa_ zLJMnP@nDGqh)%Pa9dFf5(PtFAULo~hb5v9d>n=i>MYjQMlgw{=+JDG?Mt*ne&uiYd z(EudC)_Ftm5GY&%)iO?Ivm;ELmTV4;Ji9}(>q5ZxE520EFKbigHBuZFzUO31YNVFt zJdm8!HqoUBV=ACsMdsazZK~r-Yjj!}@W?c!G*L`z1{0Gw5Q{&wFqsX5Vv!q%S(_TH z%QaRn(n}hX#q=v@OO@ z=#LgHF#VT3|11TI1pE*5cKPEg0e92q}-&ff(m zIXS!wz-@JxxJa?>zf+xLh5}fU0oZY%oI^-WpjXlGg=GBDX8LT`U48_6fwcV4*ies% zRqKng!E=AG^MPAqS^$vXrB{xtVQL<&p^#kNLHxMd^C8$s9`;Hs%aFFQ*_aY7_(qij zVwtxOpp?NW8QpZlV9iPuBBe=G;n5oauPUcxtV~jsjz(+C=TBKH(_xOwWU;W%8i11u*pi9al8wl5p4yfCJeb8Z8oCV&FyIWNgFsOUhAH5zpjX4Pm!|-W zmh1U<(C4n-^kuq3{)Wv)eRe~p0U%VXVvwPgFGB<#M=HfIm~toCEgBfsDj8!K6j_kT z)u++5DRhvbhk%0zSF%^ovO1^3kC*-dGq5XAJbk4cp|Q1>ih)<(qy|oVv(zc7r^x)~0ywW_7#vk7tUbgI562|8lS_<>{^T8H82rQYlO5Y{RSyr_`)WLzN;L z7$m2NOeit(8HbzG^!SG5u^o2RWa~ip(o)(FaW&>AidLoHZF+1Tz&s|IWff@^ZC5*G zN%jHCLy;sh97W-95~(Y{{7KBD_NxSMvCLmH_hM`0%$;M+iTiFO+rWBY)w1?4w(GVKa%AxV%q}9GT1ZbH`MLNU)E6(sd{;V@4+W)H7vGZI3 zd}X$b|2Gzgweg>u?=Jt5+7aa9gK<0Hc|}=G3vjXI&-#(r$M5KiIVq{Qsdt8VkNhUT zGz#>8OaRmF{P!827}7J(?8g5*bRO)#^GWVHfDfV%4niDw+WklWDbAFZYPv~5%fhd- zZt7d1)8Jleneb`w0wq60Q}7XDiQr zt!VD?D+sHON4j&a;%N)s4uy^QbVG63iWWG+*Gp^0jta#y$T;D6)IWz$d$@mH{)>8p z!bh71b>^f1{(f1bU4iZVc_T2K365E;2+_xE%~G7;;PxtOCEkR0dOKO3PP4V2nSbt` zmKPMODZhMj?~bq5-Fp@g_*HE==t-MZHqV`c@@qvkd++z~rgnxa3#3{%p^fBcwbVm+ z2X4$>eVW!CTbsIpd;VelZI3|E$t^rzzW*Oq(r-lGPXEca#a+;!LHc7#t@slLKf&r#KiDc#WNl-1bM9`x<9oAL8hCm5x&|gHE4GO?g5tN?2E&E}^=ACIj;bU7 z9~_jm9r0+R9ZI?RGvDzyZI^%3sF4kNn(zK1 zB8OG@Nb+3Hmi@Nhb-vGq-EKjRgm_+v4DSu9VcjS_Af}VPWno+2S*iJ}tYDwkaW;?m zR~t()$4Jk@6-?$Edw9X^&`99AX@O)4Gb^cqPn{81aQ@srm-Z)f-dZi?kJ=47bOkC&rz4pCVB{sIk{UAp?*w#8OI#v_3J>DQ(B4gztC+*+OuJ zJ0>_nx&36e5^j3O_IhAf;kc+a##&Ex~gvGD{Rf!MB{jUDi(jC3s=8s2RD{mZTPt% z-OQ1y1ov(aTvFcM4TGoi@ns%-68LX?Px3=ieIig3buK0*%ggdB8++N~2bf=b?zPpzHARl3yP4`;4SjR!ne4IgrbqUsx{e~+Z$&aBnDXp1&h3;`& zZ3#U<|7B&CWW1g7l=Jlk^984@(ipcsdjV~L&$?ngLQW&uZmt0+yRgp*il6K~LGvN8 zbxotw=N|ABt-N&qAoD?b?*CI1`?DFy<=Li#t}pMSZ-*v632ntMyLI0;+`~IIhcRMd zeBt>e`GgER9kUuwYk)VzralwGhxjpy4Q5Pjq#!U3;fryWvcv8~-Hd6L!B>AGk16EH zn6aenXaA^>x8sFnFZ*FB3&RZkr+%c~{^}FGC3EN;dZx*5C!MG625q@=nRvZ59sRQh zcTsZx4TUD)p68CD;|4l@Y7cko`5A?}z2IRp$adN(UDoQeI{2IngcgBLc?76ISW=H#{T%paE)aL`GZaNU;!4>FW`1x zMn+*KRz-}xr@kLrAgo$&bN?q@zohxXK8yRlhWgF?1E81iObHg&tmCfy@q z=lVAkjbddpxJRrvM_RfB&H!ZGX7}No_#LlBLiN0Ij!s$~VGiHs>C{oCcgkIDq zi%aCxzj%V$zZbio*u}MJ4YMT0tjbaE(S56fJ$RsSVv-|PAlLlIxnvhnFjLb zioV1Ptd_11e;35Bj3%u>opBUpqafkwvDi}!n>L$b7{wje)k8M@(ZWy&qy>o`4D)jz z>2GQr&q!gtBfOtuI*8YY&V0}0o8!cC{`N-wO!x&d;LI659KP6LrN|AY@rf z<^ur;<}&x;`QbK(gp|&TnCV#TMfR*60<)%k)ZLNAn&aA;Dl1~vMP$q7N;`rbWSNw@ zRtW^S*cn#G`548HSb*ksTZPYjxBN_b&TSQQ{NPz+eA1xY)o`2V=genW!!ME-1Fpyv z!LG1fYaf_-y^A#E85*z1n6})N0G$vJ0{{R3LSsNP003WPKGm)QUQo~#l1QN0JYqJ+ZY+GqP762ZggjTjP<$)ZjP|K(cst`%q z0+otN$q)>I;HRU@WRi`Px#Uc90DuSp(aZo?0~meZz4vza+ud8Y-d(lbIo9i_x_hnN zEtc`JFjyywXlWpUqp`I#5(1)?w6~;-qo^3G4KhI}fI|4m2#6r5pa|#>pg$u1`3qDG zKm_Gs3d}j1OHnQsrZ5^Oxu{t6si};q%6u!PPL)_LN^7}sVIW$|w+59$S}Sy_+UcK3 zRh44h%NH(vh3cG=f>sBna~?DV=8=pUHJDgyajY8$+9)1fVXbb`a}?cc+!PcR9fFbE zB+HkaR7rJ4JmtAU`PF|w;@L{h#KmXj&KSb12own71qnkJQZy{cLBR$ng0L_}NwVPt zoMcIe&_tjEwVk9-U*!q_nlA z#sL@UhYj&|+fq9TR-?0PQ(hCsNvPIQ(=w7jdU2bbQ@c$^Id~yeMzH~RnbYrhtjDM& z=thMez%s!J+r& zRtMGYS4&4D+wIQ3>>6Aw>m6|zt?gG`qzWihZ6|p`{vOF#YXoi%)!9WO{A#Ha?vdOSilq#ka1@t9T>W7vTuz`ZT zbmvoTp>4qEbba{0SsR-lMEx7x>wWqRv5JjbPAp?4pLKUcIj0v*dt&BIiP5<86D$77d#?|3ev1#6sD4Hz*Y4-VZq}?x81%<4^J#Kw6 z;@_72qSV#dQDqnG{!ZBdP(ZK06}DwleAkM3?v2#xd`lk8%wo!BrYbQWtzx&Bnw>d1 z7dnNd3a|dN)z2BqGtET$^DRGR-o(6<;p6%XGP2Q)$v)rJdzEA6mbbb3bE+SfmUzt3QcQN>B?t`w{!h4r^bZxU*4RHk9J`cX<*TA;VaQB-;twhr5Or9~N&Pj)~-?ZbjL%owPig;r8`q zD2yFvc`xHlV1HM~la*sCO0{I#7kuYzH=egh>iI#4dOz2!Jfx)iGWKrnRR@Ir9sPTb zmt4@%0P#zI2^(1Jv8&H1-gdTdVY!66T9CNCaCo-sWeG@Czlg^*-_v|Mg;+uNjZiCfo3#TaTu=%?c;wh4r9-}r8KiZ7r z7&!q+0I z#ghdteg5~n!{f_ZLerU|sR(8>H|XR{wsw8yw#6M1pU|GO(reQSALhb|BVO>KRh70Sab^0C}2@Ak;yE0B|rXh@Hba_N!KH6CR~jd#>+uGBYh6I&Bw1ed~KTNck{}Q=MEH-FX!Aw3GRTjVIU zRa6igDq(@jU`78OLFCy7viSSoySt=_Wapxmw2P^qTL5gh*Y@Bwzt&|EpMrA741q+ zy-~t_(IPPaO}&{P@gfBivQS_$TS9a16i^c74s?TH0EohNDZvFu0gCK-9bBTT6x;7V z*18c1GeSy=J-nQ2`7D?EQTm#UC3*ivp(-=^4|cy}-g;*$)}8tg#()u2?!?F}BOkKA zb6L*gtO;SRM;p7bDV3>xI_kt4+_0{)zE*cHy}=mCgVXzXO}lD9x;S{H(<+Zu!rw~N zmagI*2Y4?Kbq@?}EmQeb30dHWYO1MOoLWLC3$}((CZ9O$Qcc8d~<< z)f}^gb0}3QdcQo&zuhmuS04%Gd6UZTC@_eO<^vgdQkI8Aa2o_W(-g)DBoGWj zIqp-&sVXqB2_?GYf!7mtDdTHC-~=e113=FT?#EPD*18j=?5-ECwNokkX7~KHbUSkm zwqqacdb@wMxBNcq{kjz5wa>SK`ahRn{eF0PUsxTt9^Fao4bEQvesr&5CoGou-!Ou1VK9l^A<2K3SZ+Vj99-8p?e=^h*k%*gkJV2@nDj z1teK102rWP5qJcUAR{;l3mRQe-V1}I8}NYi!a!>!p=Z;~F$we4>E1BO5Y0;PzF{J* zee*TR)hZ-kvjc^TBdW1b6EJkwc1gaLG=lS#Gk0Frn~0F+Tn_gvBXrxo9U|pjIH%Ppc5Cm>)^sWa){9Fq{#?&VfW+)$H zm(xTzC>@JZooHg*)B7)|89d`(_inHeRosJrjBbE z=eL;F^N8dJfT5o5&^BF#hN4N6C&h*U>pTn#ZavghG5LVUHBac zHN^tJBJhub42tw74^l#I`Cb)!&4i=KS-D; zgLK8ep;dJ#NQgrwtj6Qh8(|;I)EEgN2pJHDCuI->4WgE@r~+FM$NG1NFzr)s31+MA zY(v(MaPIhSCPfI#)Z8Z%D;q4eH*az|YuB62jx6r^qNY9MSulzi1z# zCX`8r0V0Vf3TJ`ddR3oKeRjuWoppF-T{LD8{dmX&wt(E6S-sooAgg{J_{;JAWH(`b zf+7(oW;SAIGYeJGf!8x>dOXx`{3FIW<~;!D_Q>)U=gyNh-3ffGagPg)f7!?kdP^{t zpLNyUUeeQlF$ika%l%?@F%OPzPH>|xPjN~v&`$Y*ox{muNX_$0&zGYap((M?dBduE zq9M-C26|nfQqG_H9WGPO8TyF5`P~gv8}5efTM)&1nDAE48bx#r#K=EZv{;VKHM@|um%yD7lIft20&sEx*S0BZ@3_5txn~rZdftNQw(1& zg7-4-*CGRdj>>zR%egA^*EQWP`NWGj&m?<)Il6XD#azAFN67V7#KxEYR7i~x^)91Tr_gZnN0ULWstaI6Co&fCo z$nq)+pY8_`6?o>}o|k(kVWW@w+)DK5+Zzj`7`=L0`YF5qVu}#J5YQGe;{S}KcEAN|H9L6aFp-hA@KF`8d)kw{$*q?qtu;!)HC zFUN`h4Dq@ceZfC~Fp5pz9AA4hodsvIm=)M5Kc-evtC0Dqkc519xNc2QU^%CR)`B1x<^F-SK&G%3=+ z@VBYS0l40{s?9t3z<5l)Ow=g7$Z-{V^vU34^+n|=jM#xr#Feg5gbwjqV@fhR8{?yo7(k{<#ctae#d(&klGs-%> z&hijtim|CN&#}#`oB->krmw0N-Gd(QBYLXviNs)14Gu>u!*RFw5)g-^*s)pZoriss zQGO${l6jQi{`je77KAKC8ARFhCr(Fr!kEF5gm;JLFI24=Gp`9o%h=hpr{A(nctr0E z-I|+r_y<`=v?=sX`cBW?v2r^4dI;rXLuPez#)_x=>D%x;x2jf}CUmbk@w=W#(k{jO z!)kTl>*@g<1dJ`h|1x1RdXnbZ<*!}jTzplL{%8avvQ0#ev#zb}-$#8zIC1oHy<-{{ z;MaBtFP)L*c?jzf>1pdMoclJPgx`R5=SpA)ezA%;Cf3} zRe~o7+m+w=-)Y;f_l^Jj=FUQ%fDQKOswr;Ip!Z^m{aJbCllyv=Nrsh%%5BdXo5|cn zaKTovf}TS~#X#`Sp;PaDu2aQ*zaC<+q>+`@p}zfHDRS`aFJVs&=|b!K3mIU;Rym8o z7zgb5W`6ci9kjnXjF{)VHGtI9y5MI$r*sfws@@@OePb43@$<<|+mBgn`mvm)__gZe zthI+7>nTnU&h1r2;}bv8Qh(X@av$*kn0czkUW;{!wNk3xPw_0w5xP(=jAw~|Y}iK4 z#23bD*VTrV1}*Lg9NUyiB$`OI1m$S6D1!@K*=O53V_WY55q!3veZntP+c)>_K;tY zJ_WxNN|e@8#wTkpFPei(AUNz~?hHwiEF8^LInxA-Cb|(<0x~%+;8%sn7WE^ zrnZ_)+1zS$v9sFCGiJ|ql#?(LriQNU+EvuqyZdM!>e3#q{?!Pa-kQY2T`wtn@;VDj zn*n%T{dru-hOIMFuIf`GqRjxYZ$h;BT(wQ{Zn>n-A)Me?UdmQYD7N zl$)BKFF?=RSl79V??@jgkrZs8&?J%@BpTq?Flurg=Uk_eRC9NYh3QY3iA@4>+>jpZ z;1s31)OQM@j>)&%`lAsn>=k$xtDi!Ejfxg(Q)9T;!A$z`bKOOLi1FKN*`J%eG)Lkj0~ag+L2394tcyVj~zxQL1nhAWYyz0;us* zV8?OwWAd2@d~*!FGiCw*m?A9U)H+(|frpcaFFQ^uA(PKznJ+x?k&zu{PcwHDKfe8+ zMPUgap)4kj+p+5GRClzg;bKjkiBlYiU@oG}|Md!-UHV!aXM?i|^3H~geqGjHv505mL2;6cg$iqO7-)w@7*Pxi3`ip47*h@myU30+ zu@vQFs6eVUpkv0C4+qr{ZGvmupR|2$qjEdAiJj z#*r1y?nyQzBKVA=YaH^x*;glZPs5I^U~^M4O-#pC!wUW3Ct)L6qR&NA^cJZf8>XG1 zFPwj-I^e%fNkC7Z(v3NNd5N(^5*gMIL&F$gf(Yi<1z0eEAc7en_0l*o2BuFJ1Aq7u z^^3#*LEBVTXH)$U+jP}Prp$jBHD?_h#sh$p2&95Oki_W&h6zxRhh$N8nj{Jajwq)c zJH+N6_^%2XcBgbL98w#xVGs2lb40ziV>{2vj_u=-#gav+k2-n*S`rXxK8$lm`5exy zbF!F5!2y|!3|60f{H3vFxtJF^+&z`mW`9wF^Qa@<5*uzi)!up6!RMu;%B?B2n+8yZaM*>(6fR7RDypQ^@;|*o+uOmlthzses`z2c%y~m-Ig>YEB(E zbG8;}Q_0{tf4Pf1ehKF)Y3%vM3n9Byl+6uNB`hSULb{M#aARnBiVmZkGiwTmgdm%Q zBghyga+qjBE>=A+9_ao_ovjsdP7{=AV#3HaW)Z_O)Kjw#AcZ+^xQEmYo7?7?b50dt zG|ORFcy_VfTCJ9G&eJ_DD~iS4?%-83Bk_6fmnq6Q2RmBh*?^NfRJ}^yh*C~4Qnn>* zim|go{;85(!v3V+!u7Lt%lx}oQgezojjaa;G%nj;z#FNny){G4Jk>O2eIQL#L=+Ig zJdqg0M?HisX^qhH$D#N2igsNUbDa1iMw=})m0otSeyv>1AQj@V+Wzurtx3CXvsa9; zV~a8((~|eZ8e>#NncqL&N(^igspq5HA4{80)dfU0uJC`)YI9nU7s;2IePW!@uS}Ku zZ<_nB=vVqj@uABV?XyItHH9x>tx9paYKF5 zf#?4iWyk5}9oob_sO1?;=)+w_O_Lzhn?-}i))nv9wX2lUMHHXxT0u6pU?rMYGHoAb zx1q&jm;dH_bI^6JIpoQ*u{?xKMgHNY#1&63DfHUPQdD9y#wWWCPUdND*O9eGn~OC8 z+Vig;=I;r>Eh-32;L34A?*07tvXxs1-NIQap?_mmac8C8g4-t!qI32xdD3oE^`Fr0 zorB8-^wT~D{%(9ei9*+9=hA-F7W|yp(`U2$*7hYajnIL+<#lmYV~Ja=ebh~z1qe^_ zGWkm7EzOsnDGf*^zg}qPPPZ7YD(K?QnmhgaJ5^y~bx@cHU>0FqRu+=hrUc}5mL@g# zo4l>>?VT|n* z@2|d^p1f|Wrd<;}jTwz(U?{j!T_GW43P7`BAt1C?4V~XAx|&e`IS>#=FfAE zRwfVAnb0p8(&UtkerfM0fk0D9s41xZjgbGbX|a!!yJkFsDTMUi_WGdOWJ+JGF8(m+ z4#v}(wYPV3*&-%$dlOoPG_tp?y4Pm5>{Vb?*YL{J6fx5+WL-^)Q`O!wuzqrzn(sSw z*5TC*%0Auy)|O1fKh%ryqvyo$t@AoXt7H5?cQHF?bJ^XwPfkesxG-uShlY@=0^ZPH z#yD1`Lg`vX6k50WyjGQHBmjX&9Ic0(nu`tdzp$ z000d0x4{?@O)2O5ojm~?Y!Q~mz0?XyGmVXB?!Y|6g&qAZ=MMiM}8U$m7IY5XrEucnWl8Zunp6`-Ik{h{_+Wq1s ziBa+U+(oi}_TNgWZ!xEJOK`(h8cFVhizutJ&}{fS{f9LwJn3(BFuAQVZ2vmqb^g~&$B z5kIRbJ>uX(ws0-#El{OGaJAAchW-%7eHzkLiYPx$a3Ug9UtmRiCajCm!?1- z1z$=_3!=5_2}s4Dg@xWgTx;F#T{1_pDqf{bc|;58`XSLJ+!Fp0Ux=7=(8>AN@rYtx z;Tt8d^ThF}ngX1i{Q1;43nA&IWWgt)FRAOoM65_OQv`}v<&e6`BtXdiNYe2^{-ih- z>@>Z6(mH=myOu5#_Rj9BM_81_>UMpjs1@n6tXqm5$tFrY5-@61$LsRNi`$>#du4p+mS>G4x_ctuK6e`k*oA@$WZ?tp_vn4&16zB{>JKIDe7J$ zQS3v+Dj8U_EGVzf&yh9+iQl~gU2X}5J@wZ^PDF8nfdX7!fTiE~V}X6SEp7^)#@mSyWuRlNn!hY?tfrwhH(3u?~~KjI%~IV`DQjHa=s=pFZqM65r3Ew9Jiq1g8v2XM5^MVuba` zUQfB}p;Bwj1mzZX#tXsQji?sdA`nc@ow1zeg70H}<^4LLDq9>L&M)lR9iIgXT={vX zseIGmY{Iw!rm{xz#HGKHAHTso@L{7#uyXRzLUN|es04$(&Ny`8znKoW)cK614k0EJP^T%@MAP<1{jOf z_B~RxNE74RAA*kD9P0S#=Ir!+x%O1?bh%J$<^Ml9wKxYgm1Gx`Y1a~PF*8N@LAXlc zPv#}qsSe&jMEA}lV1xQVPIktvw3=M5TECC>to9xE;<>nDtwE~)HoW?zsuIH*u2mCm z@x;*ZCI>nzFAR{Dr!^DVrp6>=`*4zuI+SB55(q-ZF-RQI1keSfTn7RX5N*iNQ^9p7 z3q(Kwun-Uf0000&LqIeD0AEzTD%S!lE!<%LkllVnfIx;RcLEl>0pNB2LQHnayN{VL zH>!lbs(=5Ci~s=0%v{j{0IR{bQN`NzT_k^^1P^Jg_= zRko$p`!87vc3?lgEeqgpd*zk~jEd#UI}cz4EU~nByEz( zwbCY%o66^KEA0xF71fHj~10`sfHkH#-gAoj5GK^_6r4 zk9NorY!SrzOrIqri}FiawofgGtJPUZi2r!~%`;Ww*d(shC)en1cL<|X(b@@QT8ER9 zHKd;}lFDMblb5<5uE|zH8aN^=q?84Om<>=0 z4X#6Yb!Qneq>4w3CNUV$g$#y95RJGF2GI3{C@5tY-54DBNDK~*5#e{FjN<%rv9a|CyrAL$2(sd&E;pZC=~*-Cj#=cJ-JGvtMZn!+6<0u0 z){uf0tYlI>1DbLoYFQlCw5|9cjUYAnE=d5O6aY} zD63kC1F4O{3MOUrBs@^YfaDk$h{#HugGga{2o#5LS(k*qpdboKS(P1QF8McoQv(4@ z%4#A=Ntcb!kJEe@Eux65kW&^2KF(=`QNcfhSQk0ws!kDuc~2?Jb?R`)o5q4d-d~*5 z$X(BQzqP4wN$3t^)gD}Qc4rXo)UnXRuB*NZGh99@n(M2Gyp@IMegOVB;jCi7C{1q;Onsqf&pl5wM?c{Z zO~9k61_wKj?JXkMH(UHD0~av_St*tb1RxyeXk3O>RO@3dP0no(b95296*V%CJf_Oi zxK-(lGoAJ}JfXK}3&Xb+{eTzDIL&U~t^KGflwjlWFucYoC>!l;>FSW6LhDGu)n)x? zPgrS$Q_nxH-FC>6K0WcB%dI7@*KQv7o7PQ2H$OFF3C}cLzR!+q?DAgj(=%t1LDI|x z(bSX9hCIbkS?zNg7#Q4v6qg+s^w`--P~dw8eY@}!+8F1@(Jgb z+BU!%2?Kw&E6-S!S%||GZJpOorJK-qqh<@n3?01-72F(vH0(%hh>GQZsrVY$kWc}Y zodMe-SWvutqq&uR_Qh2$w6Z1NN&Y^%z~Ib-PYGw8pe2o{D_1qNusIL|WSQ>z?) z)5!Paf;dha#G@W_l}#b)v84uyWjVbHek#cAex4pbD3b2jpAOP3_O`tb8@(wm$lW>> zK-!_5U>nwq7utUBLr1#TYTwK{bNI;p@eNP@wjWa0YPW}y+xo~+dtFRjwan>YmRj%( zz90;Hu9dq}4L~98=BJBh-#Sg|MpU!$ApMgZ-c)rZ`_1U0qQLdgJ-)!qnvaIv8LRc| zT2QyC`i|uUIO!c$SJ!gu5$J=l@xL3!c&OgxzEr=pef0=%o4apUJ{WKK^cw2B5Lbum zK;Ploy{W26B*w34|7BomwB}X}pdg0(?5-yAn74obuDvzNd9s90V6;h;5Q)JXt?kaT z-0mwyN~hY{^TS9ZySJK^*=gj-)dCqvQ433YeQ+O6TzVajNaA4KI;raWIS$=s_BBj-u!%aTp*Jgra~h6#oQ3Mwrz55-q+} z+NjEPPn+V_r#Vk)(p=sbcpuMx7P&Y>AAS|HSD)ivuJHL zGzfVEUNCo#q(LYY(l4}7HDR<@sU%Wkb74z`%cde%uAgPTlx<{l>Vz*}kLPKu4n2{$ z?-O{OxMol8-`Kt1mm&0kNrZj+igykht_GAno=(2E4S7)J8-i>gSi+l@MV(V(r|x_R z205qa1sAybuk?keSK<9&9Zs4ce8W~}^Tk>eyOnA!tIdRVkd&stxv?Vq<2~EoS{?l1 zWDl_NG_PSp;j%H}D?8dx#G^XWG%O$~=OruF_P&I6pv~zDSJj9Un|1zNi@-xZyjabVmGyvwQxMBY6 zmczIRx6ui?Jljit;1@7m0SqQzmELY8DsLw>-XmqFZjO7fqZ6xYbG--sbR)dz?vt7n zYu(kn7rVOx$>FP)%RF^g-H=7*es0E0T%B-;@bhicrFp#3%R|@{FxCaj?mDR#;Tt!*|4E(8jN$9 z5AvU~>%(@KXC^;yk?y_lNU(q(4BKyc7ev6h266X*RBksa-fAbq5VqvJ-Ztj z|4Lik#$^WM5YCD~8g!qAZ_h!KX^_j-uCBfwx*Sqi0uWo^@b6A&rGn6BUi0zq+u^q; z{%Cl5jY5Z8MAiS-g3uS9fuM6O!mlLoErJ8p5MLUG?NP6&A<;y}0uo)`kuegezu+hO zcI)-Mhc$J?UNjl|gnH*KINaAeUvKw&;P&Ns)^!b;_#2WoW-WRm6>m?wP=0#TBf51X z{QC1}-+#S(XWY;<6^>S7LtLLHZ_JoYn^o`seP<=|43oauP)Vx*n^gQo>ZNQ2dct-x zOTYXp;6GS*n+CG`cV6SI!1e8{hjeQ_0W6DcaI;zqe${l|)|(S2aMEmG(OVd`Y~{?g zn|9e}z*8xp_O2FPnzFD;*>R^ku@~@jv58EW z41PDOd;7!;tH6Ks3StAl412g9TBuBPZ~7~pTPlDt9ID^$3Df9WhQVg;Q`jXJT3d}Fop9}QHQrr(*-^N9cZ{*cK~ z%m_V5Ji|C#5yoC4I_BbT4-&Tx4MxOAhU@&PF(!8AZT(5$iiFy=#F$akk{DZ$@1ea* zjV`e^OHVR|;Ovf1o-O<8bKnA=eDAPyOCi3^X>=n;&>Y`u>F}We7Z-4F0RtED!4D_h zZ9A2}NvNonH?jKk2OqE4oN>f|nFw!mdtt;PtW56sDF6OQ86Na-)DQD>%eN;=F4K3X z!^)=nT_tHO&Oys_^?DT_i5=^veH&hh^TC;3Ax#O*#2;@Dj2PcOO!6rc{pO{3UNXV( zTt3W8=;xL8hCkI8TbwuQ%jw=9AOW4aooajTBi|uNfeNvWe988S6N=P7x(eGwec$)^ z#FgK^>A2@c3ZT#dcJHP)lS&gLU49HAI-<6$BPn|tAP~^nMWkVHkSoOOwN)w+sX;-* z0^<~f1A~F*K-+F8?n3$bGIzXK0dHn0EmpR1VhW(wx)cG0cZGJLbZZU+n#|S(Al49WUba-Esfm5fAPOwM6VSzzCyAtqWE#DHx@Q zfN%~Zc+v1&ilU*qC;~+-1Cj&^5C^natqRCPr$R-FipS~-c?JHsLDaXvR)n_}!c0;E zt~liT)0-OWG}_B0G&M#*`=0&hq6h+GkU) z1$OpMIy2?G_a0dG?eGK8S&4|csR+O;q?853oJok#5(5UzeQJ3$uJYjB8Bt^?+ix`)+q30tac>2Qi6as!K9`C{MyvIL2thth*N2gr6gsKZ`gPr zR(QLFcUhdxAyZd=LR%iZryn=o9(&<9L9I9Jv{H-1A9Z8>CM7?&Fk9(%c-&Cp)@JuT zRDbdm`}rZ%o*83A1sxo@;U3$x`_<|q0znqcX*!%dBrpm{yw;A!H)Ms6fUgc;F zzDoaIKP{vO_AgzsB}ke377d}8`)xqB;MHIEbG+tsn_l(2*oL?b@zbs;Zw0bnO<P%KJRHgrduWyEFH+!mL+ly?l*EBNX;CO%)qK^5%%2rV}9l%#VysPmp{bR$uOPb*hWJ+&Ej)f9f~R7A||C z+;5H1BJ>zjS~TOYmHh0nIeLS!ZnZMSFYgYP$&vw?%`o08#ab|gm}`))oaoLq3aBvE zZ1nQ=v96Y^iM}%ss^*q^yJi^KE zdrMbU>|>>F*^L)!*0+QFtdS78p4M<+vmo9d8ks-5(D{4h5ByYPWbJxOiSBP1{@;u{ zk9T#!N^Ezv1FLkIVhO7^w-Fhar{9lj6W2KZV?gzXv+>p1#&ziX_3Tn3t9!;D47S-YbKy)XyO- zD=Zu5V_c2_?S;>hYIDeBbkwWE+@9Al7nn1PUDlAs>`F9TM0~T5qvn}*ZEWg27i+U% zC(XGdET0;@yz^d2<(Ftul|e5-s2G%7{xH?Bdf=@_x`wEA3F~2uynX|Ru8LaNHhKvy@;_+J#N{OZ| zf;B{I+NWLMOjg|69jo76jIZO@96N~fo1^nKMH_4J*r zzC$NwE6XfXqwH;%)YC-&H@6JavoeP$mcZR_O}wPFT5*@{bhG#6YKQb@n`-MRVZ{ze z^I2~T&(QJhpB+i(vZqz)Ii`e_nRTjB+N=H8CQ1c!^Y~=SL_M#72InOW;dbo|Rk23^y%yJOa|9a-_f zn|6lI@Vzm`S&XyzIP<&E1Tr_b8zvw{`i~!s;pq+ShRwo>x|-gj;A?$ZJNMh3oV@}XZ! zH(deaT=ismIO;m{;9p;-25cyrmVCdM!*@sB6g~J*di-X1(0Iw1zl%!a;Z)lhb0nRf z<~|Y43xw6EF5PyJvjlY^c~69GP<RfJ5O*23gh|1EGKoE~iM5G`TP*L)bg@Y)InHf1zX z^uVM2>2nk9+2oC8gPdX3YNnyBcU?~V6MnPn+sHy17Lb3ejpkN%q!7xdq zsOEKby+i%lz(puM+=zRlFmW21=qNdXLKLCl5L8+@O)hWl z$+#kdT~FhU>}d6{lqEB-PzW|c(}mdQj` z`BqW^G6*Vao>&vN04tmF9358?|Lanq6K9z(r)g58RfwHlVN;zOs#Y=(89(_-gTFH1y z5RM1!dIL#5PdF7$Vz@TaR!6)kTOI{$R%g&S#PgH|U6QSbQvhR%3ieoWQoO|u*y?}? z{!F=gNhy>KB0F?}L@LU4OmILlu>Sz9WU@2gA%7yv$$KB=>)Xj$e1DlA3=uux9RZOR@Z zPA~6~xSofUBjIUvoREV-N>PR)BIrbi%YrxfSy_8)I)^wccHQxjmTJ}U@EA|X zRVFcv!SgtZ4_GBmq|A(Jd$J5ukkOJQQeowsTz|apSB^GhTTbL>zE!MqUz{>lm%{Pr zH1UkIk^89WqXx_)3?jSPvxN*mX|T@DH>FGKkLQG_sz| zk{{t-EDh8aMI<^UpyF6i1_-CdQ8k<GkaW&G8s1hJ&b0O4)|JEWtK8WyZ&Qdr84hay3dq+e+3 zV3Vvn$zn=$j7w3#zk`G+ij$OvSAZTSmdhb3f1pK{&ED@GU{b%ah@|XpfVCh=elCRu zq^4I=E)j%?0&_q}4?%UIi`bK*I06|?dt1IZj$syp<6FEd`7`KlIYzmF<5&!Ovg=tb zDR=+>$$X8m?bsXi8)*1>i0p(Sfr4>qlne($F=>$LB7B&(=hz`y35>VRet5CZ@J z05WATGXMZzWj@tzfhIxGNbVtR*Af6oI6gN4Q1}4f-xq>OyJcCH*FxIUB>V4~{s0&u z0-_NBfCB^IQ*xf0VHxHwl9ElIOQsAHe9erU%$e!Vo20wJzq{(lgS{9Bf4XyeYY)1$ zb>&X_XoaBimsI-ca4&yBrBFKQ(OyyVms9l7VQ;DfL<%}d2Mw8+^!G$G#Q=Z^0MX0< zTpt+T`|j?w-O=m&()ae)c2YatGHdT&ds=MT_PPvB%L;4F^;Q3>EUgSe0gWrdqSx}CM#o{1SjPwAJFc}Z)gJxC7GM;7@laTc*POKaJOL1*>y|ykG z5#}^e#zemqVj=I~sSM4Nxbbh^j+xllZg{h@I^#L=<4T!!9GX%LjBRn~pp8*tz`o7* zaKJ%?9(*wZmaoVeLKIfCr#6E?)U7~;Ke#Qo0T!l#z`q0pM1SHzk(xV{k`Ag=8dIEW!l_}dG!S$)X`+T{kyx>w^p$;M&D5G(EVlU=@R@-po5r+f-F*R; zrfFF_b+Fa!P$#nbt*+_qc#0N63{7$LfC532Da>nmnSB2~C;Er{x&Dxlw$1LlF?n@4 zV8$Sm;Z1nuv%{ejYt4Z6XR1^iLRKEi?fQKkfCrZZo*n)+O0{2PDrH^08k`%JwI*Wi z!FR~*i~*tGT8b_6q@WtG?H2Se2gOpLx3W!skIvJ@*=44TyYo!!rcxa~RCVsRHBO7r zjAd_y`&Z9xUBY83eQsvh#Ugga3{GYidP79zGI)4KXx9UYe;2z1QjF{+TRrWwQdDuc z5BPz8@kYUem~OU*(oKxpf64D>y6bpARWDZ(8MYPZyYA>YG+L?k!LF*| zXAKV5=T`iB?bGEcY<;oI+Hku~j8nh;#<}&*Ze&{H1!CiapmZ3vbXh6O6EVvNdMY|{ zm7w%AdHSojoc)D*jJJ|Sc-_7hTS?nhNLf01=~mb$^?7Ka?5Brx%$qNeds=XZXGeVR zZHuw;O0z1hXUDb8)+;RU6YecKN38%ty(4PX#ITlTTk_VV)f)udyTnlamd<)>l=h{9 zqD42oC(Wdm@j0d*ibBn$7Yoak?NvYg8s5gn0k_Q)C>09`&e%f10fQtI1P3w95rXoH zH2e9A&5J|6aY$V@c$L=ExU|Jy{nw+(QHdL(e73LK*TvB?Bq0mDt8lDEi5G$Uw z08_<1Gmr?Si=C(faR#}TNfe_Wbf6(Y?}7B>97vYmfW(omkF*o3DPc6y(s5mb!nR-# zE{K6~%oUQ4_v!UvHg>^Q_5oB|*I$w#ar!l4X7il0E zl0!^run(99PZ)tMSI0cbb3l&aj`OWFM!_db$d#$%i_|46wF5Fm@lB+0iI_7%wan5` z?;JNYS&p3m=M0i`FvKk*++Y6uTngW><;hj4;;DOMY$aO-{u^m0Z@ca<$kZAkRHb^1 zAE&Z?PJ7x618j${O!EO&-~AQ2J8N*340c7cxQCL3?qje6bu49QLqG=tNHFrr-;9=H z%pZ4~&wjx+nZ}{8fn_VWTX@YG<4$1mdTd*2Z0zU%-|rTm^Tz9I#`9{>C0-L^$#=e~ zuMH?9Uu^U4byJP@@8D*!y2|TwJ9vyurkPtUDY*QX`mfSDv~^7@_>IRrZh))lsf?ya z99&L;XkcMZ1VYPjatL7H%0O0N428ro;3-pVYyAoJWt`P?wl4ee=8HAs+!TCf&l9FN z8Upuep#6|$Wnej!j=*$%3Mmva8~&}h^pw`BLT(8as14j6OvTurV|Hp=&PB|)tqwi+ zpnO+b)f5I!QSZlri*cIG*!VKUxsDF9nHkJ0Wn6n76t=-K@eVLRt;fY-t1bw~BqMKj~<6m3vXFi0aOrZYL=>1h*yJeJBEDKE{GUygz7ZE#f3F_-XApAL~Dab!G@(Lwhs7AIi%z@zhr8 z^1R8BRlMD7s!g<5YUXB6_&9%z=q~Nt{()Lv-(qu~jpILE_f}JN;A3D1a_;1zy5BcC z^oqNi9yW;iSKlmO3>GixP02PgJm9;mlErQtQ zWE_mCA3L|E<;E;On)=vyZ$r1CwioqP7cRP8S5;dXw!x0>_Ng^mmAnVFUnKCe1&93Z z$Wfp2!!{Osm{vLB_Pwk2vvF#B%x!Wf>W8}uHA~rzck6bFUd6}D|F8Th>>_x+l$@~l zMQx=JY(`@%y%TpC`8CO7ftwkK;ch#txsUo@eoW7<;dv1j_#?qd9B0$d$$=**%9NDS zT`aS%FFKw+`Fv|y8sgFZ3AodF4adTeG8>yU2__X=zw!3WqUmnuebk78>7ZW5}JSD#+m zd^Ea0N!xu+eZ@akZ>6N-QiMYzrSL;I9LdIlVkkUA$K&G^F9b&d7IXM%1u~-6Bw-2h zY>L<4d`;Nv_2ri{)P3db)kwHK?Am9Gk%ALJ7S6E2a1cDlPcp(d9L-$;_A4>(t!0C^zqJvJ4pOH$7+UZIPsq???P2ZdyePw~`- zHWJy@R6fQ;!~3TcX-W4u8^gc0{a>u{TGLi$D zj<|qBZR?4ELU~LF<3SsI_f=6te>3n_wwSXXoepqG+%~N`!kcsf3YbRg(ctsQ{YzRA&vxOLLtSA3JZ4}CV~Ck zSk9TF)`gg+hbd%3tD6AKFrg$TY zAqSFWrg?Y|CFpYa!f-r}VV+I>37o$y($TvN;n$kL;WT$tx z%t$8lG$21_>O#{yZ(ky&U#Vou2S_o}KZRCW-k2)J1^MQa3`{BI1m zC1BIs<_6#i0`%r`!FZggJjE61L}#dQN?j4;KL18{Bf@j=yEuJ}TW-ez@DwvlI64x6 z*D(UMu16@88YK=%6NRq=OUGtYJMu_58tDsmB~PJ&c!JkLBE>%bawH(gMzf}8rMq55G8(X&8#DQbZd(XbuxhVE9Lv40T=)lc2p1|FK=`Ctd4fEDg4Ih# z9^J^VeMbEf*r~`eyW_=NPd?1CX=K@QcWg>yrRsLcemQQ-QDnuMpFlS|P60?h_s*P* zI5-JsAj%ejuQf=NRA7opnocbtl2X-1&RUnEQ=SWG4B9+Pw;jO z7X(IN)g+gHEDgDvOqzB_B3DYce>DL2mZt`L0s;IWTk3+-?-Q{7;GHZ*j#DWdG*@L& z5fHMM?BLVCVTT0|jDgS#&X95}n@Hb@JC&M(!A({n(KnOb?0h*tl1TjPyh%SklS24aI*27N4}Ix+qd!yteK7Pb~n4)dyetTJt5RXgm+(g@OY zbSV|#cedp{SbT+NmxBqdI8VtFAtbIrKbTX|$T7$T!#L0nqdztQH&3L}^0x`uR8fHJ z()aols*|nKw1i zSX85aCd#4{VQdkU`fAF!H2O!Iaf?R9G1)tbd_97BS}OlE-Nb9xf1&Fz&Am2b*+=`+ zG}Ndy>so?csuO6zL#G=4G4+R(638^IhZiSce^;LF+QexTKd{l9{j~p1&qGOdV(eQ9 za$RuFp+A_zKp`Fs5%OacMi2WK+Yu0&tP6ny`dN4Q#tbO!IPtui6#bc4&ANJmqbG?` zSc
Ute*wR@Wo7#2+J>UE?Mj#w4sq#I8w@4EO^L{tw^eW2V7^xA;*23mL4tbY^x znUsD!`d^fCexL?)vs3i@*z_mxV5r)=j|tMR>1FKzEPF=2%ASFMhnG#iePnMiy^oG+t-U(w z1czKQyX@NRq3H0-o|Rz2bk?T>*B+e0d3lQ4yLy)_${xP{(DytIA@$KiR1& zajEKr>l?1=O6S@PRbtd8#|avb_()5Aw(VmwkU4f0&{ayt9OgJszyTdz+`Fm)&1~a^w_f$I! z|KdC}T`7Z#G(_|pVy)8pfbX}xICDmj2X9O%;~JII%s+xKpB?nGLiCK~Dv=!#90 z*|=c6i9{|_KLAa~*f#uGsY-Wa)K;3x_{Z$*W4si9v^f-JZw<-x_|bit-%u(JKYb^9 zTB71lIvZ><|K+u8Xi*{mYfgSo7VKZFA};)d^jEi`L4IqL0^PKt&+03`$J>~r*mo_N z|B^_jt7}+}pQr3RLMJWrzzL4{zu)|mi?aG%_r09}dQ`e?JUOdMTWe$9%u}sZY1YYI zKZ~P{!oE}{vDP-cvek2nOWF{6)E&*5A!qS{{$0(+7h}~n7@Jv>oH`bWE6%OfpNwC% z0Q3eslb`&C`_hqoSOB8Q?(3l69bP2AcHaE_K|2SGlY}6N%}M{*vKuVwYX0<9!upJo z=ros4m(iAOMH!rfNy45$9rKl#2R*>a)MZ-A=~F(<8N%dTrfR7KqS^ye`l*}$Q<99{ zsHZv0Kn9iSR<#j0Ikis+!8rtc#SBd<=`clYJdS9>2*?+)X zqYJHYkis+!bl7Wt+gDJx1E8dE@SZqjW=`UwsW4vw0t!%QzKLxXFwhvADF6+v7&Y^)8r(a6WlGOq004|eM%2ykNdfct zkVG`xRoLcZR7kSj^`A>&llMGOS~F=8#SUE}rjZETfsH%;wF1TtmI9i4-vHF2hq_?9S1Fiv#_h#ETMp#bv zxEM>V+IU&+zv=QAB-;K1nt}+SbAq-^J){#lTVHE%tFzD2j=uO$%X8$WV&dNR;zQbG zK9bK@(-Dzcmg)Vsn{@>Q1oJYbuxn)9SI2oW=JipZ`cx2H3EG|vm(d)oPKWL~_8y2& zWYQMip4x+btt{r?MYnw`_~Df+L(1@ij3Se`P|d%b89oK6<`V+1-?%I;3+J;0EX*-y zkR-=J7_h_9l+P|Oh?7Aym*;7DwJ(5N%Q`hkrCsl*XE2>K@HM$DXLKQvsyAvd!xS_!z5fC_sEaj=d`M3lT3wIhd`iU|H9~%;dUC$ljDioNdC2>7Jv63Ul_SL*D zc|c!N@I73O8~nrqf*2@;OLFQALGc)Z1jnKY#X8UhWh8n6FBeZ;oK>8n#BI=&%``wb z*vAOcQpJxc@ag)6dcvgwdiFZB!v788uQ+pW8mIXt|F*oMZ0cH`wXrX&iZRR>XO~Y; zDi{W#SgG5`xmuxGLy$3=A*~ruza%9Ku-%&xkgYZ@sxn|q0Ye-C%ww?5p0A^Mfw1XX z0^~$sWENCq+{TDqV}KO&=x-}c%?qhAc|(U;OH#7%3tB(&$QPGP_<@K26u@`MA>Tv$ z`v*v$5H|<<7&~5NpTySxu`7Mu1<+;G<~4!5Z(Q5ke7fs;^|h|s)?*oc^`GWIZwNYf zEzUsfvhvkA756d~+6S++K{PJm#%J`GbCfVpJ$eTz7WEFrXzo$G z&gW0z_W7Q6B#@xY+gGAR?LpXCYow+pcK1yRlKIwUz%rS>NJkQwmM?k_ApcWVVVBBJ z&@R$drC?5;qL6HMic%co6~bJ+@%!{~^VOI{f?^_V@#6o>>wq)wyA_pcAUx~NKVXZ` zg=DOkKb(4C`Yf+18Bp?niXRJkrTm3i#!Q+*mYxfY)f}6{xzP^%qt2mNNoSOCB}c;2 zkemHeD9G#n>HmyCo!Xa*++h`Afli@8;>=4q%GKU;>>ldxd7WR<7IPYm&rA0ObtHOR zS?PN|){!j`gknXKt}75&zw~=|5KUfb^4^r$&OvI zz+ygjw*Fp>v3DN4-2+?sqJ7yS25g(p&0zcg&J(oF&b;c*@g7(k=L_UFNSdY)$Um|= z1iXf0GT2NH0zvA0jVD()1Nn3cFsNHlkcL<*+WPi`^o>nd(9^)0u^`fj!+$5g+ZCYEf3$&5Ta(yzx z`|6=U0btF_jDwR zrt&)bAHB<+Xq8KN9ur~EZ`J2LNlHp2%1TD)Z%T_U` zoJDA2@)NylOcE^css{*~2=_@jqH9Z#lZcW`s8Et9gH!GMi&@;W}{ zzycfBa{N{1-@)@31}pWRr>dA0yxp@^&9+w=%jq>Xzg__6Nly?GAz6}GfO0`q*L~C) zkT}tj5W`3<0ITj}$&af&ElK5LOBGo$E9|2~HVHIUn&n!mXL2yG)q>PiP)=GYHdvBC z!qHE*(gL2kNef^tTGmEOq#Iqj`)#tRvZ5+@#sae7Ot7#nN-5{6QQl2b24R&`lvfSq z(i*`kw9T%Tsu}mtRT>JW#GVPsr3GeBk5EZkFNs>}Sm9_r(UK6u?k!!U(*$L~tR-)G zv&h{|;$dg9bCu5Sma^!}KL<7V=cnemKFJy5=w2hr-zsa zz*B4eF2xjtP9*?%5D)_Z001&XKr{dVPgQ>^)&e#O$qw!g?&bu*0Ea2JC~$Wn;B|LV zOm>-XnU@KfDi!~K^Zx)NGY2#>08n56(tLPM#g)i9cHTwKmGut;xIYwQIU`-D+!1 ziEeCNNYSIf1ryq|h^veWEH^E>NUan^fG5gVqadJU1o;63d{p3rJ|OS`@ezCo=Fl@m zt0{9928E_MS%#jXg=k@t0;fT+MvhSitVVMn0R#$bnImegCIisLIWH5fS`!#hrnn7` zY5`RCegWnJG&G|wkrB1W4>aTx4l#bY&~qV9#U4s?gPj|a?WZ9z2P}^ry2g&|&w|+_ zLTFrzBXZaK8HDU^MEOihV@1C@z8UjLn9tau;lYo$529+wY!)(G-_yaOFhJZXja<;d zsv^?Z-<<;`LgX&i;Cj3#25Mtpj;7p=MIG;q9?CSia2`ju(i%Ck4L52(9>CVsGp(t* zlDq4u$3$dran@(810+^xwJY{`TswAMw2?F*V`iAOXpi~(R?sVa-e1@k< zFocSyC$P`OJuuLY&|nGL#2{dqM?v#Fk>q~QjzCK?KqM<%9SPs?rc^&{RG^YJ_4L-l zLO2#eW>Hiekq?m&iPoba6K%)uf;QQa`~h6iN>xJ>zZ=CAQ+~>DEmctS`qB2FT%(0l zT*O8Q@!kff2DpGHosrp-@w1)duUWr1g{+^&L}rrL1(m#9jIJ z(y=r8&SRs)&-%f$J!;`sn%iWY+HqxIK3n4s9<>bg0y${HPG~|Q6b8bAvK$bLmNHZo zR-txT{C!<2R5-UYxJEU71Bciju)2$hMGB28q z;mOA+VFU*&I=m#y%{#kDWX;N3Km7e<@er1w=U#Q?QO}%v?#ffQXLeuN{6H(LNX6v(ON%N24<#p<-Nhy=e%h>)BaQR zRwn=SAuD@29cG!UuLy0|ms{u!&5B!^a5U(Fqt-kzL+Am3I5{ovSaA}trftA!1!B&w zW9NyscH<_k8Q~}heZb!HRc;#IS1US&CwjB9P~I4U#|U~EME5czzQ*Dh1Js!|N6Imb zkUyPGQH8`-nrRIYVW2pq5eOU(ME?LnNdy6ZP&b-@!(Gy=zi-fhwaL^eH3f;W+ zZ(-}(1sDIrue%?{A00ZQQg;VErz^Q@*l?{;G`){d;z)Vw?atbzM2uRatId~Us(*t2 zWc+EWAb%AHh7K~Zj={hxUF&n3Mypq=11`~lk7xmbw005lS3IdEx#!jobCU65-bX@8 zSccspA!0p-&oah)4%AW*97ypfd76*C2X_j1C$4r2!h)a_xk1!Xh~p1g_CSzAQC)W& zuRxsazT~Rf)Cm9qNJHV98juIUa||TIjPubf7{QFu&>$qn0TWPf2Jzw);N1g4`!0_V zm2}J09R-T+Y7~`VPUo@F3xV@?IxNLINm_+|asZL2&5Cp{r|J3h6;YVAb-qFiEv=1{ zg#2c=>f$>c_q`=jp<#G})IuOdUVF#_vmiJ|7Ne*|DRiFYV6lim2tMDU!#^O;k&sr; zr&u@~yir)a=eR;$ZnAL*F}>2;c5%)Q;tU*tUyxE5gTTEQco2ps!a8ybBu2H^-45H> zuB}YkhtPm1Fo`dNE&Ym2kq{b8@GpdSF`MZ?3J*ftc2P?XoQcw99cVAee*`>4h7~R> zhNxq4ijq)^lH?YF*!XagiiVC^j1%=Bh=i|k5OPn?`5R$5WIQ=gj6?Md7om^2)v~GJ z%u0J1(;yr~Lz4GCVCuoWlA;Y}0t<0D9cG5TBR6|L&9YpQ(P@_#?YqsUsjUhXJr|1F zUHD+Fj$h9u&zPZY_dZU?+heXSTAH>bs31fb+^Ikh6GdMpJeWKvx(U*+PDZlJx{Ayj zoc-3+pb*_PsW7UX(YWyS*qOx+{jJdrEnX{oJ`f}JU>i!B+S$_t+8wWz%Y~m_1gC9J z&VIl+CjKDK0EKigh!7Z@zcf*flO1I&~|5RP)YJ~A`c>@{d+WMe*N?=_bo~^pB}HKyor}BN6pdG zKQ)hVcHbQ7SG}&|trJHMXJ@nWBt+zi{bQ_YO77cfDj}YU=UP;SQ}#|EzODZhw`;5L zBAo1eUBIBkU9Pw7~C?+-SH&p z$9?!o9deDo*YR`KHPnvRNYDXn->9BZ5eq`bDe%MjzSYL}4;$G;ztYCP@adIGM=Q4< zE>AmBJ*=;MU+r?_HeOX`(Uh~frf`F8Q}Y+6E09)tNz@R=9N1uAdi*Pr>~#8*SJg@ubh{O)zsq1cZ;p=t=02CEzUME>3lRv6J^dp zrExA9h@X-79-%@ARXOblbtwkot>zKEr_Acx6;;s77>BpPO|$V3QgVwBI`~3FF)BV} z`*rQttqt_k&yP8JMA{_(Pjk-ZZ4PMO$JOg=?1la7d^~B^_B`V6`hBef3vM=(hvd3I zWn8Qc3O(uF6S7tY+k;-=FYO1r&Uh>NlrSx0#M&Y1>gUSD*;qmR@X74F09N3hvmFC3 zCV^Q2qfGPAOZ~-DUcscd}J+>^7Ygvm z552k{AlnbR`?yXgZMsd;+xaTNjabD@B#-}lH5UBj$Lr%1PZGX-Mck5_><}lKwGh`l zRNnAe`_-L79NT%Hm8T<0}4C z)2O^MqaDl~H!Hz35K`u0VEm0>MJ$wsROBJoimq>Nzx4*H2`5s4DGI=%!07^zNKfH_ zwya2~!#RBm_mE>^fPO61Or;0Ts=s)-MKi7Ms=q-3E`t==VBmOUkw`j~2cHGehumq!De{;|zaEKBDyuSC{;qCyLpdS(Sin^&dEsbmK&OIiHg z5FNIY$U(pbLpr_3 zX1QnrVwQmIkxVf{^SZJku!-OCGT7Y2%!CVzj3+N9cr%VsNk1c zh(zk0Mt|dMZ0d*k3`#)N1P}lL5I|+$OUqHv341(`j4_q2o3R`1UN2HtX6^3{uU`{l zG+!L^+^@+$XpLkK#6>a8+Hq#WM%4J^{yyKaBv03jA6o~z>aaiPC{tOyYvu)lhAPM7 z9CVeJMJ~~NmJ(5Uqm?tliydKqJMOo~#yUq%W+$EK(%biZ8)+v`y083XlF)dVez?e~ zs`>S5FS$dGw@l?uIexPr+@DcESC{aLXZui?zm_$pa#Y*tDrSYHf`cYYAm2qZ<-vy4 zquwtgn75ANcwzfel`;1KP!sApng2?+c$lD&Jgp<^9&OD2AIDV+nBv&UhzxW0$h!qi zel{R4$qdOfc&{k)chZ&Dt#h5b&bVRfQK+q6XUyIY(<)CWNbw@BU>q;2dF^1q8G*7_ z@lY9vLF_}mH~4bkoRr^Gf^6OSrrON0_Q=OmrL_MQ>!~A6H)h)Dxc52Vtl|cxKMbI8 z0P#%~na5S{L6iG3Dx#L1thPBL~ zyVvv9JDzA|Cf9jlU2iO{%yUx!QMKOK zjnXKPGv4x(3yo7$r4hFcaCG~DGULTW#9GUL!X+Wz=s4~kf%fIE@!zj!#rCW2O4(MB z^)4Mk)Ypb~jnvC8SFB$fW+p-A8KooGq~GFs_zGlBFU|HQ{PrXA{-sY1f0m4<7J#;O7S#(rm$-IkiKhEoBPx&H)~a(m@W4}zqh(|u|$^EUGjZOPr8 zY~@%jf?sRG4wXEP&7-UiBmd$n1U_B!oy<`j4y3h)n=Pfcu^PLnY}4I7=}#>_dy*CI zdbq>dOMrRq(y??sFlqE?P zbUK+;E4!Dq>7!3!Rb96Biu&T&7VY(KgEt&4ompIW`)0&NH$zZzZojP9n_tOVo?Y36 zn8W4H)3W+|T6=M5T8*8AnCWQDVu(8{N5t-cNiusU_2A;%7az#_+t${4*C%nT(|`Jw zwY#;G_@3>qeKLURH;Re9u4y0YN^*_`z<4#2HlmAkN1IOR!LT>T5WUk({^Yh}6(o}aKB zL@W;h?8_@>^-)b<<+JS#H5Vnv4oHX6=Rzhr5SgWO_`88+AZh{#fB*;}dUr{nuN+QG zqDqH?sgis1YZw}-T=`0_VV<05Ngd^)c z2n2Uz$b7)NU(kFTY9jaHBoD<)y=BaU-7Q#zq#;0xtRRvgdPG4pVGWXJCotb19Wv0s z98~LM#lR;-Ut$e&FY(3|0`^fDwB7?#ceWxtdP;aZrDuEU7w6T{+dmcojC}T0ocmj>s@48|VoJzc zN>tfR2?1qX(?9f%4pFi{UPOj6iu+6C!~DlsHI&=3o*@8ECrDfLjYIECjieULfYf(G`rES~(bK*(ymS2HTuqZ@C zcpI9(<1rYR52K8tFs9Ao=UI)HkvH1CohrX%gtSvyT3JN>V;j@*z@Y|>>{bvw zO)Ns+^8dJoft%OiBaNOLX0~FnX<^)jraJgY^J5JB>qGXpqcYn54hMI-Tk%w9szHI5 zq>ja8CSHl<2+F}DENXHml~Sj|TYhy#luDQBvn?yPV+>QNTZCbI7Hin>_MI2}fg5Dj zaU_*+Ilk(-d)x+~tE5z9E#Yort?*7-OZmdu5}pUvbEZud13nK-l6^&-Bb$<2My+R* z^6_Ie%QwQ}EwAc-?bbiD0BKmgy^L<1IkG5-mJ2iIjinuQ|3Nzm3;OI}l0Wz>ddxDE zEPe<2vSrJeV3L@b$<*NQtd}MzK@JAN9|`;Q$9PS+u`JSiAq^-V$fR`3B9fl^xwB<~44lgf19ycc^yc~*RcnPUcH$+wp`R+p)4E@&*PiBm3 z|Era~{GT_2LKD9qHv$nTRQYL!uMt;);FQyWmG9)hJ+Zk_DEtnrBd@NN*X@H(6N^u7 z48&9H#FJma7@22i>n8gNd50ApJ@PG0zZEaO0VN<^yfsml_zi`( z^`$vh8P*BZD~$oD^gEKi_nw$#Fa^K%P$Egw{Y%o~LSWwr50&ujd8?k4o!+=`@jD#H zl_{sv(7~Mh01tlFp>$rN;RWKjL}@&vGJA#hf@*A#>FIh(Gnu=pT{#6aIicK(db(p& zu}*b?-)x*EPtNmYl2f=Oc3ThdfZOWPGUnIUh4WQeE8{xaCI(l#f6p-tzuW_!ZhKyq zQn;j6{BL@dt~-{Nu4^tafST=Q^*U!mqu%fWE52oceg-7A#D32JwO(cFw#ve)W z&yFpUIMD7R7eD>X!wH0Hzk5SNU=Ema>^j{{tC+YlaR)T5q)jK`a$+iCq>B&`0{{R3 zLqk9#003`gZ6>J$}Js%+E!l~mVryQTlsQHh5#5rpXw$984?aMNq%mw6D2%-fM@^!%?KC~ z6aelU`|iKH=5BWHW^TD`wYkf+YXfC&v6V?}n`CSeEo?Wk0BcbtqL!u1MlnJVqS_Zx zBESd^>L3=F=LmePfFcMW;RBB#e2C&hJ`kWzjDgLe3&hf#pOcCI&KWoRAwWXpPm+e# zGDhPwdJ;H2^wV-`OD|E|fBoRbh3)AFEfop>@r_l_98fq={0} zt(c9}P#N^;6{@@`?Txb+tQ=vB^32Wy&4;Hmd!dZ`rfWg34E3*far&4HJ zT54ovB-?c!hf&dP zB)h#Tq$)PgN6%Jiv|66SdnTfR^PJo@G#^sg9<8rMEXBq9}QPeTfMPmPD zCI&t_F*6k(!L+D%X01nB#(vcAODF>`aqXBwSx>>W&};0;rs+vV94lN?FVcuf*> zYJ!sx85(IBAz6$ecQI;2OG}!Q6O+%vXHBZ*muYDd>7Jw+#hv&i(xvQ@(LPTF-5NEE z5i?XjpXmQrVG`pyJmb6DgRwbfD*gSH$7&Ok@|oau;irk2DCNP%Q~H5%%D(%C)D{Dm zi9x`pH$?5}a7r(n^IMQd*tg0^hPFCuIbtfR&&L?y$k1LG>c(S*)ES6XtW?&guFNqr zjryilf83Y4si*)xPaB*+vDc|P2tIlYZ_7z!$T1VY5-DV4$_r1l+zdTMiEDoomy@m| ziL-e!Fm9p}?20;tXq8Y)L~O%`{W}(z$sV3$bRhM~o@lcm`l94w#K%Zys?QPMx@q(b z>EimV=a%c3;A+8|Ap_~kl=+F;NpVJPHs;vw&p{;Mmw4*yde`+-MlW=h+h^pEv53{- zeZqw&l`toZO88FuF8yXER>7Nf()iD9!!K2fH;W_0c+6Itcv(tqc1`y$P*(4XfN;r| z*v%|-zG*jp8H1V{HGld{f3ExOF##Y+xmYoCZ;TlA$xRe%zJzEa=T_HH%OQ*lz71<> zR7N`^XnZuCCuS2!^(#=+mEX;B(^+42+^=b#0e`&jkF?$K@q*rP@GIG8mj#AbetpGP z+GTc6^f=J$v*vXg6OAy@3D^xT?>>wL7oi*G4j&iQ{iLWW9%t198{)m$dD>O+L2Cl@ z=dee!RwV1TG9Z*?5KXttVwtcXVVae!rB=jk6sv#vYsxw%b+WNfVEsy(ZOFr9zQItk z)p>MLNITOt+v9RtW`kERZD?warC$G2)vDFC4WITx@*NQR1aanJPO=T=o<y>x?%bir3#Sg~Dj31am6+Iaj z)0n77`Wk*ZXg7FKHD)B*CKmoUdttUX>_lxPI*4<~2Jc67)1!<@Q+P=e>X-7pg%)Ej)qQ}YPQsq3>h@m*ekR^XSmrARks%VWKm4}?K62rhwOP|r!KK|4ak`KDDqs1mIw zcTe*Vu-lzyQDb=^X!L2V*r9-i*wE788mHey;UaaesNy8h}Bh+4vF+;;t z7~$*5tY`_TXvL+Hrq1P$VQYX67Tl>E>?%7K?xn*}@j|L-eCKni?_GISL zN5*xW)OwYFMJpcqVs9H{HyKFtZ*j0)uQC_S&XADNMJSC_rpZ4(8^JV!{2icvFols-JW*C(YT57DMa>&SbESTp@ z`q$P9d}X1#z!?9x4NTRJlL4|4Wqa5!V;Tqi!F_cG*h`AIziNb3T>U&k>(A^wK-qTP zG~2OVUNZt#-M2c3;y)98cvv3V>%$>Taj-Ui!6W%0XXQIB+y@a@^`E2m%OnYNqMeJA zMM`RP*1$F4lW_- zT(PHX#F~ZUdyTZMT5-uuqP*f(f4GTS^k4T2l{`wTMqKz3R7KC)v~4yg$gta-Zqr6L zRg>_F*V&h9&lc*Vq`vlKdg5jN+EFvy<>W257;oLRNZO@aAWm9_OFU00n7=uTviXcOQ?eo`bOxogwQ(&q^AY?1kZM^ z!APmOjY;ch=X<)GTxR=a^&-dPX`KUig)8OQ_*{&Q>iQFov_v0~N}Bo1*TEi31q-J> z?(@-*5H1-ddiZrR_o;?&Al6}jvp^D*hpYA0e$(u=uhxKKYu#v^Gz^I(hq-Mj>pANN zkmxcyOP*XsIiiesTbhyAYOOM=nfm;i9Vho=3Qq-($>O@{I|UQMtVqukH0wmmIix=3 z>&c%}(qz|MQJSvArhT48xy8K)KG_#rDI>}J#R~CrB_Xt2dy4&9!5fUw5S7sBo2ArV zRLD!NoszE?ixPSQ)(kcLg8G~;ta+ij70 zJ?blz@E|ziIcclS(9QECBi2?2wTxZl_L--tm>1Vn@@>^ zuC54tO7spS>C|H_pa0SWc}PUAh4nx#9uGvTi6`SnfIW#qLF{N(AsKZ;%XngKly;x( z$%AA)$+Y$rfV~cE@~h@~8^#q4{D6YPFBgr3Eo8p35_iR48WR&YEEq2L5i8xjiCNgQ zD@C*Du@XtxF!T}mgiCr*T8%X$#4^QSdPPtKKiy|QbSBRkOOS`doknKd1(jV*R44MR zBaCI&7lyci?t^A5&3(RlI0kQ-JlQuw=UW{yn-e#VuCmM0J~2Ah)c*4|i_Lb5VfZbu z7{n81V(zTM?r&1SEQVnyPq&ecUQ z9$Hp+wLdM^#CD35%YAfvQO0jyZEhy9I#EoKbSim_O`e=~S`IxW@`;h;gHPg+R zbT7n|iNT2pfLqFD9vvGxU`d}I!r~MiWeF))i_9NkjLI0aeNC*n)KO3_XMP!@QTbJ; zuzO!UBiNLMZPX}_%EVv%rwqX;;(D8#mQ%yp?EZaBaQbuXxcR})Ze}+6!GUqXBj4qC ztsR!MA#}I!(b@CQX)LQRZS^1m{cJk;n_5ygKRgECk2Cv*M$m0N>gvAWrDJZ4N-$Ne z8O~ag$nwJ2h^6e&i)4fco}-$BPw+x>2kBh@v5Vxc)R<~z$}PClVuL23vR=WCG zCZC?FbQDHxwu(B;L`)pDexg1jEyaGkY!t0t!`RwJ;hV4DE@r&#UWjNH@A%+6Wz7?^ z#>ExOBY&kHohNyr4w0h!*!TJ&WQbx%;--k~_-PYX5)&&%#>0P`w+&iX%@H`Ecj~+t z(fq#GHzjY&IaX@sZDafp+f96@accS%A&)=9Hn|6hFsP=Q#sQpuy%F;+cH^}~>AfLX zgT~*nfi|uKtc!MTUs_yW`7E_gJQw4tKKrBd#bSNS>Uo$kk-bf%h{?lfn0U(d!q0j3 zy~APF=-%u=v%sXg@FfZ}n^@gcyZHK4_vzZi0arGR@2TVF6Bs=~S^M&KAA?5QgO1&Q zZBS~V2YQx?i<|mZ?8IJG=8Ss(b0z0D8RpW)-gdC=Cwed&(+W*pq|M}6)262Ob;qZC z9B%aX>2ryAQTisFQZ?GDL?@`+NN-B;n@hix1kZRpZ)>@Z{nJ>A_5y?z_X%o;OU!$4 zRrX%c&gK&R*L-;aI>Luao4;aIfhyw>BX#%1MVhv|Vc5s`NAAm7BX@qCY`tXTl6!Q7 zvX((@c-n*Y)SA&L?+x&7i-71Pnn-SyD5vaxsuWw?;odnr6UxRPi5^opBF;7Mm8T6L1(YKEq>&&z0jS z?r;|M^Y|rr8?1b5aEn<7rX1Q3n{*C_JU?IlYF3_3j?VI>7{VqwRRO!{ZK7ofBv`nJ zUMlL3vY-?iMwr%H$Z6_1k$;7s8+jb_lZQHr?ei!xipHsE}oqekIKC64J zZqdCGSeNBr*HFifbB0$=lZlT(l$3?@jv4Kw2J0_o=sB%GCiS74`q#>;wpB^_5MzxDVb3TMmk(fp z47KDWj-hQ%$f8Quh*i@wQ}+-a`Z-Srd-L)Uyk7m^e?_!)0P6mBW|4HTv2wYUTAjhG zT;xNMxhd0KhgNNY1EifHPMI(~K!4HSx&N`j`icG)C@bkw-;RE9lBd& zOLXd5huSEIf#Zs^<3eE^em&(4y2;3+A3QK}Q$=7#IWxpbLct4S&^yG{gH#98X7pnn zbRA!6FJ+!fCxC}S^?nsT>tin7j|L>hGv5KVY~EDffy%b;Ut9>Xwhu+We06D9^gct5$hT{7E642JJ8oH%| z!$?k~`sxOOaRv6v&Z6mjzB?GrO8WYF8+SG^dSiHSyR;A5oZ<>&3-Iat+sCQKe4rH4 z-epO2y1&J0S9kNxD&s<)*iYDfIo1a10ms9*quB)Im-vS{Z~&}F9&?ZS^W4rpU-MPkr-vx9T#t zuGLXWQ1IhDA1rXDf2fWO6d3YvQxyOyqX&}twgU+e;xm(R4d30dK>!rf7%$yYC-#;3 z6JPJ^kL(M@bL;Z-E1w=KrheK~RfL_PNP#y{TfZ3H?@IS;(uv#l6>~T9omt~aw)onQ zA_z;(q_y)nmAAx35;FYPgCu+c7iC3=WZxw}=nEaGM3m5=m%f5MXL#QNAI4lT->uli zXA;*iPG1YwtHow*M&K*sBqT6aH$_6=<`+Ta6-ET89Q_Ki1u*9btKqaI=GP}-Rlk4? zepNy~pHtndoPpe5wMD8D9nlYIYu+;rVN}o1j2dpbIe~f8O^1 zq?YAuz@IIYOtv8I!v#Lwfj*r@zi%Z7kqzo`}FVkN1 zrmJ7lG9|SVJGAvzR^t;EM?~rcv^|G{jEQ;>YT_socoZE5V^ogh64H9lnN??jO ze%7;a_J5}lMT@OZlW08Dn`K#4YMJcDoFH_Qoqjs93dG-Yi*A_X7@AerDSp368YD1C zyrmc>&_QN%$dc~9t#pVtYu|a3$E0W;{3;!H(JSz`xZi3?rzVsNCY~nf{==g%Z@Cy@%5rV1 z&lkba{TwGM-C6-I-`&D=r+VLp)J~%@X(Bd!8Syea|Ce`oVS%@O@o@Hob#N?c{&?4S zTaGN+6@wF;Mn`+^f_F0xEi|ETt5S|6iIa$?l`F^4IyazztOgKu#oV|h2IBUwZIOw0 z22mLD_s8#%p98!!wuT{NgiJNdX9dC(~p)8c2&VOaB-7Hlp4h_tNcl*N+ zOIvsSZ&>VQMd3WA)tuB!wQTYa3)2E6Mrs-5t7yQF3npxj5Ydb0k&~*XC2QhJfG|Kl zr%Txn9y{NUoYj4NAPft^2XWcu!x)(C+fy>QE@>^EYbTHK&%%AaBn1ko>#}JVj^_BQ z*r&V$B2)#a_6;*?!D*`{3FI@QcUqhHa=Itm4I*nXr4m(h_~Zkquu7OWX|c^xxe*NTs0w{CEi^c z3YhCP)J1s3(^HUW?nxE#X?ddDhBTK0utMhQ`8V&wN${mGA(11EIvAWpz2r(WB9@EP zWu$@>wAkLdRL*=H%Dt9=nA6pEBgt9o1~GDQlf$--FWL=dHS3-!n{TFoyVapz9bh0` zkUJXydkDUmNv|Nzh8P@-gzLb>7trk95CHz)=URrkI-b&$?5dk8H}eG-%Q7@jMo$50 z+~zs)IQGg4K-A+|o@h$-`J)8u7YsvKNne|wGretX!4w%4a&nGcN7i*&z5eMSj7=EV z2?Qq!D^N$|L~?;`(7Q}dpjC{K#~js7{}Al~O9NfzEVyAZ_iy34`6{{*;rkm&==u)K zW0@RY&ypH-m;IeMjl%lScNEMJ4iM`nz{CrQ=)XDswjc3k%=GX)UEa9rw+$jE45+7U zb@nVn3~%2xiMNwRXbsGtzcjnx_VbaJphL_v1p+It+pPK{IfP}bOG;Gd#W2rGTDT90 z-{4wtegV3y*roxJm{88ZT>5;ihe`Y-C=uOV^sqrQe+oZg344ij%aZC$bZGxnxg=9$ zZSrS$LmAKpAKp=02bh44Mr{{1n5I(W-&|Nu z$^M8i^?ero#uvgBN~6itGHmE0P8pB*xkr4+!&G$?lxER}(9Am9tLkiwKeFP+{Q0yJ>B{5(8B3oF;>`FvU1SF>s4W+IS&rEY$Ad|2{lfUb5J z*EtM}fC;hHx&Yzqg+dIjV&fp`3<{qO3WwGk zpz|XDC!RYCT)Y@wxbnC|e3Tea?|iL(NHP;l67Y@pxeeRgO9VLtAL3Z$20wr%^J5fY zxud}1oZGaZp;6VBk((IAQ`+l}W|xoYeOiG98}dVf#_i`<`CDsocmfxGD?$A)NR9e7 zP0h})s7b(Y1!Qzhm)rZ`8#AO^$@pyx#Bl-|v}4wKaagB-MU-WDHB;xG*TIv8P6|&? zS`4339`p?pRssYg%w#V~v>Jcio+_I!@Ex6i6ZMxbMLlMn$2hIB^F|C&ToF*@ytuXg0&ik8>Yd==7duoFX|pKxXg13*`V`~(Ptr^9Y305k0NMn z1tcK~XmZLUV6tl7GO!eil)QT|l*gRiKqFLxyv%(LsLh@GW^WEp(+zhxzWBa5Z5ONV zUd&M!sGm508|v8=JE-xBBSwc$rSg#}H9t2}`C_}JdS10_2$rxAy`A2C=mL=+w=v57 zDft#-#}}7o+f@yG))X#P1_;SC*6%;AX#}3qw5S^aXs7uu!FnQT!jJ~01IMUc82t&F z4;;9Nn=CNwL2|H0@pVYxzkUOxaXmf84|!OtHPj`1Z@^j==PM*wu@_J2zr70z&w%N; zQ*5HB%95_*=x&DR6H*|fo1NB=46tZb%HS~o$m?0lX*@z$IHHlxlwjLy%QbN_tWcyo`);WIo?(HlejsxX*VX? zH~290PXBsEqTW^~Yp{nmkKJ^+#EEn(kcvSG63%m8MP^Rvbpa6?*n;wo_5%cXNV{e~ zy03RrptO2AE>9DzJCL7z#^3;=y}O{{3frIT0Hr?3hctoGO1r)}mG!HrVUj`q%E$Ch~q(7g@$*i)fw^#i616?Flwb z0{N4g!N3&@5y23TnasLDnAhPfE`&x$T&DcqHP{%G;h1b&=?m| z|FOR_iKk+6)E#?o2nNDk^pCm|5`t$8{T)Cani)yDlfA`6FP{t=teCGd6ZC?*4DIJJ z_cuon>R)~)b&BKqZY~gSpZ6wifBYCM&V}`kWTr2De}+>rt?Ad>;f04!+~!_S48mxh zjPgq60XVdi{t|-zo`i&gK-Q}P`{10lDPsN^0Cn+hbG z0w;^_ECo?*Z*Bdw;Pl01(bdU89Ne6fgkXQ!C-1Ht&HL^e)M6sw`+k0(LwBgoZ6_SF3;DnO|^2Y>< zo&qu&ME@UVM68x6Y0(>(&`dhhc;CB6M})Iv1*5eK_t4Z zFRbLS>2{&K_I^p$#WSdPQE~ecUL8+nZ?tGLtv5XBw$~Pt)Zidzy63Z_LsBws$CA9) z{da7r^LYhqr+vt!zXjGiqb88kJ>x7s5gS>%LWk>C zeGU_J{#6t6!;CB+<7~_q!2_8daT}ZgR88!Jb|l&(3Du7b+UL(>@ASA|@52tKFn5^} z=010h8?dn=!YjgC%gLcXM`f8DLB0v4aDLwL^s&U{h z$b6(XV3!lKf7<*#YRMuwCdmRLcUl|M!bAiPc_qRBhwj*Sf8w?sQ7S^fn-xwb8??X3!phF@X^H;q~D zMj>5)jc*3;>I@w&ZC{x0kZd|#*L^oIHk&vkrL+(5uNs%Xnl}bEpEq*5SG%@^3$(g% zH!2S$lDkZyW|LmR)8fLH?CqZtcKQcXloMa#5rQ}p{uyjM?{uDg)<$;i4eCT5FtzlQ zmS`pFtLVvC=Je<$zL&sxYP*g^8+UHBS@<-gTsaxR>!iQhygSg9;U2Qbl=9EUdwu(;<*2|m(;;OB-VjAivJ2OuWi}`HlLxi@ymbN6#Dy+?#YOo z9$C5jV?Jsyj)--bjP$nc=WA=rPs0n6yHOH&J~zhmnj>SUfTHiSPrKYoTRD)DB_ME_ z{#k`|06#S2@^H|z25qeOX@(M~PnnOMUs7BYD9&dGkG<(Zyv=XC%kzL{$qc^Z)WgifsKIS z?;M9N+DIr5eoQ~U!%xeB1!cpAg}^Wa7h+mfJ;>fmD5qKDi+T7RXZ1DF!&N))OSeYD z==V!TM&dG_nH;)XtILL8XTF^2r0-vDfS-z;g2`5WE3qTb(}+#4_s0P5Sn2i;?~S>} z*}ePU$r2M6edUrt8Q4+(oW`G)eP#eM51wMMx1pbP3CCEr(4=RS_p#7{p^K?>fv&G+ z^8g2PaT(6BBhTokIXhmbR@#r9PS zfNoG;cMeC_vYxMMwc9*|*N49xVV^g0_)Iq@VJ>tkdXwSJf7Uu)22y;QF1{~OOs_&N z1WxQ78W&sznvsuZwF^8tuUqXNeEy9}g}7XQ&tYoYKR+zq5%!!I^g8vPM_8-ug+&Ir z58uhtwu(5r?)SDiS5JJ8=FTl|)okkiiJM7>I|S2>^l` z!V9#!C7UcAPjGM(3GFzNy)%Qpnw)IcNHo*GFn<^++r3w_IB`lnGaWLM6c5Yky4sVw zurxyA_+-5JQ!u;nCz|vE^)ZJx_1oaC;??C{B51<+h^ane8U4Y~DjZiyns|3IqcRtG z@K~d4RQ*dtKWpOPV?AGT^10QCBS;%J=EGoV!6V}&;sJAEk1eTHD)abjz4oDW(4ow_$IqUZNZbDx%;)7U28)@C0_sEU zmC7+l*aOJ5kFNlBSe$#fTx*z9t7M;bKu&I|*+Q>rx%xx{<8loIhOWlr>*Dw7n)=#z3g6C5 zMcX|9ki7L6Gq|wfAbebA57Qx+@imeHO@~c)#+Tia^}x&l(^~gncSqW?q+K93Rb(B& z_q41~-US-<4ww2%6#`9UOhzpv89VE|c!I zUi$E({mmKQO|o9p!@JW?j8U4|;;T>Z;^Q?kmHw;CLlItRc8a7Z_KTIvvJ587#ADSDC24urkd8D==`qcC!j4sg5+k zGe4d_J*&Oevf8Y0@@q)|Eue}MEZx~DTkiW*Jkv=`P58w>vQbUq_ zZiN0Ut_dc$rcxfOl15-7NCQBXR5s97&eN<1Km#+ZrQvH zhadD78gHA)K6M?6C(2UCl1s{!Blmr*5WzuPkcw#dONdqJ?+HO z)8{11X)76HBibaI2y95_86;0omw=+Z;&jI$W+V*vbUz$~D}&+rFY8z@+V?VD=Xb_I z)BA8PLxf5|7?%Ggz+iu1%Mf@#22_9^+Hdze{C6DxI^3n(mf{X%qq@>IPq_I~q|1Ja=`l zsoI^XA-cjPQl&NpNTr^>JeDXS9*g6%1%%qS5l@A?$$6MGhT>BrBU0!^Ld!mj{%c~R zh(-4o%X=czW@z{-v0z>DrA|rO=$@K2{mnj8?;3evf}mD0kS}qo=yMWW)nTc?qc~Ri ziYfB-$iS~xT;K5d^1Asa)KXkf;ymK(&k0ZfCdxIprzfQKrSa*g=~IoB`hzb` z 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

!nS{T|O+=5wk7x_B$iiJs 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

>Vip9QfBY^k;< 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≶Orxx;6*p4_o8vHQ39- zeh*B7M(>ij0g50LsG$8=M`bfwEmkGem-;heC&mTN6f)ZQQWi;!!$4(HyUd-KB&4cRDSg_8jbzN6bqRyl@O3M$`FZ*6`^w_}>1Rb0++r=S?qu(1D} z)@^a3@Y-jt?Ka}x-0ihy$|y~ygI(f)K!tkKO<%ivzg4TWu^OFSN_)lQ26oS#6{g*b zwvzkFjI)8_3^IF;Yj27mAUGu?kCHzo=)2TF=cJCAvYE^H-%VnQ+f8uiUs#`C@3XTf zJM~DSHYm6gtfDRK9PX_PG=_Amp4PI|sX0A4MAcko&hPCl+*z8gC&i9`ME3AM=@GOi z&j0)EfXlx@T%q+w?q$O6^-?(EL$VB)+{Fc=>GouwSlS|+6WsYk#H|xK8 zJ4_mAq>sULP>BM%)pOKdsGX5?5`crVUh8-!;KFxWQeTj4J9SYoE~cq1>uAPqa2bcm zs5(0gsRY?&Z7prlhl|`)fVaiOny_xS1(Wud&f2VKpGyF;Z%dnA5hei1r;+F?AFBXt z-v#LrT|1OjBSVFDq(ukg0Z5F*&UQ@73F0J^gWA~QDV2;Yd=K=k^UJ*8-**zmi%766 zV@P|TPX*IXBJw(Y$iAr5P?=zF4_e|aTmFX*yGJG7stv(%>z8iqk5MLh_oz-cv%HFm z%}L{!E;ts7ImNPxVP>aAJvIxP^!3z=56v!e0?6Q zgmJm z3*vb1rl%z=6Aoso1WBIrr<$p+Gc(FA_x2M)7{zsG&YFHcv- zadnCO_$FE05F4;u#oYpaK3u+WXoxXnr`5m5rAhQIycEQv$y*Bt$EBmueI{&A+qd86 z@44I6@!KFpv#q^h)1ZDCCpSl_4>X>TAT)R629SL0>3ihm`X=|q&s{oUU5)(J- zE*o3^Kg5I*2j$GR^iVk-Vbz0BQpfW+rkJ3l^q{VziJ6UU^INyCBBUjP5k(fmo@Q4u z)JNnb?&!MRk4gnq?!mEOhgZX1U>{a?Nxqw1qLrektNl^YagQs zF?z*c-h*?!X!h4(+S*t6Mz(srE4CEG`RK4nyIBkQIa?~BJY_Sg%JZmBOVPqNN00q*BKOh9QdlXTOc2-w;IRHRF zzrR)kfx!E04H77mZmPG6WllI)v^@nnQfEL)=cTI6mWhq66n)b;{U(Y`wiXIzl>uFF z*O5bfXOBD#l;*5k4h0tOE`D<%eWh6x>)hl$43w*RtU#%2eiL_opH$KCnM;np*{;6w z`ZQBoJFk&D(NG%cox@b3&|z#Hoay~19%GJBTF!pp;#v$_;iV{eSZkze-7djSq~+c4 z$e{`*A^g2O%N-4qtN8`H#85Y|u4-4f268}&9!0bG6FoEAfWjeMrXn&zuo4d84)ccY zqUkNXS+Dh|$ni?+W2unGpi@~SYWSDN1uBL*US-JCm;@(-Ug#%T#Hj?GdyvwDa%b-p z$|0gOvv8K(iM2_fqs_EszkoE zys*IKm;PNya4AECo(gJQ-f=y4lo-%>& z?V71)*Xwd$hgilHY>wM#=U zUV(jlQ4iuw-mf=(8M%jkc#f+-)um}-VMLqFC7aSExP<4&$2Ub`+r{Y%9}`0Ls_|Uh zD%*3eE6%D^<&3rN#=-MJkPbddEalrUW;w4gIj*j_@-uQDjx#s15{IA!oX&zFi*{Fw zPT77G%yQft2ol&fidfm&)uK$!zb|OOVj{kYg4%Pq$s@{60W~&f#IUQ@`bERFy;ub* zd3s#DeiewslUFfwdsQHBaY_TOS+h8s!h%S~z4($DOZtvhkzpK%0DEs|O6$vZ9wH_= zE-kztE&&4kR*?O zuaK)Dlc-JwD1#6w@qAwxfrjfc0v7YH7K2ALP1yAMhu$%JCI=eD*cNo;v)hR<)h2v| ziDBZrNC2_|2P%2oh!Eb%gE1)g&(#TV?`bgZB+SXK16rJx0)-XltFBf-VC(Dt)O={!pOoGOQbVxVektl?Gf_-+{=g>(y8sAk81SQM^uL;~pp`=A;G z-rKF>i535YJ0gO3P`LtFeXC#>u{VQUsujbd$MV9GvmjKnxD8>fj+$V07p8B(pv?m) zaPR={N6*kWUJc<9nEQ zb9oWA>0JxIDhp-qOqeJ}K%Z2832qEB6E5A$aTYIR_aSnPM_SaE;wiN(kMHB7HBc8g zcvco61`q_a010xD6^E2AT-2f9ge8&aceiSIY!GS0rL=fW({`K^6&0GPI$%>oDs zN_%9gzvvvGh|FlnAKV&oZIqivQ|>SdDgb>bx4hLGYT#72ELu5b6o3Pl)o3cUZ>eb~ zZZWZNlH`C8JiW@b!P0As4l&DRW~$>U_IPg6s$yVXdXv`M*+*f*QMMDUJbD7>uR<1@T-y7DU(d-2 zdzLowrc{a#O*i$(;q~wUfF1({7x>>~O+PklEg;;)?I-)BZ5WDx3d^vu?T>9KfUQqw z=gCtkp)Q8=<`E>)-<)(>hlMD=BlCUgB81aEqkE;j$PZElu4R0r;sjajFL{(q#2M)1i|6loPc%qK4A54xG=cHqO#bc%c3~5-_S1@C7fLs*W!la_ z@G&q|jI?lL(w78jUw_{OTYA4=z6i&&KOC%s^dTeJ6rJ1cz3kd>(6GJAE=ARmnlGI2 zELzlmT67=;-g#L@X)Rj|IxppL9>?#GoHXSnW&_sp2g5&L>OjDK3B5S z;{HsX-xX3@=+3XK1LRUJRx2`+92MA>p;2jukO9Z*^s@9oAr-veb`sBz2C1VlO8H*^ z>)1!CMONqeh~u3|!n{oaf0s4Jrj-A3C8*_%vs)Ue{B&~sixB?LgXC=k?4J8xzi^+B zKt74*Hx}x_uBd?kpiu)@x_kM&sI+)o@x7yX)25^eZ zD=F3Dt()0U;=rcOn80jyseQT#5=QH5ss{d5Hp-+kJsSpBgOW5!y$xO2~l(N>x zvZ1ZjzeCg7$HmL#@3E%P7`K;=A_N-gKnNRz3r$DR(FBZo0uZmGVz1~?L3hU=#opueyL%P95*a(3~i4@6)Vel~H z&;TG65$FJv0DCS95!ybc-K^<5?3ap5%Dq1QzG`v5>+TqT%s;bpnr|H{Xt}FqMX2Uy z)NLsPX^pi%Gk~wJGw7Mq$X9(f)EJkD2bEBhO$F<@M#CEvdY7puzlvPSajwy#Pc@a^ z;T#_1b-GEMomK+x^#Sy=%eeZlw-}6->rzABE0WINoLlypS4p%AAqN;P!UARD%t8oj ziYjQtItiYniO2pLh!V5zx0)jed3w}7i51f}J1zU{a)p5uh;JMT-gWNVK~gF(+@JW? zDPO0YUSpDqaJ!pVc9imjzIp^1w76WGfb*5CqGc~?E|r`)Nl%4csdVTCoI2kVVh47$ zK7BA^O1x93b5Iwz2cg5GBM19WfFt(N!np*y-RD)R!iUW;0K?!U)Aq0OA+(B>%kROj zo|C&NMzvCGwu*MG93dhRb}>>AHU&9U$`gm0-NHdY^pCUHW-C@#N7?jto2dJ>gwNb! z7gjw^>h4At;hLfLQvWZZ%)3G`r79=b(dmpO-Ta6ly(-{( z{{I`hKG8IB6Zy6vGov9dU7%;U=T+!GI}b+>5viCdOZEeiV<6AaPYyzQ4WX4t#8ZSd zN9B9E?*}0rH)sbGYpY|?psim?}7*|uH&E4;kMT?2bZr&h>prtb~jS}ifz2Ysp zMCi}P4=^S(T<&ylC3bdst~scteA@6*o<9)XnNb1e;ON8560{3S~?LI0YeBLj`ca*G`8TlVjGC8O_N-4+cj_0-7Jw%T)E+TFRrxX ze%BPBME(@oga7yEsnzqM$FW@aUl_f(#+@uMdHTU)ri~To9#5G7g3af8*9;VL%?sbA z!D5|39T$-u?;k_~kpg&b0E}E1I3rjOqHG@(K_gv@*A_?diB4Y8xU_cPS=f#2>~pDE zY&S4zMiha|wKAk27`vS9_sW90ao=f3f zv@Jv|Jc>yLMl~ci`x0>9El<^jg|9|XS2z}2c{?D3aHufcjd>sQAXdgr+B*7A|WGrUVeDopmg&!g@l=B%``F3t^-x_zG3x^NccbTAi z^9z_jR*$aq`*HxEthvzFQ&pD6-k$u1d;W@@o*{v2CKXj5>m_nkuSTTqrYKR!hgtOv zIT^zg890t{Q4?}4`!V)F;fJDOg=^t~ugpw5Do$AZeC9z<&&qtD@W)DW;p_q(`~+aP zKCr$Z{sZPc`;j^S!MOPQy)M!#D>5zOPe+_BE1P9agIa!%=jA*@mz=kP4UO7xLmOr_ zRbuz--3W6P=srR1W?(9aU|lG^0=3Mx77}XK)at3{#OhtU*-K@+I4-_mpqiRy4Ik?Q zBTz=&PN_&~D|W~+3vk=CG$OkX&#{L&w@JK51q5A2h7791kx)34)j5H+hYcamkq_?_ zIw};{>ez8pFFtURa+#BRj!?j{`*93Wn5)4T7dr2J+B#jE9#_32aErYQ#rF=sf^tpY zXb+vYpI{86#$8x*jm?*~wwB(?ulsOa=kquf@XJ1D-8F&&pSE+>!Z0n1|N}D}- zAlTkGjcTx+ZOY}WK*uEdkFRqyykyxr@7gFX9;zT6$i~}ZC_9r8(>T<-*&SnzeF!5?3UI3 z`(Qzwj->CW);p`naPzDD&pNz#y+VZ&Ji{i z9+5ZK7HLdn)6&Lu#y3W1HbKU{mq^Bo=m3MT9=0nqUb2V|5bRo1nb2%?2|otXe?BO~ z7w1kH>m5*DKyYWj^LlZ)a<~ED2Yx5fwRa_^4dVrvhI%dOKn$VV`k8iev&)xQca%0s8 zI@~SR>(N2jVS-P^;ZNLgCv1GE4jybUF*!9-?Nx9R{=>ylImAUgGF@#WutxUKQIIEm z0#vJ^n;zx@1FEU);>wSc;Z%UO2&8m}=6Afo^0}Zah7!^shF|g|mxTi$+I^t(Y^)F+ zLoXAFW~WiMoM-_%ik8h(bLV30rNpl~#Ba~e!DCT-SHAbq+|0ZXRi=W^X6=u&XUi_C zY49yx{uUJ|lE?tlC`gKE{m%x|0&Nwl*PinB7X^?THjyCX*h$0pwcHJ|=(BFX|NEoL z{?isE6CHzP_;YQrpT$QD#%Q}5*_vmr?7TTx6Z1b6ftHE|&OVj*+U|sY+z8(_3hIM- z6ch9HYtH%3Q#%TSc|o7*CpSk#&!617iu zZ|j(^JTnUxL5o!$5%&^^l0?jn2=SZg(63XinJ$q{BCd?#R4sh$xV;M5?y$qB`_Zd` zjoPQo5Z$AdYH4Z1S4yWuMn*=72|MZmx>)Qx5M*8E&GFD71x=O6$l&_&C^;s?x~%oK zeSuXpV|W!n>|k&M2VwO@#}plOHk9`>`<70UG(*+ofVYKbo=EK0o-3T-C7+s>1t#RxqG%P|sFxa$^2ok@Ujs)>vBEVG&23hlB*|14tsb)MKRJO4FBb@+Uz@^woR|(dh)uGYQp`(q`rm|#4|IR zh)Z7ik6ol2T0R$n@M}ns z((0cJ`f_oExxmf==Z;`l_&wA8R`G5bMUPIwv!!-#of>I8sVu-Qd!MPla!$ktR)(;7 zNZA8F1a#;HL0i4hM1*rl&-i`}7yTVDQv*4l{yq*A=w($WF9cnBU!bJRO*R=UQt5w9 zQ>N5F+jg9b3ZBiGzS~>C*6*w^ClMtPA1eZ0)7`0WQ(&aYxtOG2XEjo+EHAB9Agqr9 za+GwZ9$bKQSPh|t7q&6lW(<-Jvzbk-jX9?G84D^(Z%oo}e?ceD^A;eqh4?v2 z!p-y7`ybSmMt5qqComK@W4RFwyXLY?EIm?DKp-`CmD16mWXicN@57zJ&TEp>l9_?)pY9ua%rlswr}v| z_S*OFW#Z#xQy0^urU+xiLpy*#Iy#0N5Tw$o^8#PQl-43cy#52qIZ@cT{i+<9GY^vb5G$+r;@M`S8)YuggU|7LeDaNgZPC3-$i!D8dPp$G(Om6@G?+cx!rw>r%7GsP*c8 zzjP!CqNV6et7lk%GNl@g$vB&8Y&f!qVqX}>i7~ckN$^eInaSZj&)hxQ;v;{n} zT=0z>c<1v5`X~i`^6qt4X_J^nWg<1sTh8u3IC$R&%f3X7A?0ok;ccmE3V;iYd?~|=8tQ0mWVgVxaCY1M7WguPepvhwnP2XmadGFmLxJ zI42Ntm~1R6S%f*bD5T}m2AGA9USc`!%&gP=f&YiEe|JB*fmB#iWspxI9EORSSV6wPv#s%S}WyAHlwvGUA!uGN}nV{{ zl7jT;wS==iyw9J3sQ`04Z|t^BcFKHWi5?o6?r>}m+69Jvn+#bW{O%1v1}3UeYW8}E zmAJ%y0o^eH2l%tfK7pw&Bl_YSIXXEHb!ZJ#vmRhYqMN#jb&A8)_Jy z7DJxj=p_~ks|I~sQ*IN2UiS6sQ_A|i64>Z{(}{cj=;QIU2qzCL9Gl5cV8sV0x+vz4 zY1BNG`RpV%eN{Z$bB3x|dFt4K&55okNB}5a{TjXSq;kz7#)_D%YZVxGN0IcZZ;92W$sMT#5=2vZo;M*;DpTUUd8+#!>JwI!{pA9!?|1ba*hAFSsfCVA6R&4Q38NIzH!rM*&bYFyK8bDvc2#Jiy2xO~Iv-5ietp zSULGmJSUA*#PKwP8B7(g%7I<5NO8eixGMu!NY51ef7U_1{!RSm)Tdu^e?KZ-KCfS^ z?Y0N;ZjIhAq+ig>!K6uHk@}ckrZ3v$5Goeo$+^v!pe$4k%j&Aj><=M;S1sozuN>;(A$|>_HnE;maP^b zFZV#5zw1`E`~<6M9JreSxI-K&9!Pz?rkp)f&#nF24Im$x1^=Nl+24qm5`TilcF{TQ zSag;Bs&8x>FBu{^#Iy;~hlSWOi7N3@BZLI#F4rr%ufQNPKSz&+BVH@Tfrq+~?ezC& zT~E!U2&lLcoC`-8_-loHOk)Cwr&*)`ZAm$b<(TyvJgM#IO2sH}`IsLa01;ZrUye84 zpsxe^Hdp|6eu)xN);VsDk^GFxfG01qw!1nl9yXzbu3 zJ~=X>Y3w-@ce;8XevpM!4Cu+ZHnw|8m^RcA(8@KmX~8nNfM(mPq1n_(=1H`Uh8{a~ zZn9-E|0X213$X`VY`tvLU|!uz@dhDw)#qUa%x^o?>;$T8Y1RcH6XHXA(RCfj^0Q$E z`EYo1m8bf;@-5T*{rsln^n59+zHUYp)FrdFHE-C6aY_EJAJ{%`#d` zOOZjGT$0{s;g&6MSKx3?Gmupqzs_iy@~dLm0nYJEKt1*eC=2Mv!n0M2^W7v;KtT*3 zqw1J}m>S5?7rNpxzr<=ZKc{}%vzV?T+OQ`hh$X*QBj2?p>{YMbKMP>fN)YZhZ z>DG=XrcSPOvE=OsGzE0Nr>y&DexRqi!c_=&4PO=OrhrM@X(*~*5m2kko&n(> z4MQx-xPqJ*MZxljer1(43mkBr5ON2;niPh4IH)o({HGk!Cp~;!ydq^dbs{~lTC?vq z4qz^XHy97Fj;66MalGX}yxLN5c>~2D9B_y8u)0OlFt@srU{x{XHi=Hmp9-G@RsdTW z)js4D3#it#q1__KFJq=sJq z@T(njLwp#vsq@`zJBA;IWi8)pc!plZ{96EVBG9M{3VDL1I{O@IX1#3~Q%nei*L=iE8$N@Z782FKq`gM_}dt4WUsuN`GW zt4AW!EbAL=GY+c5zq2U_XH4_E%_Sv&TkvJ6_EoXHfW)U@@Q1Y=Yt_l8(6z+;wXea< zWgAhd40KVRHWG9=2!;WQDOK^KqZH4J-RrwlajfiXJCUOMcWpG!Z1tkJPDJRLLIA}> z78PDX(!`^q-*Pm=R}f0gv4fc^(t-RQvX9*|K4_7v!N=?sAkXJ7C}gl}r~x->+U`4o zkfa9M4x0dA7P+b|X}Jx>)qy#zxld4;g_Tm+R4 zQV#-EEG~=cFf3iBc+LaiDpq=Jr;aWF)7|Vdy+J2;N_fs4&4}qAnF0Ve71@Un5D^G5R-AS%k7mX@ z4UP6#C!-vXcGb=V@}Wz_zBjH)%DIHW#jih)UI^(wW&~M1@j9n=?!b%5fYm({&2Tj{zdWBJF3J+A;z zC=7*?lH8`MzKgh|5}>L?M-`{(k;gLdQac6UBYHu(@vN_!Qz~!Y)@AgZ;{x;pEnW4{NdHuXpfK;6)QMySk{nQIBXVi0BTedTTw(-{{ zOjStfa)l?pctIH>gUxq>gC8s?auF+7IjOtgsbfZ$lo<&sldHd0P+dcN4!PnuH%X7R zOX|%v8T*q(VOzxMEDjgK-VK44cocCsG25|b7QzR>?OxP)I?l?W@SVlTe05z)|HING z-b*h&(P0Z0-=`8diI8o6R1KL`@NmZ?iuOjxJ-y6F^MA%HKv{Yd>@12I-{Z#J6K5#Q zHrb`UoE~(sofgs)mMi&N=BkMI%a07Q+sLQ4P~H` z)r=IneR?N22bN}8jx$LnBIn2k+5;p4I)WC6PIt~7al{e8y1_1~c|ie??n~kx0X{JF z`*FFrNu&Tm!|5yA?swlYUv&aciacAt!Ae;gk4p}D*G>DC?Uw-`Na!+@sGTqj*c@cy zdpg@^|0TXkDmzf)%R&9s#+sZf_;^g?@MNFNWBr;3O`M4^5CB(e`C7YV+2BNvSDZQ2 zRH8M(ytNGYK>WIj2G~0b0g8sXOxVk;Lrt0z&@!vBu0Hq^`9 zd0*3V4gKs`R?-Gvi3eUHLk#B{28Ul+!9QY|FNmXHVUsm#wk4Z2`T z(mMwTE$^@MrOLvDvr`1m;7cBX-gpnLx}DW(sd})&Jfr=)*)E@pjDNhd>?qt(Yu;~Vld{agG^N~?*Yw{}Me*s>t_FDt z)VnH@TDt?A45jipeX8cSopjwWaS>4fW`0W$7hW%POTd^DFY^!}0s;Zij>1HNLb1mW z97^E9Ru-Dc-Ysn0cCQ;0C+{fMRpzUPIG9WoM+ae5H|do-|FZ_SllwRRzON%>6kT17@Cr5cD#dRS_Kvx{Onia zX>51PspCSk#}I>eg^fxctG|6AGy?OP^mlM+jr=%A2Dprs5rTqAaJc8$?DOIaftafa zBoW98SQ39LVlu}d2`-rIQU5XxWso>T44DYV;vl?H0jiUP(;2-ABAU~J-Vt(1$!G+@ zn@Tt80WvW)Lf+e=c#zS0z+KXc0SMY+yned$1~oN>+vx3K*QbFQSDdsqT8cz=;S`R2 z=UmR)ffqe!(Mf|0wxK(rO=itZ@vo4hfHur+Pw30Y(k^<8J{=gBtJAv{2Ii~2JK z3wt(UXF47r!>~GO`Y=5b2nHR|tj>z?C}`qSFfX1eymT#f`aACUc8C=E^3?5-lc2$5hw=8hl z8en9XmTl}&baI&*rU!iFScfuckPv*vaUB6v&^{;%Vg=wjiZt(-9|gQ=r?xU`QS-@< zw8Le0Y6agiI(iCi1C|U0R=mg~Htm6sd2##9-OD&9bFOZO3_>tt0`kj|Vv+WA-&TR>CJ_)BRF_LnFz|hPeaFV5Cm|ySBW72y&X7%HG={lz ztvW+NrUWiTU4wH zDekU^Re1-h8xg&Vdd(*c(Z?T6qg1$5Pu{XOwA;LXfNApJ=_sQ;bE80=(Nf{@fYxhQ zysXMrHYb)y%qmt=iEGQTZKnZ{^p8^%f0#`qb!|4cc^uUJotq*ee{(B6*`iBn`51|! zs(pkJ8;E3ISUc31eAkII*JBlv49j_hhuepO=!;5zfVEgZyqlnAn8YMGVmpDI=3t>p zKUo*+bMk#R#<4hbb_Ik@MI{sl%(4y130R4@X@zwMb(^WEH@U*gqAL$ftcpl3bP3pD zUcUp_V@Hlo5rAc*UmS<5?Zt^2%#h@V2c5>G&#fGUhRs- z`%%-P$Qhn-f_yxza2xa((i_cv0^$WpfVu2mS!4`eUJfe&SE%g>jiYe$jEA?Lztsq0 zmDj_pq-FTlh$MaYe9(i2&r-Y4ZhkHNs?Sz=N>+rv6@sb>JW>nV1~h#Fa%w*F!_w-==fh z$Udz%H`kZD%x0P$8fY`__UUXY(rgs6Jbl?ls!Y>v!+FZ_cJ>xt?b_APZ}w zSF5^-xo-$}w=@N=xOA}GA^5h~y3q@01zmKnF?53dx?VW(WN591E_o9lvfw+-{1mZP z=YyAR2b?!{w8W)OU+zo*PY0qw8TLI{ZgGA*UG6YdNBEse*RDxUmqv%Bt+{jfVqE#y zI4C_qHAZlJh%tFbKX>UZ3N5_oME*+F(e`;Jo1mbdi%BHI-NnP}=v{4^)(ULoA(bkM<SG1XP!{yGV=B2;p*=`#OCYuT&>swPZngMoz za7*NTu=@p;*}h3mz)v8Ymcy2Xj$UBlQ1ltZ8{jh#Q24$#I{ak}MJ5X}nrm&ebfT}U zO>%Pjek5vaylrkvNzmqVgpk@CkOys3q82jA_ThIx;{m}ciBJt9Sux?3FtHjM?CFBp zJM|HA|0(Tw*2OBN#5ZNIB1s3F9^jy}0M-e`AoRc(Biz!AS^;zBZO+yJwGSg+L|ZuZ)7j!X`(?LdMck%=1F1+qo(` z@emwaB3*=RS;5_9LH4&M^d=~`8T&A+tE6EjFiJ zYgXsP)(`aam#cLY?}iI+GqUFTE<2IV7qWY?>CY`rTLLM~ckuGWFX;zyP(gCrO#n}rH8 zZ(VvS#B;In`~U0)Nl}HgzYHW$gRj@9)!Y&6+INUHdaHy>1l0wJX=HtbgY)p(=wR_t z9s*{Bo3D5ITGLxkat>Fv`3|ov53%}jwz4fe2A&V#G68_4P&I9aJ-r&~U=io22^%%< z4zUx?Yh=6(`Hq+Ce+s`$SNL0>nbA(HLSUN?vgamuX?CTk^TV_@nOFpzkFWhIMLJK7 zW}aKlm1(R&?@q^a$3y1ej!lzpm-8Ka?K5c%+L8XNm1v20bDE|mA$oQ>Ci3wGi#W^A zm(Bup4iW!6UV{PyUvoNe-&Vm(LH5^%6P~+paO_b%ii~wnlvxo~5s92h4KM^*`JDg~ zNr}*1;$tDW?ln^e#Th_jf4ylDnvWA$ibgZweu@~QPt!p#TILq6m=Z^un5CxD%iL-U zVU2IJqjW4^2MjUOOD@I8SDM~gJUB#;fM$5Lux!=!&_24GJLS~fQR!wWX$WRr0CcX! zePia{4KQCLl1N6BrPTSLhNQ?k^^Q&&Tt(b_tj7Y9XKmcBxamq*xgDsRO$I2Ie{6vDt@9EF7` zS)?fWZXSW2sgXveiu0a93YxFPhvmuy6wy*WoDu};Ga#xx$3lT^T9D9sa$00|i%ZB* z_E-|LFfOHB#HBCkX#kGN?)yv;0JOfPi3P3pog3zQrAT~9GIcn_@J&>(q7E%ulrEMq zRGC%b6zUO}pkqr!OJ?Ug_~0_cTkv$={Ei%LYp^QvXi+G2R2#bBr02_vnM=6wM9i^F z$cFB&00kBi9`y!CToi!j9wMep+4W2x`Elj7kaSmo9Kr_1JU#=qL!!E22tIpZ0ooNp zV5^O054Jn>NFO$n9NjA-3uVUkF@_`sM^|C5p$Na(`1!LcvFX~ z!02{OwM_IehWB8aGZpu|s{tnn(q}AIU1a216dtihdXTcTzMw9hS!w11uj%fELd;2) zN1kN>stH7wB&_&0X_WQU)Se_>ft+}h^O6K|BFQ7|bYBP;7TF%T?8=bTVoXxY(eOPL z3qlYyZ}RPOglj}dY|h}m_=8ui8eEd+gZX3fH32Jx!niC=e1pr>*fPnRW!JrfTIrd@ zG(X13E!u=`fF%$>k%mY%Av14fvpQAh|6J}#$m>t2*L`;@wFhE?25+QT{Lc+ZRt$ma zM+ijup}nMuv`pfrTaOx%J@t??+(yhznC><=%jcI-6<0M9WxzG56o&e1bA=<-%^1A2c5AQbX!{GI0#hVz>9QW&IZ(D`Q^|tA0z4{%I zv1ORmUEKCqn^q#h{ta(Aec^^8zaJPt-zcRJFq9)O;%HspVf$g7&xtq(XrYGLzatLy z%wFRIhMXm=2V0?Ocvz->ph@Koi=W?ye?wZaP#!G z;8knAIh3Kt-Gp%?vn{t54&+fF_8!begS3$RaHqU_n}nnB00pMqBoL_N898Kmh7TG6 z8CHOZ@xYcD1_MbuDXq85I+3J}_b%Vv6HW_i63^D4vnc&Rsprnx7vpV5N6=I)d5#tI z;iTLC`4are;Di0PO&DOxQ=05Rd>^ad0o5k^D9Jp;S$X`~kjXF=-&C1DC>|BYf*=)S z_nz;5kfQcsM>zpG;I-();MZ@V%jeOhGywnx=6J%wsNYH*(4tgJ_Nqh z%fm8yr2>V`FdlNe!nT3OQGMbEcXPIy)n1y@pwFv95_6o}6l^9|h$DP1WSnw=y=Mq9 zk;{-QbUgql9y&BJ~AI^PgyfBjy}o}5Fm(<9&CsnPIhSx>*< z%jY+E){8o-61Or{8UFPH0W@@__UCHv*?7E-ne7I-ZeUZ)*{PC4XC}l%69h|sVm1C*>n6P5;C!xsPOpT zgS8${3#Su=7BMUDWha%*K|sN%0>C<=ngLLB2g5utFr;9!z(@+)PsA~2>CxO^n8pMo zhLcGdHNb~#F_g@e)%6Gcx>uC{p0b>)cK2*D_86qh(rXS}q;hW)Zy|Tnfrg% zMAnlwd}JDfD7vj16$UZ8iWB#>)XZxF1#Q8)+fp*iLNy8g`OSf`oKMg-Z;DsjWzxJv z<|FIMo%c4GMTX0xm(#LjI2>KLxD}04)sBJ)D(w-oJWF-0if%Cbr~WvsovExm%>;wm z#KlRyEV^nhw$HoX=%QR~`l#YZnM1}0#IAZb8=q^zcu*3wz`jk3Iu+%l_Cxe z!?3dMowLGD*vk`!4LC}gPGzil)7K(cF*NpR`=-L zflP5MLb#22yMZ`%7bq)%1Yb-;o)miq>y0)5gIM_g3~@hyO+05S>UW#~(bN7uM2Mb| zdd7G%V4odDNTFfOfzR39Rf@a3&19bK&l>}@ksIv0q>>NWmA>h4a6X<_s=1fAnqW|8 zh(90%Q0??;n2bHPSKckklY?I~Q`By5i-W%<>DwUGuie76Z4D%$5I+K3 zm0oeKGwkl^K^Fk62FB?69qeYNyLo@j)nt6YqaQRbjAnQ{MS39fPA@Na&N2T_{*Vvx zp2u)Xd&J@^#bfJ_=Ig?r!&0!#P}i)A+ISwH)|9)@F!jaC0bVQQ% z;ym5BvOCH=h6G5nmmm6uX7>n{Ahe!U2Q35v?wy=P9Sh&Dts3kg5*xlyj9+4IZW=Le z{VUo$I+2_zYAXfp!wvWy_I6cWz5T_cT}mW7@#s`ONJt3hP6id=S0m(sEa9fe-KknW zd}H{xpSoR`q6a9=Z3A8gA$@yXKTZIP`H}dm{vtxZ|m`~ zYvq?zWlKDeGbLue^t=dmrKK!-Vb@maw0c`f;yx=~89meugdfrI#*~x+j6SvcMjm$^ zrX3nyCYL`yKO~3Vx!m`0YTFY5UsngX6%s3I%bp3OTMPdXjW+YlDq*nChv%o^dl z&P0)dI7sl-{n()9=~+6P*1n_@OvdVSl28JY8nA!@oDcX|t~AYTz$5Tg5R5Y(lZcrj zRG0FEYEi%*wwqF-ib^=Y!b55((s*qm>oBW6r5qIN5{1>k;I07mX{>wmA=-t#wZEzy z-Q9MFhPl@CKX99knj1Aylib<)ZtL``wzLMX@B*yGm?johj4A~3DM6FW;8M_$-AGE_ zzTU}oI1sSdmgJ%q%UB~@NO6*GvqTV=c>0A%MkVY*S?+5$O_3Fvau)Kkvt{Cm1DI`* z9V^YANp!ok?rw!xf%_g|!mcn<2D@#(h5h~}zr^3X@If{13}`=s(|+_q-T4`V9JSDS zEJYb);DPZ__L4>mar1d#lw!`HIQaG^e1se^LaoYym(9djwxLfH ztMYI4`HaBPqeB*+&xIVI9S8oY-06dI(Gger;_Rf(M#flB)(0^$w|*;=!fW_ZOP_<*Gu!9^sB_h*OEKTNPPNW;{ky)OHK5R&f?Y zvl<;P2lZ|aT;9@Kxxh~6sm{CbRdFg%r&$NhSk@Br3Bw}^xrxaZ&P}NO^d%84lte%D zuvhZ{@}gh@D;)AXs(!V+Wbj2g1E=yfHe@?&#yz74bMKc@7>myY?qB^x<|Z;pT{Am< zT{8)mm`IAHe@8;jppwjd_N2XfWJyd13YDPQTeQK`xkpfp(#c!& zKUdHytFqF~+_5;^ib|O^TgfC^&lX%Ts>#r6XTz+|tv^H~U-feyS5aRs@ocLsu8S&+ML4il{PqK39DuyO@g7G&LGaSqYj?FquYeg4D+CcHbBq_NgO zlx%t@Ir>U}e6V3rIVs$TN6JjapeiI-J$pV)ONOLBXy^ z8I;I6JDWaKHBuwyC%>F`B>=OQ#c%1aB{GJv>gw%9YHELTJV1T>!xg}%OC&vjgWPi< zRF6S}7*ECru$Bxw!s*?9zTM`o{u!QKv+lYiC7sfFpGvs5U@s>G`SN0i1QL`N3=(j- zPrt2NDjzY0M4b`Ai;*nvN^~h}QT@fF?XHQGOpH7%hd&p>fZ)8h>4T&N>vM-Ey;};e zl|LaPKki4EqZ==pw!L=kcY=z&vb$Ae-+h+Lkmi*t@cIjGdcp8egfXc$@ICA>P4(-e z&{0V!eNcrOV~YnVTWHJKcMgOXcKjjJ(x>|JlG?zSLN{k?9{o>pWs0-HdN$E0I7Zrj>;U4#RVkff5QYTRz9aa6B%a}`>F;-q84nF0 zX{jYICBcM+pps62=@Pn)5rwKS?KrF*LO)?LT3_rA7$k!V6sWr78d4SC!ugyw`AA?K ztndifr!whuGBSkm_DgGveG_tat+%c1@mi~CtByKenHV1Ar<=u$w1aqlBO)b1t=U*? zA~|t*PY}fe9Azbv@ZbqEJckb*Tf0PzB~7^WH%nJzS@&`rnZx!RD8xuT z!y8J|{@pf>K!rYmO$*q`c9}muF#F>S36plpH#c1y^zKogQWwG{Qq@b9K)j0cKO8v+ zyMT^3_=B2TCPd-VABXIHH-;tz^0vz&gTbx6T$3O=k3VJWJ3oCRxOYG!3Gq`2!?r^7 zvvsfH80VH25<0csXCY-FzlR$R?Ji2Mq9bj&b2p8i>1XV|Lgs9Q#airdY5vFDpu}Bg zM?>~TA*M)2R+qbpSd&Q{lT`HteR{qmUVpR*NA&F0M!J5M2ri$yCn23BSG$SAm-?O) zFe=&kCSng56wNmW>E8CF9CE=QjCr5!43M((!6K!5=t|dasa%v86xqXt$|03l#;%CP zm(gSkeKam9b{ia(O^nPXoThf+batkvI}hWrpC1xqne;n&h2;VFbtT=g1$C^-5;L6| zF1+Gk^(t*sZevvw1ZcQJiL65(XR;&gw z>#C~+3CW`GmobY3oyT+FT%YanzyQCwKdI zXNw0Q9Iu{z?tJorgQl7y+g&%6O9?2OZIde6{ALDhs`IoFYVK_gjTTmH+t!<#LLLz> z1`4uXZxa{y{@$gZiIs1OIbXTf*Y^Tz5F@qQ#ge1%$utPC1iSC;HZ@XO@?ZRRojQlg zn^{(~!+kChaorGCUa*~%m8V}W$_0w`+aG32o#R)^@Z?M8-3JZ=Fmv+MM1mEZTgHyb zs#YEx|I6Pmc32Us%!GJXnr68eWSCZVD;8WK>lSiuxZ3qFMX&Q(#A}&*e0dp3FNwDt zCn$p{PBKYuxPc_1u&)g744mT~7SfMa9FU$1ydFHRjM~q!>gBo1S-Fjyt_R3RLKr(j z#K6?~APF9W$Y3O_N{B#7OdXE}cERi+T_sLLw2@#<%Sw7$qSP5~sgl4Wk>%F?Yr%a^ zm}ha7cT=G&qVhi|4z_S}@Amp_67D8FBte{CzIrdfsR%RAv<>~bcMyo>{+NK$t)JR| zRHSh%0ULsyG9Vu_OnNK`iILH}2{;6_z=2OX3G5M>Yfw{)1c=&D0tMzrNpIhuK8gO_^*rZua8x6z6@AHEg%Cn;M>*NS{4u5me)R;gNIEm2F``qgl99EJDMJWq2B z!s=X7Q#soMJUQ6=j)<#4{bSpAGe2Hav5mJeIxslF_q~UfCcb(GX&&)D;y#onM>1#Z6vAKP=5ql2O_+ zs@cX8JDv}~Hd(y2|7kpn@=pm36cy_m{Gtb{B0D@ios(_(%s_Cn=8s^`Ze%KLf z+Pn0jmKELfPa63kqW|97E^Uru$`#`1g+|*d$PU>-p=@yRGYkFswt>W8*oH%(LKmnP z7kF*Ip4A=VN%s4$w(eF$Ysi~r__^iFUO%*U1s_#_Q$p^>gcFpLaAOb6Yr>kf;{{atT2|)_rcX)LiIUud=%uNJ+Bmq8FJZ$!AC5 zoQOb*M(sGG17c}Y6cXn+OndHMC+H+NEbOokBX#K3W2Nalx}L}dh^TI8b#H2_u8B%r z<$%iOZx@j|W364@&lG)ZAMowRC~E45`Pk9~NM;*D%uub~EL6-|4eyU< zWdwYuY_~@|&9fPsm|El5b8qivKUj4`p%G}v{gfaxO=Y5bAdiyx^svp$&CNmdt=TVH zrb$Y@;kZYZ9kx}}>6YsZIiileEyg|bI>8kCm6XK-<#uVLv_@C& zmhS=yt$nk~;v@JBS$S12f)awmif~+xsOeCdAhUo;#d4r+wF99btMwLEg+JAHV_01F zJW`Fx%anM?kkt9GD2P`UnC<&i^xBWGxikCsRC68Mt>~(Y`|2M;Y)=A>Bo&~1|NKZM z`i?qYRpU=@#m@LV8+*Zx_+kef`nT<1E+=)kW6RyyFcNaV5ZfW@?~#(NWN1Xlw9w3K zx7uBOlrv5po37H5HrA4$)iA9FF2g#i{BSfLA`zW$oIt%F>Wh(D+URp2LApqM>zL3J zd8Heft1AE@1>Uoz&=3IR6R*SAh~%Kz-*}H!c9OAJV9)&K(l>ebOK(PomRz3>NlzoP ze8DhPX1=YbMKilin9c01tDH*~!HIN^{YI=vk!1e>h<_Xu?tMT$ps2#7V``_>jg(~S zONOqM(YfJ_HR1u)ouIA2e7cRh6>t$7H3DLXeorK@0fh84;F5Hdjj8$KBN+2R+0<5x zd2SUi5XKzh*090oq!1^qn&Oh2k-Z2$rldSR`*Q(eSQMl>M)v}0 z4j612cuh7N?lR0pp=CZovPx83rJO|s*xYq?x1h1GRr_uN7HO9y>g=v;F$So3_oDXA z`s#Fyvw5han6oQ*b|gsLbPf1w@ucWrcOVMRB0pR5lQ2=KRcqw_RkLG<=EJlko?`at zi2ilz<^jMstm;K*%@oJ!E-CW6$hLozGr-K8;DqY)nD{p%hOaY^Cd=Udt?y zEGn)N<d$^<)1Es~=Cuzn5{j{O4mO2G zYF$o(|GWAUG_n{@=Kji1I!eS_>xpb{fv z_3fTL?#<&e`!dyMyUTT&A_2;>PDTnE6~n>DspAufc{hvjQAF(4*Voqf8S1GKf(kZ& zTAv$wZC9DLPLo&o5tv!ky9%W5W!!(WP)6U8$ZSRB=93Ht&}#mGUFR??EWvtC z6O&w@v*oi1nyn8!p*WM*l?x;~J?5CSMHn<0T*R=#`@<+w!*KE*(1+o2$V^b@>alZg#L4Tdic6gNDT0d3dmT`L_ZLr=+18m< z7ZsbE15-y@Ej87A+aW9?frC6hE5Rh!Z^&SzT1$kZc<|6WVC}^iSpi!q4SU;KJt3=^ z4R7w;=52#DXf$PyhKDXU%5Y`NNhW0AMvsnZz&vo=2#9sEpzHUbSx}Cw&AHc;JFbcZ zwyoM`p8KC>nj_@Fd?{-*i6cNKTaR%%*Dq-8XNN}N0q6|aF7?%7dxu@UbM}pyFhSqY zPGsaB>7#WP*!J5Mv5X-{3frGY7AQ6mg8py|IAw=e6YhRfH0XIAO-*@SSFZu1w!7C7 z%ztM1k>8^R>r-*lkLyG(p0-+_b9yH;6A7<&vh$=;Stm;`3(c?&rXeAHuMWDJYQ0xw z;cyr6JcWT9dk`rx*(bQIZGI3zh*)SSAh~HCXx|@Xm&C4$Kfa5v((Aqsh*18%{2E;<-(a_^B8-<Tzja$ae+g3QZGUnI*TAVH0(5gDh+22|0K~=f{X4dnhVq-3d)Oeu5kK5f> z-7rS0y)A^zK*zf=8p*|?(GR9?X=~MKe7wXk1MM>oF)?`)uF*vWC~Yq~k*KvIa#4BY zSmOosN)MLCxBw+W9$~LRhXU+;N9>Zo0C&HRP$`8>pKaxOwH0H!k!M8@>nFc%o+dY^ z$lvkQpXt`3a=$(C+cDXfUKQ9OaZm)01rUO}8oY{1aNs^>Qi7Ejwp&I7#d6OfVgD8`!SJ72?K z!bjR8uCnoJU8;^`KyKp!Yo7{k`dV)O^@Z{VvTT9|+ru7iMb4Lm96BM>F8+qJ<8nT- zRPt>nWm00)UAl-Y0eEF()+>@=^?`5)Y?@fE8Z-vh^)v(+uj*I_8Bbc+P&IFVQh0c<41|T8CT{6NHAGCeW(`pS6CyJ4jBkjBGh=HBED;j1Je- zfG)G!2pzo;LA3|Vi&kQ_S>FQBx2HQjiVpd?Fp0G&-&Zt~KuwKEaN5mw-qt-7;H53j z&V=I1dU)65@>8YmnJ#Ojfb&Z{euo2^U<(sCf5}O}Ey9VS|4*aqs@s!{>GLbrwRloT ze!b>5qt zPqgoO`a9p|FRlJ~O?4p)5ESQ=yWVncaEAtx!1htaS503(HE!0`7*@l=O(c1Uoz-F5 zzIKpDXBwbeSx1EHW|jC1&l2h5YeD6`gi?4Df3YAl>p3D4&5hT#AxEqG z=cPA|#op!2vuYQ?B$mezMf=-(0beWK`);=vITnzs1ZCF_{C zBRGez?zgQ&`hKI6&@N7Rq7K%oT)O2XnfA`c&Pbg_JvzP+BGISR14yIxG;@p{ARNuD zF2&W>@f_~_qq03I3$!UZatV?NQouLEoY=w~y7nRkzFjJ?nIfg6%|2xhq00y4M;`~P zi$Q6oyt!aY&hXiLDw~O1(r~5@D6YeBq~_rXN%2T;?dXInbvzh_Vg`CI*gN8tBX{fP zOMby}3q(4)9RS9;w6e0rEW-+T65l_Z|X{gUynX_a+?a( z-^>q9$w6?y=dktA>v?)l>3YEX}*p9wyoTJU9bHmi}^L|h1fvq7YHax zGS9t-oLP|5IbD|FW#ff|EADZCd=3`ZT(S$~&RoLCcPKwIlC&K^(USc4o88kdCjR{W z2jOZTEhSfSvkn$&IhjA|Do!MHI&sJm@l%Na7~(BZzdKpCsJju1f!JYVgJbJF@DLuB zsI%fvAc1S`V}F}sq%P%T8;&$VmRS^ZCXle>>Dc5^N}epS%bh@% z%?E<9`tIMfMw0dYb@YL^B-TtI#O2P%yv5cB`Gw90se0S5h?)-8`dc`|O~=xj())H^ z19wV0PI!LEK?mnWu?^=9QC*)mCV3rYW{*_S(yM|8v6KRMelm2x;HPL z^ab^ps1|S;aaqnaA&$P3GZmQc-4-XS5Jq@I&Ujck>nX zJ9m1{RA{%wVzY4xcme!rTh%TNhradA~BqivvcM}+_&;`)f>;(omIM^S5`%l;D^ z^b%XFO-(>>yK5;Dxe@#JiTMA?-j3dPbdM29k;q@ zQqn#|QwLpwC=2p=XOcYc0dce|MmI?;n@v6Tv(4_BGCABtR z3OGg30nZ=Ott>L9w~LXr@=A;iPh?Pg&8&%1fH_D%r6oVRpqL3b9D<1@mB4%oE+MEV zb=&F0w66KZQ8N>5y;MNv48z*nS_3qkLwGl_7W)_hSuNvIG~Ztt6Hne@D?&wkQO`U3heKJG zXEHYml`Z^T9=_^*+GSVVMUS^YVtJwi5_#l>1=i;tHj-^W_m1Zl?L0V#G2t8C5dud0 zhh2EhUZu;^hsIW<$Cuv&CrKtJ9}8qJl)&85qvZw9R8<;wWk1BoH)Am~xehL42pohj zrGdjQTSJA?v5B%8OJp*4pVA*e^&g)BnAcC75(@laQ0K&CVjIp^>OAH-Xjg4A!X@QO zfEnn}Ewg1W0E|dzJ^&9^>C^TX7mg!{<(dJ5$1HtTpe<$=OeWG+?@Nm{$J%8vI{d-x z@Lk;_$RCb}JkmHsdDN!kEJrVDMS6B|yp`Kv8MHvH8T>KCCe9NjeQh*hoOZL&kF02MxXab8@5?YS z-ZktYF-|Gp-|OY;^!=N9&{v#|M5l6@2GXaeK;8RFk)E}V)opwT*{x04$!)oH#B`t; zGpIl=$5Gsl(JoVRH3xyo+mR}ohfb6p^Kxs1#ofN>D}sJ9n|q#~n4I%wS5HUnU~$%vNwth0UV(K%yxwMB&&|~X~lv3lhM_g zDIu@{gJH_C-aL?ZFHKOlE8l4Y=i*`z;m@PSC*HCq9N7=({-ftXg2-?=oYE}Zq+kr! zh4F?f^P|MMkT19K@(X*mLfAFWw&|7VH+N}pb+)}NH1_xwtVZaT z7>r2F)`gH2to)cBEAeJ7lz1p|pfsfE9PDL(0h-2s(q~UlyMg=w3DHdnN6al?QyA=^ z8P*Hez($$>RnqhXNX7$cRr$jd4a=|=@TYz_Aa4U2o!~bb+c`r zVHKT9(wrWh`rnEiv+L`gTRGMW`AhBfIAeZma=weL<+s0LKM@KndLEw@4BB7b z8)MpDmgQwbA#P=01}i6Ndo12Gt+E!H4>vg~gYagf$U7nwS}g`v6)d<6PH{8Cii>q9 zPFBXJK>>w)p91H2 zWg;lcDX63$Ir385izipxw8ELqms!|ncpDN1Ks8lrxS7>yrG?L2M(ru=#DN*eIYL(K z@WE9)>tQu(WI&`eGGWIb5P1k@_VjHiD{3Z^ar|kM<|k<7I;7{`^m1in1w;*FxoafBk(7uo znLo7$J2{Ufvv~%ybP7B+DGm+W(2IA#hgMhye{|b##oaY#H8az2SuuTf6K$ld;#5GK zK>O_lL!Q9*$)ND5B2;2enxD?822@!T0B;vwn|0eQYy}QMtH@N_J_=l;&9b>PX)?bI z`J6HK2H*I0!3SXF$y#yWf@Y z{bC^UsTENv%k5TCjsu=FlP6_$EjLM9j|W%@JpYjwc<8d#1^Ym84N%&be3&R*2YomthO@|qZ zdL-Yk_x{41OI_Y%DOk@|f3$x?AsV06r``$%{V%yM4hJe!;VyqP&FMV;{o%OK+r5_o zB+KX-Q1y4qMUBQ`X=URzDQO`rFbXbjY>31;(a7rz!g3J@c13wX(H^d_a~VuRqu*0T z1I^K5L7vXf>rqx$js@`vBasM`GpSs~PP>**F9Wv6pVnXlaGs{SRxRa21D+n?Onr6r z9_7v{*Rbq380zm);Dj!SMea}`#8QiAHoG2B+c$p(4~Vg(o6oQ#&A-oL={CXxdkMtD zd=b$=K~jaOEblydi-u_wbUhgy6=Lu-gM~Krh)oM0bX|=V{lX4YXytEfMU?^9=S-$}+oDW|y}6yTb#MS)!PxeUhkJ<>+f- zYR>SoBKmSS@t)SkJIi%BqL7`<*zrEQ2}JAz`~sP7Wvg|YHzifxh&b`!vuUX#OPAPx zIp#&gN@@u2@ZQo(W$m*vAQd=U_!XORa$^4*iV8UfPUEkssi#rkf&4DJRpKW;mlxK# zH>TMkWZsFVTXRTDhBi(Tj^Bq>bJq^mt9D6PR62-jJqbh~)*~+^aB%6*rFF)`$TDLu z^1cn}Ay*qpmqsfFERm9MmA(b*{do)oxJJFE3F9ueci^3iT3p+KC7dt^?1+O+&Qvqb zGxUzoM?oag%^4gj;Y$Ob{KG*;>d&H;7ug*OelSbHNwQYx^ez5s+Xj)KJQlk;u{=6+ zXDjKvY*R3Zx3JW{o8(t-vxmxU)}J;2rI~z|?4XhAQ0Wg5BG+leW;?PmASLUYZ1|1F zv6&wtwT(KS|E{g9%6$rPDm_B-r?;p8mlSjU1SFS~oP8aLU9!>g^QA8kd$ta{z~06- z@Ye%b$g{J54fpV{`g6#Re(BD-sqk|Yz_hVC;#hz%tAl(zU6(&RRk;yKV-dT-ZAjV! zr|ChwGl#s~wR%~Tl+k-v5UOOpp92n1bQk<1$w4iw#6_2qrREtsqK6K3NqiVLg9rV# zgWT8w-tj`bWAxH+^u$36IRFVRI_oWV9PA|fZG51DbqG6DZzBh`v_x$}-FXScAN z|Ll>QAr#Sr(5n$@({l7|OOh@7iHJhRwz!pv$RH1Lw_G;^>BzQBw&o^rnr9fTWL6YX zwX_4J{?mGZs_V?a3dz&j34aeIqt7YiYW~mMAk*@lSQ}D=&*4hG2RU~0dG*--CVJa! zZqM)#Yv5JndtHKV=%I>_K1J<0rX`9duJ`35sf^;Jf7PEbxLILXX$?wtPSQLG zJ?!V+i=1`|JOSyN@*T5L6=c{R2*|4$gSNO;rgWW)%3%dFHP>RYEdR9Z!bLmlg2T9M zr=O}dum^d9WMmt1P8?$Fn-5~T3hk8sQUVlPl$Y#I?W10c1H1Y4ttHfyH?%XBcQVQ{ z-E@$iUVef(Sg+Au}xyKrgH)E7A6nkS-+9{QEWtN;Y;mEo)Oil>8|;KW0*U!i)N zG*ZRLBjw~6NMiaOH#Ib8*4&&pLWn_iku;Bmaa4pw9nO1wnqvX0yRh}~!No@61U&$= zlLxs$###8V?GB-Ds-I)yc|itRyH^}If`-i%(I0M9m6w3^Du=Ee$RclR+;cL%7}y+# z-OrV+AyMS@dNWZ>oVM#lf|OmD)KXjH(H9s+wmik8PAD|~M4a_2x8aZUw^V#Cfr6_9 z*mgz&;^~)Xo-WyHZ;3?|tBDe_4lvsZOWUna?Lem1-cNn`c=7#yq0|_cJ8@jjYq`La? zFsCAVd&^r}i$=ORD~MZu#H&jQi^88ESO@mZA^OwXM*I2$BKfHtRg%FL*0l3k=Q+8W z&9uiidNJwS+TK9JXmxd$2fxT&_W&EfTrW%yXneK({Nc;8h32@3hF?XhCWRxB}%!in}8q;^#Qm}s3G0fEiw*uz13N~&@xM`lf3A7x| z)#XVb@5;7|P|m&O$fk!Yu7X2R3dA-}PW^R;1mhni9V)>K?$H#+B8_6#9{p)bVQ80L z$H)!8t-nL#Fg2ZfF982k1hm!{GH3YI&;RDn2dpfDCWVtc9TD6qZLefuOWPcj zpPUTw+oq<5XQ1cFkbWVU4Hzx%ma#{@`QusFLf=;VY60h5{PJYZKL=OS#jO3q^_dDe zD$`*azCRt=I6t0kbSe)+Wi>w1t9`Jr%hR%$>O@%yJWv*po{IGDs&q+401S&)NghKS zTRD1u2dy>8e8|}0v6Ee{iZ`%2#?HlEb6oP&*AF`>cxtRzw|G2xvQcdEvg9iHA2J8+gvCjZ|~cn zNb@Z+#-(*8mvDwV5^B}153j{M@Q;9kB~i7N>tDu`2K|+U3T14&`!R;=k^R7uNox$8 zioqcUVv4*7jH?!yyCMKxqATv>YloOS6Oi@7kUeIgOACXTMK}!4M0+clzVX(z9ct>$ z7pOWtg~IGc0_qAIa5koTX;HqUMIRDM4-p`|;F4j$9!lk4tE_^>5Hjh?r%^7&NwG$T z-uW$OvBjpw;eGh)SCT{n$`z8GfStbQmoqTC&a~b)72qniN5L6drJ|-6tdxU8DP+|k zO&KD99fPtQP{2PvZ~(d}Ry{ngU-p1ex#n&X^K?7V!gw|T!jh9($ofAaR}+{8PhR8L zJ7E;X`q09yuE6NJy*|%XWvxqPH;QSe9krzdLww`7!qqzQcVOj992m z4+PmnO6$>FO5eY&3qC`)nG;5t`}h&P+7F=tHJKh}o0_}cg_QC`hXHvieprF}XN|Ve z+na^WsBk+r*=e#Knx z`{u_&IL&gT`_auj2ee2F5}V1MpAA+X&j0SsJ@)3D(7|&Q)t+!rxd#Aa)!jh^QYxk( zw(Zd2ASAD>LuLoy8?G&)`FXe%IRW$s&D2Gk5w8B&IC3)S3NeC@m1DQec&;VK{jn&U zVZ8J>9(xI5d5>D-Ot92hJG6ZRENKL(0MqV4yze$Z6$?jW*{?$}6%``zF4xD6Y}>EC zHn)o(J1oL=8>27;XcaV@oKRu*bua{K$2saG>XV()U?=jS=ooaC?iH#>>}f}&CT2(axXA1)-Mkb^zYPDZxkA699TUYle7)r z?VpraEB(!VzrCjgeVv97APMJ8w#t`S<#S?7LDa%xk2F&6+((CXm`X|{MXlVh>2Svb zB>Rf((7d}xAwU~TJu9oZ+7yRQS@36<5gKyVSa#~E^B|+{ka$AqmglUD9@9B}C{Sd3 zsiznnEZ<(XM@_|9<*_JjGld69u$UFP3r}m1+cwz{64)DHoOD;XWbnDT?zrdu0wdp* ze^iUcNM1Iz5{l3aTdB@HICfmLxAnD_z@48(h&=%MQe8eUiyPIHi`L2=>%0f^VA}1~ zYAf%R`m%#mh>={E8qYw`aD0z+yD&e%#n+C}iO9KcaM!Z4@8FwRev}k%S`mH?3}E3N zlbAXg>{2VOLF=~gy~&5t1~V|=_AojrDTya1Dyl0#>X{Z{C7U)nhQtyJ8XNf=l1s@& z_@p_RPArQbUK%8iD=Jt@2#AOdwEGH?S{i%1bgwwvz#FWR?DkseW0djNkjg%@b(ypd zB>;mQVw^@&_S-#hfA4g+xVyH4P#7t!@l3I^)6FM8@d64sA?~;ZGHK>0OARtY>Tv!pS*$B9j!OlC^dCpDS;R{Vva}D``m$cqNI}%X$ZG^o>j`^Va-UilPzwWC z*NG?!KU%U%_fB|-{34b>@F$`*iY8Kooct*R#uR(Fj<-K{i-?|c=I(*azQ2Pqb+~V# z3uE0WjCTjo`X-R#h?KH@BW!LwX+1V~+ahlv^LdsZFRg|^Bv~MG(gQRl;INs8kbUzg)JR8tPOy;Mg$mdO0s+m` z1u)Rj;O~n7Kyyqy1v!N^bHF`dtBr=V92xrg1}>RxU!O9FIik|+c_YzTi0x~MQ9;%( z6Ss3*M#{9#&W1A2fl*La(pJVcJARt+n_h?b%b;rvr{G=}ZVEZvFN&!#zQ>yF zOvLhbQbCC<^53Q2hW;42`t?>d5qsYDIWf^=4HkPAk#MJcC}0I9v7V<@Qw(H8QMFxaJOG~HH2H~;r9Q4Js4vVWV5VZ zU_@}|QmkRRDHSg*eBZ2|JwM(7F`wH~x+~c;7%!c6p}o zIv2D>oC$5$oZ{!OS!V|y&e0IYboJl<@?kVhV2J^N<}x+qZulNH4T#Bn58aFjKPnlt z=?V##jtb@o!>#=I5d-GHp3I@HI#^t4ELl&A%cPJVd?+j~4Hz>Wyu8B|hBh>`*BTFm z0BshFrxZMjf2~7(rYuNn5mU$vYa>B_3oKn zfkjPm#A1-`b(tl!flj-`wHe=iMMXnHdnV9TaU8LEN%w=wULfWoBS_V8*`_f-g(2i!iiXn)w`~~H&J<0~K_#Q~ z>AG?G>m3kib{#I3AX6VMQrKWK78z%N^y$Nu?R}u0vOICiU|M@uKL^pYwS3U@EEPXI z*!7bu%e5ugcP`1J-JG5Z041O>*XYymKr1ZqN_S_vOLdB;BjJ?eGLfE#RDk<#&Bo0n zv#HULsLuiN&Y)GROr>g12)P*Sa#twZ$1z%CQ~VXTsP_~C`#8xF=e z48I0dQMLB@YLd(ivO4s(V)MgQ;HPZ#d1yn4Jv^@vdm2CoMT;zGS^}Ry1A&pllCVg8 zQln&LS`pwZ&WTk)@vwv!$v+0MzO+t&;Pj@=iWsA|JOYgCl{$rmM*AzrW0#wz@${ed zZ3aoDXuqyPm3=ZAG9YO;)Y^WkAT?c#pP$O|{iP>?{oHdsae_IQUA`T>=W zx$+2yZV!u*ikN(w zth-|GQqt2RL_b{69t*1QBc*V9CNsM!8=g6A=aX@#ASX@0Ubc&xYB{)fKXh~GS*Cb) zwxm5Hto8Ln0q|=~V?k}9GR?+23u{fEELy~Ow+(t5 zEY7|Z8Y@}zo90jd1Gg5THWn;FdiV}@*&w*l zDxZZP_6SAF?kGA>PsG%X{EmE02omkL%sOi>VZmxXbx->Jt(=v3Yl;nekGC)&%XYJa76>#Zrii z&9|^A{4sQ=O}WykQQThQx@pMd>|&+{1dH66ui;zKh%$1(J%5UG2=*2L+7}om`g7ra zI6XMxYyK!YHTdG#IZ&wQD`eF+({ZQ#l0Fe}GbjbeiBgA!uZFPHb=r~yB+0Xz7&$)x z3s){59?YT@S(itr*C#P^-a~$+G^h%YXNZFwU(6(}M^>+5UMpp`5OFearX z!_P6cbzvQ#6|M~!L&fzKk~vz~!VtJXr;vX4i9(pgcnXzX!dn!vyQpUeaPqXL|ACi&o+9&dvmMNL$KH)=FY2bCGO45$#)EH zyH-3Lhca3`U+VQPPu=lnC6~0st`K&W(0fXK1%9keP37gj{!rtD;~)HM#6Y2!6A!fF(u7#mFNc6l_>XmZ57J-TWn1*MAz z&=xtaeotvjxQNDqjUjrn((v$F*~;!(nu>THLWB7O?Jh%im|Anw6RnIvlq*VPu~sjS zFLI2_{pkx*zEN<`8IsNoyJ0X&d3`YUzjwy!h#&^|pKPf;d7(AFdgxemjqRxTa*H*jMe@||NmoM^UT<4e@^`2#U#3faf*&i#hCLADJ z0prkQZd1bkU5BYpA-R(b4&4_;sHhg0ynb0KKW;aO;i^g*#WrTGwLpH@kT)9tAvt zfRWDZ*$f1;%mV|87vwy%DD%TKMqx^&JtwVC@o3o;P_%cYZu~&C{uA^06g2-aEQu#^ z$=gE_BbgvygXFQE<}+ZN^T^-vI|Jy+M@b$6%!bg>DQyk8e0P}Z+MaA$x|&)_Ta21l zsotV~akX-y_k|B14@n{bU{T^$@yxr)=Y=N%EU4r8*_-`EX}G8P>vwG*B#gBtT!Waz zoGFC1v-M!?x)(Gx@#!T2*)8?!uuyxN&2sKfb8cd z+(Jc~#x#Iaj~7 zWcym>iWW>D4UN$wZCwL!z(UEKYcjNxHQOZPyDhN*cykB68)m}lFAM@vu4?(LfE z#B%Z({BG2Mr6zl12Cb~~V(--yL~{*tGCFc*1cX}EBD}SLS~9EVMvQW%Lcb{eSS4YZ z;F5IlFs&r%Et*H!?D=HY1Lq3%0-gJDrs9gPSIAYLJ6AkBx73RS^>kl51sfk7F0i(w z=wi&-@hUZi&fDFU&UyT85qwCZKZj+{M*#rg|AJSWR0Bg1?{MvGC1U{q@1#$bc8CU6%OuWy*VI^pX#Hk!mmFUcv}r%4Cw8>l6p3uHT%YWSTLcfdWgq*$cLasrZW*rI z=V^O?0;HJ;qo{Q3{AKT(r^O;MXGsMn9#Nr{Nrys-)x2Iu25}5t^mpiMK+M5shlpv4 zYyyl9RC24YN%w)LE~TAU*-q(_5!})ds2i3T>Llp6l=SX3V}%%>MNq_e zW765iDupt%Q2+E(WG~TmO!e@aL!EIygV`|ArOjjtJ%4nYD|4L|twmX232HXjhO27E z>qOk#ex*61FQIM@qWa7#X3|0$%!bU=V-+E;r$J9zgM{HWFf0vtaVmPJ-e{>rcp^21S4w9Gy5UpB}>91hPE z9|@oaz!NyM?J!HJA>@f=IbcY+11cw*D(|!0?x~Z&c(Dh>3A1U{JxZunmoK3hM?2(8 z0jx`sXlk6G;@8v`qcV*J_BSQRo`~x%xLC4=^8|TL?yqbN93AUS_^^=-oCiF9M^W^f zOQM$F0XG8F+gpj!yT#EONcq=c=A>kus&HMslokFID3TH|wpC0ZPsZdA1sbcT`3bK1 zISF4647kEFv%J3Yc&4`X9Pq3>1DL+2gl=e~58>Y|BK7P*wJiv7CV;@dS3FS%|Zj$KY@*h~KbLqZPm;--YPpFCrRx3ao;gJ7f#S@zP7 zE(n4@LL^5Z+|g{M?3vq$=<}p)j&e~TFF1)`LJTL%2U4oiP-9LKL|uGiZdu^RgQ3%8 z_O9OKeVz7mym~0jjq*i6d?uI2nY4F76sREH88)<6xw&p2^;+jwUC3Vk@(Eas2T!fG zF4&m89FDHVk}u5cW<)r~UX;Ns%51ukUKA7aV2Gk7o*fD5<;Mb;c&oZ$2Sra(X?K|Z z0(mbC$)aw|%Hj-#m6b|b5FdG-`O6tjh*>*d)G44cTw`rAxe4Qcs0Wtqo9DVDI{U$x zuVjELezTtu1sscDX?oIi4|`kv|EErNT#Rz?!Aa!Bl;M zaWiU{_Q5gq5rV|AMBfG22b^3Hq#@GvX0Zs7H~JgTzUu^>^3C zyR>g&fJ*a17hj2dTVq9P=uCB>Giv_mbofVgy-bICZI3)AJ+8ebv4B{IKvP%u)w1_W zh0QkCIt#)aJx|xB{@A1O0V&I$sgpDaQhETVDpAq$%Rb4P#5hlTYI;$RX8COXH-xS*9E3TW3e)J(5dnIIwpKRw> zwx+_Y{P3jFWDr>Cw_tQ&3J(cyhW-QfVsY zL(i=lO4xtvFt5l?uqYKJ5yHXY*Zn(fg(zvp32v{;>vjL!o%^V52g6gV9tE%3zjJ<( z+}7W%!J?viAM6-G9D(d%w*h#5&jBD!3(Ibcqj@MqiPL>xYxa2u&MA`&_?mc~2UrDW zSY2i(v&_&f`$Mt|vME+wP6xRaHL>C9!zd|EoWD`qZJ@W<9QXq~E89~4DB(?PW z+?h;<9k&9!`%h0%(bc^G@u9jjfy_ zZGLloG!0CBQc>;rZaMf}75$!`gUraoRu3sfa*lF#${r zNPp;EL6><9g?=C>f7nyLji1p-?Ss;EZFbKkAS_!O_WD@eHY--Cw2}?Ml9(zy!K==2 z=qvD|^HFTx=*I(2Ue^&>L70jKA&P-4oZP@JP4kfG0iM2}OD8~+Fv3z!#1cuTj97sR zQeHv5kcY|tZU9$PE< z1VcDA7pAj%SQPAZpjnp1Yf>1Ko#I{Q~-ddYi+4PaX`^aL--e_WS-vw?=>e7 zQQ6MRY?d3@H27xtfDe&MY%O$CM&kQs+o@Xu6%d|1&d7!Dpy*uj*&doWoVYz0y*ar# zKG6Q!a8TaIs@Y5nSGyBA+~h9TpRG?l$SBY+Z?71S2ZSgjwHw>wqmhsn&2^H z<5YqA9x(muy13>4=mi4JH4X0U?MwTp0gAx94?&I?HPlN;jT1;BJ;u!N$0Dk%ZVv@q z-pQmqPI4Imrb|a^49_#ua(s!9SNBMg-Atj&OEpH^DsMqBoZR2__PRQ@Hq6LVit+Sx zzMek!t`k)zo%LJ<*gSMS5jXaqRRq#7spOapWu!L{c2L-s`{AiTQyoZ95|vYCA5ud; z*6PBsMlnS4S>Ds|tA!)CnkA@&(z(Be+;Gp^$j5S)T-2lcwcLXx>wo=o76ltW*r|R> z1~Kp;kl~}gz^TD#z9@s>rJnk?V@Vd{0LI-EJc|lrhKzi!O#^iwK@q zz40Nmd&n4#I53bq-Lh^&dH{usApQYM+w^P>QfRLX=_t#FdKAxivbbP`lRToNey){{g-n1fv~ec zrq16ja_T%dl638pEuw**f?Sy9i+j%QPAF5*vP!%RwVIdlfWkxdPMwEtoTQ%qq;6M{ zTyd4Wy@SuYznzUhEo|FiXnKFzl;2MQcJS;QAY?;%#+GZ{EfM}vxWohYs8xDuv{@m8 z9H;##I6!{IiUI9o%b&T+vmI2=?0jyt*>qngg0rKFWVP10%oY&r%?@#(#zG=dUC=?v zrO`F$pVR{h8+O6$JgIT$tA3SlVB9D2)8(a{FU@T7q~P)|uCfL0;YcWv-pA7Z!Jzwu zXM;-acv-U9CMcgaHYYUh+^lMNkn#c41#s@K1rAFQi6VFI`~(~jLPI%1DNNIzx>MVCZL0~WF-q+(C-z}xqu=Ia({jFQtjrz|_axN% ziQYF)4>QJE+KynPxMu=Z0@ZS!Nfh5p%Y2uy+L04YNAWtH0dJ0%+_?iKFn|X z&Y>n%D~E?gzvW7?jlQClUhu?8T)%qlz*JmwBriRe*TXLChp4{j5nN!Lv=a?myDiY! zAh)RW!mn?D5_Ui9SZJ}ax5Qlh^fTAF)}{z{Az~ljD=1Xe&7zO=qJ=VDJEl;vHUjbQ zPV{?21lgD9o_1n6?oHu<{U(9DsF&5>l9w;t1S-2j++lwy`UtlN5VN-OMl!rhSh|PQ zK(uQbh9aQFa(X)yF`!Qe0K~J|4jH3xJZp#8otS(yP-TwoW_a7d!WR%Q$FM?20 zCcV03Z{OC}oS2TmYVgLg=dx{5F0pO0strs`ns-zWe9rvYR9zP4Jb>mL<{rSD<}XNk zp(DyY6J{>kS%D{-^gw)dU2ZI3R6)v%Ae_5|)Xum*^#|KCD=dfwS+|h&~W^ zt)9ox(?Nx8pnqF(Ke?K-Rt4QKL#HczFiH2Jz+7V$%}z4;R?ePp%eg-|JT40cB1Cnd zn#IU8^`?yy4zQ{#^R8@(&T^sWwVf~4U27J=O=J}ExYziXD0YV`pGX6SJS>h$!=Z$) z@9vj!8A`L-Gq6SUP^V8=MX~L3HAxlf$~4~bLyKq1jO-JH3m3vYaQKb(BwceEyw>7o z2Nln!=4+On(;9-Oa#P{2%M*`{?16I`(+nY`Y{t-~2s}rmJ03G!AsHk592|>ofBkj7 z5yP~Io=82Yv(=6&k7aF{^`dr(`%0RFO?Q)GwE)D`<$|Ce-OC~O%UGyKeN>c3idMsh zFeQ|qUApN>e#^xkKSeLkUki&s)NZ+XOXSWJ9M2Hp?J*&8ck+_u=9Ff#M~W)-e4%iw zWLlpUPdd*pvG0J+h}Af?6gzvr0Mugsv=Z2@IJ4UzD>p(})R9CvW+%=N6es~pr9XX2 zpYQ8cbVriyyPqyi>Z^u+dNd!iO^|3$GWcd2hc(A?Tw$oFN(Q;`4YXo0XlrUMZDH-h zhfqyH-*rq$yD%UtG=Tq=qAPW8)h2F1D$$fmq|Zr5?-F)y5X;zH^NnP^plPH_$k)X% z@U|wJ5_BD!)nvhuH+YaKJoqN0L66+DWF&p!K>0$NDi2ZuwpU4|HK&UQ(Q?}d9O?AA z&Mf9RRy5*-ZLVR3U^diz(aSkTB38^(_k#YV51Z* zg5$afJ##LgYOwQ{mVP`kTVd)=rzLK6YB(>-KMPEv`}(|EZqTUH+Ouro1b+29Gq0=u zmgM01;gWGOZGYpzuCC8|GttaLn^EU^KE)HN2YbY!^)#tkHHdx4Thxpal-^UU4TZ=&3>W17?U@*;XOD{zIu#pxb@|QI=9o+rA}`vki~V6hPtUR2 zf$cDlk}^fzrMSytpT#6>zO@1inxaU}6| zSDBQIJ}R0LTz>6hxcyQPC7%;aOY^MbIBdf=fSxR^KfpeZgKA9`$Pp(VcDMMFB`)>_ zPwtwAcAb38u~2RG!3!ook~Uqn&(5GxL9w>~n!_h|;e@c9V8|G@qt9b(GQnk@CfYT1 z!nplTof;P3icchuO4G=$SuBN4-m8i8=dS-?1#E2kO1JWqFRi9-7t?a*`;O*U8Gd9N zB6`B$zDq#xSe!gkpEmQ8UDE@_dJ@C?m5Da&WiUoKljes~E6bk30s;3UYWUdiC22vx z1j))-rd>sV3`DgflrJxFM{mP-6l@2Z(m)iFI(IsAw+hq!BvBp4diUSX4>4}bS+>fr zV5NF9o2*9)n&UUdZ!lgq)l?`LuuQD2MFTS}8SJ9c?{U-U;Tb0$5eL;{>YSdSxL#W3 zPLTvZ6R8W`3b^7*$E#@`j6^j*D^dWi!C)4jjue4|cI;@!P4d1h;R(&cT1w0lQK^j2 zkwKl0oGhMml!E2%$kXCUyi&W&PyoubB#-7cJ1Az*;GOU74rW5TH}!uv$hIM`iC91Q z)wO&NuLHMN-($X)FQUQl*XVr*AV#Vv=DE#@p|EP&11d5iD*h#HV=H`ZbP1zNZP;+5 z7q&4kI5IKM)gw5w6$80sOlD^K50W5d5SsEI7N*m{G!(>`kZ$Wp863WQo*FVu0Hnt;lCLnZ@2dua)W%ryJ7HAOJ9}b`XWsa6XOJ zrJXJiT=ZIruPh9eKLscr4n-y~$_N`}Xx0>8j_iR{1w~Rv#olj^YP~D<>~3pgl2Wt7 zIUU{QJH|=xt}}Uh(eBd7w7h_oAqE0B3{x~#y*AB)RNsQ)vzV@!qkxz0T2ym`SHeb-NBGt|xb~QTKQYwYH6#dQ zm}8af^!@uWRNQiv!ZV)eedbKpNXriX+yiIKf+X=smb8Qx_8fzI#mPJ~fvZ^oM^rF& zPF*#f|9Kqj6H0T$lL-tqg*RPq01O{)PUt`f*G*-%bf*r?LM9~YRgoL4{6RFt;iCCE z38Y6|Je`Pp;Gz{`Z~F1Co}_LR zL1kJ&N!%qUs2abwa6l`rp-IxR7{y{sxv6Emx*kYXK^Dyq%}J^zFiAj(V36n-B6CV0 zPjA`?%XG8FkB-hbT03)%d0e8oO{AbhhE)76fg_)t3li>bQYC8&n9>@EADgm#BB3y` zT>|Df)V?^oiZ5+pc4M#Bt4Lk;LFwdVgT77x12M(h!sfULdWU%FY*Gk%?RV8A^=&X) z-S;p;HnnM;NqM-o$CAV!5!Y4^7C3=jX`}L|k*LEQ?o5g<1W|cp7i|ixjt9d zOMXYbiXdGulL(2P3a>7dE^dd7^ZDtGaRpU&=l?)cf zJU|3dS^vV;+vZ+Z5|8SPZGY3iVgaB&{mDPnHx!VA!@RVmhzv>77R4oBUbk-iaz>?! zSKnFbiP5Nff+iWimqd`xa_ai;7@M6c--+>|t1qEd3-&v9@kq~JgwYCI6{NE1S`9K3 zi>YTJU;y1s<>21!?A%;I!eF?V*|?iD?VbsuSQ6Ki3ES3Ov%U;hO8P1?)Zi1>sj!(6cXHO4mi~K%W@*M8XC^L>*J3*D_w8ah&rjY2qS#6d??U zR>eLkfAW;2kU6{GEM}@*=ip7{IIS~9KhH8xe&8|E1Fv>8XMcl{dmB`7Le(95bXEfB zg9asHdtan|M8$dWPLvoyK`zEw_c!#LRT>*D8ZPm)HzF0u(I-Xkv!)Alo96BcmuMB# zZNigy(^ojS#7yQcdi2win}U7Ek*>oIEy*lN2&wX8fr|4Z7E2w3#5$q6?|I5-x;TS+ zgBZ+fTeuj-uw3j^rZ#3Uz-O;GhkuhtkMVzq=b6TyV*}z*2!q3OpGtm+b_s%f;}(kp zes(in%`Po46|_o+vVY;OK=>DhQd1V&k}l&B@C(U zyl*5@J00+WUOpx0wr6BcypyIeIGsP^#WJ09gi9wlDI}(hbW!iqA9g14HbIzMsyuNR z&%Hb67<;UcWA<$?$;jlUdHLfJki&UOWi0^+T_WqgzjgVA*51|u!q66@`K9thWBB*@ zv^El{^`uCVCjvQ(VKr;2YgB#~%(-l4T8&*!4D1f3B0MAwA*2mZ4aR ztFZ@#aZ{ld26>u6@9j&YV&tUT@hbw%7&?t z3+tpa0JXCus?^jTy>EwYFUH{+pVK|CX_!&ukbo1n*S&>{E-oRr_%+4$d>m;C85>t*qBa8KvPfCr_R>fzwX_5 z4pfx_OP`DkOHoP_b8eOp%<&JDDME#ARjfRC{hCI1>I% zCa+yOPkWE=X3kv%L5a95Og>})fB`U2;QRsr00jU50BHaK03GYh%^A+I>mp;GKYH}Q zU3a~9GuEotlPH>*nHd}! zDwWFw%EG*RP^?m#H?cKY#w!D1#%$Yn4MZ0aXj05~23|~x=%Tm@H zr?_Ryky~#qYaQ0>P8dqgSI(UA*48Q*Pq=Q`aRNeI#vUj1?b=ltA7?k*!0)@S z(i5$^8hCGC1j4msjW#wpx&P*yk3aDQ^L@gYSE<-KQ`wGAh%Q0Y>VH`v^$M7-@Gi!t zha#KeWSZ)pnpk&uW0ekt006ADq161;vus7Xr9{?RRBJo>Gj=3vkM5NWrPfzg28M?P=jC!aP187z86i=pBc%kTp7{RvJ9Bfy7>%(` z63o~$4?p}%AOHBK?b~0w95u%5*tZY%?d!DLOP4Pt(I40GMjEFh1@S z3e8=+?)pi`QVo#ixo9-vC?brhfdOzF*Y_(|y~e)^dv9ytU4tMr#`r;S@8QEsmo6LN`L8ZWs_-*-T+ds!aJ?f_Aof#>SJqwmnSz%J!_}OOiRnbyo2jyUl zb@K%PqO~otEW`~$no^+D9^iE?N0Wpql@o$IPb-CmkiAI{BE%{PYbljdB26u!98-$4 z762%Y7w6_qojkdJ|Nb_MR zzyC&RHl@_@qequdoG1+s^E^ig4UCW9aNvMjC@8H9r4n`B3-j~2b!Y-0lq#j-Ftl2! zfY98zb4rM$(@EQHdwOr*0fi7Q7K4$I(#S|@VBqrH+?kUnckbD* zpK4#PrMRZ-vd5;T_P*mC3+K;k*Too1A!L?`PRGP?_a;?{uIsfih7fJRW9@Z&TftYE zD8?Yptzs|q3QIspV{9n3CbD+BWe4_1N>8bxG1!<4Ai-GKMV5Vzgg{C;N}1kLTw;tE zv!syJ7>p1IVE~|51jf|HNJ9wXdDQpq+*Ju7^E_;~UwHOe0??}0n`>)`5YP9+cDr`v zib_-B``YUEONkhBT=&NhKKLuY`J3fx^|gmv0C42dN5A)_FR4za6UVerC`?S;e8(NP z9XfRB(xqChmZoVZ3@IU==UMeCCFR=E(!!-nNxPl4+qPs-QpzN;cVs5d?Ys*6J}VTg zL`_gEYOSAo{PD4giR$ZFBVBu_yJn}O_Sqhum~b%;*Vjo97^_5NC)&ms-$y;wmad&3 zLdZ@vH*jc|^}S-!x(cBlAHaSl+gEn8pY_evnkeOI9RL`FI6#JwMhF0yQpgyjl!wp| zLb)+D0D&H!i@@2jN>ChXAnc`s+($V^OQc7Z<_zb)KU% zMM~M047o1YYi;p^06G{;gcPM# zv=<9udqQeV5upU3CPExzthE(o0IdTlivV0}i4e!wFlO%qh!7ef>$|4%T;(~&7`v`L zz~`&Jo6G7$)s@T&t;8ODBmd z1U3c$7($LQ9>#!>1ZWzQA%p?65F!j!n#Q#naU8E&eeUU}C#I%uz4Oku^?0)n!k>tN z!NKA2@wKHTEd0Amd^z}X0Y{yuoM|&$)ZwrUtmp905(L{u$0|@whKUG zERZxpk`P3Q!WbyER5;|i#Ew|CmKf7wQ8Cse1TglblPt)3YEE%3 z^ISxc3PX}*fl_6Je2jgJM;RMujADEy&oAY=pD|L*UmW@ct) zXZxA(8X3I#bkTq7A&R47#o8z&Kw7dMOrSiLcuE*ndebL?DeqYd4*zeV0d_VWCRhC3sGNR z7kQp0Nz`g3VVHF~JPfmDvzBG{-k&H%m2#EZK`Ep3yxse2jq@BSr5Llb)2>Gir4U8J zZu4E&Qdr$E98_wT@9*{fos^z$HqXw^R>sD%R!b&H)@-&Kjn`k2|-o=3HsSE+pYfBw%u`qMw{gYep^ zNN>CM-s4A(ynO5!Ef)2*ZNRxzNziGEIPbDU5we_MJNCp%ApmX5PTTTXpR*vaGWc3b zon>H6yZ|(%$oC7CN@ZeVe0q9he0*|xdU9r_TrOv68ppBk`-M`83(;&gS65a<7?!G4 zAw*CvmxqS(Jm*=KMo}6?Ss3y#lyS^kEtThJxIkQn#n6AIHxXi{F`@oxbH3Lh0owvV-3=ivBqe8e?X+Z~x5a zKfn0&(+6(88Mbb<-`_btexY8kudOA`rif#=TxLOFEeBPeLz-4N-%7|9LMD}>0|R(? zc=Pmhux}r~`)+4!>}net2Cx%gC%}6EE@uNr2oPJI_K3A- zPM=;`TueG0M2J%=1p@s=U`0Qu@`tzSZ@ys)Yp&$*cjQ@eKE_U?D@*tN^^eGCwHI#H*STeDGw z>{_{4ENg4hydDZn6Kv^3=>y}~FWjv1+i>g%O6BF+|cyRaLy|df4&CktUJbhZ_ zxefV?wCoXsz>BD_vc6!my&$fKu*?VSZZ>rTg>+927x4t!1nED|6m*a4FZ0r+%_=o@d3tu>K z{J2{v*fkxpH+ujEA=8uJwhvtQdXO<%DpjYackbJF(`~mEdfuAFQfX*#&@B{z5QNbD z<;zRU%UPbcnoXsY^{=IrI-X~YA%qkPg&+t92M3clZZsN}b0d5F7%8R5GAV@B4pmB7 zqO(2H!<4$kqT_j-F@}&ePT_ej^W2Jj%N{Z}^ozBW%ykRZ>fRe~yzQ>LhDJvzrJZ*B z=wpx7mzH#vL7o$>Sna68 z*N(!fcXlsyl(HA@rdO=WEX$Ilwz4udIT=)|on~|K%9VwM1q5*U!UZd8SgBOT#>Teq z+7%Rw8yBU7kYcG+C>93?2j}PKd7fu!%JZD3X&iuh(i}tJPdtNg552Bv#u-OKB}uu;X+Oo8s6S!8?V5QA*^wm27i7uWQ^Z1g4ZS zW~*7|c|&7kQ!_K&`wY&%_0_LF{lgy$OBLeW`W6=7nC4114W2&z(vwdnwVFy(tdzY1 z8|M5_xjepe=Z=qm+`HwLS6jZH+Z|sYgs)qaGD`3J@Q3G4oLGGFNoG$Xv^EHV)>uj+ zCDPhbXY9Pxwp*R~`K5`8+Tx;hLg#soFg9ABIepr394@60f+vYpOmkc}OH-w_!B{Az zl(ImApPWpjNm5&0UcP*JZEh}JSSn>{_nr>jnmIPCzAw>(Mo}oSgDaWW001n>G_i&M6U-g3*tmMxoi>`Fa{y`^788W^UO*}^c+F~fKZAVW3Edb$MHO^6e7g&JlFTNF`V-_ zNu*MhYSo_hbstk>E}cLBh>31&86Fln5X}D6@i#j2We*y@vuolw#k< zj47+>CM9A_ONp%gFvg&i@;sg-R>Q^%f}v{FVeEzD#~=RQ_f{@lvL4z>2$Lj42rT8U z{rlfw#?o4!KYjYeAO9FSop;R4{JX=4cYfdlFfgz&N$w-C55hNHm%j6^yR=eY{ICDD zU9UT?YougSdP)I6Mu@aGd&VFDV>zEnMRRkcR6>l|cEuQjDW#t0luFg%;qj@dQn~B} z0l_%W^CZixyHLH+2!g=%JjU3@WBUBDV?RD}byj~BlG{X!5Fq%3PK0b+!>J&8cbzRtd0GX|~;LfBJXz!>?yJ1{W4bLakBZ=Kn^ znL1A3`+g9_alEv+xL&Wju3Ijb%jNRqPIq@`97c3W4O5EEPN`x4tVqzjv3OXI6H7b_}ckkYH%Po`B)1K#1N*%{>9H&$&*=c^G z(IABQzF#O5Mn^|^mYsO%rBf$P)R&gpi;H=)sgne8PK{AEvl&zBbnb4qw`JK`LN*6M zg|V{ZlwFtkzHuB55F*qzCN_p*d@9S1rD+3WL#aIq0mng(gD7>%WdM+2sH6lTsQrKd z0An0u29-LvefxcX^;b@>sq05S6aL#*rvsCdpZe-ozw*a_{L;6-t&)T=Mga^V+8CrY zGbTXD2WX{fTqu}A0T&9DO`Epu-#$*xQ&N%=OLMWvJ0|SoZoH}{( z^vRR;<>k)mszo3uWiS?mAlJp7XQT|9P4l1r)3!hQqw!iTUSD5-@WG2GPpYFwr-g8h z8DNZg-mv3rbDR#qMT8uLs#=$%OpR$P#jRKl#<>tkh=B8L2n}J}Fy;~=9gMM*6{T)0 z6b^p&v#gK6J_z4x)v4z=4}AXfkL}y{#23HVoSzr1R=^lSh+}Lgp`q4cnj%|;PE3q# z*)ljXvSBKS5b`{4bad4B{l&$_G)?VlzFMu0kB_gdteiV_si#&0Mz7Up<1mD4N=Q4lac}u#!979 zxl}R$X`1ppXO1&4FfcPSg8*K7{`t8xXF5wu+1eToLsv?Hu>=5&t<9~@b5JS^!{*{5 zTx9}*5b`nJap#>o?!2=$KY#hik>=A+UpaXaU%FKGyiJt~BE(>v5>obkhEP+f1IE_Uy60`J2l}kD7M7>^Od!E({I%<+9_t+8AX0A^->>1Y;p(6h-xV9RLc2!ls!S z$8k=+_~H})_>b+SrF?nWiJ~E6JdD?j0j;H#JQTtZg0xmbEMB;fWtsPrBNN-Dk8IjB z@*BS)Kk||FQ>SVtPOLrp=-PL`JLNbtmCB}Ku}Mf1Ah({|#$;BEm@!r?#!)o5zW(nq z-u9sn6+Zb%{MNSS>&MUOVCJV<#GiUV!?m?=ZEgAF$ z2w{v>DwUz3A;)oQwOYH~W{z|H_1BM#jGR4r^6UTS|6DnJTCA)TqG$%=yBI6^{)?Qy zoMjDT1f`l%L^dJ8Ff8V}u-)rN<0A#IJ`+>+RDvLoO67Tu5ZbbJ>-6O0^T&?;!?(Y^eCCW;T`fn^t&VfAF$1ofS1ON& z;psH3Db+THQ>qC;#t#l=0PeU;PVY{ufOiJnaera$J{qq^VA8*;{^C4a*Hv#~~SV{?&%q@hJ z5@C!Ga$UDnDh&+{z4+|2-}&3WtzEj5w_24j{B_s8If`Cp?7uMf7^P{onv~0HjD-M2 zLW%&MQXW7Bh-Vu`JW5UHyncBMBWA{S1Q%9vEiwy^5EcxNF4NOW&Od-wKTu6 zU-L92gb+fEF|O-+p2zHoLzeyMkw>0+{PA#YEo(MeyZwud-I(X!XY5rUSRuDpzo;`W;@rNHiboel_B2;hYXL}>x>_;DjZ~O3FcPWZ6#>{a5 zA=hy{&zqi}USC@~{>(EA7cNA#TE4z6TdiNB^j;~SLFjuyAd5vxNY_4%bI@7|(!O0yuKR>r31;so|Y13*zKd_OIh+rz_Zdb%(*RTv%h3WXnh z^PBxt*3X3f_}St4zT`Y^wS@2c#bVC6=Xn57TUp7IBu^5NrWMW)FeU)LtaZIqVvHH3 zbe@|HrO=)yslk{H4;My9Sr8CH5XM^TJdU$=`^3?sd*Ai0{u|y0VLyI428V_W08djT zC1tEtufOv0%ZnE-JoCg8NvkEI$RtUSrjC?P6bctGX0B_L(phHm99iR0W2|U5F-9T8 zipA>qxZ}EMl1R>ZlH{F^jH0!R7oiWrJ_!5qPh-oD9U@7n>xwLknoXtDbM1B>$LsU+ zGD&2!IT}S1QRI(|9GBACbQ>v6mLVw(##UDh8AAa)0LppZYK6_FlEaRAk zp||1S-H$#9`>_$mnDNQUae0tkUM>osNoU^iofuKS(!^^W5p0IL9PK$5=*s-;A6ypxcT*EG}ZM<0Yg*RlJC z8y^0~H%eADG|zbyq1Dwr#vBNOo28tu*C#h^dRWTb7^IZZ+N$~*0HhSr+EHo{<6B+# zR)A`$bh%bLwz`S|93cR}1=zvZ{pE7CUyJrZ*pGi2c3gS$p+gV-&EI6rCMy&~6q)7a zLt4Mj_q}%e^!)tT@bE&Z^jxcDUFlKJ=zX~y^n4G}Uy>GhtsGYHB;B&(~PR%^6WN-&-=CJI9@&qphjgNF_k zKlU+t%PnBHi2b*_55j)@)3y*}{DDt?@^iZO<@6$i|lN)-L@qG=?e*DCzeE*c`4OXNG zp*+jJ_JuDz_Qfx{T9>3O5rP=Qgp?^AqI8tft&TIr7()nz&`H8Q4-E{Yd-s}8d}3hN zuB(p&`_YenCVbNssWHa&yn8?T(e(=#Ey3`$&6~;OB=bDemZe9M?c>X`;m?dDN0Rgd28@C7An6p?N$DZ@l6sEM*}S${O|zzXMYHB&=i*m2 zku)oS89IOw000I!-AngU>UaBF``v%t{C)HxlAgU6r}w>(@_q3Z(sCNEc6ByD+d>+) zC>z-Z*$|FG3{h92%|&%|O+$2$E=6RUP;`r?(~$+>DxY~887&InanF)^>vcX^N&3L} z000q0!Ju`K86<5?`OVkaQgo6quL=u!A5q(F&9nJs#dQI~u|7@dYr~l*q z^}N~+?oaRjfA|0A`>(x!{rlfvvHtfzo`2U(=`54~{+IY4hllzcGeE3odblz6MYEgu zH$BhMZr&JvhJO7K2EKL-5qz3WXc(R#Wg*}4!b4}mK>YTiOBMdfKp%-yBM>$FFs>NE zVqoZ`Y@Hu~4hcfuFa|9dg^ZPo06rXa6bwUIJK|sHD2--w7)H-@fp{RY1Hw2ENH!=K zVSr!YN2F*N&=H710u`19jSOf2f5hS!=$=RZ;;>8!1t0n%$uA$V1=T_VWFM%A&xZ7$ zh^UU9a}@depEHG(kRyVHf*hp%aRN_|BHnlia_Cg5A)xQf?+uj57J~1S--rxhfKD73 zfc~-GFP;n*TjtpGDY%52>O@Ey^l`9I5ej4HZ9_OVO9&z)Xm=ld{sg>-V(1@YzML>j zpfCi{uRaU#!r`TlOAqW+Lq)$$FJxxN7(T!5hZ~HI$8l>qICN7n=<(hUBtAi;Emi)H zsgyv?jwLfp|7Rd#-|!E7Dm(q@<~Dnzb%RQA`Y*I`~z#Gy9K9)c7eFIMIkS$+) z?Nkzp(irFm8zCSwCy)VVLemO5BZx5a0R(J+E}t}-fIiF?O|G!zi+s$HwmZpY6w*yk zX9ojB)SmXr7k?eHvfhtyTF~+r*uDet85sx!Fn^PQJp@j?Ywx{7C=YZ7<{xYiqjpZg zwD{iKd^GEEga?gy_QmNhla0%gq~`W5fuAM=c4; z=>bkZBQ)siaAzdCPJADgl3{u{PgWS(k~+^o8M+8FA5hk~ZV^FE)o8a8i?Soy!{}du zpAm*#92}$(P!a>fp$|TWAe<#JJb)ks7+e|=rkkplD6ZCn2F`A8ovu7z%zW_Zdk zGziyI_?7SRpqTfVxTn0AEogP z-=TCPLNEUt<{$_7_ZH1(G#1>6%I9F-2auT5M~Gv%1ROkUBQjtkK?jf!G$Bwhtx;a% z+uyN`JnV{vEjxj=e06Sm>_I2A$TkwnKi4!WXjHmjc8;Kz(ycDiBs$+08#P^YAGY!_ zfP=*7YtYx3@KM~T+KzlEMN|o1m#Ol)pd(PqwnCmtqwyIZege2nwnjul*$ShXSC&m8 z+T^1wc@f(|rRRYHCO>QKu-Nc)TF|^rFk7-HcoUCCO0+8N^`3WoQcEp;#iC(;|#w3y>&-ksl#}+)ax7 zg`jF6A+97zH`c~Y2y!Hxa$L`EToeEd(niIhTWbQzj6f%r!b3X`lUFHy_@uFUs4LYB zqVxuzK^5wL1%h%A!5GdW24R4Dnm$-OA0Bju-MDl-c|dY9P^8=oWLFk{Du~cNdmg&# zBQP7_Qa8gP0j6-%enukD#>FBWr6@hNasfw~-uB{+0d~=lY|6@js3nZlPk(Ul zY2YiK&0=Mqm$V!o^A*`}ev({*O9KxGf`RsmOqbkD)v^>WezdboQZ8r1ob=Recfe!v ziK-Y%^nFndH+en!4^D@a)Uh$q;lVFQwil$*j$8gDOWR|QEm|?*!-rO_h^MffM^>Vk z>M1^{Cr!zie(4-#8gF|TW<7!O(LD={&%0d-H@W1DOyYBaf17$#e2D!Q-YwpQn zlhxK?l6w{7>Zd@1lvW{1nx(-lWF-NO3a}w#>}MLDXKA264uEk3kW@!PBnSc&fHfHg zKpJ#wNm5Vxgw+ERPsgUOG!0g2Shala%8Yetw?gtTZW<{SZ6cJvn#-tb*%T``-p-yT zovmRaO2rMy7(N4(Z6itzKf&iO5>lvk#UYjbY`?9kd1(hvcgOMLQvbFKEApiIh5~2; z24K*v6qlGk1U|~td_>b`Xa*}3+t1C<3m-qaHNuK(hDdtlrtuoM;QY~!hyFe2jb!nO zbv|0C6Xbo0MvR?6(MIs;ras}39cVt2yvVhj*w=fK^4q7@0a?{L*sOiu5cy4M&=%97 zw0}636=%Gv`PoNwvCt^2m!!#u(%r*&UKrToZ;)smk3}=KD`Cq~Iw|BVPv9<`z&VwP zv2FOn*JjI@|0<4-gEmJLQj=0>yK=o%n7jca2t_g8L*+M6SvQI#0W{ z+K_|`?)lf_28(!6TKX2eFr`IHR7K|qv;n5Yr5e3K;=DR#4S^85ZmUP%SjTJI@}J0V zFGw&j++YwTg`1)VWYXDI0*Wk7cAf~xK-{^+9Ik96Kj8?Vi*@ImMQi3)x2*Fe^!X@p zEIwrcKoFZIvTT44)_}`v$^dD-B`zl<#xq5gYA#omTqmG`U5~bqP9l5^qcM8UlWnTj zLw%!y;1)t(1Hk|z(37uy4D+!rtQGg}-U*;VR|a=(nNF*GYMq{JR33i;+5$`sVl929 zu`^X%&Ek%{e#aeNq2BD_TVgv{R#_;h$=U@9h^=IaAiFH{Kv_U4bh2U35uyT^biQmOwCoW6FVHy0 zX?q=E36>LV=NO)A!%{Ry|JjTA>wS%e7CB}@<#WdSqBv`&m|4D5heTbyrg=ZQbER>NH2Lvk2H ztpq;Ioq%SE9sa*%1t0uB#-l7>^Ia1}V_W>eB3koBC^B|^Yi2xpY|Ywc?P&P=$$i9( z$V&ien&1S7F@shX=6}~n`PY8L)W39(S*TBf>yb(*ZkR#i8z|v+1`O-%Li`e{9mp!f zWKt{PAW7R_8#oW_CyJFjPIsy1*f(qK{LEDsb4k7h2*_k4<>k61Mioy$*9EX+u7gY* zZtr4apyGhw0cmTKGwz6R&O3l`Rt8c9fm~n*@an?sp-`0e*fChoH}H^DiJK}v5P#6#fmGj z!TbFSj#9PPbzy_@yLQ7T%heptyhxDjolobCeOS*O^ceCrKdXHTjmzv?0H(_V8o9A! z{Y5-|M(%P7lWTTVC6zkXvED+vUWq*6b$x2#Pg(+98P^>2WtZnaRC}yro(-5cX#Q+& z-l0(@c&fqYg^FzfF-Xje3r{MFC{0SlD|N;++0X%wWT@KtIw~Z@q7NV{=?2;zcnc-U%+K!3` z=xuxmZsVZnjp{5nnHAYjath!S4AVX@@x8~lx8viks&^o`jSEMBP54!xf3!B9p*Jyh z@D+!YkcI&w0y6Ly1Gm;&rb$Ef6~nu*dltnftc9zFa5pC;d{CcxvaIUcqDgK1V~-EH zgYDkjCShCa!Z53#fR@mq?F)knpjb0`HSP+l9x?HMTI3c(m}YguGmNMV7uU}(8`p&>der^eb4p-C zk!9=KB;ywNh>yFE)CJGt3=bzl{ctS`ce?g2ndaI!RT3BGi!vHJ%T~na4 zK5wzojrf=v2_~b{PD`Nr#2qMr1g{QoS68#aUoC8LHMA-ELupuFwoIAXJ_i-+*$S?g zXJxIjW{Cp8V}|W`)VI|GYjjj+K9q=QP84U|%}6<~T0THy^3GYQ`><5&>szTOUvQl+ zxSamM!Bks?s8}w>u1|V0Qz;He9DwPH%%((t0d^_wK*VAkJK1OQCLtT2VzG+vR)&QS zB8%wy?t^9?w47FOQz}h2JO(tX8vfnAMlPqd;4Cxqcu%eyM#t0BJY?$g8z(!_G@{Ej z8j-Bb>9if7H({#)(JzFfXcCO1VMvuVPee2i3_2|@IYRit5OsONfY3to1Cdt>U!VXB zaAS&nixz&sEL!qi@-Ahy!6@$oaXsXVxL3H9LW0u;^)G~Rm&2>dAaY9<*|Iz38~5Nb8S7%Y{3_rAb|9y4ooa?A%;zsM4Ead7kXj$|k<& zXc9pZr4>IU0x;0%Uw+C;Ao+X=Vp6UNps=Me{=J0+;qc;wr)k6esAQr`8B~91%XROt z2+37?N=&_vEaF6x@uUy(n_|FF6j24ihJqujID3?{Lwl3p%F!yAgqP{d3|c&v)SqJ< zrXQtNXq)h5e^Wi=%e zQ1a@yMQt-DH?)ZmllGhAJhs%I{Tn-SUF@2pT`Dx{lA0SB1e;Bf0dC{-0(-Ue+6=9HxnmlU=};sWK&@X!%;rX%s$@~8u`k+K2UOX2pib15*O!vIMf zN#G^4n_#2gv1^wu2=@1g3@?BY%|hMkzO=Nh5E=y^AzK+@S&@_cU0XxzgQF@I<-{Az zpXhqc*I>(v_<$l9?8}}@`Rov}el4=vq~3_wOFg=8{#$(6Qa5vZ(@**n+7a~zhb;SB zcFg~;kXlPQ0LS7i2Pev*Df6+uJGU|QosyfYc zXgN9*_;WcYMQ`wp>al=Ux{1oz#792m$a<^6#NlkID^A!TC_Bs2 zits@4Lxr|Uvt2GH3#zwfufd>0F9KZmW624|oL;l17{?p<3L{EViH#!F7TQqPHdn7v zUdhx_x#E_Qh`0fnXd@VRg;7zmZ-iZMS&AtPb38YdDLPp}w@7;!9LN8op_2mSo^DR- z-9`lB-NQ)1c#N+;`0-G=Z&lbU~!oXcyCwZ%!z_>jd zd`vYF;^r9g%l=5Qzc?ITpxKB!o&hW-hNk1e#9ft=JAid@rsNNYXO+--iuH3Iu)_&1b>n^O|RFYC6oT@ z-B+Ac-&a;HCPgsKx+t-5vPAwWfXh2KzU^NKiC%+lG8?E4Cw!v7dwE_G;EJ!>GZn3d zEpUtID1y!;&fn!$fnB*2xB#KR-=UOA8*Y71umL44-+>Q71P2cA;tXWpX}cAloW@UN z9MifuSZB4qxWXyDgXEK7hW2mc56gpwk=#-IWPO3bUw*liV5&VT{Nfa$kKfGzK1>S8 z@yiziTjjSq<-KGu`NK(gy0?gjy*n}sk3!_;?-1=25^W#y48m7|C4}pRc*3pXsh|ww z$BU=xx!KjF3CQU9Y>_kh6-%^(>yI1+pv6 zMT3;PT7f`>Ia74u<#E7f*;b{HDN!G==oC<{!=*6K<1aP#KM3P`IW&f?n;xeD9rIv0 zk5TR*Ejl{_5OPJO_e~5r7dm@j!;OIwrBUpa?%cCyJX9d{7hP~_mqvB;Kv}x`|G8BX zSQ3RFr7dl~;p{U7NoTuEFaLfA{4wqr3J$ws^t8d|p-S$bM}aIWPt(K}(h!VWV48F? z`I{VeQSc)e0Q!s>A-^lqx!aAa=FnU-**LUuR^7*F5MWssRhga? zI62B31aG9A*?XnaH(eq471^V<0RvSj+@rzAXVIrLWQCE7w?^%lw8ER^K6_}q0OA&v zNDbEvg1DUTVj)R@oR;f&>C|RC$OGo&hx{gbGjKBwoBnuAQ0yUsqEHFLSrFkbsB4qE zp1j|<=*3+0IHNqF?6P2okyEb-YiMoge#NBXcpuuC9W_&XjhQQizJ|ZLMhj}|kJljr zrs!yV@#J9?_=(`QYdPQL^)f95h}hWCF52@-&o~QGB+n*&gE&d$yJn6tr1KKXlFKA_ zOYnm;*%}#)9D0|xGH1j_-hxp>4s-iRnN8yf@Tzya2E#QWES|IQ8(@5)=yeMW@%ai$vQah+>%jSW-N-i=W`vD@8pmWyjNE4n5#tN$ zcB35!2LHLO3l;&BUcsQR3Aj3MD;Fx!9}ufoAn#C@h! zE}5knMHIa@MpE6~s#1wq$&bL(hgc-pImxSet&s3SGyK%u#gfG=tYjb_dgqdzCbFQM z+jUf~jeV?aJ!M3r(QcZYkskHJ9eZQMj|X0ZU~tU&tpS=?j+Jd_Lc8lc%uExEYeB^x zI#P5<0uPyFg)X4Fe;*5nJTzsw3RHj3E?t?_TiWT`q>*9D2!}Gt!yVzdr}@` z0$_KEySUP0hPFu}RQ_6~$)Q1OUq=R7OZ8M1D?R8p6mrfnZeJ#9wKy&7Hg0$YWSaa1Cy_91_k6+nR>HqSZVvI#gkYk#AgikIH% z>*BiNi8uWc-vB)MFIT@A>Kn0R%-A$`a73;Fm}dYzs3WFowyt0^w%l1@U`6~i0-Sa_ zKR6S{;Nw)Ov<2ype}V?@Yslv>&n8!~zLj0@pWiIp=R5#Qu~qB7)>k!T9GfEEujPfT zQd^;}L9SA?#25=U@7Wdhs5v*8hjLHd`|m?u5>n$Gf{s|N)@c<`t$=ndl9vc z`-*71-+*Rq=+yX6TSUkuyuE*p;Jw5Xwx5P+v-AiBx?oLNOfiDW8|M?<)Y5T8Bc%1B z82l|w;C^FabwD8zx{<0x{L#aM;Jg0GL-nbHM%PZADM*zx4HgcJ(`0PBJ z_#_u^XB$ikEIdj0uLQADZU+}yv1*&tPBP1Pg1Umy6lL(?p^A1KcTN}6EzPUY@f?sN zJ1)};`Sw<$nNZ0UYF(eIW_`PZ`M>gpRMsLU*xXKuxH~;y-s6ZC$Z9X6Pd=a>>(5Y| z;x&#*mwKx?e_iaD(Ho>@wr)qIh9T1mbTQ`&w$1_dQrN7Ng!Uo?Z`jk&VbNf(Ii^x@ zjD3vZred*JYK+%fGHm<}VgWIv7T#8EvL32vl_=0-S^lAQlfHi!NT8F3%9w2U3U>`s z5k*zS#B?Y%6#XMgeo&RDSZ}(iQBe=TqBbX3-Yh={n653wCDONfo@R~-$hfhC_}dC; z=B7DEw+|@4KxGdDCRxgnf#$35)&5x^p)H^x+^yb3&TF4sn&;!A?#Lh%#s zG(G0ixrI?+R9rfVnigMiatEqF^Y;eT$5c@kypZ947rq|IJvOj!0S?!1iDcYS(hc)@5n{p$Jn;1Ap0fxfANfKnOwqZh=Eyk2o z_EN9fxd?K;URSd!8^8srzDbPJ)Qy$0s94mT!klV9*TJKhm2eYyhaxjPe#k5BQMeu= z)9&)FVbnh&&LV3mEDe!fTu5m!3nG2Rz@802)0B9XbE3RRa|F}YWtM@S3w*(b)Tee4 z7>-UDR(+W|>*x*a27O>DM51!hJ8qtC0VkeXTTJ={q-U`Y7~C|kb_D`UQeScyPaR#; z@NGP%qEiNh+d)+Xx6JeQ)-5dW!8G?C#!b8j?#S=B0w>KtsY8{xjYuqN4elN zim$~I1XNN4pE=?lllPpmm4ux^Zbdi~EKd&9aXiE^2Xf0=#n&KpUBpdK59sFPM85z} zn=goPA4ykY;h&oOQE7V{;?tiCL%~IOs{Ro?3`rHH z!$wJVp~Kh_1E2c8EfE=TnsNyHS|whfk8DR1fMNz`R?Q2ahGK|kHK!4ZLus6qU=8bu zVUe{&!Oo^aTOurNTw6YA{N09=`de3beQqWON+^?Rc)UH~s9 zSA+bw9*W+re0yiW#-}a3qT^Bo1g=-w-o_VD*rqhFQvFl1S}h|f&O<9GT1&T-WD|5T z3tBQR(PMLcHvRYwrKTMs{AVKUlmjhre_55%|D!uZlpsaf1Unuk~dMEqf zzk*dSJjT>Z^K(t?GUs|t51_4m2KMFVE?(^FP~AXPV4W@Ks7vV)d_D=r!Yji)!@XQS zp*I82Av+;wqvoWcex?KJLaxpsH`0EoAg%~BNoOd1PTMz@FaUdFRbY1kou0!#Ga z$i`OE&ukv%FACC8f$=SdAH+S1*h8%qj_Mi1g$xU=JyK|T@$6+MW{t5pwJd^_>JQa@ zoq$qKrkTRg;MzOxX=49={`;ZQ6+ZY6XeU_u9L(lq_EhaC6axzM=%Uaf+w{r{mRb7W zcW@_2j(e5XwLr>vDW>1fYiM`2;5eNx3T*3bC2g##pUvqcHZ$~RfgFqXY?;<1VU9Dk zXHY#BI?KdeW9rb`(>@s?fDT8(%6VZnza#UAz2bMd$5-rr(QG# zom$h8DQ=u8eF!uan~dITeabA&6&x8&@diyeuuV;=UDePIMmkuED)E`R!~| z#^jRMKOUXUr-=nRQX5q6%@$X2=HB-p{~3a+u`^8a(cgY2is7xZq^yY8St6Rv7GPG! zc=t3iNSJ038i}G{40FPmh$9A1R3<9jz1|?L#?dAzdN(YQZ9ct@&y(jDc_|($3h2=Z zcGtBDDHrzYey*AJ+<)Y-ik}6dveUypU66a$c9lS}k}Vd;nxkDpxXt<6bdGbg>VQ{Y zcD7)Y!ENiSlZuW}_q1)OfVh%eTgFs0>#zyPMNHkCJ-v7@T44<=ke*7aCJ9~n z2bvAO==Yc&A5+_gS2HxU6{2y2%DyJts+c#%C5WgQcs`vI8s&6qLY1#w)sm=O^w^~- z5Z&oLNlpPY%(WS=q2vR|XE-QWybxfp>n4f(3(#JkCj};`&tbVi7YzgK9 zb}DD6a0=m1oO*Z*Zv!M;M0=+aWjr_Wos6ucn&`5X-NP&8{ZVr3nr4erSYZ>MG;W*N zt>8?E!GJ;p`qhgeB>jl&cw_yY+<=O`cdDFfW`ptT0#TnDr2}Puzf^OwKN9_}y+Hkz z_Ue8|zFqOn340GGembVLR~7of0erQ3wP5%czq&zP2rl|jjrSb-OBORm6{hmp{4mlI z6r?({?Q8*B3#t@{;`02pK#mJK|E^A?tGv-BT7f4<(%cP87d| zx$(o%c1=vrB`fO;z8S|%(=>HeQy^(7k+uBK1yMm{P@LEYa)`lzTN?LZtQekch6c) zuL| z*fkx*eCbJR+h_(`R%=Rgs92HF(*A0Oi?y-*Vm+L?wKbX^VzW&83g~dj4H~Er#DrMW zN>GY?61)^2VCh)K2oJ&L>q=Di1y4rn6o^OenW&hSeSp&EVW36$9SazqK(h%BcKzDZ zy2r9s@lvSu2#MB~!AIYtlN79hxBi1P^Iqs}Ao14z#fS`>iQ=kW$P(*#5?}v%CY~Gvnr^8TUQ&?A;K^F( zTDCDwNh+Yxu0uuUtr0LuoNeWlDKrUm9yLcN!Mqmld7u@a4(-z_ylRPM?{WYYAVdI6 z>AbYhO8k!Pl`|LI5#HCEQ_`|3tbf1<>dA_A0efp|U9#Gs9V&Wv&vCF(zNK^k0?bU2 z6jv!H1*LwK)#HP+>8%pSEqXB6E8?eZG3vHpxf7lFqT+OxNJu|J2}t5U^Yqjz!of_Wg^s~(n#c(A1O+vz2(l}OQuPDGp zlSt5)SqAObgoyLH(gdu5Vz7zh3sgV8M9WeO&RuBMiO=6)sFc*Y*kdLSzG;1}Q%)vr zz<|DXI?*jc87+M3;Y)VHc1Y->oVgZBY!*vuVvoXm@~NwuY;5BkDcX73#<}C?bXN)=NJ;5DuOgrt|^A zoZs7<0NEg_152EAQIZzEE091U^9C#i1X|f3p&fmCb@YyWQmoUvbK0t&=A4=l2gyyj z=>-c^*#2hOl|nj1aY-k_3+X(&UI9-JZKPq$(Yru- zQ@}0TCj}*h*s~Uv}i<W0C0fEDqQl9+O?URZTlchmbaMZ<@)a+IdocKwhYbG63|MIAETyPAQwQU+jkc56 ze5`ppQPJ!0Z$B8L-bvB6|3YX}9eT7OaA7mcU23fO1}VbuH%3l;7o-gJSfhmADNbb4 z=x0%kG?po<_^A1~?u?cMYbUo8yx$3b+=<2rs3CArAJtg9`cN`QK5~Y`ljw6r=69GjiXK%Cz~kqW557#2;(WAY)(nlk|F0t9hg088N-h<7ix=X@dAv`bb6$n`ma~q6gW}WltWoA@49#MBfq=QdtmR*df>8A*xC80DG=inN89zq!d`i%hvtpzY}} zQ?w|PCP)xLycv;Af`&FD{9&m0DeSXQiewnWigz*Oh3#Y3<@+7d4oV_>u@oiU|AxsW z7OsK!#c_^sNu){vNjAlF>v;`-Db| zUILeAQw*faxw9$q>}OSKNFIu}k0mw`QO^32URiREx3gu{r2L!XIXi%LWpJ7!MI<#*VxAy?)v4v+1&@Ce~`}rL_oxffYtRW-Y>NPuCMspB~+s(h4ead5#AA~&Jm^>8l zBO>0lV&s6-7n+lAmOPyd-Y}x7VAr8<}JS$V}8M2@xU#8ZnreG3KO zov#?Ppc>?>2e z7#aKDaJ!fRy=Ssy8hcYMiXSW<=Z2%p7`2(HbUl@+gL>I(*ryTB#O@D3lP`9v)ReeB1h4qb$Ex{-_XA9s%WpD5=1TR=((n7p?xU}B! zTqxU&Bs}z&6PCVT8%hAK{OZ252@Q+!wMZV4}^d0e#krt~BbCjvX_k5dO~0#yM&M`kAj8uq44j?^%cjl~s-5@CUmp;N)3Snnte1YTuTO0^g5$2PbL=30!Yt)=gXrxNQYoJjiSX_r}Y1DUr7 zIWbT+-C$2Vq=AuQEu;w>Aq|htYD`>R4Z>)s>rKJR1-Wi!uMcC{g*2{`!eZQOt3ODQ z0t#*Bu(=!KYBhtqac8I`sPb$F3?bhA0c9~#I6iGLy^p=u5?}FK)oUqIf{Uq^V`ued z#mr~7qJr6IJr+O5fx#??^A8YVMTdD_Hf3#f69U&fLQDCCbf0`NfpXVyIoDn%T#q&J3Zd@^4L;y`Oxd zDt*}_Uf(v)6+k|Sn=alo*LP})U}=5lMq>ORMRhw{#OtTg5&YCcRoE5{sOPRB#I`o_ zJt2f%(v4fUQl9S;bCtt=6>n!J_~e%Fv|U4VVg?T{I5eLOi2FUJI0M}{an2tRLEpF= z1~8)9R(gO~`>psYN-N8MxBSnBj7NR+(mdXwQ5M)9#D&s+tRqgrJeig3c7=OMFax=J zWFP`HVQK98a1+kN!na+6Dg9$Q!{;;-tw`WZ88>6+xJD5Q0n?|~C=k6Rn^}9U7ul+n z{w3n5C`_p{n53nl@~dm*-0+Ehd$j_CU-tjC^&Tn;Zd@~D9;4C&b!f3KAZJ>DfCkL< zeM35^!>FC7asxvDU$hL=6D>A8Vp47ak^lW(k0PF;hx7{bpujF^4!~lwr~t69*h@EF zfjLX=m)6(BR(HW_!LG#4mRzTa7+=B4M8qn1u2RC&rOkJSP+y!A3_B$va1j-HNCI(N zQEgHHz4ZwI4x(nEtRKt-(=ly4_1gxz#>Qlc`hCzzuj{KJ=`4DxQs)E1y^96I_}blN zqFu{y;<+|`CR?y~@6VYL2+*# zbnln&_2-;wYJJRem?h6A+?Q-q0vq=!tIa|$pppj_mUU4$dx5nUhBBydbCgtniJ-1E zs{vyMMy!wU`FYr}rc&`TWnkLG62BtuF+-g@Bk&}^B<9u+WHB4MRninqY5T>10jH4? zR>H9(ft}TuhfrlEfuZ6L)PvfI?N~{XOM8_+ra=8 z;b&N&@}zLYq}77|mO>4agzVd5SGd~6c?I{n5A&C*_^HyaPA}}yn5hrf{N=Y^t1yUF zln@4B!)w}!%gS^8g~wPc6#6A|cIiDk6MgVHd#9^8$v2O@)t8sdFwI$o;e8YPvqL~k z#7Nz&LJt)15F7=y0YXu@znT)QWBhjLx@xAZ3u3@Oga1V3()55ptUt&3}!XmtQQioDnkmC?DC~ehpgY>>qa95#z zTdO7RI|XTjN_y$X)_wxFCr!{vKIL{!r89@suK|4&3&p9vDOP%dM}=Okt%}u+ZJ;Q^ zDPf%xxKL9^fELd}QagJpsdDq;lZB^Kcq&tPUYl_S0B@gxnYu#;$DT~G#R_Ve;9xOF zF1K1NpC5rvU^|rAMH~-b1W;JR`AT65Fpv%xNf^(u zo|xjuO8T6IWMCP@usRe7yu#?JnYG&6^hw%`CCCx|-2WWCV!A@Vm%}b?ylPs;ATD!{kUKO{Y}coJrOy@ROIYXXX_npD9cJ7W}8HqFJ>xSt<}H`PVR) zawfJ+*PwmjL8_fV?fKP{*LA3l=`NDEZpu8%kr$0KG3Wo3TMpn+UcQK68mk>tHutOig zLpBMg9ewAVj~gZAWcV;P{~oA#YU#E_*IdH}{#zN3bvA28+hKqEgL?U6{g34Sz^h~* z!qCf^X?FkWi{qAT$`Nwg>q8AFno<9I$>cy$L{TAOC-8>3HNF#*OXq8 zZ@*^%*X$Ugw{i4+eWFA3IW|1JyhwYttYfn!40vL|^nPMMntxj$kqThejrm)?ymUFS z7o@{Z;L3(%!eW|W{Qq8WL{Z%M7WVfyb>Z7=emB8j%{5r=a+B~yG$|BA)f*cH5IJ_`O&f)!`-;$~7;_8)-){zRp5QhK zcDp_za6R8I#x|J^0KjOTr5{aBy zEt(*LX-5`xt|*vq&k(+8$xMc4FKOG3WxLT4fFJ+(=u66Be0vT*S5~m(y)&A1Z$@Yc zZQksR5q9@X2v!C>()-MF1^(lL+;lAI$Jffcuj=;c{%&)g=a(S*&7Vh$_J>x_YxB`{?3bU!DIvUk8wZXNwyV&l&F05w3$zx+;*{+q65 zv03ZaWq|GdhCaOa)D*oew!ldVV?t$Ndr-T-3ID+FCX`lm=4-=+Yuh5j(;XT*@9;3a znaSqTY{Pn)iO;ug@l-DOj@`^H7ntZ!iXvO zUnFux-vPxG?z_@|h)tof@d|h0J`>Z!a4k#ZU!a`G##(Uqr+i~L&8UDl%5F=Yn@q|8H&Jh9tgCD)mv}J zP!-ZFez^5e$@?PZ#q=?=Op<#I{+6XTDuMquZh-js`L_>Nno(Zb1vO_gXNCt5 zH}e(`w|b7gk&b4ee#9p4@}TRy4+my^g^P(LSnrZMtjzqG^6O5Vy^}>ib~t(EnUKlB zj0it*u#V+|t>H$QBM)Ah`n;KZO|(xSQcCu!L7b!M%!a)f|4qf187lbXeE$cuoSrgY z)Z;UQ$q0lB9uKCJW>upJA+nwGU>t#d=Q*kUuJcy&W@TJjozzpF_ZA6vh2idalnSMJ zET}=vC<&Sucyppc>X}#kJ(a4Um0dZSqs|hulDsAB-_M&E7Qmm(gY(ZGIk2q#j3Cdw zJ(JdCZP;X3yNKDo7xeKfcE0&MaJih|Yt3)=QHB)PrZP=dF@IapM6S6;9&q-%k$~L? z-xd^f!ZgAMA7YQ9ib=P#lN8Z;!hBgz?^xyrNHbz9=$X%ls!>(|hB8jgnI}Zl0Cvlc zf&8+GXPOu>3a|>G_O|!LmQJL&A(n6QO_Nz&7wPdRza^i3s-91kB%UR1WGU1DIeaY& zZT+Rjng_hZx#hXf=QNRLpv342bAKXR?}EY$?6-*>ltho&>EFs0pM|_&jb@&XqoeMP z6~$+auUc4tOH?lVc=yy1Uu{O=Q~6R7bVk5_u>9s_{8yN&Gfo3GcPE;RnR(40MQj7O zYGmc!w|L-5C>LL^c_CB^*K7~QC-AHJCne%ILgNl9ZE?Kn9}1#*eLDF;I;lXsKRJL2 zso}v7LQ57C8(mQGfMOSlbyDc90V9z|LqFf!327!3J*>~? zxea*m*5##(UeHif@-LPoKj5K{GA+6}zg*e*^SJPgAL8y9rVTe*7F(G+d`ItNjB*|6 zB>*WxoGkl+V4SnM0H7pao+XT`X}soT7uQTa{IUv$y4AH!%pV8)Jm!S+Gf(5;9JGU- zt;G9&bu`C*ua_6D)?}1_OYj)TgRND=(dy;_)d5j1nj`Cg9=gdmTW9&J9HFjpd4R}) z`Qq6{w5%B8Ux&A1`_OR^h#~wzzW;W%H+=pVxN7?5h~n<>@QGIbf^e>>h3D!FBDZ?X ztWEj)f-Oen#WUx7qx&JtePS8*2sH4rW*plJ34W+$t+l8=F zu99j`#@+?@uN`g6m`=QLKK?-5SULP|*t*^D&TfG|f}7eVO7an>^6+?@g2O9mt}fFF zZO%L=nh6fB@QcKs-|8b(oJSw)4MRkpSsW8%cOwnR!g{zid_Ep(t12B}%4z$<4K(@1 zoc94#&g5suzcAAfeFM$F%@`T~ujQGZrbKOVq7PwShPwUyr{6?IV z#smB0!w9PyCVEt`R*6*0?P?-{`GJu(GnO%~k;uUABsbGyKFv;V=o((qoFPXIC+Ni_ z(oY9D#M#8UP{Kt4QVPXG^VjEGkt`4AEUvz1+%z=A^sH2dglayTKN>mnR2v+IgpHDH zmvoJCZJ*PNg_cT8Ob)Ri8r(;@mFRv|I9*n z?k#T%WPhG(K6aATO}tRk=shw|dMS%z&+c2EuH0!%VLd2?mqB7OJbx56vR8Fac2#Dj zWEowGeul-*2x}m%69}juV=m1CW_%h)g%zMR2Pf(Hp7~>w@{=m&d*wWLu6dmBWP4aH-J8HhcS9mjiJ0hoYUXQ}r~s zxwuaMHm5I+a@8Bq^(sNyRo}n5W98ZlccpfgmNVFoco;*RND|aoIzuDm!!33FdkAFO z$gEMCiB_EI<`!(egwtyY)DLjcMxbZOdCgCvKi2nxU0*Ul8=+nkpU2SPG});*)<2BO zFuP{1RMj~2owA9bfvk-~4ZhfpSro88dok#EAqpcSk zZKOuT{j_4H%Xl&=>y)Pvfn{p$GPAl|*O?^&U+{Nk*I_6VQA@i`#4hs_wsZk`iQ%(P zK7qqoACq+gg2B6hAg!X=3H8@wJVs&m&Rq(AslcDkH)YTJ9D5h_mmoeN&*iW5$73KE zG z{+uV{A8VW8AL%xHt+$Z>ZAPg-NeS5@pcr1P^8Sam_ZP~)*8HBTFrmK0-^{asTS{)0(seSn=eH=!tW$XpbG?ZML97 zvLhsqG5{iT#o4(R@dxzSAC??$q?y4Z2G%#VYlRt@lWOvW^qxlmpx|d6Jfe6^a>PUh z%*`>V^LP75?F6eYj1<;$E|a3 zOYmJ`p&{LK4b9s~i-_mS+;Iqv>;%{SJ#d<8^6}hN?3boc|AZhuYOXO(9|yOg5Dh_` zFQJ%`1VOqT1_Ez}_+LG$Y?kZ0vLgoZJ{m z-1`$vt3=Wa&#F9#-V$ykl&`{kCSeTk+5PN;j%B3wgt9z@##Ci6GETqp}zknMDQfMgQ^juwR z^DV)-Gc%)ruIVC-j>y_ z=&nrkoPwB+h5+taU>0?vqM+59dBp?N)Mrp()`Lzc8McpVum7 z=dlTIQ$@sm7lOMI%soSt=JBr174tXM=4LKGYBYoj?SfjE`P;o>9L04>yVtcffv}?l z&rq+{bNtdn(vCAI&$}D61iG6CA9u{(T7qAugp~30N>+38%IX(m%W615ZEBgE%nIh< zzVM#8&3Mk%2qN*3gz7K)S00{WH;dF*Xy&;~cucT0Qil${+AGCuf~xJ=tW?>?klbaL zx5ROq`61<&d%OL)_$206U@`i#a+>@Lkuj%MJMeHvjvwQ8_Cp~EWS6efN1S9C@J#7A3FA8+P}NYQxK;HK_Vq2lW| zHa)B{uqe$8Z@)(G_9)6V$ok)TyPY;u-A@3mH@YC65si_&GY?SiJmH%zekpmGrbR~B zAU@YKTjGi5TY!Q85Gb%WAa-J|;K`({PPAxCVxuEEo9||F@a_wkl|~$O+*}ykL?~~2 z6G4l8;ed@n>u&NKi=L&uq26lK_h>tbHuHSFb?_{WvZbQp+`6Za+IcQw@DHSmT6yUM z)nQPK+p3KeCDiZYazxp}osG3Oz)Gjk<`Mjln?mi)C9SdZQX#UuQ(LMwVzVfhBy5(S z9f-O1R0_gaepU==C)~Kf$8!Fds;?=OQSH=VHOtGCih8+auX9GrmQKpPb;8JGiz_p8 z8yr+yD`j4(wWO6R@7`%M!+U5svRNwMCr3v9;~9>~jxk^$CqPdS5Cs5W03v5_BLDz@ zbebq!O6P3+uEAwZBhnEI*}w6*eW)HjbWo~`2pkrf^*Nz-P@bVyy-IlAproQp`s!pfPV&``S;A%uj+TH ztEstDZrqj$w^9xSgdj2@1PEwp0ceR(3j$mh0FDs5Afo$nal>!N;kvvxfCw`A02i0T zVO-gGAkci+1CPgXc6V(89--jfKpWjEz<@4;H$^U3x^6(l4j5peU2pkq?wqyFILTHo z3`Oqv-^>bInD=n55gUP}a+^r*9_Z`=3WPIa21p75kR6?z+y#jg2#!l2WC6m*{T*;x zo-u%YAG2#p8R1~H3?g710~dkUR?U!MxxP?g+zdmXN#;JF0~zyiZ*d@%a^tAa{yDPg z#iHnee=CX4p?$QJv%O`R439|!b>!S|Fj(QUj8;1lTgQ;PuL0!v#pkSmtR7_2ob5x> zFq6ZXuI{0<0vrqpTX7r*2{?#&0KLzgy)D{=tB&DbzcfzOJFqy6LJcq0 z#!Df<{=rP#6<080zZ@`JBbWnhUJujjFZdcBa32mH6jC!`>;$ps4q7%^7ExbV)GAFs z4JbBdU$C`Iw(Ww`5H-kx$B{WK=QT4KltcmV^vF`~4-YulwhfzKCL)6HM!D=ZHln7@ zWR?NUPK`)QxqWo^&CrS*MQioE8IfMv2E0&=gOrxwHq>jwW{J~^UnvHUv({sJ6gUV= zJ5P9}u=*j7&+fo;rLt8-hvbZL42o~r|J6oqeIw)uBV6wfNqKevL*3C=5^xjk!354E z!qgqu5D81Q$4w4%u*m`3IA`Z;8#Q(0?<{Z8bx;P)W!c1M`e`XvJr9U2>NMU+8%v#oQ>%UB2hz8A= z2VuqujH0H1qp|A6cjNrXgw=A7{PX--g~Fn18RmaqvLP?9jsQ^*2)l9MJICAY?+ zJDg`sZkCVdaw;4A3XfC+<-JA_dJ>nL*SCG}5jUF9G3Ij`@0+&_MlS-E3l}{ruC%YW1=Vw0VdZ*W^n3{(F z7}oNwVNjhx_N;)n(cF<|x?*)vK==yP9q?E$T}xCSIE0X|srW#^(7jLo+?ntJheiQH z&7bE3sJ2@v;4$)jX2KxS`iAf~yM&+TI44&^6d_C{m{Gr^lu`hRe3*PsX}7 zX>MdVRRL4_bs zh_|;;gimv)D2Lp7pqiMpaF&N2Qjpv%;*(Zq>D&(bHQ+F)L*I;OTj=8_1v^C)kZ!ND zRKIA_tVB)oMom!78|WO2u;bbd>2^S;EyKKATt0`aTdAMd$VQ(lND@R^y|b6Dm1RNjr}oEBOi1goJUslz^vB; zv^fK%J!^&-%=OUlh73L-e=;;IpBa_Cc%7ucqBp>JDT-JF9k_wrDm`k&wd3$pzc2yKYW z<7(M6fwd8T%?N~z>O;;&NAMJQX5+1Vo_|6{P~<>cLrvDEC-W=ecB6u1{KFL7(&Lps z=pqypgqmFDM3FR+&Ut(t;Q6FtRTczMC~F=0C(aYb6BEKgHxV46txKQ;oEh{X{l5T` z?8*AC9aKY!Z|S{*$>$6)K$MEXx9tUw?*i^ZTsD3S$_OgBW1NFQaRNA$N1osi2ReS) z=&?{6PGYP+^r%aaD`8&F5mmCZP9-SFSzwPnSErki^6RN*9G9ai|Ky6C6V2PE9=02x z7%p`6C3ENugZd)*rLpQw3H3%ee``Qrd2aD*E;;;Z9lN2fZlD}VT_=?Zi(EAI&_ZuTa+UPGL3}>xkNOR zxg^66>1ZG=MA0Wzu%dH{ipsXmoiz3G^95uufe~)vqB~TS6T(hS?7cn)k~m1ovs9f4 zz5-z1D%&tmA4sg*(^K5RF%y|_r0I4*OmUtl6T?W=uP_6F4W^P!5hCs3vN7;&7qx=6 zI8C{dvKyxSVPI1{rLDAYyo*#vB29<5>QsJ4-}E7EBo$V;H}W%h3{fU&N6y5y@)1B> z8RJ-vwoomZ`;g=??@`ZZ53RPOCOF((=7O~K1s5mk+R2HzsjGCP(J@t#-iL6>-|8EY zQKznbkqa&CJ47kSP-3S`Jb4`uvzov^Qy8w*+m-FYw429v3-d*es-7ad9ae>ej2>S) zA0^V>21&fQoJr~Z&N$;2@r4jOqgy23%|3xIS3N`X$cwiRc&{(7-y|0AlX(11M0V+G zCTq6VjBt>K_Q0GaB^HwIe5Kl@xt=tN(>i2QabO(8U@cPlWrlWOhW8)=*;-lDVk~dZ zP2`iWEjCJP2+PolEZdBGOX!J`7oDD&Ss|xCY4`u@iuNSQ zB&uB1MPS$g(Dl_7sz!oCxez5gf)Uew|LReXoQ`+t!N%ti81onZ(WnJJ|C zg2%nO&r!iNE1qmAB#sWJYTDfFK4jfDhjZ2!my8R3+y=EvrTq3L$CV5^sXaaSo1hM+ zx=vAMs*_yrYC*YOoM~V(lRvu%#*pglOrh`0^IWum162$a;ViU2vg#y#5hG$BRA2E5 znH`m85Up07^LwNkvkIhR=g_8FQ#%Z!HE@Dg%dkDU!nNx0xmq??mqwl0ocSpAOuXj! zg4V`o*9f>xyqqR!j*P~k0s(DpQ8-VS4dLjLRF0~4kWXo_ZDS6T_&RUgHp z(U)YnJ+m6{e~du8Yul@fnQwbF(9mrMVRW*td-sMbT%qJJ4jP2RxZ__!^ULE0++esxwt849z{5{N)uY}X28?9D9x%6&n`#Nr#T9XMtuK-TActkqrqxgc(J+m+rW*rN;$Hu4}$#Wy@o~F?p};g}n;AE6oZj$82M#CajNvf1o)}#K1bSB2gd6 zh=l|F6+nrVO@=UpYPR!li3{a+eb|klwvc@gJ;`Qv&@OEh+u!+Jux5(ZC()E&u`Hnw z`&OKEdbUe+*gjNYriawR zO$3Hq89ZJVq{&0vSXM-ok|)SUNLFy3kNqs{`)=uedgGN7JNok9Vn10NhaFd>Yj-H_ z0Znd8K%HiKlSE2bg$4D>9E{TcV>^-_T_tw%aQp`(e?xU*(1WV5;!vAOSr*3nn7lt> z0}DnN-A$j6=<-@X7xa}ut#8YR)4{`;44b*Bo2gw!sm>ooH?~$+RV4|e@2>BZvMSi9 zsEFgz>sTLMX$nQYXhz`j2k@r?C@ok=o>z4z@>Tmh z&X2wVWJHi=1Et1js@ABOO|-Il0xF`Ok5S>^;FYNwHbBeJ%E>2B0j@hdPe)m&jl!bctJRIXctJkhhG@1B zA!ZJ`k@`baj`HX;A1YFK9tbD#jO5$sk*eG5cMR4C{8{wpYB51el;FH#txZHfieoT8Wn9~KD?yxJWjsgl^d59$&~E1EvZC%or@wC3rMjyJ85IRA?N zesghkaq9j0r&!cL3>*nXiMmq`u$HDc$#wLsw6md(C!fHj6tvBDln{phi=joh|0FuI-}&j;HYMP`ZW?Vp8`PF;uz8GU_EE+?MS*?Aw3JF>6PW=dQ}{3yb)5~xNE<7awF*4*M%n)O zQ7IC15odm`nwlXw5;JzK-Y&VBB#acoftY|sWm)W`C@Krc+!@hWIG)JrxMZoqKqn!7 z-*r+ z5u5-kUbyD1kN3GJO7gn)P7wAo3lK4}RDF@;NRxwKWS910!uoX)oQaj4+F*8SfV_np zSKuIs)@B9T>D0WZ*$G(TM)i@ZhwdSV%7#=+9G+}RjXN#4{Td<-v6%&^GVHam@ zP9(BRV7m%3F6PiG@)}o?jep6W)Rr*HI*o<00TLV=D2!%Z<-tz#74AWJBmq%IZ+jNF*OD~#;P1AxV`>)a70O8(t2xp|2 zMls*Ya>ebiubK7obP3EM{XAjNI&wP#cMs7F{roo@+($wirY{*r!tBN|Zlk`UR^iCM zW5wxJd!(-?vESRisinR=Zwqu4+r+h^PfFNN1hF$9OFXJ(EZS{1c6cxHDN5y0`$-=? z-MvZ%A(ES)qpY#4+@Eb0|=c%uKMK?2I2`VY7VkVATP0sZq1f^=Lo(cxPTZ zzL~6wz``*_N?97Tm>fMB9}MvUc^;GcMvR2Qnn(~#R3hHa8&C~>c<8tHVWK(}lVfT?- zT~KB0zTmZ>&R5W{1`wUOp?Qo^%67vfAw1^Mn(!T$ltaVFhEp&~TT{;R>D&TMsh=iR z7fmzOjGMSO++@%$93w)Y#y;0WoP zNI!mN9-`A&;|{&oQbD4_s8I_%XtmXR?DoNvi|;U>@OD;>@`@QUM^@WyQO%?3fL4F| zYW1m^#$)}UA~SPazMTGag)7*xI+|FJW>PeNbs(Rm7;C)UUSd>>$ zo5fYd)XX_rl7YL)Ujb;tZ1X_&eCih3}E;7C=0Cc&E*f>DXF=P9ZBz1GwJ^^j2Er zwjn^-p;oeK12{MxD{?8L0wu#a6gkQ;)O@|3S;jTMlz%?_T^>x7j^rr z-xTR-HNX09Zm>HD)ixZocEye9MLeSYlN6-%N4~mpjRaAZ-p-?Mx{|Hms2-bhe5l~^j=@~ebJFtd-XJtDi?%XH{c~~R6~zkD687iNL5y*B zH^$0@#6ixE*m@Qv$mBR@y)#|{kCLcgkLwkLsZ7h*7pM~OQ>$?6% zTLOr2y=C-ARKdi$AK zq`u+0aQNzwtc;8p1wv`7%CBXrm2bPZB;is?booqQ1Cx$^e#c69mR`?Ai5DL=0y-ok%mf&QEQqwdmV*>*|%Hl7~ zaFrN1`@cVIQJR=AOjva>H|@z^iUT+cs*ky90JcJNVh)?>w#S(Zm@U_A*->~X|sQNT2$9VvinAaWBz8(;8yyTYECiK zL0$)}zWW0oND9`=+=;ryU}1wG2J{Q!Y|b(Jhig_h$dt!xqqhh*^hYmOfaDHYQzUTd z{gu;WCC`%59i6_`+2D5hcX1KJ`{}Eio)&Na%lJe5IcDT1{RCt9kY*l`Tj#+}Fd8G# ztd9ltkJc4`KhgIGm?FZ5W=XTVa(e_nzp?mqP|xwRkX0zwT9ZsC>i(&kJCg`Q^t3@6 zgn)D5nUzO23B{6eL(>??OP>xir@mYx{ZZ31r_yRt$)dDRi`Q5RX3!P{=+#|W3WUKW zE&z5)zUq4Y5kRkTg)T$_>$=vG%OU?6K{jZ>u`0$kBo>%b$V_R(Sg{BSYmqx49eY*K9PWSgh^ zM%N7`WJ=wPbf(+Tu@B^X6IUrKnzYh=>XtAKsTY(kWK&NJrA{Glx9=FF90AkFM@0>4 z=Og3?7wIagRj-MKkP@bZ#V3*bTzq&4Gxk*j79Z$@8b(=vGNaIfz2Bd5W^-fB%G{Wm zesT3POziDjwPG;CbWV8SEOY8iOnX$hf4dfrny=uhz(ao}^=e9p;`d>V?}J*fkYUEl z(&gN#+1Cj8wm%Q`Mypfb->&gi#N13$-#=HA-|l-c3f3#}G16w4YvX1397!1`;oCZg zQ)DYSGu1f0aUg}_>`duQU5Cd&I6kKAUgD#Bd0Q~0HnNdL^InBWs3DJ=b`Veu@9n&v z&uccn*trl0P;{QQ&mXpz$TyP9_QW~K4ue%QNtcymz%2>w?K)k?aNV1xVq3-<+9veT z>sQFku<VbSW z_boMnXfa4h2j2U_w!+z~+rW!e4lF>d{o9`z>)5_z0_%?BVaFXYjX~~Q-^Nhrn(BMK z)-6ZD8SL?O1?Buk%to!8N{PZcK{##`$6nqWa*CZFT2Yz1GGTUFDCtKZ zQtHx28qX3X68Nz6d*haa6+K8YX7?&}RE;7o<;4q29JqAb(S0z%=uV@fq?`(3lpTEs zz!@d#grJ6~FVqjjL4^|;RZ*9hx|sW)Kjt2pXbh!L|oVU#uX16&H@1%0Zle zy_gdAem`#H?SbTP|5|eA|Dj%ttCPHrVdO9GacOSOQ*{r&h$i3sXNV&0nPb>!rVhQE z?QxS|PKC?Qfjrz~`w+qQ0O7*QtD*P8yd4elmtFTi7BHJTykWCM209D{>;hnS#|dej z$msj+MItF;h33<3DXY<}m-E z$z!gz%4D?T0)+J@E>sN85aUCwTgI-td)h26^itp{cePc$+KUCY!}bLjMIA1k@c#1- zKMpM(ei!=!0v5z6HS0e7;svn^UJe`=xeEnUENtwoV$=*v>C1Uk#sQbVonxF~IG)dO zrLNG%TA~-rUptMZp{WoLFZ`=2k0NCMP_L-l!Knx!^Y3w3EY zvF84nQHnLsx9{P5@RMH65*_tz)dr{(8_1mh+BkbH9J1Th(S=`Esw<}T0P)?3OS@50 ziB26)CCJAt|3htTY(+wOvhEyq+KgZmGPy>gQ!c6tKMSibS|77GN6Hti^6X!Eklc;P zk{RBIduJXkJ6D0LWa3DnCsmj=Pda5Oytu2v@TP|GknS$!L|SOoY)G(nIH9tP-xaYb6N@bu5uA%TN}Lr^AGPav+xr~ItA68+|wp~q;L-F_|fgP2KJ+us4k6- ze_Z572SitKX|XS_w=cZV5l}B&$fDO(G^blGUhFKMY(D$A8Lf5to^e?lNG+Ys;mXJh zdw|vL$V7bnm_POCw(7BPC^%pc!(6T$dYUq6)NR&TR#j8j9tbyFFgPXk#4ZkP)~@oJ z&DTz=D2(fkWk?00C*y@ym2%}i;g?*mCvl`AuL9#cQf*qPmPbubRU03kwhyD{oE*j8 zVKx+^!trhK=W3dBCb&0`D+U;$C~#&gBudnXY<;3uaMGwv%Nk2+168}eB6v84!)ZoV zErJxfh|dgZ4zq(qAI|wz)NA6LDePsIliuEr19AvzSmy+sU7p?BK~(ADUT`4H@kOz! zjYygb$^OyGkI8;^^O{a+HgOGUnO>0RdsLiGs`mz{miU1yHsW8PvW|PC^DX(mQEi5c z<)??b*6J975?p;U)Shg6^xGvQ=F2X*6DKbeFSkY_@b#&@vK_?-Haf^%FC^WkSo1j8RxSEGO?P zM+5jF4d*VDz(Ie`#f4);?5p&4>3eQ8A}CZ(#q4nMoi<(rkt)`UdH5y|{B@@5;)(vj z$Ob{A-E5Wk-4B$P*P(fMuuORzgb}tSP;rZQw&BiY>Aj8*T$!MgPv8}=+7#?vC*OWzcQC|8bBLyTu__**`*AU!^_{}nw>$~w8v`AM?++g%`wbnghFrm)iGKY4 zDd*3v&SC)Z_aezXf2{%6@0T0!BEIy~EBrPd5VubYA3obL2jV(4L&rC&`$@&lh-c@H zKJ9BX;MtCIb_BEPC%K-*_#VAhm1P`P zM0A?Y>F{Ro*J>1?bJwnHVadh%bRrvSIXASLM3< zHlTsG+@%J}K>DIT`TDe&h<*RtsdWa}fv*awbY8*oi7kNyBGrIWA-knBoI}KM+_j#+?jXaT#DwRZ=ajO||7HQ5sQNLSQF)vluEIm&$Ca^E= zGQGW5H{D+cumT9{=_yeA8SE*SJ@18-v$E&y>UMvRN7TCUyGmM^;Y!!u@BX7RO9>0h z*6Z}wv-2=dxK-em-MR^lj3q&*Tst-x%c!}i({}K5zdG6@4QxtZdLwA=6qwH+X3u7j z+BpkWtU_0X1O)9Tc`~|f4;-+wgt9R%MitZLC*WLON44(j>by+q;2}~gCxvu^?F@r7 zWmMLEU0o)6mQ-Gg+6}12?#i6b_L>)6oT3{Kql|t{uV-%Mmb4PESML{{5=ps-E7;V_ z>I|OZO7XjOpH|IDxPr}i-;I_s2Zwns6F1;CYac&(cl z-BCmIj8smBwEq5(Zb4eQFO9gEqA5@8W%5e;6cooR#*#^Px+-rg}br6A&b?3 z%B8CyW~YzvchnFn&J{}FL({d38$FO!un_;C<6}CEz0~Mfln3jQk?*&I8qkaCd^kM7 zsUhD`VaK8*ADDV)U>Hx+hxm*i8f~$I{!yZ3Z+Qy%J{e`%KlI|hc;1OR! z_1&)PtCsa4-WpxruSWW~4Sbj4mTJIejjOPDT^ql8E;;1)o=q;|fWQgJQ+s2UpaHzg zg<_)B-Sp*^-*=F(K;S7GFkhYras78=$CY<_ffi(yj)qlxCyHnto!K-){yGu^=Lav# z$p95QD$lPzP*I@j99y(zJmhrfQ&_sv{dzL3{<`aAo-l8u;(D9J(QCZ%t|k|weke<| z2mMQ>p~lNf(dmqHZ?I}`gI+krlcLnhNme}JyU=KbW!8KV3p29I_M>>m{1U0@sAjko zSTeodoCn{$n5?;T^kGFsFX1w^!N!}Gu<1P^KUu_*zD8CEv|G#tEL*`I%2tVK7AJBH zi^z*}Nl1yJ%D%U-F)QOX^yAB7Y0Z?{ct!Ek`eKIMz)KKGHT>7ivjQ+D!RVZ&p!bz@LkJ3Pv^aRpP(w9~Cpdfs&D5tTrllNpuaH zEMS+H1KXV2-pew33A3_nQ>nl$Z}0pY>r2}D|2BiweIyDu5gr;baI3&zoUbYO z+R*RmNraZ9qg89x2W{_BmeSD`C2Nc(cJ?B;sU$FlXQC5$@I52KtFHEaZ)a?nO*0uR zdwnr1Vx)F-pKo>ViS|>p0D|gxO+>e=zk%P{S%%YB|8`hGY-rdvvI2X{o)5Y>knI3_ zgN|i0VN}|r9IZ?Qd2ZQtuT4(bB$|J0TEqvK#=%y3-n!X_q89b>eBCl;7jfD?A26}+ zKA*}ueu#azvfEeuVLxOlLa`DrAdeXNw9< z*u<{{j4K09W$Au-XH(X)d_I?i?+bRyqSgMS;Ak;Ev&t|N)!x-LsLhtAux~=jYrTL9 zpJ7?clRRMvCX8YXF`%1sbS0k`)Z$|5B?-ujs=;J*{Dg)6MrT4sYM?cyQ{;ORy`MqZ4O!RoH2Y~F;6 zSCZ^?@G+A2FFge7dF`x?`oQKr&1fa1ES|2%12Qxk18QB9I!1ZYOTrM2fUX{S3p(-L zNnH~;R{q?s!T+U##=rpEQTDlu0n!V0H)L-iPrCRdI%{Sl8NW&34|9Zi5G-36R7%ji z~59VIiS8G5wG5~R!a6qB1(RKiu1{y>oUROvm zqkMVbWQ3Rf0M2+fY(M}jAbN^A1^29&_$Ve8$hRLu*b~MfLC6e?^hRx zd}tKrk^`Kg(Xu*v<7rWXbZjxT7@0w;XxNFdm}FmSG5)9H+j(TP*2&HX8%{h%O899Y zW<5;RWiTo{UuU*u4+P!^zg=*7T}hZKyl-t88a9g#h0*U6{-(s$9J4O$IgN%-pVM zas*iOV))l$wtQ|C|I49kai+Z3J9}*X&#(Fb7+CMMf9jjq?+pawecPMj#a<{Drw@nP zt*wy+@%!%uJd6S0#R#ol@QqS6mPBFc5&KUgy@hC0FkRDJ9J%Be1Q5VV9DB_a6zl*# zK*7H@>dKHiy}<~CNM~dAH*HtP5bqom@0)a3-)rb4Lmdw|XFMQd zmCJzB zf)Ud&Tsj<+;)iD{Qb1ROLM2-z=SZGO%&2Dy;wAAvlSfFYu2v`jpK8&whzzCX5Pg|% zw836ac0W7}v?1GQ!sEe%^utxvL+y#6Zb- zgOs@b^HB4}1h&C)0^49Lj+ha}^3S-+p}vDoXl5B=xM6Q7`2E4UI=>W;$mYSXSPi%d z0@g-;JmlZRA+Zks0j%V@vH__T=Io~K214Z90C4bOxr`Y{zwb}oL$v-?I6Bq>pd5A0 zHDU%LFIOh#NO*}`Pq?)VE3{8&l{Y>3Q?8EnX8`Fk_rRW~1}huKNDY)Pj!1E4H#n`2 zDz}n*Q>Hhvh7TmhWze@?vG>G*@e78jZDm>7&@Y*tJf9bYgQmNlZ-!Z;Et_V(5}X&M z12$cQXb>LG4b)o8*czrwwb#ok!}IL$MgFreg_k;itF%2zCM;rr1P$hD8 z;rXPk)26?<$MluoV7aM~vsgd>Kg55p_Nz>Y>JhkbQ(GB$BbO8zwAYcoQ^!HW zz3KK`Zaqmoz2T^U-b=Oj@EuRF`xrYE^>)^O+1WlXDSI3`COa2m^pElOfO^|-q>oNy z*QWZb9VRmt2;*bFA&~7P!Ca!3yAYPhNK$j=z|QiEOkCD){zU#y9~>%g?`e z#XX(cT&6w$lR(@b6+n6?BiDBlfC}Dl6{=8Af^wg8=#hGI@Dj zVZRy_WrOs&Y@`axn&B|p#eJ|MTZaCFOCS)qX;%*_;z;CDx^M$w=>w32{0R{M5uhj8 zdQZJQS?J1A{br7Q{H~ipCp?GvzamMxuaZi0RY-yPVc~YCAhSRJwKXPvdhwzg7Wj#& zqIXw-oT^VI=gdESC-?3qRZ@1BW!4^Y9Q93=g0lbuyu7a`ZOrj%|3T^@a+rFOhHSEM zPmzYQ**coWj;(NH5TmOsr=cZdY|%*!giGDRR6L!;lBZAw@V615NEkcrcBg!?3HQr> ziAew&3uc!t;sKoP$>dd{lOZxyW^iDzRlv_L23@>l^Kn7zZH=ITesAg$)ks3HXoOYG zJ$YH_CVZ{}Pa4dk7jX(fii7#WKCGylK!wx-wfxjQ-=&sP-I;W04!_(9owD@x1yB!! z4{>&fLD+M*^TGY`R6_-;o5Y#D%HGpe7d?~m6U;olZfb7|I1<#M|g(1peDjXCR=39ZD3~rS70e-URxz;LaQUC9Op9 zlA+sK(Rwpqb$Gs<7o!Hk3M0GC(7LdeVQSn)aH(g2?I1yU0C=ELEfa|Pk&ydqtSv9| zu1mt}LpJ#f%HBIY;#|(8tr@nG)`7Yq+(ok4k9MH= z0>E3Bxaws;t=)Ai&n&;?qRf1~4Boz%PFAvB;>abbKDkLn>PE z=!Y~q@(;K}3Pzl7(+2{Cuk*GaDGD?r+yzyEkQ%6*GMZ;Mzd*1 z*ZDPxVWOw^c=44HpjSe|PVu$G0_Rd6(CIOurYfv8*Tv~#M@O>TxTTO%Ko(yLx2x^H z&*kgn0bnhMy=w-*t9PFK{I!Kltd{bB_%`mVRr?=>*(~675)qE;74xEDr@ip}LP(0| z&4`u0Jw#T+f7v;j%}8L#K^&k|NUul4?c~;yLq+(-IFN#?gH+izK^!TID~0vvUKQ3E z>%TUuNmW{GGhNmvyrhH?xl6DKZ*9m6Skq;csXUo4MlGcr*wi$x*nI*U5E&qz3}6_- zpvf3jE6PZd(<(oTkBxo&@LxM zz#5;rGjb^ZSS4omD&XMOo_y<_6{8Qt|;gf>t~^ADb^_!of+ z2{V7RI3)t6Dp;juiY0Sb=rm!W4pCyRPoWzLR>Z`h0m5Bx7=<&Jc2u2lFYYHq!{Gxj z;(i(Knp#YdQpg{cjoO~y#4v`c6Kpiz@%*A^0K3w*|gBwg` zIr*erJl4TDJV5M_#FU~m1S%5L1guVd$j@OkFk%oY_TFpZ8}5JYUDV^=)onP5#TP-7 z-PO<1vaC3{hn)i|i+9Uq25%yk$InC!VT5C){5MV}k{S9Vuf{^GHcU9(@;^U%*g5S_ zk3YOGGmO7n|Eg^nuurosY7r%j4mSGrz0q`mE$=34(9?3@;nEom70x4BWOfSim)qTZ z^9^rjvdzYOeyLu1HZM|}2mc|_s;{M0akLsC!N}~Vw*+OMUyI2)P?$c?qrU}GeRTe9 zV%d1>a99#{dzB=2Irut1rNX`U>;4`d8?NQOofG4TK!`VEyAq}RC$P@96a>{vV-H|nf^OA z!C9#OAZvR#bolWl>UhOyHp%+({&%xXI6`3oHIYVbzYOq*2mJ?tq#ql5e|wotMpBTL zYJ~pKlVuocK&Vx3Sg(Du{u@w@Af#vfbq7Zr_tKiQ+N%SMj1Q&o<>Y0;mm2gd=DdFq zo4^njlNtk#eDA+F3l4+DcT!@IMGFYFu2b@io~1Muc=dk2&RMokORUk~e5+Om%{#hX z=&GSA=bJn10D2e3YO68}lX!l%V zo&`VIPrWVkCI8fSzkGT0!UI;I!e-zB#Xq?a5zXAr`N^{%zQ8Q14qgV#f(_FF1cV8( z%l+Ot1J9XIg5ey1aXxD~2HCV3$B!tRRFa{tYB;)J zCzfK_h6;)m>dCOYs&Vn@)|21>@jKesA7i!IT44-Bzx_=<+`z%S#0hbEe%fOkf1CE! z$LQ13fY3(#w{swEy4SaVK9vZQZARc+Qr=E>lUh^nrUeryxBA;pVAEE<%5TO6lwJsE zEKnmf(m&wchnV~pg+W(rxcjhui-N?SG;{L3uQL-_t4 zFt{ABaL2||;`eFC=>#b+Z5U0pQ7tYEzsAQl%gDol>)$6V5$MVbBOnyB`@g`*&X+0A zLAzuw5m#KRi&l;s8Ue}ctLg-jFnS^PT&H2)+l-LgTp^V2d>y4^d&I{uTqF}dq^>5=a`1yvTSf(#oq~{@_ZUK zQjdYgSFSjgJYc1=`Ss?0LW91;(EDR2CtDuo8+KII`bv#%H}M7{iDeW*g43mhEu z&YalEqnH6Ez5jtMLqE)tXFIV;M)-USu}6}=Bkq_n`+jUVfkzJN$uQFux#xmBmwri9 z1Dx0NnDiIq3Fb@?8Et%K-mJs6&(cc<9v@8#VBsg;g_ZB(X=bsq#@f*NNS1Ww$p8q= zgv-t+Nw^*hfbb;7qM*;e1kyuCAsIu`i8)XYX_3Z@e_>Wj5mO#U#O9e ziyPm67^0yN8PsJ5eST)e^J;)slje&uQ~<|7m}+A_Iuy_w!J)U&G_Wk|5DtVi8$2`V z-sNQwCSjAMcP{(%*t;|p4_7y=1%`biwQ@`J~)i zh;8M6McHx4U4JlTuAzPC(67-(aOF929bFD4v{DGcNo<@bFmRz^4Zuf!7XEy<>PHT< zgB~OYN;|S6eG-Z7+Un@iN#T#Ox1cd6Ju0yaw)!6?S)(P{WDOs+;F)^eT|ZNFgOuQZ>s+Xt*)Es7TO7ix6Z`ZNR2Fk-G#;qn7o|&w z%-Y_G|HslV@LIuF;GIm>j^`tcr-3)?4=l5H`~VCPm}3vd-0`*-BTEX-8E-zvX6&hv zY=p@R+dLCU7W^6_SQQf@Bp}>lj~KR6ks`Nw0m5MT`i1K5f#R3v^N!X$R(6I+Kwv?f ziZ^1$eA&atLEaa-UjsaHufoq)wldCx2QVKvGT70YEFrNO;^Tt#qTnHT)p26D^pIJi zhT%b4ANs?E#o#gL%$e_R|6Y#3E!7FSjs1Ytb3t$fG%>!Stlv6I{JAhu=D_GR%eNLs z;P~FsTb3B%jW0lcR^Cr^MNUk9{8z8|i{04$-Ou-p(PS%|X%H5gfa0E;8&1r)0zw!eHCCHte`s(uxrPB2( znE;WUp`99|fF_=_Yzn4$TTGcZH=I-RbFDeMblN5km^5?y&<>^yby zOv1PoB~DB}7!y-obC)wV$IPcPx!DlKW##6=^}6D4gRySAm8y?&0Zo}VVtxMqF>Gv% zW?v^2qyaJ$>C7q_C#9VRagL+RxY(w%CQEi(!kIPijg_0BoEG!=#y?+Xm$w;e2rU~& zv*tM$m>JjD^b%TcXJt@8Duk1PbKf@G^ZCBZ_NaQ&7{nKjE9WCM1&Y#r2e|h z{0h&6NHm+Vj@*psTDZVG%uCKK5Ph(lOc*M+X%d4bxU5#Te1<_{GZ_Y>Mux0{SjTNQgg5eTgl7|Ts|xR`}LCg?sTAP3jH@KL0JOj5^K zbjXp}ZjMhbDl>X{7lp$mkhk-+u)2>zmYOjCs9^LTt?@{Gqmw_=yz zNk=+Vg_;gEK*8izIe@TRw-j;1Jw4fdFSqpi3S>EIC1SJBfL9ObaWP-~OT> z0qTG<_PVw-Hl7X~{CU^H&(aNF%Ps|qw6Q{X2G4Moz*xojUD#gYdYC-vjAtpuD|nNh zx(1Skx#z;^JDk#|;QokkWJ%NDZ?Iz>AF91>_-b6H#k!vX@W*G?gUA1jjy=vZnTB%w z&om5%8vpB=jwDgVq(g1J20g@4N?q8eULP=>V~O9OaDt%XN&-_2)+48}4q%whfRh6| z07E;KxE%QJ9waD9>V%<3p8=c!n<@Vtpbeoz2B-I7Tz33-vk;EawguOw8Yp`0yi30*RaOuzmmt790_ z1G=Iw%-qXhA3Fn);K~cKxc?k>U0^7+@4zDO)I2@Dv-7f1r`uySU?7$$q~QISr6k?} z$R6?p(7+7^5DEqZKYtZ4xO=9Dim^xy=rM%?v^RI77~ZwmZ$5;)j!*u5lRL$NNa@bQ zRulPVc`ubrG^{mrt4r~a4<4xuNMFu$+pxgxXOk?@a-D{566=rV4qGR3jlig1%dU6? zMT(mPK0O4{B@d{$K&p6+{(0L2MEv%KI>4^tlExAo*i+v2u9gIVY9jQPr>1ayq&B5?rC|w{ zlngkI0qMs^qc9Z+RS97^|HX!HkXK6NaHS9ae)S6Sy|~>`7wMs%7p)_Os5WVwc!s0o z1Y?pcf!sU`SYvE4PYkNIGZO*M;*`#X#FyzTSqh=&ew*=51uEl|yiIUy{Yi^t>>vH| zDvB4spog&qTLt7i5F9}^Tk_VKD8aXQ@4qdA6A{oNAM8BGYo&S?GxN-kDe_ef_PKDk zv+&%Hmv>e0con`uMq{BlN|2PPJkz7pw-!(1VQQpT^h7OA+#Ye$!#}PX>&kgc|3SU5 zR;X4ChAN}ZsUxWD33J*oSFidr|3qyLuv?f4^Q6dyuf)kF6+UAiK!Cu?AI5%SJd)ni z;7v)#7`MW{R9Xu3s&?H(W60>J`el5DRIsPiBLj>FIZ9YNUOhc&d~A5YWRrEGjR*5I zi-E>t=&?sPOir3ASBg(&0O;H1%nD$@DFG%iZq$|Bp9>Y(>B@4*sBmGUB*}G;r#mxvn|9>LDRNOk6ubS!p|2~=NR=>>bMb^(=uyx*xy_uI3_HcbchZjLpKBGO-t@)9< zehA-Na&_q}yQzaI>3t7=oBL1NCydaV(8iL=YVU>0|3=WW1=3GcIZ`|km>8BU%||XL zX6y@rYHqmzhs%^Gq7kponN^>i&=#-2?Jm$wJ@tgpnk!@*vO3nDm+>4Y%MyvdB%1cF z-(XHA9Q})NmMDCRzdJVYziuM;b@)cEK-SX>$DZ#lp_-0ie!OLL6d!oqdi5)#NEP$M zolueer^M#l!C6v!b-qQLPGuesUMGABTF%KhMhF$OHQX~7PkN0QmfYH64kpE{+Ybh{ zACkw^{zEnd>L0!(be+X0qiz@z|KmZ{|)lS@$Y$R-4T&QO;u@)UQbY z%Sv`EW-K)+59t+~rHg7+{vQ*pg^|Mc{!{e&=JAJxt{Mr*+ufbEzq8IB=w{2hYGWW& z90ukmk5|(lRN&9VXpUx1TMSjN>9KIFK<{i)AJ_GavB|EKP7MQO6dWZc}nS zRVRkBFjC~e=&md}ru$&IG&=o|n24Q9l#ppS^a#9{lx^?`+lWtB`jm^Y0XH!l zoi;=;(#kW*dq(~5aTlY^!uxqb8Am+G|JEL{?%gihItJNv^d8S*dk=)deK0KI&j+Im-$o^s7(2-4Q;* z_N%{#`Ogps{|LWRgu4jpqa_Mft_m*ZhxYW!f;`lFsuQe2sv4HpoI|lCvWlMmb1BbD z6&9G*p8skdy|L<7e|;vw2KIwh1=mE$JnP!#V9C^&JZ=QEya{2PpR)76ATDZF9~QNP zOLpUF_u=>7d!0 z#a_E3elV%z`HoOLvGT)By5+Ov^QiiH>}j2NC)L3n)PaU?6R?##V@$J0zm}^ljrqC* zJC3c_HLLDYxFdM!+JAlnPFj7)#Jer3sDNRx;X0Ynn6PpvT`BcPnQ&b&r7FuTTC=Ot znNV4=dq3U90GPd^XzWraIjD^z0uU%^DY(hpQd=@Z)W&?KBK4npc~n$SawPZM$Y0kK zL1#xD3QAoQC=5)X2=T>Yy`dg?iCXAo({$iHj>Fge3AkO=!)%b~%wjS3^jd7H7d-)y zfz|e^s_J^N>jJOdiZ6F`zEXQ6dg*!c{v+P@M=J3COy2)UBCR8X*ZS*Er786$%{N`{ zp{}UIo?|;*6|4gB5FiHtRaF2`QUEm~00000)J$Ei^?F}fth8#=+U_jX+q}*C&8oHi zEJ|(vw*72w|8LS-PS-k}=yXmm1e_jt1Qb+M;uPTYA|N0jMR^oKR8RrH$WR)Q03ahE z7kB;j0U8(b>&0j36SMRrbBVa#X}Lp@(=(-1E>NlttpdKFby0_ZS3>>8=cQqpJFO^YGvvMJ0=;~xNq1^|d?fJg`cZWw8t z+}&+=Xy^qPS(apmipi>_E_bC;R1;~VQL2^s(!c+IIMVoW6a3@T3i}8s`5BnTbsA>^ zVKP93OzlN{^j*6f3)}a(+SiKC_rVAF5%g$IC^VQL2Wt-07xu?gPqenrJR1T1uuo90 zP}r5PnNZKnJiH)5ghILI>k`Nu>a+I{II z#M?UsfA71Fo>l)WS?v7u7z&@W+2c7})AoG<8k%3j#bSaLseWV_;)!x}55Ji`*+v{= z#4)cnJU(h$%-YbzZPS7N?)?0VVD&8f_dGI<{v;Gjz5D7h@(O=_VR$s@JDX=|TtK}BZk4D{D+@lp#ZeexL0_9NKMDKt;&^z>Eq!^)s5PCEg%CGH5w zmPkL1ce&;?%`5p|*v{wKq!;?%S{VOZe~LGx=%{xuXYb+L_gDHgv`1db zdjdf}?-ul|gPC?IQ6BLYl1t_D^Q#Hc9Q^JRH=U2Xw5gf54cs*3ao&nRpg%y6KA?Y! z*7tN8EK*%7WNvA0$vQ(7T*^M#Z;-K^2F`Xye^ynrQ3}ibNPYglL|L4Ir;Ck#%F{L_ z#-hd=FTY_$1ny0l*2`f&j*Oyj|G7mO6RX5a^tDTWgzEav`c|P&-n@5$S&>FjGW#OC z{>R!|unU#(k)w*@j?FV7RQc8^%W^#?sw{^)OB zud%N?ptfe;;(DX1S;iN}9_95{KZF4T`4{CA_o&t9M&++`EvrA=JQ{|99=@*WnoXKo zo0uybU8i*`UBB~l#%9Jw=GL!dOWr-pv`^6fU%14)AC_*_vMR+Pm?u7D_$Sq+?4IdL zTKOHl;->w4Gif1#}a7V=h>cBcB-#$t z+#d{a?2M!Hcc1fy>65X+s@oHXc|?0Z8IB)w9NuYYW@&9};~D@}$%-;9!J?UW@N41A z@Owf1DYonO8)8-i_sDoD_ppFfF<$dBwhL&Zfc8b-y79j&6(om-BS^ zF|dO5Q#k;|KI2~_IMvc(5A$Wr={Ci$q-b)e+WzB`0(mBe0~;;V(W|T^obkQijiB^x zRbO479eW|x>{#pg)=@OYjxWJ=ysGPqGh^0abLPKl8bxiixBbF5?EUw-CQ_Pr_I0dg zX0h!rP(||ma&k^4`rr0}{&giB^|8hNA?K1t?<39ej@*KQ&E@{}_eGz$rzwy6|M6?^ z2xaAd!jdq>*ZTwg?NV){HD&F#>H+p z0iGbgzGCf{KGpo2|4%Z9GO-}^UF!LbjT~wJLH+m0$8-N881|JVS~6z>fi{4G?A9z+ zx?cKK>yY(3EetwGg|NYpL)#0eXhm2#twx8}lkDMO{weWs=K48YEY5rx1?*MPjD2;` zSI7TBwd;=a-e*tk&d)23=d4G1)RZK@7^n1A{)_*#vUbY#C{r6V{UB))Z?wNbVLR5C zjGzAGB0UmY{HmKdaGCPDf5%)^S;uGDt*q5-+$mg*=}lX!ktTC1L!pk*w-TAp` zj&YwrM6$O0-($==pmkE~s@vK)+S0joY`OnthCTQGL6a`_%cXy8pDwn8HE~Hz%vwg0 zyDy-MA@zyv>{>r>}m+{*#G28aMoXOzAt@^f_K{L>)fRK6!lRT2X>FB z)8B4}BG56O+0Hr+ji8C%^W)T}*&0~)hcm~l&m8XYw)oD^sGJ`U6} z{Ts;GUl#gcJ@iyIS(}7hKaJ;e{!MzU4f%)2@RO@{1=N{|mRMxH1(XLxa{4J#PBFcI zBkN|rX3(=fT5j4vw0imk`h~vwoZom>!m>1C3E~|PN2^(pvU}=Fowpk6cM5(QuKtNn zm4&RYBl|QPne~;WvZARbfxC-rCboF|sE?!})54+l#_Qa5dx$o+#}D+{__%jp7W??T zmQ!C)GBmWYC6;$ZZE#I-{gFylCu{-s9u4~f0KMO(zYE~P>7O)>#8FgH%$HA|9JIdV?sNs{mh1pPBw})?_>e=tmJWPTJ%!lxX^+=0z`-6zyUxbxfxuWjHaHW-YOM-Q=AsKe(aTJ~{5K zi-J>iT;j#1r+z~A5bQABSi{Tw81XOK{ix%|d0uNDrvBY^R0-*RYwD`YDj5QNNh;9r z3$05pU#{gl#J|n;sbiP*x2R~cTiH>#j^>IB8)d}wT7fM9)KP~#R%BEdA~vb^Bza%rlv{?vfLI5qcT8Uc``F!SQ?q7m*5SY}AW-^iDz@utWhD^&XukEQ^! zse_3!hc)4W?TUQ%O?77<^N=QWCt>uUC)JpHx8rB&vG0dM;eRO$L+{?$cT1)uS4rHZK6+1!+7 zEo;=djM@X5-RFEvE8!YK^SfD0J`L^Qr1;#OMy%ssGfW{a*sd_16yuIrjNq>DmQB$+ zngy301$BA6~+aTax9v^v2of~?8E;z zZS-{FTCvhy!F4oelF=UwLq|5ZHEE5i=~nT8TdkU&6RoL{QCGZZ)vRRDqi5ibk}avH z3ZVyYTsgXCw0cJQSblPgX`&sUzy)*@v~VI#IPEffxp^KE^iALP@4j z&@~448GB+r15^*+JWLR-iMHAfF{L4@4!U1>6SjvInrBT^e7b$5@OuG$!qMA81+0U( zHUiO?s*&kO0MkrCyOn+TI#W7FI@ILk=%uA!mvT`MrEK{{0DNUke#Uy-^+d0*fu{fs zqjk~MQS=|b5jnv#)CB2sq)sYV3SXt%-0b6&j1ll6JYkO={~AzTC~Y9T1Zunkx2H6D79WpJS<(Z z*tA8TU_23e$Jr?t)Wt!fJPT}S>LZwL!SN2VjaP9G5mp?i}69 zP~XJyR98pn4wG~YuykHO3iRTd$WFJSj+lY+%bT*t4sD_G7@~5f55;%RX>xxz(r6k* zKo-JvHw{&&SYFdKB``@4Ys#{+89Sj6#&mIC->4ci+py-yHPtqCWMV+>Bc(PkL=SJb)YcwV-s2H) zvJD48M;_KWcFQDW_1vAY6Y=0R1MrV?%}OmHR|DlHDVOjyr18|dDsGxO^WSx(b6oO7 zJGAV)@-=^D1CaYqHUQ>71`HR+&U>}DdK*7y9Hyyp5vx1q)YiBx^WN#f=4EVSc_O^J z6~|-8_h?kBwzocv(s{(z?d>C5d zYPQDLBO6)V$F9`M>7{)GG$yCy9~Tlzf%(oRD=VDi(QY4PWHRZUJA-{Dg>S7NB~I!2 zN5fbSED1+`$!2y6oi!xwc&x%Xh`ptS z0EM_rnD!wQJBLhXtPMbnYjqsNtdmxiLDQVjWa(TH^YGf>*+e_IFbqlThNKXjKNYFi z?ywoo{0#oFdhDBwr!TGno|09g53Zw9c7cwh#3_mAVnyjt^*9e7GXxRDblyY5nsyGY zFdFZ0i7~k*&O0GoN9C)Q=hj-dB`#6!ZI?ZKPX!SV$=33)7R4UkoU^rYlGd< zGV2Kubd*Ebs#2n1sMnxzShq^<+=0Xa+_}K8fIC|DyNC*LX;v|mOWbJvzJ5U2g}@kc zkk+$#i5jhXGK-<9$1>G^NIK)Uxw+p()!_j8AsGL7heC5hxBJgp zVzulN=3y5{bSRuWu!;|^OXM(ngY=$@DN?MSQ3jBa?%0S~u%a=&?H$(xI*(54y0hjE z4-zTcrEUnG_MWq$E)G?>8MUa(Vw!9vw}GFG>yozj$PKZUqqh%bHk!n!%+^dFx|gjE zTXs9_!q#V#b_q*r=4=$3xIIK?6tyRC31~c_E~VO$a6+Iw>uS)QCAhLkwy_w{R|c*c z&N|eWE!t)&vZyK38pe;z7erSUeDPu4TFl!ke8C!SiIu zTH9*ffqFGcF64(WM2YyhLM(Jo$R6B8+m2~NBpS&P9m(}e z?|HHTn(lH5jd+ejGPkY8ug&4YV&=H*ayPdq4&A@7dL}4@!`p{{`d2i74dzQGW&PXy zeik9><&c9jF}yaU8Q{dE6^i%OAd?(r#{g7o2@w#thtDl~MPR$Pg98*Ar-jod%kN=P zv5T`A3aRkkMi@6PH0G1bkqLTF@e`_UvUvF3#T&tuLI{2@V-8Cfg_Zb}egKE5T;>M7 z#eq8d=mChw1cAL!T64~yV|e@Zc*@|Z3m(}!`vNp0kzOAp*K<6m`srT zM&Ly-ZkIE`44I=DDbaoTLQjG$Eg_Civb3p>X?ngr8H3hs#1VWapwP#O#>N!<&oYmS z3e-kPn^qvWj3MoQfOjT>Im!AI-vMcdrr;j-WG>XNK>?aze@QH+7Y6S~eA6%wVVB}* z$eS{HM;h1dhv+7*Va_)x*`V!Fil`ucgxkc_e`kmfelA9}#~V5u*pzH1yMf6QIC4+A z#}cI4@NH9C%^(J|Gi8e;NG1o7hS@rDqrYG;G#V^D?~DuIuw<-^oeUU}HjN*SHBKp! z!H7ZGjGUS>cZ&wMGP1@lY>-Cb3?oaXV#oLn6G=#(ez%3gQ-F{=)~pd8mjX!&TBhW=|W@`u9P0B73+wI z9@tBqU{<70w+0J2iRvW%(~v;_Ffy`g^tkQA#;@F$@MT+Ths*+!VmnSNkL_3E2(_ zyN4DUt?okW|K#Xh2; zugn1K*v*MF_b+Z{DKlZJ+;b_sDx#Pm?H&gUumPxVrX1 zIIIkkHQXvek37NSY$Pe*M*^y$!nB;Fz=NEV?K@OlptGXypH6njy|86ug`FElANzJ^ zWRW(L4+0pelsoQ8JR=kjHZ@FE7fQ>Voy_{um!A_TA<<}3L=TK17Qw1b*KsJVHEwn^ zTv~fB`^70@uu&f-A<2W!5p8o$EQ&t-hZxC0#H2p-g<#SDt#b4sFN6#JJ|heUY2fm| zO)?BWu;BQ&E~=nbiw0Gktsqs=Lv>9UrTK4??XimTxh3g23SxOSO@)-0b%SlILH9*t zk!3gmQ3GWj3w8(B*Pu44Br+&k+UP2->yNq1`w!%5m48)|wZ=6esu|b=p67su3{M5Tt;QZ1!%zVOx!1Xh)u5Bxh*NHI|EXkd8wqK(qZv1f_vFZd>z8Aiees)o%r5VJlLQc zLh?eW!pZTQ3WA5Z2hiOfs>tj+U5yPD3?Mf_G81}~!uU)CqH}Ci&OOs1H;v&x*F0R` zLU_Qj2hcPcDUZ@qYJyfRUAr2RY}Y~(wj4@&ntJerWt^Xn&GLgtU{eRwk&N+(JQwbi z-9j8Jl_3D!-k6eR*qCfMx&nC{yQ-s|ld~EsI$)B++iHJc2W@;woRerelRG^XiI#D& zWdd%-A`s)YMnU5hMKJ}ZO+ZdiRTl@G7>NfiWVmv=SRU$Zq5H*Zo+gAIJ!=CZ+LD}? zway|+`E{@%#l@0XKbdDvhUIL?{NZX%wNdM?jw+d?Xhadm`Zh11=a*9hKZzw#Y%|!l9 z2B{Ll1T#Fp$r-!U$VZ`W8ry8t!AFt>Owea6>Fov)@Y5b`iQ4I?YVdud&K{LWX1lH+8ld*bh}Eb~Fokn(!nl%1ZTg_jIE6=>u5OM| z9;8VSYMDpe>N+CdB3sOn@->Rv;JHaXVkQ8UMQo)^4SB4nVJq}R^d4bng=hgT2J)9` z>@k8j#Z2HU1#qQI!`9C=!Ai?93{0u~UaIKxMQNo>34T-AUnzjX309C(LIK_zAO+Gv z{~HS$jRyWD;)w}iUW^X<;KoU@5Cp&kBE{DbYet)fS`fI)5P$zYOm~evWN1U?H7h(6 z$*4zP7$pHc3MFmu2RS3GRS|YKm1WDdqV8}1E}m&3_$y5hq0C6lbAu|8nenQjFgA1cP(tTF|pYH zK7>oIO%uEgu9IBl%EW=t47pAvDt$yHQ$yy1WsBHsg{7ts<_qGG(->XCi=V(r5F@VL zbp~Hkqx{GCU7Mu|e@%OY_7McAXyCeEh&xdYfd=I#Iq-Gzzl&i5lMIh)2Y;+0C{X|& zf;FbnZRd~_pRlXk}j~112e9RL_f#q)e z!F55kOOb}lGPs#M@=4)=Tg42pDwoxQB&{1>Iipl?@Eqn{&jVGHkHS6_He{y?-E^{5 zvj)p9Ixe&afg(Cs*M`f&wgy8*$#OO&*D`^_cNFsy zGoeJ#1m5txP-s%wsXUj3NN%4eJ+R`^nCSURdVi60W6an!U6dj{M^L-Z7J}>bQ+SQE z97B#5mt_W+wWJp$c7*a$vBOZ^qPO{2tyfRejfF0vOn_h$Y$W8tV=`CKkM!B|N_ zLy%`@J4i7^)$F?=sql-~=$?MZvWt=@ndN?z#V`1hU2q&k+2xE$Z=^Xea#IBas=f@^ zBzZV`e`Nmjz1lRske1T3X6$_COm&MqEY zVxv7C$cVx4&Y^-o-zFEoyR%W`Ym0r@Q0FxgIu9dg{QYL|}{s za4ix{{X85G4`Hu%q6{$RW#PB3={-=^i%$7~4*4URxAJY@Mire7> zZE%NE%N%saO(pgl4(}ur=x(n;KqcMcjZtKI%3$x}mSbj%^4eCcm4UYR`*#fWE6Nm8 zw{{QSXTc1ETEpW2D|QDMfcDS!d+t}-q8-mne~Vx4p1q6{hdpG1mGkWN;Sep?qjbn%iAzak=*`g%7!kSjQ?dM+c|AqLelw4ak8CaXu`2RZLsMpFR3$7-VM zO~V8747qkfJVV%y$%HU^BlFOL!&8KV>yFi>Fs~P857Rik#Cw3FkVV!)DJ$)fw8&I` z&(Iw;yL%V;5W^*lq(xBJk$Hn;7{aq-i>(jARFK)bNH36qc#PGkT}kw6K9n*@48rz3tZ6Js5=YeYW%h;|t~R0bg^n4+`61Hm zm9PNhbQX@qeeIt1dQ(5)EMKEnPf4Y`gYnuJ;uDv3XD;#?cQvu9Mg5qQBu3xBaVQk- zHWC#$V7rw{7HK8J^bN)T?Tx|KkBLRzB~c}l*x5?lcQJo$6A*nw^vIf6%OFDdwzMAE zXStO^0xUs2ezytsu)V~&oB%RM)eX>Rw1phPTGHG2K_6i+GvFN-0U<44b-aWplZV+N z(sqxZbm+>3fRypmO5PiGbTBZmqo5kd=F@9;h&( zmvZ;6sKzkD+;=imUN=-~=xw)6{+}`b@0ik=jjD;jz!5jmFxH4UHz95jo|K))e|A3_ zM;hk$XrzI63l3=I$T1|r_l&1eyYU=(g+V33?^>kqs$r3rQ3k*@;g|G<(|>Af#jKiV z2c)AO&HLZ_)SQ#K$q?s$Q& zOB`e5|D<2cRougT4z(pxjrMB;OcUSkHA6%w^VNngZX9$z`;g#rD=O}c;$!=~`$C6I z$Ld3yj52v3o2iJ?2!c79MaUCCSBS&SE5e+EN1H(CA;pFe zy2CrHD{=rnA630FRp(ZpgVlpDlgFaAXF#`qn^Gt<&IKINY4n)25mcHHj8bEXtFKm4dlO>xW4;oButNwcimta)bIV60Qa*90H9YWfhR1ZZGmcnPh;n$i5Wq>s#`j_1vG(*)vHNFLE7?i^`qe2oOz6CwD`M^58$P*Rx(2@UT7C}kLZF)gd#q(eI+O+Kl_M~Q$;0yIgpgyE_%YdUGb^IBRe0!+mbdy>kIb{dJswgeM!})AyXC&d1YiJ z3I)AFFj-o#Bc)))sZyC|n!Ef)jVooQC?58TL}8`F^dw)YfT8b5>Q-X#`$TLjG*M>i z+tdcZVQ*aT;c7^WrvRQoK37H<90hM&8M{lg(=wyrxHUsc($w{?3U5Q0V;bV(DT3!H z4W)*xbP6tuos=V+!wA%WWdg{$)H5a${l=;5D#(=4HD7kFrc!qu%rcR{_ujcle_uV<5AICz3i7Cmer0>{J~IaNaG3+Uw+}cC zS=g5-3%fs~w1Z@CS}Ado(4WTUJw+g#jQ2Vy+sJm9n~nO3vg26MX3K>&*-;MgV(JL- zpS6al!YWsTF6hH|lh1Z3`X-qx=zLyk^o-y}>N;*_7zf8>tN%Nwcr3(2(H=uM`H4~~ z+sv&z+HuAg8mb{TW+g*6=O zAq6eSX$HCJ5aIyRJ~+n)1r(C}p^A54xWK6&dGDuaa~1+XX?ld@$4>YD4qtHwP!@B_ z?;M)DF>|GKx2}7GcW4wf%@_}_m#Qn?j04V(%-~-h;=;QS$8xri9;SMk$a=8s@r8TJ zg02kIfL$v~tRgJh6s6_NhK*;u>=j54>?-3hP4PC%?_|mHSag>&n1-f3S@xCPSyb53)C^Dh+>`m7&BC&R=JbEG{1uw;xy=ubOP@1@Q98N3s_vxE4c zlZVcAyj)aXDllWvgz`w+1O{U6!7_!$ib4(t zIOVFBS;9lc{gF)rCasGwti{q(#@67i$=z425C}i;L6B_^X+8#nCB$s%hU5WP2ZoqP z!?<^js4e7%o({bLtf(E12BH-iLwB8Cl_N_bs0Ql6YDqMtM#vtPcfx8-Fovl*(r?Q~ zTGax-xIcJV=7_6#$TzI%F$0u;S^FBH9s?UEcl}M5zyT{%*`6deUjBx-I+a9(FR4qx z%}tulM-~SVQ^1+wGZW8A7m!j3{zpzg$C}~fiB|gtZ)*~ku0eb5B@hb7PxUIm9_`DW zRityDNq*5Ad~K_b=PDMAzfBEP%e#`*J2VV169!>HpC&IXJ<{y7m?FnxSq-#Jc zf^u>Js>$K8fj4K0D~OvydD402-2nrSI8{F&SM3MVTj*aKj)~^#W03JE>IrO;Y__i$ z&7nPIg6O`-7?6u&Z9dUaU*N;z6WSGXGSm%$&lO%M-UA&UdV#!x384;+!2OC8%b9?Q z&C9OmZy;lk)P~UJYLAYUxily^vn3b2pv9(Gt;`td@G?rh`|))ef>5~PM>tTxIQSkh z6qNWH4!d9qSo}x_N*Np00suiN{B@lmEa8f^MW8jq@1CmdbUaWjS)Y|*fb;Nu1|MBE z`VV$GMsLf8qOMfy;o6}YI~lXl{;-v10SM^XK`q;?cvwp@H z4Vs?mtA7?a4GzyZD`x=eGk^#XAO`?d5CBjE07Mf200010KdlyNT~}4x3f{I?weC&J z>&%_D?&Z*}w~M!V-MV`Vt-^#vYe^*5gcG!)30iAFLI{E(O^_e}Lqh~bB8Ycz0C*4m z=Xn0#E4on0P7E&LuX2e8NfIvH4Jnc&cWwhzL6kRswN5C|em*gmTCK0&8d_bp=U%9g zmm)oM=r5|hrqfFwML0~D4st`N@`MP65Yfk zZXBEct3T>uz4Tu)ne3#VX~*i%bj}?+O=^FI`_hI{)C6lZ!855+jhnYp)T+DvimpzY z*Q5Fh_t_zC@GUQqmh4iRIx2|HSj!8XjelOCG1x;ZckEnCsTj6g@Au#B8av}vD+OO4 zG2a3>R!si_^+q37kbb(UJ=8VY?cUuhxV%t%D5fw>4Z4w<+hvP~2dw&u24CC!4E0U@ z=^5osNNhN^=PR0%q8wWmYn*^|;<^E?7ax|rYdA;*ZRKxN%}udd9Dj!^*@Vs2K4&59 zyy}45Ae1t+@_N$#vxE|P%EPHg?r2YyL&jA)Z&^*8o`x=YKIB@HqA*g9r>&q}pU(mi zi-;~vF`cabPD}aQ6BtJL;Q$&?=M@l`JhIjX#HzitNicEEJ+Dd?iUzWv`;giNwLsdB z%d>8#rtbNrW015~(C*QVpQ_cz8OP*mjnq=o$ce+kxh=_O6l-NdbmW%3OO>lc!^xChh{R#`dSSE>%Cq-D*Q?f}JMPw@Tc=mT@=6r|5H%SxuSvs@N$D?aEF;_UR`_v4q_8|J?NngX_6Wo*K zJpguj?5AtE_L<-ylAL+9;h#aX6jb$L+wv5x;_B>914Sni)JD>Nv=TuD#si}%9YOXU zv7+o&f2z0wxmKg!XH@YcKI~F&qg5{hRvTko(cYh@t=Sd~hqgg=({&{sLvk$KN4qQ7 z1W)mfvmI@T#+KbdMh>*Ml#DIKF(GYOHmy`qjMRpLF?Q=Xj;x)_Nu965LguaB{vCyQajTs+WW}28 zKE+G7S&;V*P>cuh8)R(eOv9et%-X&F8Pe!HaN=kUiW#b;|EzN!)Nkl+IC3~`g{}s{ zw7H`pY`M!7$BxIKc;MqoqjiSF6BW*miN@24V+Z70PGK3-43%2u)FJaosE1`+fj^^O zw~i(WN5=6{HWTg4%BkSJQ@TN0QsCA1rs)S(d0XZF&8eD8QWJcmqSnOshbTK%IlIO* zDc{=WR*1!bBlZkkM)d>KR>>X>!ExQT>Xm@0&5K2uOimEgrF-=hSnHA=dQl^Bwoy)2 zL*^Wnh8|wwl=t4LFH1MSDMspvr#qk}R{UZxUdHKKyzHAJ3PpV#KtXoeP?w34z1o{F zDTgDo8`bp7P<$^Lc<*8caGP|BDP;e=$^0CRrs358rhf9so)u9`$G8t)%w%W|r21W` zY?vuMbW`bT+P*PBrJdc1#MWEL&5Sepe|sQhKm!%ecFhEc`Fe&0GnNeXN|?kS+6RZSc5u$ zpZeD404)o|G8do+BZ2RPXgxX~XuKBiVP-|$Hk;N+3jO$zad4!Jy$}wM9Bf(#9@jM| z8R&yBc0f2@eb}^#Jh?2%{25BuA4H*0CK=+?GfV@m1S&(Dhc@*Zf>TfUn{ylU{KJZL zsb+*2h}4Poss`=y%AAQv`pi?ke1{FQf|K`!2STP;f>`%v;*MguSk_jJNEvF)#^D2_ zL87pd{e7q!H9;}gr<72u>f1*lo~@}q>qh$!m0=UhsDGCP@HXw~N5B779?E@t&D0f> zOR9%}(W(g3gYa?hm2!PaHNUG8fv7CnS2o1zR{%DxcZURQRc=rqNN9k>``m1>=TT;W z6b8%t_QrQPTIDibcIPvlLs%~MAxt=ZxaA@qf?mql$>qc><@peW zg?QPI#&ZcHh9+f@YZ0nu!X*RCP_$vWTRSAi5-Az)=8#LfVt=^4o?W7I9(UUfsA7^k zRXsneB(48TF60_(19jQCuKi}+}a#8tH zzTYodp5|gktWc5WaZN!oD5_SHvKesFm<&p@u~8@)$MbuO5>aNOs%DFs4ZI{`E)coH%qU%4Gg30vyPUXQJsW3NNniWiG0?^5p+U3;nq2B$7NjYHd_RM? z>Y=a--7Q^EoLT?LKC%F_oW{Y|%iw-Q2K?CjS4}5$3HuJ6@;dsKrVq6MnIgJ_tDi@& z&)2MAfQ(~D%~C+DY!wfu_A^A^XG^*^jf4hlP&oE~Cox1M z4`Z%AO);Jgx}#>q7Yh9j&U_{kHeK~T*o~hZwe8`>imEIYG^7wgDh5yk^S|&(Q6)rh z1n`9=x^8w#J`O*Pi8z}!AG=@x_>)WGN!h=kLH^~MTJq)Ujn0;bmm~|6JR@hAr2Hc} z49>1thj(t$srs5E>JyXk{o_d)JNpxxFH221jpUt`(=x%hco(q9Vm1vfDh`||$_~ik z$e9~I)F48D7i%^~sU{)7s*qz)i*hZ@#-i1U)(VRRGN{orqE%ojD(E4eJ0?=0;sU&*7H%)?RuE z#s9xX3Pn$_q~AEv$ALsnV@3N}4Skv+gSOJ9xwvp|XcfRgM1-DXg3VqEHK51xYi^1?fPL}cGNl;7%&in^1oVYp*Ts|DiXTG05P6}Y zS)h%4zJ~eOpqil+CGpgY@j_3~E1phH_*bC1EtP1|hyVvQTF_m3-jA=9OJCQE(Q}4E zOd4z0*Q01tj3@HVAIzGy-ky`?N4T@tHa!g5OXV>Al*S?K^IA6NIK#`?hnOvJz22HO ziaL8?|MhYVf9Px7@7LG%YJq@5Qw$J&e4o~&wQ%j2XH?L*Li}~#iNgDLts7DKT8(V1AHU@`VT3a`sdA0havtcTZ ztF%DwbGlwi-8|ZbuoNX=-6?Z_*96cu=@mK3{-w>Usl%=#YgeOY(n|kwc3blNPpz_9 z(dXHNwzsY@4O{9C;2fKV_A02EztRPI*d#%Ybt znU~@g*jHTZB@|wIw6(2E$7XseZ;(f;=P|29#TU&?lQmrU8WhnR=(C(~KN`aj_6uhV zb+!^Tz;yJU` zr#}4D$T-`J=`ROsMmihk;2Lottp?gPCBrB4c*F|M+eF&?nAY-5OdH_IP`?jn-uiMm zHNRz8+as2=5*K;O3XvDvRp12qye?{p`)#U_p~JVj8MM>_U)AV#k=)?ydvoDi+6@h7 zyuSx;93}#`p-Vi>^^dWY9ed9nV=5(yE9Uyb;pd}PALX2Hp9ZX>2ZvW z90}}GiqM;j$zE*Dl1$LJEd9!Ro))dCV65uR2B;v`WrZ>Ghz;hPvjgjCLITnlO3`1j zsL86lN}GLpyPT{Meq8*PUL{L@VMP{c!s=)nE>H-b7pdBI=YK;8C{0xiW?Cugfr^<5oo`aVPZ8r<|Og>P*{%*G!5?vI2J&{G{-3r#`O%QJK7 zeY<{&?Jt~D9vw$OiUwZHr}#fAsVA}6-{+%SYL195NcNdU*U4ZIGp1_Q*&jRGM7o(}O``q)%av*77%(14p zU~|*FVx!PwXGLVlKdBj)+{3`w(XC+ZJLinR4e^QbFP`y9R$k|T(c@a+hOvYEbvT&} zj>Tt9!Qm-A1@1ZvV5KQv5n}0TWH6-)@8UFY*}5gqeTdC7bn z2HQZ^$@+q;BoX0d=uVr77ttH+bt7x+MV};RoH!IDV!yVSRkKYolF22k{9)3V&E%3$ z{~ZR2DPSzi3JJ!Im`nBrWTbeEVUidE@#ar+5=;^cN-!M^%g}4cN(qw0DE!493-qpZ z*K%*l20fRSThsQ3A5y7mMUt+F}B9GZGm+{W4Z{h?pR6md0MdW4;cU zox_)7)(k1phMD}8&++&bcvYw>becvY`AF&|IqxI~W3CbG6=+{>WHlS7vFLTTt+`PW z*X&xehu<)ntIB-1tk?7CY)>X|<)j}|YyF+d7P9ceBtDd5!Rqaju~phEE{BZ97CcAv zqL~27Cck3T(xAv*o`=S!PAZ96wvZ4D&iPv6nzi?BTsjJaFU+zM#%zPo08BWpsbkKSRYZ+-BWV0QpjognfwO*fe zY*-G(Zd$?givmXspOtHDQ>)_)i;!s`NqRYZlqwX%0Pmr)Zx|EDPN>vWB~G=9gr0JQ zo?M3XF;eNw(&zSjZVn3=Gz4X})Ox!Ct5}$3x;!71<}H7p%B9bN$(Q|^X#6(0bf%-FF zF&G61?l-AvP5%E>o<|hSW(Fx{rE3^iD}ea8=}Y0+a-?Gu$Ct?4y~rpz;_;-?h<5Ye z-@HP*60A)1ebai>T`md!TAG!_Gmi|K@6;-ph+PRZb&!zNC{26u=z=$l^e}$w)Dpg( z(@FD|X0b4{{n;>^{V&~**L`nPmc*U4SULr&RRol5BaT*!Q7kn)JFCZd34EqnEO5Iw z)ff%RiwYA;o1#W8otu<^RfA)~ca}~bl#Kr*1MD0awGW#$*|&?`BJdbh;%x@F^qRsu zNpM`*n!FHZNfD16Z$+JMDZtsNb1XS0fb=0rkFS~<1Uf8pTAUaK>h$jhq!@HY)%yt< zCr&9J-5pxkGF-ZrTMG0XlUi9yL4wnGK5 zIQDIBqsYJ}N<7m;nJnoQ<1f>-6jh znB)w@d{(%7Rf9T!4!WG#p?%Z{IBr{IMw3Hy*e5W2yD^W# zt9(<_zdaxDbZ`Wd0fe($m{2nv|QmQ%IJ8Z7ImmD z96KA0-biKK9gtEgcj>IfF(R~g;z7F?wJ%L8N41yj9^+~G7Cw}XcL-Gj?><>oHpw0i z(M#An!l8{xTWZ_jFfq)svj?;rdF07aWjN06alH`xj&^ALsOyvfo>RrKWb0peB`^%xdt?-RBMQP+XmKLC zG<)97>w4WpouUbK%P`A?fFzMEu7bmfhTMwDOCTEw&aZkMT~fQMn6T-qUj zff`tP)moxc%G_G`p#3FoUDi~VA4fK~=(SL|!H3*CLGiQ)zAC@aI>#83lVu<8f&%+m zhU72Xom7*Y(?KCuKn-a|sC0i(7|ut0wg33KMxQTlDyEUxeCWGTqW0@wsxVq*kUHqp znT&Dd<>pUFT@gw;5&BXDQU$eLinw!-oGG1ZS(IVFrr4lfUV-N?zW}`iGJMtGzICjp zvYw6PjEbg~kr8kVs#5V}1=2)*MzVw9mwVtx;x6+wstZCfB7Ec>MAKAIY6;pn7OZwK zKEPRYMg%w%8uQZQsI)$9EwQr*%LrbF(AhtZD;R1*>eILwL}9MCbh=*|wr?F-(sBW= zi#moxX59=>G_*x3$fOdE@Ib;-hM@;RF{!N2{_lkHFh$5ITNJCVW^5XJZE5mdW;tN7 zT7FDadt#I*6f`QHY>YG>;gw6;^*J&H4I(~5N1DS-gSD^;J#Y#W)+FMsU$Pf0*n#Gw z;j<0B>*C&fblaf!<#^j8Dk5RdNP`C|E^gPSehA3P=FSM&U2~izF!34V-iOF#bgJPR zvLQ5))ni7eT^D0h%-YAxH|kB<4Rs0t%1v#GDNO(Oy85_844mTD{8Kq`{o*|kEzXRy z5E)g@?J?F#G0dQyt2S$O_C-D&q(Z?x9oJ9`1qAb({8AlAj|PrXijtcleep|!+0=LX zh#gxEjtde=R$#o|*A9B2KG#Q5urfYNhtr%T0tH1u8qOp-MnvW?53)7B!RX5qh-40B zY>$J7f%!^sqZ}-$@X_$2?WtwUWgxJ^UwUY2h=;>ZQLBQZYA5AtU&q=xM=@hMHDheF zrUNa=W-Kv2$;Kf+e@U3=y3y%Xt9fK-zp7EnNY%U|8S@%ocLVuOR)Qr|GZ>SWt73_P zQ%_uPULvSY+?E~jPiWMsG(dHy88>Zccyfaq)#GD9I1x@H7N9~wkxin>eorX}&Rldf z?A7LiXpobEc4C+Lo*hTmC? zKK}O9)p)1%mmRX(`$`yYrzb=T`9o6|g#9&^vB2Fo^81E|)mTZ4g0)yvqwc56nR;}Z)V8!t}=b3ZJ9_r zRevpAGl2g@6aU!T<8uDouW9cp&XXan4d`82xAig{ABa@tZZ(U8;yYJGE-#k62V)UM zACU!OBag#eEU01#I94VkpGW|I(o{rUWtreAJD~?6ILGRYu5JQXKe&)mH;ZMR05j zP2)Ll2S6&LV=OW3+V9=O0b~g^L)a{sZL;M)VF@p$HE5B+W3$-zZVZlF)exv4Bk>vG zW(a%ZS^yaxB8rh_d4=N}+Fs*UapQ_k<3dOAZ}-k=lEc6n8fVeM>+NZozqIlvT@f2S zI;7OuaN8iR(*eLuJ4KYHe@LcN_du4fH)tFm+QkTRRl^bGAov<0WvmX=mPlS@=Y(-m z!m>GTRU#899s4#JC^2%M_;Qe@jZ%3kJHZ%b-HCUJlax7=&a;fh?-w;$)jIaWbh3Qv zUQ&sfL}EbPJLA_q3NzV;l)N*)eeFySWK{cvLxakFXh>0_ULUu%@1kz+{p+wc3s_z2 zSf6% znM~e(TDirLWh8x1|;q%HKsNiJh91wJ42f zt5x-5SZdKR?y}OWp@$W+bFZ-s7h)?sS2x26&Dd)Hw+VHIT8)()sV0fa;NnvuV!?6} zyS}7!=wN9|;QN;0Amf6l)yF!KvB_`?0i`L9qgf((!_g;U8twhv+W1T+#z#9x_ut}iULJSA5j0~J6PjTo%zYX-C*ECXjfDCvw>>XTva zujMF_6D~6~7hhWihZ!|if$z~;NZl+!O!cU$xlu8&Sv_>;Vp9ggpM>Lzn>`^pB{t|i zG3gl?5urhchNRa95Bw$1=@p^-@4ozv6%VA|ft=Jxk;o>+N9GqS+OS9f?%A)CzY(x8!O z!Ix;Y%#oRuV`!aY@nG zChhnWMv_Hl{h0(q9;y8A8Mws4rWIBv=;985*5D4-OJg2b>NTOE%}grAETV2E8(}G#$N^TJ8d;pIpw~OKQI9?FRFvo(U-H>qtb~&Wo%T|T20R7uTmiZA za@A@{^|H0Eb`!zp$K*KN_XC5kL`$a!hIQE1CUmO)I)X{n`kfLeX;`J(0ysUP0W287 zuW7F;j4RzHnmj<;FimWBRH$B$GtC>kcBih@NfM6HzqgKH-7opG z@#y}k5h<|cs>fVZ(#G5g)kt@QfzhlX3A)8a!lLMjPKnD&Bh7j`$&qoyD3v#sJ$xXQ z%~8SaqjU=4jK!uAW}djTHO!2pGj9Du*A-k=8M7t#5)`ud@2FpMUmr!a88T>xvCf|h6!D9k)%T*a*=r_%ga3^ zH%ID4K8y~a+)(NhF#{7~heWL%t8h$h*&R=;GR9f>NfVXtqU``;g0yo=Pq1^Go!8KT z?B=AurVej4MsBG^=miO5D>){~BW*d;?VzF7o%A)P0pS?q??&@;uwPTg^kKj-GsAe% zoeKkBIt@JL;J=0(YRwsbO*!lt1EiD698C(66J&HRYt9?24yNYnzh8_ZHPg){XWFU+ zJCNMEQd22qlH)|vTd4`QoN4gP*z1n`8c*EsUko5Lp)01A{Y9n+0z9YcCsSP@U6{jg zoYcAA2-G~ZG?xJ7kd(Ybbm$rmhNm5^k(KBgN6p!O4K~i2GyR%w&@%=^C$u-36eK6e z;eX9OG|f?eO*vK>!mxraH)J|241~F=8|mp>tT(c$(1^)8vL3B(>PRa1M#v7%MIl(eSnnO2DxLkhoH^#bxzPUK=>I^_MX)B^S{md{iV|E|P z(KD*;8hrel^KXqh3Yml6L!Eo07|mJIO<=C4U@;3wjQQjJpIDRhO5}W@0xhsPV<~X8 zmz`*rsr42|rT%K1Z#wYu2{?+f zBk2-sWD!|;TxRRYs^@5!M;k~TZ1xu|E5DwA-Cl09q8%mJixK`DsnttDD z*vRV~jXK??h(7V~EPZ&mf0-x&sJz&}&z4-bq{Mrr&LW~Sg3002T^RbLGPv0aV*_%3 zjM1Xqse;X9#Ir*uVcsldu5?yGxlhBjBAdOjjP5!KfNWYThCBUAHo0d0u4vUO>zd;w zh8}raSn-x~{Adg=>6ZTYDPIhS2nICE(&qUu{2WRtK@mBFtt>ZitbB5GpG7l`vOmmF+LsUBK=qmgTYG=Cu(y)G_l9b zHXPRe%gD${X1Y)am$B|-vs+?%qXS!|5M(4zA+wfcX@lA#Mp2|PBWoo(_< z4DiVf)Sk*pC!-#K+6IVXmj+ewbRhU``xXwm3w`%$zb91dY~9CO8&`5aPR2~;}L`Wy%Bd(^2McU`$uI%>C}W34Ev3{;x{zzz_Q zqW}Og08k|W08ao^`XIVu#5Z{NN(JS6x)P!YqV&QDMF>UyNf?wMx{b$X)7T)fZ6V@a zuxv0Pd8k1QLIB2O28?C^puhn39*;NgeXo(a+f^YzQi*kKq=_0EcGMEzAV+b;9?wn2 zy4oww(zNcowsBE1(r3_h6yS2Q^u}Fy6WRp2eAZe2F zvm{YTrIaR5O%TNZ02u(AnF25tpf2hCyZZF4>DRfIttBa0Z5R}g#sh>AUPXBq&Rm=T zF(SMR=zg%Y2FZpyMqU3)s#FbN1;7;oQ3Z-ZBq>0IfDi#dCIKY@I0QT;kV@c9z-jLi z00lSsHO8|WRCs2i^n8jkn85s?IxrMF6xZ~-t5^u=MK=?od;vyU7ZczGjbcIF?!Bp{ z-B2LpM$%-3*o~7P%^Z6osh!MAx*U5#DTdCE=3BjDtcK9gx88J0#;O2Yqr%5L>6==p zwcz7Wz~NdQuTI<+P&Lj;yr6n;i{TT;|Bx?D*Y(m`--f4&lI*Xf$<53#?o1qj2woDv zG)Ds?j}Xe8x9sf_f2xl6mQ+ClTqd@~;4B5pUM!D8iXz?}$1HH!^5W!@Z9M%t?WK?z@5N&$EEJQLTOM%~WBYMSJdhlhue+ zA?}7H-SWD&Wi6AY!;t%tCB{_&#zw6o=fzZws`lj#TC`+*EhcFC?doD%=@PDj{kIg3 z*QolbE$P}$PwgNC6VNTrXpJ{Wdq(m($#DN3OyF)Fr$mhQ!@QK_#;Ph-FDEqfKcX}C zw=ke9Jm4as-ET@m%plR&Fv6@R;}_6Q0E)gQ0l4|>4S>pu%L}a<+GOO}(q_fu-~y_` zdAiu%Z9p*SN)}!>1MND zPg!v9cASK2Nei_aHYWb67tq459TQho0BCWq=E>k-HHTH`ZJ&T$b+Q(QYbox9S8=hn zH=lrOecKjA-T5Vz98Jlvf5qLDj<8!WZpxVhanj^g*LF_%tKY@B4~w7jf2P)$?ru|q zx1LY|qVgbfnimc8`1A-Av4S`GP=$kdCn<$$2OlJXWNIJ9x z-Up>iS8!djsUA~4?V|MN1X3f&GDJ>lXn_TcrpC#|@R5zoQ7|T5>k_z_3$J0(sPP9-~~c3QRDz^i00pt2he1wbXA;8NP1HlqtUW6>=y7H^chs zwQ}2!rujm27rqhGJ#m?T<%P2h;QhP{Ntxz(_Q0IQNe1j`A8UeY-+E^pEd48gCDg7N z?2XukoVv64NtnGm!3KH?pfJdHo;*PlT`8Et=q^xaux9WKq8;p<2A2&~)e32V3dbQ^ zXjFE1^+U=J1>K#y7NF7ln5qD-XG@W&*mS#dTCdH@f|R`fP^farPq+_AI6m1_)b+y~ zCyp|>-aYB@8Iz#zu74Co09j1b;PHAwGonSoZOL1|(zOAU56h2+f5Hm*tE2&79&14@ zO~#i?SMl80D97@$0LF(jymLHh9kd!T-tjkc^o14X7IQTLr*A@VURET`>40|NTO-$p z3@vaAcKYA%o5e0b2c>?k1=m~hMbxK@o$vP~&a<}-g~sGP72$P7OgYPr@8?rf-h@Wj zC6sYrZZLaPYIK2Jzu0prQz&_Or$tRD<=^t*;pfy_%<$3KQa_ZgC=3oFsi(phFi3#M zyB;NgmcAcV&Z%vHV|t}|X#Gk=^DgIfcG<&}dNe&%GJ)|L9WN8}O0JWv-m%nfWE0k9 z*Vvhu3bZUeYd|&%8m7Ycd&1eZtD;7i^3mOWcn?2woA@Y&M!_3G&x}j<5j|moSM#@> z8>dh+_U0&SgbK_bo>hcRAG<4Sf#U{SoA`c(M!|>Z54<2G`-`0sf!$x*LUls6uJ1Ws zkBCjMOHzlLH^?vod0*G&gTwmGp)U+di?fGQurz(`V3EG>m~I1PaQQeB*fcPP(ceQ0 zs3bs>$DWN6?z^|CB*13n1f&DhzEk6lJ&%K*V zo;yri29kx(@A_@`neWsHUSCAUyo&JbnUw|ig9L6OB^=JT_Mp26EfRJcP!CBB>jWi8 zS{2(MU`i=6ybP%i`13w;$IsyBH5NkW%T$bjJ-4E29bzN=+xG@tV9K}_4rrA4K9jF#GACGuwgq&Af+M1Xx zygs11YjWpYXmgC{ZOPqxp>y!6a5rc4S1FJjZ{3{oAGo+2uiYFKAY3$;sZkWc=3dNp zzI|u2@+pmk3_QNT)2;YkyUq~AwS*JV`Tj15umI**{LV0V$`EWo5x`j&?7rz@MDp3R@~wv#SAdZG0Bi z?4olcT+yQJTncE-DbnF5|9gp=q4NI{ojrblEhP%f%bZdHodM#zM5x5!#=G18Oi7#P zLmmQSt`k<5kBRRpxvVbcqw4Pkr>)D6@(QfeK-qg>xc+KixHGQtHlJGDj^ zU+fwh)_jb+Tv(ft)XIh~@^XK1(0=s_zwFc+*7VloDb?_`Mn&ryhJe!RFp9DQ>WiyeV*$*b1Im9&VKayS3$Hjzm*cPxi$e?ui5?s^IX&GGsnA>gOo|4$w zJI`<0SBt=QclY$}sQZ|wWu@jJuWcLLE{m(z3+WATIGzd1rHX<=FvQ{BfMfyTj^}>d z{d9K+_{ZApTB?ixDO1&`xw@4aayRCk7!HkAlo5ZG-U1X?>2*;geh55J)g)MI^s#x6 zk72QL`{!7QKH_|PjI{4Iy}0MO(pTs>9yJjgu*ayTG-Yu?17sM$fz!1rG3Okw+EW|+ zzPh*Lp+|vhT0on>w2cNnb7&QaN~^=W7Lnh4tuJtQYuJ1Xf(~(j01-pPi2QF3l;nr@ zKc#Vrzf9*YKk}0MHU7fU&HOA&QH%cUC!fUPak!YjL^1qw@1BA@Y$v*@o;QgC*NDZN z5UrftHAN~4=rVclO61FtlmF5`sz-TWb2m6T22&Yd8+91#By`2-yEmaa;~05J^IY=e znpvJ-ljq4^CbuD$At2%ZUUcVl+{*90nuXCmd@AO7CmH*`k}FF~^tZARpl|yhUj0E} z)+yVJ=WdCl%rJk&Ln9@N`&R*n`Ow@k@F|;)>8^W}gU*EskR1OsIk4>3F+{v}b8lS} z$DSpqE)YCb6Q8mUd@OqbGRMy9_Elp(L34jO>vw5|0qG0nhH6$CKL?aSR7ph?+1a=L zm2iD2X>cnO6!~FW*%+KeSB>ay`RI1z>0e3$`cq*6o)yVZ)P!;MhxM9p6Efx`mR%!h z$L#kAuC9EDAA63Y+5*Mx*Kxk}!_|eYQ1W;EEK~{SpIB1I{P~@Q7x@bb^9o#zRId18 zYR;sYK+yj^r!nUP;y~SjS`^0g`AXyJd<1%K*CNXCC%&ThUZzmwXTxS;JULGJ%ue6u zhtH1t;gW4eJd<-{0fxj$n&rn|ts9_Trkb|^bwrGOGaM=d91i%cYDZ}z5EEo}pgwZ9 zyu&{6EYI1+sNo^_^9T4g|C91`?eyHD_bncnJCV5g06zDRXNSq9m+lWd7eixH4G}5X z0rJo_s^0_xKe3YuI|(Hl5nnZ0?_dXbsv(gtk=XAA9EMb?&)C^yA%sqe4?6P{b#_m= z;^6sob)b0fdk&JteC)7gY9OM&hs4>`qOAiXZhAa=Y@Pch&#g)V>M|GIGgp*X$nlz~ ztD}wVKIwz3lZ}WzZ#t5HqF)Ad^>dbq>TM(h$VmLRwxQ_cM7*LveNpCh3p!b)<{AAV_6ccFlQhQmOz0nEpR zf7a+t?uArR;mEf9qqk>*aJ+L2S>-=}LR=9Gvkv)MKz=*<36x)&DhUB^I|IZaga_39 zRej^hfUwi4*9397(|*zM5Ihn56qgZ*@a>--G1{xZi%v;lfc%xuxt&wS{VWyR?<9`h zfgmZ<_d+l9Q$xX&0Q*ca&oZu3IcHp2yGDuA%+{p z;k+!-!`hd8#lkj99-}yWN^8fj1!vQw*H?K+H|+RuQqp(5%z(~7i-EtWL~@(iCr){3 z#pazH-?2|v`HZhKHJO}&J;ttnbRxMA!s%rEpT*_=$@}3+cuW4tPZCs5=g^n}3T)T4 zDDD2Je{)e8jl)v~fg*^FhjE!0Kdu8Uu>09AU_Y~XOjP`Lwt32_g2Y@}g&S=V)>RMZ zhLn;<9``CF_TuveafyMYSUEhr*M)ttn8ag{NtYuK@;)$`9j$ktW zUnCX_=<|Qk|3Bg|T>lg-@Pp3yg`b-M1+pfJ+#^zzG;<(Q|FJ*>Y-Y?4CXb3l79jr` z{<=4t1|5vTMvfqfl`2S_s6!Gu90>i1G%ar+8Q)_#ew)zi9UgJ5m(+Ceo2nZzKIwso zAcq`SG?ANx1O6wX4&PT6F2r#*WYlLxH3C7AjO#7} zh~#iF@(fZNL71SN97*aR-H%Mf7HlG7VJO~PR-91yR|+qZlu?o>N@OyM7`dX9XSyW0 zk%=$`7$a$Y5)!{(eH&xIr3zX>6T$0U<&qx4mJNvdC}Z$ZL*aU+JNW#2(#>RFK4UE@ z3##s`F|-fov?|mv=GjIzw)~+3gq)7NIcTe3D_e}^TUIOl*TB+aKjOu`#HJvqP4yfe zKR+T==eR%(QB$cM<4?eh#7{s75u|O1ZAeDpkkKfPc>XlxRj92^1{@2*I{d~eV~okk zxIjKcr~4Y>Ka1ELzaFSTYbY+my+3ihDGY(ny+8BcEXQ;mKoRkcjzAkuHeB%FF^aPb7k~Ga2q18``2v}@DRJauDvl3BOKKn5cQoGHW zfM;Ku)}dSCwU`p-bHmKe;Q(<<%7ze8Wk<}45R?j!&PxAA&}4InC`eQli+?zT)gm0F z0%?;qM9NsE6?^cc$vkh~zr-NbE}s?Rq}9^dB&`hlSc z0jt<`0n&TB%wrUITo1zRL7)kwRULs>7EWu*>(1$pCmD(~ku(-B93hNiHnrW(Et(Lf z)s&GD7=lE!(bRsgwkK5J;}v$E5Ut%D$36XLDJr411*uDWSzliVo2B}~HG*SDqTiMn zvULyOtfP<_qgE%l?j9<;(>V}iW(@Ia&P}0r}|KZ>ABRxs%YzeVH`W zh25LrvX{$sW%nLh^>w*2?C`>n{}Z^=hHzQ)^$ur08TeYy=>l*3{TL~k;d`{E-JHVkVX|%? ztjo!R*FmYCtm|=*mL0CSVNw3-^Y%os>SLCwjicnZkU9denhIi#e6UKaTy^NS$Ti>f5+Rqj4Iva#?Z939IsyYY_1d5$N5pAjpvdMgtNrZ+aH<+JlQ12KW9y(`_Vn58jv=Zy8ROY zcxO%XRhOiy?R$PxtmE2THonfkXrbzQZ?@ahPtvXSfL`TzOm+&JC>)#>d1Rl2xmZC^ z!(Sy?8c?6gnC=6m7F0~PX5Vj~my(HGf`jRB0FLw7q%zt2ImoB>f9B?&>D9dyBu;1f zeE3NXHypin8|zD0J<_4%tsVwMilUs%BeA1wK8oxwnUaRR{r8=Gj}?`kmYJz-fBee^ zms8Jd-EdU3?ixScx}|1lE(4M}qe;jR<=$dNHN*YwT8KcBW>q97MhjWE)b#3FlJJ0u zQ^{mlHE(TB{WnHnO$8tfwMjZP;`Y$pdV#^=hwh;|qtB4S7epa%)R?)=rB-qwf44#=;r|zjk18hgb8U6CoAP@>?Xt%E%eRAQOl!-KS!+K zn(u3#fgD94?;E0QCuZoht9>IF>$^a_PJ78%t=@DKhvD8wYf6srybmv>=rGy&f+km| z9h-C`to1P8O@qN;7BPYi)8Ixun7n3sEA6vTw(aqx^-m-*>t= zb|({S3WxdE{(}N(E5ivAlqo|B=#TUgRYsP|k%}>}=Sd5r9vZu7nL=%pRkE5;@kljC zm3TD%mXtVtB|*tzsC6bT7LtXYhIEElN^Q&NIddc(w_qGyJ*`7p!F&T!zj%oFKL@ezZ;Z2yH`iqn8h$v8q#jys7<6Kp=BlnVRoVp@ zv?j-&NTm(|=+s~KIY~b!exFsX&Jvh?7^P?vDZSpCAoVn}78rIK!b@cq3XsoR+B}jS zN>r1Bq2B1S+q1(|x+T>D;x^>o;@Rd!6XJe8que#{cx=wk(D8v&zlY*oo6sK!L^FHF?YSlha7`{Ls6uG?<@ zOC!XSRdt3|Y*{x_HRfX=xw+aW8=17HreNC}TPUY=zY8gif?^pW*{UOu2PX+2*CPjL z0fzIG(Tj%eoy?t?ZXL_L`jup=!mS25Vyq+js#>$T=<_mF5NaS8x_UD$PNn=V-8$=` z4NEIxWH3&p=j*pape!xypkOfqR%!FJL(x1i(@Wt%M9j*Iw&m)%>w!J$Wq|3g=KWKd-`bS|Sj}L6rb>Y93NT5I@vt?+J3Ty_378azS zTL;*$rz&#%BR~|xtdg;1Ne|eM%>&YoEp(MQZ4lkH4ut)K;b`GAp(3@3ptXYWX}$fz zJf%nBv1YYo?zhO_-mHNab%0oRXDiGh9jje za&$VazlhcX{>mkJZq)J?NaKY8ZZg90p~WfB-KV57u#0!asbvaohzo(c@m3C5RoYo? ztRWchr)WdBsDp(d-85xOS&v;39%k&sc?jenK{qIDU~NrNkRa<%@|Uzb;Y%Syh*I!( zC6H~w8;<n!0JZ6NC-d&$*CZ0?jU|8o(Bmq zlmbI?Du(IlHzr;4s*;r@DS1|rgF*aAM)$VUqr{$Y4cyz4(PGU1<+>cK0=N9xCXZE_vhF6Lwo`c4Z zvEW#$7z%;f2ZIPp5LuLWsD~QUNfFt=}|ALX8!Se^YImK6Z*9?K;D9{ePHFsg1ZgB&TVrgoNsR{ zcLg~|m(-@&Lw=mTqM@;(HvkmCJ!Ld_w8+c>RKGwVU3DaX9K%X#omz=?(^?pU*$y<# zX}5{6!MU|DmrRR*^FTu!%3>vm`elpZ>ocEe!z&y)@=YeY;IlviKIFVAg<%^ZUQw5} zEqmo#QTT^3m~C~lL;T3^JFYd@otAuXZ++$$fIJ*bx$T5{tD@f8RSAGB2#f&_T}gwp zQS!G^hbV=5AawTF3h$1&FF~e+I*v>4@#$E3rfw;wgIs)s+t*P9h18^cgH#&iUZAQF z?4t7&X^gw)I1Ir_!$~~BBqET|*`3=whLu!%Qdnxbs#SZX8Rf!f(x6WHbM*4cH%1@G zbP)(yCt3rKfDa?t`+OKBS3KeVL2v>)P!VQNDnt4*fdePcQL#uDd8iRlqeh6Khfh)O zyRb26=S>HI11$tYcim>#uM}CaFyJVDSC9f2J#tfGJfOab?wNa9?$+OrGMmiiGTu3;S5qRTC2gHt9;sVDanLUgSkXlk^QjmtY2l_0!WdekU z;@n(NZzX9saDGDAf}8Gq$QRlQnP>Kp zyG90c^V&AU->{ZJ_~^-2;A$I-ucvkquLSE)P8vQK2d+biif#G9Zr8ZHx?1JMPN!P9Dr1z zc85|2CmD!DBtGTFzZ@bE6C86XI6^G^%7qs{&<8K)e~XV1bFS?zEt&VHvbKG<-iy$) zre;vmpuz7fO66@8U%W^jI6o}YR?pFv9SAb%pQjA0PGV8Z4Pfg6*P9=W zs?@D45|QfQgj-FaNPgvWD}o=0fOX|nD>12MT;(O?Qjq77s-Qc~@NPU5W#b7=b*O-r z5Rj+Pw~9mo?plq$N3ticL}*MhioBw?j>TggeAeOGg=q0SFs--RlFoJ*?#gx)g1aNDEa8y)=u?wcK5RX*ivTl>+%$Y)t#aN>-a*%@6xF||qgHYkUCwpx z;?nFujaO$-x<}EO*By@Jwh|#(hEZjQjM@qo%AE5nZhRk9=z7?));Pb$@4(euCN8;#lF#Xz|f6! zhhA;x3JFyz%F5CCn_cEH(8F=~)O`;Z>W`#Rn$h&di^l4oPY?A2shbbU{e!Sk1~a_Y z$lJ2kAPm(s+oftlK}@IRRTwaLl#M{(jMvD=9{cCu?`J zJT*&4=_`o(MBGkyCEu;0auibJm+5W|B_WMZ+zVKZP z3Mf^Pt53wr3bqz`}tf zB3bW#^63^6zfnq@R1b4djZG89p9hH8`y!6ZZ3aZ?t)@QHx{ZZ9$a=1TD)NUE2g!oq zYkAsVNnJZA5Q%X5Z3_Pa&p|}+X`*O9SA`OfBJWn-ma38vB$`XZBTY`w8-uD#*On4z zdjF#wxQPwuhdRp8>wbZ(Xi#`{O`ue}z+*4JPk(lTKOS@>nXt(IjZl{dC19YrpN^92 z98RnF6!7FQKehY?fOa-Ix(;M+Fx^zZz;S0MBdVtT!@NlqlPd*R`- z%ZcyDo;kw*ICkY1Oafq*5IbyC`+Ykgm9Hxt!I82i2~xUp{gViX+D5DkCiWy4gU~!A zydZp~r9Zl*ic!h-+M9!c(wTtLe+@dEq2=s#e?ZFBwTwRQfG*JmI zZdKsO#yU(V>Ef43{4PN+gX)kj?003!&Qi?{pQe*)MV6j%3q2^=B1xQBV$p2z{^_M`8k|;7+YimX z2RLbdvwD>$$W9p#Qv|C12Gd(=R13JZ(j16rRWr%zE{Q8LmbRI~ub6WlD;_9iYi$}} z=*wPL>1ga=;&*hwqU88Lhd#|0#W&GHz}j&3jK#tf&AVPQ8g67YwHk!uyk?ce1UA5N zmu`PhOS(0LaelH>&q#wdM_yts%DZ`tofDDO<6twWIu1X`)W80%oK#QiDvFjgs5IGc*&pa(j{Lbpz}yZ2&RxN zkBt5#Q1;?1_$#Cpjsb~9%2uG-$+w<&b*^DWXgSPXn}5kVra}=Uns#6C8ZO3BP-Ds~7OkU=1&qqPKh%4pU{8 zkXu}~4nJasP1VG?)am}c;$*M*hn%#m3ZiLJA!WpVWvoEMh3oh6`Q7T7sWnu~)6!_Z@hr5N89~=}9s13kY(ksI#{V;H*&VV7;m1%(uNxLlxZuLvT)u5no zjEE1Z#4(^kl8&$@>Ed<21;|s{M3BnJ z>mfjopvIMyD3WDm7@>W!uj%Ol5edGqrlz13tA$X47=O{I&E_8yqmfw? z`2>mo(*L87aNAf&mGMx7@7L8PYGX>x2As|C04Jp1h*TbO%qC^=mz<-17RS{l>}Dr$ zQ-MgRsL?8$CmM{h?AOXsNqG>J=CNb>iaiModRiKd|G*%^vih=ir}T3|B*=75pIE3X zk(Z~A&m*e}96fTL=O4hyI`nVMMFW0C5ls7l}7gCzNn=TK}ZDhj!dx>n;wN) z?8yF#%C`-wxIDUatifHT+aKamNvI6sZJuQ6LW8B%#eYS)MGWm(s&*Y~iHW6(!;@4X zZqE_7DbQ@<%V@@2dA{0Iv4JEuQugWDB~;jok?*cyv+9U;aapE@@E%lsv`JJI5_ea& z{Z^Bc+z)>-k%`(hrYE6XtG*=%l1eFxP(~>d(i5=_rvAd1x~akG(#NF|aP=}b>&N>} z+i!Kpldeq(E)z}O%SbX+qR>V`7bQwF>bxga4kwdqR#A<29^G|XUlrwCLiBfxt>#A!>Db_@S0*xo(FyY1FlCs7kRBSMDv!GLUp4 zC8@OanvDqa@$UWw5d?5_%rNrT^WF~NjxRbcP&#=gZU&RVJ0olcA?%=6Lse;{Y#y-V z$miiRbySkH>N=#JxYG1>>Ll_IZ%BoC>U;TM{e`nH)SlR~YV}&bfw0`{+So*JPQZh6 zOU6a^YjR7wVSH+9$Zxf|7-|33KRConN2Zil=3#R2s4#^W=I%>BjFC-8F?cqK4Z0?> zIHPp?9cLJ)RBPlKG#+I5a}KT)7d$C-DMp1#s)EOQ7#T3!IEteFeph@{f8Wh{)1fEZH`vlQee64zOB|>_A%M1~lhz z$_RWQh{0+^(_5_zD?)I%yalWz8ZM|=)p23zrXj-s@f3`FBm-*Z`kAgU|42WM^6V^WFioX}eC~20{ z19VseYv&CP#>{(Q?M=4kO0+05D99L5P!1Pz8mn9CV>q8fCXA^__+WHI<&g)HNy{UP z1#Q)p0Tnr)3(|pDYcTSQ?aH+rH+~n%QYh&|Ck1mebDQBC8mQaS~b%`uB#S{N;&(^O||710U8`YYb}$t(*d=I}b8Lq9@|*#K;9S>+Q6tzOSwQ-34FM?{EHpuqfXxiG)nC@4158V3($)+Jui8k?-1tQxf|)dfdUkH%42NLdje?kdu@663nF7kWaYrY1%jg{o;h zII-+uvJ0(H9L+tKse|uH5c1RN&AlngsLWdvB0RWSa>@>|$W-}nHTf=zBL-Z7lgVlXN2_=ufZica`U>^oL3ycm7 zT1yC|N^2Mwe?;nHa8A)ua7%3|@|RDr3ZkwropbX-!*S_^ct~J#=ch~MEo^qFXb&tI z8BG7N;DMw;^fE&Tj6H%{aI&d6A<@^FGP+mz(`^YVCn6DAS!iID@b=BnyVecQV-?y!aO#-t3W5REdHJ zV@stkM82v$-_q3}bbsG~Y|CL}cWS$&0;~#53(bh}W))CI!`Lr~>^TOG9avpe$z5Gk zO@%J}d)rL;#ZTm7=3U4@&Fgjc-f{pHMkSF-<#hg&DEkfauaV{bN$Q%gB5K0JQ^Ly)N!c3fWQOmUY=tLsLh3BMn zxtr`!u9&up96R%0xH&pG{aaxV1pYpMr$UUWw#0t)|2(&D!!3nJ$8-{nRyvlt6k@y3 z*{W|spvr&|zB6}d4e~TkS4Nzm-Y4X|dOQ|+v!^`8(RBW)!B~*OxITghIA9rtc=*Z=*K9oqe8abnOTv>k~c;w}bRe zcau`-s*xVvOD8x?UgINM8)@qn171Qoc&13;Y_SSGo)*?d6DU;$3vfL|}s@W7GYM7{MJo=4pgrXA4>fjouP+HrC(aZ?#&XCGYvj-j}{m zE~{&{lJN4`W9ZxE<~Uy&(Dlipm?2P2^IY8^+WuGx>*p>+C+Z`T*Ot?M>c|j_6RK%z z8goQXMC0N329dFHn_34?Hwq|5j96xUO*B7NoFn(NgVKjS0%5l+Mafla&YXl*>TklP zV1UwZ?QkO`676k3gl!zaFNNJG;|4@lxwbF5lARvDbI^SCiPkloog2ofc<$%91eV^(4PZl zS=W#nYPRpyOOfV(uYhqA=ocSte5EK_RXgaS9$H3-MM83MJOr)^fpzILO?--rNa%fvN z&$yLb(go`GXUFY&2sJNkS>2|cEKp`&sxmI$cOaqDd)}})$kj1;dv_u&PNwx3R+WBq z4SrXcRtn-`8Cv=Oj>KQTmL1`g<-1;se(>qcxL%XNb7#^#O79*3(0AsP=uvKzwu+w% z4S4rQT!R|dl6-&d7RfXMp=C`-WZ5;LEUv9&Oe zktZKkcJu2B8XE2r9^~ue6YUe^am4IxK^gsEquv>!KPI1Cq6~r{++dFE0T8~JQ%s?u zRkqjLOsqXAM+pCD{KjmT786wVtFjga=s8cVp)@#OePd^N!c7cmOihv(V{h6y=23PF zswPvAk`B}mB-Jh=m_!LjSxJ$VWA?o_wc8#1}-p*$>7$tXrBX)7y)E;6D1(;2gYW zDN5wIz(%Pdu$I7n#`}kXi~7K6Ki~zU*H@6HP8ie96QL070~3V6MK(gf0)K=yn=TEq zCRmG;$*c-x^A0ZcZYQ|m4+d-IPFD3@mf)kI?Y{bE0f>Ncv)@e1J-t~=kxD&-4K_&t z87Ksy(8vkGW>s*GdY%UHh}$IVX9&+#v?}3-s(hATi2BQwk-X%%VEHp+eG$b2zfwSZz&sFAd)=842lUTGkW<2BX7 zU*gpRL!=!F^D>{)0BqymS(Z9`ulMcw2~>ncwv{buvjf7Vb25+f8;@%67fM#FXesO; z_PqWA%7;TeaA1MFJy{&rxfPZLbM`9S%|TV!w`|SoI5~lO7S&?Rqmp%HCPN5i2hTTZ zLHH6M@_eal%MVo#WcG}^{p4LB0=*Zvbl#KILCLozJG>|)Pco6Z?hjfm^tAH3qkrI6 zZ`C>J(B{N5E2N zQAAXZwx9#N%~g~HRpuGUBpX4CPT8It_OQRlVeDAf$x79iOi7fHd(>^!57TgL*Ipz#D@U6+*x7w2j` zgA*|HKPmYhnyw?mAa7On&TTJ8;Src|4ni#W{DqsuLfxah@k+N9IV@dBB6q=uozE<# z>mhz49|}J$An+M91%6vuWu?LYl*!t}e%I-Si~l9LM!a;5EY|%)?#f`%_{9j>DCLn&Xf=K=BO%j-2Y>ju*)#3dG0PT-YaR#o zL^y$Tc;pLf+Pt7^_OU)*+L3?;&n01-*qvnl$={W&hY$HcWwjQOvQBjKv6y)++%h*j zmdy^EF)YD#S;4;$G4~x)J8+&px&+x9)2WugF!;Op0Kb)>Wy%J6)9K1`H^3T`VZ0{fC8h<@@_HBBqo2OkmT64Tv%HsggzNhZY=R zxm10>W6=|_YqK!c=mfYzbf;e~n6eNJo*MSu<;5SuX9Nt1=FAjMuP{z#&zEPq56k^-F9csX%=-lHJk zRnR!w7F`jGm|AWD9mN~J(}@UXk(&}3r0`6#VpF9yZZiYX)uimPv)DHY*+zxlJS>*Y zO}LZz&smUGr6+2<8N1~TRp{AGuz35+VL>AZY*2XvR8WgJ1JvkPfZ?)$Mqkdsy{4Vq zqKRrtjELA+uW7DetQ!^rO zN+Dl;NmCL90)@5-PY?Hic?8MF6Hxb_dIVv8#>#8}S~SAX zs)BW%_kpb>xcd|yC1M<(9z552fUi=pRNyD)OHPc)UoI0WCrA1xr*8?ipL~HPxjo#(bWyslTL8d0~gs zF4reAkYOtByFC5~hca_Qcs!o?T<+lYprY-Sm|ZkQ=dj3KwFWFQZ~lDY{bT(1`y>{G zEx<;(3etO=O-cmvnBKs4L^|Q#K?KErE z%*6|6oG-cPFrVUKHB~H_uq5Af3=<~P8xP0v82jIuS+*x@z7OaC*;A)Ag*uXl`Af{O z96B4!DgBvX)$r0=e_zv%3GBEq{X_?g0z&k-?cMSEbE#Cw zvLt10nVDfLrR>FGn*3*0p>bKm1(CpV>9k1RC!;Va?&7A)09;nBb1%F$ta7E}ms~QH zwgq*dDR)*mOaCNA_IYJ8_aDjS*DgPbK4`G9|0=$$zzM1GA-Vtj-JO_P24O@_TvcKW zgC@(OTnWuO*~_JH65vfrv0So21PxJ`L^e9c*A{H2R-|58tC;`=YH5`VwOC86)US_I zg#pHO)`*!JHjJVFhs#vCu#&;6Oa=FXfgeUTH2i zlpB{1G;A)lnzfnWonXTrpAQw*EddHuN)cyeuUHsNo+nPE(C2D}x7Qed{O2+=K$_Bm zMWR3i|6XqpoxwQmX5Bthc-qmmDl(#!Men(^2n{a1%OxrVcc9uoD}Ph6 zl;#1W;UWZ5{dK@2Z&>fv1-3#Zw~3)Ma`Y;oUN)glkQxLXBBX>8x=cG~*vC85MF%N@WgA&)y`K_vr%-OWos zb?j6_lc;rIj_DSDBKIg^;xdq*i?3foVTB}$v%`V}w2n72G=nJsKLyHry-9+F8w0O2 zVz5nG{yIp`7!oG1jkvU*)yeVq=HHxOz)3HlvZ@+T@HdQC8;K?r{(KpRo%jCgjUrzl zmEAlEjMc+36wN>%L?oYxB9<#r;ttiu0qU;u9gE)7Kl(wAYff?(4z3 z4}$NR6(Wskq#r6V;`_1dSCrA8eRACSH}T}WrxdcX9{#~*Gi|Wa-pPITk#W%e8W<{; zurPm}>W2{L54)EY)ENZPE?pKf$&M7m@EmvCC==$0Nyfo{@kH`Z_B?bh;u%Lej`7D) zPY6D1|G7SZybx`n5yznaKGTymf!A&dX*ka`bt&djonqY?V(?p^HN;73_$|zE-aSyW zVAhN?vv_mX1!{?g+#~E2`L`LNUaIY@iS=}y6al3IiiE>->I$&;isKtVGUA448ez~r zsBXI0B$D~vk5OV&4=Py&bm#v}zGU3q1= zmb{Or{27zOIj_w=P-;*=HVC1iqtEgvvgcnSy`|)Ewm>F~Y8GLJO#SdSS%Sw4B(G4k zVA)=uC=w?-)l|odo8nrKmY?oke~7~$?36sZH4Z4JTZ&IzgqFmanGdOE>Fc>js0HF+ zPPZRe0Cm~Q6}3g-fi6VLdLlT)&IZN@I@RKBZjj*9XgvrZ{DuRL;utq*a%1ZaJJD!% zc6>FojO&Zf`Az@mG0^MT@xY*&nI0Vb6F*PZZ8&RZrbBdI#7~=lXJEkmlz_@r6{>IA zYEkYT{P-g|9RxOUUZ#+3QT2Z0*oY!gN@xDIu0wKzt%-;GQBjWWD*NRhpA3ep$;HQX zf4AUD6rE0^8YbP4FHgYFod@NmlA{3h)khqbTXNLdQ;JXFxK`$1>?DUsX)cp@WN$J?Q&8vziq$?A%natvVy=(X#u#O9! zq?`^G@LyjmpP*YJLcvy_ClN}(P>|rGwwW?hzZS5aospGSs$*aaNL$rus~LH~G$V%Q zhcKgBD`V*ctf8Bel$d?2R)$3uj&N|vqWy@Ay^)HdI;;$~madm@i?bM(M%8MUI9rTb zskmLp5jC@#e(q_5&H9H<+S^57pnwfKFDpitSa7ATaw2kH(kz=eolsTGWE9MI9nA_Y zosout(R7U@c#PxJ6!qn0Wz>{x6%Fj}WQvZ6HEr68IQV!1HTA&7oV9}2%%a6n#8aNPPI#z2x3o7URt`nf)qBblQPA#L*NyB~EI!4YOG zwjdGB%em{6_3Usak+r3x=?F&8exA++3lV(o4;mo%hLFYDT*A^%g@L z=cVs%ov;z63YS*Zy1q3}n6O~x7@GDiTdiw0Q5vK_o<|*KR1$0|azmR7&&^y%n zny2-mLR)1&i00EWRQt5(B;Pqq^jJB()R_;Tn0!2E{rRfYs|zSa{#!%R=+oO@CY5(UDz^{uJ1{@6u$3!S}>SV;YX_r|+aP{M6Pv zxNh|o4_}y_Z@kLwc3Z5#SNFiVQzWX_q(;!*k#shzShc(=8tug%K%YBU%Q9m*`#5@ODUl#87;Q; zvl{HDY8#`u&9dp_O)-=F6Z4&ghPzQVJCHO$@yIM<+HCk7{2SmQ%YTGfoThrpqh2kk zXX7MV+ePp%TfFaQ$6A!!-62@nM@%(0p9IeayLZ}e9x*;P({f1`9-CS(J}>pR$8%>5 zuEc>NhaaBYDbg0}BW2q)W5eIF@nayh21N-mm~zv>z0cv@&}wgbjot70S;i{(sIO}7 z&c*Bt{U*8gFGgU1>7fU?PE7FXCi+3%-?SG6Wq>< zA2z4gTQ5H|1m=7!3@gkQ@>!moT_xT%_^}2Ro@n|%cVY2qX!~B?)IiMRC&Dr4xYTtl z&U=1-zyM$Z(sV=y5KSQuZ{lY0m_(V{hI$>i?!735ZhE=&%sRAl=cjM_xvuOy_!a%I`HM(U~~M*r!^LX%I<=L=asr`NQwPY17x2~Qx=1va2CnGB`e$sdWQ48V? zO&aM;smoo_&T{D^Yo)qz`9X+0@L<;efrhGKRRs>?%>;HVbr;b0<+=y?(7v6q>yI+gNZY8q`c5i}$!=Hih5ryF9;Mu`md zSND_j)Ea_|h2Rr?omiGfa4>?ptJxallFqj)O>jn57WLe$&(aqykNE5oe+D`Ew^TES zL5T0T31`x)-7bTgJU#-Ptw7tn@?rP`@9F_tRx4Mug%xpGp{tt`xk`k(H}$WQPVS(?K^_!!3*Y0b=t`~M0DXpzmz#Mwa*_sw{$M2V=z6=mvg&LbwKHytqjP&_ue#XdS-@)^dXU%ZTK8FIk|MKvo z!5g7J=^Mw7{1tO>@Ke99tKU=pUYA$GpGd|Emf9kTv$TpD$mhRggLw+m-zHfZI!^;X z6)n(o3}5U&7bcUiSacJMz<>yv4FSAdR}5^C0{?fEQJ8pn2F&urCXR1#NT$mtW&;6? zEB?Qu>WWS3Q+k(t%IA<#5KoMH?|Ul*kjfwae9CWXzqgC%3}jNehxg<1Q$d(ZoiiYT zc_vGuwx}d&bF!h7OL2YF^kLP`WZ9;@6`l#jA(!XN1do_kxcNkuNT3~GLQ6p6;kmB1rCULt5FgGgNv!RZ$ZSE zBpnNmoGIpwebtFTs_PSAUZUX280&9g0s#}klV`_?M{%UJfIbD6Q;}_zm>KoS;E36gzR9Zr?WRG09_KtD38#> zRm8CLb$@tlMyC#7Pq)R|@=R$b@22QDuFJu@;B0g#i~bq4f@qHYY8wGMo(9o&SS@BG zeNJpLS%QputO!%uv~i++BPKRv`gx!^fd{!49@E`vv5fhr02v#Vj4i65YVmEYTi^k3 z)L;3!cr}+$1Nk@t6v2R3L>KT@IdEyPBA6d%VVHkRjm1|IF9Y@w1&FLYBgl5TqpI9! zZLh3IQCJ>@?ZdLbB6b+)#^*2}VCss29vo`ClM6ie>}#6l3b12pdGf$EtOr!N^T$PZ zyuI{`AoHLJO9cXqlXmWWL#R}@kWa7t%G#zfuS@q2hh7?5T1kBT$VfQehed;OPNL;3 z#SPH8rDR*+Em=-~^h{{T8b#lKvL{X3_33a+TEDN@-q zCQ5jS6bn?f{Rum^B_SEb*f0*Xjr?h1b)tfYjpv@4DtaNwVQ2{ZDQmO|-`vB~gTV~T z60!R-cr4YiUR_m!$~vOu2tZ$WUnI68u3KGlanNr!u94k?mb!QpeTeJ7wZ-|%L_8kSoFj<4LlQ3hamao| z(#Tm%R6AWfd}L3NM}Q;e+nPLpjV~|&!ku#;kjODYZ;OcnW2bbzh3i@Njqop`k2ZUi z;PBkeDNLXr(iD4v4b%K+l8ic&%?U9x2o=|Ty_T_EJ1fQ|Qpt84`Ib2#WQCSSg67P3 zL>%uv_n|0Lwe@v&Mim<1T9RZ$e>@+l<7g!p;SzuxJ@bcGbl%Gg?#+o#!>)<%qVOVj zu*vU3Ny#&7XhB1gOs7QIHaulW5}ElT9++E{Rnq8y{~L=Y>qdgENhk=_5z#Dkm`=1! zR+Q#m_^|N?s$64I+G-+ns<>o2SBIZvH`*R1Jxe{*1ao6qs^gc8kYmCFQL^Cios;PH z{TMvy#qtA@7|oES8sw;_?4Tou zi1ed~ia{uzrjDhuEK>ut~>$w=@eLqr72Yar7qS8_3`44y|r1 zEVOh4wHYbCu6Z=#j#SKonmUU#Uc9%ywx!C@QTj1B?y%6kcL=2W80YM;l7f@Y8Z3hA zE4hc78;c6N?4Ye-3Q(c^y@igQ5pD`?0gG?}dJkbK0iKE-?-c3qV|{obIbktVXE1#t zB~Pu%z_(l3&Ds9CYamyEx?C0}I%q5l)k&G+3}gF%$GVQv)j=vwK-xJ$JVL^|pO`6t z*cvr_&l-^6kY7+wm|JKDFXr+~cwHscH5G9y0`ybC(gD5zFlfyMl}W1jrr129&1(+Y zZOlJ?io(AG8MS@rGF^L<>>DQHb0+k1l&3W`neD|W(6Gnl{MdphS>8pROxybb6X|73 z>HPi(jGdGz0_>hM7+y9Knoag1QeLqoV&L(#aM~-<4n>LaSP@n=+CkjfQPV}?jyZfw z8+1C`I>7Ba&Rm<7Qts}Vz1X3}z{45A52fY3Tg3ayyP4Xo$quK}|9iTgKFzyq$1Bs;ZX3IhpPjA5&*wb5X7a>TD*JWfX4&=w ziB5)z#;F0;HKkml7dqKrmf=9a5Cv%^9R-w{RJ{{J%_)EkqSw3FK#^fT8MkVD%BOq|9EveDnfALLU^DK4R__iiInkr!UxRBXU98*LX zfxrp;&)B1#`S+7hJX;CA8GMj@bY1i?loYxvP$S4!)f)-o&AXd>6*QR@>srBb2kh7l z(OygUh$*#)+@rjOgK7Zt>s}EY*ebiS)_ou6L)_cm7VwAHk7wQWko70@K!(=vqJSp6 z4IRN!QTSV z8xaCu@8jGah93>O!xfc-4+B&#pbw!4Kve>+7V0q$6n#0N7-b&6q;#0LLe|8cU&bsa z6?&yb>2Jww#ya%5UAW`7CZ8i@x=-D2JVZ{1!xcu>lemX{ARg%nj%{T!NBGJ`tv?y8PHs?&<$ML`9w*cRkOUZ;UNI;c*8Fj_EzEg@mBS-mYHD=;Ccv@Hk{ z305IBBPbPG`UCl3fbYX0SUMi3!aC&N(3970ZnF>)_vY# z5hVG$NWi7*%z(d-t2GN9m1yRaQ2!h??~h$=Rk8a&5$MDnC*KS*;pBMrI!6PK#>?Wzk?&4Xw-=< zz$oa-(zwz5NbZu#RTrHp`sv{0cO}SLHaWn(kHh$Ghh&v=5(#16$V|g4v2#N5aVt@) zbWgagbWK|vP-9r`NFrn&Tj&uu7+xf&2Ry?m^(?W5p%VC4QP=W=h+|H^XV0U-lSUs8 zvB8)F94D)Jn-btIX%F5Z)Y1|k&Kp8(HmDccOuz1C`DiDnz2W52(kWzLI1O#D5dZ#i{5=*s&d!Am1P$uuqau6d zRoI?XVKlf*J)P;+HJuQyseIOPfdl)K1Re| zT%MiPEgZj^qJ z6P_?I(q0ZT`vmqg2o>vIjaE&EiG4!hH;ReCIo#b~ZeYMbw7Z*LaF-fELKD6XvA8&u z$J;~ZZj5>pq{B%12Gig|cZi#_38c`~%OUU;&^48}cor@g)Tja!>64I8^t#eU=(Oad z@>J#Y0hiebv2Hn`*xdx(@%KUsr$XT#rv_m^WC)`Lvnx&y{1Ud)3RiyzAcgZl;F~n` zhpEuUfeNDXxC2QB_1)}6L+oK_>Jx#Y5J1X=mWg0(+luqpwh$=)iShay{W;DJpXxd% zmo7UKWHnVb9730UHzKYUCf7Bqk`DBa>El}A5Xzcq^k|SZr+>{ZUN+R}5=SL53@V8{ zu1+;;dgK9H)esRSDC0Vl?s$qUVt;amxQ!yh0q(h^{i2>69qr$2RdhLh;KJDMczXxO znUsr@M4o zt8v}Hq}kdRp*P|B39eEIaVNsE@+9+;HgT7!-J?b$2&t>Z;#xx|k5BE#b8ZoYE%bn} zCgri`;JQ_qqg-cH9a}-8+PFwGZL)89&xC`*LU;Mlc{UunBE!YYqcd33QjFod`T}(u z7*bVFBo8|Q4&94;qiOQiWUUQcjHauoc*p$U>B@Xtd+oW7EczGcH&jh?LqIvv6*_wl;&)yu8j8E;EB<0n7wR`DI=633(z;0a$m-6Y{Q@Lx+Q)n8lE;cvjix&{Y0Lb~y8mPgXq@fVTWX&0_+ z9iT<2S}-BF4#>H($Ux8nQJR~ZDMkw<7eP0!x5$xW7uY4?5tDn=TVWhd+u3&jEXW;5 zQvCy8YR(qDc;0sJwTx$p>1@*$myFX#F zme_&NWaoer2tk&Gj2wQLIUNwzz+(gEqTOQBP$DB-k?bNw;gL8e;%^lG!Ob+~xGG7n zTzbhmAho&?AY0x&E3R)YC2Du5c3lsGZK*S(Xy$JD~RDA{`A!OE}R zAdw6Xe`55|?a4T9dJ zI|+e-`FiUxzyZq&{@*|5p8vSS@hFVV)lHFlnb~u3bgF1&Kgum(eVojWqm*7y&2g4x zW)`Ae`)tGFpKyp}MX2u4m7G zGq&RR&={k!G1j2|=JE+U#zDTVQYsEARaEdBG641qEeR}#9E*1A;Pm&(sEV5SaF$5R#vyZ(``z5SqO*bd@~oTZohT- zB_<2Y|NKyWTvfW6N`tnn)W5z?i^pqFVqg#R$f@6OijUs<2Y0B3E-*0l2fL|}boH0e zXROEGP#aomUR|tJQGKajMy;Y%y_`;tJ)p9EYb=A+=GZ!aOntTV0rF@TuY4;9yt4Jn zKeCUQ-r0Y;!z0-i<_919s`hSS#k-Rh?_w8}=i_PegPF0Zyy9nDZ4CG3fab2x%T;}4 zhS6m&ldp#-zdkHwc;n8X>$_F`U%LtaY+$oLEi|Y9`p&TMs{)Eo7lN%Bef?Dcc-A3^ zhMgGx)V4U;iTAfEjQG3U0kgA@=@4A=Q z(B^nKK%vv9ACakt{V~PB>bq>TYiO9%Is-lh|iddCpt_^;ezGPlS&+ys*hj;!X}K*$ehLEv#^VKG#}mj1O^%a;0$nDv;I0)1pd7 z>ZcE@m=H6Xe=z-JX$irrwCuV1sAj6%Obw!}$@=#9@_Q#feC(fKHtxJI%hgelf|Yn{ z;GZ(S=~$J%nfktS@?KVs)K`suKprfG?)?G)>f{OHk9jXg&+E(=*-sz-h1e^=YVC>X zZ+Z3DpVd}fh3!^m^(3{isvCy>I`BW0m7vrM-1pVe`>An1=@x6x3Tnas#cLSUe3mw& ztv&LvWxF(9@8*0`Puj2jDz+K)eB>>U>MmbBIxt^cHt_p&g}$QvHQv8lw0irN{fyr0 zFO9^VHo+dP8kJSnlKLOhX_2gkecGEJGmfn6T~C*x-v7BA-}30+&p(wGda#_dO|L>$ zewXaROO;SpUSPvk-_2D>N6`9=@DaPdm5qBs7vt9zTZ#3iv<*qCdR|o^k4i5)UH0@| zQpq8puAiYa!RmK;z)aP(uz8BMakVTnf&1|fEm!eMs7=+l*H_Rmb&5Y|3#*rkK2>1= zZ2m=P%l~55UTxmM<;OtJ50*5u4=|qns-jf7+8KTVO2ietkL4<}czxzni~c*u!9j49 zU;WCI)59|3&HB+fF4y?h?7YXkL)RpaDk8%T^q3ZYziM4M2ut(JN3LP~O^h2WmM2_K zDO3eMA;xh1`D6lK;}}|h!A2{Z(r@&Q{S;QEzO6GYGB5G1v!0ik)gZ&OOf#2{W)9z0 zI!WQMOe%Sd{^0eJgZe{bwm<*PmYSeaz~H*h+MgvvwXW56^=7H8s*fJ8K)bN7!1~g; zEjD=6b>cB+`s+R&SB8FT_DAD~p}FUgqg0s~alc@RzN#r0<>!MbHK;8zPx}Rqd&WL7SAnZC zVNmE%%CSD(HUNWgc|Pq=0@lZ_BF7@*w7;%(?U6ZO4J&q9WzAsQ zari*feJvP2`zD3NALk5kb@{3tYp{ViNvU{v(4#+ZJ88&rkFf9A5``9tt8 zjf%woS!Bf3_fD7XnQfw8I<|YR>BtYi_YAzq&; z&7!c?r|PMKXbS1M>VV74J3UdrL zwJfGjt{eNXb%y`<4z*tV)MR=$)DO(OKP%Bek{hethdAe z(F@LH)U1XU{TW9u=Jbdf1g42 zrIms6eWbCOvtd6ooht_RHVhO6wctzf^(|l2otxESZ%84$w;tT$zt)kTf5?wGA<$Fe z%n%8kOH1ZHpRXpJ$bYL}TDYc=%4|6O$CBnk#5)Xu!M$S@0_qtUr+%v{Nezc-f}>K9Pt97H>(@hro#7PUKM*$!n6yodk;RpD2(Bc=93o$mGdG zch{hYkH=`xqk7rvQIbWPFs7lTfQu9Lw@zOq-6V}iynlrv+uI7SvYlaIzW`8V6Lg1X zqTn$-AdjM|2?`U^2zc#{6R{5J#XHH=l}#wb);~0|=b>v)M35N&euboQ%(#n?>Vi>U zWP`ivXJ_u2*KTX*MD@w9kiS#97FLd|8*owIqAh3>IJuf%3 z>v-RQ`NJ^5R_Ta zTRr5KW)y*YR@(eQ&$&sln;CRiS(dd=r)=-y8ySkT{7eWIUh84pbC`)!7jHhk!gzw9 z7$rFAcI)&(5vLZAa$}B3b|21%t=FZx)7zbLA@FUp8>n&d?Mb)E;ntvc+u@9?!&jF9 zcYa;H$C2Bm-h4ms7~ia*WvcSSwR7Nm6>)Kj7FP)h@J^s-IU=|fo?A)n3Ch+z|5SmY z5Dw>+?xBLzQ;L@Akqj^m0pz5lGk@}$GBt(K!`|HGm@Jlg^FbbZbu7IGR{T>4lZlgk zN858y2_1w4IEFQ)EJS|Q4RZ{!QQ6L0GQH(d=OBLmAecsZc*{!oUpxO22CWxXglgI7 zq-s47?6R{AQcoygfU6Fl9V^CcY%+T(rj!F&PO3M{(1<7Za+-!MeOJU9RBHn)6UDB0 z$re|t6BmA+8oNXpduDICE;2NpuGiy5j%g2j$P<`^6Gi=3kAyB-YC|U6Sr8 zjeqcm8q&BHZdFKfN$_PPEFBr#tt1}^FZ-na-%}rz7yUI(mbdyn2LHCYSE2}qP3mOR z0at-+Ef2=M>AbWj?YAY}l@iRcHSY%4AR}_0pTLg1~B?%?cK<;%=RzoRY_I%ipOBAS*C1XUgrT`)>+YHau zt?r`45AaX?EJ z*-rjsLxY)oGJ22Rch9Io{qHHjq28uWH^oXgDa8;bn0+6Ku-Pzo;(Wlj%?tstnXnDa z$&xSiYg`YbZVbw0@|9@efZYTS*k zs6&w$o}|0-dlMVE^vK#9lqPr-oUHRJ^HK(ve4jspjJzU1Cd&uLMr(($%w5d$R0QIw><>MPkmy-dALq??&d%GYC`hqH}Fpf zDmwFkAx?zvhAA{~W~=vAM|p*`Z0e4S3COr6SP$MW6QJGXEqxX`k{S-DP|#(bRY~rfLmhV4(I!m*ugrYSUa2N z^E{KhKF$&#`k!O)DKg5Ro-HVPes;s-A#t-Q$8v;S$jnS;w&}=Ffayd{MmF8v`UREJ z6T4nve2^siFe_+nr8NHT?03s`jB`h^kZM`h{TR@RolEDc;?!y9NBFq!Y`Refk|I+_ zZA%=3*5w~4-h)dbM&{YQawKq_%ivM>CrBmRCM`whe!d%-h?VQtjnZIQS!26ZlVyG= z&n=V=|Gc{#Yjq=HLxFpuf*qe82fGEXW=`JP!7&%;`YV#k>a$&*7;3}^w6n+c&dq(r zX-mDcr2<&P0s^4;m!z`1Xpzr$ljg8?noC+tD2f935-y#`3dmnUa#A~OUi*{PJGSaR z>`xR+$(9{F+Rkt11@iY1(29UJ3hAoT(^T@zeN@nNjnoG^wB_3`vAjQA{0U;js+&22=Ab^7WsTFMiNmWgL zFO_KQ%qC`Gt`C%YhG$$SQXEIF+(PB-zpqSOEYqa=q*PqHl9ucqaCehdWSxXrkbo{j zU}R3DzIqu@+2B_3ZTvRzLG7tAjns8$wATk9YkL{Hj4 z34IvW(ML+8QeqdcY2~hU-K$^kCV2C!&q#tc$m>}NTu9Mtcjh4ljVd_1>p~(UG*%S+ z(OwXX3W^3+#nEZV^qxMvX3VV1%S7;F8jv(Rn9FWAS+lZpBj%GG>?$+igS)~NSFrhU zvHNzZ1Dk4U6hNqzJx&(XWx$&>MVmddpFYD3AiW_&40fq0r4ew>kBX9Uo*;{BYnDO2 zA*~M4cTyakwB-dtb~sEYj*KDT*gaev!>zD}D3@^pllvC`8Y>k?%#`21X=j@4reieg ziRw6rnw4000}7Z;8D*;R8&Gvn@I#wgcgRP;iUSmZC`U%yh4I|gJMa4h`No=tb$cll znRb;@|Cp-btZQ2AZ}vEEr`85-JZ6(TF`W)%XZaPm&YQN6>Q0+`a=HhxgzPFp%bs1l zK8wqnBF`@9T9=sxGP~ccYH#3O;NdN#903^kWtUYTS`dvGHWFby^;nH9%k{2qlnVe+ zWix%7Ay&>k*H)t3TVC6qs&O$GNjE6)(jLD%^W%i$#BA+mRQwM4O7yx;5ZvZK;NBmM@Uk}U@EN=XzzO}ON&hYa`>nS2tFx~cy!GT zTt8wAOxDaz^L*^qE=(7ViVL=D&)cL%;ZdmK`ILN;dLk-9mdDV}{3s`+6?2}dGve)9 z@`^TE{~ZNQD$BYM#^B1i$wG!URI~GF4Gee+u;_MWzI{K>0JesFcb1fmj-rH>TyqjF z2r=q<*%svXK0P}G*oFy5ldT@7)^g&GelRr4q7Lnlpd*iR26{HLwuw8^5VEk+=)3-w z#3@kX-~Nk?1{nW=3u3f}`viVMg+t2J5j5PxA(o-QeZ`F_vkkDg_)b19Du~0BXk-u9 zTu&UF`aN=FIEY=Cr4TKC zU1N=Q`)*JsW@AD?2;iPa*H2L`LJKI|N+Y&!u1?4u^Do{5;Pn=5ohf-ZyFh2VMgku} zU{x5rPmHkzU~XEcPE&v>b}w%jHYtyAKiJ%sA{t+VyL03QQpjcEa>t>W3sjSeQJ~b{ zC0wW@hb`?g>|50!^b#`Uk(<-oDfdKhWEe_U1r_Ct4naNC*hCq6DzLySLGn+ipd&{w zX3Vw2Fvw<&^O_^&94xM@v$osTgyHg5q4X;&%eB6rhjySiF`&4r#Exe!=~~RdW!%V9 z6l_XWZ`2gx99y6{71l3Bq9!q@cDy~9?d1gzI>KAPUd=fz_>qd-(Zzea%K(@eZ9YLA z2W#s1Jqk?!e!xF~pa>&?6bUAPZVXmH?7GGO1dW`En%!V+!wRPCdG=U!P@Fi@`wR@qFvBRYG!NqyWnu8Y%16LNXW*o>dw4cVtUtX+ABhH&<)_8$u zvf7~|Yi;%7G?mP>M@5a#+GN064`8Z3$R2w3e^{I{m#0X^LG>QO9*v|)E)ok=03)Y_ zY@cFwmY2hYZuC_Sx_Whz^#TuZ|Do+Tyn@?fS5eQJgz8GEf$6=n&0y4n)-s+W< zrH?oX#wDH%bdc>H3=WOfbU#ZuA!!GC)2q}Ck`^3}tQ}jmG)LOd5CXbOfx}9T;bx_|UVnPGYj+?hL< zo_m4kGP7V`;4N`oOgJUX>jRwhj)_7HaU#?n#*9>{;Y5(WNCcfda^MM5v}th<$C3jf zwg+=qv|2zi_BSk&b6e2NI4K8c=ssh6+&bAM@Zbd03IdInzxKCN=*V=M@u)G4OfDZ| znwh&X*LQ%u4lV@#QRxexU)QwzZJct{GkUg^=d7_3V>LFQ+c|UZSINC=n4wbV)TO67}N)li*8f!mG@Rccn7x2u~Skv#3$;};+o5hoVzY@~VT zc$;aaNOHnUa0kK?x!wS5Z3hR)GK|_ z?>qB2ERU|Rw*$%#NEtK=#rUHOsBpp)sO^feTrnv4D*X(DAHY9VVAqp2Gu!H3uxUp4FD`aT?Q$Hw z{LPDO_*st<4MxCbuF(}vsOA^su94bEAh}a9SJ!>0Y`zS@!KM;cv*&&=AdL)#YnQ~N zCpmCmy;!@(S5(G*_q(T=VO-qaFb!QBJDe%f=4d9;v2*js#2cKoCcI!sO&8!yeT>~f8DdBcCC`*pkFild=##7dv>?2 zl;yVdV_`Ctv0Y5u2tK@C2+4XBmK-8iqa90$?zh~LklAuHMW7AJ*G_AxhuCQ;^-z>E z;`^x>(%on$YtmC9K8B+)F;0lf9VA+#;KEl8CwhEElDq;(v*g-|FXGAvSB+ZvFKzDv zSrU%Ibal?B_vFlKxA~48r)g{*gmC7`BH?g>ACgdHu)AcyeendQau{6#GBn`_!7um3 z(@LJBacJPv`gdwspW0wj7`Va?XA*N}3@%FlOS+&W??zM>B?TD%{ajVE5s>ygIH7tk zd3DXA>MEK?iuZTmC{E-7n_k*xlL6__=)RHAbTDYcVHml_$|}jGnc;{MZ7B+dp!dF} zvWA^;9&xtVf;)25h(@O8KQdJYOS6%$=h=&(E~uh|a3|)Y_8KFW6^=>tBEbW6US;~W zK*+XigFtvX0bp1K=crB!XN!K`YY^_BDEk4`pd|@4Gt_K&E?Q(6iv*T7skx57OJ0$0 z^}6c*eSgoH?osL$M5a}83%AxYZ6Wfh@prZgD(M$^CieBKj-OO{zpO#;nLi@Z_sxc!0*3!FUioS>yZ^C=2ti6Ck#%y=&C!dV^H*nd=Yu z_0XII{=K6~q_Rraqj7d#K^(PQ3iTyUUby|%m$Z_sf=02X~pvd#~`z2If) zGZvhETrk3GL$c@OlWoeT2W5%-wcygXVMO z1q{I6HxnwS({knH&D*f?T1(OW4=0Rh?tq10M+v4V2<-Qi0x?HYQt}DFMF+r7&SWyV zQ9UF`%9U^!(LRe3g@g&jSG?YEoy~^sNQqnW2@X^z>r{8IBFmFgJbZ7EOq;UGd22do z#yK={zly9UK{$~0aa9T5x$i|Rl6*nYEU*6+9kjqyL9Q~va00$>)8ToKhf>5e01}y# z+BE^H6(O0iJ+61;U@K4O50LXdMXr*5)(0TYSQ1L^G~}I=bXGX9X>9=RKCc8ISvW2|1hluXu~JYlYNyBLSxlB=Kq!UDcjviGv(nOmDIj5B8_if9 zd-%pzr}X@+AC51By@yLqnQxS#9S9IY1ISJ9ZU%85=9fdb0rf6%43^?flGCt_7uO=qkYucRdj@e! z4bs58Q`RvNr-?CY3`LwJ!{HL&ugtjG5AHN*CNgZ(XF>fQgkQQYRtazO?$LwxK;RyR-$4vLr>gs^^+qq5jODwjva~RDDj9u(0W95f+dv zoyNZji-N^_-y$|MIVQ~7war0ni1gaM&*AC{92pPJ;B!=;25;hsBvp#CoR?{{RrW>H zy7_wPrMaI6K{?NQx*mJ#+;4nN(}Q62~7e+8{}Y3eJ7QnmgY zTB`-#)Zq6y-ef2>=7g7!ta|NTW70aBj<=v|ya}&|5KLE2I-jhOoY39ry8+somX4kL zJu@s;1Kku=*+qc@jOchb^By0ssm{C7vUp&M1MJ7-(qT@7i(4y(e^#y21gubVG1nf+ zkq_{sNSo3;hLvl@l;&+c zAO5L-s|NHs)ef#RMsZ3C+_r7ppghPwj|Z3o4<3~D-7oKs4&gBAzC*SQ$qnDmpsRY( zP#*u~js_KNu(p?V!tN!y#8EVo;FZ4JT6c0^jz0&IQsUpOUXS`kqyRjT_K|n0QUYH( zY5}Tsj^!ib>QMgTm;%r8o%Mm=pTkUobJuwx57Kus|=r@S*IM87l z6zLn2gfx;USK(TC`BeK$>I?{KO=dwuhVvK5Wj3ZuWbg$!9tat;h@gLXrlp~W9zHYD zMnEw2mI4~*rFy5oIkvOYG%@W>8LiHd?@tukf%lrv(1=hVxY{n*V9C{YzsHW>!y{qI z?6v!V7Dt7}ngA@j8jwYu2p;KN1mqWS35lcB%|_@59nRt83M4>tS zp_{+Fj0$0#!&9oc>?IuaKI*Pdhi{zLjT=n~Ta#xr5h^DXg@!#cOvwn_7wE(yz8^2d z17$|?tTzO({I_Nh{uwgBuRYB4-^J;1Y4qb_pUAgsC<1%;)v<_QUa$puAY2w9W;V|C zbnEa!!>|whh$O-~6!Ea|u%h9)UD)ojIu{@hDt8M5D+VapFxrmXRm|dRG3y}Fr#U@Z z>WGc10pIUcU6|aUI4p6mO}rLf^s;JM{Ab8T;Xyd*HK^)-#Gywb# zwj=FMv^HpAL>0t?KFY_Z{)v);Z(tyTWfn@SB;la%Y?_JRA0w7OeUy5e>u+X-k!LE0 zxgwyop(QhLVEZ0<%Ag}^?s0R#LZ6WWLko7ah@#+}J4FR;!4aUd&Z>4j^R>RE7X#8K z9Wj*N!XQZ^YN|qd0`eFXYqvEGP|~8_5g$|0P={=UY{g*i?!k=!&!lG$oeku-_ zHTTp;UG7WY-u1M z5yd-3RG#?Lps^{CszJK2*~+?L`wnoC6(u-O$et9?@)b5)OD@PSND|hM^S*67w1D~< zk)(}1(Gj?moDD)-Y_cOq9>O97Ve6^LZOO1o7Bu9cRCKg!{=4h|Ue^j5v4_69OMyJV zOn8^Re1M}jor6msq`Py=gM~OLs@Dn!xm&RW57P-wG}zmDOh^}iPKl;9vymcYnrP%k zfA(EC7+gYA5g^y2BC9TGP0JPe<9r?gT&CT4}-u>#sW^381Lyp&*Q_9 zA?N5PlJAb`WLs@)yRSveNl{pv-Q!PZn|RnYwE}|+{T`4~@rEbnBC({wYCt)~lmJ%V zLnZ$;87PPXB-zcKF{o!DBhISEgbrEA9|S-aA$|XR5lBQ=EDh&;MqCtt(I%Kqmg~^se5IpQ_Sco8-c6hK zCzX&QCefN#GiF$@%OHj`EcisKi6*z_cgJmAI>*850J(eFeuQ~LCDxkl({8ifliY_ZSny5W2T<8 z{uF)Ffw^YV>W4$J^RCy)tH$B@Fl>|qvzy!a(Y%V|^R%Ry%Fv)2$ftltwj5)KcC~)3 z`GpNR)L~Q%p~^7CDp412aK)n(!TMZE#WQ5=4*D*OY|HPp3--OZ7RuX_v7F>mR4a(j z9+AT-4sP1jc1byDOpPwI>A>Nw@GV;T*-S0EUrKmX-o%f5!EIa2G7$%(rl{+b&r z3QaxyL1wE3k$r?okED#2wo+A$Otcv$vC6J56K8D48&2&XYLhLKmve0svb|m4U!oIW zxWMskco#@L{DdYB)CLN)ZGXOCR-T>1JhVy!_**XwlLNli$JVd8*E3UkF9j~QvMnb@e~l}vu_b!s&lSxL*?NllV}m_E^ZDYetV z2IJ}da7;~>YBHVpta6BNat!`TI1PXO)r9`~@3M6^i03`6H=z-&(-rM$;d@yKJNWsvyb zg{M;Ono!bN7$?JWL8D6Pb|h$xBQ#RV zi^h>e#G;Ttb6wBLtsEbRB9ic)ODc_Gf~;(kSG!88_!;_Qrb@4W%6f7%pZrLEV38nnI zZ+&RDu%T7_gC3WJdC77>Z;ryU_#h(25_;&MoMGb#-T@yq zR}mjVq@I&TLH_uo$ywB}DO=b&3oZ33OKe%q*ff?z&796|6SfsQtViki%eL+~I2)7y zr-?^E7(Hsn4#umgNneAPO{CJu^5_T+IONwF3j&Wbyl$al7-T$07h+BI_+ehxZ?gM{ zm#JE7`F1TFOu)3n|9`ObiZ@`?Tqyxz#qOoKd7+7E-fFTdcQ{mYRO@rf$eh44<$N~WPMI%>L0B}TQ03a4@HUl_D z`BYhj0alBWpn(l8+iML2x7Hw_;^K&z0k`22Vi1@hz#d;B$AG{u{Wu_C!FpIeql5F=Y+WCRq8PHg{wIRC7`udg8Y@(}C8!Pm#) zDr_+MJWR!de6N|i;68MD=Q#m$cp+I{6*mR-za)f~E}lqsvF8EpX7JHr4CU)@!(U3j zmw!*rh(8?C7b=98uAalsyAStX+-L`it*|KI#bRpk$jO54`TkoE@8!w&+v$8TkBX&? zWA7ia>%eku`w{Ph0~-v;nidV(hOlEmjDYbx?OrgHb9SIM7j%;N$DRXuHa+m0FyNeX z{`DOh2T;msgr_w)rvhRQ&)Lt>(vg3$LSspZbDt2;N5-n|)BPMDPMC>3aFRFZd$TW= z4AGW!*k@0BwRj-T*rsX)CtRFl<~VwVnjW#(=7Hu*Ol?IVHK5H#H-_TSt^zw>twN1P zm(f*^6Fqa*&aZQxZaOz!=Yz;m-FvqCRB093 z%PhO}wa3#^;>d7j9Bmg}>??}g05}b)V=<{sYP@fM-@N3l4hQGAJo$1;#0~oN8ajD5 zsxsk*7gkLe=4J=JRVb_$%t{@U;yqkW3aNSEoccJ=B@}1v+L;4q4Tja&^Yo@7LLk(y zMWlCbB6ogqwfB1kR%Wtnh-7aF@zL>j*yQ2X6U->S$WQHLM-verwCL(;{f-gb5rmHPIePHi;dR*i5l8T()b%ZxHtHhvn_~(-F-8su+YugMJrJ zfy{bD4n0iW=Y0!k;=}?cFC0npiqS{Ua+ju+{>e3E*PjFTd5emaBYctfiw;Lh3)t`S zil4y$si8Zh*G~rooJyQ;y+KSBYg958 z2Lyo&zcqT#%vS^S2cXeyIi_bq(f>Y=S^00{UN{+d4 zYMXKPBSJB}{35{9#_RtxG)O2uQpIDWp+#TL=bZnc>xmiqcIrW&?fEOsELA-}Vu*^Q^K)c(fK0i)lo&htFB{fgu6pJbdQSXI9d^Ei zdMrz#jptrT&wgGpopU;L?|t21zMK^375`NFvAF^j7jyE^-n5rwJLy(iXY*t_U~>s( z|Gb2~R|KWK?f-M4OF*FW=?Q+Z=w}@P(M&WS`}!kAlhO8Bq!cLby2!wM)^M(7L_JPO z-+ZXm>apAm!HhgK@?W)qa@tUi6W>+7oK-*SB=h7uz~cc*-5S3_(Q&V}Z1hTnEey3>o0*WWrLP3L^B7Z((;|DRw#&R3gpyVHw-Tb@B) zIo17c=YIN>7U6|@W)R_dKh3KMyFqRL0`c`!+T z&z64=s4X)U?D2v1qHCuI`?|-_SDzo1VVaNd*5PLdKI^TosRIlA4o}%5@cy3^kqkru zL3CX<4VG$BQh@@ZxPh)75C8e_t3J-Ri>o>l^KWr}6QB5In>82nnVAe#hZRwxvbHyHd_NuZKc{-j|JV)Dl&C+jPIr~<^lopqYo^k+^|h3a;;dL(G)hR$fW*EW?07|_f9;=QT5)uDf_cKA%W*0 zIQQSfy60iIVQ62zxW;J$^6Cbb9vd-h(k1n!A(IRN(SO+MjPjwzp7yo&bLW%LrZPPK z!&0(Pw_!1Uy4rmDv0T^loGt$^Xkvm7I*;@3D>PFy$u+D6Aq4z|-=_Dl;T1p0ccSGA zoZ}ou_I=ZnAq-myCxr9IEyS5)gj!kjS*GK>+wG?qu4y&w>*SC-0o3_iLpi&zx}(Xv zffM{LLfHP^9kY@${ZypV1 zbspUeTbYxKzBc`*Jp3p{Ad`;&X4(4>*hkE7#I*f;HU046T-~imR}KfOydM?#zmlQg zJXbV`-C`~rt^Wo9@YUo#TwCjb>?TaZ<)@tseT?sfLH&j)?^Fmp%;f5nui^~Q7>5G} z{hhSFvb(3x)kO7%XK^}4$Y&27q|Q$ji8@m=i|T7U=cf?JCyUx@B#P;*OW$U?6^Gwd zG~cq7csGX$MW?eL#`dJ!Who@CL_!HIUY&cWo!^2dfJnSkbB zF;>2;dECF9etm$G`I}H&WWxKd+}Ej*)fmb7jfg&eIowfG-`yDY$8d)*ze)6w(f3^d zbYTe`F>iB6pN6B#&!ah|Guqxb<02&R=g1S^+Q8*hlqQ4Qv(8fU{g{R#<8H9{AI8SZDSq|+ zA+-b=BO?u;v~)Z&pY(RhW(#7u`ZOx1oZ=|i?9Bo%As$N3+x0)eeGHK;&IywGVlSs^}{G{D?kwrB2u7tN7a z;K`^%f-u{XHSzkM>U%GvbCpONbGv%uo9M5R7q7zSv=eWz z!MD2D!X(h+nu{~e$>M$V*cgo~YvrOgPLFxf zt|m#_DRKtly=ug!NG2u4StGU&JRM~w!EvuhepGE*+G=Di^E8)t?Q?|-+{XiahINsK zNjzr3mMA-oJ9_IDnJ`|Pojqy+`DGm+s}oZRhqm0tlNqN;j87_Vx#q*nYZj_|Ogr0b z@~ltX{^tPG>K!)gRp>^g2Hk0IXcrM9zk9(%dkn_U0Z?@4hN@IcuIkrZC0W@OCyj}C z%&y1nD&{Uyz9YQBy24+0%0kecYU}b0977ussP=4yk1uL~w4}#W#~c&n-;MyH!tc4~Xtv$9&6^QiktWKD zv)md}Qvn)Na^MNHfvB+>mX*^>T`sq8If||uUhNVdyxMFf6&x;i2o5At>i+XucoN}g z&?`LS7&kz%O#ls!6;yJ?cF{$$gS&0oNT1vqpn)DvW#c?lWD+Y!7$-F1($=0A9Ba#> zsM~Xn1Ikqc@nYuXBd#~&Ad24^a6BecAVVF8M1_KcBa^mqT}o6Y*h}!S?Xjg2zW!oR z57G$rf>W$pPZ;aCvSdNPAMw|?UfL2M+TRmmre8tEj8cx3g;PIo-#4ws*6e*8#C8m% zEFwKg=H!wOeDkoGSTD98lfW^nXxgaV&rPxyF-^#j#b&gCh{EFd5BNW(PMqfs%Mhy%qVB|KAF;;{YXf8Ch3A*Nr%0rER zC~v^*rYD(D@xx2mh6QYw5%X-3J>r41X7SCgS`j2HRIT3NZAh~Qz(MIyuqWr}KT^b5 zs<0f8+7ZNIxB=s5vZ`IUs!5XpJX!YW2jm<*rW;_YIFbFt=IzYYQsG1vcz8{#DHmF( zQ}Zr^!Y{=hBJ84NUD|4f$bec}D>kCadR1!uV!D*@$F5!2x~z0I6ruo)Mr{x;QOIH= zOH_qJv!7n>Yt01(ew`Sie7#m#;)V{1X{Qa?$QlL2sKf-kqyG8<^@#7p2t;FzM>iBu zItps^UR&z}vz?>C^2S7$gCwf_D5KwPR048%AG-WqmA<^5ZfLLNh!17!_@ov5o;!p6N!s3&NUjX_P@7 zB1+{tMnVcBz_1mt3Zp<}8mr*xkKQwzjw=`q$iMC=3P@@^%EscX-e?r(iPo?n`U>9T z0gm@m`5}q{!u*zOl z%x3xnu6H4UCR^yvaaZ%cazUo-UG}gtu0VoQ1?^IjT4>tZhDy+|PHMbSlk7ukH9evd za*F$8G<%2ni9txiRwSke$1j)Et*t;34<9D{Z5zS%lf zSSP9w=hZE8tgWJZ%s$Nz+a9M#J8 zQE0&bi0^lWIHb+TQ$P82b)t?det0dafY-5`!Fxx^A5Hg)o`1`b_KZCC8?>kyR`@iG z0Xu2tqy_+9fPdOnBm7bRTE;)9buj{Mri7u;cy+V3dAT|1YJOarCuUnk>1psKzibwb zpN($TXc`qfaVC;L->ccG(#D~8gAXM0qa|xNLC2MB@MHx_(09i9;OL;fOk(*0r3&wv z^;nYP1^cdLyT{!}&-uib`>K5_uO5Oa%4KT_40E`$WdSkf_Ka z%SA^y$7MIj(_n14RC$n(qSw+hr+!PMFQXK3?(>ZB0H`=DapdX|A@HH5i0p(!x8pLT z)CwZUk*O*+4qT6JcUjBYnrsuIy8cdVx$>G^;5Ms<>z&J2kX+OFT~n=9)*BvPBVff! znlnn~pD4E>_UjfS>@8XVq90bAJ-R>az1<+{?UyoiJVmurQv#n!S#B&W$NU&JQGixRj*3Z@u=d@8*NU%7 zb!i7UJ(8U(;cK;9!J9IyM?Kbs_3l&$tr=&_y;>)WxG-g#)@_0`C&|qNN$H3?I3|is zLms*>nWSxVHF(`29MYIeu8p9T+qN0-NcsuguNr5-?b;&Xp|AMtqe9ZJ_IHDHR`FWB zR?>Nko8k(qIe;zfT&nFTS>%B+5Dm!a=yAiF@Dz|3v^!mE!i&5+oxX|g(-Gv1ca8T( zQ3go+Mau&$t{D=^jvm*`=-lXTS*NCsTwAyRum)UP^^-1Vz7DPcC6!KgY@4JnX1c5% zO>*ce<7|c=5B$BjKmhdBWa-tH9bc#ACB8$ZT*xv@#lUaCjMD=xiMcWyB`#`=Cobrp zA@VO?(Ut%mp*$%;%XK|`t^w77A~WJ0XsydW#cKrEh2(T1Hn{q|D=8pV{aK})sbrt; zs?Eg9C`t3kA~s~KYs*qR6AU>9^<5eTpj(>Do1Evz;4kncY3z0GG*7bzdd3y1|Fhg> z1{ zKLO%}5t39}gQ21Dc4~Wz7!ph`dc7q?Cl02ljWe;ndggp{6+n5MWpd=BWNFS`nlRb8 z#f}ELY_z1MR6G7@FMF1m>8Rx50!2O&S8GrR)V$YfYf1m(CL-ksv4w62wOEc?EU&vU`6{Jc_e)19>v+GV+owok6A-@)x7mSq!2}v z4VB6)975NJ1l|8Z6e$>tb?*C~q+~LCl~!nY1CWopvL;zEEuA=wv#EX@Ti03#P`*_^9BaCqBH#>aD%|(}LGZc#E3jGkwAANkCS! z;N0+H5^9AXxx}3c0{WirXuL?;PG=j0p7AKtlPWb_*YuJaN4plrV&w9o!3mbenr>LO zQZ8K@b67o(rA}){>yn1D)rA3PD(YNB8LwjfkUHyTOe%M$v%dPlC)(Go%0HEg>`PhA z^-D}sBtwe{Na(iYx=;Gnx)x`Hh*mf6QP`}F8u+C4g>7f72$|N{WzgU4PAmmNy9;|D zi%m9K1~{ahrM@DwB08gOifRhfVx*vGvWqE16fYn_(t@!HtU`5&zffWb!e`E{TzIHj zbZXI-u3RHx??$)c6RbTgbSfxVD2!&o*dtIU7Gw2_m; zSGQ{4MZq4~i)6Xk_FH`VUPs2oZvnVxuSa2^BNt}5pY4-Gv+sIsXIz(9R~UFBhbh{H;0Ex0YRr$XmE45RFRhS{Una;{wktd zM&AI5wzg)pMh_>#Ww%5;U}ij7yWJ^50MG$Dgf{MfXYVX3j9Z&Wm?)By*CZ?)5Bz_! z0=#1x)$LN;b|{b}#mK6d5!@eL)|W?uIPBsOY_}z`=zWXersF@#WsS$$$2-T+%n|n3 z#^=%>vo1&4B|V%8vyM~W-F!z4=y!8r4_qd?=^RgB-_4~y`4SgyXM3G(kdmWR%(bi4 znKm1MOA%5zp!PTCI5!|=ignsTFR9CQ!!$<24!+D`$72g?R_7XQ_Sw4#N%lQX>bmv* zBojV`Em4cp>qz$j{@uv(IC9y&dpw`Qw{NA@A_Zz3842%DADUt0(xiRQ)B`^g`b~#vRS#E&2 z%mk=*Y@>e9WZ5m8&W@^YPQ=i4^$;#G=J4Wa>42Y-|IE5JpMI5t-ah|b_bET!*3B&b ze{Erz-26e0xhysP%UR5ZDSr$@^d@urZ&pgeUo*B(Ic&sG;RyMr+Md+a`2XRrAj-u311d$Q1lrtybk=`|TVx=pTakv{U6|$O zUnMg1Ff30EkojD;6A%8O&+tRKe1=2+L)z&sV{{m$EsQ+h5#^9^noHi(lKeT4{ZVAm ze+TqIk6OW6>G(~hEkK6I>zj(3H#QTyBG2#B^h7w%*?;^_-_Pbnr!Rhgs6NHjAD8*PtJfH6Hy(?0Qf1dEbal-eeIL|J8yVN?$VMs?F=hl zz2yV50vUGC8ofB+$5-tBg?~qX@3~{O_4$TDM*!Bm9q%dEH0FJaPU`+V;QD#**y?rj z>kQmTCA<8(_bej7n+G*2#I%->YfIQezy zyFcY4&!9V8Vli&Kbb48r9>y(Flf*>eeqx2SBaTdbiP*hlVAQu)I1}Bgp*Ue}hMFu) z7SUctHCkq@2V~*_KNpeR6cT1nUHgP}>r@MpUR8H+*|+OsAuatp z%jVkSDzPoLm-NFta4QC(A?E@nTWJ56ao_M=4_9SYD%?NscXCf-isbG5{>f9Pdp9X% z{nsBB)wqD*efYn0&woWo;KkDA+#7B9@<2L7%=lv&8#p+;n-F1wdwtRP`KV5{tFcKY zEu#$&01&lrAy!;GkViR?n`rbY71oMP<^q*$Lz#;W$KI&2-e{LGnqM3}O$)4bi#v)Q z9k%1VP#69D3JB_wEW7ILly*FxnFO}8OTGq~Aca;&;EL>*yNzI++^Tn~s&#sNr}?GAR%{j-~RLB7DH{LMJq^6&PjO)SB_dWt|PQhe@-?iC%?p z*;RA$v2{>2KN?S2G0>bv6j$URVG8#}2Rgh>u7uokm91-p^|0x*J>X%e$U;&EeYOaM z>niwVN&cM4Jx1j!kHD8}@dt$#(iF;DUW4$m5!@>IPC=D-Q{nWwEinA3op;iA*5zA_Q82aUhJDoj%jx{~UKj@{3 zG|&Etz&L{oBKg>ckT{}6u`hux6se1&{`GLivyWUv((Ug}IQu5;bc?U?-NgY!EFEED zBpai=2%&6;Zn2hir#+mGbq9(YX#t#`NkQ@QO8)6QnjI)FydqV+P?L*O^Bd$2GYGYc zV-Cs#Q`uYETD}KEuHUMeQxS^ zW}@{5obBi;q*obo>dGGSz;}AG1820$os?^kg3fd7?k~@n5Eg0M*F)+xDzQ#SsW|Ys zP-r8saB8Usp|au_ixro@Pye=*%!YHNVt%hd_J7krh+xMmR)e7|XAhgY! zkGVV08?VN8jmTisoCg?0;?~i-FCK7% zn!SLcwy@DLFH4J#C7dRpq#O=HX3dFLBaWqfi}pKzap4cGiDc!~Eo_+t&Z?N8#f$u< zP#b%0QW9EmveIM(Y&Oh-2$>X^Z;A>Eb9*Q41-1r!udIU?Ow#?ZK?4TKRzXa&mgv*+|d#h`pW`9 zm14(OhcDG8fV1#!R88Oj=zxNC_M^q7E0uJri(^CLNyM_ zHVZ+U-$TCAHX)>}P`4wXh(O?I)pv7}5#%hKrx2KJS|(MA-a&n3sTw4xdU zEvYTbIzJcYr1jEK{W|`$ZCF=Pgx(ga8C<=hZBR({Gp&BnJq*hQYu#iSK2ovvgxFgd z4YE8KPEVzcA%Z}M|IJepWO35cNC*!c$p?Fmi6dewV#dN!tV>93o!xh|FR!KLMi(oO zx@{difvVT{@KU_n!`)|5zphfdZpD6mDx%&kx~o>SMV2jCsg%w@%3Pn*f@k!swOo_1 z6;G4pbR=II@YV{`DB1))oD4lh`F9^J}){X5KUXkM*it+cjL$PX^XD588*CPRdW8c$v|vk$OzC1yc)r~P*?@TirOWX zsM@g7Qxg&(>xip6sA64vFN^&i_I|ErXs12i#Hny5$iIc49JVzac{*IPTJrI{m9YNl z$fBY)XRFI-%l5QE9F$Tsgc#3B>QG|mHF#-}gO1pTU!pg#AtznJszx4qj8zN0ut?JDx+dM^^yg=Bk3Gh~?l%l;KB@#I>}-C0soV6AhB!XI9dQ%%DY+Ey=r0 zi@VU#sF7u^ZL;n6HXM=E6Ej_Y{+;J7Kfq^0<1JrHb*(1~4Z0;R?h@sv7YF$~A?;e| zC$aTtYP3GHIS$~x%IxC8D+p_i-~&td$IcKAAR-fV>*y%`#!wv|5asL^!)xH+T1%Qs z*EiMdpaR-Ir;6u_;ND6)R{Oxyyb>Tu4oSe=8jRSr>Jzl3J$II=sb{?$aUux$#VoI1 z-oaCrf#a^gVOj2xIym<^`KJYftwyFt=_iO5F*>DL}cn<^4%$0kYPw|`B+lKT|5x$bpCC& zvxB!MW;=Xpw z!87i#l^5X@yS+^0q+kS~SP!0%ls6R2;vn}{NUH@5^_VZ|37nwO3!0|%LgIWM41}?7 zT74`ED9+RboW}@?%nfq8&8$Q=v1R=Cc|Fm#(9X|IuJtt91&K}xH%ZzFrrz)Zaxa@% z{5kNV9X74^g)X&Uh5hf2qcVwKtQvTwtDoc7Pqai3V?UbuRai5#bh4dG0Q}NBk{KY~ zM@ygiIUB$ku005>uo%YuslK7hIM>ek0zk2eH*>?*PJXY(db2PUc)i)>jHv^$b>epi zvNX$mYcZ6i{PVV&t`K&HH^D3%wKaIWiJLAQj+gFNN|gVW79S7~fE&VgGS@?6CL7*G z_I<(+x@zLXKm7(-K^+6qM>!Iy6O7{`qTPXP6-Q>kJpsP6da)RL!GId7{ng_kXFvHj z&rai~)H-Uzxs_YXZ#ZlM5X{!lt}yaYFL78(`>UkZwZ6S_Q+NO8686Sd&uF= zq(!w{E_THkq@498Qpr$+u0InHB3`^xJ=>?sL6Cjl$8%EVUZlJg;(Z6_4Rx_LQCpVfol0JEMyG$pJ{#kW)@2VMu9=#n+&AH+F@s z^-=iFpWD!~&}91P)aJ&_(1+84#`dnxs&RjU(|T#7BPmx`=SQd*%X)*5W9Q^FYF|-% z*q3nDs3`KYMDK}URso}WdxW;N;B%F$C)pO(rThYvU zw`HqLR|{l5RhXF5CN8tMXdUgeV};Zh(F{>pnm6iz)`xmr5$HySn5) z-#7r7tXdX4ZFvz4F;z8-dS5IiD>!PhZx305!El_A^skjGpB0fRqadu)$=Qj*K-)^JI{OJwX*w$vS{4W#|P`sdGW4!H1SkcJ?BD4L&x|v6ZXZ=Bb zv=`V0Fwwil4e2v2|ASzE=YiF%oA=UDn)i%o_11#E>-Koj` z(*Fv2Ns#$%CgXn#3sgHVq-*>-!VK`&yHm^WB5yd?OX2fV)H0L#j{7r*=UP7T|F0dj zcG#@HK0E3HPETxonXgw|K8}rz%)EKg`k++!^@5k_ZS`4kYEFhUi2ME^X`fX3f6E6A zbeXDu2gIHe*}Tk!&2DzczjC1*^-Kc-NDB>V``bC`eEg+d!ymgH5X?x?sQ4q5c*L2S zFVz&={fG9kO>p*qIApJxyiSwX?O~4m_kB$KF`W0!+=GQ3`rSB|2f_NbI?n^r8If`Y zJ$sfBaPp?A*Xnc3g5gHLO^I9ot#h=`Wl>i-=Dqj5&6WIL!l-@D?1k49~V<@|hAPOF0nK4A)Q z4F4Z`>Mf|{6DHC7|F{huKL!WA|1 zih3P{7=MY@y4EohgIXmB=vb8C+E9vVEAkiv@&bGD?F#R z2smQsq#0^IsS;Wk;n9plL4x!phJWuLSA*{(cL3x#=gf7_x|aU4b~x>AkDRb?{Y@w+ z&$j0wc=a+r$v1C2eRGlxOwq_X`z4mWa)0wS4XK<6IanUM|_#*Nb-|Vfy{kLDW z+AISlRY`+QCtRziuHT}iR<6lTK<{%>(tEGx+$q(VU`Toc{XYYPB>pV6;~p9ObecGS zI4u|ue|#d=V8QAAQ^eY_yPS@HYwPFpzj&&0jGOWT+*@DyP-xvC5jC>EjYQ}>fWM{NfQN+(j z=Op8?ZNzo0VzB^R<)Zud#5#OR9jHR)A&7AzzRZpsx-y3M^2Ln%Z0w^wE`kq`$0;9< z2U+@{1&CvJcGTQZs4e}1bgP;E0uj)|+X@%!%<)a~CyWT{v3G-Gg_0ZO*c(?Alh}(1 z-gi4vtgD)bZ63l>r2zdVJQ`)wDv<%ogL9F%l`%{>OCtfSz~Ps}7JclzV^j-Nl1II_ zJ44F(-E^M*PV8N#zC;xiu3djMt&fy@Ro4=L#DlfW6fCzO#jD4ZbOKAFAwQzZf*D)y z!GN+fLcvsuel07IpIbDb;B-;4Q!N2gQ@S)nKTR=zvSw^7L=!BtZzg5p)I^KMhN>a4$8YJ{Mr%bCRwHj#RF|a#@$rh?l>Z zcLpc}Ic!5VO+esG!@bY(5fRxtd;G4g4G-6Jc!3Vw#8CyiTrzLQ+bL8!K{&Yzr$rv) zp8p9Br@w5J0V5at6l1=2c{faYUjdxa80nb5>;n1+;3~dG;_VTi5d#3^SD&sIyBDNZ&;5t|7j^qlChTbiqOhpWA9;SLW7$hNUJL}DjZ-Q7qSd%3?V}3Mt-7u8PepS zR?vU!!BfnOK#Xg&JeqJYGg&24Hw%%XRCQhU=;wB#9yP~xmq@>bsa202Yoxhk18QAW zRT6j=Qk(7;1EkQcnhBV(I*LdS47RxK>z4!6jww=Z*Gs|m~Zy{l*x$0L2_ zZ4wo?-$}&F%0fEpTQN8T%O--1OA{8N+SUX(Wvu##{tJqr3smI7Eu7{E7JAySI} zQ=7WRUQla=1fbv)$gP;ND52zElmw(q^G403{fsCK=_bYse@1p_i(l)s1dLLbh#)=} zvi?k9W26uFWS*W&!%_+C=>SXwS87#jXXP2?oR;L1s}v!f>u`vak*nKm}p= zvQ?lA5LRXrLm>n2BETg-*?0GxXg-^Fm8xflY&mE-HP0*j19906cCv(WG(Xf{ zc#0xMF2cSj;F;#RdF5_f-NBsNQ#I{vj3#wb`na_C>ThGO#^ktl<|#mCX-aDqMeT6y zxT9{58*I=onYEY;W^lxQrfBsp7*`>rauZh$uHm0uCi}AJjwh+6ALqB;ovG!t1irV} zAf8i5n{UkfXumFOsCHeJLg%~NuI!6<)uRV3DD{1~$yHnp@ImX^;IppZ!fT4Kb!^_c zX~vh{9BF-S;23zaZ0gc^l|hcw#_hyvGhW4RW+|&>p_RmCnPFL@R5fXt2f2eRq`-Wrt8ah#U{?^u6{CdT*J8DDah ziR(23T-EfaptXl|O^|)uRma6eM)vO9t~73u$FAbokEsa+t6ts#;~E&gQggL?xMB#R zewIJXd$B3Le{T=IoT^>;FIWwTNmZuTaW#rEWIQaf+yN!jLJx!|do%P@b#pct^ z#p%;}O#Ys+%vCibCk6-asTuc()au^3ZhZO`nT;yH(D1TKB6;8;qltjxj#3M*S z?Mb<_6qo1G+52tF+(sKq9jILgL7KkIy~LpRw5;{LgSduM?2N$+2yQZZq0sC#F&)Dy zQkeO}y%owHd-&S+I1(WgEH%6!d3**>Bqb5B@~r))u{UTL3M5-C20&1RoP&Rf2-kmP zr(0bL@>dr?7)aWe7yard^!&fi6u+Aq{=7}zkN+$Wos06`b5a3(5ch!opMN|{Y{Wxh5#96gY5 zDxX!*rh08|XF{n@5xik|u3N6NT*h{$wV>8ea9B?EtXP;hx7*^<1?3JZVC?zHb;$up zD_h7q#E%x|ulmX)fT@vH4Da%ZR?|Fm-X0GyQu`w)B{9E;z#gI=lT_d$x-DOq-&K^= z8N4$xdudq){5fubox~SsAyqSX%8XYSu|&|~t_InX1p+M^v8u~VvTL-h(b~jg1j}-@ z5O_h#b7{t_sV5E!Jzpfs->72OoGz5Gj8ON2-guI_IT&3R4T6J&X}e61)H{$uwxnQ` zK-gp;KWr#7(jmpgSDE(x`-n)KYLEAF@7qPnow^JvKm}RWOmMQ;U~%!T0LEVP9T~*` z7E4_9gmrka!uJe#5cNzWkb`if{3hBhi>g1xzv1t)`oLPb8hs3f=jV?*w4y-Kl2BQ1 zC8}OmV!u4&z?W++X4^uNoN++iZTdqikmj5vF0 zvtYqR1u(2a9l@%cDz;k}`$jy`*2a6#WYKR05k7qT4P1$Mz6!k2fx0Gaz5QkSA)}8> z>|#6vf5kwJW0_>ve5m89%BRF7@AA9rPg1rK@7_I+k=lGkNBoeb{T8q+#R$9yattaOk+aG|Xavu{lC62VXg zJ^}_a$2s0_svto<((g$N3^tnQq>ZxxTGd7X$Tl--w~J7V7`3TxJy5_5x&i~B+JOzu zb+V%Xe*}f{_W(=bcr^IfzD8WiQj{cYE1bd_NzgDpzy*QZlX)gb1n1X zWmO|bR^mICs#44wHcmR2snyJxEm_`VmF?vWxXYp&>b3n>57C}+WYt;moG`uln%fcU z-5LU;(_OUY198`oJ4;DJ8 zMAZC9jwJgF{2nXve@R*dQ{U+%! zHc+B*XAf?xj=F$w)lGLZTyu)nVrS9DRBfasjsTY7lLbPR382C=MDbWBlfg-brt*JB zGXm4PjPi~jQI>%`akiFz2+vNI=)mH$duI#SO0->9>ImoNoF{6Jeep@9Ab}-H)n5-{ z2FumnPHv{zpu6=hUGj{7&w7RN@bE4H1wwEFg8NP=ZeH%-N{tP{+wQket|$KhaDQ)8k3~OVxls-{bBwiV&a&GdvL1hJK~xx!_*^|g5H{e7scwB0;ADhd z78i?D)xgz)|DYi^VKe(8q%F8<(Zq59w0rZ;k6wvr6q%pcI2+HU%LwUv3TSVk)D}eg zu<1ae8rM7F&1bsF;jLw(J+WjVce3#@4cdiWYgog_3Kl@`lxFbX;*k)s6IO7vj@F!+ zN6~BoVB%yET9OGUd%va7RgjBtMBU=@BDkp~xxiKBT#hzaWzhP22@>Fv@10kYOlNBc z84QU*S5E^^>(a7}V}zQpENWU?#SJ$o7MZn%|2+Cri~C~Io(Krr%7{vaoOTtY4$R6`E%?2FjHv~}yXMDC!bBoTF9x2OXCAX~Z5H&85+ z^y|#%vip!4ph?l%kjOy5D#I=YWOIQwr`(qy#_BIBG89(-`36Q+;DRs3jWxU$DahSi zjtVNf&@}-S1VgdZ4h*$Qs-G7_AQ`<}rzJaEQDy|rwbcv=o)9W4L5dC=7BP?aTITl3pcbKOp;aMAAyEsJ2Ne>= zSSmb6g!ZO6--y0tQG0CS7A-V)|B>sHn+@un*kt>rJQ;YIBpq20|B%+$wg=(a* zG@s9WlELsRa{!)U4vxK;bZ@DwX9v#JSfe&hN_N;^cYPRf*A|>cLx)g6b_-!MRuwY^ zYqH!YDeT$NP;t#WMHV4L(rbxEjUYuz<8)1kV$30E4Up4DpB5*;JPD#jYTjU|N7ZDu zC3U+Vxwd)T73L{0AbRQ@d<8tUI=Uq)Lh5uEu-_IH{JbvD@_C5^v56qW2npH+e@e2! zI*+upPL!*=Y#4uwpHS5*<~4HrVO&N=|0n18$%t-(Q9zb_>*9MwuuR69+yky9sUTde zMk-_@PwDaqzPUR!S_HS8 z>}E$^21OPa+#sAdxtjTzfDoNuuXjSdz;$s!z(!0B&;w<6$zJ#IgB>yJoyXA045IL@ zo>cWGR(*VNecLh=iNW2BPv+USw{e{G7+gqHF0UUI3MG%~wDzUq1T9+i#1894K!;#E z!HR)Ki?~semFLZs$I-}h4H;FVAHi^eX7E$K;opPfd(l%R&O4m@^lStDoH7eHJOuL7?xjtKZO`x0V5iWL5>b1u4)u3J~lg(DV;F7)D= zed0MH?lgdn7AO!dD?Qhu3z|H17k~yfUHK+ln?=P%uOGuPGA2U-Ee~LMhNJE}AZQokjVYT?l!kB6cE_&Fw)< z2IcPd&G?-);Fat^2l9V{6)_k+&RzT*9%dKQFcMO_SrN(rnX0iyJ2 zPRXh|GJ$R4QwqpQ3N)=>d0V^zqV=5*daorXVf)qxclJGmOHifkFeHuC0t^yH~ZY?6v?fP5xM zC62q~1`(;pA}DE@r{~MC)b+UBLPaf94Y0D*!>y=yQb0{8Q-$#<&=Vt&RG{v~EUHJV z7flqcy{Q7PE1}|QMj@4(b8Vdv&NKx|idCvrMC?d8t9mYT)D`7+BpBDqfv0NK!Wttu zU{z#~Hb@l~x@sh#^l&Q4v>J&%r6TyGTDY;}-S%)=Ngnh+I;C{rxo&FD<>@n-yNYU^ zS{lOBg$)f#vp!uG{S?BUifgY%)%E!(L3@aW{%3%oi8qmacnd)0+$W_!9U# zh&-Ulcue+@3`kJ7LdmbCX?9!#cT6E6Vav zVYi1$zluwWO_kZyy7cj#M_SPZ&0UgCjDv@TVQ~-P^8H*Hg%gPV^&cB}pq2K961At{@{+kf% z+BVtwZ8|ZzP@HjU3$lou0s9GId8LAnImN6L zOpC8Ee-SE8g+2_*Wcc!*x>oNrDrYeCU0+e|TYkZve~yzgEUu^J4A6WO9A|{`l7570 z(`Tx6eO0+Q6`4}gEWIgQ-;6uC_<-7Jae&Vqn*-xyOFqj>xb)n*Rb&tQ;;VLlf_>FL zRR8P;c0ta&U60B^az>X8>Si;Kl&iVdSv)B@A3Uz66zf8)J7Y=@l&N#a|7ixJSLtmP z@12|}-^9Tor=0o-fx1Ti^N9f8cb;Q3F{pi1RClop4>D6j1pv1OioAbS!TO#!d~n`? z+3ys(kTI|)+@BXCfUn;%ZFWfGJMy&?@+;?QpO?pcI4EXg-y0yFFC3xuhRB!yP^F{Z zD6jS7!W(cOlD_m4Af~$*wG*G{t2`>1p&$A9#%M~ZG~w{ZWb%VkHuXNzU@z;uN$lqq z&*86`?*8E7YI*RKv#6r(cnofn4!?B5?`MDGY3-DX%-0S=z6}Q2B3(W#H(g#g_52y( zqf9_Zt)Zlel*MK4HDHHRJ;#RQ|E?xIFKtbcVS2MI2B$HpsLki_7&~-jFz01cQfj`E z&lpRneM_Vi=W)TJ(aw58oku-$DRHf&Uysqy@Q7j`Y5w0cQ->dpI zg@cD5R?6lHm0}kshePaF(_oV6>5FfypX^smC++q#u zZ}lX~3(1$!q5YXHT&JGo#?*TFi@2Au(jy9RK3p=M)Y?D*6sVB?I1zb1hFN;9iheKSRLF_t$7GV0ST*hL=_ zU*0=pf$DOMJ%PV5gmvSQz2KD!5grta^li_rB?S-1=KoeBnZeIDH@cYJJ*vwlPTk|! z)FYb+n8-hp-c8p}ki(+hqAwxBB$g-OGxE=mzR{pvO}{Hqm-;kE-|5>^_Dxk_lY#kGhCvv>GpcNUr{O*ho}kR)af5>fX5h2wwADGwPokcy{Qh2igqHm8I zO_rWHpB$WxoX-wn6g>|*gfr6>|dO2JJpJczgkHbdoCMy9npdJ0x=agj(!qcXS>`9H0Ka^or;7iXT@k>AJ zfFb6nr9UAbj8ngZ0I(7=U*3fCjirbVFlP1ton3QI)h#XLqLFOpWz1xQ|HT}7}K!`b-KCoSX(NwXzf0)@!Sb|kd+_~?pak(b< zVExlL+2zT+MU{@YH^w<<`@x`j`ApT5e3Nvg9-q5ZteU;9sL@s1Z|98bo;CevqoU?t zY(C$=oB8F`KLvP2w(jy-H$+10Cnx=98&uen4U{RTZX!nirq2yV_%E~M^nBFN8E_6l ze*^j&6*}iVLnwZvP-O<>qdMP%m&*DhuwAOA{>xCMHjjL*u#d%2@@^sBKd)WyF7op- zPJtvk-JB4oTmK#Q#h5owY5AT#6LrwPOUn)NDF5!Jl~cfZ@0ydx8IO_wxY&K8 zj*)1n5v?;{Jea>!OX-~C7)(a12FKNfKIX@3rD6 zg7zOg1Br*eej4B4>eWs)qKR`2$+5qU5GLEceB_**-{HZ`VOR2@B*&bePGKOw+;bd? zI{lw=1TBH!IzLy_9`$2dC@|K4)5;%e-<-wezIX~*)@_4yn7V1uXuNp$A!5GC*G*?; zpF6N=sd7Qbepp{sSE|{$`AqXk@e}Ea{l%NOlBK7isxb`(F4A{)$2Ip%A%FSA$FEhd zchWI%{H0*-r17i7Yt2NRZs>A!nR-Ss6C|e4e!Sbsll&Xs;{^<$EdjQd0XT1)lS0V}@aA+`-XM0+7lYEXGcW2;x?5r~^%OT09$5gSx zzPAM-s&?E#ARc+9{pyl6cLV4yEbm#^)KvkEi^Y(F#{EhX3+~O-gyN7d(#iV^PE!yi zL6`=g`Shq5$h+&jW27~)7RF3$J3|uKw;3p)e2CRf1p_}ABV{0-(67x5thQ8_3?iwD zZl;9giIU4*sIqvMnk{07y4IGOnCH(0JA$iV(UL+tY)wX^1^99|49S#bOOwo()Qwye z7TL^6x=cGR{Q~wK>Pj0RdK>rNZ{^@nvp-CpH}HpyaRddB#rJ|IlO?G=k>D(Xt2jZ% z8o@i@8tDk)zxlvM*>GHKO0D>nFyNq>AbWDFU830%vI z@-6}GrK9v;6b`J1HQ*7rU&F-(#JxcK zqz!t%+WJD+o+*}lk#h>$+%5rCTTPYh*ITuO@*!<7?BkNO5oGV-MY!(PRuf{UQbsoq zX-lN-#kVtmz>EC2!MaRz3RNMdbfpM$JzVWZ-}{A-7iEp>_LmVlT%jR=ABmUP;B6$C zc}!tY8GP~~RY*LrWId#|GrA@gz-o8T9R?U!CPxyb_>eGB@$B(H^%!?UBx=AOk5XMr z;%wTzwRLo9^oQd3csqK4@9Gl$ug=eoS?vMcXp9GGgn5;!TuT(w+Hm385}66qyZqEu zxa^mhxD~j*got?tOe#RwWr<6@M@BD=HYYOm50r{trtwha1A>geTDk9|8C+I1k)Cl~ z$W^jfkXlB1I#clB2=s1NM1Ia}*suA_9W+okjEEI_67;H2cb!{c^!%vt;sVwpT_c!u z*%hwfmhli539`6qR{17qxN)D>9}t+KZU+@Gj_lK_nE(MJxxzL>CMxX7;5%pE8zi!T z<5mRqY`9!<&`WrcCDCt{jDQ}Eq2~1Pu6Jth~cPW)wU%Rmk>nPdSdJMYhumDT|N{ME!QlPOTE-&eeOm)inJ_-HNna+xg^B1}63 z)QF}XEDbJQY4Tvn@42I%+nwDkAGtdI*c(CYQZRSP|yxazABy~keFQgLx#7^Ai(P%_ieF>$NOo3Sik#Ki$a9?Fc5Cc=vlz z&|rYJ#`XFNQRhWl!d$&M8I@eVfqAx<%IvUtE0524$ZN6S;2^-8K+mHgACkp_n2)-| z$XCw$e_%45;eGd7w)5kG7Poh-SVk9UDm$jyLl%-1#>kWEab!6l2kZ!q__$s!8Qne< z^B&Lty&}cr|1B2F{DOFTgSED|XM^$K)6DWadhvad#B(&A4x+j22ND4I>I=tZ1Oi`| zvjxS^G^}v)k8%vpN_}N=!XY*$v(46A7#6eJOICWMCM~v|F&^j_JH1O&Trx&W7!)f^ z5g+B1!>y~}PNHR6Z9ry^g|`@sv&)86Fd`)F*e-_wDDwUzW1B!kIBzSCvN|n1L297u zM;zWGp$0@T!4co!mj z&FJE4%&;mV!z{+?aW zACN3b9}ox-*;mr6a_llmDBGG^TxFay&aR*_o$wGN0&vyFmBuc$ifh^ug%Li&dXhsH zJzTd)*NZ36$OGtSwO1uk@hp`7!CM#=kK%+ht4vk4opKwc+7#HJC|zr`)4Uf^5;(m( zK9JL;1iLA@-+G)?BLMDg?h#_!oMq*;K}$;Lm6H8Ceq(!p|Ci_RbDC1a=ms* zX9^4)B)un|qN*uz%nFetz;Mg&ODsGw*8{mYf={{hr?h|!AW8yB>)p8&wZ!(N;XS8#;{p=Xvh`+`W1Ec_^Jo%XGfBYOoEt$Y-IQ7U`dD1NOD6_pzuOno z)80t3Ag{AS0pXFQG6Y_i0k1LYYl;4PHJTt`v#lYgHx?xmsk@5SN~wl}ozc)Fba26<)9U%<$p)%$x9key|}u(*%( z3EipDEK`IpwfU}&=&m%gQjr*dHKGLOW@AhKU{%yzLFS01E!>HMYwtR!CqNzl2ZQ8< zr)`fP+Pv1wZg$<+@{v1nc-^XXA5G*DYV&yrUN8ynt?ZLi^495gD6p3oakHcF(T<#4$sngEl-Vd0co zMmxDN$2&+?AJIjQOP@Sx*0NN$n$fuc0K+Wz6Rf?$laX9O6;l;(s)j4<575>RH-^>Q zYpYPaqS#O0>F&bqsA^=J+_XecR(nqzq4MFrriD^fe?s4|)Kvq-yS@L>1a|l$ygHvWXd4 zl3FWky9M~<;Kg7*x&$Zi;L%>pu_5*Eqe4G!yM@(14NCD*+_k9Q4p!m8-6Vv)quPEmtLb2(TO1!#(A4 z;fTPnDO&CC_Z7pjHr~8X-2$!RqrzrtM92{5Zqm|nUKV2Vo6YP8+XW_X0Jq1;qZNE` zsaErC8Znd0+1&A|efzA0#VK*&A_8T=LHYI#w*_J^u`}D4KW(;iviQ zaYo{!wpqEGf(3i-q=H^N!na-bDM z2PD6MXPlc9ZJjDlP{^Tcd#R{p!nX|8SMj_na~$bGwm!lyH)SbMoBzx5nr{oN%Y`!` zX5-Lz!?v(QWz1ROS7U`WTp=xPb|pM|)+;#?s;jNQ{SO|D2uMLGTXF~V$>!;N=0&0= zJe=|n5*p}}@8sQOG(?jiXn%Pd*%vq%GjKKYNLo$0ES9>xQ%Sgq;IK%hS6N+Q&tC4w zrpt(_AjAETs6bV(X@R={XmK>KFf7#oa`94QE=wZFM=jKm*OoY!(U$8SE81%Vm|uq% z^(@5;Ur~3JYM6G3F2%|=mJ~~}MJrs7l89({Xa6$ie%EaxyMXmY_DS~bjK;!*(X)Gh z_vqw+R?U3DhI7bCXkV3r+=_E=xRBjb2nKqj47;UzOWN=Rm4(D54b`A4#--Fvt#d|p zZaZx}B$>6V!>>Js!P^wKXc#HY!ej5I^PH~SZRKPRa@EQ}|8LPQZjY0(`Oq zI_9JY#@TrjxA76GK z*owP@y$(s(WA_nxC|#pH>K~E#;DJC9GU7X}zQ{7gB-+pw^(DFS?PN44`N9(~yD^T1 zKHLwDg(f1W+l-7uq|>&yk@tVFD0GOGD^|70l1;u% zE84gkENi`u*>2Uk*}c{(b<~K3B|EaJ1tFX|7b~L~-Pq@LCb<;+hI}AnqSc$(tne=> zZ;Gxh>&Hv^L)z*fwE+_JeVnx9CMnDAjTJK@%PRrChF6s1x^x=cykLt;C8m8ONOP5M z#r|CU&NSIIMyQ^Tlg#ByU#AT5%KzbK!0z)4$#9VW;G8-9ATu5(sPpf)xa>~yB`bfC zFSzoRvX~Rl^91vr`;C#9I40@DQMzUY=53T0BYBL_5jlfXVc!v5OEfcnKwji?Zu{ik9&C8i%wCFkaUGw4A zt4=H!yFw~xnR#qzD!?2YcljDAMOhZ+2NDYkmPA$Qku`u6%FEbY`RqE}byF@1ZjKN@ zyo_F{6IN}Njrb51VYQcbgVvyY)~zRR&{%Hg{ggwY2Ant_W(`NljT2Cx5sSxna0v&w z+Qr~@8I6);u5+7Zz_6@d*7}{p{rTqnP~XKw-AD!#KAkVy2*uS_S8AQCTT97L=|7gY z)+D;h$7YlPiGg?Hmq_81Ga2>j7j}jO|24%}1FToR@pbA(b@9dB!t1?snq6z5lr|lk z{pb!O{ZKPAr<6fqRv@R;aGW7=0H7d-hN4#K+prh2VMa&V9FfcS&JOI!%FYLFS|o>2 z(?30Mop^PL^5V%}jk&^zAzn5Z>-|_Em6Z!L)3%jFxQW-v17S;8e`RQ+z~VXo{r@uQ zk;L~!6P|%Ai@%hY+TIxtmqcN=QB!4`g_vGQ0fv^J!rWt(r!ILi*#@f~^>5Onc3J%5 zpf7-reXkt(OY+&tF)g_E2;%-u+4)Mv!5=E;5c7SOI3_-Fq_Fq&k(Xl6J(Jkd)Q;2^1adLHO}e=fkF>Uq|3s9Y!DhzhF>DPdu zL&9S_1$S`tQGpgQGB$Es7n}=WC|~Sojv`q8oU%5SUYC5S;r_ZXR>ZXcc5TZgeMP(< zJHd)%Oe!p>mzB$hRbe&R12N;>%i@dGZ#-}2t+qddK7O4Y_5-QwDGE_>42}0h)Qqv{ zJZbGD5^!D!@+eQy^Eh$v=dAgR#C%qKi@Sx~lU(5r7fVX4SO!-?n%Q971ihTg7|9ME z7R0(p>M73pX(AvxLoEOt~4_UgS$( z=Pn@dO6cIk8Il8Q_8TV%oSGQ#{cyU%2vs2SWhIdqMv;rbv*AA`+p$BKz?p#K#%PK^r*82F3cB2{iEHq|+2{9yt zkFTE%`{jv(0U2`Y*UuIIc`vDb8ya7pgSTp{;2uqkN=S*0?l@H&jWqsaV+`HigsKxH# zu$+r>Ucy&Y26pG-2eWoTLtcy?GF3IpiK5*}(b-upxCBRrQSE_ESS$#6hzMJDJ#4~$ zhm#jxyt4tl6<}Yq-DcwflDu|e=UI_ysT{*|oxDiY*pBv}5J9?FT{GCG7^2#vKf8># zAs=jcbg+$Og$nmen^YvBJUh;J_H=_SdY9iAkD0x?OtEmxy*eH=x~NQGN~oUsxs19 zCw;Q#MQZy;l{NYBAeIdkp0f`i=pCxBE|i)}%T6FzXKd&lu^e15b(D{dPBALf8-%k^ z;Ip_EDzP%|mguXBT9>nZ7>{c>^oU~S)5WruQQ^PHF{$gsaNnvyyrC8p{p&L=&92C$ zq_2ayX=QG@gD(W^l+l(`U}17BD9VTk%L|?Rrk=sprwYEaD<~b{HS*e8HS@xnTP~Rl zz+3F>%DLaUV;8ubQw&dRH}B+oO7{yGr5hLl#;6O*4o;wi@vYB&Z z#skXattQvtUM#p8>}81ORl~@s>s?uUzD3XSs$%D50`|%pPb;&go8(OaS8PjoX}D7B z3vuj_%sCQLT$w77Ox4v-@ zeh%F-+PT#`tgbfDc2<)Y1i7kIL&lFvH+tMmzQg5kmvdCz?gGN@&zqU+Mp%sG8gzOB zF4A?cwhx*sQC9EoNKIk-`t>RxVD#H?uWU_x86qI=7hVCpoFX=9amhsq>>y-vqQWuu z2XCCNE0SH?v@g-kcv)n4avQDvI#(g$uTD- z-}9EV_q-{;=~-B7g#PI)h>FX{2h|lkyytVY+)-Wl%}Gp=FtV2hx@fgzMER16Z-SS9 z2$bitg_O5_*<6;k1MgjZH`tYKuQ@#;^fuwwF~ew{b}BV}>PXbEubDX9)M!2Ei$q>Z zoG^PW!K0I8%AZJ*4?QG0JlAPqy)Y^p=|`eB)pIOGkhBQV^Sq?Kk>ntHS0>u*4gRXw zPwrBgfI#QRXjB2RYbW?{dL#*x{I$3y;FHgymSS{$LUw9VfHbY${i=FdpnUH6eQ2hc z-Roo|la@7tGpcPeuy5wQ<^HI8ue@bJCH3K${rg>8)wV%qyOiuvaEaNoTy{G>mE?9n zP^Q{swk0Obi>JAn*%e7!=VS_n)A7XGHATX0%SF3reQn0QK_6TfN3^jtStRZtY!Ho@ z!DonErzs93u?Z_z|2nf4#jqNrT*FLHiIT6XSu{#+s}_{s6J0DLZAD8PBu;X&u{EAY zS(k|9r`01zw}4MhZr4H33sF z9OaF>%iXUTwrp%Lt8&OE9tk!O69E4^83V~`ud!WWZ3Y>WJ2H;kGm>^yH7H{k+Mv*I z*psMcm~C%kl(mf^a3dK5u0}w4ZP;T}#$cDBnURDs_qtl8fh1Ehy7-=_*DtbnL@(F4Kg&&4$j72aO z+o*%hBD4AY-WqE>*vI+IKfbP4!7->;@1cxRi)2S6H1I~?+_z>Cv|myX?-^59&zmZF zWuG*tT_xb<)no;6Z(!bLA=*GfuD-G{`zx|D9__NW19V3n8{1)|sETcHV|-y+`o8k#(q^scohm=vf+l-Y zmzw{W`oHa*=?8~$DvzR+4DGocWxauH`T|S!U zw$BiDQ0<025I5o*W%5tso7uJT%|DVeAfQSWgbju z9f7%rnA4o8x!cf)qq^%T-}F2lP0eB*3?Hslznf&U30_N)y+ZAd$}iBO{56LP#1!_$ z9ZjfUaT|uh$^48M+H^>%nO^X}SEd!(55sEa(gBaJxW7lPdt$TkXrfq>bEVR6ZGeB^ zzHB|x6HdLS-#bZXbD>Gb!pD;iK#>pTjitXDTg@lWTC~%;I3PlLH_J%x$r#S2y1#li z{+secZ$ml0go40f^U*QF2&>o)zSC8h{=m?47j9w#`aH(Fg%c1m>OPX+Xyur{K9{=h z1^F#@;r=mdz3LUUd?q8ts@IIJZrpI{qvHgnc>N84{82jT4;L{`15_>>hxS<4(>jD2^SsCHiceZ7NN#~+=m6X20oW{ zH?(-PxYSYg_a-UonEMi^X0A~o?1j17+h;5%C@vMwndr;*%1SgDp}AM_^4Jq+F)Sg? zpYAMW`hZzgFQ0`QX!~b-piD{hUoa;q&f%OLFdG)%W2sxk6VGN+-kNF=m79#7lY_8B z7=Ij4JBoYQ#TzoUJ5F62F}^-j9BAltSd)q9fc7gPpU$FeKyiK`l_p%-N#>R6t;$W% z(sR702btjpc>Oex$~2om>S8>iX42}MmcJ%?ptO^FIcBf6b9-(zozfXLy$6=e@CS8F zY6|#_(ZvZ)Sng48F!^^G7pmeF+swd#m2W@{T+}}<&a~|LOtoa zQ+EXte+`AoPTXMq(ymQ^3f9voxXdn z`!|HF{;KmN(f&e*&b>E?yAoeZG~JQSZ^29!QCceyHw9mzZ<08iy1m5>vxVQD{ z_rBYc1`8vT4C*D_QQq0tKU(l5>D_uEY-*FC^mv4&m`6L2#UkKM(4pTdM6?u9&8_3r zYaL&oO)jm*^f`97Wb8w7-S~>})|(<}u>8i#AXR2ln@+ikjE*mWci{P*9Exey>h%=Q z{3@Pv%+i%pRt&7qR|3%)vA+qqGO~39i)KGdHn17n6qM8v+`@&J!+t2v9>#rwBOFg> zuQ^PsFA-cj1NB9LexZn@I&O|J@v$PbV&cgiYyO$)fQ+&KF)$5v9&po~WE32A-2cIW zFSdQl%g$q-WQ@Zn?E~qd-^q2(-mZAE#Z-jZ6pUZo9-Vvbgrhs{9PKQxK4V2SSygg@ zHvcbj?vHxIGj~_sthUtBNZrX_2RHglpFXMr?=SIunz@}94PxE@amF9AVZ`sX7^}{% z1k_u0>&s1u%P;^q5D)+W002?|P!s?FKL8w@DoIMc+mWMED!7gmw!M_o6|a>eEu|0? zXn!_Dk%~jxUTI3b;gnQqQf=+1BVkUvAPJEnqL~1w004gg-MeH7cHptHGczkSYFNEe z(9F{2y41%%)vJj9CH3nGV;yev_k*zxu=@29jby?4el#$)jP=eEJ&x8g^BQ5RW4UKQ z8d!qza!VGySeZ<>b@$GU8S7;;JZ+6E*}Q8T05t%D002b-RwYINeGk3&?dt8?Wsi@i z!y+>Zl`43|fG)v_5!V3$$8|?+z(4`b|Nm6~F)aXH@WQYdMgk?~N~)DORty3#LCjr7 zEm&M!@L5Z$<=BA5R10tlrKSC=S~R0%F<2o(S zT`lOV`MlbJ^CRMJfB7VcO#lP~a9|6!Efz%K3Jls@yd*LFd;eMNfPWM`f{b(=q z10Oj2nB{Q-QH6CCl?rKV07c@zZbOCcqH<>Hw1hd^UFKF(Yz3iDv?xY7P-C(pnb&1| z#1DCoBJh{6D9P&iS5|5i`5M#&ewXR4_iQRl*c9Edc4&nq=%scvhGx^bl04 zdSeP9SH$XBYbpJqC|mt2VIAXVv|7De($d9}I}m=iMJ=q(;Q?$un#!)2{j2+&Tc0m6 zK~Ka$d8=*h9p$BBLN7Ub5B2I!?NXBaq52q#TBTlpx{t~Qp32f-emsK*BL1H&#)v8cFc_r`Bkc6yOnXDdl6c*}F%UP>5G9vn zUwO!w<_v*b5zF9AGU>bEBTF>Kvq555#ThT{o5xi?3-7YbSx&3Bgu^CAI|zJX-b!*Y zt{eAqn=2O5Z1A2~^AOy$q)qw-;nhp}8WJSmY& zb<&sF456g^9!+$EXjYPs<&OS>8LBI=4 zaQ9f5Sv&zS$g(tIS>oc%VLMV6tGw$1)A7@CY^Kl=GX&x?EVAqXr~5myGK3a8PS`MR zC3eyC;2me2>|yqJeD9_@iM^zHQ_CuOAn3&CKsQXLAz-T zjzY%0sxrEQMRs&64{TV(p4u;3>2e|Y95Z5Z1|D(F!z7hd4P(e4|L(EPz$=h2Br&4P@%z}=OgYEGxKt))E1D$r zz|C1yl{PA%T^{&-&uWYZI6Xd%3T*i;wAw!Pb=9eE|2!i5G1g zE=s17VC0}Q?zA?j{#|z$gSf5f=d<)+M(*e-*v=%N+Vpf$icFc$Q#K_q^V~>+&ajR0 z7X%(s>l~kYg`AFOO+LYRF|TbMt>p>q8THv}k!~g#y$5=-5h;QZ&=J$O@MG3EJPdE6 zt#f=^0R}FgjkX&epKx*mx)b1S749f5w#&Ym*zU)#+GVT0M-j+Oxrs}{YMs)qN0(q2 z@6syIrzwTHgiLZoR?S+G5&)C4#UlbY1S_wVgUz{b z3)Bt{`f<|Aqu8S#fsSuf)w#$`tF1ZQAk~{({&?%>A>CsG^h>No+v-Ju(EdaIQsE~J0e5<3)P{HP1WRvg!oN}+f=v%xj z9VB=i{fb4(HE6aIAnkCD ziPNXgRKY4ZP&hdE{`?fo(5*l5vJaK}l!sl+M-m3H_rN0J@o%?p{Q?ZfPxudrh1&O^ zM0Ih*AV=cv2?M-B=1qX|#4p4njrQdDp}b_Ed5c;g?9f)*#pKSb z580>*9lB}Yi#q2GD{?p8Pwvl8_5FwX4o+4X$?R>!E2R zo2{&);oc_dcY`?%UvF1?9G)J}Jp z+#JqCLc7eSZmPiUF%hjH#vB1`v!Ef-Jky9UVxhzgVN05WaR?3p#(*OpmYENE5okPU z&htZufDxoU;j@qz`u9RjpKc>#c@8g2ULPcPWFtT{(}QqpCL*UeBB{eQdupo=ZAR17 zrlYinh^v<;Lx3N}h`I(-pclr%igXOxoDFUox}YAmph6$;4ncx=FE$(PK3Di8#CP#%g2bnwo*~(E zU>Fs`We`d89D+dsw3ziFkFjdEO;@f#Fnl)2%v2wOH>S~3U8G1yXezL0HNC&PpxjO8 zg?h<{aML?&Pfa91PyM>%5OI{G9dr{FOcz1@j!_-ep`g(a0T9efO z-~rke;z|#V>C&*PtpK!A%jphhAl9S0p1wFA03o~-STdwZI^20$7FDXp@gIEuS@su7A9DwZ!m@$kx2d_OYGV`DwC_TfI%Htub2fZq} zg?Pphv-55}g7EqbJXMNH9zEn8Q9>r=Qp}8~Q}xrw&TsGWStEgJ(7_j4^bzkab?gF) z#K2_^v8Wu#W2Qzw+VDPEGXc}l0?o|*fz_fFsJXGo=iYQU(y}){(0N|(NUSdXUMsZf zObg>K0=O||Ftp<%x#00;BaCpiia?o0Q#s@N%e1!3n}W8sSgZJxm4<2mB}u5}$ViDb%!9a(IF;jVB3cJ*4ye(dGSMRY>PS1IE~-bYhtoUneb8g zyC^YUk=_7qY~fRCB1>R`pzY#*O+W-wRvrb-zqYogt~pC*gcImy%(=TlqLPz;?~_vgKuZ=N)-_vf*!Of^Sg2J);( z&3dFY{_5ZX)5-D>AS)_?q|B2iEGW~Cjeb=VbL8m`ZjQcP)-qM`OmOI`RB!5*4-cKG z54Ig5hq!$p8x*eBT&A4#JjF(3$0I`Wt;qU@d%Vujnod9zOcW|H%xvtZB0)K1Hn%<) zhnNl}j*6%xJFy~~uxL7Ed%d|2k$KO+D)(S^22hoa3CCQK_Y>sGWG#-~Mj@J@Q6I!% zc!zP30cH+69-1rvq>s{d&{MwK-D#6Ph-gE?VF@UA;Lb0;?k5A7O0a>iy(0McZa&&H z@zD8{_u~BG5b#CsgyAk2nd*R57OBRO8lqy8A=RqcB&z%wn=Vu>zmc*xU z=7`5<22tT-ipuj}$rDds-GsKQp6>Llc*x--{6$N{xw$w4`iL~f_d0JaCq$79FpQQlURaYVv4@ncud<0z1g=W2j zl`}SBlO$}^Y-3-)9EUih~5+)>Y z!^1H~y{AmNvqK&sHn+)Hj5dKN4Xx2&X*b~kjGeFXn77$Z5d8xQLi?r2*=ZJ!jrz=LuQKTli zr&&#F^+Fe{NbW_J1m|6CVWvdiuhrM#C0mNb0c|iVX2|8(d;`Lbr^jIFh`6VbPeUBD z`-kqh!X4tM+E#05=Q~v8JYPQE{V9GfQ{RVu`_yw5l1(ug9fT=2*4n`LH{M>CbB%Az zzl2M3h|O9j<`S$9hxT^4HsVAHu0BJ2`XE!TOirNjv2n0^c{sTU+$#YwF{{F5#2sUY zbD06h%M$sR8I`gC9nlfcjjX8Ln+!Y>z)E-N8%_{wb_7>(<+;fH{Ov1x^TFRfjnWoF zmN}c2f%oH{`ozk;h)ARG*W49>qQ(X_v8t%rn6?;6(EXC_`xs~t%l)d6*2!WCat6cs zrOPH7<^kHU8OMk-m}ovuSbwi(tW(12pQ~gPb;`o;QlQZG^)t!<#ikohxl72s16F`r z3AYBf*FU~%xx&mY2;gg1xOr_L@4|1wt-*1leu53SU--m7k-=5A=@fN14eY(*yuO)U z^iF@7=->GR)C($2AJcrL>N^JoYbK0x5xXtZ5c4k*b#9CMOna5+Ya>LSS;6H@1jWlr z!SKRNM!2-XPc^mAvp2 zA|+EWQt`qE9=Ez5;7UN`!J=QONW!eBq{;KWAT4skP5?g3aH*i)=4ec-k zE^a#7+~D^5`PZz>&0BYgmfYICBB1aL_x-tM3|v*fz{g^@e%r8i!ixpKk{Po;&0nE} zo4W(3-&I+TH8u*T}j*M{)tVNB;sRnu;4}7bK&?`w{%5{ExbT8B*`_`u?ap_$CjN`{?gg z#H^2i6a#(GTld`OjVkF2{fB{(%Zm2~CvG423>@x{J3k9`%)yf=e81VturGQQzc+sr z{{jBUe>@wGh9__e%cvu z2n|x-Ir)HVC=5($io2vs#M@sMGG}|!#)36WG$st-RQg9 zE#vC>Gx)v)6k9vwF_yq&oL282uf%vZ@t8+~J)KXq&L+C2#j&u#o9Uc6yvH5}+g7oP zrKVgiTMqD7_xksWy#TQZD%yb-P;a+?S?0%D>Z+DBq{n^7r(U4@W@OfRWuW!kFaz$h z8xoC6!T9UFfUO2Fnk6;tcJ5VJE7dqx{5#qy+RT@0&W#=5570)OjLUSAGE-M%0^!T#8P|0*K*cAXOA%oqf^6>j` zDHucB_0`*mG_BvM2r{^hI|~vpD6)(Z7k8w&SuqDdi!rd_CD;<0I)@5g*Tp<>>ZMNAl?1KhF{;Ibunw z2xC;h#)K0>8JWHxY39YpI?5UFGT#;Sx3umoJM&Mvqq2Efm4Uk}JmG|VgbQdzJYH(} zd>rIEbjIk~zVm0Y7aru*J;GE3%;X&19}yDr1+o{X3-K!=X?PZ!v3+K{>)E$1HlPA} za;+N@e59Y9IlDtLCgUng^0R_L$RkVJX4~!V$TRVCGhosB(0h+<47<@n%JVP|T16hiU~# zO?+N1$R^3Ma$Wg+J&+h)sfh+LiIF{%YYlv5jVaxKdgWMp*r_V}R zsXOgiz{29o`LGcL%Z%W_kwx2s+g4+JkAwGwl_dYag9-I2BHfKgay3Mm|Da}osB=ug zn4lZEqcT!F4+DK04{TXG&zWHJ-OA$=g-Mlywupc5fobS_Z@L{yH;lIM`g`w4-#`5~ zI`Q~^?`hJ0sPC&cZ)5Uh{`-CYj&}gv*zNQZz%HCH^u^ee&W`; zq$WxqO^Nr7`@yWE&i<~(Jl;>j2dB$MK)p&7HQoKhO0D1dt;1K<7Vtl?uS!^q#5uB;{(n zhd5jaoc_JA3KsG%dCgw&P5GIr=Is6k4(FM9REi*vcHLT^?nRe5$Zt+TfpdHsL1l&G zn;*v!BE+>B>j?CkL(ZaWjav12gnM`^bz)YHpiW;2%0z6*TM*iCH}ggjYyh}Tt1BYXf{~yA?1tx&!Cu!tny3P*Al|?C zF%a+Wc?Fkp%+5#NT5rRKrJ?;81}=;_s||I%agQ9FfkEQ)i}U}16?2ZU+S0opPlwoA zOUS9NNGxL9?3=nW=hF4f*CoEXHpjEmDkI)(FhRO`KpIzEKST3bv$;9E(dn5eM7OzC z>B4b!BQ|1HMS^#9P|kEXfZj<}+*eT05Lw5c*RE*TL=HnQ>Bb+hcmQo>gLyUMhnFyY zi^Q>Z?a+dLa*?>Ovkf|x z_jQ5&@Tm0}7dVY@`+@Gr{O>(2)kW>Zt^Xo;lB%^2S0wslJ z$BVBUx}bWZej=K(5dXy?|AMkX8{}nbe648Oq2mjB@))H^*d;`sCg3{MX-Kg<0pw&-B+@9HRt|`gU4DU z;LpuP3}vp8rnxj7S!XnHcu9lD8}9D4Y01iw0QE!qCzE*#hR&pj6m>;Qq(#`A7wK!+ z7$~90$b;~X7t1$*R!pvE{4`k^SHoIWemfbLdV73I%pCG5bd?wJo@%q)g+4tiv_*}+ zm_$oJE1RrmFTmGeMb4GYPvWc75a2PyFDM%&Ri23*am}i?M<@VQ)ShjKrAf4{O=rZ>_qyMIxNu)T&mkYs(Tl9Z$tvVjh~GmFn=Ww*m0 z>K3pZdm9PA-hX2_g>Y3X#U*7E4Tx?nTZ+uFUS?>LA?w!068bi~;%!*sxuhU%K;`an zV|5ZYxqiHj_ur|vnytRUq2}4*E%zA+%mL8a>sS#@UB-E?&wEJP!maG`kSyAy&3)gn zX@!Y+71v8VE~dL|OwjGpp}ew*y5q95QXmRXzUAIPIN*T*=Z(s(g{eU<;7ee^Ogl7k zET_%5A-yH0d~(+rj&(8tdUO6SOE$qdnWC5mjI8lssZT*mEM>$2LjfzZ6sT!F4^9O3 zLMG2BnKZ{gK5c>QD(`(_)y1SxzlU4dPsU`a^fR$bXAWT5f7)7sgC8%C%LB`tH2%b+ z$3mosxXZG@xoxy`3=v=>GMI4{sg{xWfU9V)&@NoO>009l^62QHwop>&FOKI&(tug= zUQ_8(W}(B4NeF*Rq$7IuRfC^D;5)GPI^f_c#t8jIN9cms~ z=()qC8&*u(PBPg6^zV*NsoXk|EH3BExho7+I!e|II9?JeLDKYp&$roJ)f0DQGxxnM z#sgSn!0cQB`5+=OY7OG0sH*J-AAdZpb$trA4h6r3D@!P#<+Agc90t@{cV}WF0b|T@ zzU1U?u+gx7qDW$KGARmqCVGUBrrZ(UOxAZNnenrb&}9Sr(^tToVussukc-Wv0hn`B zV78o-!*at{In8@7nrR)kix&UR)DJi%tIf&L;Q$6dx@!nTj-P7b9AOKHOdq?_eK zkB&rrpsvqg^Y4+l(lPP)4bI3z97cp@N{Tr|6mlbaUJS=BC4TRP7P(bKo{U&(JWuTv zDmzkPsE6ZBI6{esmPJ@yYTSa`Tu3%9%8Uo=w!1tqIuEO{cSzr7j04t5l@eVmJ=}K5 zRFlr2^WF!a4X4v!@2S66GrxrS;_9{QtWQU-&gD%vo`B5-6qPkB#bJLiH-19KYAGrJ zFWp}i6wuPpm@5K}6BmL}C=wDyJVRLSp} zuQ0zu6jSueP)>BwvU1FUx;iQI5{n?^*m;U8DbcVOQjA|a=1LnTA!}&i1=JTR7r52u z4$;ehZwy2z%u+<+YOV6P9)(aWGsRkUQ+0JuS^KDSr(W|(Icb5CX6Y0aXA4Y5uU@{n zSa8|CbcE)=#EuhFQ-AYYEzBqgds@Wh!Jgj#eOP{%56d3qIo1jCf=cYpx{D^1I=VHy znc9hjP&X>1E;H$PtX2wocAuB1P;q?KUoi$JeT znDr9(m5#j#@ry%5-?P9@A9rjgkS26VbaH*Yp5$8J3rosi zEbaYVAg_G!sH%hGG0?&Q6}m{FljZ6`5n@>#i#}hP&;ym~jr33#o?XA9r%R3fU8BHA zsL->yf{ECX+g?Xw2n+8CQeoy74A{In6Ph*3oaDHPQj$OTT}xmuUyt8hs`z6IYlU}^ z0rf(+YT;ai?XL8m!aiUy zSL#(px>D~GO4(}mcm5Lv{!;8Y&c^T1;czb1@q#P~O;kr7$$*@xrk8v4fn=@~T9p6r1-SXOR9@!UAfHrURDK=En*P zh&-rdda_)hs_IEd{Z<$`QUmt5N>rWnUBBNzCZjEj;8Y3I|8xVPNEfbkDOg(+SMiqK z%BmcIDrlGb^|giwTaK~R#;+_`NHDLB9*v*faKQ>YhWsDZF+Y+b7hKJHbZRG=Utm2X z_|Uj@sUxqHRH}cEMf%AXm@t3TDpyej>$S@*7%nJ7R2ok-nmuLMa9kxS$2C-cM}+FT zyTJP`m=961InT$O=CQt6iLYW2zQ zqUA@>cav1P_}si-IA0WWmL*>J#uvgK{(nfqv#)tY7}!u3J6U@CIV+ZHv7o&Pp;69R zBqxDu{<}Q=1BbtJRSBx@=isc@eWsEB+|}fucU)rRrP^QqI_3xW-9+MevB{&K&{LRwERp)E11#;+^+EOGuB#d?S2 zu|sazp%dk97SV}^c}nAQEleoDf9W)z@Vwo()OA|jCrk?gJ*4r$>bxo+yHxztWA6$7 zb$oB$zqo}K6t8+q%i>(ZzZDy@5Cj2tMQ)!1FX=Kl{ERKIKG+qf@HJ z394RN4AG(23p+ZiL73KmCIx1zU&(l-_pJ2_ja4l?^|^AoE%ayi{O_myWMPS(TRwpc z=U78lEE@G}UAOv|rSW-ac|%$(ZIix>;^TT|nGLVx`2FQmpeKjx=ekCV(6MK{|uos{keR+JZ2%zH;zdA8>LOyo=@kX z{oMY-42QF}{-qxHtp0y~yS4ue^l{5RtL1~7B^GtJF`G~rm!SQ-EGT)e7JSm*^NW3p z*W?OSsAh=|q+-8^{iXPA)I!xKNq^Q?vhs+wgY{7Y#eH&rB^rntHs4S|DkWMnV)#w7 zIM%L{Dz$4aCf8Gz(fm!9CcUwHYe6xmSoLBTE9m9)YaMt0Q4?Aj;J8%It9C8^O^?N( zdP}kNF2glPAGD+1G%s_%i5}VjtNxnLPD)hQS-JX;7##3QeWw{Se$XzICtx+9P6;vp)9@IQL%NP&VAZGdAU{RG`+J$^`v2sks_p~>e7jEXeT4Mw?|fI( z)&0GJ{#N;h=)mi}Ke$5ZTT1)SclL=B=2yO9d3IItoHRNxB~)?9+5QV~tPF@G2xYT* z0n4ZU>j7^|bym5_a;o_X;!W=)i14XCGwd}7ji=vA>5NbkSq zXDWW>C2YQK9^Vrp6;-@q{#ITAb#g{zVDq6fAcd3c51Q4LuA=YSCmF(dDekd0dgC(j zFY!kd3XDHIW?7vsF^H+9+4xJOO(n3-=DKK(qGs2Q7q|597TPvWT*y;=|PuYlzwDNg^fI6v3bai=hH z{x5Jz{urF<(NI!QQC3e*{P>Ba<#GB%eEwedU=Lky^FC4Zx3vEGDgD)&Zy^1;{{D3S z(B`}X|BwHGI`Bgf@ed5{>kn|`4`ghaG4^-#3#qZREpoS&OBgM~{+D(V%FD?~@aAkK z0GP_Zyj!s)rXdO1b6%!5N%-?d^P|Ms`4a&|Qd6<=cj;Pby|*olIa?+4!3u-z8gKz< z$*_$w9YM_!SiDO}8U;ljhywKqhh{RP6}j#p^)tEWHk|%?*L^*a}3|*eKeF zbw!wO$ZWR=cgOSu0?`o0lj2EVL5P1H%>iXk-vYg0?E`VgFn^HPieR%wS0P00!))|d zi!nTRufrKc-~*eGA2|$um#+-+5b=IMnT^PqY0sP3g08_^(8)0gb_V`j%L=FL0K>~p zt8k|9@M`+4(K`Pw#I_18Ers>k&T9fCA6Zf&cTzm(4!9DREp2dr6+QNTZnPn}iIKZa zgSm*kO1*?vBb8_90%9S!fNP`<#~_uH;K3ySF0RNpjWfMAt+^g!_aWE@hq*>SDREk= z&)DbNpu9Km%_zGG0@jQv<)IPc1c>(tty5}+VY*=ORJdOv&GPHcecLR>Zc~9Gsl_&R zU%Pqq;kU zP7Mr}JH4aihBvrraxryv4V}Ak>1VZg?7R8kw^VOMTr=I$lo{?i@`hhJ16wnL1ZrxN zn5@;UF6}jF5hyq=kykvdf>^}r+nTLeNyBQm{@IhPEAcA_kX^$~o8S-x%tedoxA_`Y z>2M=?=MeqxP~a_A_s}3&+U7t% zXRD&HRXb>2&vL4*`N19%z_tTeP(0_0yGwMtB0-Mde8;B|@iU#W=U_s&r>ru-y!jpv zmrLgGP!+Q*3xaiB282g@1X?j`QkG#rbXAJj1N+Hyq}s4!wi{Qj%`erkYpl3w?`g)J zEY7TEkx7lM71tZ$-p|L!C6$ena(M#T#>hT83-!a02K-qpxKo=Vt6GXi@<(3Z zM1-JDUX?kc<)o|J+}TzytLjmkx#KloMLb$hNjX6%*`F~lGUK%PC3dzwB{_mJi_@vx zY83I@*8c8+2YzdZU~XwC%%d@4L>KqW>L>_3<~dWKy<@*Oo$pOqg;q5q zZ|reqxCVrJ5$xWN{ep*4iRsswPKPsS%K^?o@UW%Px`#S<|tp zKs|$xiwUyQW38_4S$PbNH|x>FrDrQ09BP)s?X+=5j%K`CU6)npu#>l(tz7;#@v%~F zXJp!J(Myocwd;1ZV#IJCuwx*)0o_dW5v=wz*I+iP-RIVZWg4RpX}jE7t=5Udr7Mtj z1meh;#nOD`&BR@BrlE$W9AWGaj``5pC@eKD>K+M#y@5`@!t&^#!%9H8tlQx?bF9<{ z0TX;_eTJ)}zYqr_h0@BwzjW`4Pc=vKF&EMk&a+XZ`F4wdt9ah!oLizh%j4=7vLO7+ z%`F4-%@w$~eDRj%tXnCo3(84gPS#WRNr)CjJb#gxWx;3$VJ+ft`YZUyv>*W}?R9Tp zt#)qQahQS`M~V|EVdBDcCqNcD>Mkv6la;AkRPM2j zF_yQEe1e4eK0h&41clQ<)4I)JGlC#FzN70`vv?ftkS4nCJD&gOYy;HqTjeDCNEtE4 zw>Ecn3%H3V@gNV}X%SWec<%6P4;)*{ZUki#>x8ZL{=ex>1T~#!0&nc-JM_bF{gl3! zhLZ&T7i2uLaPuq>JO>@ishGzB#!0d~6piQDcB|kZBhk^s zci;}!vhVW{-_SBrC4Unjc;`9P*!WwZz?1Rci2j1=5m)Qq|9A%ZZjhVYn%UT5_*K>t z5=3UMSHL4o@X~7+;Wvpxl=?li*%{I3FZmf~)?<353YgxSJzOX&HoETBqm zdk^fthOohtH0<5W{@?GweY;=h*CzK6HmfW+F2x!AK|G0Ie>ZH1-~rs^CN$RVEpcCyMlWTYI z8MssLA7f9R+c)+2@pu8M1;9|E2}?$`CE!{o9IzGL@QFX_D696P3=MuD;d7KPqhrDj zS(##WbjLUM-*&|5TOyH-s>4dn+GbiB$FEJjv}3uqV|O@q%=3lzT##<|2Keqz473vLi@s4kBj1XI zz~DSe4G(u^#56o+%8-HPxt^(VYlRGMo47mQ-a&z>;(-7gd)jm?+jq_SSAz0;mJJF` z(>t1)+`gfP)m`&C&NTzjg#v`+=JhSAydC74G4KTuTQvY@7Pn#1EGYip)b?ho7*hsD zs}I9=dv$BnTd`*)c&aUnHEdMq_QGZ~6Jdxji*O#dUH45r z8_XFkS5@uC=RAZ!3d3cX8kBE-$L2*~O`L+GVF<3sjg7G%ADg^-Z5HKnTI!(61qGU8 z+Vpk7G#s}mE=C3hGi@B|A<=8;u|>CgGu^GrvT>3}wuFLvaVw;p<)RDjEY?QE;BsDi z!`A7vhNC#o1W`Fks3NQ_?sO69l1!GSxB^D8A_`J*9B6(UTAhFh$a!+IZ%Gp3AZk(p zZA_ly09O-|8!Hied~*An4Dxx14GN0d@o5Rl-Bo{7KmIO3xdzAi(^k`;*vdzR;uN4EO_%luE}?@w87m)@K2!^ll>}v5R2>6S0>bMx3mbt(a6h)CCJcmlGBD>?4Ij=RQf@$&BN>187f z>b{*y5L>VGs7Sgfnh(%xhV2>~JCiJjEV~I2-g|_Q*L8*v6(~K5=L$s~Vv99dKRhE) z9x5stW|~{Z{-urNfHpTW*cMddt(rrre9rS@iUS#?4SFHElPDc$r2rJ%OH)`tMM{j_ zcmA{JjFWo##)k=n5t?{vkX*&Ia}?z1P;3_1!BXbB`g_@+BW9EvHY^QQMjwvMwy^aI zGhLP&yon}i{Qh;!xm?8cc&U|^tAIMH6%z(}WIWT@K>X~{@Hx?V<#o3b+fk}n0p660 zWo=Jp=Ifzs^1N)^R}waQJy<;o6hTJqvDTVU(1ziyAgonRAT4+}&h)+Pt!fw>JO820R8&F4k?sNC6MeXnrCs0vW_2IwN#No?&GK_!6FY4 zP_6B^gvlE{kih@Qy!zylN>NA3-MJN$tQ6SaY>=EjP)Gu)`OUxrh(z8wUZDHnUh#lyrM#ay=l=W8$AaE( zNH>vuzB4WP;A+bt2T`>54S0?7zC#-T!2XaebVT+Fyul-;rkCu)dVlbg3|`Pib~5xt z&44%!lHbn#8N;q)Q_p#P%Elid=b7^k`~*OGl63H%JP`I)lm|2r>FdGq(xV$;=O*IJ ztgW@1%g5RbClQ^^Bg4?j&9-G(JSQ^Jj~@e}rcYE1kT4;n)3ZqB%T6DUuem}TFy2ul zs*B}wjoVvto9CkWY`^S*cb2}ChGpDHG^u`K_g@AsKF?KH;@t#@O6nz)b~hEhQ>ls;%tZ!vUu-#;v1&o zac^jjS+WFuv}oNd1Ma!9sm|I74lA(5O)U@BAeqFi zu4FWK9=crg^&U0^Tcmx&ubGPrINkF&o+M*%8LPnD^eY6J-VSojuL5vQPXn++PdPt| z3Oz&FKKI+etGj}pmCeDp#oOSp%Y#@9X(&j88Cv0f02FTyG&!4#Gu(4QJ$ko?;yM>Z z?sC!y14}>4#UKD#zScDwN2?F z)RkgGBBxAx*IL>roj8>0!9Q!_CD0?P@=rEw9CjS+9?zQGClfYv$~K2(guIK@!OYgPjp09J37y zlVF?;*T`88m#fH=@Yq4!qyiIOz7S2$OkW{&5h+q&TaaYe8$i7}1=+v}g7D!mjb@kf zx|8UcZFI=zkO^xejk^M$CYmm48v`C5mt(CUMvd4oop@k%Aa>R>U>>2pmqS3k<&9YY zUrpM#EKq@}JHalCz%s{KwMLDWO)!AeL?S0dWNM)@C$wcn%T1Otb02)TGw{ZDVgSQr z5xHcXYw*~6$tT&3JgWv5eKety5r-1H7*WEnPVuz5ufUoa8|F(*bJA1LB%^sDOV;&fB+iV~oPtM$yq_tz4@ zL>fG9BE_?x!8qptlTRB*+5P`(L9hY7nm+qfnV)=_Zf;N863A=Vw=N93`k5_7?`@OY z+<|Kt;S(7A>`p#zEOPzYesQSKa3WT;Pp#IWiI({zu>N6{VR^IFyDi?#w)!OoNHS** z7V8`B4zyOJZMw^;y*F3YT)(2kg5; zcV@Hg75$kZD~C(P&dXNOe}S1Y1zUiinGHk|( z)oNROCT{O%hjTSmEaKLMRkCaT_6r6wx~kaCUhBkjYXy+liRdfcR${a^Gba9$zgN+l zG7SWzK;GT^rF@M_oxjr}zcS;)ch2l{kn_c5Hs6D|JMGD3)7L9J1q!ltU9x2_yseMe z(l~cag&_-Vt=7KYp&=u2@yNqzptGSCiEZIurQg|-Z;?Yd%(e3rlUfdE{*i*rbLQi0 z6gSTPcG(4et7Uo8GjC#a*K(A5-HrlJ#^YdayJzA#cgE~YXAebhgduq^p-N0wEJ{K+ zi9OUer=vA>C~p!qfU4bCS!e#Ax9ix8>-l zNI;vi&*j5HIwB|C?3&U%>5b(oS%k_OD2YhCEe|(@GE3U7$R z2R@p>JP%5M)enr zI3ll+v$-Mj1E|YLjSSpiA)p8C`=(s6r9R)#R)Yup`3>`^H`)kr2tBCy!|0Hav;X%B zpzTRW46&hN$X5+q;gQ=a+Cp%MACXD)T%7bFd8rVQc`hPRbdZ2Oz!-pZSdQ|jnV`J3 zxn@xn=}_N%lkVa{7^o1_MMM|=MR9q`88l`_3^3Qck#e9)8xGk8CD>$uMI?tIZHIU= z3+uyWz0om7SeSU2R%EtuFo7F7_PPEjy-aiU&Ll$E(+mMskH(_AFzEG6i@C7<#69}l zrp))%c<*Y=1_u!^*C!Z|EwTtOJh>e}SvOl=8D=EOJ&efX;o3DfeUq13m$TzzxVYG{ z8kXk5yNxwL3r3<06qot?c9#in&yCok#%7U4dumIbUgE#^QV<4E=yiD5oWPSTP~m{) zpxMm1Q4w~k$fmVr*mgUL^eRLq?+V~gUL`zxF!Yqn4b#~KET|M|7{e*ry&?9U)nWW* zSE$KbYxi{_%_9s*DrP*O46OEi%n6VW6RV8OuRCvq&AhUtqu3r9xSZssESe)SH8;dN z57&3!S4i>bwk-i$r;PMk++)tEm~#azIX2&^KNhfaajr8cS+y2P1p3qNe%O*-5*?ww z#ueufGnsQuBdy%^iz0BmWMq7481r;BkgTX%?Fceh{97wB_rtzmEhg6>s&AJyD8M0o z@LTxD7RfHOnGBUPIAA*xDFYm|g)a84FfSyP8>~MPdwc1!-ci>8tHCAK&qN_e;T#HG z&u+>%=7@T z^$1;3FNb^HocD^yJ;jz|PQot18s_W$6E>ts7OPxCHtE)b9yv$z?)i05R?J{!DpaeG zdsjF#7*y-aZ4Xr4NO7MUh8{Nut?*GI!o-zCR$@z=1N!#S#}Otd~cdLTnsdg*hq z`642Mb9W;LB81!WayEhpfQZ2euB#mqqk#vst^9<@J4T?>o`fg#lTi>MN@+yRs782i zXc$x4bJS8DfJO{YP%Mb&ygbl_jUE;ryz?;dr3q??#Z8Z&5t*fi3hpUM)1k`#@2xYM zR45#^F%FL+*%8j{tb9kzh)d+fM4XE<-!XNrU00d>JQusi>q zzI!8u-}gN?S)iK!-y|>Z028i$;PCyv`#b3C-QoA%cRax09I_FUGvRVGFhc61Uo3~j z>7(kKtIZJbQu&gESv1~6DF#D27bdG!Fs7X9W!<7+>Xm8QSeq9%%yO6Ilp!ZF$%CVf>QdOl2~%bu?(54Nhl#VFBW~kT z1CDjzSZ_}N@E@r`jRIxNnh?N?S!S(5az7+oJ_FD^1<8@XpCAE7#M!1-uvlk&7}M_G zfzwUF5~w-+1JJ1~Wr4BCza$wm$p9|`-<~;SAeN(k77y;EZQC>c>F4P(D&77_{lEO@ z4e5J(hLE}c*>0CvGxS#S$DAJYx-)Cnvr>(onGK}m^9Jui!= zFf6FOcZHV4PnTo;F<6OQg;@5m2D!9UM7OB4evhqQS*P)#3#?(aQ5pqTTu)b0RE74L zs_H5<4CI>|FK3|YUWs0It6o_6Bez;R|Kxo@XSXR8&JzFhNKFj;mE#pT;^a@aNtWKw z%Nm${cCFg+o+_(UDsy6J{m@x$d{qqblyqLPbc#{Lf4j=7?*Hba zWiGtK;DLj{tL^2-(QI9CEez4hl?2FrcATU7?Sk9`E^{LNGjD#FKYX#G-K&H^>PZgsd<7EE2 zSH=eAIA4Ne*Dn?q9w->bb`m7Og2E7Du8k}F8_2v&)vqSQAtrD)fFXW35fpc9;gDS8mq8d`U{}Sd^eY(9}1vmc`3+Knn^*$Z zto`Mu(JZ|D%I)X+GGe3ckLR%NE9b$$K=;c(mwX>@TLYh^=r;LxRm$2AozGPQ+Jg1F zfcC%ep>Vwrq0(J1{TWTwL0(sX>%_F6`hOvp9OYF*P)RRcLwWXZcRNXpzspaUX7oM5 zY}X4GeX_VDeR~-BPEZ^SSpJK3PCYyxCzfZhu0wJD=4J`XTeDt!NfPXvf=Qvzb$voF z9IfpZaQQ0ILg`sToRc{e>#2V$u#(ymfqa$(!}5z{%<5r(%lVriFW6E`OqSN|dWdJ) z%=P)N!c_g7r14ecp9Z=OD7s7afB`oH{JvlqbfmAeV3K0sr+%KT-b+A5sV-UQF?gi3 zpw7n+J1_7lPE}p3=)zL+(tqN(jR1Y6zDK2s9ryUN#RBw5|9{Mq^N(9K>r1_t1ZIF; zV9x4=UWSR>e|av<{*=g{HcUv!w$IW0G9_fDmL`urj6IR9Ej|<$)A%276jC8G-?*(i z`Cd=^-->w9<<0G7g`5~(p8Z=V^-x5ng;P~OZ!|ug14cR5$4fD-Yn7&G~azB23?=n}Ah%TWc{h5XM@dZ=G^`!+*uR0O&)2N{) zw?J8KPZFf{)PlA8s5AQEXHy@z&jW(l3SLF}t!0}JHQ`p{`K>DkKaJSFj4ym2rOM!R z-SxMd&#~cO%ZxCO>pn>gT~&)vz2p;@`L-zVd}Z0b%b8cFgzty9X($b!` zMU_xZt9xpZbqys8GIQuxM^`5O>`Ku+~OM0-dPvZ8@ zj84!_74Oef^77U5ZwzAKWcai~?5hr%o*XZ<4tkMa&#FcFQ?H7@QqMQ(xk6 zATt1k@av_SIaPGU*#dJ~2gEV9TDBA0+reDV!Z8tk#D8J+cv-`_$xc5#=(Cmyz-E;l zY&Z=nnhqritc*r*r>WI(c($|VxUmWg4a)%LllN9zHs~!zgfj8s0ESe1l*Unb{e(t9 z3IR5f(IIPxzQ(mNzDq`GiQ&a>#rJ1w5nZ z0HCFWcV-eIm0D{FV6sZprZLrBeO=ig!L*;I1ye?exwLbdyv#u(764lT9TZ>dV4T7o zMx43ed3iQBvx(LJt%FmBb^nMc89B8Jg43izW#C=?#RCi3AZkVl;DK0pqum)WOr^bv zV`VW1vD!GsG!6!ehKYagR+TgZj&b6qHc!Mak>MI;(a5+&&5<-u-|z2ZSBWWMoBk8U9D&<2*aOaQ`fA3CWrP zo1}qpi5V8zU;}68)9sh%whtdc+^J8rgP5*1ZZ)_}Nv{Q%Pg;fEwI4`fA`agrPDh@K zp}YwkUuGi!CxUFnnS&4$Z4fa8tQirYWUJ26Ih!fSXl#KwYb=ax=4^|l?4AD5+VOXs zr>&u?oNL8HEN*wdt%dPi_w`2rq|$HF9ZibhP=A`rs=6C`Cp_+G|y`W@K&KGsHd`G8jdRs*@jo!hPi+JO)NI85;zR%V; za(Y$BW_q*`F+Yxsv?jbvglVhrp*+wP5sh`HgaQx!{#Dfs#82OW=VpxywPlqCkKU9U z&gXAiP^w74$WJ=8GKEE#5kv$6XoL*~U6ycbkPSP~o+k;iJZKmlr^lN&nJi8zW8I(E zt6ZhIV@Oy;$Jh~M<|0s#Sxf_Eo%IA~Q>Z7V@^f$JD!ZNy0X#Zf=T*_DwI{v)&(ZVIj(Ds=KT3OOuRLs@B-Lfj&Wlo|#>e#g73A8z?!CcQ!Li7LJd zzp>SJ3}q%CxDWE@%0}Kices9s04q^sC*)Uh zFMvxdb+zb9P@1-Rd}0D!^*i)IU6A1IWSUzcnXF zAi*&w%ZBF9Jp;Cg8Oi^)1Bh~#3Nf11LL(N(8y7PiiLA_q4v$mMK>r~6up$rXAP~7F zH6(vx#&bYx>mLubnV6Voc0FSIKI*V_*)umNJG?9wiyZ6SUdwm2LU*i+arrnE@>Z*& ziDp_>Ntbh|Dz*%1iEkC$g-%9GNrT2K3N|Mg zZ34x$_<6nR_%odjf|@vFJ7>q_gwz88{%p|-Ae_wc{(7&n%L1FeA&wZUQHV2-w*bz#xe#8nXd9B;%H5@i zjhq~!vh3H$I$s|72safcHNT!PUjPvx@T?oVn+10M;#^pZZN5A|2+Glh1H5!x90nR= z;fXazHX43);wgE7u@B(O1i`tHp>1zP0DIRfF}tIr^qZB0m~L+)+tc8wPjm-y7K$$~ zHfCAnK4cGEA7!#tZyWe>sfRUgBuTNQ^$C^fxNPyd#`Rd{D>fr+ST*p0p+8qRT*@YAPfj` zzl^Z9LW`ST6aZB~s=sEHOE)$-92Pq48ycDM#n_6Cy~V`}8b<+j!b5GY*eH!u0FDY~ zN))taNbkZ5S!M>|Y}E50N(C&pwWk=Ty|cuV(-a=4(G7`x)+i6;mMc4!Ro?yi6unqB z{_WTB(FDX3SB5#iFJ0Dy84n=!#!UsXwPPkru)JnV21jAwKxOBxaV(l4dacu&E~BT> z0)7ow3HTtJy#GtXE$bQdcx^2C(M?oD_+$v6%da%eHO*NO-lKY@)+O7incyqO3l45C z2Hbqf2aR;Z?L&%D2yWo|`%qoICWSl`idD1Z*IsfHBHu(z8ElE=&?#!EXv@D z4wB0r#s{`FKuM@XOhqDwl&OaWvtnLUZ^=8MtYyM|)=#gF>0g9&S@Q1- zF05w@0pXvYpiu$XW518Kf`u`l4-J?<;vk6#8a$E}6Gk~gS*GOm9u#>JJBSc&1GV76H}zCq}hG45qPFmTz^i(_B4|-IW(62nk72an^hW2 z>s8Hhcz62++?W&rkS!Q9M~WYebpS_ZPVSSd1kAV`u5n}x$X=5TgJTT+HLo5K>jWe} z0bD1`w=%n(+0P+J*Ysr$@y(pyKa(JMII9aEFvD3lAunu`L_Xf)27OBx7KWwW5H!Tx zk7J8N&sfF>Fw#WM<<2)tv7F{?H9c7qW6>!s^(*Y_&~ zv@%SlC0_aGt%ZrLw7_T%o7`4lKfxMZo`1CPZBc8$ z?S=v;C(hX403WUWqq#F^?gMK)Xu!7`UrN4kL=<#03j4T?zBl^4JgcUO_J_@6w{?it zEV9lK2YL1w`8f$@_L7A->pOAzbJ$mZ<7k`>laFK)*(SR0wGXh-Z-4eMCrRnQW*_hd z2j1RBf9HR+3kVzgGWgtETAq(TZy)$PUsD(ge@_Seg2C&1=YjtQNqy(vAK~Qt^$iKT z-232l)#sKNet6}ekkwGAG1E~SOn{DP?8syJ(tmb@Fj5&>d|-?|+LVE84Hz+)%lQfJ zOoW3LUTKyX__84W;BlC&w;ZqiYO2L*yGej9=a~H@M$Ba*i5DvYTs6Y%5-}vej9Ehl zG)%=TiYvhgnIf4f7Lm5I&l(xSkQIA{*q;@HHME3gAOTx^^`1GO%>909U$lFM&I&g; z&neASOoMcsAB%q42+e)zY7l}qj0CNS2WTgQs}SMi!0-%F$%CXJM67_5=6(*CI+_M9 zMN=wKbkLNVXpSew!}GVrMyM{q6Vv6Qu8yy?mU`^V?#F4sFCiGlHs9@T7Lyd|bT9OD zF|v6XB@Q&tVsqUQ4~;1TP1J@mcybCLy2U|o`V?9=5k3%Pw)R<^Q^2R}9k#x!% zpkK+v~^?anj2Xn%6mCsEaqg01Z-j_-Ix@6CHh{vFjkO-_7~}H(jMIe$EYlZ3G}GQ3~cmDRPy^J*INsb#&Tk9}fk z!$JNbaAb#obnV7-mi<4mf|R|WIRH42;S{Y)-x8ZlM?r~E7X1;=xr zcGa8}RRm<-X+cV|UV3KZXzY2882ewM17!o2jSqcE%k?@+6$eC(ru*xAz$YN+HSBmG zMmJ8~NyB|z3UbX1kFPEu4WX{S<#j{`xOkooI|xl~9FH+U=;bGLXD{1f#Gpr}IdKmW zIY|V&5rN*_S>v=YD~3T=vuoG@5p)MO${D`jjVlTfdL(&&!B-*2@uc{lJv0xe5ttRm zE^p-3;tel2q@j^n4h9(9v^on5356fxWs`eS&S9XUs;5{-nPKszE2_MZkoKe+Q}IQP+P(6pT6^M z8_8XZbAHZPfN5ReO|4qc1!PBKKWpB@9s+%a8b<|v2E+p{KRKMVpM(I|#5wI)UZey_ z-K?u{=}I2(BMjE?Cg3=o0w6sqK@RegQay*bsW!J+Kcxe1%WTGSu*W&8zcG9ca{rq& zx9Bq36@{z=IH~dA{3#8r7nc|;3phqKuD+Z{MMi_9;HkvvP%C`+6j-`J zaaaWCq^&uY^Udc5iJ>G1>$&yWwSES{G_R+Y&=RI7^FRC9=74zvWZP6Gw+P_^#xsYE z*iM8Yonxlp0fy4n(x|#6o0Wj}r*Oa_dw{YaA&$ADn?g;_HRCc{O$WPX2&kQ?<7vjj zFDGl1)}N0Nlxl*?s`wY5%%9&5G)%Q>*%HD~z?o%y%(y825psjf*5+8@&sp(lfy2|& zsGXvQ8Om)c*;JH`r$QMs6Ew}0EXk$YBh5FUz>H(B_vuV2;7nB1lWR^4kjGkQG^N%Z z*o1OHU=A<2wq_Z`jHjCOET+!|?Ou2RmVy;b3I(6~o`O)eMhnA*1aK^Apt+eO1d$Q3 za_0B)_k*cc%67GPVzO&zc%(%^x-vm+f@)gb@Bq(OGAck{?F@A5Xd3waf4C47+~yU% zB>Fn|qhxS5T^fov+f@Y+<8f3txfT%B$l}rLm}sCrC{TF0oM!;c6FT!IA!poc*PJEY*#J?xf-JRUj3kz6 zt6lk`Ps^w=#uyJu+3~?-_>XdLM->ka_|yF^8qy{mj!|-=clnzMP$fOLSifVW`rA+? zp>JxgHb<0Q`9<7bA_B^lV#G=ZQbT?fechdk?}gYo#ohAp28?I815p4`fAX0Qu!~~Z z5JE+K`@13w!#5?##X{+s6)3k~fTXEx6a#jSVYI-pvl4Q}N zo}h4256*owKdj=lMY~WF-3_pox_J@`Fl@jLlH9=Wytuu z9i!TZbM@3yS|mV)fuQ=}lIGq-d&7b6;a9&}^Ox8^6Wv?izuS8cVz|e0g6rge&7`1n zbUzQa3GN5pEPdSHfyYg9BF}G~U0L#g?pr0jKK};4KjV@G_gx&g+n_3jaP{QL`vCt0 z4Tpp-AfH`ZU!23+kiFZpif zF0huZL_pSVbeT#S*5z-~%7yR9%oNRwH?aQdjAet(n+s^iV5}?f%Zp{3(^2)h8wcX$ zgTFN{i%cfHY0ZbRhPK8V6t|z1-(0*(Z+E74Ypd3=yjy6~w^Qr-lSCZ}6bTljB=B1p zN16s<>8~%j_h89dm^yF{ut!9J9WkGb`APjA-#d8=4g2M9e$ zYQ2d+Tdccg=RUb*3cDWueO{(fK39D+$UB2{wE+T}a|L;6tq~wxdWp-@DwrSaSFv3e z*YnUGGibY3b*j|^LV`IVDyb)hE92>{LAPsaR zyL^@#jKGl{W(gS=OYAUvJjuuEQ0HDJ%SGxfT5u)vckUT#nYudgC9gVc!+wuT!kGBxef=_4zN+J`eq#S#?4EQ7DF&{T9eYWWr ztgIQ>rtN5a(IIF^kB1wF_3NnZ60&5fBWH)jBU;F_MS(`@sp~0uXEEfCUb5XH()k2q zsmtKp9!I}Ix=nzQ_{kT-EVsTq&g_F}+6rMc%Sx&SeR`ZUMr|bc?WWO8$0z5a@=`^< zY4K+%SuLnM@HwD+<@VS4aJ&t35b;fScdqEj*}>ihlmq|b%98I1Ql7wK<$D(~)F3Xp1K~f?&r4Q!r==VV*4c;=6gw;y|HSU~%Sp_q(5J%6Ey8k^fjcP{<^G zWUj_ZeSyy?`DO((Paw`kimqGC3yLQVY4+QZ&&vJNvp)M>0)>rLL3#dif@G-j{!xZG z*H(IdrN0*hPCWQK1*Lf0-lIpB9(c@yxK|m1f+E$wUNa?C2KM3~tBXG7^2a|)<>9x7ELtH$+J*Pe~b?pBk{ zZkGQwF^aKMFDU?Jj$e4Nb|SRYz_6;acfU*Tvi=mbz@SCck<=81WS{S-`O^5u-vz=% zL`+cQ-=%?oL6e9`U0~eoyOBiMSg_t@*ogH1r-O|VpS=2MFiiBqdrVIMFLuyl_bxt4 zr7E126<}JGaugm)I!2gKLVmOMKg%z@lh|~t>8-zY&wH7T7i6ZC$|Z^Z$bShFZ~T|k z?*r}$j~CI6l>MUYKDHO^bja#W)sX6Ar+=S!Vib4GPt(Bk>Yy*J^{h#MgZ|#d->;~^ z0o%YLG}Hk0E2^Vy%fL|<6~tN+5}Gpe`_CW-;=09}YDl6OT~N0UW=U$%XMn4Q&~RE7`vW%85-wZLCl74f!d09}fm)%fHSSAvrZ>eP0b-OE39C+Vnb>#PsO zrR8Tr^~w5@YOBcLnjb&o~da86R5ACe1#Y z+fXk5Sp_GW1)(meKChyF$977)dK#>J{e$JF3lBJf)Ytw#0$Stk&)(iAJ-R8PrBtDQ zz3)B)qqk=FMis}KaliE*2^*qLaRo53I1L{+DlAJ zldqTmE=DJ5dz;aR=dIVt(vqOn!~)w;9%`rdtBkK5Grb!1oc_Av8c?nL`vOESi9y4U z{M0ygO46M=F%6*poDA(nTmanjvdsHXBOK*$|SP(!Eb2Rqbk99}WlfS4-z1`k|4odHYEuXH? z%XN$e<9Gdr2@z8JHG6UJiK(Keq?oy&4%Fr28Ya>$ifY8?R}9a@dKV&g#K6byuScvZ zLi}{J!aam1CqNY%pThE2y8T@@=j!Ejm@gNoeIr+>{tJ>!RKLpuZC`qeSMHUSu|`Y9 z3mM%f@94_J(?b<_R===Xg!kg+qR-n>*TW|GPke&7f8sP=;>1ap{9jjk?5`LEq!`DP zJ)GNm;$RPsVSG^8GUyhJ&QvvxeeSnk15AiuNQKnXf6OeoRmPXC4U z@@({bXo&Z;DeFLas;h)BR#2B|C5k0?()#^)@Pgm#W|F@}L$3EuQV8~%+TVPZ1-J$6 z_}82s#&5H97}4lklhp4{EQvLA?ys6Y1B&A!q92@+d*`|Rqd_`>W#m><={r64t#TZ5E};akO7uXVtnMu|BGlqp}xG8`|F|WQwCZqiCLsMy&;1YC`&3x%7klus|hL zeRmut*B2_vCH;7Hcs}ky^8B=hqE$$}fB!?#s$i=aApVxZRInO0YRT)*&ZuUnmOhQgbAr4)|;%@jiga{pL2l*yq8&1v-aV(e( zEb$az&+Y=tK6ov0#HSQ8t*B+lg1~?s&yLP7@{>*n^hlG~I9JtwyuDBFiBI!2I;Jv` z%=P#MHy=1Q)KfE>=a}*l4I+r<60PTKflsJ4FtEf_$bzOqkb#lw`W827fez1MGMtH88lG>ptK5*l0 zyO~Y0v&7MW`Z8`FFvJ3P-dTrn89S~M9L&Sr?~L5@65~}waOJUJlktX16;qEvW`$@_yT;7vDd%9#jN}V38JSs-T;e4u z6rNOC*3A_zVS+&l&#^OvI)AS9MV&r$plkQ8QFv((QF>=PSPTQ$3agAMP2Q}aJ${=4 zyi@>U`jK?|ISTNsrr78PZPw@rOvuGP9-?Pa2sR+0x_{08Q8lYm>>QcMOn!QU^F#oD zYjh4KZ;7Tlp}AgVf*v>NVySPLi;6yphr)2LB@sVDImp3J$+8U~V2mRQHbk!D+-SYk z)F#3RTBRU+$405hN)K1AuAL-bTmuVJY0Ye9_Izd*J}*2Au5*}w$DEFwRC5G+OH4kS zaoqV91}CkWf?b%+Q%*9gP|MQ}l=yQ29M&A^{pJyF5OCia`G$?BwVn&VDWrj|>{f*2 z(UOgGPD%J$MdBnw$ICU2BRe@CP&wmPr&DYk$pm4-qUV5UEo3ehiN8=jxeg3_Wr3*x zioLf9W#4NRNW_6-^anGCm` zt`>(GXj3WQSGbT2Ff;K%?RJeemDV`%NH|%zu1pL89usRpj zG~&j2gBRPTpB{>4juUF;K)ra z{nb|(MO+W5cneDZ4KkzfTCfvfn^fWsiS)o1GZWI34x+e*&0D#1T2h;(l{41zh;T6( zLahqyC~ntfpDVI3#EoewA`>s$jF$4{5AIEMH=6EjS#ZY74f)$Tc^TolfG}*R!E6fj zE6&hK$I*8y`iiJi$%O}vhsbEP&1{$@dZ7P|H{2Lcwo;gv>H3#2bVB?bVtsf(;~A! z6q!6|8s33f(FNUsUk)y2({`pUoJ4D`)u68VS)xeoNjdK2-5TFzMtmLrez%Rda*fO5 z$SUnT)|-BVW%BoBHj5hx1lO-;*qo>z;x;)*2kXR3^**hE(?+v)G6JIqTw-ESo=1|^ zm%9O@^ja$4fSiTY9F?d-=P2ebynOu-0iYQ(oi26t%)d*?wDauzDxnkQcAbh8GI$+k zzoU|_8uN-8r!Ea1)+D`3{MgN!Cnp1&e>9W{HC&LkSP`!kt)wvZG}lZ1gc9^gS=FWT5wc2f+qg7 zw#9jwN$p5_@~a5U#{Q1-(C|AzH%w)aTaD8gvo0CQl)}3fJP;8P!RDdI+vUqLTS;S< zP(anAAgzb+X^Xr;LAn(Ndu&ObV~XT%0nC}IBfoFY<=*5#y^nFE|3ER_v1@D*)SKom z`F*N&Fs%%A+C9mBmY=zED1lz|cvZX_r-4Rcouw=!L-6Doy$7(%UL{7LbdN6$!}Q0F z0uEU5V~(6Qn=#a{V0APjQF~ibp0~u7&`D2?R4g+W+?^)O=V@^=o>f{L{|*2c(W1^< z5|{9vb~Umjk)jOzG2mEEV2SuyilYs%!x#k%BtHZT-t^r{1*L$b8Y45O4iX=Cm5obU z580)v&$B^YYn*>qnyTC!ev8bfjFs_}PLmVl)6m)pBHBxEFW5jJEm^GM0j<@@a%TSJin<<5j`s6Y)-SBP2VWy_<-InniNGjHcWJz1p^vSAPLHj2g4Ed6Apkab(*E zFyh5}*U&bO??~jdnH=!@%n5R@+HIsf0fxRBY-ty^tk=EeJ301fG(4N5*m73ca8)s7 zjRykPkU8#ep69~)90m^`Xy1i_{0;FqVOe;fzce*a`VH;yHCr}mD)PwG$c*)L1f6ni!#{1+(rg> zq7K0ypJ_)jjJ9jqNb|^h+1%)%LJ1tLzN&Md0<(e#lFrh{_{j(mJVaIll=}gGhMY+{ z`_9qDJB|Wg06P46MDDmNYv$A_1S>rnbMOjDDAZw?5$$-6U-xIbTp05ZxUE$rra?Xv z2~fD}TWOG~VB37#cT)FJz37qZNFXF6p zZ`L0<|1>TyQby7SH1DzSS-}^4V>knqNXUj4uz2KB9%C-IG7C52a>S&YBzCM|vvH#r zGmhOL0q8E+h*3}NNl0nz2RPVu$h(KTXEbCK33~<^2sW$N9hx%jq2C}x@MdV@zc|T}$?TV9M{oK*>Hx0fMaF`bQ!QvfD z3p5!OZ^85GfZ<(B)Zvt0!ImjY!#+-+b%(upIm((@}DW`EE$E@dqac!mGR1g}0 zM$~FH(DYU}HB`%7#!`^6q(ipjM&(>s1v|RIfeN)Nkp7h@J1|Z1&s}Ks-YnyLHfzn|?YzB%s8WbB}|wD%)^etg(&pq5{}t zFK9s*{1Nd+zkq;4IlA~Q95gcj+T1h*NYdzxb0{E?Km*Pz!kWrdCe#A8pvh}1>EJSynwZp8d47GA-2nivnmY{O}0X}E)| z6^>UKZeMUtT^zamyk^`p;NuD&s>|;|zDQ{>o?;sy)_0~SsMp*je&s$f48mnz3;_Iu z6-rumx-XH#Cd-r~xyIDIxv-*0`3 z+kjmuuhcIJikB|RI9*38A!@jyw~G9&@hyam;X{M;KM;sauvWA_>{E{Pgmg|Nb8elt zT-NRgcqE;bJKkatIDqbcLtl_*Lzir|djPPPZMC#h#ngV=@XV8(c(yw9m9BZ2Og_Ep zt5xo(Co}OB*(rdP`wZ|zk;dZqS-yfZskpTwe}!tqGsaWSed9SCi0l?>UY_u}y$nOH z-5~x@IelW{{UMqTV7S!J!Vq+O0o6xiM}Aq3-j@!)x)`lNbSG+$UEJf!=Nto|ux3B^ z1g7Oc65;lD=5aUTDMQ}depEDjmi{LCnpHKxOE1P8fod5KjlJGu5rtW0yQC=x5^PWy z{@+;=JY*K2IX3v3i5SqrJ@&9c{dppU^vB)?}Nl9wr%~@Q_P?! z;aMev+DU2g3vwAbP5Ft{=58>UXgZZ1Gqitmf-U4^g}Z{+fPRGqN6Q_)0~~cS^|WKJ z#qEQ>XoWilEtlY6@K}3X!^Sq1RrJorG%zG zz_tP7Ic!MKZA+JHYCglfX>-$#nr?XY>D##osZAj{%XI+_*i;j#^qs^ETXh@`7~KaD0k< zlBAAZlXa+fmW~6_JPm{7p8#%>Axnx~UDpml`X>50d|dMoNaw;4&#uv^I0P4(TZw~o zm?`rN3Iw;w@8;p3b^fPi}zBHLgiTxGV-^Yep_THNMHAX6cT z6O{oTeF)D@LUy<#wwv)h2!k|_;%^WMvv&>NPnsBKK>52^w#^s;-OJAd;c0Cn&p;W_ zfy-ULp%s+_Ef;79xZ2HXlP4s${BvrQwGSp@fY1u3z;VO8dF4iFZW6;aD_q^#XOGMk zmUVegPZO2r((ypXs6h^~h>SeedG`ca@7^F!8xH7$%vF+&Js%QpTKlz&jp3hCb11tp=?MiN_qE&pJAOLG{JBMA+a-#!a|q-vT5c(+*& z(G;x>X-|xYwV7|OVPhE38S)m!e5-E6bUPpd8S({JuwB*7_1I@6Lmi&rTU+8}T>erD zVX@8J>m&zAc%%CZynwE`+v044u08j}OPF=3wTBN-NVaPu4XBX%c0C;MM)(1^WfqQ& z-RSY|-(J9RHdwEKwDf71-w?gach(wA4}0dp4R6{5VH$fGT)>fznKq}FZtjY$Al544 zTt~2ZM{B?|^W9C$7<9BvL+nUi5>K1w>)E?5&-I8}vP&H1>$fH^hvRLFFOZEHcz>L} zh~BMlSJxrXgNSFxh}(o;U@u&kkIIo*(+Xw810owt*wOTD-+(Rh+GD5^C>HxeVPN?d z{^nR8q}lBn%^7HaZi4gVY(2dl6yo0Xx#e8BQFc%x$Bc4~->>)1oVxgvdMKC#Be30D z_bQ694IKraxyW82hYf6?o<)F*@yhRFOq&tn8{*>8dGI#%lr<+NM%<=Soi^S378+AS1+ zE`Z8eDDz?TG$!o{CJYGOjC-g32b6VFYOqU!s`xW0V$)t1Tv&lE|m3UiC77Qhk)jaLA*BaTX z?(KNUqdb;|jp>`tTe$5{IFW}|<4%B=EZ$)+!grQg18kF~Gr2+;5+~g2^B#1Azp<-m z_S3y3z3s`UkW&G_=9wc+A*SUI)U6byh!DI{U%Z&mo*y6#%E!X3V zkVfQUDChzQh|}M(8Qd`MaeQsMOvcY9n}2TZTC!6{27c!OX}W>0o`KsEBV^B(Z(&m< zZ`sTh>@LtXYioLJd;yJeref;@`zQ$xdk56sawRK)rjqjHC;q4BaYBPZUJ2;Gsv~S&SCwBX59afLzA0?g( zpS`r#{Pp=GE}9OO!O)MWE$;O>Jh*KJN6%yfyoD$_Q|L1?Oc+Uh$)M=$|v7~}(scDdK1HtY@JBMDCBNV#ruFvSV`NWJitYcu!h)-gd zoAsy#1HDjpZL)>mw2N^~jLYC* zq-%dp+l*73+_*E~effjq6RodDvf0hn)s@yFfz@#f=p8hr+v$~iZS1a@lFhU;t0fX! zfbBif!^WwDN;u&<<(m3#zox*)p=QzBs$;YhD?S-tG?)wQIg>FVDKB@y%oqGz`&Dpt zV8V|eVck^LvT*2H5<8;KOzm4V^(|q!xGxRF>G%ECV`Gwc??ChfYvlgkJ+v!xI9;(< zB-DT2Ng5g8rgL(kZ>|nh zxfE5( zY)sqGhLlT{g&>)1i5Ph=s>G9SQJm;jY#4@d(43O9sQR~&Lq?g{)C?zWw615pgB5L_nMAgE=Hizm%NDq|lx$53aW4J^^S zw_$|<{J{2zVh;Mdg`U<+gZfXs`*Cz znntBIJli5jBo4sV75}PR^c>*w$C58}8Y5Xk^W=^Ydp$dS=^O>TKCz1GB*Xt~wK%${ zw*^EbrEt4^2$@LHvHmuE3C8;EYE&R(qn+rY(|?6xA4D0r66waft;aYC5J%9 zIcIQ&8^qDKIKA$9Sk62afQ1b?ncZ#YalLn%3#_wZDaC{WcBDA~YihdlZP4Y}|&w_QFO8i7r?f!By zS!SxyrE1%06cOF`^;EgcR)io+?D7`|yTECf330Clf11aeJx`i6SfbL)Jb?D1Ry$Xb0AOY{}O3F-%Gsg_=NSXz)6ijnszo zsDwpSb=@dFi(q>LMBoYsNYSJCKoTosMZ)>Cn@<*h(&vN6D)lZ?YanX`gTS z!7v_D4DJ+*u@7+0C)2Q2cOMeR1o!}6f2(){|C2o)wvK#|*!ul;_gafNoC>?L-fbC)E4`pl)wmhK*OfwAID+XaNnottpH&qUkdVhFqeRQ=-p6n6<(xb}xsJ zm=z_b0@2qjY0Q@P$)m_U`uGF#*>Dm9Zx>r*6?eeOrd4Hgt-OiegvD+5ydAw!LLAGr zU}+YP@PLnRp3H)Q2JVSLopL|b?zYw@k9!oR7%|ulc(yU3)-1DOsJ9;I1gz64H~&5h zk5KiC>IuEB?`1(na9CO}_Itv_aaLZ!_DOU2w^>dt4uDGIQ zKUsT;<#dlgT~AA_M^vU=!r~B13RDNSMa(&4<9rKT|>4pQ`Oouwq&7l*i4(r>2ksk0^2=g3V z?j5x%yWhJmRUEpa#s#eRz8hH|?Z*wC60U}}5kOU}1BD9eLDoJ>Dd8q9m2%L()L-t< zx>KWA{MfSO@?lG4i~H!gC^x&k(0(d@d*w<)vCp~JEI^CCN4PMF&Ep0=v%-bM%t~iZ#626jy|dYXA6_DLV2@W#S#XujkDzig z4@7PTT$A_}nZ>PCOzm5wShp#J32X@#3A+Pumzfa&;TouaPU|HmJB;Y2QIrXIoLmyP z$c%TQ$E=B4yRTIh7h8CRPnS0uA#8!QWkx(dVlwZ@FE3;sL8`o)(-^TL^4yM?Xvbr; zx=6G}i&C1F#d1Lfrg|o`PyUcM`U;M59``s#gt!_<=|cqN%{kWb#dJ^jtZSK@&Elof zv9s*15Cm9dk6pBY?Bg*<;^Ti`;k(A}Y{ zu2#2OjEidV5UK%r7Q!>#cBRGYfoNNU$a=>Ew6PCvklV&hjUlGapgYt$FF27sXVl2@ zn?}fx&8IcWx{*D_9^(AuY4MKOfk-i04buEkr`Elp3~M7?7PAli{Rc*+=KfZ`k_NPtc2^x$1_Y?4jY_2xniO)<-=Q!lr)X zuIjo`Cr7Qo{g)p^^e73Xp>geMl{Oap_5UgohL+&@W^2KTNPlS0z9FV=s$-@N>iWv^ zkIGwq`NqPp^ueS)P+*rERhED2X`4dHVr=?Z%jo3~fdMaVK4S};1;}a@S+G!zFQ*A? zwdw9f1HGR>-$=CoD$d?dBRD4oz;?JWlV9Z}hxCQ^p=aMsI@T{^x%>4wOI{P&Z|lED>M@701Sh2S|9}knLt&wCoA%1QPU!YO znTDfd3RzhZs7!Bf+5Sfk5bU(r&Xezcp64C|bk~bbKFmezM2}p*g}a2W zz2JbMB>tg;K=jm9RM)?ktZnbz^dlW?w_m&~gp!xULuW=pYIK&R|J7^Z!Yi7a1L_Yy11^U;hsH=>IVoI`29*Z^`g{6~AZ?B>2Y3 z8Z}E(yBNOa3BS~FaX!$L_FX@bDCv(-MwALB8~<&7YYi&uYr6Uq?NV{)o=%|P zcCca9i&l7^Di)QCiPvIY7Js*@zK6Y&d>;=>(rvyltUWIouPi95QmKdPXQ2}j9Qj>q zzEVKpz@QWT>`TQ7OyNRm()h}3FhiY&7Q6C$+OI%P#E)O|v8IP82?0z8FrAB|qr9Emh0(5a$M^l9s$n*Wx*2 z-sS<2Opbk=zf$J7JIc`AyVmArP5ATdARhp-E}y#)fzJ)+j;H>&r@D8N(#qE3cOFiz?1jV}~AJtmjx9B%xg`Kb5S@E=U@4lIxheCBA(-|UEpQ3C;ECz{*O!A z7PqAj#{n{KqD{#O68&k!(hn~|$B!X%3DDL3qNh^Qm6x;D#fjMVvY;XTSNgz6!$?m8 zgt1dBoa*F(_XJs`{Ft zf#>&ZP#B?OStoP8ZPWG1NvgN@cLOugy!;Pm?W2K07>{$EJ^Y@QmE+{k{T4O)$u;!z zUj5jVxe-wvJ2Rl1$X?ah5udRLL3^9L!;^4+UILKqW)S=z!zjCG;L zl|{Uc)j=q-RKo2|_)u6)?*ILI)b3-RW7<;e?1vb$KlbjUH#cv^J=C*%v>f-X2Mg8! zIY7q0LwfV~7vrSaKd*sLikIu2%U+(K9Q&=oT}~<@>wZ)OPu{<=3=B+U`9IlYfErdP znVLDt9|;HWzkCf2znAEbd;ADUkQL7h1QO|dNU9EP&nW+&jE_Rc^@IxeNB#z9*v$gM za{>K&3NwX(Vy?(V^@e)nu`{fkUtk6Vhk*0ng=#M~hh#$gT~#!3{Cv?{Tm3FOcu@Wm zpwi>N;CE|>ej3bwFNMWL-}e>W|6>+9JV#IDvNwQD!V_S>utSl*>kQGp3%d^(v{Lo3nTho?^(U7dRF^0in$P@M==>Uw(`1M5#ZZ~oQ>xf)QI z7K!>KQb6zCqDndEkPFHy4FUQc?Dxc1J;1hvjGfR??M^D51pjR)dOh7_pRxSEj(^7@MNYP(^WG2Zg=+@RynKDP%t7QV$6$N52Hq5U zVmI&@RH5{xG@>p%(M@}!kI!rp@ItrPoYS;C$O#2beG*?(@V_<7REi1K=vlvu>H&pJ zjX>S7nTXJTsBo(4U^-7V`5-~Y3ACjFq6^=vqb@DJg^Ga^{CF z*53SYf&5<+y^M@<`|)KgvMEWviwBf`@Rd*72cMoawkf|6>7!Cg3g8!i8zVlh6$x!t zd8$fA9?&*Zn6(4nXY8_nZzY}U`Ydkz&%6lpv%zFVw4e^tvzG|H-2k%y*L?6<<2_oF zj|ZE^jH&HpmC4-RvDjhc%{m6r5$poaLfEkk1QekW!YS}z>S`rINQ{WakRpu3c;cmQ zrC>I)$%DNx*btI{gA)~5Z#R=>jvY;k$-fr7xr!$v3i%9}z(b_5!SJ#8aApJ!9_xO; zYK|dXU?ab<3g{xW75Xc(?NjU5uEE0RD}1gluKAMKXdn%HBeM@ljhg=MSI}Zp1m#n9 zYneU;ojt0bH8x1gt@qbMr%)?ce7)!f?f*`bkuOh4WwVcuRA@KMLFAF>AYOM*!mL4t z#kyS?4jc{W2=7j{AZQ39oTodR%^$g+@%Hi#{H&1_eHs-e@7&E@4!<6lED4n$K{J_t zz>UQl;1{-qVzvLnPmbS*myK%(fPzI#NGpRY(1$!mdAK%BrqEABwIMw~P5}WpQ7p@R z+sHN=0)zRS7)Rpma@8;#$RR?g+a)f{B!_PFFKyEyW3! z5+7L0-LEpUz=$_^eRGb8c7=i>hH`B|oI#Shit-hZ&iE<&d3KU|&uT7GKf%Z$Rbnr9 zj3yL~tphR}tlHKCNKQQr)etfvuw4`=wXaMw0Dov>Vh09+mI70^Tq4x}bG0cz8IzwP^ZiQb|oi0|%3CuDd3&@#p%f z;L%nUzJ}kise=q2hLM4l7ED~zpYrOyu#(wt~jaW$|dzXXjW`@$!DfSu=7r@XrA2PbbX`2Gh{ zQExF%Jlos+0Jke--TT7+|D6gWvx`6dg~M&-K7PL-xtzbC;x9NR^$xgR{d+m!{&%0h zu*bc4K;}K?U)JCEz2j@%YX|<6;Qs)C2C?7lyU+$H{JQUk$&YkC;28{D-<&)954Pcb z{qpk!x3Bu{pWhDWy*!}j9D(oCWnS_}!hzzl(x;)cOtG9yae${BKy%AbIc6fWP90f+eI$Y-E^a%Azh~G-gY6slqdi5l(s0HH4wTX_RSX*J6Nc;&`-`tTW2MGDGkw zUq*zL&?=>*%Vhx(oR3xa%nzz`FdUo8yDt@vvs-hgi7q3w!*|amFe9R4&N>;H-C>B+ zE}56*bJ*D&1|l6>zg?m;d7Z%w2Z$n9LI7wAsdIK$54}Xc@}A0_BY9RxLZ`40Eo+GC z7j1mzT+rU+@1{>;j+Lp3!oeJ3L1o}ZZrejyoRuw0^%r}XPx4Vb)7uub`8}% z%f>uo$1pEZ2rs*%BiIL*@0c{ZrUZdgKO5#a5Yn7q-cDZ%C6iNG}Tez z0tG!r(V6jL4@{fiW;S^VhWhkt4iMzb5rD-@Lx>^RjUlk5tVG++AbOZnS0V}dUt_qw z!Xv?zvnUO5&1M1n6p+tKyPIq_()%3|5$EaD;0^1!%vHfw8qd8YTRQ})3ld;eOK&q$ z?uTI3kcXT-z@t58UN4o%GPaB2)X(h54r+P4$&X`*? z=F6*!n#*n0Ok(MIY=WNSPet#LVA*v=#wdI?dpC!xHV>nPaL`1@g@GFG{!C%RWMq-( zX1I14!_=zxaru~S&U?L%f5_q_PR}@zGQvl8+cI~K5od7AICsH5B?KBKa(Ig&W)2`? za{(je^t;E`-JT{zD!ERuWvEyzS5-1XW2A?=%Y}cO3%#&xKX|}LsYxVzxUUuE+EU|KLQLEmcxlfO#fpM*FigLo3 z6WotnPMwer8cN8Y9jgr|HD1T zSTvAQSe`JtZ3K?4g8=$(;jN3AwT4Y$e0=TvwLd0=HGo!OawCs!b-qTmg%NpIpoXd5 z*IB?_5|blw29;^t3*#w0Bd4Y!liRfq%_+CkSMw%IUq3@P(V{9!@%R6^~gHt90^f{)l zE>P?*6EiK`JRF$Dtw1XD>1t>8Xb^ijL`8yip7Dbu*Qk1@muFA|vdGt@+7N&Pyc+ul z6_K7;nE9La^fIWP15AW2n+&ATYT>5FzBNd^pKr{A4-iW-w%*%E2;W?XMpqK)(HRz8 zhU+feII)E^(z#2+=ps&B%k&swRyfEHW>P;^wt*$5GQa^U&D;ky`sX3|nTH-I;uaIK zngRj?=V|yU+`wt&Y*mLOCh$4Z4xF&8F^LoS^NEuO*?RSsU(AqbGM*Vd>P9(?<$9Z;b+=prXm|QFDG&k(JyCr8yxe2jd$BIIoSO}G!e)IOciHCI1V7BG!rsZy6)J< zR079d(Q*|tWj%1A+76rR+M@3pfyz}QV3zZG3CSsAm*edoa&H$+uNYOd3^zK$YoF-x z|LrnTK&S>eOP~?a4oMxQA?|DyBoP{ZxT@5Sm`s%Jp3e%;hh0jyN`TKwu?Df9H{oC<8(RXncygLMOk~60jGIuELC@y z^^w=j@+`z@9G&y*{B9$zKs%NhA6XlkRLs)GU=53IE-fNcxKPR9x@|-r0b8kfn`Dac z)y~+Ar^nf~!@W%A4`9ygw~^MFFFp%r^d0_OieyqNn>t|p+*c-GGu^Cnv+t3&(`NI{ z8I)vqCp^s-+#Q1v9#$aO!o#NDdYEEHR~*EZY7gB+M3(^6c8%xvzUCDVZT~#>VDij-RPJPnvPlPV;=2x?n)z5ppZJwwwKQWW(OHeRv`L z)rUDM{BkG#u;A5!=(rAJ+mQvQiKHioxfg6&9h^4RfHni5o#sw7wYLB4MziqRi09gj z!k0s&1KL2Mz>K`mp)_f|tP+M$webrTB9{V^zZEEw z1VI-Zk9tWEfU?9HG-NT9vj7dzk~Pp7d7!NVZN_-7_>m&s^}iki*Y zM?ms9ONQ*)5mrlHGP11GcipMxCtGj#yt8nX45 z(ag92@<@@RBT#wemfj1wF~5dso*Vyf2&L-)+@aKpp?_zHh${;YxH0!%>IESn%=6Ad zP#1}GHX7PLZL4|#8-#TsL6VdJWSB&86|WK?w8XpB47omSw)NiT?~0jd!`L&-iA_`m zt-+$kuQE}(It2j0vo!t(y+^3?ePbc;0MSe=%z(xQYbk#J0$ad{@02!jV z`)rHBV)GnWM+{mRgS1)y;X9ZeT)j`h$ZhJNuEEa$KQ;FQ#ptK+d6M8s9==d8NVoM) zVXAfmD^o~GVd^ai%1I#S2FnfNNF%;;y#Hjbk|g?$1f>D)1ycFUX>0L=6`+ut4gqay0>uc^u9dP zu^wxY0{>EF9sjPy$<@VWRSckL7yVA1xO(VBcQgv;jN?N3)VF$G&7E8EcUA$IKB)(? z|Dj44T%Hp8&o-JUUQRy@nd1c0FMg%RM+;$yd=}(NWse42(DOdrG2?Tge(P8QmJ-@x z)wo4?;-Fd{OG4ZznM9ADCnCc#PAxD2E3kW6MTl~b#&)bT4CFHq<@s7O2U@=Md%(_U zf_%JRUVcjpH=(2bLGuIPU$>K$h4vJ)Pj5zlL=N^@zq->@CHVOyHoou#-AP{g-*okl zZww5}aox%$hBtxQ_;|0`eZM+lcD1RiEBB^BQ)@ z9v;1p6MRX&OhWX1dorXGz`yOgr~XB2jq}@B#`>LBFi_YJePVKZmDSu@4RpfB>VAX17!OL;VvqR~ zvy8p|uMnVGLK8}ZYK1-vejjeO$4CM`)IDV%n0)T?0@PHO_YTKa5RDMFKq@pPDhq>1BQ%0vz`z!vx@%-yX59m`bf%v@9uAKT_ zv0HBwit0~;zt8f%Nz%fwqXNAj^CWM10SyJRq*<`r`)?VR?bOXa(b>B@KRN+swyP4c ze}Da*Pi2R(H&@VnRy*U;)4GW7qsU{SeEUOyACFa1`@-Na)R-0t{VyiIXD9gX-GPXPiQgZ$+xi~Om{+7bneudhF zrk^1XnR<~>zR6emEN4R#o&9c-XvHbf4-f&fpL~ng@{N8WWHoN5YiQsdZSjc5F=c&N zNfp*+r7s1JJo$g-GoqKt{ZDXCO{rrJC^P?C(CEKD+2Ww2(h}o;u`>gz83Po#5|#Ze zKcqWk&lXp|lx#G9VA@eKd)-UA6WFkx^%kkcACMgutMpF(RO$rH)0s$&*u z5UwS#hYX2vG={ofEs=zZ+uQ>+jQxS2ZU)g6oB|3TeySAk+pO&9%PIV{#Y3gjv zgk}_%w2RYpMy5JL<;~FvZCJ5`9o%{A6IEuzcU|+gsHG57uxB+yv+Ugob;_r$gcM6Z z3JvPhs5-hV`({_Pr0?Xi(P}sUAw#hars3qF9))G8P(=Tt6#K0!c1|8tve=RO*>A`% zyRlTyYkzE&NsO|~FWASWN!3Ho&zRw33A-pJAZuOt4f$8x&;&l$S4Xp}wMDV{hf4{G zoZ-eh40{YGvIUqA^}p-blk#3zQlctCeGT6QxOESV*xS;VW###^{A8`1{NAnksmuBW zG+YP$c`b3dnT!;gzT$w-%`Po|tYaCHGvI=-7pq<^-w|Y_C|IHO->eaq03?JsHw12_}`%ifI z{#o$yrL;;%5%m+x7XYfTo-b6?VRrmsW}DdGW$H+4i_pC_Mfwy@FT>y7fx39tx4&Ov zW!k@|P%F;kZMxDIRX_|vE3bFnb@hkCj|D*q9x89J^ zQ<}w8W%Y}L6#q{nQIW+w9tk+yOgVjgRQ%Z|$$ziyow8u?H!-y-#w{tTC$Rr+FkQs( ze%Z(G6BuZHhlwT{eME(7|{K#Nerf`lk(Rk3Rub)L}<{5^W(h{*OM#!V=5y zjsGhwO%C%q8T-}dX-}44l<73IK+^KO}_e11nghX=#NNigLNiVl@BJg z`9Pnu%Il4lslHPRThVe!LnugkAE2N$p=|eQX}c-0<)#$vJ>SOG?rF=S{|B#e@tUFA zA6%}{{kx~WH$R0Y{kK1aJx2HJzIx(D27td6wdh&QR&9SzK`VsDAJQ2ArbC27Pb24e zK5Cv-U+TX#Fes*9YqQ_JJN}>e-w$2`)W-%mao0S(`NG3ees^GrB#dZ?0664=?98kz zN1oNgDNV9(cD!5zvgaITqaA8J4fYr^LAi^8*v90U4g15n41S;;vs)^aKj*oOdHlgJjdZOw+AX>8cjs~~5QJ?!7B>7SUzyCqptFZQs(2Z_;t;4 zv>c{l@?`cs7^BX4A7;hX#LK{YFt1s&!`Xf}3C9iFxA)C;Rj#?A`r z0j0#7g^bJVKz_UJz~bR@Uz~35%KD@zMk zv>f0biXSTuHeKtF20u~y9X@eCv{C=J2;)7LEo2%LYb4D44NcNxaMM(4l0Uo9BVrHAxMo$Lm3mBqQu1YRrGEBzY6eISl%y|PfZW`w&4j^JsY|2`=hOl-%H ztU~Hn1F}ELold{BipI;Eqb~zo5L5*KT89$aBXo7l1`F4#Bs`8&YGIg>TT#h`JGkGl z`n-!P0zQI~H7iy@HKevFG{4!{-&q z4`O!PU-yCo4(&Z5^LWP(1c>cNi(L>{nV_G;t)>ab5L*e30P#uq7^y#Iml>p9+gto4 zV*2a_aox!yf5X40?uAM=-VM&n!NkXn+17~JBT2Ia!WdSy*Qa(Ht-~J3SPdm4#}EEu z>NgVaf*!tUF7-XASIGRZx?CbE=kq$b%c9}{riDDLomhASz^l|#-8IT;-dZ0A93?f_ zugkBCjIe(#J$P{iP~{p=5`zCM$>y?>yV%FyKD{{tlh!9>zB&(L8r zp>l|zK#wcKgfcK{sp_&cJq9!BrxT7DjMm%BVJBozr-s%2JXPd`sK`T;DA|ZSM|K&|=pMr`F}_{(!58diJ255VRxf~;-wyn5P`F70 z9?5}p{Sa-$19JCaKtz@J@4_*`eo5k@&kFhE!46WLr_=C(eT~X+=W7S?fvQ#T#Dw_3>B}2P_O6On%?5z)gF@F5WAuH1wxh{yVmY1GrwRSFnQsFLq!T zex3G# z5b&n}08s!?BLDzT0Ik)fYKCaE5*0#0X{!JqOGQ!ASCm>jk`|$K>CYqH z6Wa~KmFT*)TPs|eb_}Tu5z&kQSOEY%fVyv_LyYHXv*wMNB-&^wd05hJx@K;_akEDH z(CUIu6m-<+dv9dWJ$JJR)ZJ$qB$)NT8!&Mp=Pw2ZA?-4fZhB(r~lSgrR%rR4!5rbP!eJWP^6p#4wA#V*|5q1JKPkb zeg}X*jZ-2`7?beFQ`?llkZzR(LYQpzGgQ)^tXyFD{_m7pAM&b=N5e3lO3el9EFWqQ zykoF_nqS+`g|HwqBVJ)T(+RMInd{~RT+aDOCpiiOI!L^_11N2yXAejmxw-FJ6=k<@ zN{UESvZ|xrF;x<(9=DEpZi}O46~XX{}Be#KC%yn``oTCjTJ+i6^ z9u(o1a=Y1uSU2nyLnm2b1p)&Tug1qf#xj_w5dC2J<;^2c;x*dMdH+aDG8l-C!Q{ zo0y>J&13_jRnoaI22AOVWilQQVF$p@bCbj6!1+jq@$YXAJFodN$%;TsHl1@QCSmp% zf0B452g16W1PB1WwLM7hGnQzNILQ15HjrB}9&GcmuTja=`DbUFNp6~b5>bT^ zL2J8h61`FjThc_RGDuAs$cOlgLacYj!WQJn~kDMnAjOunZ4u?(= z2>~LpCeUR1*k^91mO%}bx(9-V^TjtXiz`vzkR^90J;6*Ssc`h0B4}m|Tb>9_+ise_ zNT5u&%O#D5%x|sk#;CcVZDg40NDg;0yN$sF3>C+A8ogql14F3H?OX*-XJ)fcHb-VW z!P^ww%yVdhH<$@NS2MkJ0>}+48!hxR0{&zuK(T?z>??T$O`e>Fb&jZ38ypgR8}1H5 z7Jh^vdGT15DYQ9J@mbik2Pu@|m(pArBaq~3$<`nnZ<#Yl*$j&zKML=p&h&(2k4lIj z1#^^~b}NS^*KdYnH$pPJ2rVJYYQ^l)I?C7`Y2abIM>YmVDbl0(WJ-ucLMIaRM2Ki4Ng>K5la>b zAG`s(jH&Zah6%oz0(U&T3uAAYLF;pAN;Uc!?As^Oz7EDC+s2kS>rT8=R)&CO+|kB8 zRv7n~F2={8k;uR@5r&mEVp$0kRzry+Dw4}i^lcJv51_$L;LPQUk`;@Le=RBY(=?+z z7wZL&s7$&^#dQ;Mo96-Ppk3zNy>Wqf zqP#GG<|kwO@SJ7V-g&W<-jaIbi^NR5NfJ$2n|Owzfsx(2{DN7RM#p^t!Cdh(oYfwb z00i?wxxD#Qc3dLq_2o*=HO%r#AUi^hp1(uHFDg&(Z|4dhOK+ESq;0cO{Eb{ZtU??x zC|R^al1SvX@+`X^A9;pV`kCT6Cv=v}w&vVCV1>b6seVJZM_gL$0HkH4T}T^`&IsU0 z+RJq6W&lUqQGBQcOyM8v&l$d#YHEs+^8F7JZ~gn~{X*-**%NEi_;m4=V=L(a`{La! z7wC1u59k2J|BH7iG2x(!9$sEYj0aO=@`>{P|NJ}n6{`e{@_Tp$!Sc3uPK&1s(TP9F zsq|XlM}8~u5C(WM&_mDx$SC7cU=O}w#F*kj$|oK_^?4TYJNHLa8czuy@P810#g9-u zmHq#83WYr$o_{rdo=q;ayDzQUueBzn?9bakyG>HU=9}W~yP$c7Jh{Z^W?@==m!i&` z5mAkn?W3|ECh4{0f@Cq}0E{wjkpr{yC>gFBHwTE=lze;ai_4&mz^+T2B}r~R%t7iK zCj`9Xd|IEq@7U_Jxv4xLFGliOr423)O3Q^!wl2<3?kY+RNNR(_oD{6vhnf&c#;SLB zCw*Dx=xJu7cz5D&T?=e#oV<$UK35V7NKLNAAdbpI^}-uEo7y&7IWtt|!{3xB0A>&% zY_d{(G|N_)b;YKGVm*Nc%Axojy@I>>0PpR1p(TNJ!#LVL-7 z;PSM@_a2e;A4g>4@*?}Z7M=3`DOQq?g!93D*Qn>dPSsxzz_c2HDk3M%$iha>rrIGN zLE8hOk(d(iec%DCWBs==k8s(0WQpxelx^J1!^HU)B#YwA0H{kL$OVcyGKheil9>tO zmlY#oU^)9z51qplIFMWTRr-y%ctBoqGs{=(Tsxo44innXL;+M;PTt;L zdrAp1>86}8&HVW=NOtJGJ)0F!bE{1~cM2QE|7W3N11U0WxI7q9E~^P0F%VfYcCbo7 zTGtiwcby&Ddg@}0*Nb`s(MDx8EHZ;>fE@O=3@+US0JOnhZeq#`>Hj;gQAv(wA1 z=uj15+@=y20fO}&{(Kzb-QI?zm+9oB5*+xJRTJ81p0@mU$~bw;lC9TVQ?+BfXKiWu5`ZL34C?Z&Fe=IbfJ>iQeZCq}u@dY+LWaYlPZlwVd*s z#L{Hm&0lP13e|#`H@;O7&LAK1_oumD#WAodLr#Hn>q>+Onr@|awK%baxcEMSIzQ&k zxF)ry@V&Q#wfP2HoIkW7dZ>OJ~_Y%wpycZ8#8)*RC=tDu1hjJ30 z>kzkI1&{o8p>7K934w!>Ke+>xc@>(GSu$OnV+X3fn4x18%AZUWZ;#dSBU~<-37t#^ zVvJ0f#hT>(Fc`7!?1v%`R_~$cbG69EOhML%(nol!63ZR#;fYa;_i$H=Z&A?CNZ0Oo zq#78pQQ~-;1Sw(Dk5;&pnCapf2$CK>GA_3_$%@(baJ52a5NI^7 zXx-GvJxtZfzuh;wMadKeQQ0A}-Jp?9!t5HvHxTDQ?Us+hf6Gojk;)wA-epGjC2w!` z7>_uR7;L`Bv5SL_csa{5eZOc^WC_stGt@I-`cshk-Gm`?);eQ6gfvJQ7@@7Dlyol6 z7$q4ZS?41!Ym>xFd+-}#=_FdMD%mbk0WSd}c(8~QY2cjA!Zl&1|)w(f*tcNzi10geJs>az9u5r`F zjZERQh_7Mx)A_#h#5yww`~fBsI>08SFkjiuId+1DZgAP8jiZtTIbXhZ2{>{t$QgbK z&$dI}jAUPH!pp`-DW|+Y7*i@TjX?s865Cw(zI%}ob}OLA*tTJ5r$_h8>8;WXa@BUT zCVD9mvhpOP)$yjQ6L7q>|FRaza;G~L^AvJ@IM-FSU>yce3mcy$ad$0~+{Ipnr=i^^ zhvtjoRJnaupX_Mlt#C+-HXFLYcI&tb*1Bpd zk=m!vVfk|AEPFGVT}^zV-N}&&gOm$i@1o;VF)Bw6Sn@st!MNZVM6&7f!n^V&_DpRi zG<+;!0R z1PqGO_AE1$96mgpWR$7R9J0F7J(Cj&VQ?IB)hZUF=4@#?xr8zgJAE+i<2Lb}V4ADL zTlwAhQG9{Q4(7CIo(OPBlKZ=+@X}4bYagK|mWbbdt(l zTOkRePOIlRxMEgP<~gbAcO)|-ddMjA_1xb@UZyIjMF`-^is}*hg>hEOKB#6A-yT5? zE!UvDtOtM&AR1=0w#K#q)(dFiXCUj0K-g;ypv5>tfQC~ee^wkhKU_9mTxVxwVy0l8 z8Nh+%MV8j4Wmh^#J8Eou8J@(4_w+12benCn8#DDSpcuYmvv`W!07_p@wPc>#D=KO6 zC0PHKzyKK4rd%E{^HJM)NEK?SqjW&0zO>?o!?k6>eSbXs~*16^ev-s9Sgf$tI?9lbW*%S(-Sj5Rf#Vd z-bUSQ@uf>S))v8iDQ+5dKVB*BbuQ}n4VT7$D`e2cYF>@|>L9Jga18ZpTemLup|k*Ir3bXuWa$CU-De@;Z*kJqglr*EG7q2l_Au9eX(Z@O*geeF6vlR zGlyG<>0{Co0}0^e2yv8#mS^1)R#yMjT$`E?59-P`H8mWRo~xTzQvJPCOGy7#(-U?V zDmF1-s`6{4Va-kx9asO?p!CsJ>*AGDHOC%YrA_L4bbGHZjg@ThAsIjhQ$p1AZ>fWz_fC03fJH`1rcj+9 z(uA6{`DxtT3$)VAy3w=}*nepKaf4P*Y&Bu8aHUyh4E7=sVH1lWqdFR*nIT<<$%{P? zm*%Qrxsc~zlx^y9{`WL$-!xVSO8{r!Vx2GD(-GrTKWy^EPCFm^pq5lrEYYk zDwVoQ3b2lpcEvS$dtQ-Ajt^z{(zM$!4Lnu}HlOkp=eo|Wvr2t`R3$KB`uJXYtooxD zHJWDBj}2-1O<3}O6pzJB8D$8{W4bnJSN%~+SG~V}C8{>d{ZaN573*SQqf)u-7=bmjlh)B8S{G=z>fY=f zXzYY!IQm_7Oedcln^61}IEqMaZi_jh=5nu%_bWdQ9O%nABWLUK3lUbFkrvL*mEhBt z%c{JaHGt>yUc*$HmcF5xsq~A-7~$BtiX(kLkF*Q`mdvKhOda3ft~4jP_`&G8c-?-_ zSLe$pKtNAU7ChTzflzx@pQ@KDEC@#4e1G8c!&oO+_(@t$6GPmk3;4N4aWtQduuu2D z4w3W81gn)yHM@G!r{usE%3p7!w`=kB9}C>{--fIHrVWZ(u^75i$o>DZ3Zdmvy~|Ad zUMZvfbi*z;eqH5WKY^K>X-u!;zpN0ye%27AYuIsO8lcy#sbu+pbY&TPk+K+y#Wftt zo9j%eJ;h#%K&@XJEJ)>7a2OD)<$BGbii?vT#>|JkNB zSeZ|dz7Xa&vo<%_>@fB$387I{ZD%IOPg2#xdN`l@aB zUSp{N`g={@L2+g>O`9c7@Pyk@*Z+19CG+2{hdL~JnOGQ9hhC4ISblWAnXb%Wf~GIR zuYS9SxVvt_)xCJA4^yT$&PLQLp-WhcvC;G^&3@Nom+QCKWB+c9vi2Dm_mW?Jl<< zSgQW{llou(eR$sozWB*@Mvo>aT(oHg>FzjeG@Ji;6FW~%Ay$7c=uZJI_Ps}Da1Loe zy?#xkhZM|})t{y*8j-2PQ-84ym{fT6q@9B>r~;a^!m{b_2HE^K{dmoZ1;5Wr2tCDs z|5?)hQ{|Lq*Zjq1)jw5Za1`wMoi-r$V)H7;ntGwE8`0%gW!3&|l2@vi@i4m&Q`ee0Bo#$9UXG-TR%coy)_M-i?!4p}7zJxgS>k z8*zQdJ{=)G{WIh3i^?3f_)t@#-P>d9&jv**^H#+FJuEYoX#aVFuu;vMLtt6-olj6j zv43^M{M&ru_X;6~)1j2-r`QU=-lN3C7XQ!f(Po*|7eSVP`Qxdz3&!jG;cS$^Xk50j z?J-=IeSeen^zwe*kj;$LUW)Hhd1HS%Pw9~e3U6Y~uU@Tl{~PS_ioYxQ56;>JEGKJA z&cNrgC`ZJJ)fFthjfQAWxYvrm$}>oNXq;lew(ZiR>>4OZN$xh7XWOBv zWpGF`Wmo4><}Yy&do$#m)W||O%Ox&GR zS!L7h@K&>D06C68q8ge!IqYSP6)pa(`3F9IkUOwX8jps^7Lb7G4LO?F8>Q}-3*}X# zFxZkdS{4(=hUU0qJ+4hPOE5W>uW!&tfVn3M6*4V-V@W8L)6u!iz$6DV+3I>WlF!gO zWB9`*GrHsZ!X?@ewc!8Ucp8`pF<@oj* zgb)!(4Dw)+88*II8wkQ2J(!f0!7#g9>STRqOxYaRjG&?zTrUTPmTl~NjBA* zn#J6t9uyLj*c63O`>_0@0tKE^NjpKVKq+PEfa2=KkJ1uEbvTMed%`#Q#SN5VNpHoZ zg)W9T4GNso&}dc2Q*1rVU=?{TrL0wmQxG5U35lSa`K%Tll9D7(KbPK!C8AWUz&y>d z%JQT+#d6b1>Xe^q&q<99tC0FEmrYWWI`8Q_=}B?&lxi!kFA4s|ATb?Fa|x@rOjjX_ zMDm$=2NmlTY{JW_^-96I6q73>;w95US74__YP!|%VukEeM9Ep|f6ipwDF_p41qDnM zS^<&AC;M_74cdqYOlcEU^s15`F@38tZ3@8E*W#vJPG3+UF<%l|1zOT(5_-}NW70_c zOYy^~1oonM82Vqekf|gAekVPXdXOTtK=r?Zu#A%Jk`VE~ZuKfvU)C`$Wu-iRp2Zvt zXjYIgM_;f>q94ExLJAp&G#vkrW~okAjUlOF5?}=>5{9-#ohoL7fCEab#>?U;4%@O_U^yU<+83j#~ol4#7Dj=J^xlNns5Y%@l zLbzCMbmmGPO*!GiYjWwDR?F z;xD3%vgH7g8?D=!>aML_Q_R3`pvoasS`Xp7L_8nZx~s^@tn>HDf}CSX-Jv}i6MW5_ zY}`WC|5Fsg3K-`kH^aq}p9@SOE-Q^Yo{)nFvUeAfKXc5D5CDOQ#t+i~9g z7g;6hF+d5C&q??u2tVA7Fe>fMf&!OLQp`F{6(&gB2=@fru&A)37SLdWGDSP_nb~8R zB7iy9GrT*>o`5 z6>+xhz45xCjq|abHr!VFyqS#K4f9?}h9LT^gM!9hWk+gpiQ_l~DBj_wlaDgf_~dgF zP|FXUwAd6L&v~1YB#evB&%+*wTc^Bt+k(tV?XXJx+3OR|4B(IK7`OgWSqblTFR7H2ACuIZn*qI$_c~b?)_qz1xi^>$xBUgYPpLRc-7zOSUa!cPSc88|&V#*-itSAa9QCFd2}!O_k=xcn%ra4o18% z)B4V>8I{$DcXWd`-n3uomQ{^}5EJ$JOE3chx8{;g0G@(XiE+%O2npafW0WsK5vNmf zBRkp@A6JW11RHKFg#bE0#lHpygu8Z2k7E_>7{7!=;n*@RQ#kaCoPZWOehd{RYJD;| zPnL`h>&VKwi%79oQtakL!fRIb{m%9J%#Zx$^aM1;c-A07K)NaTkD_GLWo$z>ScMzg z29#+zk*x%tEm+)~f<2~1Z+cppDUOY&Ck35uJt1PWbCW3~+&aER*zPDJvxbwbKT@N* zuq?0abS@DjeR#g~1g3Qb37$ZJD-DrhpzKTu_pA^$BN8R}V#fRpf+vQEL9+^;T5vL|~)g8SA(oU7n z85>BbUeQIP>ld7=S>=GmQ2YaELP;u6olG&$NmSp@qYwum@{|0Jb&I<;=4uNHsqf7o#K97(aYRC0rXbAf7W*yfe+7e)Ymv zqm>)%LWk#>qZUJzfwTH1qOdFFn!?Bz zJjX^&_roq~1F4Q>;9!g)%)2Fshsf`j)yeOxeGbrhK!RB1^DrD*RE?>RNTz)*h)J>6 zSvm%v%3)7p$6+@T0)$vZ>HLU{$oPZY05ftr6pHvU|Hn9i{lMy=os)XI6JaJ3;PA9c z?TOb%ZHD%c_?obJDg0HLxpuqFDH&@VH&;iDaL{0zzuCtGdiZRTt!T3q>zx9U{wkw{ zV(o1}`LG8UuAnsS$W~{)6et(cD*WqilWj&wuV-z8?@*E03vA>ep7F>5YkN3~&So20 zA?^@sh3yw<$ZbDtC+>+47gxd#V9F+D$Km$sRjaq4SES52iUnH&a%xA8L+kAtXo$6D zr^$~Rd}(X(JqC$xbQG+i+9>4=H`KA7tleJL>q88Z|3=3N|ETVdk$u!2;cuHk3l&zC zH>VDAl#)4DoRtZIT1X=9aVjil2`s66V??q6=c2^Nc9NjRQfJxREyS_7A{J2e~YGlYPTpXNbjNjFV_+?;al zQ*wuIR|yuRB*L&savjh_HSPi%07AL0=`KKY2LbE4h zVpGkV>Be!1l;@i<@In#692HIp`~Na91ij% zq|WkDaJ(4U=CKMgl)%fo9|xy0f9#O=7$nup3k3VrG_V{8eqbhX?zsvDIS+E_TqNUu zfOiqFlNU;&AqmEnIPAt}5;NM3akQ_wQZE+Q-lUavn{>2Dp~QE?&SfKru9@zmvF^Zt z1Io~)%1*Q3HFB2r$J{C>6*T>L=3ZEV+ZD&{(Wv_x-N@ zzfQJsLRyWFD>^ifgw4S^RD{YqY9V)(8`~iPF$`V{AQ{ESMB>jks)C&k;TlBYq!72W?hniScjHZiQZ@wQrPA4 zlBK8{v$ylZrrzk#oKXPpIDso#2|?JXX|*Z)cL_G# zbgz|4k)xNIjoY=#tBY>K9WD1YNtfZJ4~8^uo}E5XO`lma`AGN-ES)>vN{aeryF&LM zXF+e4jMC1VasM zr!wl+D3a#a;LuRF)hfAT24s;L07aXWr|ocQO#)=O-X1W2(n-)}`LORqDM8A|RVW;v z{bX(HD+@GyJqAMya<1Jw##iE)9BG=eS=A=bolcbnT+#H7%$e9DzfT)w5~!c6UIj%?(%~(0?mUhJ?C5RrAX)uSw8-_CD){ZR zRaRJ%KIFyb0woS&JQYhZsWe_i|05i!i^@2jm_giGn7NYcJQFj)(+xrh);et8a_s!9^^DRjjPy(d&l4SZ@wj(8^8$JVHNOFyAfBd2-7D@4V2PCSO zVm@3ei>SF=VlVsb7R?$6hZSaU_7G}jnmz!_BsZ-B^ly@1-_9h@7Mr2ukKNwX_6*Xh zp%}#64!vB|%P{!FZYk5Ry^aGtg{&C=`k0%0%Wj|=b~9UUd}uS-SZKH^HQXiwXow!p2s)@hqI6Z~`Zyea2oLF) zoTWZEgWm+}kBxLvZz;XdS59N$#=$l|a&Xa4q(oC61a7J+VpZNicw-L)j3}zr*F9&S zlD0&~-E$3;%xR&PJ>8p6p_Zw^iEY{_b-*YBc<-obvjQmV=5-`bp zrd@$NSuuXLM0!v1Gk9(}&d3rx=58v0!mVDVX$9i|3`*vK7^AXl6C)5e$Oklm8#~p@ z3IW6%WJng+<$B+}itqfs9Dl_99wqgh0iv{9KrZ zsRs-`?UT&zk$9EMEo$x<#aB&Crys)IhyesJSVZ znYFdqbKbsdY|4pCaL041>VNGkqh#3H_G8Rexu~vfKZSWPBrRq$bJ#n2gbfE4HLbtz z-vu%IZg=x)P_s}VP02;A<>yHw@=pmjDfyWAfIC9L9uv^oBL$((l?Nngrv@4vdpE%X z(p=D!YjaupRP7^qkTlb#+VS-RSaM8NyhEflL)oN(2~u3^RQQ@4FC9K$D&@;=F(K@e?J@F`+!^Agq?!fWQ(igXRuS1OCFCmYU`6=w zh|P_MY|<9*X=cPaf4H=ja>p2~Oa#KkIw%BmNuJF@NdV*3Uk3udYW=dU?h8Z=qY5<3Q(EVVZ zQZIY1ZQO?)^`Vpg4Fg3ed*};;_-Vg+>__CYKfDI-BI6zHuCVQMfd+xf$XaP?9^IG= z|9^r08FRr#^YBKq)|Im_{z7uX|HM9dE5Xtm_C9&b%exhIFJyA~ zhJARi{C|rfT1Va8=DXSF-9}jP$lrVP3dliDL!hNa?f%aK_$&r!Ji+`v60W0-*uopq zeN=aevZILn)@%9cmL8NE`3~4tct*cxqh(6k0@ct8)w~i)0%@EZG_;KUm*AS@@>RC| z0hazwTFgsXN=huZ^wKr|qjgI& z9pXbz0NY{R5Ls-$-aXYty1S1<*-Hzjn#~$&u{(_0Ran}y$?9r+*>C2Sym{adLvtuK zq?_wG)2Llcb=C3CYE&T8RmO4O&Evj%aHZzGD~i9r)d}@p&`mzDYcE0-`kDNqhgfI` zV7fNV`>jvIt!b1D1^;!k6Ou>~6n^h7UO2Ki{W&(=SK{ss0YR}^3tAlQRejK2uPtr& z+)!Lkd=n+j|7*ntU8pdmb45n%&#;Z<)03s+Q(Y{+-)lv?N&n|^7JY@ed*6-eF3uzU ztj;|Vn@Mr2P2BQJ-s@)_&-X@aNWE=r>xx`Y?pIv8?oZgs?*%o{(vK6S=4CPUKYr+n zT~xSyp1awRcgM2%ZF|BK{Ve9i731`R8Cf&?3zG5P&^P1{-H6qX%qk}N7@K#$&V_6I zwCG)S`WS?+tg?A`*J3B57@~jWN5e;{x@y1J?n$Z!_IHo-=V>c0hxB6~GEQ|abhXYb z&3?THyA`j$OS}5n;XQg{XLLRduNcJIrexYxxe?g8n6krgcu2-@OYI4F?fgBG1co};S7?2(br4cP z$Vz6Xy#N0&!8-W8K)2s8qtI8o7Y-!LXdlgW3S3Opu^V@P9F0T%8qVG5FR7-+{foy{ zHl%0@nqbrKj$r6w_8amJ)e5u!&2%2I#~C*7(Wz%)I5@>wrw#3%OxNlxF_^N8n->4@ zIab7Rby783wHc7gjry2&x)tJ8FY0zLY}agF>eRNZ$^XR*$9XwA>{(t(Xrq|zv01bq zX1X2i%VNn2tCc;CIbwFw>3!O}Hwlw(|DsuWq2mDURu}TtnDjqtZD~5@l}BSy;VS;m zOotO_{u4bQ0f51Z3r@GxXzuU9&6ih=27M)K#d>)*L;4%(jQA@H15HeEhD$9HQ#CCr zN+tSECFpu$K1b!Xn0~XpxA=czm1cfUaN5h;-y=oxDZ>_);4`7Us2ZR>Tm{|syv&ZD zs?YYfE9&zbF(;{m1_lU`+Ve^eFOq2u_Gjz{C+-OMr=M+P`Jz;dgPpFzDQmqOfNRv= zrucI|f=_CDY2ssWJpHtB%4d5eSLc&{Ho1X59lbJRVpa$?vNu$_&wm&i64O$>wmykE zX~8^YiVc-BZH0)X56S3V=8?D2`=jmF&K1-Gk$u-|r(9kZbG5M2ace{K|Mpl4PpWOK zFDyK$!*L3v^rzD*Q(+xjo18* zYpkTEwDoj-pLNfmv0IGX|NA!-Ao)I9te5&Rn~}g`!8rrVoH4uO_yX{rXwbM7N7_#V z*<5hyw5qoK662Zgtc#tLm$OXOFq>7Ds*h=3q-4$dj3``jN)z_FFEHw{|Bg)3Yu{z^{!-+Yxzg*mT;h>D&F?-GjY6Dizxn)J?7LMCJs8ru z^edQ5!yG5v{GRULOb|qW^MM89Tq?&Jzw1U{bkc)+2YZcOLl>3Q(uRL|dDmJ(Kj-oqP=Pyv>>efRan|8b$EI+zWiMg$#K0(rL=Z@27d{F~bb;Gr`yuSEF_-Rf4 z3#1;^=7RcEWrs}fsx$0A1W4ZWVk7dJ=gp~*e^vAvbtT*Ui z6ZRGM-&o4|?q(EG-Q+LxXbRHG^R>xZ-us5i=2vhAj}rT^?L9|2M10 z=37POx&1XFdDz2r-@e!Q(rfoYi!oP--})UnPFMdD_tt)=C|+P+D~Bl z^B2bo2L77%mBpZ+vlD=@;?o+w_8a}8kwr)QzUMxk0k)-E>OUh=4N>VI!v2%aZcxpj zdD%|tT(bG~Wu>cmDa;ERvvd>q_FY2VZ^0Ku=d&s)s+vRBClKc_ziuV9#PGB37^oCm z)_mzUULkD}uFFdTyP8sg)s_ii zc;wtE8v-+IY_bbH_*4WZd$g>1Kx4Ux)vC!3(AV8iR?dz>{k1~$0vsx78EX^{!OvCBLVlW4ABfc*j4 zrbhGwyv>w+u39bX;l30jm$9~b_f}lE-uk^ErHtWq6PfG;Y~_GETE_ObG%O`j3x6AP zXLsYg5b#EztWR%0<;8L}p$U^_UK*;xPe=*F4c-#jN423=5-VI$`6zqXfnN5=({@ON zmrdZ_awWBI)XP-s!!APxK805#U=Sv(x^Kao`zHFfN$6k{LH>3J_VfCo9Ccn)o@voE zPT?9y2j=mNaq<%j>DvRl+pO5Y^6&?8#djoJYOOlyMJkQ|A24?rM3M*bVDhLP8?2U8 zc-fFRV+oH*PQLWvyq_{;sN~WtzW}vKQ8hsj&mOA4haLoK6IF9cWq^>|fj~~7 zngGK6Sv{WkOOM+M?G#aj>DvFlwjr6Kd1U>CRes>~`w1GkWmUAh+$VN;B;r^w2rw|s z))I6KH|9az*;lyp$CG<8ZYSwmiQ2uOK7pqjMh)=abv16z*yJ@%+6pt7M6dV|pQRKN zWhO&{6i+Zk!=CkO1i~Jl^S_a2Qx{v_KE%dR>49P162Eb~Bg6<=LKvnR2z&7Y0ZCC3 zZ1C`RNLWgDIteWumL`O8Lyby!f-kY*1!80KKW$QLzV(%cwPDZAW6-H5Y3^ueo+Ykf zZeocRs4jRYb>Oyk@W9OxT-M-~OV<|>HCwYb5Nm^%o$x&Q*9|K@LcxN)gUGBe9?oz- z%LM{8GMgmdNY<8F7uWgqw&}2)Ildz9@j-bT-LK}M;YZbVZ;g!MlqU5)1&tmxH!W|# zzi-*^5SiT-RLaKlfU|4_(3z^G>;3gKa>{R*lFgWd?MDwq$fQvx2W3!^q zRHcap*>3VYULoL?Cwr5vu1aBFPIts2qqc3I znzj1>`*ww&O>v|}#znUG3XBYF(?8PUTX+gTZ8BA1{kv#0xh%3OS$&qHc!pfFRQP!u zcB#~D@?p(Iw*x-Swkm8`Dj%O1Bm2&ultf!TFUX5}1q! zp_5a={TGOHzMrQ4vV`LP+Cn)LFD3uhw7$S%1cpFVinUf2=zQj-O2tL!ut5pjl@Dr7Y~)RG ztYFV~H(blPnNe?B!|`e@1(0-~D8?EVWb%n9jc}kstHxJ53 zOEEl8AML0HvEW*-I3PB9GHSG*NdRGY_%; zbLf5TT)qh*c&Sc-=dE7EBe~c=X*H+0pVY!Xi9iwL^{R$2b!S{ehw}6!!u((#tL%;m z=-M+|kq0F0_9bastSZiUrNhnae`pTu1dj%lLuLw}UyS-Y@VsOUy=iA$u^m9dNdbl& zi>T`5WoaB-#T3ikkZHw_cZqvKaL2c{#dhgP^;R#)_O%B1|*+9KKC^%mSF4}SP3V00>Btckq z7M;E*f8X^$0>^_@RN9h}ByD7(DS&Wpg6iDtih!(cE^SDr`+CZO8KF}2>;R-VWg-&E zNN+J0D;rgp{k$WcA*tC6qI?rX-X<6c3vu(@@au&U!~-AE?hNa!HAvTLs-@#CnNSQ5 z8V?>+V`GU|0CuUz*;JRsW^hFC@kY`^D9+{LNN>c?T*3t&rXX5pMbl0tSD|s`fnZjc z#ZMx&S+{ZS7xHqMNdsWm?_Ivuvf5Jl5l0t$ka)Qu*wvz4t$pJb-CPr9k?rlGIRL>X zE8z&xTx{QsOAP}hDltW>p5i7+ze$E~;17d~XjjkILRW4e8pl6^0(Sa4NWPVDd3-rX zEz2MX!gx4rk}gZT&zvtE(3Gx5h_dX;B944qKc^jf!)PkmvXgZ1p8WNGs%qv&=*7Cw zZ7$Zaog21Un}GEW?WFa<*;#YZIBHf46nf5mRl|LgdbldBCD|i5=U6k5>{)6Oq8nCp zJ!emU8`$sV=D4(TRDY+rDBsgSazg^)7MBZ1x!4B|&=`9lH;{?#+AA5i^uj;> zFsil9?%1vl5(kiWD2>phj6XF2E)Kj?k2tuh#e5jb*-D1JdO;bqO6?&DMCK_iE%>7t z$ZQ@QK_y$cLF{aOzlY3U@>$0r-Di!{6Q0(BELDV=<7N}9R+`U2M!dUPW1uPTtGS$& z2?;KxRWO^2U5z5XS52m^Q0vlR9F!1`^l>iM1{vh~eSr{%7Rqv?6w@l9is+G*cswAw zI3-Gi!cW0kK!Y2#OvN|nE+pU?+m~pg?6hw1oSL3M$$f=AxHNUIFzC504+rBQEiext z(;YykOQQqGH~5qq>swT}yA+qOM2D+YD%yqHs4wIQTc`+m`>_Os8`Ah36+bb)Wqb{C zI#6rbRZ{+CkEc|z!BP8f)3G15fRjs-iO1Eb-(({1!yCv=yzNCKdcR}hq(ag`2Qyud zUZdeKinRykoQ;t3TbaF_O45usW`4JTP99Tq;lG_o#{{W4nM`INmD@v5j^|8JGsWP@ z&OILPrRXBlNU7{klTNC7XK@V{0tfC{!>(u)+vRohW_l0tIbnrw65iUA$}Z=jxRSf= zg+~Ngs2BL>!{&_I^TUAbn-4p?t~Qo)tY<(GnN++q8)2n?mi!S$cvc= zeuo*4-z*kdH%{$I8N0dQ_crsO6U%0eeMp%XA}5<+ zC>nySZTF+rnW#bQ^CnYb=Mvpq>8`xsJYt8;kmd&-RjJf=^d$Xes#a-*;uWOHh%VCs2H$_l^v~cp>wtLWVIX$e`?X=CJZ`(*$7IeU0S&_g{a;cTx{W3ZJCSIlOwb+F_epH30 z2mV6xeN;$4>VJ2VM6GP2%d`0PwLLtiJ3(TXhItpU3|7?sP`T!fzWSe_wjGg1B@FZ~ zypN;2MM1bDVVpboZ0qYe-WBP@d5>~pe9iKsCp$>Qo_qo(wRXz z5GZ z*yP4vw~jn?ahLBl92$VOr(&T?g{v|bW(qTEmzSrAhP9Yl5MQninwR7!n7@o#t!^GhI+%9h8L^1}}BRWEb z3Xq^?xu%r+0>hzEGW%o%Hr2z%Rf~t+^U_+fb%3Z1TUxmHPV?v3L*0Zr3eLoUjHIjtLm`k>&VS;7FFAI6x=*DFOlHe<6TU1x0>-D z=Ve!&TB+oG1d|((m=`vX)>Fc42HpLx;c(Y8^DF$Edy2(XrHKOmQW`%6O9=cHd#j5* zDNUGnLFFn@sicV{fV3T*x11qk6g>3Qjd?!0+jt&VGe_f~tAKuVC4yjAE>&k+d+-DM z3Wlqx9cBjry-h_3Xn4@mad3Y4u4=6L`1rpXiNa_pGauO&&Wp~mTq>?zj5fk5W2_hc z?HXQ1A>~Qh)7Hd~=DXZ^rpz+GYkjO~wz6el2~z2+gGrO;pLp75ZYokJ@j$=22ud-G zeRq^ZlSH(As7M2nVEBRx92XkaHgY!&G|bo0s_V5ndaFf6s?nnJnoB})abZ9?2)l4b z8VdbnmKXfY(H-Xz$Vni~kE>Ea9?T-09oB78dtAvSKE(1pt+#v;<`BsWcpX)Q`Ewo1 z6Q|s9VV?3?TX?$ihwiIAzDE$?qLtV(`S29xL#wpAiFGv{3Cl^_G^@|&&JwBuk7U<% zggB>FYCYDPPhqA*JB-|{GmYf|5>RU>EF!s3oQq$ccPhV{+%9^phZrjc1KhTN2Kk|( zWW-n=d9JR71wtdJqq2RKe{qjdcyPH?oMbBqCKF{%cvz;Jvfa}!ZYhOAu#LFFB*DIh?TX~oh`Zt*I*82kseQ=^DpBUjnrpC z$t5l>mFjvKnG!^hIDtXE(&WViTqMY@sMg3+P;Rke2*2qK0_-Y9&KVKU^Id5&jB}Mic<;5=;&#n5Ql9hN#&Mb24) z6fMqT8;A!dmlC>vI4MUgG}Rg6XfX~>)j=|;aSv*eu5ei=LozI!76B~R`BerZ^3Ov| z^&?p3BfCF3=edCM6gEBA@@LM+wM33?Lb_i+8Ur%;_(cD-ilfUVt{U*Bj<<%Szr z=bW^r^i_Y{5idCSse9e}yqDKlph9J{{1;ak%J+rU6Nm6+3pqOQH#e1c`gMHDvfB*| z6y+4p0|zXHw)+2=@)R1Jg|odh*(5mKyC|rxkqk%Rcql2TJVHr}Bb)k1*4zhYMMK`mj!!C>|$x)VEx3|N? zbx3P%;mH~<%sq|W*f`Sa9(cddA_naWw4^|vU<+EY&!D6g1y7#9FPLLvhfH%sxHvqX z<|w08L9h_=uAy634_+fg7m}E;y@wsu5j5Oppb5ChR8s!v*$He$S{YH%cv!p zqeG0PyMvOOl?bV{R9SddFlQoif)l}1gV-sY&Cq)a_^yuYv#`7Je=#Y&R z%uvPqm(;=ryNS>-RVymUUJn1paA#65*$G59ygaIVvZ@v<)T8$Y8x}zDQ~CO!7srAm94>bli!zCMyU1X2J-@eKqqJp>TTYay0Tw0p+B?ksQZ>dpjlPtsggh2EB7^6z) zirsbdn1kjF1eL?)4WGw&O^^{=&ttQ^lE0=30_3TU2m_Tdmc?@DzaLw!-DG<=Jok#e z;1a0yu;7JR)mp#aMqnw0`uXqF7asTM1@*Ml}sg6j1rz#5P+86P2<_;;@O- zrd%_lIHH}X6o2||&AJDL#Sp#8V4p$6K#xSZPu5uMTx8heGw3(x#b{c~;>MY{p9b)1 z-*5VpE@FDhy&QV=h|97#DYY|ZH7w2XiaNdh-ulHb?u+jwwsx%@xq^^AvvP={kjuJ# zL*G_e93)8WJ+T`2+S^<#a~kb6J$FxaHB630K!dbNwvLIZQ}{FDevmfB zf8nu%S9psO5FCj6K`bE$=48({!385t7!<%B%j#a@blBjQW?I==`!vg8l3cED_(?VE zM4(76hej&WAM$g|``C*hL+T0H_(UuR8M)X1F6-sK_yW4HrF91g!do4)Ec-GtxVe6S z?jC)H49(duttaR1~ zI5``qTOJ&O=(R+VF0PPd9TV3hjzU(`#%q+}a@^7CTFUt_&^*Y#j$KdJ?4eWw+H(v{2iBtq2@TjNY|(0lVrdwy$v}Aaio-Pfom-S`Nc>K? zwZ3)DDRN)H#F&W-3YvfDd;}Mb2EjrPIvLqLg5$7`fd6q#JXCJ)r}y*t%ms5TT(U%u z!mrAtII&jdk<`zYJ5fjUGQrUrNfI2vC^VqMnD*v7t-s6^!kcwC8Xi*h#Ta2*;<++w zl#q?6rOTIN)MAxy9^C6I!cIXnn(U?3#aiKP`T?f&2g_w=6I3>>AG{CURLxNIC0NzW z2!tucx`>6t2YGkC%ML-q8OU_;5^+RdT`6V|Hfu9Wcm#ZA>LEd*M(pt5S9ZNUlpe@H zt2~sVo#R^l#SC`UMWT0%5e-ajTuOu$BG+npihol)*MfB8locDcR+1`Pi-EUwK*&y3 zsVS*RPO!Fq`XU2$^rKJ!KYZ0R&+=jP~M5$WL*R#p9 zpQ^!1!s-MjU#|ge5c^w&uA1xE103-!H_Z`%9!nf-=eRAH8vJYux^w6V)N{erf#aK| zs(gzmzi6k0wMcN|@R`#ncI_gzMjEj`7E_}Iae;IoYN#=nIikNsfw0Y#*Wx1|wi&3_ zC1`uBeV`2^LV%UhX<}l{+%aQZEUHTsw?-Nw9N7yaYlI1K2YQ8p$xqE=#ZeZH8B)Tnc;n980xQ+*iEzt4^Q)X-((zje+l`51*-Ao0q+?R|Fp3=a zHBP~+EzIo2-3fEB+Kp_u*6vhs-SR_Q5d@(7+ifg#u#(`>a?zkU!-WUh(Q_bP$$puf$xJ6v2V}mT1OPJ6k z7N>h>0_VBsfNH`QN}9I92yoW8@=%I(9Rk+4*9NjLH5R4LZ|%$XmR@vM1aMG$=jb-n zyr^!Qh9-CDdp*Rikq|lBaY`WW!gx1oN=Atm>)%?{F8M4QvAez$={<8Yz*)W*8JsQ? z214swCDDR6cVeA`0Z-&6&o>6tYd|0`2bFOAQfs}0UGpJN9WlKE9F% zcna3(QoBs?BqU4*poIrsjEMu~7io%c-*#V)^vM785(9zv!J6k*HkwjkS%K}J)N?Ik zRl_{pOv>ubDY~%4R&=8D0bfw&n2#Sw!4gi(n^(G&@WM)QC4A;hpOnBUG#dYx;W14V zpy_L3CiiI%2g{hJulGaZ|7bS1n%9R4+vZ+ zd%H8}3w!z%ismuah@YH=>?o+)&$KXH8C@2$mL|h;STljkOyT%uAZN6{>$mN&+Coj4 zF^8YxWUJd_uxvpjC31_3n|jRUaY~+srGu-oyhlguKTJ|)SHZ8-s(WmdqILbVXMR(m zqJ}ruA*>@{C);OTld{Ry-o3C1LnoyfUZ;~ZQFzN&&;5PaAGT)3onT$GY2%8ESn;3$z~( z(@^8Hbl2UOlZCfA@1LFzbM`6x7O;6JY0%o4|FMA{^*kmVX4~z~;n`E)n1wr9L>N%x z3_k0OIVoG25TL6~R@4CEpnvP?CWzA&3g4JyX#A6;xd4AJ;hVH@P&iO#^@1sDATM9e zH!HFN7z-8U6}b++@;dtlUTvWh4@nH37p)(26JgH`P~O-|lDx3nQg*pSVAk2}#Z%Lq zLh?Z#J9oQkPVTo-nhkhEh#V_9LfZKykm=ram&i+Cd6Cx~4#_(xSE) z8(fkjcu%r(FxcI^UL9P7#^&I|kaU?A6odEka%adZm+fm)qn>JE$;FcC+}3EE5qwtX zW_PdvQLOuY5)^_jinOTlaBZ}PEnbmm@D9e>`*Q_8$N`^8$cpywkl>`(esMcF04s94 zya5N=tbw%P?P;ub%8UF9V_kYdvA}C?@)tG_Sp4VAQ3szO7|R0SC2Sydep_R1SV4?} zkUIYyK#(-Svq;m;p`csH`P_`&V zYd)yO^MY6fCE<&5gu2 zCm~E-mk#K!Q9wCKAHVnP%T?Mn(AtKty4exd(d$=M`aHDRVqGP)a@h$>dy=H-ES=<7*JJgokaJ~yh#D1s# zzoe1um1rj~?frF?H$AHv##$?^cHeMV9o+u?%ibq`KE=9hZC5Z^UR~sN;e{X}mz69E z!x6qngH~cWk0Wa=p~tK6iNq%-;o4?8ydLtt6seBm(vc!DX}-fLel;PH7oOLKQRN75 zRX9z)!R0FBMh%eb@vhXIp|V3(P;n1c6u_Zq?{G2p z%vqr!^es{&jh*G3N}9|O6;=pCl%b^W6L|Hp#r#{XVIe}p6C2o`1c9ums;emn#(>>A z9#^=nhCD8tm9;6h(dc<##d(Ki7-uR_yK7~;Cvue4wY(_PuAkt)8dlYe^~^3u8}zRZ za9s?_V#oaML&f@xc6>fFIYotCQ5zU&2eE6YqadtwFg4NPehttJ1=|cH)t({n`wDn!>+ zUi4XRovrC z-q*y$xG6^kXoBEfY}~9t$0kiy-EN&F>o&THSe_!X>IIF5A&-~kU_-_w26Lb3}5)UT{G~J!3YEq_D;ho^W3$15yPpifz@YNXE%n=$G^cwU448ZJlUX)dqw#JD zTB6$QNiL`dFd|wr)k(~qwO{ZxK>No*#z)$rLMR7ObD^n==4&A8@;<<|#E_GN+iW$$ zHScFlyJ?p4ePezEdCw5MC-GK}ANMdPJ`7J6j4SigGV*tXWTbQB(-=CA9LzOyljxLn zs0VBGnZO{#n%@^%&KC$V`=)?9o3cO~m+A1{Q3ZlvbTa8xZHu6$naL>Z8S0EaHZ zKYm6Z@Zq4q!)R-Z-mouyHUIm~be(y#M>=?oJEqjN_1#6_1&sZ0C^;!nnzq94L1p_1Lg%xMu% zI7(`GtZHODWqMXAKyVC19C-i{gh!BN_xzTH=5YM1e%Bk@T z*pxXq0|6Z}l;1iY{fG|`tP@3q8#Kuy^5P1U@s>#(Gic(Ha*c1Q^ZM?fRkgW5nx8HN zc|^{sB716sP78sbJU3Oj3lcAa9f+$pj>D-n2xp2l&j){y-_YIu>qedJZ?N&qwBq3} zg+~$OH+^M5yQq>XFbEfjvMaIz*^Uz_pU-FZ(fytcYI1mBxlQj_EnnK}ue<+;{hjw{ zzs-&BK}y}K;uVRbF3=-LXf9@}WWEFD>DUN9z@hkz;zuYqC6JnQ#Z#bElW?ho!af(dwmvUFzf#|9F_`bfDMp%|1bm z;NowPfv~3UXubRg$PJ;_P*NR;tD8?3@nuT(gE{b1Qh${=4;#nIcpwy(T16L`^Uw&U z*c0Jq0O-CT6O*wH@=>SYuG%YkD@5ejT-Y&^*aWL%BuO@soa&MSndWF++Q7i;6W{Dr zR6;j36Df-ZB93(EJ||&%WF0_8axf4p6|k1!09in$zZ>PUS}I~9Gi5S=JRM>OVze-~ zM?p)#wg5OHl31cD5PK6#cm;q_L;IP)#roGj$W}*{OZy;YWT3kEKxO^w)m?Sy5fjmG z{}I;=L+;}sd^+9?Z8cEuX`_^9vR;|+n$&K^(08kBucIVLlEhi;qt`37yCA_%`Lo*FDK!)!URuJgv4$&lqwFYOUS-(DWwT zd;kM>d3f!_6pbRnXVGjaj|71L!4;dvMdY{SUrCvI6wRLP z0aYnv#0ug(oGMN1+$bwG48F|y0-E3%!l~E8md3i6i*R7?q4yP#oGMbxKbKZL&JaqE zR~d1RAK-}MVLW)>3_p9oZ6A`}4$WT6c*K^9<_r$tCoK_F+0@&0FhfIRlQ;IsR7$RaJhI2C^nk2sD3~+99 zAK;S91vbr2XaVFr!Uj0t9MyMG*t7yBx4Ny(C6))~Ye+7D1KJsy7FilKz;Qz_{x;g` zYshAS)YSeUft4nvwhe-rm=+pVSbkbL5}Bc*XS}*czd-lR$^LP`I`$g?up`^i{x2~A z4k`HfUG3A^Kd0WHq-=b=%#AgniEo4o+g;Q0IzOqTp#IXRNE;(N9a2q;ThyCvjb09a z7;d_{pL=*>c@%nQ;RWtY(KoVc3Zpg)ECs;yy{eGCdhttZCE7O=&z`rhm09>3;##Ha zqr#D-ayb6uv>`{giANzN2Xy%aenhZ^CS7wH<$OmpPqZ(s`k zc{h_m`^NB)J}clyH*NTEyifYix1Scr7Ozlf;a8Kyvc&KEVwI^D(7y+i&S2d``ZI4t z0F~LM^na%Ybc|;tlkC8tpHu##?oCpB<}#8v5b}vCWXb0IhSVW|4(a&FX*qgT_a5 z(?MpwtHg-Jk}=>qv)$KM6a@0u$yNQ)BBW5g;wfZ*l}OIdi^G>S7~f6v#lI>7iRT&L z{wrO<{0&YQSE?7`DZs@XF@Ttn<^f$DWuokZIIU3)GEwq-ZHG8sTo5#|0V|p zrl1-8#b+~h&kCf#YE!{g%C1hS-=)TWp5}VH9#DQ#{Oet_5{UTUy${3n<`mCJMP4x_ zhpJ<~KD|k5BMz2kUN2|OpWt4cTIo~1f-&lUF3+Ajw%JSfSpL((I+Jvjep_x>&YwW2 zO)&djScX5(u@%Wb@m0mQ=AWDg=fvaqC4H=_?(I;oX!~b@hIGjlz2=L1E^_DV#N6`l z*>a%FZ1^`rFuwCz{4kgO(;&n6X{Vz+q_X+!8b&(wW4l+oBsV_|4vR5|L#2E8-T;hZ z{$w=CFNw(uEj^5%7{`s+25;N}-0R*W%|?^=zq<`GvP-$0cl-i4`tSlsIsz49`>)Wt z@_kJMqSr+Xf5Y2gH+w7Os%i5H&g^#I?p%xC`vI*~*7o}{0U`2av-z`3GImviO z>+%|&)Ys}h^5|Q<;-QPQTI+9q8$j0V}kS|3Z2SUnD_u}i_ zFCp#1v8>O)_4j?~iLoBz@cuT5q!OdWP8o>k|0QWhP{roYbs$XnI;>fs;ui+9 z{YJihmX(b<9`*J8E7T)e{dw)rO(P8Rn`f{aj@7KvEnsSdY?IAm5n>c zblXUuuEJ-pZ1q@p4Naqm7jHmy+x4?Ti{bqjqWSai8p9I(q#$Gztr}@~Ph-xe2Wp3Z z(m$=(0@qkzKY2HsD^-1DN3f7#_lKAIDl@stDZRnuhl}lKrG4vbgsmUT0giOcjrmt+ zWj`q{-L3EIU7xhprlB$gkXmopJq>~Wq#9SdV%>FN!PM#_4%P~D6Xj0Vbz1iBlRh;v zv0PUVFz>BkE50>6=TTJx8RClqjV)DkU8N%YdB~oxQFlO)!PN8Os4$VN=hGFE2WJ={>4jK?t+fy?qZA{`~wY zY^e><|G+DD>CAMeM5Rr-C&7#!tdN0izQfb--)5ug_X2%<;i^~kMp;;)zadP^nRzSi$^As%f&J-AY6Vk! z4^LEU<+?AR_wu`dxITxHuI5|zBk#giJ`@bs-+53q_H@>H1N7!B1dS2>jyg$RNd=dK zFx2YaErxFTHx;(U&VdVVXmx4;=1#i*zvxbuGNrS>?h|_u`Fquit=eGVNruJ*Ebo;# z|9pmp_1`gl(mufzPWQr92B50!{%CD83tqopcz^9mzY8}J_ieXLEW4`lXeR>06`h)` z_6pU%!OWO_*FG&Y;UBOF4)b*jdn|%_1RluN#Jy6)gXS{X=51~f>@WVu>C``#|0ftlGyr0fN}wbF0000A00?0B z|J(OtK44(N41qCMHCoI28J*@0^QkNTFa{l82c2NIasG9;!Sy{t*o4(9MvBDj{XEWo z^rQS6G$eW|nt3mxrtA7O25;*dk21KfFA?SfJwhm?iPjlJ`#^I!iBxoDl~Ebk<*N+d zLEV9gFcg3Q)Bq6~6+Hmw%-_ifV}q$ELm;xmlKnOQy?_6i{q#SIY<}sbca-+%Uq52; z=kN|S<{=m53s-SzgA%O2<-&v92x7S{WhwiH2jqE0O6a^^NrWd{%Ya1UonoN!PL)&y zh^8c#S$?^VGP1|Als6n~C!Zp8vei!0DL5B(O`fkw3X4#gPo~{#7oP>*EJ9n1CQ5>=767HjoS^ad<%A0vg8x#a z5uY2ttR3E0Yfj^Eukzm;4o$@a5B1vdM1<6yBZ?aT#)@yw^u{U81a!c3_0Bp2FU?tT z#(21&#!AKMRgD9*hcrKolbksg4;7{~Pj(4Q^yp6BMnGJKOij5Y#NCq)8`}dv z&^VcBE(I+g?E@GD0&{A#- z8_K*Pd54C@?5gK)i>G(ng*wt*@88fU7jj_joYPz{>Fvl&?km0YT-#()f2%gp-pNw` zG_`DyvkUBzpTF+wMy~|?fGv;RHM1^*YiiDIaQZ6PcV~`T%orMoDNmMXaeZ&+zgIW? zyN$(YCPBFMxVx#RXR22Wv`s8wUdGz_9h45(E6~fBLn(T zgl3Bd#YX^#BGf9p5dAo=jl?RPGp_v8Yy{v6r}I3pM^(RqV@8_eKw!P~0Va1;1Z#u= zbWx|y(zm5HeiEY-5sl97rgSNR6ezzH!V6zikKj4n0;8bbX&=kAk9Tv?5o@1)RWhW6 z2cIEa1|6<|o)da77;^`m!l+6{n*`W}vb%8k7QcxjL5yOPp1t(;!p|gZ+0?{!mGmL% zzu$RMOTG97>r`NN1Himyg;C#$w+P9)_&+iDn->0kV*Mek92^)cQTX7CRV5m%+uc1! zT7~=~L6p%Pvk>r0JJz-Y&9S32$)_6}$`$qe;H`X=csUy&jQ_2F6!VROZmj{%dfa1i z#e7vSdt-IT!1jk?YT$>ukh_TbblaGfuieSrN8Pu2eGO2Xfp@&4>3D(7+?(D?>T=!J zZlu20wPbgsKGenChh|>6W(#nisZz02|7X#!Yjf8>es?STG*0jyU3U?wMo#cg-Ob(p z=DiO0+MCoT_^Iw(e^0rW*z99}P-Op?{slt&(09Fm>=v^9z`o)A^o^POZlmQ;f3B#0 z-Lo}!GTVfu;9{;$0aLq%9{MPRT-Cf;Txfe&i{>P5YqOI2}hnCNP7ou_7eNscUTXPcB63Ud!KN@m4?UxnIutI8@c`=Z(yPz8skwOrfrYrKZ7c}nW`LAZHR^z+&I6qZvhS+*p4Y8jl1@RpbZ7GP zWJJ|}nYj`H6jgoSkgSafn#lD)h#xw6Y>I7Ruomf%3eyD$^XcO z+Yvp9g$5GHNMxU_HUmKAOk@#V< zrKkOTcHf+$yJ>ALg#!o!T%B(^Kjy)3^o;yjzbwPo^*wgn%jiSYs-ll`R8zk>%(_EhHw@ifeVPa5ry3MrYwC0>d6SkDn?K$XpXPc6j9pYGdXYH1s z=1>vSQ(_AMWfB^|H(NX>KR&1>1s0a_&LA?3IJGU%xW~Kxj3{A~5pj^R2>K^br%dv=KTA~bejG_gL{HVe zOIxBKk;o{dJ+jXMm2p1@54oY+7=OsnfZgA(1g)2gdi6Y!0L^4RiS6GP+Rx~IBJB&s zsPy=&)iM47N{4EfSWcymLgO96DrT&~{~r>l)8>YPf`IVC9YbzaI{$!0ry$wSiRy^E zWsW?qrW_)5==E_B0H(StJDz`&@y?Cu0) zV-~qP0x}9tAdScKgQW>_8d7%X&$z)lnL8Th%*`Eh5G9xas z{9~$BurTI5m!aUM`={HFX|P*bKUusqAFmtOnGo$E9=B`(>sKz%01XJ*3No9;wi!ry z$m7gEgu@Ennrvc8iK$>J6fT66Ftm8i;OTmPaFpilg`Bdo2AdDq#AG*pOfdLyt{1~#s7)!I9jIi+Xv1D(nFTYp zaFP0!T3Odch##KoxSApyHVIU>aV92?Jve^{rkYJXOhOOA7StA5ufE2atJhkhC=O^@ zl?N*bt-#`vc)_g79FKfjeQY`AZE zSq;`o^PgL3wv7rYpFr&mW4_R@I%&vrNB~cLcNht(uhq~x!*n>)G5w1}?B=|GQ>$%) zBwss#Z7Cou!%~udoK<@wd30-B6`#5qQyV2Yct0Ub6^2khewc;-i$Hsnc;D-bO+QtS z3!u&8*>v)eO9F0D{jJ<1%n#A2(>%XalgkFUG-Y9(!#W722sjISh6>2nW-Pv4h<1hg zL!W_z>(4*`Ab6ns6-B%Hyr=Azfz6gz@dH8HX;xpwyD^Vk$Txd?&IrvWW6CAdS$_ zF5~ff{ocBkB~w35BlUzo3*;@0r&h}*34TpF8f|P}oJpxQemC2*1hJ@wfCRp0?;y`m z8DqODNiYnawQTA=P<{<>wptzrlycDpPVp2H=}u#697vkfT(-&1(!Szgi)-fdWs z!_vKCc6-<$EQt(n_V;+tkwUjVtudWtzms+Muz1><@Ho!(5Nv$pv^P_bt1Su_%NgJ} z?a}RNaNb+R-Wxuuhs%&;OI$KweL7Ikah~0^xrox@&rnX>!(y^8~URJYt#o)A?JG&h2L4p&kImpZ8?ya`T!ZegQKAQtg3v+Zn&KK&dl;nT4_cj_!7sHZU5diw83{QZ!eY-Igailj zPeSw=_mw!Fj1Bnw2EWa|Xir3d#S1^qkoB1w{^9``H&j*Fbgq=|XPpZk2GrjO0W_#h z_8gnE&1nH=v)A@*k8NGxP|LIbYZ7b>V%Vd{W&JOm{J;6YjT-^&p7GxBq*`BfMHfDs zDA^aa!0;E}Ef0`y5s!cavbUBIf*x==3xv6oBBb2BmcM%5HVnDc!eoF~XW0O3Y* zohr1>H@{2C6K`Psh&6*XV z;7eoqXbc;8j1jGv9m1@U2wL{zzhbEBbU-7O(mpQ z$g_pCe|6^l)(!snqBdr8_^e_rK|&~J3-;JGpZ$d4e31bg`Wu^V8&*CR$BCuv$xh%^ zP-E4X^&Z0W(xEm1$^(A{!t**d*{9Wu4F!LgD=a9V-a*F)f=P=xi0PXbuSb?BJQQr?I$C_4!)ZOOHSiieifg~*^(4aCkP(F53Tkli*y-L=)Nzhsf|LYlf z0bSjfu1EgNMc=ffdTmT(x82-h%Op5=#BLP)`{EMas!$tGykDEL0E7k;)8@bXJj2Cs zpsG&amx`?+*n)nGaaP;vm0c_H_qhV9|E0;XN~ zA?Aa|ui_SrKHu><<0k}UTt4{?x>!_Qi%zvRzkn+SgU_aD-6~vwc1{N8p1ngd5QMX* zNfwGGRxjZlSE0k<%laqd>#YtiYV6B_mGCmN*e6&lL+{NE+Mfbb3!*7!-9g$rZLJY4 z2c;P^sm%~sua_FRI^YNlOSU_8wtG|Iq80IZ+5F!li#0N9feQ>6VQN9ctHpA-^xx+C zW-kNF8n`!nQ@Fl}7B%%!yZ@YQzKjdIogxd;_oJ-1f9>-D=u?W-ar79{>U+ z2o8)!gxxNtm}G4ITDI)Ye1jT|RXH~Ag_Rl<4~5RpND7o{_Pz2>U%w%aFIlplhw0JZ zA8;45a1~OK0IIB;K&Vzz(dizc(ZL0}nTY>5$m@|R2Ha#{YJXvwrw*W7Hw6O6MBS*P zP524yy$dbN7q%z-rlYrtU(@aqN$NN@<6qk8@#+}7_;D{_FZqHuebq+M$zVij?B4ZF z{s?a-EPMsazN<8=puPHZ86~bV+{S$|46>}9T~K!(WY~{v+1cV5IK$WKFU@JhF;XMJ z?x^Z2DP&Drc}^i%!{=si+eq4sn9QsU@Y_)y7cp1-u?cS>|Ag5c&##!#R^uY0=)GEc zV>}y*d*9BkG@1Q*S8lrg#IMa47q^nuEAy216E%@irk%rGycZ(P`m-N;i(#i*5|wIa z!%rTjh8QbtfjaPD%_dokA6K>)fV1|@!U9p$elM1R>=NQD@2aS-r64uzZsrKKk=#U` z@%PyYEi2pTJG-%{D4iBQrJC{L;4FNS3L?#MTg$9E&pas{2g%cOaSxZPVwMI7v79(V zzzDW~aUn^RqB61BSoII%7!InhHP3X=IC3B!IgWrLKgZBj#Cis6O*bgtCK!ReGlSra zdopZm$lTP+cniled+)~rK*@rHebC>-fc+9)WQI7f3OmPb9%wNrU~@Jw+j2y3~%jeq4k%X>*ZzD|(=& zRI29L4CoVdnhO3!$?AMG-uN7pcF_6ctJD|y!{C{zzf9IlS9QB2b0RD~FcP~$hHC$A z5w)PEOW*#0Fn2jVI?mM)2r%X)3Qu82f@m^G@VgfHeFUG9z@ycZA1K58ap^wd|L2qR zE>zLjBX*4A=X!0W!8({SY#*F$+QUrk+d{y9<)gfQqK>k|yp(#hfian?oKhR{Bt5_PItoVNz;!H|?a{Kzuu z0-5zHtTVf>f&(7Sy&-z?+Op>Nm zOO2brKy4zRqU+6R>^ma3Rz;g3$anx~rGdB30xx2uYLSDzYQa&&XKn>prO`9O^0!k# zA6Hft7?-0fApPBTuADBESbJ;4PrYgEx!QNRt#Y}&miSyuXvj`baqm`CnN!gUkEgu* zFRQp3dIV{4O#xVyfrHAsZZlrv^5olR+DSk2HOVC@@L5DFd z+i`J_Tt~b8jBK4tlt@`YgwSbQaNapuyrOpNH>7Y}2-*X|=Dk zgjkDRQ-H7^@u0kWJ^*qbzs#l>SPkqq2%4E|(kbcR_jfqn9ajvnb?i~0rI3Y?ye8@| zs;{6<|L@0=Uuij`LWAN|(B)n?V{Lc?A+lDDsFXu}<@P_!go0}OX+U5ZZN1`f$IrB0 zT{gRt2wJS;$ZVLd_*lCZ1&rTvdX;M1@5EhgRQ5VuMlD8_1|aQGgK|Mp)@$KaRo1lE zJ~sl1ehg0cj-)J6-(8WBsT0eSgx+H+OL=fMknV4FnqAnA?0{oN>qpysx3JMyjil~d z!O>J`{QnG zj7aE8cL0$fvNeKoeRZ4G>1C^JfK1Lgo6E9v1Z-_F!|0;)X)5c&@@{}b3w(b(}?OgGg*Ki73%T+HfOdTTE>;4DMU4-L{v7!zGBjheqyb3b zK;yKLZ~)|F0wn-IO#2%B{9kwHyIprzRbR;+s+C>1JGOtPjBvY`gggdaom~2>x~Mxg zbbnTPL3-nadCy^_r%!7V9{3+iHg6$=e6nUf#%nNSUWQ1fhA-0qC=;r(c+On?Nk0DU zcN5|`z)uI-2|GM~+RFlv{HGWdz!(0k3NcZ1-R+UPpT)IG?nWfT}`tNG~xzj#kV_rU95RxyB7)c6G~bqi2WU&gN}3m^k2004j(D(-ua z8Zt8{YpDJFb}WI3lJzfuUSy$m=~E0XWShD40I7;p4YYmz8~YcA;#r0wzt+#zacrj? z`c`e#kWbmLAqEJ)HT}Q6)^A+&)C|ldymJ{%ma2Y}S~=u*X_YtLojB-e&FCQx!=r^P zX;KA0enWNMU6ru{i_9ZBEa#m(_$+t?zSm8At7~nVfF>7}T^mj9FmD9DWb}cls&u5@ zarVIjXCU(J6yPW6{Loy9*|27NK)?mgZ*e)SzMl*&m%H(=%xP0R9ZFZhV6pE?>~D?# z)et|=TdT^(qNs1Nid)OejYbCT#qshG$IzBc8kCb|`mLBzV-2t8N4W|K)7D4&dy``K zge`P>#1LN7gvT`lTD&AU9qN)*ibMKE4H8GhnAgJZSLPe^KJDH7tk-P$c|QC!nSb)r z>a8&HC1R4*cP?uWDqQu_;s+;HA}k`i-}`;uN0|Q6WwXY%=wIQN3yaU3B_B?KeGJovdL=+T;Y#z-<**!u|E85l5`S=D)H*7Mk77jl=GiNKPzi z)-FJQNLW*M2l61DSfM4#aywebsE0}_XEA}=9peVoXHCV7^tU6hkPtfq*iK3 zV`Ag|xJqZbF^-M-{_i@r0qVqYLCIe+9jdHi?0Qf!l_li4swKKBAlOU|@iux*&r8dX zlDS<`GB5nUM-tm(q}Iq5Rtg5}2pi;X-G@=|(Mf#PUZ3}$oGp#EQy3R@o_?PssmXCt@y(`@^d3dE7%*t`mNKZpCsP)Q zy~AAjBYpH{6H{gT*gqtTqbo*^T<49efVOGwHxPpwjU#?5Yk+;(diN4bOIaaY`LZm0 z6^R)+{iz(;NE3taYG%XiX{c;T7g||ChUuBw0^I1CE9p{Ds1gsSMm-U7;&RWhq zQGa(RS;o;Z363bZvN8U6$6=_J3}$(fs%Pv9bV{$IFBt4fjQmsosFkhNwu5of@o!R! zy`ewN)xkyuBdN%C>m`ll9=jI!lRpnY7fULY9w;kyCB+YqH`3YtQfC6iF!!y@ww1#5 z9_aG4IkT7b61j#5Wt^ASrQ^GOWwE|PT|2H4x#pmFon0!g+`|iEQw^Pp*lJe!R#}d25;yA+ z2_L)ieCyQ9`YwI6w~%jw7FPOj&bQpdfdNRr3Hzy3U?SBSx>CbLsholQw%TJH&s+vc zgfO1xaOv@{j{L4|^~V~_6&p>|l)+ACBJQ9h9o@HBx3oxbU3-qc!xA%pSl94n5Bq&W z6Nx&MSFLV_CGc16wpT; zN*0#RvgERDZod6o)a+ZB=`Bp+fw&j?NXujd{wGzaK4@*wZ#r`4bo}Hs6&& z2`+y7C*uS{xEr)?|CT{+rS3?oXm@JDeWd$8lKnB9k_NW!QSSd@$XH}RZiu8Vq!&^^ z(p|GjUv4{!3g7+hx_|hbO}!9ABm05Ip5oMe(hiNPa>nV;mPtwE?QK$SE&rknds(gx zg4`T0@p~oA>wP_4Dlh+eolt4wcp}$G;+K!}+G_E9eTPzZt5&X6Y8DNWiel(s!9x35 z;i8r_?1=g1tGez9Y=L95j6H)815EgJHstP7v=|$L6@BYB|jntH5kCfp*(zQQ%5A9>lS1q1YsL(U~;AQOwyMCY8)h?xyfviTps zoYqnwH^SJ_*@$!yXM^svS~zX9H)fsxZmeof(r0J9m-6+(0dS$zsg~}pjH7XSo8GBU z?SHRtIB%yxfL(tw>9qea?~SJO+>#B*vkPHk5ft~cTWUrOCFU~XC5dnbm%Y}7Ts)s6 z-j1cXh|Y9u>JnY6D^*4-k8EPA&h@k$n%+yEha8d2@{{z;lwT)GIb5In*UJ~vONXZH zmm{0DitWum$BUSxFqh5Nw~Fi*+I|d;2e3F*aqYD_;!b6n4`9(~F>;{Wwl!v{>d_GFOE?_yh?lMV{QCm@I_@G}4f^7Cx1V2d zbtUg5AHSJ;_HGZRYdabJ3tI^X6`})a zJ-g3JB@QA3$79eMTa7V&km+oPH{Q!IG`8gWygAQ!!5hUBa z{LfYMwOF3iVvS51VXb!f6Fs?1%reJqR9zfNw8%Nro+a7Qb0I(5dbOpg%=24oZnJ;X zape|6`}_@tj553=z8{FA`%vb-Xg=vz6cv>C%KC3joQfI-t~w>19u?V+(8oowc8nZ8 zI$_$os5*@mrT7ek5}!y){b-85&3fq0H?sczr_FhC;Ej6$C#hf{-O6trUnzh1 z+|JN$YjkmPbE|DZ?+N-`zeW^c_^qzip~G5zi-~vlw|w5eYO1)SSNxy0iHq~8@0+o^ zkmxPi{%?5p&~x9Z!v^e4HE(Q5$4P&Y^={s4ZTs&UTF&b!dwACa9qM84+8Z3|WxCb& z+2Q1Ft5q(HuRq??r_uLsFdU6a*T#?&e2;U#78SjTmz~jfH44G*R6p6y;qwS%|8!U2 zSt=W=GXbyE(4Ds~tl8>couRwkLC75ek5|KzmA`^*4^`UOLP4Hjl$+$FP6Y0_W zVo%F9#r&n$G@SO4NJJtMiAW?Ok%>g<6Nt5OywULvC>C@_wH#*5lwnNoH^%iCZ6DGb zD553?a%s>NOe~!7pcOwZ#D4$~#RLH*7i19-0;(=V;&cbgu846*7KNR1G5{tFXz}3! zQwz3&stat4Pl5~!cu|-a1{g4BkQG)D+_M6(D6HVKrRrF*O}0oaWo?qJFdC|%!-<$V zl!6e7n;fE7{0@=uXa+$~fHHuqo+K_rj$msu{VgIm8$4A8QJ@v7wIqr`A2_A6O0134 z5r}rxV{jOjKX7)e9WP%g03KWL9q;A;jDu}2&{xX zrn*l{uae$Z8bBbpW4qG(gK-b#rJ8}6)G|ItYYQf1ityDuhoB~b z=VI7MYqCVt2_P`Gs%}l{1AW5446Qz06QzMyKv*E#Ou`BFb`=0cR|bMUa80%bjzR+m zgkVr6Sq9BC5rd7lBw)NuI-h1`wJ`=-Tj4Hw$qBeSn((SanFXsN#qep&F;N8&4WKlm zCh`NEuw=p3_Iw(Gr_8K@Pew{X-K-|ScrLOmgpfg#pMpEs>_JfSbC5yQniCg;Vl)h? zQaU$G0}@5x86LU)CZ&*sPb8~uQns6qA$3o80YTbYkANs_x+0rX4>Un|gMVfNo7+8L zc^2fX-=L!ZN8KYkh z)k)@|u$zZwlh%Pve5o;n5A9;d6!u*|WdftEg+&!o;e56nnd%-GovPVE7XXz4o)3-! z3krQdfJM#R6NMBb-4jZ{QJ_!JWt^Lq-c{#l#Md9r%eB6fpc( zcw10|Mu=&2Bt9@$d}zQ$2xcL?L0>T9<~@=diNy2+ND7t6WYALq=xFjFD#u=q+-W3G z468c0iTX0K;9w{D(VUR+3CSGrb0qo+f2jVK>URZ{50emJv8IA~7_#VF0q+JV`LiP_ z1x9#7=^^u=Ym$qw+1S>%a>Asv?g3p;!P-m^qZ15N5g0-s5r7k?Oi)_{O^)yxgi!^D zJ`)MGTpBq1+W6;tFo*SNoilSQ;SLAI7%Y~&ngb<=3guHkV zLPETj5JCuu7Z5@rghB{=@mRD27?w|nvA8faw&*@*dKcJ4xBk+p6 zqU_up1fPot3Es1o>z5U78xlZ+xYXa$cF79l!- zns5f3Rel;IS}^e`kDx}T!WtK-DROYy1+EEVKz~CuI}jWYLHeaKg%M!J$ZEWCEb+iJ zL*lY}M<8j2X9JlD9P?9QO%DKuY$2=%u2U8eSN!1nhk9@h0a1) zgi{@F&6>h$5s)Uymr&r*CelnOkWk5AXo!h|80ssL#)G8+)6l8`S76zQ(?VN?GJo;# z-z0=cvG<>!c0L|Ua=KKE%|>Lv`Y^|2UU#LOb5YzmK z>h59w1!{5`AV`t=+hD}VG^m=p23f(H2Ba}-`QocO>A*Ar4mJ(YG{6@4fI{01>gMVK zoc;NxN(`NR!6ebo({S4%rhOWS4Ax^o4O|BPBigL^3(q)24HSoeAR19W9VwVXnmtl? zha&ciloi1FsUW8ONgTWlz*HvZfy(OG&?u*y;RW)vSdjlG9w|BjCqqbv_LzO5aXfAW9mQSa$5gb(_Nz%!9Y@`K{=1^SH~ zf^+K_926#0Vu!?&PcgAkD`l0LwV&%o0-Hr=2tNQ|%{<0wCY)QIw|QKbCX z;OW?H-;IsvtHTrKVyX)p<#N!4Cm0;CF>sW?z)_Hb$PiVPqk;KLxG>q04KkTYU^o^i z6CA}z;7U$lI!u7@E#aDEhVA&wq@`1i7bc5?KrHG5!3L<(pN2Iaz^3ORtO&N(*}<6w z-o|VA3%>FBxIE?oIx!ajqyxw4uRALd^3PEs1V+Iz2(t6AjujX?3W?vNa1jzE zDu5oTC*77WD;W^T4b`SY0+g%4RDfn)Q8@=i*&vik763I#iq|MDLZUnn;64w1m1qmB4mp{>cIF^cECL&XS80~A3X4m3VokJukp4Z4HV4LA^UippGT z9!wntVIZG{9vh_Q=7OIXwj=+>AoIZq3UH`~vV{JSYrq!ri#Q^HZszqGkxbyU2zX2) zs{_Uq#Te5AKarP14eP$2m|_DW!Q|3-nJsB~GX*q%t{ zsEEbe%|;;(kYy^U8ZkoS7Kk$`#6|#NK%T#`4$O?-zipUAtii9#sl#K%SX52F`P2VNM9rAHN445vn+z!A6ymmRm$3n#WXvOl0Lq zs2a0JYm~DfBjlX)gzpyx0nED6Xb>``4#wV$9yHY^dnpZ3r^pN;QN9ILvXtP8Gf3tZ zk%Cl;i$W$SlqUgNPzh3_xduhK;8=ol1EW!2l>j zLiBhE+N0t6*d#vuPaukoPE9UQbDMA?s=Wx=By20Stb7>$=AG>VR}PTD)lg#ai`LGEz&;!&ggxe@o_9T_M- zsi9Jzv9W}l;54+NND3LnKH!w6KxnG6rBNaTM%fIag~;y~Y>8&0RR@h?8mtOa5I3sd zdzMBiPDM9LYQQLE0^t+^kE0{{u_*=1hQ`iO+Ji?y3{rA*ypEC)JIWBh$UK=r3&)WE z;}8eZfk^{73)jF5!x7>kjAzq`A~)_#Lw~jZL{{;USWGF#ncyQZt5COthL~XCssyJA zp&(BL4v|K~?*<;SoW|)LABe2R3l5<386G(b*D3Mb%dv8UN1^dQ z8ZHfuJ~$d9phC$^=k@ygwn!lVY_vgm`UObCc*XXKXa$$f=EcO(0ekfms6&DG$3LM* zRY#XVN17AkBZ5fkRWP|1sKK3ZH-gyq01XfrEQ;j7RN@m?C;=)nJ1;0Rrg`@imM==!`0;WigC>tE5)5oR=NXJPL9i<_F79=c#jd23B zLywE-$Hou7Wr(#DcWI4Ku!=D=SQOHMQEr2xIm(bmN(~xiBY+eqfofq|*C;sxqdW*; zG9-wLE<^hiOkGWSyC_&@!(`I@d!e` zh+^kqw*wK`90R@!Mm%>9MeAK7Na2@P_mn5`$HqK>xv*TI4GN$H=A8?*c6FGYtgkW0MF@!ZcWme>T9zU}~)JVOdO7V}Ob* zuE4)4xEMW#qYwyn;?=l|elU44{0*b<`jv`Ob8J}O%} z3RHnHXkid7g`G`s#rR@HlUibf54K`+5Q{8EXcP~jC`1<1PYjhQRX`h`xG_>1nGFVI zG;f0t`fcn(*iAv*U`nCLguag_V=Nt^y#)jepC`dx+gdwA&X$VK@4@%Or7>p=w9R)y8lqZ07n7{#4jB7_~!zh{q zM^PPSg5=nalpQLy$IlJO0Xv0yK{mVfyFE+^G zC{VuWcv4|(*+HzJ*z%b%qc{h@Le?yg*d9H~dO&0R1mGg}Qi`M3v9Sf6JjK1D4f4eX z5{$}~0WF*uX;E|ti!wq`6eq!2c)et_j0UgWYn0jmQP6_2;ACr~DF;Tm4B&-{s2izA zZV+5=Zk7j-nqd3R2HF5v-t1D0_NhMo}IB3RaamEU(8# z5NHKy2p+C9ViahDQL1?AKcO-d`2|3j$c$< z7gLHH|g*7tY2Xpf+ZT z+bAtUqLB3G(*%Tcd;IkzLffG2XirL)2Y_j0VqbD+(^NSM&!BGuL#{WuU5WlQiw~}X5Ncp^{@3h= z|1)@86u}T=`8|)kXB~g_gC(C#p?Eh(<{~A7qZ9|!IVyZw8b z=%7)g2cV33Mx*2>8k<;fWoL*QPeL^ckiaNcf!K!DSz4bgML?D*e^8s7$T3qZW|P8Q zm?4hY*x+oeFw7`89GgB^O3@HGn`mE@HG-o^1+Su%;EvfEF^cp6QOpG8VOoS~eCfG@ zU1WohC}S_7`FRu@hp-f#!c>UDT~V3`MiCK!<>)XPF(zr07$H%ngQ*b{uto?D8bw9W z7OO6s8pDdz-!1VH)J9^wO!)-62~!=jQod=39>lc*hx2<-ga}VFnn6DYAF@V=G!Re& ztYJ?F0O7YC)XZZ8`oaBE)S!D$isq4}zI1d!{MZWtC^t@`Uj7uDgwQBUgQ(!dz@khF z7A3zR6r=uFAW^c|0s}>{`kRHQfEMv~ID$i3wvZZW`<-UfF`u#uuqN|^#z25A`{^kJ#2zXLtIF2Y2Z+=8
  • G@1qm_T>l{c8#2fg6w{eEkvV@m zz$FB)nIe!yQzEE7Xd2HtHHu(RC|!Zrkil-Fp9UAH5L+`=`jIf>g5Q4%K=s1lLI1rd zXL%bX;1^(M>L|NGjPXY}3Qq7oSy(+ve9$OY&!)npjxW9f`eQ|DAe_KF)h8hk^!?)3 zkzhet#zshjk^4fl^H!sr7xx@zv?Ib ztVhKZY>+lwFk`YgGMfpe8vj^jFqZm*bfH3AZUsSM26HhA1V_pd9L3E~W+x=a^c#+{ zB4owr2pyJpI!a1_C}AkT4XBhX6K;5?(pW|XGVD(@K^JNOhO!D>Pu-Y6zMj#4*prE3@-Ekt`1_yAG7P@VPV z{5HT*5zfPt)ks*0uNcJSxEm-Ya+GmlWBmB4#i%GAszk9C;rq0vnKA}F^Tah~RD;>@ zkd{VzWi}c74VwO#V#vnlIAqW#nT-)3gENwKQ7YgiSuuv4S0dtZX*iq^ON9hrg1Ho;kkwt=6a1Odr8-qpx4gMmuJdRNyISPy5C`H2SoDspJB?OOR zAw)%I_#XdmvV|`5Of~3@F=Z9xrf7l8dJMCH0X8-lXEr+wQ`Dk&=6fMMF`Ka&GXq=s zRt%a5vnj$DEIp0cosiTDm*Wx2jQXD*rxKNa=KzhdT z?@@b$jW?$PnMTJ;Q;2{l#j=p*;A*<6Zc!Pd{6wuyvcw>n&&ep2j_ z;K==I{9)=;(2@u@z%)XRk@3OY^GX_N9A-Zp-B6T(>Vo8>izE*k(h~@b=x!KgZeS>5 zf$-xCuVCVR`)UwCDbYYD{QU>8 z&_$hcL>3axWeA8GFC}ag24PXY1-VH5f}`IEHk?IDZSa%vIevsN`JEV?WDp$xcF;~= z8!8jS`Q1VVy2#U@C`DDIW6Z25^%y8O0nvb(s!=5bqW}kILNxG=SQj`7f54QZ0d(~Z zjRR1AQAtGJ$U0%EtpK3p!Pa~VvQff=Y+<(q-F&_MClX3D3EqsLFQ@#NmEcuSv-r+V+$Ya)Hnav1|gOomINc^Ej zI>Vm{a$sl&9~L94FoypjvXVu{R}Zq(DO2nKX~Z!L`Z5Ku3{pC%NX$CKc+eW72x)wP zg7H1Hav+#VQP4iC5x!QjrwxagW}*BGkHT5Q_6ATBb75u#vtJAcN)R07I{199F<()q z6OORozaIp%$e0#W{Db!SlmUiN8=tN+>JiKagSMgCFSF9XY_gxsp2W>;L?|1pax)7I z%;tUO^C3Wvg-4J6VB{;#gk&y6lVlV5H(CbOgf>wkaIu*MM%fSEr3gS5M@G9SgoL8p z4)SGdU>v45a+KtNQM`oDF*}EBW6abyqY4JMGc;jL2gIEJ3^hVnZT#24Px%nxN)+}< zHc=8Pr6*&fGCOuYWl;$UsL`iD{|3$M*4QF~$Y8OdZv-C4AP(m3DUp}Fh0(E?ab(G$ zgXHHRF~QSxLs%CC7Lno+(1sDW1?n)x{nhxtPoo@@%wq>vv%du(6O_%_g+d)v-M?)R zARla;VQ;_+#!-a?wj6$0gN&5_IpA#YC{Y3JP{F>VstT=cS9N|&E1LxQz)uSW^kFxr2<);=gESd3d47CPLKZ+KP zPLgGXqm%_ZawQ0jXg8cjok|e#KubDl$UBve(=Wbj?U1Oz2zMKyk`VVdVV@8Yn zutCxU@$P((Qu)0{1j>S!QDNw8Q~N6}=|8K=RM!xC0_TGjkA@dJm4Dc9EfO@c zM9yOWbkiD%(6Gtx>BCZSNG{NFOQqLc zNn4@W8Gi>Vz-pJ192GrD)y*fhcwTV1vPt8qXHrR$%*}d{)VCp?*X>KOqlA+JGeYJF zXMo{;BO-qWWY?Axf3q6h9g&>SRt+_l|XqOm0cccq^5Y z=;m{ou=6KOA8SocBCD-^DX6t$xG6@Tz%Nr56C?6;J#~BECR*!cnk1ssu>Wi8QiD)+ zpyf;Nx$RDH9n5W7HOcH3bdsQFA3q*P=AXg2SjA5!#Zc`yeW4cVhcldMWm7R4&(rf1 z%Q&V z+S1Bd)Tb|pK&e+IpInabl`o7WC+s@=tZy1ryuzF2RVNMf4Bn0QvpHzWV#F&#XK=GT zIO)sFz~xTx3|b(tUB3xy8%mX4JNlEs1?phZ@wi@3X6=&(%YPWOxt<1erxv?-;Wdsze&jc~nYL97nf}lG-$kc%VFP z+&XfU(7sC!{^6{bvr*ax>~C7w9OeICZ=UbyK5wMPa^96w#|46F3YAbzsI*ue3aqD1 zgjx@C=YDcp}N1O}^{N-8X#duNh)?@DRvR7bEaN}W2C zfSuIMW!jDiogz`@=9aVMVr=tNWkE~btPN9(9pEKgY+|`xbL!iZ<(B9z)i{YYEK`y% zJ$)(cC;T#w?f~Q>sE8)ReXw157IqvJQx1Q$+|hQ0senDgNUzj2U0hO~4+)9;au#Jc zqeqpJTSgzPQ8{W3&i7d<}XxtXgLH*WQ7%RaF?jv%4ZB&E@)4s!nM&kZ|hzgSnjb zLO~agRpB4x=6=d6<+upRTkyHGT`Q*!qLl4#wHRM&DBx(&GCeCmtESJ;kBXN*GJ3AKa+qC&oRsyq zDSQ6Z?Co6^d-dj7QfoH+<=tbcWsu3{hc9IpER2w*3JU3*oM!ijs`>jX%OV%*OWyHZ zE3HQ>H_=Q)U&Chsb$Tp!$rAf>IjcdL#Jq>gYm-%L;-L~H3&UD_`p#krg~{H9Vl5C4 zaxG!w%XpGd?P?>xCxU5FQ>G+sk|nL+&aEGPDc(mq=&h?x@-}Q|ab@jtt0oedXk-g- z^Ou>HIR!rvxmt}1G3b{5{MZ#8>dW3AXGwM}-9^>u$x8c@_ilHWDkr^!OIq1%Jb9wZ z`|;;Z-Yex%XtWGI_Nqw|KuBg+G&57Z*plhqnlE(^;Cq?>Qs0yjb*D5LdFkUOJiEZ1 zo`y!S&3kvgKcetk+v?M=D84MwMr8EZeJ8~M3Fd@!osRvd_Mj^J((+vY=kO-W0S13@ z=TEBi{)bBn{j&Cavz_A0h=0#tQJu28x^zp?hwuF*KEa*``>In=2lWZvU`+VU#fl9} zsAP7qsl|@`hgk+ja$r692A_ewNnW^3&P;aSG8kpSm6tYkJdsMx2{ jna802Tj~w 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 P@npu68Bb(9+W!FHnEf(j literal 766003 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 z%0D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�QODp98e2DjU%*g=GCs>@%Yz{VXHH-=uB!B4` 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 pFlh6@RId zj|&8ykLOT?a>5W!U*mOQTWwUGSK<8Zn)-9&Y`1=X!jv+pHU~%4`s!0Cr6!mhZd4m1 zc9(N&{_9SfM8RO~3F0CQ_Yt}sXw3ZRVgxOFqUXIk<1`}kL+puGec~H*7GPbK&T}v0 zu6}j3AN%El^IJdPM_wCObloN6rrE2w%N$tkV;F(Yk^@?L#hnB5+{23-_s#wS9x8f= z$@%2yqvSOwopQi{+59-&Nvhp=g>%7Maf+JfkxiYNn`lMGt9h(hX$Ige{qhS?j7&VL z_PkB)yIa^F66YU6#FSKbkD1bF`e-PS3il7dGKL;$8Ix5z7U$A^rwbQ z*E*7np;MaeI7&fy{C}YgD@-koVSQ?;P9qRsMXR;V+2H}|5YmImzHxm^JM>h`{CV5$ z4U&DTgvL(DY$D!Knd;MZvd(+L;ZtyLoify2ZJ?}a_NS@x0($d$%n?HGG(~7YwKZ$A zy{ zZ6`YDCNAEF_k06X()8C6CIDQ(|%zS~ymPcY*SJvA!UaJ8mS=;Hbq!*tFF+O;!nD;zYr z3utm{(KZtjDIXz$t)>x^p;f|zFP(Ya&O3{Uwv1nmGEYcyI;N2Aoax?+LQ*Q)j%RU* zO>jaXQ6r+v>4>v-+sOc@_`QCJm5n4g5}1YHD~EWAIg7uIV?vXfSXmOW-1f}h)^%F$ zddrQq<(vnWK&-?{zPH%z#;A6nJDg>^doT=}T0_xdjRr2PTRyRFV58+)SFQj`?><&sMh4HRIdR_*|277O>Ga-S_3nU=8eNP)`fTS&;3-cAUh> zPzB}UX{i_8FTk11$8{ik#pSTS1(3p-U=O&=jc8Ev122iQMhM5Z2cwx1Rq;0r=z)g` zZtD)JdmSC5v1=%9XN`k=ylt_BtJYSVgaU~nEYq>YN^4KR3C};pfB)7yW&=41khp=5%!?e=C}cdXEVgrgq|K z%<)}1kW$(1(hw&D1P+J4B_){fJ*{LPco8K$10DohH%0_QJAomH%HNR}%$K#t4SlT1 z-=U~W7rX%`m}wkhp=$yvA!(;H{eT_K?sZeIJ$Y5S{RF$|Kfpmd(``tnASEpGsDwHn zVKUyxd~-r_{yXGF!-?A>5`v3CLC5y*XOYbK!=|_iW8kMG;wzK$wRF|2rRc{Xee8AE zPbNEBv;|$+KIkW&3=xWSvZ6d~-a%)fISf!U-c7~~^VN44rCLYR<2#z_8k#XSdRM(Z zXq>GZw|ux}fK1KZETI~uN7C51z@KWl8kvy!krQ$Y{dNVd0mZz<#!;9&Ph~$N3@lP# zM|;$Xov{>YeoA^Yw9a+y6Lb7QTl28f{)&k);5A$+6gvq=Dd$fqs(d37OHTGoR&rk@ zXK~hrAn>rfCik9HZGa>tmd4tk2RaQzdG`dypM&V${zt{h(dU^u-o4bHKn`KnVAil| zoO@M#1H8vuJ04m+AL42)sBE{9)J8F#j#srtWtis9&`H(k9W(7GOs&tJg(|x2)X9c- z5)da2i8$OYh(2h(ETDlVec0fP^j*rR7gg^L$(@S?Gj zjj?)p9q^|`a7t*+4SknjtoJi!Gk&-im|P(>v_eN!3SOw}UX%t^>fw}tv1^s*190M6 zH3T@Qon49!_d$pe0eQ#?&vERLMdSCV2tc{Khd4)|Y<`mG@H}MdL8*4+Gw}kn(9myL zji*}Cc&f4=&Tsws)0fIBsN5r~>EuA?x}ClkZYs?&kQ;j%v!>_5mk9Q$s@F!GD!~Eb zlg-X3df$(>epjo1(d{W}^XtlP{YoT&hsK|f-UD}msLFBU-lTY;%j(TIv78G_If1z7 zMUvNimge7GZE;R?U;V>6j#`VIwP*spjot{=-$m#+bCAB-OSY>X=Bih6NxXeVX$_Vn zhwQsJ+iw`Z$qp(zYaC$U7AANgHr42&SzD#H`?0K?XGt7kSO$(H8}HzP5NOQrv$Z_! zLchL6x$OS)MG-mK$x^l0EvVIHGPg4moXyr;kUopPA<4mIm8xAm!uBBHJ0spZ@!{Gw zXVSQU1%P6-`i|o;jLu;~iqv5SiW|oaC{4W22!HNbPxG>75X!U0ve2^nH9EV!#RXuq zV0|2SM4G#pZ5&I<`!Y^D>xS#$SJvv}`>n3Mp<&+g)P~+$4mQn6ygV4;-rrwr>Slr7 zrnAS9XyACY#o-D#5YpOM#C(mv3Al@`Q->2fpxr(^m&w|a8D<(bdi)jEo>)1djy3H~ z>SQI}H>^snY6s)$lGZYl#`uUWpX}`{dw>#|UrSCu){awoFCHbMqno$BKmk`qlHa(F zP0X9O-yx8It!nS14)?fn#H~ITT&M@?$4$7#Wt8K;!YrHsfo-IaGFHLj`hcn>DVC#W zf^PmP4SZ=E8SrCgww((=J*KmGWQn?`WzSO)`*fHL&PQoy5wQV+vQ^KEk(I?1V6789 zjm6-Iu~54;0lG8076JI&n!Gxb8!-qK?0mW`;I_6~arZR)5yzfY6T#TI09sZ1uH%58 zggc+4j5?{IqR1-*t0{!cm(+x7-PPG(u7%)l&lPSP%1hxyZJpcjG2U05sdF)Qw9tmV z70pxFI7wPT^vh}Mn*uYmb8**(NbF=BppKrQTCq;f_@!|9P|bJP5LTu91RAD4t>I){ z$wks_Xy{Z@$&@FEMuU}wK5a;`VhWz2Em}N8?|O#WlFtlVwb3|xZ#v)EHYA@xQgvm1(&5# zl{zSovsc9G=U{2cWQn!Aj+tF^YrheR-5dgGk>|$+J1-TF!;74QSyv~RF|p>Qanj;$ zd*7-1vT8yP4RLbShr%zFN7t72UG|I(X6Rl_8@rdnrCdjkS7a55+MPDoRypj-f{EQk zyln2-ejf?sHC2D7-iJr|!kcfd#8Ikzv#|Z3368V6!QICh<`qOZ_9)9wT&a|BR>>&r zVEaeOm`Jvp-%_B`1|dhTE+$T4H9`5@_WTtRQqK1U8Bsv;_m&XK+Se96o2Q-Xj)hlzJEpsF%>lWXevBE=lchtb(3^W_nGd6*$8>!c z48pzd+6&JCOXyVly0neT5A&rToG;YqbGY4kGdKmcE>bIcWbk^|;0;_W_k*4y4P{O! z+pvwQSN@F=p6s8LILj(Oj7w|8zOchLd=Hi8qM#n>+L>MQ+JySrIq0UaEgK%gK+;}Z zpyP?30Y+oKuZG{zVNJv9_8_~{l3ZHA7}xELTX{H-{p`fR$GpXd)TB;E@TC~tS!QDa zT6fm1q6nO;A%7h2NMH*pnrN)t;qrUeu&`;l1H&cx){WI$b4TzrzT4H47iC-wOT=i& zy>|XvYg?%wyzlpLcAR4lmXO%LInV?USW;$m{w=J**8Roi(4a^M{?j0Fj$AGsouls> z08YcFRshU?AZ?q%OsIR+R~`h@I{Z+NJ8u-~h)J>PTklSM=ajh}OUW&6OH2rRwp^{} zLdFum7(2dLrC&XGM?6u~+A%!$5ftbr$;gI;TT045wMQ}dMBjk{VjFC>FLN+4=^FkDUJ`s)?{KF{ z{L^nTpIL>sU9iA4MhGoa_(sr~JwTHF&MzXI{e(>o&U73+k0xt6t`VO-do{{L={XEo~D*Dq!Z5{FTJo)Hqx$_pe>9Uh%VqPD)mO;3o zWDhGrguZg_X;K&K@WvX8;SQ4gFe^+OIis`$e|pujmvqC&=c0C zz_1bMGTsj9!2N2Gp^QG&2bqRxOJkT~Y}Ty(*d|i`%mZrVv0F{DdF*|dl+~T=QdWM( z5!Q40`@@tNP4yIa>L!ea)Z2GSk-eXXRN(H~eRQ-a)uv*8W=76kdB5kd_&`#;PcJ-o z4G2JZ5D)+W00062022TJJpd>5N>Qi?ikDD?q>74HkoTy#FG>n=!V5_96(Zu|FJ7V$ zrM#3x_d;p(lDgPg$h-BVJP?9El?16!R ziRNH001yBG001xpFawjse*$$4$HN+MmqD}5n*Kpwexu;FvlA_ za~qsKkm1olH{Y+RoUSJhA+tXV=`K?$S0s*Y@7T4uQddpdt|>3Uz^&JX3p0}tJwP3- z1Sve|eC<1vH|T~($l3V1gU#(;c9Zxmn%=wzp88=#be?BovNIyG*}-hFoA$jsjV6uA zAsxRbv>w8!=DUuQ+r&hfm89U=@bVlmo%=I|XVURgUZV$}hh)=FRYN+t@l{}LBwK0V zI=98LB1j?1zRFxhjGm8&U9iwh8)k!h$pXsvs2tM1o-Ek6wX&D@%bL|2EQfk)aW{>{ zdE*^B?l&td_QWAB4~7abXSaRioF0umwtSH1)4D;yL?$}7C(gz2?z+bHi*ZZO+NnZi zNCsruI@d$~BOm0^xai7M-81wMrw>$$4`bQ0l%=@2EA8Vp!nt6jTrP1o-hGTVgwDzC zH>$^N=1RwAp$%`EgfmVny~(-B--M0@PrCe6-FtM-a}+qb6b*0|%)JVQ+OoLbPe(`0XLPx0JtS^|w{eUag;AT=obDg1=WgAK~8v0I^bRsI50Rru=CnYzG z9al0cK(!>5e!AMJ?Iw6gX<>NEXi;$Qc#v(A?NeXp&)txgLdKCevyhWPAs(=%wKDW= zr&$g(YXc-R3ECHe7(!i{#JqKv5o*^2xHrl1Y4r6tw?3=C?_@huk5Nq|q7@c&u{f@h z*$8Kx+ycIn-gP_zD?#M>;!%{PqcNQq#~4ALvghF;!fW7g2n;AnQeqW99GkP}!~%8F zQPO25+S%FqjFeN?`0$C5#w%rxg-vpYRdeVg-;*Y43zSfc9pEH$l|2_&0jh<_YNZtd zRBD_CM#(09n0QIwo3Q0p!`GB(>2u==G#+gsiHZ%vHv&VfmvJNltT9$Y_k8RnZ6py2yrx6qmwsq%&;XSM#flV80_2p0IEq3WV^C(_mMClz`@@&nXy z+5J*FiyqTDd=b7e-is2+=C({ZB|$inI&S1bfJ^X&JP(7wngfjhED_5>_n8A7k&lOa zv?tT9r1e)oioSTImKSY+z1nbL8yQJeZPd_Gcc*i-%iKR={oqZ)i*w+f6CF#8UyH;+$qzI74e$fw>qE@Y4WkpQ z`fkk));f*q`${czT}0cl4=4mQ?jdf-U)Ae;hkR=$T_v-56iMN@m+QVy>W4TrEcMdu zbb=oZYCv`$sWP!_o=LDB7-rf!Q*19K^kupP9kx#KBXBZq%lz6y!fN@Lf-r zb2@&OoxhGQtHH-pkJHNumXwKXJ@=Y z$*Jj#yY$x&lHUb%QQ=V^;1 zw-Ur*>HU$8iQi&0$~O$&yS=z}2)$Sh*~A*+Nx1ju*3P+RH)UZkqByg2zaNaR?x+rv z&BY+|qvyCOS!haz!aNh%tZ{DyW?js0xn@dI%5yHS^>pvR+Qx3Ehtvq?vDuSXQ$T1A zifoI{xayh8&75!swcDnW*SLLeuM=02c)r22^=^lLH&B2pE5R$Y#_FKOYr7Dj?2(&Z z-6$afDlNu@UhI2AGQZSRIF1smlWRV7_qHu(&??sW6P0sY9cO0CF6w#Adtxz1QVAMy zX7dZFg-@>oWMgP7357bup0=jNa$277Sk!Gu!!b=a5YMFQ;oj#>J98%2>5Hm3MkDhf z*sq;0wj8o$ce*L-5RFBMW;Zb+CmwK#q%gi&<)&2YgBG<-Ha=XfO zQN6TN;eN;ycKEsj)G=B75MBx-{*cY#CI869uj)Gj#+|r&@;{yvdBqIF*w%=#B;dKE z+L^g%l6hMVi8n>HN9)kSzK$WSlBV;rUerZ+e0x07C=QaIN6_SbN1rm9NTyiQHT&tR zQQox}xN*3qUa>XM7Vt%v85HOGE6k=Ux+)GRNRP_;&dcCGb&!(Y%Sp#|y)`x;dlq3- z-Fezid~v!Riev`loEd)oI*-zT64OIb=m5;kEn&BUYLd_&cXBd=tr?=K|ItErM(x19 zFM7k7&=xf7k$fJX>R`muUSK(G)jy-MM%#%#uQ9(6#Xkrh!aU5+WAQ~!>2&n7o}r^> zcu%#K^d#M?&>gwLR#ex7h?%H|G7C*4r}!PFWL?xDv}30PRLBTogv9etvtU- zhxY6y;SF~R$Opp$s|MT3goMQWiP^9TvAmTx1m*bEFTs(1HWfE{J6UwYPQ-|72hs71 z?SMn)#T(~SJC@5RJ${RmV|Go^_f7B3m|+}AZ|8b#LWSb|ZZSH7w5HjfK1U1@Y5eER zU7dk?DZH0SpfSzPFplY-lTO|zc{XI;t|DoLBD`idF{;22du^C|ylG_~&n^7t8pO`2 z1RMohZN+xmj;3E5f&1g!Fno#mjuC3z=KjE8iOh%l>(=3P>5$=+W0h%=Mq{a;w(LFF z(!Gyeu5$RV(JqQDM)^7Bc2_ouFvy0KW~Pg`#!7`i00CQg%s$9q%-4V?(`f{qQaaaA zqv93V+8MaGN=Z&PJaHUDHK{FKyJA0YbUvukb%G(E>l`D|a;721a$_$Y9WOUf-2&<& z#rvw^tG)Psa(ds|(YdtW9{RhU2Fli?`$I@n`x>U`gJErFgLY;>)Yo`8)JDdUclP75 zb{+l#&v|*0w>X|ivGVUc)YP;Zdh}{;{XC^kF%?I7td0@LE+$E_m(81>@I&=kHBULd zJ2*EVN$K^-YI7_DZ)|CLva(E0Rr>D1m_B!Ns*0gdgsoo7-d7-wHC@w$W1}J`MX6Gw zeT!Q)re`>0>DHBEv9GSATkk!09j#8~!eldV?*O$)Y_3l-s^Id}tSI%Nmqz>WSWIp}O+%v$?b9>NWMt{i3y2gf;VQQ9WuWyKL z%I6@^gZ4&)GVye=H**t-9q?zDkY|ak?B!5EH7FDOWqogM*MOawoaqQ@e8}zHK?)C- z&xa(do+9BK7#{BPo{SrePWn8XZS(*&M&SZ($CGgl;kLk@LTLSZS(+>!#UzO?T;Lf# zUag6g?ujEN!#nXpBokX}aE=r?Sd%5#J08YU%W)oFn$KFNpZg*paEIvKpsif{xPF1o zW9Cc?#$nT2?Svi32KI#!(~FkfxHpo|1{Bk~K;w(iyRvbA>BT6dhoBA+#?Y~txK`}6lnD&(H8{AI5|&9{DenoMZNJ*x6Ijxk8lgTu1GzQRu&Xq&aDNz87J3%#n3Ru7-o@| z*Q)NbCl}&oRgX>$sUsWf0dp=hVg7TWS6`9ox6ua>b`hIz3(ev-L>EfZH)6LKNlZ=n zoTTb$zX;Yr_gq)SnpQtc%YK8HDX*c79yLP&&!c>Ly{zQf^3QA28Vo~2MRi9 zSd2KE+cDu#cxZYt3dobkwE;mcGix#f&oaLk$bq%SBD;PMMm^yQA7( zN_aN4%2=Fhw~8}JXl?!*ymM(8CBISIW1EI!Sb{UyoNW3wt~wo~TgcYBn$0|dZ|uNf z*J3bNt)`+OrJ)}UYbty*b%fDw7QfEnJ#T`eeI+gJ;;I}x)d*vDzFB`BOCEYPH6w4v6I=}v2e($cA`Fb9;#N(lR+RWU_1~!!={mQ9dk)H%=w066>F`vn%YGl z=6jm%FAXqa+G^@^o4!rPG67;^9rH4G;ht9~oSLC9ATlwY(sPaQ^hgw=aS~Fhv9g*{ zmabSbvdP5t6OyzCz1oj{qL!zJ+&9PPib_$MPdByhRTUXqB>I$;I9+5-r)H$2VYs>H z^>MgvP%U2D!Q*vaIJdGwsXwb^MeoPjt47E!B#Ynhnn_Lj+|7t!(*_J0<0NW-!Vacv&Lg+=F?=@RI@@h&`U{2f z&z1B^rrHFK+irFX(7m_r=iO{sMlBK~@tQzz3n8a!s2MAu7$+Ju*9(e^{FKY?ZCr7? zigZ+mRaAj^7BzF(qk>@;O?+yo_$cqwQkD!g#r;G1$DbkU#YB&N3B{=DP~*^e3h+n< zoud1cJx?AI$DlV__(7Bd$O-WN{{5sjI=j`YUD8P|}8t6QRt}YU^p83s{-zjx9{0wU%8E-|`-L$iH!yIca0yl3@^XOA_I2(yH z&4^Pj95m(<#`*v~K*GOVDQo_-q@?Amf`hOmEIfR!Fnq>Y+GpmnqbXban_SM2jo}mt ztH_1*NBlz!Pm_`+cfy&+aEqm28xSu2U}Vw5%d9P1u~?I6+ zXSxGDz|WZ`aG%Pf3?yUg8WK4~wTrG&d(92qeKIv~$-{es-WP-`H$Pf))>NeUmWsC7 zg=(0u{_ahpQHE{u>A5u2CDXVjRc0eoJLz?L0c1c$r~1pONZ}G3yWUf55^V|^?OP57G(Gu zCs^z!G<)pV3{^kPE&ch&uPHnzc|CDSZJiIDZ1(_(d4#keAq1~ zv$im*Gd9PdIG%kpROef*-l5ECbiba}cEnp!TU#X6X3X2khLx5o^oHl81bxHAd8cz6 zWkXmQ#C@nn#ck{=fw<>RZqlExqrkkM;U~Wnx|2PtJ!vll=)({vjZsR3WQ-fG?=B;IBL9W3(uC=yV0fugg;%C7MSXRzOX<3 zE>1N;Yr;@8Ws1+EWVnfF9zf9qe?v)!j0ll1OO1)rgs@LH`GDmyDLM8t0j--aCUwYYQL4fD) z86k;Q_l`OvSh}sN#+f_qZ6oY>T($Geu^Lo+1M*@5-ru#SJTt7HNja9{&vLr=&HK(K zFfH%L3J=g5=-oZGn9Ha>moK8t+iBGbkZ6C3+-k!byUNCG#fr}rxw#xPg%CF;m5PuP zhH!z^f9diG2D;aKPJRuZipZIz`)ja5?Xn_0(^jBGniuNlyV~ND04U-0BlPK5)jJhT zP9ScEm%Vn+bhbr$ubkL`-Usot6u{l!>^1H(p(8UlN00Zn8q5prSVVRxPzmNw=sk7` z?Ya)6)}`}NO)JFm>rs0e+#0^sf&WIbX|3muHjeKEvogeMP(%8kMW!TC1j-nc28h~WxoL&hKpcYpktLPH=Aj$*-1&5_V@Gc-N+DX?^u2G z#W221cChx`c=e2H904&U)438$2bPkBQ-c({Y3@heNd{MMbs0Q9G1!-E| zTz1Q!^sF{q$ZpI|bvSArVH*WFo_myd-&d+4C9LYwn-2MAt72X&{z0jmCagVOta*Dx zXF~5MkY`(aIbGQ!nTa=YyQ$yKvrD|eB%N=NpmaR5sEv(HhGX)!4<1{w7`BMcovv+jd%s>Owo7sox5RBWR7}=-g@PIJ z>4c6_I`LLtYosUE2-jIjw&}6A!R@`6V|;ET$+vKKnEi%l(!qbmG()8*=DQ8+yLdR9 z-D&aWwy+op`o*EMrT$(TTS)S{?~dr%UmqG1IOlYXEco8z>f&7{V${@~O+%S5y(z~( zu{cpN%w7m(>?@gIpfs*C*I#M6o)IC6+;Fak6d>W;+AGv+J>E)f+)KfHGHPD`3VD|5 z)yT?)wj60w)nQ@0CvD92q2YXfgu|3KIW7iwYZNA+h!*^4D9E7nzTd0_!Ghd znZC0tH?3db+1^@OG4lpGaFTk6gIE+dh+J1LV*H8;OSlSVBoWQt7?fq(UU1EykY_^Q zPW0KhPg1ZwTO8=zcphDkBZbi}GYdn*!trm8lM)@@Y4;)>O1Hp4tEPMzE!q!HiNjoD zn0D;*(W6M3Za_UQ->hQpZf)*^ftzj4qI&9@B$Az##QZa{Jh+Lix3=i@)8{>(MZ~?X zck#oRa3q>zoPO;sKQEz~1YIy&HH^+RlvYa&`!i8MB2AIESmddzZ)0W;HJtmo7zx&6 zX6Zu5+LDL12Vx2egWoy7Yl{GaduodUoNhcPxkLyu?;W9S4=ZVOd6A@5OcVR5mD&xt}JVtbe?9Km8D@3($o0xXTX*_ zHau(}9)%iC3j>L$1mLqsSC88Mwg^2ebmZ3|7vjO)Y^cxoSzZpUNBCW9!tHN|x~rl7 z;R)j}2$(Qw;NpAopo`D^a_wh353CWgE~qDSlEs@U4u{Kk1 zof$n%EyLF63dnIbhci!yL&rX;eZ72#X0=ot+viR}b9Xui9&=56g1fsHNuzGMQ;jA^ zpr^T|;pQbOcq53^)4E7|eXCwTW@`}Fpt4x6tGuvSWk{xWL650GcYq{8Jf}gay5FhM zSgfDt?lGzG4WBbqSK+bPP*%wDw&E;5-)zcROnsmmwLRVIXAqrE9)tU4M#B}YIUtd+ zLT{F(Gsd&yJn76@59hwU$yvkmwA&vqyIL|4GjJ7Nc1}a?)G7nze3`roqGBG4W9pcx zGCZCsx<>V2m9BT}X7HdRga@UP$jfZxqsndtr@s``r6U+OZ{CQbI5lyO@=@<)u#{Sa zarphxu}hcbzeRa{H>r(x@9(1_tk4jb?)v1%JAnqZg~_$Z%5s=Th+;^Bh+F)&{ylqZ z9%62EZT)Lq<>>;;Cd_t`EJM1fnsv=Y_3Sbo9AygwW(wmG1LC7?mQ>H@!?cO+!eP!; zKAvDK_lk3+og@ltq%&WO8g^{X&Y0`bG=brsLG^S#dyFi@5T?+L^nbO0F1Q-wJm6fY zcf6>$8>rSC-qkh9Dvw50Ntv&sksMj~%-ApZQMfYuGX_xD(n4I^8PQxv)0~kZp5l&_ zWN5+Y&KEWGEW5C+MzPUdA8w&;Ie9-SqYm8_NeKVGqa}xQe9lK}tUx?Is2uypl4X^I ztu+rDVI=H%Ai4iEs)eNOEE-&RCT+a4T<}u&XT5dld|;@h@v)-ap!B3)s(W7{=yTLa zV8*BC7^f6^hj}fAlp@spOoQhEgXRJ&bKg(zs`~dz%VUNo!?Ioz0mV#-zy9UtPhxv(}y^^oN*+v zXeNRKL}aA+whFCy8g-F01uv3rz-?RX*HV?0U}uIsNcSSX>c+)J;%-KRTsV4WW>Vs=%BxHu z%;)S5m-MrH8hwU#RmE)O_~pupe9*t=s(z_hSlE0Bm1!;2R~#0x^l?!gYvf4ST8HtB z;p@!T^`a4A=R92D=Q!9*5nk{KHe3+I18DO4686E5U1K4j}MCBn4ROP%QzRRKrpRqnXFFAd>x3!G2r zfJzg*cxE14qCPJTlebuCRmQ98a8>m>ylqBxW(+=W=$AO%)eLXP$(c{TPSg&^Hbl6| zqExPQuKB3Be*C$r$i1ze^PJzQCA*uKX=XGFPen#&Ckb%_a+pR(Ju6MZo>eD#B@ZEc zY*60S+Lt|M6mRxN$f`!CS*@P$wzfo1bQYKyZS3Er#b~?~+-rK5P8^0y^By-qxwVbn za2Bcc&5Q*cT-Tr8tvPiCqm@pwWgYA6P$$5*#XY#VUB>7d?R5)|81x@Ovk4I!)rw%X zIi=5zStv%kI9sCTBX@H}7%W0r-IJcZa)z;{FD|z-N@!T)xTIW}&0tA$a%j% zlOs>bnLelcy*Q^xpNY>58*Pp!?XHiKn-)m~uC0HIS@aP5iKk6hEW5nwOIy8X6V0C( zY5HhH)JOI}eYkv_qtd5Y4r3?s4wJ|5oleqat;{RB?cCb2+|!_Us*7Vq(LGb@nV)82 z-mJ+XA{=}Zic3fr8){n1ftnWrX}yLS@^21qN@db2;;1@MXF}Q9E|5YG5OR%o`29TJ6#6 zkU5l2)c$IU4lftww`RfQbkYf?YSdMB4;)%`?`MxQ=$?VPALbb(>iryS<3U#f${&*)Y=)c^!T6t*P?j zv`sZH#<8BsOm0?~#8Nse6 zy`6gz2;8)l=i;>>?3^?zopf_XN&(hiSx1%6&<^JHR6KI}bh zulo0S>gUcsY99=7_ujTM=7<~OwHGQb3z_!rVIm%@eBN5xpBPYbfEidKoKbJqa-%jz z?@seel#kyUg=M*H+p>IRzBrS+Lt(e4*csj;A45VGcxWgsFmXAo+Ca?5$R|}SUtnU2 z-n3B7?V6adH!Z-Cq2XDyP3hP-XNx1Xh>kipHK9+D!qrl@-)KvpNWAuOg+lZjt#^Bd zg&M{tE!;ZQxkcu5zgk)Myc08wFuZO}UsO*il`;s0k)Z%G5OJX7=`83K_cpk_3h zJMcH!87(xmPDl zcxqKVX(iHqC%O-$@~OY#I8um#lp$(<~zpDv(B z#UNRM%pWb-7(b;HYoWzJbm`}MBiE@qq59;0bkPloyyQ-2r+}_+%;A-nY~*tpB%8U2 zfw2YE$+nqJG^a7@W(*Ao+6VE{Z~|A% z&FFdB)Iv%}Se`2a>FY^!pPuV{XgBoFfxk~KeYl~&zsNE=ON^o^@4cHkAM_Es7U#9} z1kq&sR+Khj2->HzNA!N3)a`tXd{L$1eYy~w3W%Jq!D?kW8dPJw(9P23Jh`haika?Y zz1Ll_NSzqBIdU6P898<0xIN{i{+0josteukkSWzE%5P=Myj>=>B&F#Me>;EAoXtOt zRIVPQlG@^~7*(s|YwwIq{JXyrZ26ru^5d2AR_jk!Q*ehH?Ars!u7F^fL3>jTdtpo9 zgT>!C_x5z|C>uu`R`CwOLq;`c!kw2c&ogU~aJ7U{7HS;No>zS&7KNjVlxTzT%b874 zF#cY|I*4QA+A>6lovoJ>1);41jXKn6N)h2na&}h6#s%8~hgY+KRh6~UtfXi<;Htbq za-U+QQ~bLMR_eP4?X;Aq)#rh18&{Xx^HFXja|RtM57L&?=$B$WK8Q3neK2GX{mg8x z&*ZrDVtyKddUjj!?W1F(X;jp+k>Z(qeeQs7{8_z#$hd_bOUr zzNwl$46fFj|6u1ZX7N{7vq&#mu9;mBxGtCSRUDmslU*D|oQ+hR7Y zrF-53H;U@VqKxQ*v}*Dsdfa`4R?;9Pd6o^v(P5i`UA(_O;Pdrl6HCurX`HCx#%{V| z0V}$NZ#`MtyrULL6djtXM`i?fn=sP!+>&=?mtOsm7P3dCr%xUh<_jc^Y9G;6VKfc4 zmU9KKdcp{_aGSK`>m3HxMK!Vewl{4+-LinvKM3nQ?r{litB6g#lcx0^b;>c4me9f5 zVP!*Xs8^XRj5<2LV4Qf9iRy{LQu=GVaA_>Tq{k*(9~ICP-nZG13PC8(3Iu!O$r5HN zuLCu=&M|W}a^?eLnhJQzN*b)v-cjX&p$?v=bc-j&4d3inESM!=F`@X3qxG9!u_<_5 z%|AtP;-!j+b}}@zliU{6`L6;yep8J#6(n^M(XL~;}MnU3K$7p zb65-tnpo`|_^xzw8NIX)tv!3!3y%N=Xx!ktT z@Vw6V)v6h*?r3&lC5wlf0y;U2P5L@X-+w8YN^^&*(q*KpUB1Ce&uiVW*}!={ualG} z?>6TnM1>n4u6$39P?Pd&gufrRphA)wg4a771Te*GG?KqpU0z-nG3%JPQIncFQ18-W zw-3flo*fjmZni!CT3-IZ!gXxFQ;MK2)n8`N$Py$WHT^Tb0wb@pYZrlfR+?oLY&e+FalsorZ7dyxmrVJjzY>AXd(t?F z^QX)v#tQp*{x1!0cC|>lY3Y6NL3#(6`lX@nx{L{0^Qy**aEX6ZoXkCH!+*A@yTmpr zpl-~}=zoz^r3pw!%zuF;jB4rKDwVrZ4+4mn<5dMpiu7w=jHHBP!!}E6c-mV>s?c*B zC5fw6&Dk5-MeOX0oC7+iNot3aL;MWPs@V<8IB7v+>Vy^K5^yxUblUXjmc&_9%H)b@cPSP0=z=1nVI4Z&l2Jpr z^#zNaQL4DadyS^55$7f&t+5o?;kiU>jHj74mfWt`#71FlAq>0qqtw5xR5G$yNh zrqkYxSYhyWv3_>7;aV&>`l|~otDZD$I#es&w^s2wqM*_(zTv-eE(wZGg!p1^rrCYao))HuYO{XzvPnYbBN6_-y zcs;&Pr$F;k9TZ?;__PUf8#^EEivgKNVsCi?TU$VM(L#Y8QMTZ7=Mx+O%`pu5Xoe53 zvjtN&NqmBCOkDRbG*H3enRKNp(d?C_VXswuZ8cz0b8r08JX42{QF=cZM-imoTmgYo zsS97v1I2X3Rs(zGx~9NKY&L55>xX@174YuOLy=L>b^~XZ8r11IQ%*re5g1Vu9U;Rg zI~w>E%vtqHzPYOdJWXu-n#4k+GjH*Thr*Z0?4iNi`mNy{EpyM@%rP}id_>7I+b#zV zibAuNx-is8|M7G>OoCG5W!1nOK#vo3PMSI*%F5=i%Y(ixu$t%}Or^dcOvUiKk{Z0j zqAG2+m{q;gOf@s?5nNoAL@KWV$F-m6&zQ&X(i_L$PZ)P(#x%EC{o?W!eWrHrD!s$! zS(VZDBxSadX8oslmsFW)rb!KroKlC*5Q2SFGwskk+TkbLsx|ockLv?j`WudcEltaG zEuvZ^q$SUxf7KgZ;B}QJ%B8zkg>?oVveH-H6uZn$sbRLRQfd<>5VNfVBsQk9UXh_U zAr1R!Gvox@N$ZSOQ)sQ*%9ZewE-5a4t%b(N=woDTwPdO~f0T+#hf!X@)oymVGx6*p zDcvQ9pV0%=%O*VRB#edjTLnhwdqPxLnprxu379~rwJ2|%%QA&K@7|qWl0S>;gE_@3 zO&aQ=6jJeVx9Z;Ekg<=@cXUPIj#&|)yD^N|VM4lT7Ra&QLhuV=w$hQgl+_FZLFpWs z9^>F}oa)tLyyx1RoOKHG@WKYlAdOSbuE137=QC0;L^KO6`VFSiGp@(>j#r!U@U9!li7h?wo4W&@ zaKT2Ha#M~9X{SQOeK@1vIg8C=B+up-L-wc174DN#_fgn9flWh*nn-q&k#|h<5F(QIMWd8;nP{H-&aOF4V@ixZCA_)Eg4(m79kGc|BHMf1uhR7-m%93H z=uSiRu5Xt>YX$RT;6=m1l*RIo^iPyH<5~U(?-_eZ$*@S3O&v6uJI6C&&knR`TSjC+%*Evig5!_Wjlu9t2}Lc9T-V1iZnFx zfEn*MGa4`5pxLv>nAYLk^Y%8o*+h=IyB93Ubi4ha z*8M`Mq&pj#^9{r@7eBULh7;r9K{>f$g?svx!Z}${xej)xGAoHG8{Kr}?$TOguHDtY zhOuKE)9)WSZG_i+!<_^N%)VV#^@aP}-)_zDXsb3Z z9Xud$We|y-Oa#BddP~z8{e91YRgHg`RTyV#*jyQCTnD>c3Kb87zs|uWbF*AU@6ovK zm6jz_lYG1lF5-J+ng>J&S{2U&Id=nCDWE~3^-rldG(vXlpncRbIe4#zNDtE*W6)Tu zFrO^6WRt*)EGEv@n?q1+Cq-`e&It!X{L*NpNENyD9KqT4*7ym!v!U-x)^{V_jSacm z?4yIO6H0ac2DCXXa+&`)NHE%(ET9vcjij46n+x67crU5EEO`hV^0-IIk++NaXx^Sq zH==q-qYcH!!l>{KHK26L|8SWSW@dcm^^Zq9`8n~y?1*oR@2d((+-Rq zLJ}xV)K!iRZ(S+gp@y}Cz5U|1qMHvUbw!;nAgcTI)rr{XJ8`R*Z>n8_S1NA+k;Xv{ zV@JbwGZ8EU-8iu6{_V>ejF!iQ7nbBwVm#=`YU{DTWIHE#1B5aYd&fDcg|QSsJ)fA=@AM;q4r)7!w#3 zFzI((DJPGpero&DL89L`FX)aP3IK7rSS6iJ&{sclFEN(ELn%6SIrW=xu{^bYNNCTS zzh2Fr9Azp^scFwAb0H^78oM-WjA=}c?&FBsP@(d-i5rUz7Y()suJ+z(TkEhh_i5D} zB%QD;OB4I_wD|L(Nx8AbYrdy(iPyQ?c^^aWurv7*K_eHPZImL>NGZ1YeWRpJOJd)T zkb;_a5T6oISI_(Y9g2gbN(W9x!t3C2>P>+Va zR877~eH-{nD9>qvshu*D?ONyoFEsOy#-F7$$RTU$1BZitMAHg(dd9%p2 zy||Aw#dr2IK%_QFIJabkzeIv1J1J`H&7t!R2g_SiHJohU%y|rj%rToV7@zYHQxN8Ent>Dgb!I=RdcAEhNT`i z(`Zmab@_E|0e~}pdS(+%ZFJPJ@O1Tr8?N$kVUVk{!MIE`;Sp+*hh;(ExT09@&91-SU~jzJBB4Y`QN|a-ih1D7G*g@`HDtx@r>% za}FiT$7~*?EX}HP+Z$UQ>Ag-|qhT)E+3-Ngf55_8=MInS(5@L~^|fo`tdVD1g=L*+6*piE508%S(ObFQa%O)^^0Gw{XTVs4aQ z>Wv9_-L>wL8;yRK%mIhGQGDP4o-T5ZE_ok-qBj`gmnGbwQ+OlCN|eyH`InZ5UPq@k zzADer8RjOj;{Lm)F?HgbNBF6EeF}a&40|+bZ+_ZC(st2k^{c^*siVcS#pZ%zrbrHa zC9PiRfW>X&7PO(!j zj;OD&F#qx6q+sy-cM=ZtkWJ(RrUN>IR>ZlY*`lHj8$mmep>LZUwp-r0MTVGmcRYTM zZf-f~R@txDN!PldJ)KWFEe;^F6wpGq^8_ajDyxPx+FlQ*oQ6VS`H{(E%fU1CZJUNB zj~#)6($3ZCP%7Kcxl&JEo~=QYe<_-%manT)0NRGg`~MmDLaMhH;$u;ZZNHGxxvnvq&s<(t?ucwN=2py@m+MxW z5A0R49#<(?kG2siT6~Fv^qEVt)H1M>?@oq#8g;yRC{X-m9A;%x97e`D4Vv@HI4VAQ zOka16thxj*&vP^1at~w0BZsH*K%vqiyQ(QBfti*^zcm@j2=PS3z#Z_VeBGiC7YkBu4U3O6$(>}sWeBVbIo*NLL zG-s4ZJy&F}sgdbU?mJKl7uQg0owqlyt@@)CK1azeI}hoJR|&a8XRuK);=Axz_9VU+ zeI9iL4?6xHH$vSJ5y?JpZ%d}m+Q;@_5H-=hcNTvA9p=N^-m4q6EW}{ z+L+U_-wl=aVNV&<7Sxt)M1PTVSXssSl` zxg`%8xh?gh){k)9sk>OxCYh*dxFFlS&~195HR_t>wVX_UU)rnfp&2C-^07QT<87e> z%lzApM67&9(mN20(z#%R4xSLxYvHV1!xSPVrAsXz^%V+cksvv)(*zw=-fYj~G^o*gqU?qY0)Y4{3cJ#LbD z=~e`Q(R3z_hO5q`tKQ#&FADhj5G7qc%jNp48l85fere)M0j-AD+cJ$a4Dfcdd~@gM z^KtJ7&knFrm*pQl8JqA~NQH*=*}{Uy6b>_RDYEmm#sq_&aIgbTT1(ACqenW6exfvV zn3|BRetBMKEEncgpKPx@E^H0@Gu@)grE6qmr$K9BOQ};y<3m}r$oFpWgi8+|c=u#p z3bJdq%kSk3O+t@>@zkP;T{4{4YBcLgoJECh#$soND<8dRrIy-+U9sZ1c=qdsqxKA5h`)%Y;H&H5D%%ExeXbihBc9L^}y z8q2q?!R#$vR)!+r>|s%gXWXaypGC1VyVMa!Cfr#=V)^ z@woU?8eV)ovNPp*l0?K@Qu}XI5oe{3;ORbKbdUy_2%{5Y;bJt&`5qDj@3=?tw2*Zi zwwP)v$S6LQH4-*{mvWAxJtJ}NM9%KD)Sc+XN++GiKOWuMmh!XCkCD8*?t?{zH~~*? zPS6E|w~q+DT2Hz`Pi)yZyc!x?30SH?jEu3J3;gK|en$PNqO{&=>wBWs{m+R>dhi;9 zbmd>^jqT6^ z23ay7B+1W&X(=0ate zlff)1N=X-81;*xba;Ne?kL@z&uX(QA_oMyRnWl1|w#aqD7@A|ftGT(}t1R;A80=J+ zuON!Y7BtjeI=NDg^v}acP?}X0=t$>nZ|v=^FDE+}N9H4jx${lxSUG$I*|Fs?oD|XY z&-aw2kvESA2Iw!U4zF};ceGml6xM?d-*d9JSMk0*wtRUitj;-KUC=>UTPC^Xi#9gE zj>$js@`pR>M8>Ij((+1jP2q7=+n_IRu3PXob8Ea4GY)$1Q^evs-{e0kT*RA#O;%K( zs#)la%vjjVtLP7^z)j#{(FWShf$(Y!$CsWxI~kmg8RJ@u7gjXXS2--!vo!VllCDIh zY&^tbjAjBx3~C%kR2|m+Q2{~ge7G^R-EGDu7=iW76AoY2jUN_`(0f~R%Zx+tq;(I6 z&b3r_b+*_e(E0qt%!RSR4g4IAEKm9^xa-Op-S^GYX7KM*V*B<#Zi|u^y`J3ZYxvXN zN+WX^ox;OLa*bgDFHPkk=*&^TeumrEcuEsyGnA1=`!{q3KB{)c!2o5ZesB9>Hdg%y zuT{~!x0e1)Ii|d)$1$&=AwX&~nzNPKZ~4@)wx=<96sN7OfF0U`aI;FrM?S7Gy-_fZ zz3S{WHMN`*N!uLRA@eDd4GSLJfFGvRplM*K{9jW}nCoUW8ar;35{VKldp_*ffP%W$ zmA)L>l#}9Elftg!Nq0TDq({aq-XR8+i70uu&MsL-A}1ZqVe+5(+lo9J5Xww%^~Ygp zR*ZJVs^7LcrHS^R8&i%3+W9yrjw`>1l$Gp{kJUh%(Dr~7a)vm@qBZ#w5%Qq&xAG~8_~5whA0T@`x* zVXp~*4n=~?I=6XY(+xrkKq%tnxVUGIf8;mj&VjjivEEZwf2+!6ZsNA= zk`5|NuI!r*Wax=P3>pkTlYnNdZ!&qeUY)tRbNTWtXw4vm^(D%TdQ@sp^Cx@{{q{Wb z;g1TptLVQZ+tOVEc)o|=Iq01(AONs^CIP_ znQdg;9Km=?!@?!Ds5gmMz@=LtA&G6%baB9jN^G=oSFUh<9ksBXQWY$QafgxN3d_QI zzc(`7D|~r|8|y@4j!#_@;=aBn(-FM0Bp#otHjDQQOp{_7N-akC%tFHFC1|4K0wvo- zIcA6l_lO8rXsVqb)U8)X-JVFNr)wdbwV5K(dzt32DSf*{v7?pQWR@2Hl}$!ygZ&XR zA=wfR*sor-Y}0d)m3K1JBf(N~i#m!~{9(yBZG5!#%Ju>`vm&VW&WzN3v!zLac16fV zF401NyvGxw*6^?3RRwJZ3q5P-qaiVb_mO>OXEk?9dSIm;z4BU|g)Qmd8Q(V1ce`Hc zDlJlt5ACOEC{n@{d3_&fbw~93^EVgBEZM{Y)OrMH5hq1Mj7|6=`!=v9TZvHkYtdIO z`;igf*`RtydqukBI_AVS!gj-`p*I#9#fk|T-~ARdN5#om1g}!{T(h-{lI_{=*bck2 zHPm|*!z%59WZV_&k-n%rC!GfcDk0x|qXmPYoKH_?BF{eKxSnR?QSUHS<`2usSh&SC ztP)rZPPjQP{*$j5$TyT0S4PI&+`8d7?%z~t%e6Y!)!hd`Eb)A!ApPls04Yptav-2r7|pxHPv$AK zZMp4eh*JltF^+L!RH-3fQkYxLqjS9J*6_O=4uVR3>#0oM4#wRF>87N8N@)t_e_W{A zl}!0gHqf)tDJLgw8gpcR-$8A)5wYB=5d3VdyM-xdx5LP%H3B zdM^|Ei-?KU*i~ikTkRxCF9Yo@76x(ddV$Q|?UdC3RwfIfwmOu)zWR_;=SYq4kz4RR z)>Ib_?ys$jCid2KID6P0^F%@@Eceqp4sZup$rA5eO2+2xvb`6(9wU8IEdP18X40C@lHiu4F z(&MzMURvmBWi+?)5fvGfOpwf<^b zUt#63lE-8^B;b`(t(eKBwS4fU@?&=jkgrjb4vp&Jtj!I=T54l%)s-_)mX_^N7dIH1 z&kYLypr|UR+D$r|iYAt>CJGA0-)Q0=I8wRvQFcp9V`8N)Q?(1j%*q%c3s>yt-t9c6 zTSsrlnf7>ty{v4ntJze@qZ|5s8}%++)jBWJOo#S(GKnlLJS@oxZ-E%yvji`6PZ&gW zHOG6lH9iVL_aceoLhx2Km|nH!eVeU;jg)FmxL4NMHwjmFjZOD``LH;+f_;~TV=q3VYwQ{Qe`pffAA zdy6`B)+P~a;CZ~WyVh*{;D@2FZ};XV=GPPofwYLXtqMkZ4lDN%h~pmx_M2155TS1)}c_ z()aG;hz0`_qZVmxCTsB%c+Ncqi_}#XKBuOeJYu)bGTQPXG^jW2I*f80Dy>Aky=MCZ zD2Y2UohHotxkj+eb8ms(bPJ7@jbZQ|)sZMR_~_$@_3-IEyk?<>?5<_PYOVJmS>&WZ zag@DHX0PqP(I1GCbYc4oZ0c?Md;xjS5yeiatVFO#wPdlXx3QeKxH&D0P#!VUH~AkM z9Qj98v^ooOl493=6513lB6ozCbqO=QJf>3G&-{UAa&UWEVO6f~So_Xb9q{6QxQSSs z8Mb$woy6mK_cxnTqskUD!X*&S9j|Wjae*6*oYxQG_F_gr_t3^g7IP{pWO+i*LuR=br z6YiXM%N~6^USn$BWxD6a;I}+pzkRrA-5oups?iQeA+XUq*X7G3-Ox%&-U#Etx$eQ* z+QFLdTomD}Qs~dze9ED~!OiW)MShKor#nGqeqq3n)TE91Yr?$o)Wv#AR}z%>rPIr@ zV#drP-qte=DEZ3hS@O_%n z5z#oX*!pM*qdfTQow^m{#OZv;Qin&Ov!i{{9h&lDti>2fpA2g?EU?G9aq+E&3coO{ zJ*Aeemp-`6RFjNYwa@ZC9&)RQc?)zZl^)XvYLBiOsPiE;KimFMeUn`7c~3ua1mV)E zaH^IYxhdSgjROLvtI*?5_Dc)bZLbtH^d`pLqJw%lJ>FwNvC&4+GLL$=b7dXcGn5n~ zs_o4Ry)#$VyXpNC=i~tY#>HvvtBvEsv1rU&IVN3-tv#>tw`~rd^!zMGx2Me(Aq?EL zr#bWNdt?14)_0WNk)N=eMkjgA+w_>FO;8@{W8GJ|ttuKz9C{`=OqFgV`us;sM&;+( zE++PKcNtsg08rsE&W5Q%X9seZU+h>wN@Pd8a4b+^IpzXe@wBz3Rml>Jg=X2pDIVH^tB+&u54)m2-6ny%VyMIUY2 z^A$fijGs;KgggW2#c=c3rIg`<1#}1Tj%#?#$Anx4y!dVBN6khp^(Ew1I^0Q>o2pr!#gM5pukaPK>YS+0&{` ze{cS)|6A%)FWmj_e|`7sdH+23?#VO!zs=w806##$zuSC#mA%>S6LuZmXN#_XcWnOi_fKmxrv^eOW^jH(=`hSjD-=3wUeEno~8QlkE!Hry5<4uI916-wGRK-tNR!!JZxN$E0nSJ+| z`2QCNd|nm)XT+>q%Q;qJ)|{+)#$PdTAE%fmYMFS@7c>Wlm;F;#l&x23>S($wk2Gd^ zu4sASuRGBe>+yAJ`=tl-3mizycBtKx37vU{(sZ&N$H%PTl~^s?-m9N&O(=9B1v3L< z?>{Iu*(xH0760PBD-=&tjNGSJ|5VgEO&&Bni~oZ-NfIRfZ|S7`<#3?r?GEj&yVJrP zG#1Ns8E=%lnw;kK$styd8C%{<`&Sko!8$;toeyqZ~g!A}tF zYPrrkUHhNH;vV(1RKGoG7wb8i;U1G09S7;&NEe=@BN^d{;Z+5lrw!NTFF?nQ|X3SffyqkBjCzZl|Uao+Q@r&MVf5z*3 zQ~^lKur<5i`rf-nTvu-^XS%iSPV%DZM(bM+L@^Hf$Mu>{!_T$dJ?W280Z&mPtXfai z<<~a1v&!Sg#qPB5z@A(B)90#I3~%F#n}p&8QUvUTpRdfDb>?^9zFfVsb!L4=UE8U~ zIg%Txz8R@t=JdJqjo0V2rrm1Px*gkS3oTDCO{T5=<;wH&)YQAuP1K|OIu9NdI4wJK z(Vq2>rsl|*+Ktr6{P3lI?T_15*<}^C`RP3Uo`4xfZ!6zm97PEdxG2Nk%d@f7I2;+`=6ks4 zSRPBv_RGl}mUOt1YkLJS6mVt4G@VT{Cnjb(OFuG3xE8;-o`KGJwb2vyy+2$=llEE1 zo>+I0yy&c|`SZ^49eGth3koUKk-SXRu34XeC4pOgbkDKG!^wnif$ntxWo=X)cJYou zZg8mC@=+XiSXU?**5j}%lFQ3B>ed(%XpjE-3ydVlUC9u$Hw^vtw=VD8tO9!YvxoTN z*Bz|xF$)v5VKH!DosJDkHQa(mCQA48SDk)%>}d^}7!v5|X~}Beu(^k)m`eEYnqFEo zESh#f0G|Cl3EJ__{MiWJlKp?LHLJq=y5dcT7mNOvE=Xy<7T?Vl`0E#AY?uDn(NY*C z=5jhn>G!DJKPdRsT)dnK8drpt&C%^{t+Ya;ojM+&>@MnXAR~0YENJ%NI!Em|bn}R? zDY~|TciiL=H$csJR(+(?$=^Zev^=zoK)5qnMHwBNbEPp|wOC1Hz-q5%syT5H$6 z8sN_w5_zS#{uw(Ccz}zTLbLtJ6c0noqxG7FwIZ)1(A-e+d?*^~m zL>Skb1d|EXN#|(PJpQo<^$%j!4{)b9{hPUGRn?eD1EA}zA6~BemreA|5_qrNpK06P z4v9PK;#p;u6#v!TK8+NK{{+-yr#)RFtL~6n(L~ja`(ct+83lZbNXzfef6@JQQ01`g zBs+4+Y+XKh`xkniKAB$uV?(9?X9suVd-Y$*Q%_M6px#rdxMK@)o#&{ z?}Epu#fBBLf#F(R-e_X<4U&8r)rQS-Y(hU)`p`qME1je8;&x7ySNsTzu#|CV)#{LW zz>?Wq`FA>_+TGu^9-aE{$C*Wpt8f!juni`T3ab261u|~uPsNVA;ZKFGWeCe1O7(Mi zzW8VlecDd1H&a8AiXV7H4){gw#Y3qx{4vV9o^1j;%DNfJ6cJ>+rJ#_tp5o_`uP^BD z;IZpy{kp?_qh38<-}<+IqcIkZbS0v577iXLaUTZyWvlGL8l2{uWo@fp7+iwtSnuQN zaZp^NB-mRD|uw94U^Zd2lN5( zJ*D8Cz0d`{X4S7%(kwNDWRz?mxR=!Rj~*5Shtp)+#j_Vvr;P7syIXMJhBXx{J-D;= zBX1NMn=CE%j`~C2nscqU9qsza!sn@qrKPoXR<-EP0!Oi6EO$?!_jxwHiOn!JuhI|3 zmsQs|?Ls{>`9vAb7eawg9Z@Xp&4OMJV~=O?r-B z!ou8p7jV^&@q$8k6QmtBJys}Ervh7GqD6bx31OKEsw-e%BfzhnJp451oR6hkwWaOA zac8>!jzWi~w!NC! z;M7~-Vj{oyqQ-I}Te9i+pE^S4Sou;-5Fux z9ev^ zt-BV~)<=3IZ~a2J^oQ2XuoSeCE}OUUm68n#s|iux{$fhy4;1U#iwyrpyZT#MHXY#Tn;# z$E!xcwnxZcIlcrk9e>P3Xaww(z~}rAt=CizLp8JXhJz$ayTb@BsacZ`uGM31oi!X7 z>>PJlpyT9{zswdpq^cXg_-Cy6Z&UvF1I^Sdy}Q>$b>fu)!s5l6|Ktz}J_mGsi)=A% z2LXGcFi3JXbK$#7Ha75bYR=o(A75cLXlSGl`<5XUFXRdAT1|3Y9k6)}*4iiX4lDm3 zv^goy|4V|d(?5w92+XATH} zq8}3s`_FXKO-0r)A-&$yVnM*q0%Oj3!DnLw?6nuZz)` zn2*AB$Nt)JN}c5pYU;vXP?L}#*flNd9^JN%S0cy=5B#SDo+Ilj{nhIiJWN84G?nNm zOkjJz&b={tKv>_0|Cp97?QjK07aeRL-IeQQMuP5K$BQOYY`|Ip$aL?vh8nMP@8{=5 zI`sb+P<-uyMt4N4I*`Oi;{x48=Ww@}^1(D6E??aa2%zFRH4hM?7YchEpZ&WN$k%t? zO$x+8heWVpveBXx{lgh$)lm@(Nboi-!v-i}aj$Ct4dKSPh#UJ%a2uZCPHTu#8U7P+ zBds_8j?N+fu0p-OpQ}mF@_q~ZqngvBXfjJjpLvSpHYuan8gU zk@eXHG<%%dTGZorHMTF**PE#>1h89cm*{6^xbHzW`5|*gH5blgb1^KMbSNIFuD7=& z%_tFZc*;g{(M#WVZ>=IBcT(V~C39Z?f#CTMQ%!@V`TtQh_~IZVeQrl_+^)8Ev4?Tj zw;27KAf)686AOoWRT)ZqPLotEt)k(WlM@m|+A+L$l)oQ7LIW2n^b0uZuHIOD9_9@C z{rMp=8eh+(EB5*Is5u+<-{Sn&a~|R@d3R)v-@BsMSt?uiJZym#&IA2uH%5=?easW# z<7>VRMSRdBNf0B1SOFhLvqlZm5PKiaJxl+zU6btF3nZbF#&kXr2<=^R znCR~4gpiq`o}CsaK(SnVLbH*}k4q`y{DuD_c+65VoL7v&0vz3Qp=uvFZ}uVDHjpBL zs6rutfqWqe0C>!{t&{-=;j32bO)uq zlh!~+*k^rQDt&0uJ35A$n~OX;=kv-RBKMA~Aoe430T7Rfo=<~_{gVP#t79 z7QdBtWHDLiM-z<$alD`dEn>9=;bi|lSF8tiW$hsM^+CO8*T42@NhzzPh9}^hhvjpn;si!wlcyf5Q3AEIE|*te5pzg8j(|=|M?v07TW6Q%oHDsahc1_$=#x_c=P7 z$I4N_H&Kv!om%p)0y75?R7=+i{|G(Qbm87r!!hgM=E!UwA#NkqNYp;bZfO~m*AM@ZD>+>v;-dLe+BsG+(GFs`Two}wK9aXE6Br6 z^uk62M@KYqTVPbj``sqns&!naf5~+5V3(y({xLi1jTOB`mzCvo)WY02f9}^^KU@TX z42dv3qS3ebHft}HT|ps{k=Q%C=FV61wGvHZl`2xVBchm>bC`!R;Je+H`nfZ0>+YyMe-7~^=A_euwx2L0jD(n&j9c3V&jU3U z*<>l}_AlY{2vx^lk1>XiYt!vR)zR%M_MSU|3}SbjzzLzJ_0p^{BShm)-#ElfaoRz( zEH5?uC!Ht8u;3f`|E`+h%hd-zrV^Y>rXY|6!yu8TK{*TjCLikdh8i>HtB`1JLs06s7e{v*HY zktbG~Zdc426#izSa=#(c@j$@(^LaG-G_Et0gunsMR|#W=q?e6}1dS94Bl}kLZgmB~ zOc^B?(p#pYs3y&*S}@K@t_NN}wJ(U?I&b>wW&ZA4;wP#qG5_5_KvGv<@Dtz$&q2$N zQRTx^dZ7Q>GMxl6-|#~0^oKEg=HgeZSq?DH9u;EbMFF4d&M-S`@u5KjT{C9@Ce?N} zbIezej7r*uMz&GXX+BS{mB0UD%3|9E76SthXsm0};pOQuIC_5mNcu1WMh!2;4~c8V zGR7}(F5H&k-iJanE)(q)T&)^s?5PqvjT{s@S@t!L79`V}E!90%w>$)J!7j(52&%hb zP|byq5jj=?uHS9zdWC$RWc13;n#&;(h>`Jux&IdZ)z50s6kRgy!4&-1e91iwYiaRo zOymRtqjdb^h)U`ZUI%m0>X!KnEDtFXed|8QhdF99#kmy72Qk}BNdc7(5vimMaYsQ< zeQHKv@>KWHoa}3PBaLa)=JY7y)g^wi@CV`R{%qxZd1nmfne@LD1bLWyeNZpL|SYGmkOJ2R`L9MRcQoS5#K_&J1o;{ z2GJOcLw^?Zw_f*V)5COW)v2%*5|LSiVhNTJZjX2l%PmvV?r?CK^Dep`)^}6 z=pQF5z0qmpQJgAQ^W|)bMHUn54ui)fjLVFqi=mDBM|!@&mJs_tA)_TkGLU8naeMnI z+Rq>&{?ze7`1<%h-raux5U?0wMx_tB%)(=L+PGz~NB6uSo+mY;A+yDg*NTyKkLg}W zx09kbW`xaV!H9dOyKgM0zk(#tgF4?@|E{U_B8?qD`P1Ydv#BW^=}vg93(%I)0kMn)%bA|&!BkOu@qLRrI>R<+F0+vD+oiaD*sSC zl4(rS-9o+pMqsZ!X=_$gy(IcEHxJ-hCoBtjr2c{ z5*=zb@-@}}{&JWR&3oNLD=!RE{1$-Y{=9gQ;@{+B5d&c3j>ZJHfQ{nDrvoFd8xeUNxpVK{jPN+va0^fzck{`j?LsA# zv)Qo!b;doxQc)j&#SG+r8<;l#jt`p)^S3&8dn9Ie@|TPUa_&L2{b4w`omdZ>a?z_i zRAD%$MDZ}_A3DFucnaO+*#Kb5{YVB<2U>XJa#i5$zJ)H9&y{yS3UZE^RpUW$SvM}c zPS^2I8pnOTv_qj+i1_Hh(!Dn_jCGTudBvt3Fdt-AmiMo$4X;TwByzOrwvk_Ctawgr z+rpvy?V5#ph%kt7fdLv`q0RgaF|6fydh%<0O z>broomk#@IerNC%O22&&%!hEbI_WxNMZSy62j84v44U4OUtP51Hs9U--vQZN z+L4r%cly<~je$R2LSf}fE9kOUyyYr3$lg;G0s{1Aqal(7+ODa_BQlb4I2SYE= ziQ=nB5#kz~dRjLO=+^sCcK%a~;Ijx~#QC?Jv=YI6oP-*&#(#4UMzXge`Jn(WU|I7a zAcPu@-zNNZI1b=a|Er>K%hminqNgV94oFt+$Bnh8jx<8RDkn#V;C!@YujV{V@H|IF z>Z*8vXZ8!uqmMg)UmLT$2JN}bI{KmB<88jU;1}k)!qHI9*;~73EY!a?<^pl@78Qp# z<=jpMg)6K|X-;-VPhDC(lpc>lQtz!7k1yuEtPb$CbG`z@)AAmKLfP->A-PbKxhosj zVv^m`7%$QfE~NL*(dPegcbjPWz{C*1EZ0*EQpMs>NwOQ-4pemYyh9qojqkYaGTfqf zz`7N6|9gBfkJIz<397m{D5LZWu0Jaf-dHXn7)?<_$OoW#{EKC8vx$_L%oh~N#nO0c?Ta%H-)7JIs6*? zhIlDIzOMH^0|Nw1vByzMHaYBtwbG5elgQzT(~y1d%^}{it7xGDN=pZ&V2wTc@fm+{ zzaQ+cooqcLD%1=KArL>DA+Z{S40x6o^2R^+EiM1a5EVZ+4&0h+#h9f8aiVlZUlU(R zO&An%eDAtUZbTEWHJv%gIy+%wrCKcyE-P>@riA|`M_>-4Xo`P9T1VsvI#A}@4NiH&RN)k7&|1y(__^6 zw7Rdv1}OXfZ+;tJr%k6CV$_@ABJCmvswY1rEFzrA&-YXV# z*OnN)7G=g)?T}m*3^NY{CDOon|p|{Xl!`bRZMyO0GW6fJ>W<@}a>QgzY0+a&!ZvP6RJWWDy^BoajJauTS5 zZ)TywK@BPeOZT;w(6T?DSPbI;Cr1e04@@xq)`)GdeN#}s%H#iq3$l!t)0{|^9U~l^ z{e1FI7BKO<)@PA7mqP_${B%9+1R1?gN4~qYpyBA4PXOt8(y(NbpDx=oOS7!I^U+8x z%qNX0Ok6}!ONgdbLa|jUxgHUroMC}uaVzQg|JeRtqv0oPs4&1Pjr!o2&LN9fOnLcy zJ+{Sw5XAB{U^|6P_nskyXbjf(|MBm+=aRd0!nfAFzlFBr=WEATWzJxIyL#b*r#1Oh z`dof`glH$$rTjQQoE=VbuE(Ep-h~4Cl*k{xwoh5dF;MuXHEr9Caz`ZPs0fM87!c=a zzWCF>lC~R|vj7l1r;I=unEvza=sOOJb~V!BxwZ%uW&PJ=LMfn|EPryqJ-k?(ju&Yr zG4|?e=>M}dptG@*OlkEiY)Uj@4LLv!`#$m?d3Jx!tTN^et_w)%QKSF3_-DJUJ@9LH zjFL)$>_E_(fvK@9uJ7Lfj};dmdjEh1`b;F#Zqf?d9%x(vUa95f%YJqsC5`n7d)OpS z20V-lxB+?;;*KX4(FUH=1x~93?=CgID=n zk-yyWn=^rt60_58fP=;+;pV(eGb>n+(4fY2Y#TA)NA1b3$e45DWg3R*Oq8qwibF5n z_j+_fFCCtRFrY}nN(P9iiwkLM`frEL9JUMzwulGFIP7riTg>zyz*dMt@eaw*7*ZsK zBtrZ?7U%dthlB3N!Gm`?*O0}d0y7G2Yw=>MuC7ENMunT)W*f}IzSR%#_aH|hN3~xn z#<<=i)!`aS{{-N$n0PpoCx!-G8~IvUVs}$nuNc#{8dxXic(-lTim2w#CQ91o$~~IY z$H-Si_uO%JI>lCKSEn~rtmROGghk4#MownUo;^YSsAYIVi>+J>iVYE$1mMjQUUS9t zxT=+Nz);a1)4gz0+i;ro7>^`lCdl6d=PUl|4;Ax@`ZBZ)`|}10{$b&`{{glJ2{Jnb z&TUOAhs=C-!(k_XN3XsBFY#x(s^0S2yYk_pPPXs&zrDA=c@fQgO4VlVCx|_;$lrS% zeEM?=i%aA%6cR%+I;gdn*LDto!+XA^R>k+0!rs1!-lNa$P2YlZW|$mjcT)EkJudzE z{(IYz+s@r#JpLbTrH3hTjcgcP`x(- zxEUeLltLd2(7T$n# zYKPQ+>+C#Ciop5`U8$Y8&`}HxX{|%%lj3wT#d>S$=1U3g?7J_cbc~oECVo{#z@3q! zaQ?ssc|SjQgm&#ZUGxBHprq66+6HmsO6C#4tsGzcsx;LcA)bn?KqZ+t*O7G-_I6vuNl!yyjT z@P@yN*LqZ_3OIgY#yyY@!`0_`K$H|6L+YmL6?egd&W5~|e@1OVLY<~yxCB+8w_ zHPhAMZ?mhzVgj>t$BYjzjjFz;c8ClMP4j%Y%yb)fLx8`!99Uu=|asqF6u;;CfEm=tk? zQp|_kw;Aa^An~StzVIc*(gSinCN*E_hF-v?XH7@9Qybwu6&lPK`@mS=-EBQA4gEc$ZlcU!tV2d`n) z|5kAkB?@5~NHdFixZv*`!?&CQpi2iJDH`)cjmOW)^RbP(-DgOmRs1EJ#i2JmNAC{MCx7{j-&%iKEe1C zD260Cu;ruwY0wI$LDxT;Qy>Lae#laAHK#$-n|kTYU7t=I+K9h;Z7fiEyxCJiA?7Q_a6?( zCpS(a!I9sRg5qHiupu5;L4TN_rlx?qSi77K+6OU@H?I17$DmSi9;i9ZN%Hij|3sz5 zAbkZ`#jRw;bu`IOh-YeGBh!Mr5SUC(1LeMRP!=F!;3#&ut%))HX@5KB$n8z;;mDbT zBIK$ObHGIxaX#j}w~8g&G<~Hu18ix`pw7aInL|+@w;o7h7p>wuf}rITa=_n(zh>(? z2}wN~a>d6$SoVTyvB0*sqCX>#XRw{b7zbg^4+(a`+4uzczC1N=C>FlZ(t&v|tF#FiAZ zM-kNc{I?-aiBPnzk{(bf+_V)g(Qr77?<6uMF~mULakqd?8`l34iP#VR|E1l*(hr4v zcxyKpjycLz7-ibu_sBu0K_s3InJ2P$XXu+XfXbDM* z9#ZIA9uI0wd`1AW7dHh1$8sj3r#L;agD8wFa)U|A02gv@%z-TKm z<>g=g%&h>F|K5W%ws=(8g1pdj$jSErYA8?>k78>-u|OY65ZnB7gzy89Q-V6?KL&I1 z&yByC(3>vaoHXPqkk}lA8Qu3AA(i7=H_r%42cXU(6S{=yQ)qxw-Upfr_Wxwh9|yyR zGfebn(cM}ro(v$6&o}w8PssS$9}(R%fbQ(?Yi>jSzURmv$BH`S=e@aGM__&Hf(l<8 zEGD@vejqxie=Lyfj7|gMb$p*2P}6LoK|2GP9<28o$+_>?L5+U;iUNs0jJM}e0@-z< zcrk{E|1V+B#@EP@_zGb|B4Kw>)Jt~lqq-o{u*{7H-CU^7W#kM zMelv_m!vzcof!W)M{JLYK40&x@duPoErTYqbOa-gAzi{p>qZ!S)2D<(YSeAmA9KM6 z4-n4AzmT{;RSbHa?b@RQ9Q@CP=QiXz=JycpcWf3e17l?;l!{lycK6^@MZ=jY_$bHv zu>J>JuJ$C8J+-&c{-DV|$pLsDQ!ZBXX;b;okAsTg-a9^S0nlnbI!Uc*rO><;f;lMY zeJYOJfg;D>zI`mldI#z-cx}gzvr};54*|y`?6Ngy0|uV@I4)h5BS@O9%_0Rsa$9j9u$)ZCug3Y(9c#a=uJkx7J%Io zT9C*o+7|=@Xum@@%W@RmrQidA9(z~?w@hgM|8x$(ClV13dmct&;ERFiB^uj*k_f6x zZsMJIEYz_hp2p%n07tK#cIW$f0Y~gmiQ~gIWzYL%~RVaLVZ>UnV!NvWr`5m!vSQG}B6mBI9 z*1iIXv7+D7>G6%Ao;^s1Adye90YC!Du_?$@Z&g3Ic=NkqaPPCRacgc`k|zEI2Xg>0 zgEYu6St$cPU{#kS4&Nb%OxvrgA0Od)_2$Cii5$VQlLDd_7wH5g9E8@^y|xGe4R-## zp2Sw8axx#j=vXQHz3h2yVxiPH+8gUu7|en68fo?r;PHi+kRQY@@&^@a zrH36I5S{u0n4ASR18sxWBd%(tYiq3(JU=6fq5fYHbbfyEPqcSGAmiNpkz2{P2W35Q zU(?^i@?SGI;5Q)5hcaRsWkt&8#3k)rd{!UBTC5M4sht)T;QQdjJ+CFez*H3+8kE6$ zPe5Purvi#Xj5CudlHj&uKOc9E@8@m^R7nHydP{~vCHp}lJ+8dKIub_seV6a&@IJYJ zjp5O01*cGe@{-|#Vnm8w1bieoa0X!ZqNUOhH~VSY#Mpiy$v@be;l>zLP6|i)q;kfH z?T{j2P(_5Tu?vOW5N0KTP>H8yZz$87!1RdAClnEdH= z3uAZ%JsBxpI?)E8;N!@s7lQAvH!XRhtSCH{vy2zY)er4eDDzCZ{gz14!uv;`6uj@J zwi=@RJ`4P-bDYFP2M!kzIUhuIVX>qqLa(&Tji`p0pW*h_&tCLv?z%J`du0|I>yZ!I zL(jQxGOZBmjTb;S@D(dQqh?a}OQ~Hz1-4AMsP*Y4%2t@>9V@yz}IhXAKLk;*&~M2tBL!Y%Ka`vx&+I z>FQ9T4t%@CuQQBD&Fit&;Nj&j9vpo~gK#IezU*5+&~asQDK|S`-Cd277OC_`;#!YN3!<7#v@P#jIwkjGzETKG= z5mE~|>Emw?6+lOb^B$pM$z3Q(KoS2cwL|&jQ8@aM1`YN&RSCSv2Otu%nHl4}68oF6wbhrp3T1> z;Joav3NY$~Nr8$83gFV~Gl|kZ0M5k-=_>c+>!WSjYaO@GCeakdTiAY{-ZY%{TV|lW z?i;bl-t88jP&hp;#D^N8ywA9`aE_}Jk1g81aU}Ko6>auhWSl#?uuFd+R@gtETFPR0 z*hhYPd}awfWt8%WMy#WOIrC*fn3S+xM?;RgEa)TmkhonvtL&6z5Rj7T0kj=qR%~(5 zB=X}nT4osx?bgvwsT-ESc1$Q6^Fn8AnEiWBAhih*1(mF#`#E#}J7=`)R6RT7Tq z+^dOlOLRV(?2KTElVRX#zqNnNJ@$$qtduY?&nE&3z7p4o2M$oeTN7bBpwTvMNc7U5 z_G;nJO1`cWLsMGm)=Fg{OpRLuZ4M&me{t6kZc4Gt#Qg7ku(ON{KsIq zL_K`=^)TGS8=(9M-VH?*LT>RH0RfSyVEA|pBnZ_Pje^4^UB97D$X^GjyHL0^OTbw+ z%~0%VO5m&|!V;K5FVn}>m;)faU$4XNg&{M{Kvkgl3W%om_Od!A?*nb_Kq^nTzJQ^p z?boJ%IFuE&uoymo0xzmo%=uE44l>ccOckq&;)tX zV&1S3&w8?=3YAl6bVyC;6)cCB&qtIAvJ?N{q+bd?ZXAOE<&^&4gdN&hujom^c9o8n zG7?ZbliDP@on5b&U*62M)}9>7*ligi70UZpOo;NLD)#Xr0amwV>2NrjcnQ{FFMsd% zet)+cMk;`%14I*(iu{mu>o+0j5qTk->^algcABGg#y+>Qa za4vc|7>~zFE6AW@t1BEUD|bH|*nVs}cOc*?B|+>+hW>Yo;)+*Ru17Ev!1F<5i8R(7 zAKKFH{{8Ozqz;?p2q!QBhHv@pFl;9tN-9T#1Y8%ZLo(FTN1Yb&ML}J1`{tFQ<*H-D z5WDrPiVtU@ke@UDtGH>B0EXKi@bRL~z2>aVX`|E9ul+A-D5y(6g`5~aJRg27HGHeYz?Xt&HqT9zhqM9`nM9{8AC z`XA@8b3nV4DtwuK-;X>2qHE0SeN12{U>Y234vI2<4Mog_da$W8ufo^%%n&MyBto(_NP7 zcp;4d0-n^vy#U~nC|W0=y<*R+%nCcjgEKsvNP%L^Rr(!33ARs1tfu?_Kp{cjXT6+T zIvfQ;nVGn`_n>l7Pe1fAF|qOqkO;z-wg5?!|Fo8_Fn3>3kuxT&X(loZO^VK#)&B?c zr4tbu;6Z=J38oO^D|i(Vpo#RjPJ<9uojb=ACPRQp7W!|Xl1OiIh519k;@h&a2<;*` zoJ0Qq-34R8*CLUM-XD2Uz)6d;LhBCnuAmAn{$*fig7o~)2Aipkj|TOHa_|Kq6%~P3 zvR^4kA)IhU=4Np-gWGq&H4UvRJu z{-f&1@7r926U#i2s6LP#Urhb}P%5QT7!5=5{%n^F__&#njNAob3P6`%Frj20yDABV z2@-}IGDdtt-$-rx*|)$22aPD`jo(X-T*TrmP-+)iNzMahC*d@I9Lq5c2oy|Ntz81P zX$KUq)LXWAG`8u`e@BBc=-WMJow$FyWj~`Q_;!$71z{G)KnXNrTzn9Q!AH!?RF=Y( zDZc_gZFS}6M3>;Ke@=tRC*=e08y^UW5wg_?xq-pT7!E#zL@D26#6BXcPH26TwDu(0 zWB5GtPi_35Z@yzU%ly!lxZ+73R_7wYF}oM@N7<6)lzQ0I8hC)NY~SK4$w+yy792e2 zgd7E~KUNV4v9S;1;_%8YvAoA!g%o~xKm-Z+o`{ZV(!;k9Q+zBj4VH~V8FZP(Up{;!vX#987T0&I9o62Q2us4`H zPaEA*s;4!J&3QSLOsP!gP7s}u__eKi-CXJMMbdi(g3a6haaF^5$U(HKz`RtDv#qo; z&axfz866*l`$5qBNkN$H0V&qEJgnsP;;?OddMTU(C@5PmPL=PVC0A&YF4viiQK8S0 zuU+L13M0nubRkwxd~YEz>Z0@JfjKh?iAY<2+qd%SfmT4D&^N{tmgpw`$ix(G1NEAN zOr2%G62&5IltF=n^v0*`A^1S*Wb|olOT8?#Rw+JD5c?SzTr%vlOT;!OO_m&#ucgxtW3)MODVGzpqWzyYItm zO*Y`1OHVN_mU||0C-k{I?yt2VDOz(96V%aNZm;)1*i+yDf5^Z8pL3~q=Kl{6?iAC} z`~PxXSG+0uBw>fqbpK9sg?axhIXyls9Htxp=lFU4b8Y`G$%p6Wzen!IST)_CGycEE z{rJTuOj#Eq&VURms>BSpE3C#MD_t+$rPy`JKgG(&2@82WQGv;Z)cZ9_fJceyNfQ=U zaM=n!)WCt+_5drGMH1Fw%KsC#Cd3%BkpvHY()GBD*FmiL>#z?LsGT$Czj;&^v>$nL zfjJyStBl2D*06Kyz*CWL8W9Zx?kx*01O!u!4pWx#SJy#Py>?c)Fg6~3{G{PnJvph`UNX&&Dwb& zI)?;ud()EPxX{p)2kRej5Co#W_&VRJ!uyw-e%gc$Hql14?qj-*BJ7fus8rn zWF6>Uij%J_q3FEt2A8`9mMtcHjJSr4vnQQS9{4kDvWaclyCdT(Yp%gz94JYy1P8cO{)1U|r$@@hDE=Lvh0LC37|Z%QTm#(%k`0>4h=&`ifzUa&rF zW0>hlNjT?80{mm6d~b4{r`Md_6pQ}c%a+WRFwCG5<}@qlyB{VV(c0t#QVv}}1L9PJ zlM{W7zwJ!8M3lA=19OmoI6y_k-4=LdAKwb^X;eS?1SBUUmi)-jKn<_+he=D&B0zo3 z*~95qk7~xKb5QiN_J&cK`*s0+t2+5W44P1^j{Y{}TYCYoPvGRS+Fpykkjkk|AnYlR zGKJp(7_eQzSLZ@)8|Q@YC4QW0)qskUfFL{lh}_z#%35b}Q%qj4DcH6$Hc=cacr$e( zJt6@C6cs#_D{^oA_f*>WF;(Ezc0T=!K}vH$LHS_0BPlr6XF{m{n4El@)(Z`<#Y`Dr z_KqX)G2=2a^>R^=&6Qk^I?#ZUR`4WrGc;J7fsM1&VSfQI`tmv|XgyC#ji>zp?Ad&t z->RQGbI;uV)D0qVht@pN>)ssd7A__8U}f%rzX*K#U2K9;aZb~2OK1bGvX1_;cnT3f z97e%ogyd0xE4hR7=u?cZ;ZphV!2Le} z0JXwDp2A;bfpp{MCj&g5Nx?3jI_$w#P9v zGsi0-0Lu1J(!+i%D(etPd}#B0wiE&Ei(UzpB;N%k&xx?*R0hm>@8Vz{D$ z|EC^F4?ZpI!6+PCkA&iX4UVp4Mw2c-L`fEviw{eL7y&g?c;(Z6y4$I6`k4NDO_#Q& z@Uunj9C}T)s!k6GYLiD4>MTt;(wYtpJo+kt;Rn^+y!kTC3*ckUXqI~c>j8?X9U6Qf zlv$cg1QJ~wnw=p8#l#5(=E02Mf1VRRRs{bASgmpHe>~ACD&_;iJ`k*@G&2x1@+~7{ zvI~!s2|{MVbLT~em|crNR=08*$3sAN&1+p)$QOfZ-veEGSt4F83l231I)}y`$C>U| z^a=Ry)20G)fCYQpY>_1sLmPn*`eKj+R|FWdA@_qnx@-=8&4+@M^FmU&H~x!3i?L+T z#1rxe3iBWVPp%~5Tqg$}K=Ey;zwAYd>y8&ztjqc$ zkBAl^PFxjz&CA<>5b|Xobme4|L3Zx%bKg(6^K|u(^5kdvUEYE8y&}3jW@-R|PTnO1 zugT(&)XRY1lwrBHRuYJ!hh(l@W6lQPPR#vdS*0zG+yUc`RVH=GH9?hP11?^=*bK-v z_bTP0wzf#xIH3;%TDB@cbupuChYfy#i1s-h9@)RH zpdA=A{(x2SfKt-@($~2xY#md_2ej@dj0b44tu4HPH{ZbOd1B!lBDpfxl*Sq$f3Ab| z6nM-Rcmg05OQ;?iLGNoFGHMh~5;$EAZZ0C>_L~cn@K#D)TnsX`oIMrhAm5C0Ug(!f z;~M%YGEfb4Pzu4m_yGga!HVDWA6dn3Nhz6!1AODE4VWtU+yrCHHl zZ}hngE(xjrAn~^{UA_`woL*Kc54Yv$x0Ld@1q4VE)@KqxO9jUVma8mV--)Q&7z)hN>;gS=g|cJ|*&NDNI;C zGzYm}&$kQvINi8ya7Q!KUvy`qnn5-_FllA5XhbXhQTge;_NV;p77zdzB9Yy{e~9nF zp`H`FAm=~uDjg0wuylkPbfOG~=*yGVr|y9>&TDpKVa;P*UE0HGANT&MaJj9qPh2fm zyH%v}Se>02wGK!o%COZ-t!~AeHIRi}BH#Zw@Kn5BxFr=5748Kd8iYVNpBEnk$__FL zY2|#_>PGPWV?8R@S?h9a3{Bcxf-;i5oPBLjdmJ(q)jJksvY;;?(BIRXARx#*f;RDG z71*p?>;eSoft@Vfh0->A&dP{{<)qyuv1sJx7?tkUW4Ow5^L&eqRh zyANX$K$b=QYutU<=DN5WF&Dgx8Acn{9*O0`Gdg(?OdjSV11(-iZr@+5#K;TC-{`FX zkwlv0Rq|K8T{8cC0K`FqQ^~`noGc^pSLw{sWB??6-_*ow+Ar10HIWWUIfhlk3q*z) zMEVA)4fHs}_4T(Fb`}Y75H@sNJe+<&WFg0D2-R3FjiU<^{%R@>X$rWF!rXi3gL@le zp;?Wnw~v>%q_AXGmbf2(0_z^t={*PIl^-5PAu%~FWf2t1p$;1 z)c$eySj=d~7zdzkUOI0NAq3B<;gPAeYgpdJM9;Y8zk>23uA5C9}QYz z1AK2rF&|{u66GWU?z;DOps474yx6jkNC)sp)BzlOLjl{xk!Qr=At9&uA)pkmnS+RH zgUA)DIRY>Z)JR1CenL7jP-5)8J3L`1sDC1wbu+LL0jh+?5a@inij2+1Zw(w0Mp5tSd#LbMj-I)cUNb-aUo^39 z-i`y>K!34w56ropb{WgweFRRwCLAW>C#4LEu^f*bs431WDz!OhHNgAPXLwmEDmgA8 z5Qo0s{&J`Eo^?AsDy53K2@le4n6(6goeW+-jjFX>8cS8@+Ev{9s04AiZb~@p64^@)rfVuRx~- zM<)C#Lq|kDbmWch>r88K3`V7J0>V zb!A{k#7FZ+Mgr#G4o0!%xgnTWsX27j2mwT4L~g$UxdsLHR@bPW-@gm@;y;=C;5%S3 z_)r-xhPC-Ae4h{cLiBjQ?!IvZRo#@%Z>NsqhNQfM(Cg{+OmdQ+%sA|Zo((jHzT|t+ zY`;0P^Z(PMKKKtV@lW!h`IU|$C7%~G64aXqaKU|x{^<@V>ET0s1=jHc7Q3=C2;Z^C z{BbD6{?k(KKk(&$WH@4APM2Qpyz=9v0E6FpLiESUnNZp`-_)X2FVZyC3ZHp_himwc zi#jCo2f&S#@(Nk+01as<0-wxK(IN zHt}PL6(S|$^m1Sx#n5NG0S&vrXsxx<{XeF(j&%{+-2tx(zWkqS!_}+sDi{y>R96w1 zX#x>4z^7v)2Oz$5hrbTMgBU(~MaUqs{hk9$ug=cV=lH-s5id2-kZH>O{)$6zy$4J~ zW%}WF<=DncKwhL$0LLC$4;DI6B5eQgX_Oy-v32JNU_}1n3c!;KOGwQx0UTl(K^PeP zWc9BI06<25RzS2Y5mE;*GP$cFOtnM>_iGUek;8*!APIdfsNWx;C;j|GnXdw%45y?Z zS_MuARd?V?fk5K}bY8tb<1Y*bsMamue3n`kXj$+WhY30M;i&sf1%PJ!4h9iWn0|WO zP2=9iCV_+)FSVHom}!Hvh?^)O0{`iOwOBv;-&Ra`Eog< zfg>a3%~Ts+xYlP%(|{k*%V|+yMYqIXWBG z7Xml{BVS+BgA>CsGzpKYkMCZ9@xa2<>8h25=)dR~ErLHW{Y=m(P$KSZ2D$bw+lN>_ zpK8hO`G9m09OE$KIiGwl{;RbDKnWQ=L8S$KW$OU{>1McsG(_>4>G1=YXAL`7@*uqa(`XM=rGw`ulPbJg7w^e++c|!3&Xswj{2_qAq{i%7FY>O{!L2`i)EucH^Pb8 z>V)rp0C~VTf>QAitnnZXcPNv^_ZQ-Ky@r$KDgZgK8J=C>E;5Q39>ZdTBO;&B33R;E z>*#x`ym@hLc~cH?ZbHyMa{|p%b_#{S(G>&o+O^pnH?^w;t9}&moN$2jF|Yl$V^VzF zAlQtUP5>R4_6?g7xWv%iv}sB(1-}85?(muqf&V^*6}W&CA*bHouj=nTUL`r%J^K5n zf<_A0tBQ~Ij3CYV-zAQaOfTqL5!UcCfFQq!Q~&5v>ZKB$LUj869cc?V&uJ0q z^1V6@vxM!NXf#z38e3P;T2d&0Np9Rs|W;t0?_P+P=L5Si3tLg5I<1vctR(qM1qO_e?gOi{aWRqfy4E&Ki~ws z71I4=#C>!c%AX$j`XRXMV>~Y`98U{os00Fq%PqgGtrA>6p^?N{5%Y>+snaSUwh}Tz z*a0zs@bIzA!#$-BT(N4J!mzF-RUnAz$&v1N08uR!7kU;c5^{fByB4GnmIyI7iiSc@ ze9-=0c63bd*q8r)GUjiDpso7z&YpP#i30q0vxT&1`{T#`PXH6iV!%~Gt5LuSx0xDUI58mQ^lcy>l80C5vq2UqAbH$wEyF$b6WL&&K701jjY zmjw%M-ZpX>MBs)}i48KWFA)ODH$^E%%dq{WqBo_~^&>82(FX*HosL`j?xAr2u70MB zMvURZ!g@n*$%yR*J5yD1TWZa92~-;nV(`d66R)tSG@q}OJ9^_07C3#~r-w^Zw_ zJC1Lz=_U8&rD9+>`lJx(iQI-HPW~&|>pbRVYon-kqIBmV#juEzFQ`oWKLG|MXDdL4 z3W|*hUqwYgoUGmQ5zVLlwqrk#>tC?$Hrp25kmckCrQ0+72>{*T;)k~BLNmidZ9W^q zrpJx>1)9|Sjy*6NC-5 zCaM zmT_`Ejh~&EAX^{o(TSFl=Dy%ztM^*kEokj5g%a$`v&{CMN(2js%_eh}{VQyT)x|W& zEA2VFX4Fkl*I03YKz7xr@r_rHkL0$HXPKFH$wX{yqQ$#GBj0R2x|9;+Gf`B%vHylf z>)1}Gpillce?^qNnYKfgQ>_jTfS5Mz{1BsjDu3YDTADM_ z&-sD{#qL_N9!+gW^w0r-`tB;bqU6bb+zn{uug6ChukY@69L^e-xUF27VCh95{2%eysdiw)O-hza>6@PsH#*TSv-}PZbpU&~R2p zDfuhmr9yU_n}F)PtXdP9)B>*W2jv!~INfv)Q-wx{8qVp=yS4B*?c+Vr~&Z~%=l{(}T)&@$0p#XN09zo|;U zhHrfot}xBUkWz#t;!ta(+MZM-ei;@pF6ks*_TdXZI~fT%Tu~@gu9C{Zoe<#c6Ww8# zZ_BU7n)!pG#OsdA!0noMP;3&$D}M}!bg0PMD`{fKo^xB@$k1v^>}l@}!I4m5vR<0x zFyYV-cN=}5)zchEY+1ihFIY*Sh{*DG36AU!7&!+3qRRvby=#`M@c5|~K0bhhQotli zfeI%F8Z`W83_%k-xQh%LQBM|sLSyZF;?FNz+soUDf-GQmBZ^q$LErWX9QWeSkqmg$ ze=Id%<-@E~O-NI>ud#eI1kZ`tqLg*%=@Pp#n{q0bpv)0frL14k;60{P)Kn0Rd8E~aeLCfk4 z3u&Ubz#|h^iL$|9wfXFRpI~bsUIJpOGf}i)CM`P+y6vXk;{8-#+6xsp=(7R<+bHHf z|II75IO}f&>h>>GQ?G7x5ZO$9L6JRx@PvLxgt(^(r~a1aJpNZ>vdvt%0&>dXD8CE( zM8@Z*Kc}vVam!2L^x4#6phbyP-#&3rm2pY0y*}w?0)KCOt6((wXmMj;Qbjyr2mrju zRRw8r7T`LA=mblV7)14C{_hVNCMO!f_CW`)of>u2))O!eWLaJ(Vp5OeGJ$pW!ISYM5vEJgi2dvYzUQjuF3NRuutA*i*7+GteId~(<;2wk~kJ@V^QD9Ej zM78|p={e$L@W6{Y2>$xz!7n7KG`#TO6(9e3)LZ%HxzYi&5z9j-`?Nkz8;5TOQ}R=g z!`aKj7ofpWX$)y$%l1e31Y+qtLM3j%Y4QsqdlF1vdSQbP4Z2kzXOWBm58hCV_ zS7P#2V&~(H@@weE+UJ-o0pA7uMa5}Dfh=?qFM$Co_mk?BRO_>NpYhIk4H-tn-E4fm zO%!b(g(A%EKZv{21^F~Nc>rgl&MJUU1dF_xUvX@H(CUbN#pdO@iT8c z_%b3%Lce~YU*$!C@RSo_&`o@BC3SG^{#4n?C-lQHT4=fA+4Xn_YN)LVk=bnn6^j4P z$NhjrsNad;HZ}|_&|ECVf2iI>g?nERg(cD#@)iomFVtZR9R&cAN%oucW1u%r=#s|@ z3#!PX?kU@g@9aMSDonnB-h>aPClQIedpx{OeWxLl{s4TsK$kBOv1-5B6Zw$tuE^pD zAonOKNi;G+SACy(dB}YAlB^0+obr9bj^0&OS6QME&78Jx=2{_vr54(C!K(k~omi%J zh@~nZHEyl0osj+$F0|$#IP-Xn=l$NXoe(ixqZ6iW>c@kmI+X@*|7>38%b%k_mccwVUB(?}l z3MOouEsS?;6%yaG2&CPcU-GAyun&X{;$ezt!u_krv4DDaPFg5{a8vHi)650?+G-x# zf0iGX7KzJ3PvT*a7nKY;*;tx3rU!q+V?_FMg2!zh-{hB$>~lhXw;Q*tgSZL$^o4zV zh&?>h*z?2(S$IKaVtVYtVptjobw$`7NZ8*Q#kL3evoYXK)^@2)P69vXuB*}%R{O`@ zH0FAQis4&zCIJ-Q7gL5n?-;smPDE-w1-$!u&+a8==;o$@-(*IeP4^%c;gj~WyBF&smPVpkm^aGV0Kp4%ZI&%)t+b3`EVCh9lrVh$fYq~KE4~V`MRTq~UCv`>} zrLg_srvaX)4jcI7&z#);3IzULr1vtoqh0}N(*(Ry%Oi6Cd5eaLKlQDs zh6JQJP6?#!*L3z-If)r-2f>EsbBE;9EKr5>r%u)M3KOT|^%FzsxB^&SMC@K`Gkm}j z0}|o+Sa|~X;1-{N{$*Ey@_;p*o;k+dFOKd-MSefCF2wGH=GVM~UAiA`s0pc7QQ?ON z{(I(anQ_uZn#XuM>F@G_iGE~=kHHx5iv?oFGhUvgM|W(_R2!)pFsI;l5)aEH<6p`}Xf8u@q+f;Hg@B zO*F3fJ`o-1KO)tA%E8=)S~(+m>?}9kqdKsb;2(n+LivVJH0=Yv%b{_K1yq)9^)z-RFp1nB1~z`Lr6A~~8DFXfi7Q;?*k zf`zCDth;>_8*~L+A)MN<4`;3Lwj5aj66mCO1qb;^=$3U27EWSaMO1Kh@-#Yo)0k8E zs>Swp0li-d`9mS(H0cM-X{_dcgy(jea~^@K`M2KoaX>;S%b5yLgQ&S;_79@~BPqn} zSd7ukQLFjT>%7mhem*0&p0RH&qO6<akbrT#~*x=rvH~rYB4lnZH*u{h? zCEoqWr%mMlhY)(Zuu}Ek&w14`O{(*}NfIutDz}pvH0RH$1HJf0AaDFvMKaW;hlRRO zQ5H}eOg1&55u5TS8)MPGyv`x~9bJ?G+Y+kXJzk|Bcm;{PYwb_uaF#6eY3C_Ec3uG{F;s!Td-km1|u z;J}Fi$XBI)FKglL!%ex$#i0;lh*xFAk=?_ z3irj#nfDldFy#_5!ZHWgDk&=n08J1P-WzO~WiAtWq3fkB=h(b+rM~z_pASMaMfJ~1 z!~R+|8hV~`SZoonQhPIsk3B_}|9V0m!G1-c=!+lmoWv)JIo}`jtK#Zq`oP)813y1G z|4XqEi{+QbU-kA79Rvf~Q*R(Ik60(KLrxu4uVmR=!)_gd&NBa*pC%TaR1UR!I2XAC z0ysv;RIXnk6HVC3rFk~2^i3g?VL>@SJmK5wH6CcdiBwb{DfBHec_fY;O|^B$xcMzS z3JE+pT<3tu=#4rFP+c$i;z>2BmnF!!R6hRebMb_$0+n5KI59^8o+=ekN9`dB-IHD+ zcG#vml}FJSB-D}*|K$|&8z5GZn~GAon}-96-U8RM5kfW}x@$3By4GD=yciI26>XJWF5PI=Eiz0%GzP!;v|-vGx+_DcQ;TD?%0)bgp*+ z(2Pa=iB3l;1Bt7V0lk$mB(;?_WZx3l>wLZTccK!Vrn3H|qW9??q{%q`m zjo*Um0Ze8!wSg@A%!Rd|P|A}1evUq z9cpa3cNI=P`|${TYnb(gGDw(VP2mFwlcgxN!4l%gU5lG-@_wD;zJj@bCFLQ|%;a|g ztRqo8M>>rIKW%W>@<5_UCKBycfK-eqXiu<7qE(5F*=&0b2d(8MT(C&;{J0qr8nD7T zfkuK^M)Y0NAk|+PT5l@e$EcyIs(ZJ;sRLtC+`2vn9dYRHK&;2Vbnc7%bGcde6ZJS$ zz5;q2nP>9NAMNH9i9w2`&^VEL5`TUPqUJcjV~1#dOP>+nPm(@6LGAtP)<~m#v2_68 zNG3?RHm8ZX|JyY67~xRgz4K zSH0q(aX}HlwS$u$A=OC~W-h?4ta6v(6HOA;G5?B9TEMqq>j z!;W3!#|*=m_xwvHR*s5&zz&_v7b(d9rv{k}_(+&62Zc9uBaH$9vaPq+Tma_~cpHi{ zI^QkG@7T=bQW(yUTe8ce2jCx0Np8gBL2C!)1wca21Ox8QP;RQY4YrIyWIX&eD9Q;O z3W0)y(jArLl{?KFh#ir>_T%Bz@>~|UIE-S`&HnmHF9txmv?)^2DgqH%&g#0p>l?55 z1pkR)S;-;q0(|9C97onfXAmX`(GC=11;|^*1W86f9793IUEn$udls@DQ#1P~xB&uU z??J0dP=m*wZK=n-HuW*qrsE>Q-<$AzniLfO4Q^qCiCQBHthGo$u=i}TXCeMbdtww; z%PEynL+#o@E(k=KYLnS(Y1`KEkkO%~XbVi;Wf06F)ew=5kk!AN-1f*%blI~^_3^nV z5pV$U@{7w1^L( z)CpvN;e&(i`b%Sd>lD%jQT;U1NMR^)Up2}R+Z!11E$)z6ggjXZFgbeL<^P*1kayRg z?s)q&_t37Pp`wl54&>i}E{${+6*ew2c=_YNsLtZPKKlbmq7#II8GN`0*-+$jfgz5P z2JmD)lPtPC42fbBVHXt`nEfb;?aGRc`D#0a3GS%XE61x^yQ4((3Vcl0KLk0zPm22p zF_7wnDJ(W9kWHtmG;P$KlOLcfs~>el_h9sn<$4&^PhZBxT;I5Qyg8*lG2+t+TFHI) zpdAd!Ey_oU+aWQg)lSiBvIUq45hY^EkB3RkHPOP*d1aC@K36H?_GF32`t>VIJpur4 zc`1u>{1KATG3VuiLN^1@-KY|_{g6^7r#^7QW_stqayR}kl?{{{N%3;qMq>LTs$f5) zs3(i&uR;!yeU~Q^{-Zb-ZM`w{6ffqm>lBfigW|}Vh|7iD$I}IZ>l1-q=3ya)vKH{y zg#-?feXlY@vwZ1XB3FK2aVbPTt9ids#*H$$4f-}~f0IVAS6`y~+sXU4BxD+Teo8X5 zPUSmSN6NdeKi>jF0hD zD!KMV7+beyp`FthtCs?*r7TIB`W#a97=OD3b0X`b^ZE;00peyI0rWS!&=sN}tv z`?-DsuU#D}j zB%yp=@E@eYANA!3qKxzCEZ-7p(VFGPqoa&F#rboe?T-RdDq_0?BGNc8Euo=x2K6EV zyv9?7@|y=x_?$Z7KA8|qE1T0Sb68TS4GLK*##CBTQW7C2XQQqHKl{uoMaAkSA!;UI z_roF4r2J(4_f#p#6YAQW z1W3_-lt|7LfyoB~@71DE!ueqSkp$xB12nU~dK5na17Rq9o_plZ zNQhc-wH-!bi?Z97zr9JO}WJ#;IK@BvopXHA1u^(s8NI)?*=oq zJ~6<69^Mw#iJzRAnfuK`lrXE{O6c2E0Xt>y^JU{c5woWbA>EEAWJ6Y>}^n}2Q}N0|So>r0_X zs}Td=%(G*K*$3Zt+DD==?ku|mp|0jDuHGJ^+oB+5GZlVKW{65Msgya&h(0Fy>Ejd|t z@2yWrt*$PM;hE9r?35dNw_GL7o1E?pGb*4YHQfC3x)93K7XbqbIiA67s(T(;gS zRF;ahtifS5BpV$9eL?`x6JwRHJA> zv8jKGtnB$EF?JTK@By;ol}E2{x;l zr`T67?3a9T4^*Odx|>#Ur--A3gps)08;w?(x=#Ps`^B7AR@7I}n_~Dno>NB|si=N( zHusHoj^$mC@OXYaG;x$el=73k~iAD5CY~m>1uQ@GvR~$ZsL1kL@vh(G1anH1pco#_@lAk&VQ-kp3 z_sCOF$B6(C+%^&`tZbPK{X_FfJ3|LI~M19rcJIujprOTY&^p&5z@!5I{5_kWc zKER?b-tYbNT^;Xn!_7y96h!2C#(sQ!Isb|;N9C*_8g=^NT`PGvp^++GLIa!xwt(PMhgf&g zAp-N8pZkvfz6||*p?1nH$iwI^)efnwc_-SvNdjVpCZ^}b>#+`qE*-60Y*9s#FeIE2 z=DPB_c)&a7g!k7k^tCCzm(h=bLLxo*dzd_17*4s?0nMRW6VB@*N@)KH2V$6Xas4Jn zz$)$_#2zd>pt!GJ>o5netQ>qu_M(9}=cI#nU5$%@!XJNiX*g;0$583l=Yai7c3Ldq z(CE5=Ko5r$yyQWDKUd7DbFcjhKaoL+Y(GwmJ`~LJ?;h$8zEIFZbGgX*av z6gZ>qQ5z0?)=o4ao}F2C!#k%4oB>iZ^K;{>Spz>)0Lf{A!u^XQJW`qn@^+lX0%uqi2 z;4?y6y10iN+9j$5)}UEqdsCaskaz^ytrQ`@9E3*U$8>Q*bhopC-6Q%`z@03$4r&{pI06f|D53OR%!vNX4@AEN*g)w1 zLx0(K*B(~0c~V{#QC#m_pb%{c9b{-NubcWHz*kV|Q8)w(+Yqc@x(DaNR|6eZC?=*~ zW)0+GVX(gtk>-%<0n5(NB*U)#9pJaY3>M!-n6ddt$g9lp_Fx4hedsT06fWM!zEq1+ z9tLIQ|H~8oQ%mFa+SMnt{Oc2Oawg&Lm`D|Ots9wy9 z^>P+T<8P($fz;%eP(rX^VEm2w)PqTUeOyZ$#cQTm#ZR09oY=1TDGgEQhS+nbDbK#? z;zGh0d~?ZlO7AiEd6DS}UVI9UE8ld_Vwec~w6pszuJ`kg^lmBh8VMI?xLDSLQ$6Z%$1`KWeN%_DqfnOMd;9H1$$f)!7YSdZnAE9 z$U5lxANBbWNn%qgYQ>>cF+tVt@h;Cf-O^y9NkUD$9xR1}KSkd%YFpbIr2fzRvVMzN zrdNgWK$-_0(^8iee;V@qjDG6dJukF)6hXDxq?V$MjxU#RQacp{gfL$Q2gOWSABlAz zDeW_2`;m3MNqxL~;FHb-Fn-hh1&sg2M%?y{sCfbNXq;VV&(*&9&FoM6F9?Z+gP4b( z`?ZOk@dD(ic*fJMp{Y8S8>;);c%U}RHYVI|VQz_SiW!9<)2a^ZHe!bRpF<8BNhf&! zM@}t|T2D2QPfDC7TN{dRi}W|x9_uVNuHV(r(lB6O(6~Gy2}QpS9t1NW2yZpY%ahgz z?5W_hu4w`tK+S2*7YW;+gYzcilU#WZugd2SGOGGf_}FN(84M0D{cuEl(KoopE;Bwx zLzk_L^x(?;2l=zki#s_;qd&m;;|)c89_V$x5;>;7#M#^>hry=4Depk^U1S9R>$T9-8WU@cfu7+8bcxqvT@osYq}!}S#6 zAdm>?#fnRUiN#U`2aX=p385E zz2l}oBby;1l|IT?zFm%_YL|l{4#-e<;Ee%hq8lDGF1YLnu=jSrwCfSOb$Fm5Iq(w; zg&>&Py9iaM^V@RoZG5;$9U>)IBIW~s7Wp1)YoLDqP$-`}+FXBapwG7XVcwZ_?=RnW znZ45hZCMIVci$6XH+VB9U-DrN#ug82$~Ki|Cvbcz}E@pL_8*X?kQf( z)4+YkNxbq052PFRL*Q{3Vwdy8`0@e@U?I@G>W1ylscct4xs3q>&A5 z{oG7izQx7!tx693uqN-vKBU;-z7PKz0GdfS2(npl`Fir)vuP9}Tc~-hd>E zijvZk0om{KZB?NJ>BK7=t+D4~1U`TH85S=UF6yJ`iKbPgKxn|zSF+l0tK&OQEjCWq z5~nUff6ESZ5UbGZE|Vm5eI^D6GeP6 zZ>#Uiq{Wd`G;`U;Zq9e8re-5QKz%=<41*%0G6zRG@sol7k6%@^G&#BFx$F90m21E& zuGRjs?LD#pNFu#O0HxGBmvrzAk%_4Wpt?ZIYvb_zqd7c>@GwRvPs*?hU%AIKIn71? zMST|OA`5Z)91M6^ralX4`)%)$fkX$D8@noW9+(G>NEi+V6OIz64daPq*>wIh4JbD- z0^=wqEIzn#I~drteNrU7-xbw0HA8B0tbeZ^c6|Zw3>nKv=d@Q55sqb9FXYHGdIhdo zIhDP;lZSdOj8S;#Tga*saznGIKnsO8u?Fuum^`$nvqo*~P%5^60EnJzBag%2PrTye z&Idj_uh)<uHcmT)?y#M;Nz z3iYtO$}dAFrbFBm>JdR$_ry^^b_&)l+}@83D1Q7z{nX##a_c}6%#zAzh}=F8wzf`` zW$Fh}7WyGcWO3Nh27wLu^dbRcY^F`Ngbu!B0nFhW*i+#jP{)O!b?0saUNXDyrhs&% zfq~P``b~|=WfE(a1i9?;N42u$@4hmZV$5nYI(_@ z4EI|UZT~WY?UPT-J570IyK{;~yFjiI(j+2OxIRZ1nDn!tr;p|@Ge&n}i`<&(nimu3 ziz{1GOUO{><|VC601-}=T>5Vr!-gWKC4pda^ARG9z>R{E9ncRG&sh?-@!z)%1Iu$a z^c8RJvJFMwWtT?r9UI4cPL~ndU4}%&_7NHfZu&EO;Qy#Fm)gT4l=+JT@-uKQ`1rq= z*8OC7dFICiB<_rB&)g5@cZB3aFB2{hodVJ%?(-eCs7H_f1DR`KkDdOf+JdnaJTiPy z7cXgG4P_Jf*&ab&PU~Kj&(HT2cqvy)Qa`Q$;HndRVA$Sc1CV7-QjR@joDXG+5>+5_ zJ}`K+tW`jN2zfvP(HnPe+a^_o8fvil7n>a|%e~e=P)m>lr@-h>gn+>UHAZc=HKZT> z{gcEUOuwGHO&*`_8Ds@X{8FRS%>zn`$H89<82Z}*nhp9i+W9;`ru3!#D!!%@ z7k0_cFJ}Rl7cQmShr;}Ubsfmdz^+z>oyJTrR#$Q#@pAh*=+ndCm~l!e)3_pPD)M)L z*F3q@?n(}oke3lg;ZbobXqC1XIY_>s;y`tMp@7}ZC4FF>NRpt+svIakyDhPCuN1&I zl`MWu3kkZe=n?i~8vj`D0sHy+0Lact4pa5K9v$=Te@r{Hxc`g#UR={oIvJioPt2(03hq zkJvxZ=^1>)NcL@iOi2LnVgDIqW)lqneu1wE*WzZYZHeePIjMWgmWahCRLRz{A1ru2 z&#$omU?_i}U;h9G)TtSkmSmRPHAJai`$!16J@@m%v_?x87s_A+NLRiJIynG5jLj?S zyBmKP>7ZOKB1hajMbOv&W&5G`6FWDS_etjHvVU9$|6f_ab)ost1_T0@5{`eeT!^D{ zEcPFF%53i^aiARf%b~9g^r;q7B#P^UC-(i<`ct**rCitLD@l3`7(b22RsAG7;Y0rh z&2id3O-#WG=5V~8>`F}7T0 zZ`2>a1`qT^iEaodH7AwI`nL|wvpu-r*pvkVjKvUB9gtaR)!R&9!7=i#sfcH;1(aIN z;5`t)$s1qqLBW zDq%JW)J$Ox;uN|Aghnfm3DrTE><>^uE4UyuArD{1e1^Do_jq{I+u8eUg|KJ@xOd-S zi?SES^HDM;{+K-Rri?bXBQMXyve#Yf3cf9>ECWv;lhoxiHi| zrl0uq$gGLNE+Y(jT!d^w9X8R7hAW#sXo%9~KMTtWH8Ao5^>6www({lxfXyHuXPkVf zsCQ{6UTb{hfF7y&#)D4&kDugSMXK9p4O?+&R3U?z17+I7q2SZ8?Fvw;ZLxN`sYCTd z&W1{yFTIoH6HpazDDrYztFh2}1mqSfz5x)sa^y74CoSkGkmk>Eu z*PBwxz(6@G0hrLimb(p>LQP!`86Z;l@w(+tA0YS`#=GSV#>cH}14BC_`2nFy0W)xq z$hQ-*pML04l@|yd#r&h{blfV#{xnT?2{plST^}n?%jMPd1|Oi)U8Z{=%2QQMY+-XO z@TbPlQ*|V%%PPE?>LcA0#rXjr=pI+LhI@@`phH$3`8$h~L>aK!a+UyAB3_ot5?Zt^ z0I+XucdW3}UHMP_L3C7}gnW2lesLAJCMuSVlE|{$6&`exNhbrtN$u*7KL%PiN@RfM zeqMw9h9XD4=<>cAL09a~F8@K>#DD8zDvuozJRd3$IF&(fSmK>2DdXavcF4ENQ5-}{ z|9T!udgF)zl^XSGIDV-@`Jd{0E2h5O(~g0f;&sdrl~ch-U&Qrh+{BLXn?>_nN<*%wRW0<{hE` z0-`rACa(MLm!%C7=A9|{@2L}w1_&i0=r;os7mWUzXMT2{eviyJP~&s@zzJyv0aT0o z;nte*$c{h#B=8A2eHo6wbij2;HgZlu+SGD|%9F9JmmDDeAzMhuV6zm zrv#LU+Ms9fAAruxCsL}4FU+)j!0lFxN)pI%-_hh6#<)}udb=IpzEL=Jy* za+W>u8T5t2r)j)$wem5dT{q)eXz)|O);4{_kUz!+cLWiJXOMXvaMQ)~oXUmDKv_ZM zPK%1$yx;#6o4)A`e=mx=`spvcU&Bb|-@3C{95bQ_C=q%kI4Y#5sYA1t+lZsyyWUOf8X5zn=>6bY`>icGniem1DqeSZP}Bu}41y6h_W9^ZU1ogP6?(m9az0q?IwK3;wz1fvF>A z@7~S6`sM52r!`$x<%5ZO+E{OO3)e$x68_$Xpz9E}E`7tqVbcT{4&U)}`o9+m3QRO^ zK;}Tof>ZKr+1hnN`u!*8P>@2K3R!`sWA8dBHv)-PBKuJ{FOk19ElZ8NXrUjZqs{ur z7_<)p)FQgu!%mxE$6ul%#wBOzC01h-JA!mrBOs6Dl4~DHQ$H1eSp#hXI)2(LUjj30 zq2jrz@+zviF&DTUa2V=$RmxCuAm|W$O}G8f+-IZX)Dd5TAYQx5b&rSNU+_pTl^_rw zH2)Blk`Tk7>ZyJ+oxx&M>q_}F`wIM-PG zFJC~taEI-KmKp(t5@pmPH6Ka2r5=$)UxrYpVzyKpF#UXH`{6E&Zp6AMbuA z{=Bdp;T-jhJfWvUai!*7^p=cDy)nh#;fe_^BA*||FQ?FDlgj@CnfOK&)8OzQCCrUk z)u_TjxBnE*H<3d!eT>vy@R2}yr(!jW%d>~Uc_{!&K()UQP6u4~3?4NOyBgC~kU2s; z&4EVy({GIWL;Q^ql8K1pnl*=kibmc9KR*%7`CnPMD`5TPQ%WkbQfTAjWQ=y+zFdEgupA2Bkt$w&^R0wqBR`&@mH*q8 zs9x_BF#o}jjr-X2vBF_DgTez^JScX1($?^r^wF#UL35E^Ij2YT)PakOG2KcrSR9UV zt-j%St8iYZ#PH1QzLU2Gu7}gb6#%-{!vfS=Yn{r#uB_N&$xmL<;jqpUwoEvz*~o{-D~D*BTKhVq(8- z`zaBU5P*arzYw~1?wXq5E*XU=zlhfs+_~W)Iqnb5(7wPlZwJTWVfDN~i1Bn61j&;CY{_1X@9gUbQdE%XRX*ZdD1G1KBk34_0jK?z zgUo{YU9%);MS!2QNR|fAF~7E=^kxcPZOZSWsyZ4h@wfhQ7TO>;xEC39@8~H_?-~NS zho%jH?m#HT2eyY{b}OU1s%-dfza%4It$hhTh+bY;05PXhP^b;E2Sr2O*5nHGoZ<*q}!?Pp93!6N4={jaVO-Bb6TDfGCS0&(jEUx@x~7 zF7_vETW30y|dJ z#{I-hoS0x6d8n5w!rFL%Q!-o-2p31wON*!rWudaN+6P&O_>DIJeqI#v({6^Sy3NKr^b2_9}nt*=A_xLXilW#JX5 z(;n}R(#9WRvU52VQ2zx{ODklC<+%Af0ie?mmf8LMoYAC^0}-kG!M=wK3pp01Suj&seJ0VuP>X;QGXm#$a@xn*ZEfd4gz4kj~;0A>+8`lpG@(lx@VczV<6 z&6|GR;QNR#Qd0WFLE)c2Cv92_Rw1F6v@4xY;i!xV#AUyFt~ds`J8%1)jAa`ne?l~P zG;H|q@W!r4AZhx5`_V5S+3j6HdRNp30tq`yPum7IC%^ZP9tbC2H_1#ou>tF!Kb=17FmMty0O6u@mQ470`U~K=i0Z%dXG*^fjyx z#e=xDZ#$-|%>8D;nBdI$XQ~6%!z^nl0R?Cfuo<&-5G->!WTA7%hx!=wZ-7sclH6Ec z*gtaSR1~xX-6dC)r)q(UN^vrk-6NO!?5kulGT=Ni4wP>}dNX_BNDpL-{B&(2cKt9Sk#G9oq|6VH`j8CDNTwb#IG)rm9#|Iun(p1x zJK`|Xxzr3COZjJ7`su%+j$j|y6(>VxhChO`bCo~_p)&Ip+P~fbKHSpN{A(m0>r4YS z2*ecg4p13~{?-^YtbXE0S4<%d$+B;^I*zX>J#+0b$RY!GU+Nz*(5JJkec+HtP$h(9 zm?72*CY4r#125zq_~48CqH^(^Tehg7`z6O+Vd_>P!1V|GRqNM3mXrO9E5&k7Ezx!% zyjPHtAdy*r)aU^Y3Hzn~!o-dRN_~D_&<6uHg0uiRer{H4J_K8y;4W`F`@ajy6se2M zsd}+;-%%g+U{UKTu^imlE*a_i~?p&G4RosasPXMU`(&Z7EjS7MRQXzG{w;?N0Mq7cbxjQ^IY z`T8#mIjf`Y37kLn{+4flb-oNH`lJC7AJ8C8{Pt-L0_EQzZ-L2=kq!Y39&Z!l#Eois z(Jz3Qpdas;hj-F_F(&`*k+|4@NA92X8#0Ua)Y$oJzu@$JR1SN^@1C@A0$D4FZG$wnZ20l@Y$fQF%A9X8nEPt zWrD7zeu0iHQ3R$3bcOj|sd<8excysa>$@_8fG4f|5}JeKtg29gxXXYW|4UBk#2p9m zJ(L>6#+S)m)EZ84>yZ8RLZcerP*mU_a8wXaPjIdp38XNAfSnYB&ZLhpoIhl$ci{Zg zSS<+2aIFKDKr;5VcoLgGk8{oF%E_1K#o&q-fDilgd+?u^XjG zoXIb&Me|Kgd`-|W%7LQ~Qs8YV5&fX$;R-bL|Mhs;)+Rgt%N=OUM=pqPHvwpuALs;) ze}uIM?X7-lNu>i(IkbO8tV;weRti}P0$(_xast^`8ngx^S|tph znMAbTfaG8eLADXpWH!}DyLAM*>kqwt@A><84EnDhvVY#eCwf6X$Dje9toF^$x|zmylU2sKp$X19Olcqp+OC|yJ+ED+pCJebg#$|EJX&gW_=xUB?dUv4R3*s zdi8MK_ZBZV?BK$n;CFiR7Y}BON;j6V%C54GM88q5CbLjJD~;s zD+9O<$$pPe?a!2^@?J*@9>6{>*9YwU@3%Tm-ntcC4#mGchjP5;orGTbptPM;=b9}~ ztJx^vxN%<9`zd^=cd%tq6B;8j=oV)X8UUtyp?nGH#TVtJ81NnNu+K4yH&Z$X`jUTK z1+c)jhiC(#AG_{G;mhvC)-yzK@kRvLLM%ByX@_9D*}qOth*-RMzx=>I>xvOq^erPq z4i{?K5_4t*J6K(xhHAY%%!M>I-<`n)HlFTwXFzuTt4M4zdb! z=pjS?t!O7?CMMAB@rP*VFhw|TEkzB9J_euDbmlT}rbW;@a4l~+yYrAhe0F(A#|2Ok zurNKijq8@UCi3SJZ6Iv1ZymjNX)jc~sD)Oc)G2M|5}j*ny{l`%s=lShqmY0QIKl+* zRM1uo9nwmEQRc?UNe4H%;KIWx24EK`L8r(&i!df`|yb6oyOPlzmUt)xN(3 z=`%A?!9Sa`wycTi`Rf0k>k5A{5Xe73dgMea9V%4QZ>A?xYO2IuEwox;d8o;MVq;fQ z=w)419~6fI@iT$!3IJ?bFSX`@y1J{Mma9l!Z+pB4>nY{(&owd-km6VmBT__c{-8pZ zG1Xd1(Qop89H3`lAGlJAv;1J-0*^0~ynd~fMD~g;EQQ4j8AqPcTUr>4-&OKBN_tFIcQuE+{=Z{JF*IPHiy#OZK_WsWL@#eqG9o6;krnS)j z$ct|VzYrw93Fp+Z@QIJm6QXq`{|;EOcluBfL#O`mr?S%`pTfNU1_#3zt=QSu>1X*n z$9qF`{quOuoEfkO;6f}~P8>|#nOzs+T_fq6EF)y#IEdVz#i5_#`YDfojZ33m%PPbE z%HL@CFW%#YY`=ZR{uMtG&*M#Nzrg9rR1wyQog`N7`@r)Iu>RMWP$p@5^fC!lfavTE zm&-Va{R_uT%g)upaTv`zjqbbt0U2cUqqE1ubVnaIj6r0Vt!<@=m8 z89;YE(2k_8zWRgD zd&95LQgScw(el`-_3J;`L%~0b$V%fQ@$1#Um-+8xCh(@I%MID=X6|5DV1Evy`E6)} zGyy4xMgZap+MRk%NYH)Zy9>`&eLxJ3KqvMonRb31$kL$SzSe_@^7h*zLQJ1r`;3%f z$EE;Q9tXkA9o%*R{;9cGt*)OcKp}|fl(v)K|WAEO*3g@L@rz}}V!NMNC z1y?Kx+#G}lawqlcxHj4=eD=s5M&*50xck5~{DB9Z-=)<4$DaDN;YlTSL8_T@$Covu z(Bi?q0z?cbmQBRK7Rrk46Dfu&jKRULr`E47W>*joYZ5X@!HHG`e|VxBnhCz}{?|*F z0(sI0{T_azpTxx-koRE&8W664=I4r904v_GGDNbth6oC#4i4Chn=hCwfb=i#*{00( z^~?oMb-=Z(<-c>fFXF4snnD;nBVsKA0T8Fywf_dLpL@sJi7AD1*Loy~wEqA11OTHlSv?r?7FU4j>kIcAAV}yFe6Q?RbURRR{|FQDqV^3S|3RN# zlD(~m+haTcNexWdl}X6bxB~1aR(?FtO2Su017jw^)BgYx3Py+kIDh|8EOYlV$a3Dy z&tJ6vT)XiHD2RGMT3>dR-ds;!IzEV9c&$MGr)Cx>;3&8EZ6U7*4klPRb*=>h=FE(( z+bWMB-ZuXEVgO5#27Q^E?b(2K0T960002S&02BZKKL9BxDG5Rg1c{YI5T&rB3d(d5 z1g*5RVL?TdX+af2mIo4+qEyfdC|U$907R$=h=u^bOaPG_8_7@P@T*0c78G}p9!RW2 zB=Skbl4xuq2J%45#O;<2*ooMQ(}^9(J`tOUn`oDa!2bXs00000000m(*}>oU^?%_- zyzn8RuAv>D@vVwDLmmC~iD`w4Y+H6(F4Fp)(l*uB>PEAp<|<>=<=(}^B}Fw%#Nib7 zl%iHvdrb2xT~L!f?+%ZZsD*$)QSo(A*QC_yl~o^$U3w@b6#lfv`uL$nO_{e>)h5S- z%Iz9T29IF&#Nb6!DJL*W_f~%VzBgcqC%Aa6%u8&HXni&$d%oG*q9m^@hr-wFyc8U? zrYYaC{bem8u1rbYul%Q0=Fm*@0W{<8w&hj!WUCor)y~)CvWk>F^m>ehHw#t7loaxj zVq%-!og+e9$u5{qH#C_uvZH9eTanYE9dqp6lx&-KT+Lc6ir=ZK5&sgg;$!c(wwPV? zSp&=#MOLgpBu3oZA%=*Z#uCGE%ma*Z&v3*g|9h zW~p`j+`*uhVe%gQ&J9;(jyhb#LtVx`il%=v*B^w0utvzdc;ET5_R?MZ#;*PiE05m- zXUZd^v?JO&!|h>tt~Sn2mdhBv5efDLMuyB%Mc29>N4b#C%eah-IY@OGDR3%kAq{C_ ze7icEIs!Le9h%?tOMlP$H63^(h6dLq%a?WM#=6=jZ{6WFir{@wH~9WPhwsvdQ>e6` zP1tRYF&hyiW|?9lD^0ONn4{w|X z{ES$brc)6!H8NKYRbkZjp+at$_&n#Sc2sww>C3cr**v;co z`(iLHFEPHB5nHD{`lSSImXR^{Xuf`z1p;WI6qtS%>wBT@rZ?Dqa;V&HbnZ8J$rK(- znv2bNV#3E`O`XrKz4t06uK3}zfL?;cnsZ;JE-WK&2)h$=MIaDImZxP82=I`PVX zr9*Qwh=cciQDuXS$sz!aWDlp2b7BK1WRUHc|8Jo-^Ym*l@` z&*O?|5(+YCmyZr=9~}4M0$cy zQq$NA&=fscB_t(9**r~2Y?8tT%F+4iiyrQ#qVM|pg8fdc%MPr3y-m=8FUr5wMLXp4 za+|&}JDGLMrFsj4u+(?Exq!74*1b}BF>*Z%dop@W=H|BMAaG4jrKRTe>|g4UYqD#~ zR!}a!=%m1@NuFL-6DqWCB&555Rxdi0;!fQ_T z|9JR1cw08U|0^3f)?G;Johg4mO22XAl8wt=_8mj6Gxp@pT#4j;YGv#njP&YJc^b>`83JU>CiO;NDuf7e1Gwx=y1JrKRi~A4bDByXJaWF`l4^kIG~+Sr?=FMJkV&BLlHs@*Rsj0y?WhCzlaKX7%_*iCp7+`3WyP* zT#blBKFwAf+|D>=E-oT(GGSH7NI;AXr>0RWWW?hPB_-jp=7vANO*-Rbb`d01!@D0i z{7g-=!Oa*f_Z9(vSY&Zy{k&wo4Vxi(1-MO!UK(gPhB?Fm-ffZWHYAN%e5UuXShzn) z83vdNua%aF+Li-0aY;0=uaGyOv0YE-^ zx3aZlUxi0qRcDe4iIZ7@37ODGST$Y>=aqhHRy zu`{!?XAqhOGa=AY*4Bl!^Xg)>m|iE!t7L!=6|H>}LT9UI=+*8;UNjEagliBi>?Lkv zA|5UyKp)c@o|E=pI5}jNi@Y|Uc8d}pD&i{)#vr}o9o9`bcSMT>AA&*vNnL%=aE(2X zHBP>C{mjsRN9I4OKQJgi51g6%`tt@Ij67s!0Rh7{b}%47Vm5>wq?;wAbs2lKyn~~> zR*xN(QV7(BCVcxOr^bY1jn0x!d~&CK%CW#`P`AzRTzky&hN`GpPQovi5P(6H0e zRF}MR+0#3U6{CrNnAkziwu16m4LWsZ$I#>T3lK}|N%`!4iJYrd`Iw%pg=NBmT=rCj z$3drVempxd49wijVYA4>>ButJgO~~%Gm1>76$(_&5C_+{`&}*$pS{G5d zR2s)6X$j9EO8WgTo<4osD82w~FoZftbWgP`ZhEwkv#RmV?I2v3xyw&0qfo=0^YM-4KCMA_C;jm+cDsH=1TrKF94Q(mx&yE(!JS)^zkK*_@-#E*{yp%{{4CL zHDGUF5KG=gj{~nSH8mA=%W{w(`W{`SbGW&$mpfq%W@j|ywqxoT<=abE2EZ~32(tV4 zKxaWgsU#RpF^djGpP|KqhLeX_oxID7#mEjlobZXn$EMw0g)$GsJui{>x}s z5QB{ejF@C!qS{`e3a~!Rj1Zr$8!-d6{g|R%rZ2v>5Pa*c@MFiK6Ouw|N=h^8D8I*D zO~+6L!&$An@e89V)63`4)hFt}DEy6F!%hzsp%3yKc%JLj*TRH6;7@e{p}5wz7>4s$ zTczPNih5Ipe<<8d`edP{S6sqs`U_4I$HUpxA?Wxb@v{2yLihJlxW07-uY1(6g+0&B zRxsrZF*Q~^1@0)svw1V~l9S*u4a|9dF&?fsIj&}7Vk_?^fT|4OWtZVL%%IV{2OOvV zYEk%&O6N~bNoL|NZ0h@?m{eQ!QjHCMVrgkBP-CfT$*kEj`0Ta2AAaeAgqYdjjJ(Cs zK_>{hh4^)uX?6F0&tAS6vFuV@3+vht`?L;_JN8T)03uj!D!&cXnGLat$F&_p_2=Ln zEr{K>0DoQds;w6azk>n|n`RSka^2-Hu)@z%aqL~*W@_x03A>DQ} z^xvc#-_+;sa&c$oa%UG5U&=pIU>ZqS4ZsYNLm-@_fns+1F&Zr<;4ORI@)G=}ZQl4k zCN`BA!K4P<`4|Wp!?l znfG=n_&ih_e~Xbsce#$nT5pl93X)L|+yyOqsqYT&pD&{+02`FrAxN_4!z(W{txZO) zbu~*LJzl?sF=n=1C9+ZlN=X71mhgpU5{b6cx2ay;|uyiM;8zX7W0^tZ-H z9o{A;{t%t+4iLV4TVK2Aw=I5-)ODSg1O=E#fFGx(>|>*}*9sknCpRuys`9L^Nz5N| zl$hTD9#&GX*0Kvat}PUjE)7(x2=Ji+ARuIJY{j1r;lk5BZ^oD5_Pzb{MQm{!zkG7A6%;$)3D3K!h=F><{iU{gz~slG50_CB_Ip<&Du_rOtIiafv+p8elq9@_~lRS95~jt}tc zI`MlqQ2zUN1$!p2DgGqUs)uHl8#f*%Dw7UFxR)5*8|LGt7l(>ma!|afs56xq2ZTWI zu@X!Q@k(7CosDLWVK+NR9d!N9G(K+R=PCH9&1Jzk~2b%X*1 zNo};!$k-i=ul+iS6r)hYNfGAq!k3f=xwtLwHh2K+Qo5(2u5qtTf(NBqx)T&|(B52x z7vG9PBvKcVeMNzR?eF*=-KA&$Ntqo5k8DaAI0fLr91FwJ{xbs@0n*r;$K&SAUzl2O zR-OYkcZY(ySi!&*XHiS24dT3dpUa#(SWH@42~046WcF=rMWV#Xb~6_t#4gIpC*^-8 zlaqLlbyr^ak7hT8rrIwf-$qk3DIEWEGeLf zZ{kffy^XQEt~tQ$=;(}-R0Uka*`!1N(WB*_(;BA42lYeAAQl8M2I0}~XfXmX;ZX7k7Slert>D_U@6BXb3dsXa)qGAaT^3lL>j9%+F^R?<5MxBW{I7K)B#u z_Tao^;UIHCsVT0;*9AZ4Z$Dz4+c9^rA9X{9J26W2YWi1NU=Uu7ShEE^g~5x9N9Lgk z6ShUGoSj?HVfi?Z#B(JtqemJ1Ms8Gg)jaBjy*6sn0C((N@;KgKQluIw@ewKe_Db8? z#|bYlX=!vTcK!@Fj#@=D{^Wwig=f_;&$U?slAv&g7Z%>vZiJcQA)yg|#&3sJhPsIv z62P4h0qokXV-ZMxxm^bnES^oMQucnS6PU7W*f@%JwCk(Ptp9p3f1E^a_h z9p)+dM!iy}d9^TIkrzvGeZ@A#(aje*GAdvv&W;tA{7E17Oda_ve0rxWPY&0^^+KYKiWJ z=YJKOjJJTd?jPVoDhc3i^2$_ZZ*OpM6F3Ltt6v}fntwuKMMU&Fd1P%-2&Iy{(;y_& zfFXXK-%+leb-=Ft<1oH9XHU)Db^k8?&uEV(6k;M0l0kr~AcRVA4G|N_x7phsE`eyr zE$PXx`m`~3Y<)gxG?OZ!6l+dzz>qy~6kNd^9NjvLz{{ebYZQbOl92O*(J=Nw`TKWp zr>FXy!ig2`@&KC#vKh{>^IG14CKyOrL943)JKc*NS%Vmx<-TcF8m&{aGw0r!dY}*0 z_DOXGeyo$;qf4$WyQ*xDd^+pQ|+&p!Mr zr|#fUKyzR|gMy&lQ_-PezL3uNuDMF3|D!%yBCKE@sEW z8}Z}h0+E_JR+;^%Ab8+U)cLoNxlE$Uq@>vn#+%<0 zPr{e|?k3!^k7<={eBYj)HjMMzO1FL{ny*`}$}@b`Ul=7F zwmwBPfqRgE7cD97o7PhsE7gkX%*qds%Q@Pk5;FJ}5*WbN)(-mnxnE`&7}3LK9rz^s z^}b>exxdOU>OJ!MG5ee_9lCx33#f|=(vCHZm+UG@L`qQppu)!6w&d50c`g9tc!uF; zX*6Tnz$mh8;Y|lNZySgZD z*7O!e6sT5Kf|7-XlFDk?#BuC+`36i$1Tu)^aDYjr|CV}nO}J<8o{1-prt|P$vrx%- z@%cgO9WB6KzncuvJ+mW!=8Gt05)v~qKg>D~-d-@VenC#N!qMmSNr^2EbRi4ys~Kbh z56z8Z4xiWGH%<3JRbyd9e{U&&D&T!8c&L4#|L6BZdiI#=Z>LHxSG(pxV@y0_~E9}rFXch)d4898U!JbQSnkid8D-VqK8Eo?b0ePi5y z&*WhJZy$!o4+%0=0tcX7qVvES2vlpNLjbAjodvK5PY61k0s<^XZ$7XqM<+PtPbSB2 z)W5nv^gew0@XSF6VrqjV$=LrF5T*VZB;f{M5quI6$H|yjeEhx828=O#&!HLy zb*WnG<3AgOq6D$shiC7@qA!7!fu8e`|5W3u15PCt%<3<5(tf0msG!WLYy@?4oplt? z*>OQkIhQ7-r@Qg?Mvn>Hh?4J{UG2pUyQz-)r3NTUBfvq!2YY;9!W`)pL_GDiP6PC0L2lp>gwsdpV@ec ze3-(PnV-&}?nL%)kh2I)pG!zaaF_V9_5Mnpzi(43NI*db-p@MLiylNGr}}91$5aEsU@=R zo+PnEKrAzQFit~L|O-& zX5Gpw3Cj&uSj(Hbf8Sa>={6dynaF>>MX(z8&@^cj2jbL&~~Iw+6$n2E#yw#6}n zH#b9g!fORs<_Ug-Ukbru-nk^C*`&RD*d5t7^6t$8YR5wl9A3lo<-tLl5ypP=ex^@c4&K~(4gNQ>+mq?Yol4K zO?XzbvB}$1Bt$hY_w`O{QBoV2;K~FdCrw`afJFaD6`}5q#!6U?$4WIu zM@(f?uq%{O$7o=n*Wm1Zsiip&ut9X09N<+N@5#DOH(0Q@!I}8l>Txjqf!drkY_a$m z`=RPSo7K(Wx0n@wl5WEZQ@I; z)JyV^^`!E4#nI)(Qu1+fx;fEzgPJ{x!{-D`d;TNzew}r_x3wgNo2XitD>h7KYf%}r zXpBkV9+_(&46la;m=uldjATh5g|#8)&EI(`ACSfTzJplt`DPWufzZsy<^B8rVUVOY zSY4z|_K*JrUPM<-QPL{k6& z0009303tFtstHZtQbj3fk_9F`h{$>qUQR-KcXx$I&Q|~K%jpx6a=sSCpp>*y1f^Oi zD2=5Qv~+IMXqyTGG$0EA*K{;Z63}E;GedAxWo8a=oNjsY)X4XXPCC!pSu~qe07Z(} zR4YM+wbbis`@WJ++NiCo<923`ahlhDJW>RHJWiqxIFFKa@mb@jxzAM8`>FF@|!Wbqq+YMRADqp0mL9eZ1dKLI8`)dCEed2t8K0kYTcXUQUfL?lkC($={?y2vq zj?caGj~10=lNX-oKO$g2&|q%5?9|M{RFGe~I#AhV@%8x>%?kug#5_{{{)RHEcA0Dy zmuSJd{8fpDQP4n1^7Ivj#gzTU+1|wR2jeec@7TkC-*NQs+AHT5NT*&Xkh2aGe)P}9 zu1~CpSWmKpbtCcV59Cx&A9dEj&!2CW5FWccTD*#J7ll~;e79Dgo}m7$T)vav4mE3$ zn2AR;Z66bti@7n()r-ywZB%vcdVQHb({r9kP z(JxbU;Z+Cpp`zT<(C%3O9E%x6P(LrG>g2zLH53{>Lz$y)K0KhnRewCcqwssOGwqV< z2Zp+x9tB_k>$!UV`vQ3aQ+37b-}8sMAIOI;+$Vz$MgF?apT3@g!v1@HzkPZj^*efU zUAT=g?40)K_43bs?p&YVd~}F(P@3jku7Q_Sm-nhihT7;Gmu*)NvADF(K=(h)g8Dpv z(q5yk%db(*mw(H=kq*1r(5gt@a*i~K)6xN)QN?)9VCFp)9-{lyDQcsqWHr0iu3cQ&dN z>NlWXAfoI*N5fFCv)l|j4&M<&llK+zjS+y=4)vjq?g=lY%oc)sci*6iVn3cpFFWUz zG3lmO(cX}}XXi1?TI~OPer2VC_VW|V7gXSmF5$ca-6zjFL_eARD%KJmp@{d_ipU-- z8mvY->+!cc)J?xV0=a|pKv}bVTE`3>2K80R3-m68aYo$`I&XQaDLx15T2>;PN_O^4 z{e_Pw{#9M~<+-#inf>c_NA#@dS~M#Qb_y=ZomlHv@!xzVQMu9sqiwU*2Z9r8Z@;>> ze=EE0@~Cg8-pA{@tKZ$b-qC$_JV5#PoiEj{cjtw>yp`@DzP)~-9=ngho}E!@v4677 zLBVVN&(8_ys6_1h)W2+_sGVFteyMiMaDV^!&$H1?{vaLAXPECxTKw)`6o~o=K9NuD zCzc`+dwuMP2ZDa@ei{4bxEuEo=LVDRAF2XPYlIqZE=AOXamAfC_lfTtm%86m?2ArW zqP&s8>mC<2L(#DaQ8~VN$-DE_2MxaKbf3ir$rk@sy6?H^-uONu8^55Y*@AOrPJpUp z;zU8VJIvZ=ww2i)Oug9Sup0<4P!lZqCH~^nb~j%)-q$_Qt>RYknAy8N5B9q+;a~&w zqth2M{pjtW$CJ00mUvu-;KHIvAk{VTlAqg8Y3YU_xMH7h!nf6V-qg(U^N2g6>(}gRz4b z{TucTJ?w@;(ZupBm4py?yWO$f=k^%Ax!k7y{?F9MszmX+ZhAB$TtUSPtJ(I}eDyxK zE3Z9Rg@uV;tW_NPAdkbmVP z|7_jSS}W&{v!O+53O^U^evYd-W&#a|`YHwu9DUql*uI?R{5aVcecyRHFBO zzq*Xq^3|c5*$s@s?3u&2PbYDAA^oc=}F-)^Ym|?N^jagO*y*oSY|a z6q))*pnFF8tF-=N<@)=LCFO~H<)}&MMMx@wrDU{x1;Q!?p5oTFVHF|VK}l|9%z!4 z-g03rFlX~q{Q@lp{x(0gWuV9vKOP|wR>$Uf$h|vahYLCT*RAJP zqG(Bu<|aJ;$)~xLp(RDXNzM^Aia>JvncciNS9Vy>pO}Nk75Vl>Kj*84uIILP2U*wT zk8faN>wPb_8(ynjsLwj14?jzdz0YiKZzr0+Pj zm`^mA?#P4Y}Vws$S(@}O2;xwHTVqbrFtIHj*%xM-Fz?s0QYtb*Hf4J z5nMc6Y4b1U{jiq;H4tPZ^~atO8w9p_!W0N@?lhUG>ho2+{87T-n*$MI2Etgc=QH!w zRMj|t*ig2495H$@Z0=z6h~{V6dA<><6!JLH_n^yH^bbo$bSCJt?JN5SpG)tmc=Z7y zhsCSM!W#qQgK-7Cgip{z(z+aIeP}BIJNFbCwX@=OzQ&YwapTU$;gACvF*G(0*TPa} z#{(n>u`7z^)BKtb87v*nigJ9I>2`j`%!qhFm+-@7O|y)}@|6^qGB($C@Jx;4rE89n zGeFxh#_-GkjI*RZ+SqBII!AT!?{w=%P%=dBLnrO%8?_waLptS;k~ta9 zvTe}Wf|7&e9!AdS39&B37u)-Sys)YCh$#=fz!>5T|?$1pZtlU$HJ zis7me^W)Gp{Y=0LC@s>|0q#%@WK%tYxY$8YX#yQn~u z$I)oVXs_4$`_!DGpVifLH74AR8=}{_Rj~QI3!~EXx|9xV^kZ|Q5VI&e;NP4FByVri zw>~Izt9c~|%+!fdDpG;WFZon*o#gF4?-g+)7Jj8}2_=S^2dlaD9GmdY2iQ#$-K=8& zPwyLKy}miiIkhy~ZVgsgysH8}s})`dU{vS~uxrm|oV&$qEyv_nC$co%XO6Z38;xc=iD?@0Grt4b zu~m&D*;)#mrooaLG$uaqTQ}$w-l8@ikcFg%)B4%Sgh5atw~LTx||v$zt5_yQ~wMk!%v8&G&;U&dt; zA#fmShg2MgIW5(;sP84Fp{PgZ4sXeFh=@U^n%am;Fsj9Ct*k3{Y5&2N$TVEtzrS8f zycva*Jsj;w1>)+Bo1+g$USh5S;N2W56pZ(P@ukF^0cno3^s&;Yb3-dNLw4^V3&(d2 z4NA4_S_LTfB&~rs{DolkvVbZFktx`B&(l+DfnhV0ybRW&YqU|t&!aFS%S~DCiwknN zgwrATaOQ{4SX=-jw)~?xK|&c{r>vxT@F+j43P9%6{YP~ag){=($fp`764L{3Ui zvk96c6kYe|v+zZyhK^h8r_#4t;}2p6;yU;n8@o|C93+f`c&l%*O^2Gr>#3zzFS17& zIUh2I>`N;K)RXY*7ccQrX9$2Cki(-Ez2gZ?zMS8z4k5&9(l{-yjXPSXIg+U_oT2K= zW!iD2=BOIqRjF#nXmD~}Y-0*_Uqqw5|bER@5wlh{z+ z2OF=l+HX^M>bj;|zrO3aK>Pr;t9HX=vuaP{Jp@)(o4lO%oQ`>n)lh|voaZQI9S;{0 z7@b*3>U;qkV?Z$grGc2>R(<6mp1pGjsbb4`=0DeOL>`*S}TEdbUyq6W*))H`rW_@nM_mlGgEWf#2ZT$a;_u;Pc{XOV(UB15@j2ncd?YQ7A-P z2ESdR9_>=WsVznYo)W%~Yf`WtSS*$`R7iYhVGZy$;K-=uKV6`Q>n<$haqgly*brrm zYW#PNZ&z1g8>;fk_x8bi4BKI=NYz3!@(rm+sB&_HH5u1J-{#{Y31BRUZvbXPI{5S8 zK7wc?;SkQo8#s99A3u-@DcRTm!U8F^M0G(qlEzzNrBXpOl`#{RWdqeQJ}7ht$>zx$McrD zYB18Evs89i1+Q!>o|_Fb~igTrz_MT?4dB{g|hI{p51z0~J9Ez}hi-HIsI5w6R45P#$I8 zY$0rw0wQNq?fNS1NcHcUlQ;n1ds){|dTxwhV{Nse$hxC$Ev7VfG|%uG5{xo6=Mk~C z{o;Y>L2HS{y>8J3^AM$|Lsln<4x4mf!A;oOrcBc#jtCJ_1J|-RTh?dFQu)ZFL4!s& zo9x~9W>&946goiyyJ=yaP+kbNx<)`6U+poezlcpp5D`2Np%glV&h<*ab*U?w`IGYo zP2o)+7`@(-5P(_?lCTE08mAUHO&qf$kU6}z;}6IdRnoHy3JQdtusj6A(XbG`gKLfj z5I#mPm>%U~umD0py}x!f(b@1grUal8;^4TY4f|S_Sn8Iu2IlR7CfjbB4yMtkWJ`MA zk;o95y3#w`hIcXP5$A(ij5g!HWbi@6SYQVT4*X#bm~R44P&FrHyF4hLfmsBsWbNcB!ZA-@f11o-;WzHOxNvGW~zMH(_La<~k-V zQ!B+|R}$@LE@VC2&8L;n_URd!NrZC35fQg)FVPd6oFcy1KCmb#Yn}kl9DgL-&~;0C zT5j(a4X4)5mWNxu{nUZ$@|t4q0m=gtOEUk2fm`qIo! zF67i@F!)f#VX_K^CgUVR*9}?{a`6e51C|^;`zStUOjecheKrHyP5xJ5pz<25r}`0xwkgpdnWWm^*wfIg{i=b07uDeusXB<2;t> zp9`V_@;sP$zVTJ$gYkhtME)0i+S*`JLwp|P9WhPRRzVeZ(Sc-(+gw^0c>~oK&e|jX zb^*)zsX%MEnQN;{59Mh9nD&2X0MFQw^};5sUAJ>&t2Wq*cP3`ri+W)G#PhPzbK3>m zLy8X5>BI7y;m%0Rtif%~@^PkBhD*o~Zw;JD7{)|OwZQF?;WW`T-?%4i;Ra-6yRm5K zj;1EsJiy(eCh;C@BV~6RCL4$haZcGFyKMgqcP6o=Xu1)>gI5<1h!zzFDG=-&0?#|;BW@$B;r@u?0Z_GHGCVks z@XFlf_j07+`G~Opa;h|d?~Rc?;EHe;W)dNJiif-wy0_zg_ZoAhy#4;q3Kqw6DIW$K zqPK{E88$T7uY$=`>FnD1wR(FL4x5l8unHf&LnMc#D2(m+e(4hDu=3b3iH5#wX8$dc zaf070bnL$!G&KBbVdkgzH41>TAQk@=RS>wdXN=`c0KhSW2bumP){oOw40V5YkK|n! zhzEkP2^lO`>pv4<_>e`o@ux7%k|DCmE(Pe_$RfOYMY9{(EKgJl_d*bl#Wp@9SBoiN zI7imXHt*o7;wlObhlC!bbD`GgdDWgDwp*39vYZ+H+TLps8jYj&5MrfDLwsd8Pn!3G5*_K;O`Y z2OKeRaM2_G?&@MGS#=5JfUS+blPsXc1AmZYM&l}B!k3ta4OI?OlgJTl252{cl1Ho% zxyR2coE7PU=Jho~uBM$xontH`Uyr6l5^fkFEmn@hA zy_bhGD_!;wafYC#-3Z>BBln_jS zSu;(mDv)O)yVgdwYh!d`@C^i*T2!On#u>T~hlw?KWhZ1e%x}#2s?$PZAU7NFVXTZa z%!Q%zY6NsZt|Y0+AynN{=cPcrm&9z~JjBgvDrg$<`y+_G@(~If;s-Voam0+6wCjAP zewjOaE&@8}TPHsr#jLv$&B{LUYRJl5a=6!K|k4 z8*2(fm7HOCR;fa@9f&v~=Z(msTr0yZYb2d+X|ZMsfXNY$%xn6RSo^!dTFeH5%@5}( zNUqSCvb3L7)ZCppm8U5cae(}RXBa%DvXfv=gET9VFyd@wp$Ca|YipLOIm#Q`ou=Jg z3PorPlEKgnsBf3a?ZGfIQ1{3J<2|JFQ{=SBJRQsTC}OHQ0eB5{XFyrROT;^#J*kId z8Iy!wPGS$0HiFDtkUjYP=+Rq7r1Ueim86Vp%^8@5eWS7?$6q#Sii7?cqxi;l)f8a##+l8dx# zLPr=ankjU{#;1%90t3ZP84wHunZhZohL~k=#OJ}*Mk5nI8U<{R2@a+nlAyFHV+W-& zxKaimlFJl`F%4v4yiOlb1`OT^vtWkd;C~he-~jMg6MsmkCWKgrGoB!0z|auM5_Y-u zG3Eu#knT)sVZjMvmevp`8jRVNMj;fVteE#wgOq_Sf5^2!?qt^j!e&r!z$_Ti_=crW zo*ILX&(^5Nya9CT7s_dQbZu%y4a_Xuv$z2zDl-Z2mI~H}$iPvBh`_W1^oBJwR+zC3 za4d<;@DCkRV4SgsxGB7tu@7>NlJRH_OdQGK(KpO+q>4vyXz}HyX>baNa#Q|kgfF3o z&8G3wh&6+&8VT-B!YXhw0nN=t6+J_62Fhu1r!?$M6W?0+6ZMd>?0f|P3e$x% zN22WlX}e=TpC|>;kgy7=4KxL+qyuLl_yQ@4nID9f%n}YuS4M<`$O6kX>leueKqa^) zznArZDS)zz)Q3P4rXAz8W!Vr=i|kjV^4uP%iuBxk5DP#^`?K*^uexnk%mN^6Z6E1p z_6zlSpOI^LKGmgK1ei^5Fw{d`xj0Of@uh4uSnU#PpbD;V)~k#`VO4{$2?5p)H3q5y zc$L;~ASXo{5w=CSh=y}km-@Gkf|EG!_bH*;_ZB!E#KGlGki-bYV5?1VgU`v43q%0G zJVAN9EB2Vrv6j3?6Yn4pGKwQ&LbA4C9;9*e2OM?|SKaEsE7o)ek`k!?X0vX= z>-@J8<6R`Xe!6>7y}Kr)(8%}37Bn6mY=bcl=GKN`>qPWHH0Ae^QsBJ8aLYeoR;cIy zb&?J>K;*zI#5L}r^XHe0CP}h%T|+ZKQoknfe5Ge62RyJ(__svc!4dg-qoM%Di2-dE z+s6FFo?aV(2Kfm3Ozc|Dc7|%U@_Q?&yr}F)cR02^gRH> zX}^cj?xgZz^or(KiEWZTHkws>_}?NF+0L{eJ)wGQ-69iumG)3HW4r!?>6hOX5x--k z(6F1z2d^p|Z%WZ!I-(SY z2{-j-Cl}^pRJ3CN9pOo+9t0Q>p9QiHBCsh@(#mLHW8v?`rFT)RoC~bn)l8e+Elnx1 z&GLaim>jG@Ze?b5?zl6*B?b)6l__3I5W1>0-COV~YCyrYb~9Lvp};4E4gF#$fNzmk z@`y|dKJ`gv!x_oCqj{Ty@DANa%J(Yx9`RvR%82uT^|bK@C5R7*8=s@Dd^kvNg;ntu z(2*-h-obS$->WIDbi( zaQwQLfPiP!yKEiXHM29AWn2Jf*FRFZ>9xcrkFg`30~R;gNmZKUJL`mj^QUmZWJue_ zXyx@LL|w&(s9e%jIxh5LVym{yl3V766>QYsVI->ZEx>`(Y;lzsLa;WCr!ld>4}W1v z&kds~ZMhNnhLQpHio@76iROq$^w1q*ImXrIW5R@BaN9Cws7%EB zW@oTK1h;F%E-aIRk-lP{mk6%URxjNp!s+rSNwPayNfc`arJ$Vl=T4jK#KO*|lQh*N?W_#7l# zja|X!M;__S)ieavEe=K{P@=Qj`_CG!I}J{T%2;IGm4~cJmY5ToMJ0fa(dtdO`Tia4 z9rcl_GKQ%dPm-NCJ`*m{$tHI8Uzdu?ANg0PGV_E(0rnax$9Y3$kPItaY0!WB;65NDlaA32A z&%7{1V?oS2e8t6sXxFnmYP3s9q!O1#4eF9IBO$rM$Rq9tGZImrqIBiLnwk~p14M-a zaYM};R0Pt)&56x4f7l%HHA-HWM6R!{-YU-AhL-2r@!SMa7+FYznZe)y$Rjg}llC8Q zaG9anXtBeCF->ff3t3)nxEIC9GNN5j*^m|BT=6%ag-Nx9>N!U+4oqbSu#fNqBn~=b zWO@p)O*2NBun4c7T{TQ6*AUO7u?N^Z?4a^+mdP11Zy%WnLJc`=2wUY<6QENQVWr@f zA4x9kYa~wRf~29@jZ>o)oyD7d?r*Sei7|g5dhpqXQ_S>=A~tgleka5A?)?L1sX>|m z+8ZIovXlKkcBTIap+nFcR@TCannD*k4{tXzxG0nNkLN=H_Sm`nrZ9@b&W+Z0{~*pF zT7i4fE&f4m;cYZN6v-$@n)7;sDtK0Qkd*O9s|QiRXbimJj=w31)Ws9f6UN|*Ql(j+ z6d(tOGqTS249Iq}tb{K5s!TM|1$ppc=W_ zP)C`3lNK7rUajFYrqb;!n3z#J!y=D zC^~!6>~>}#s z(jQvEQ=l|(^bl(|0XaGUkx*xFsqxdHEhe(>=Vm1uOnYGTLNdChV)(%112>A+2B$vF z$TuwWQ7~GDw=(<-J8K*RoHmP6n*lj({B=~FY+w#(sgENNet^h?xIoLb9z-Jya%JEl z1T@SH5zR_4RR$OeaNX*LrRVhT+aQN=SUI7Fm6&md?}EiueA4u9YXOCB>kP(iWA zOd6h^;o_&Ld|`ULg1Su1h74q&#@rrL&otrq@CAc)cnx&LxBwmyAO`?d764!c05%c; zU;qI2Pqm|xN)lD1BwFoMy0*J>+52W8ZA$O9+HK3KWiC{8k6qWg2Rt5K_a1cU9z8rB z?yh_2x^!ItFfv3|Bmjp12p#vI-yzTC=NG2RrVoa|_>#=qL4%BBwp)rslVG=n@C)V2 z&&L@P^*=issI|vCZdU8{^~$vlbm*fSE>+N&zI31+qHpQ+Qc=@|^wKMrS76elkN46f zeGlC-Nu*Po%z$YD0HLV^8Zx+c0V(C5f4YsPZP1iZE&$3U>#$^Jaf+h6Hk!OAi6`_= zz~8^4=7uVaRG6t`xrV2VO=UpLJ_UUxqu(`H_vBlDPi{JzhM8l}jl9tt?J_d_syo%q zOdZ;BjIOjSL>%DPm@!z!)P#Ewx_BDJR&(`GiL3>6d<51Ban4(gLuvN?r^5|H9OAQB zriNx-OlD?Y6GT=CaxtQw6!F^F&Gy$VTRJ*%m36m)sZl9s88A2v(aEZII>v7^MQymh z3lMF@T!t5ct6DZvXQ&}agS715lob^sQVeu!yj-bh#lLC(*!3!d7=t?Bm>@;Lt{Ya! z=+)ECAo|9RIHTb^*ZJb}Pf|}DpWOUbE-`Uu3s4Q0?JLGX{je0=j19{9T6MAZe^X`% z985)_HjdtS4%rRb=_DJ~`iPQ)NPmI&nx>BAc>Z0z%*)}Sm0GJyHPy;~Q&$XIb}H?Z z;ZZB{e3BM8i!Iw0#Vvxqf=Oc@jgx)%V|Fw{p{+aeJ%i(n0o*_0Cu7;D)!GW_f#jYqANNSyo^eMuO-4E&-F^ zBw7BLCwS6lZZ}V>c~`>@kE~iKHD_WOi~r6*Xo0GAlkI)Cb*8Ch)s2{w&&${;*LXb3 zYFhQ2m!@{xK_FOH9@TUDrw3XEW_)3yO9QhPdexZKL5~UtfGXo;Uh>IeXpKIGUu&+G zv%yJ<7*?R4b*hA@rBlEa6EuA{%JY zHnc*qmjYOimO8Jc3_=SC4b*$MVGueDt?@MQ?xK}}=#8zN7Z2qvrtQ4&|NC_|DNT%& zC|zepF15$pfX0cgzlB(kv`6211f`)42VXeOS3;IUoUn9;Z#KCDDDmF^5*FUPXt=dpbc;Uy_EKPq?>(Ezq-JDDTYA-oh zplicPyo11?YBA)RiQhQB$DXu5CMp!Pr9x0!-3(T3=(ugBTDX&NHK)-(Dg}T` ztH0ve*zAaJ&$&YlE5+(cO*j9<8_8+WfA@X&pBQuqCtcVO7Q8m}Z=dQSQ5rC9F#jWR zJEx$0HQCj63LB38s5IiGNIH0MKtcn$n3&rnacJ5{l#O%nhOr#dI5VF8XVcI&qLA1R zl5YcqepxFV2~_CcN3FfI1R1nQPGzxd9it`-@wFPr!0U-r6xT#0L!mFfWxtj6R`~S7 zz%@VV3fDlafhcv=$c3+$Fg@$ng|+Mdi|tpO@}1tddhp`DQ93xK4pbcV5ZJP?0<|}p zDNC$hV?H2oAq{p`M?^oQ66o^6CR7?k=?TD?*;mAB`hH=>*r0)7Q(e(Dh@NDFo1Cq- zQj85iK2Q21vJGT@v{n;kyWkC{c3A6(7gocbLWKd%^Bxvic=HjPJ@D zl<|mojpXO;;hr4}S>iBEp>Q`J-{Eu*FkKK@BU;REuET+o6KR#-aJG#YL)#y6$VMfM zX)~QZb{0yWTjM6xb?UB^e87EF2Wv|y(qus?tFF`%^x2u8EiK=)&_rVb6=&^6;(*fC$tP$UDy9*@^@Pj2Q_WF ze;S)mxDu*g+R6JnM1iB^3^kX#OKup|eCT?e zdsYskb^?%ON-NGb{e?CyNW4??`c8?%;Yp#e6iImUfFgFBk1P^&h~z4WDG+DD5`x_b zrOy{^3{PXJdM6PR65Fv5{>FYny>_ehYp}X_L&=~n1}J!gM6kFRV2iTAxW~#obhr=r z(A;E_ww9Q2DpA3-7}FTN|98gB=y*Y^@LG)eeh|z}?*_I5#P&;zHe^nZc5fc~6qm1_7J|&6m70d$)vWfH|G08B=|V(Hj)g=@qtxSnf72GW{jp9+D&=XJE%r)ek(Tl8@A z{3iqop!AU7{7&ODgrQN6O=IuhU$*Q{fPKv=6AIyl%pjemX$A3a?KOz-k!ssCxQ94l zbd9me9_;N*8;p3ZQgL+_}K8lL{y5KQ%g~Fi~k5xKc-|aB6 z6X}MKgQpx(rfn49O)=@awf1?PDgWkar>2Jr{ z;@lsm@f@`KKwC9w6gZ)>I^WweC=uecyFNP0k~*fU2SWKa3#dL|=-$nPP&366gDM%McakW24Rf~x^HtlY>9>RX%FQ#^M5S2I@pTFK9_TFAcbN`}5Tm~mR)30Q*_ z9JsOFkT(3OA-Z1_!&DCOHd@KW5|$h24Qp!&{(a*X=So`K^_gG7ot1Ua2;+S-5y@tc z0}448`y<%IBp@*uF(w}F=$mj<<(Pr-*VIA$4j?7RM-m(Wdh^GPgC2j#7{l-JhU5ev z1Na@(aO{mjWN`G>Hn7?F}?=%z30-q42 z0uAi`DL*%CQ5&9665FY|fqfUUaYQO%%}8M&OIw5{H}%3q4@^T04gPe>9-a7xqJz#I zP;!x@KL;p1#D<+Uxa47gcwuNzvwsv005Hq{isoaeBk{`{l3L|^VllpZ3Jq|8&U0UW zWq!LVkD&L59g49#I51PXF(HRse&YVP@Rxk3>&;W zI4;!xq6<}?!YF8{h0eb}37)ng*D)7|FyOf#UNJQAIUQ-#ou!8$W+l?Rw|cyGC`a}V z1L9+LmBO;(JGtB`xLFhcOacwXQ@eV+xS>H1e;a3yU(9c(=D6e>w1 z7Jar?mf}!dC~_e8!NU-I0uo1pR9aChGVx8fGPv05yx!fT+n^yuL0} zQoYS2h!&x2u4wlZo#g4ZEOx^CqcJCF*xJqR8vSA`-Ig^xUykS&eNEh}T3=8}5Yb)9 zTj#t=VuM3-9x?IbV4jC0L^-G`v>)7o-A|`81_!p{IJ21-rAvx?hx0K9Yd4TRc414k z`Y>^h<1j@4En}LzzpP&$(?PJUn`sMhjT+iUqeFqhRy=Ou*e|JuStxu#HY4Ks4=fYB zy>$9O0s35X6_F+EU&4Uz-EapY;b57|{dcQgZ1_lC;zha6mQdJkb|d@H2^odIaDV45 z#SFg2wRV@U6j(8#Fqm<4rj43xLhqXIW=F{1a?KD;MF!M9o)&+r)J!#8uedV?}NZ^CI`5P-ysqTJ&u$eX=~+eLt95 zdvxymYI=Dc$*@Js;l}fk?j#2>KgF-igMy+j$cdD582ICby*xA|wAgfhpj?IjqbYz( z#=l~d)7*SS^B?r`(88A1!B@{+PE?0jaV0=9RJr{(eX<0ZK+~6gGjG7-r3GqA8j%x8 z`I5PzV4ja-)(!LeGarhpLkGrLezJ-SPWYqNxY}7|p3CN1mXf>A=V?$9SpA)jSdmdT!(Xm%s{O^q>gGXqO5Mw>VX+rM+{1~&=~26r&0XhTaLQy1*Zzt^q0 z5`Oh)!lg(JF1UCbreCx#=?QQ~*BdT-Nuw2dFq@gJyAa9YWtX~H0|fJQM*rm=)`j}? zEd$0cfL?2wm1Pq!EhP?*3IP1Poq5lvOEM+wf!q`7!BUf_sSnw0Twct!-x9yqEU^d5eXDOhiZPE#nCKb%!xww=jrG z!@6rs)=Z{a!Z2Tgr4^dZ%4!1cUhr!zIpgq=K?WD@Zioo6Gs&>nOAFUnFX_wtn0>t! zv(zL<7*fL^d*IlYHD&;yQ)bpm@~pI|u-Np4DIW8%-y`$}i$TYG&@Nzc4&9eh0fSs&GSpWr~?=vvCLN?V7vmeh3(ByVwjq+-Ky1PvN8n*JX_X1ne$6&9xX(roBC7r6UAz1dYfiK92Z%kI5@4AU= zI6hVB(+%t!IV*XCOoLdSTZ*-I2tX^bu&4KWstBPH$djC0tCSH>CNWf?G9JhSv3YFe zRJEt>$7uzya*2I(Ud5&@NLV03s1_%QPP(4pqLc(~%>65TJ00?ZHm^z-`c^HaIFeP% zBEMx1ZUdG^tS^r7(5(NJMrcc;RT}J8QuE$Tk%$iwF|N31meCRPK$it`z+}G?AT66h zsbC9Kc%{-0D*cQsLNOs0-x=6rMCl2#C>wAbL060{x?2vI4$|L{Fvw|wZc5+D{K$eB zACRw7W;_j+4}3k4eCUbsd>yf$DJlmeHj}96@GVByo{b!!sEY(8C5_6U?68EjjSS(7 zGBLwirr8)zDZd;|pcR4|eL-`m1?&XqQM~0e0S(FSN9Z{;88%?@gKs*G46`ynXs#nP zd}jE{hY$zS6lkIacqWi~Hsia?0|36iDgV)1I77+o#TJp`d$MXA|LHA~7W9Z?=b(xB zBFd)Zf7r@Lu>)-QDM6XeB{m?G!MXpIl;==)gNb=b0LaY0A{W_DS!Tmr2dxCNH>yG& zXxofF=8+r-@lo012(t!D(3u*U!$`ZS=3Z_(BvM;wJm?RSG{$5iNF5Z;IC@}eUgQ4g z1(Y+fhb0^x1dWcFSZgpaxC);{kR!M;SCmCZK5b;th}4p1kD@+pG>3l5%Z;erDT(D8 z(jjRBQW*A>7OfepwM0h&YayWGS+rmfSV7apViB9Orq}^Wh3erZ*NfQ|GrIww8el7bg zAdL`4sLHdRazk36j#7qCFUGqZT}9_&SYe3vnMN;Gj3RTo{y-e-gLU zX%<67t_*O%tTcAwItkt&&5%uDjHEjs#<5*d`>(lr0 zYn~Jv7u(Xx--EUl?g^6I?*-S2UpkO6#DCGa-fQOp`(_dF5o}1#-bgB%n!p@9NIeaw zX>~|NIjw3jfGJuai|&o|x$VVewd9vIM78;4b-|a7^spye8HxOC1Cv2fp#hxoFJ!$2 zUKUt)T_d(*XG=#wRI&|a10fWHYYJt#Z4131tZ=B+aksZ>VXb=Tv6>CLA$aB!knln{ zanJBF$FKFyQ%+4X4WhUaR`STK0cH-CC$#dz8ysTa%*6sjjt!BxzJ9K9+DPuIHw@-R zakh!HY-Gg`#d8xvs^lX;vA@f*3vW<_=4c zl`^)7J5%?C?(4_dpk#dXaeRolax`MPd!EiZIaCc{5}RZ*JL)LpIA&c!s7Vtiu6zb( zv#12P8iZwJ+{}=NxZ|mh$c?i#($q0Ck${xFSweE8R*hyV?giVsp{w3iU?JsQL7VdtQO^D^!=9+v zMR26STCdmc4^sWWj)Se#OFCUFj`uQU?r|69fFBP#nhM6Cm)KK9kwStsw(oU!rmJma z4J|o6?vclyRUe+A)~E)lGl7mECit2wr5Znjnt5v7SXixlXts7}wT|dG04o%bBOlzw zUrbyc`#BW3ek`>(wjIQRv_AkKJsh0Qub7!+SHc`4 za$84yZww3#>@O?n+{z%2i2)US7FqqahSD%2z>yb_LR69mL>N~Ju7;&^!whCn2&~jL zy!q$zabhh6mOV&s7f4)MJay>D?cSnihb{Y6pS{0wO5zuR3?BR%AhtZVTxNe9n(%^9J4iWni16mS?3ieK|AP3nIE&1 z4Ro-h4{C*%&xxbK3}}2kZ3VKALK09j_n~c9YVtD+D87MFp}_w47XQ-gxG1~Q?=iMA z_1W#zdI+%@*%-?7aQ%Y!N@DJOyA^^&TSyKQxuy-nWma9M;$dWt&u~o{*cH9fk|4R> zTkAJ5f8Fr;9A>R3nTJYpC1z0ast0GmWL-1k8~u-idc7MVVTWsWcN0$DlFz5*73=6R zM_Sk#eP`NJxn<0hSqugGZ>!luvgNxM6zfU(EI6i{F%?Q081x4v+%g=!;axpQ8523Q ztVYKzqotzCkX1nVMsag1T%Dnh5BDoWT7y>}M$fT+B2r^!@+fBEOOB}!7u3MJ*BnwB z!2Iw-;)Z#f=EyM2QnVrdjV9$FQHC%Eu|Dd|4@OO4j3L1CQON+tOur%%)c+B!d$<=e zaVW%@)rkY(OPhCvP=_);EX+Ma0H894=t}$`*BkDH$u-C%B*SZPe0p9CR*qOuN`e_U zTE9}ogn5W2oUo&y@ttv`8f|b?7>9 zKHE{q3IoLos^Y+c$8ILL_=Y|Xd^g2^7Uul-t}4-LMRW+op|+!`JA|Sdw&Jk)(^?0I zCamU)c0!p4ksQdaT1h2ABMl>Qw1K>FxWx^411cCqm`cVn`X||VZ&%)edmlDj6h3I> zXjO!1lZ{Clhew43kmi;1fH6Y&A8(T-YLkHGQ2&NHT~Bv)E4{|SGsi)u179Bpz^Sd9 z^pymDe0bg@b`%SAEP*jf^|!rCCE&4($2)+``P6+xqnR!dyyK_Y>X-gtg12KxSwZm> zC3}64vy4_5;L}G3R?xytp$>Amy?=dkiGlwV6&vK!$69R8@_C?d+_q_#2!$9SWDc7c z3@aGqoec?woj8KdEJfRq4V(rbIF7WvF_nBz###e_FTZtK!jp5S>$0JX52rpDe>XcN z#PBI4Zq2-mn5Lj~ISBs2H%`T}+>3x5hF_4Efmz--(h#&qocMUwC4jOKac*TG{?yV#RmxKK zT^VA1&!@^!bFz&=rktXwFH&nH(l*Qpfb`d9Yr27v9PF#5 zu|60oS+}v_V$JikX+h(?%AqbT!>URHrvCCD7!Or~aYM=@q0QWh<1=L{Qxgds3B)ns zJYW}s9km4jRni?U%N7S zDe21gEHK=uuLQ%svK*Re5a=N9_`@KWw>FcH)}I9C6okh1&LGmjE_)ce0@P@O>+q>* z?FNf<*eKFa`Kqy-swJqqfi#_?N`Ynp^SNJ>$}SLTF!?z>(#AJI=Sqg9UzLcZw->Ok zr4?A9*9bbKJ5P+wE1bcf^y^Q@z(i&GS@mWNri;Hn=94Tyw;w_#MIm4rlgC; z!St3K%Mk5>v_QZ?HQnpygfsO&SUo(jA2}S(fZaQD?Ws#N6)>oeX!lI6SpRXUlpDV5 zqZjpArSbHh_1c+wJ<|>&QXzAlv(=cH{>7O6v28PqtHF`9N#~HEA-erXF z{s61mM?#X31NDkenS7?=3)rGK(OB9FHPucDq6gF!!kZ7pG5*Dt2Bw=V@G5bcL2!)_ zp4be*GuBX7$rWvo7T1bA6Pac;06$PjVWDQ(@p2SQ0GrHz#X7S0@kEuToNw)GB=d;J zJ7TM^Dt~Iz6Gy71$qY&0O$8@cT%K{m<~oa>dThlx$oh&8m@qXh=}f`SM=@|%R;L68 zfedurUU8c)0CHM1hN*45HlSD+8^$9W0{f=(0g#+@39h=X9DPvKQxe zP-Gy4y5P|?qlf_7gFsU8a|a?KqQmDFOr0Mg2b*3EO<78l7$|O-^&X z4OwLOFn*51(-wNTA1mI%VRS&bb5NF~g{np#2aYTVHI;XR%{iQX+#rhGLefAAZ%L@4 z^6E$!QsjE@=ZstF_xz_PrQ?G-4g>_=$Gw{2cc@Dstu`o_tPsOMQylda zMSuap3($MKs6(|uc`NVPdBQ?LJJS4d4i#;nv){`sprn8ZNz56(SB5CU(^v(7MG&Bh z8tyD0y-g)m4<^kHJ#HH*n!GX#QgeJ;k08PffVk_CSpb*FT)(r{dWRN@vWRwS+B@BFu_@l=WvmzrbEtlJ61*@Tup~lbU@gntK z*vscqEiqZ!27!l7;#Y_pJ}}66taA9lA@wM>NdfAuqTFnk1gjfUWW^CZ+r$7U>ge zj{h$@dj8YvsL4jJhQAF{lXOi(C1VdDh7df)Ov|)|cx$M0Z+elC zWq{OTD74rhCg7QjE+!NRfkEGGpi4(!IEBj%t00(4=_4nzTJl0HkSbi{qDbiFf}KG% z4_U!zc*(=HD}i-PZU0X#r8HuW*Ki8on&q)_f)x=E-|BW9Dv0qBH2@daZKkNerbgns zs2h%Q@K(ggQ7L1H4xyAxw?+a+(zmH0V>K;KM6^^8AO`?Z6ac^g03|U1W&i;FPeRI= z5s#5wbfFYH2^zW>#Cz>Y=*=2N2;5^#H*KS0kY?y%W!tdgX&akNrZYB5S3%*WngByH z14SbMU~m9^e|+2TeH^@ddofxa*JihKk~Cq~-YqfIf{XiDT-A}kJ2LmS>zB*ZVhg5LUf|ZUtS1?nZ0RrJHzrk@khn?Xp8!Sx z0A@(aYKj2;&wRYy?@qrfOJ%OiO}>()5SS_k^NEFoCTJQ_HG`l*z>TbEG|8jCM=s!{ zfOf#8nJK&%%Bm3J${J-mV&!rsn}{ zn2KKk4iXoaZvj4WX#B@lWgccwKE?h?F5-0@(uikSNR*Ie@!CyvRO`(X78jKa$@p72 z!Ax;zyK@S3zTqm|cAMu;u2y)=+~mZFPAA(rvP>TX#g09`{CHwj8GK5SP zWT)+%JDKqJf;w-ah@OdcGxZAypp?btP2#=r~*#1R{*|0Mq5;sT4 z^)5!7+aU=rZ$JNGkrA!2m}V54m_1*9cmeWaMe zum1qjQ01`4qDyjw7>dY_B;3T!MB571oRe!TKGIC4$)Th#>jd%+*iN4C%@7gxw1g@R#JI#6~a&e1yekdXQ zrO`f+DRDT(6@9zX*CkZVP%qSe)_f(~y_3sAhN5ysS^MyxsZu0C92=?30+$#*172`o zT>zcvtwh~q$ig*W`1cvCc*bYnuY44s!o1pQ)?Hj>vH@f4l%QnZ&~yA`g(Sy%_ay2IS2Q9>l)n1Rgea z7BbM{^jL(47loHejn+&M&8*8xV7S2d(VIyp?yw~z`?YL_D<0qvsIGB1>N8$2bF;C9hCnj_yap2&RoKFANSJ&Cw^Hl+4Y z-`jjH=(@b3^Wt%7{ertQ%KMBDpqC;jA^JjitW)j1+bsOf3ApoDg=1m~&kM=v+pVe- z19?BWBvFal7v_QWNjek7bh#~&7orQrR%_aQw{hBdWoS+xqyX@^sB6!c{bK`G^Wu9Y z=PRY%xfqY)bM{(DpK-e%6LuP2%PvbVg0~AXtZnf*G~?SDik^IN@e&tNtoo`60N>R);lHJGGBRRvg_VYgSvdQ zV@V(6EqT%6kwOiTK`zx9_<4L^3-r}1d%#^hxWzBskt-ewOzQj5fh2i}fvcfwS5|}Q z{#fwov24A79E;f6vt;cpc9FZevk?-iyF`4##yuX*6yvx8Q*Sx$AVADyKrs%dhJThA z9|w=>_LF4Ui&=x?MWt^m`4@AM1NEIl>s@^l@ZmH6FKG|3E8!|!e805u@!1Kp>e6kH z>UUA+ET%xhpC(mUWcC)0dxPXh-zHWw95ng*B3W_B*EuAHVREdyp&0LaFtdF*WNQ(b zk9WuhxeW}v{ban>%V{61eKw@c9_jF@vvJ^0y5$AFd=^Fviuv$BtF(x(c2BWc?n=6+ zK4kn!I->6(&oX60QM5GXm47@H&kl|zi&{E-N%A0o%J)fGicBV=iQBDIcc~^Lwz{8n zFDk92^kMJmsby|ZgFuqWu1vEvU z@$@FOYySroi$~Ir`nCh+F(rAL=gzU;1uRReo7|D{Am5c-O($D$=;^9deI!5N+Qp~%C1Tb`x^0m;xog2jejB*a zxej2jTu?g54{Tp}LVz+Akg{vyqc?Q%c2s)E`+Xr=4qDUo(VJ)tSoG*k!4!OGo%)xW zVn15r9qd>^d}VaIJ;41p2YvxM0Ja2+ETsOo;VIgO-&`ctE#lADR2Z@FF` zl`T2_uVB|ho3eI35R5XyY7rN~lp!ced7~et8Fxpfvkk35Ep8z?+`JG>bQgvagc*ZD z9=Y7Q+MsDzU{roM?mSrHvi^3CjJ05we3xu)e3y`4PgM^R%2B)vc$m;tl!>tefn9bM zW)5k1(H_2un`Uk0R=er&M;9gj;+nhzOf_I;SZvg zOEeNgM=h=>aN&fV9KYri4ta!&&i;VcEWC%tP34TKjU}k#D{ru)m_karL}zPBB6HvY z@|pVZ!Ap9-%6z9j4R@od@>=!&G{yglVTe zNQ&`=TuKZgAEQGdnBu1lJC0(+kC7B>VeB-fTwtOlLDqrGBmOE~rIy4vja}coqn=;% zWPZUU<7_D6SC1R;tXq1y&)xHHe2%S5^bS7IRBc%oiQeyWDgXej+1~>??H}d*m*&e) z^AMgt;#osAu*E%j+dxwC9gO^ixNAOc#>7kwalC0ClXmzYctr%3qtX=_$(SLQO#-BV zY_XE}Ov>pOvVg2sm)7*I%u*T^5Z9b^z%twDB76Q`$k3_t^`b7Slb&9#4mr3-MR&dlmj;lC$y?txZ6NQwms}QG zwI5;(2%J;z%kNfRPtPC0G(o2B*Ud%rF6fcl%+UZyk0WL1B!|Ixo~dH@`I5ewCWjx+^0&}nP8ZM8hBCsJJfR_b zD22!Ws}*j!-Nk{qLtK{U&&ntn`U3tizmbsLD`qDndyZ4fEsV=XZ1r;bQ7dh9jc*3o zEZAqkuszIe@IvxQh_zGpUXB|)w=~6#pJqfKkNa{3x=QZ^F!OOg}Dfp=>EtC#%s>2+KXvMjI=MkYE*|#RH z0va;lb5^BQ;ppnRcRThZL6#7ddNQTvXd{{iYk_`P zC6MJy|Md-E>EhIoXqQWeh27OpwQlt(*N?kzo>iEHam6hwRX9ZC5lSOf{MaPmp$!+M zvRiTZT4GXs`Vmyb`~GB~meRpIo00i3G}K;PSW%`r2<5i#>J&+`nGHepcw*@}(WocN z;C;ALq;}siCnxAY#Ciy{PKhiczFN3(Lo~;y){5nQO7hVB*9~E0CTPxA649#xSs~~) zk?B@x)Mv-?@r@9YSaNU|2)J?B{q9LrYE-lQ-s3lb?uZM8*fh}p>C$|vY*}YPNNR)3ibI@E?V4s<)wk2dZW4)xrPrNK8AV5 zVACY-9X$T&RSBLKX`e6Nr_WH9x4d&NjLgYBJ#_G0UvjTk zB@Wcn)C?}{i(Lw54BIWlw)gCpG?23xUAER6BDpbl6kp;mYD1o^UHLS^6YfR-;#sZ# z!}(VZg+AeD*SHe#LN+%bq51h1fqHVP0UkfDe4iW5e`qPK4tx>D^b`?Xa!~DJp4=oK zP?yjNe2O{mQb)i26zILE(I^@GAo4-V6zEm>ezAk%|Gi)DgvStE!*9a=GPa#gVchwb zDNw1vpbG_;{y1>G)2q;+Qw7813;kbIAz!8Je>h%6 z3>Uf0|4_`Lz^UCi>mf3jXYwKz*dmM_%KBUXdS53FIt7XsTD(rl@rqxg9vEw>25(%L z1uDS_HH}c@zabbu*cTFqyHK~OkSL4@Nx``nIF>gl=q_cJPjpxlLWpf(1v)W!7LtTJ zVp=)YH=G|K*DnQMia?|6xAQyF_#uXE-=bsem+LJZ2sc?L0JK=;%PPOy?|Q>A2g!Dv zj;1-O^axXflJs0kIZPKCOukOOcgEFiH5OVI2m0VF4OWkYewtf6JYAd*PNn7U@Q2Hz*d0r!AE-WMpA8Azy1I-FY zm4x>Ol3Dc85ZWS6DY@~K2iyYXjAGT9h=h<7rEC*3G3oM{0p;Ri74q};MWy1vd-oxw zayj>`C8dhOFKgTK3l)KEO)BTHl)7e>i>b66a}`Zw+W_D&ptV0)=C+5>4HyFclZM|h z=Zv)QPbat zup=~BM*30U3>X27up?MlM*UIX`fvgD5F_dg(IdFd0qOdyVk+*m6p$v2DtC|}I@QtT zfI<-vxb8YkD%H$vDj@AxVW|&}&-e4Foz3y0oLA!d8UiHmg!2LuzUCjtaBZ!fP zoe{Wkv!ztC1X~BX@Xjfb8U`;9xOu1RNE8oR;d;OB{M_u84Rc7#u+0fVRXZA; z6Z6VGCiRlC&BvsmkCnRqtg8QG3VPufo2YO-YLX?z?!Z0vF&87 z4%~%~-345ouC8E<(3Bsi);BID=kxVaiRLYr zv74Q7Oowh44$du3EoctA$M3eHD5mqmv)|%MuS%01hd1Ua;MfgpL7Mpsx4gG!D8Cya zT=zLKhyd#j7E*qP3_$XT91j|Z?EexRTv_u(xt<=wcUfBWDR*H-FF7?;z5V)qfGUPZ zDh&)sO-@*H)OUNwfTK`G1SC^KqfVxzdg!IquqR&nmOq21kwSUuo4|?2ZWHu=5nIZ{}Wp z%S0L8*b(~tj_qUl#@KuJj@q}YjRjC!8Q(5LRNqO$rG8}w8hug+UVbsdg?<%=7*(oh zggk%K4HEq_3}XGx>@})o9NmDQO=)+k&2Pf3ejWao){VgU!#&twT+Ut>$av+CrH8F8 zpNrjgvd%hCm20MbPK)D@;fzC0ISv2SpKE0}>>Po;Bn`NfbS{7G5FtZrbZLu}cIAa( zQ!vdFZLt@u6<)tenhBBg^JNie(t(sb@2>th<-Zx(pWk7tF2;NC=wtnQ{XRECfcL$WG6D7@3i3pQJYCW`QuVY~T6IO5z(Rmj&XBfMCLUWX>)Ef$rBT%5HWmjSmu z>~sn~?#e~ETa*sI=hEpcI4E(F|s0u z?9&luh)JzT3FX!QQ(@sD+9BoD)fE4S*Oh7v=$T@BQBOkRtW^(Syw6gxx{=l!VG!g6 zlg9}87{ZUALp6`{%V@4=^0WcAFICKFdmI5VRR*@==ueTp?FhhYC8^_%882aArn=#i zJNvh_Ls2WA{cw(A4f_GyY;zuw8JUlWT=qqxU|m^7gQ@aa*04 zAVDW6?SBz3OS6ndQPRpvQnOc%7K7Jr7^+~Yb-p5&wOsgEJDgZFT7q{e2@^KQxlNI{ zTg&?4vLySMrGJH}c^x>KX}MeJxXz;4(GpTCX&kXJ%R2tVYz3s5{4v+g=EwRsr;Fjw z_He54gH2|ZyLKQZCl2+PG%5Q;oYH9VX4Tn7;oV%Ss-$jEl}1C^Tk^}rrtu@Q-K=Aw zu$ut0=Q*?uGhsMy^8(G;d(q$3c)=UuXl#kgj@CCn@y&RRBkv4cA8(%ytP%>D1Sm!5 zFN-UXq3Q0}FalV4Yw%1`8cmFxBeAj!7G6OKD_as$Ii9SI2zK`&nG!~M#HnkLVp7$S zjIvZijfrt7I+1+i1vxAEE@Ix2ZF+D=w<1=uIzMn|-Ti3IDJiJ1BdBfN@&EAe8f!{N zrxgPVC=|muJPJ}I(!@x4)_G-Ob*1s-cxBZTK&WLP8z;D7@=<;Q(E|U;E(G0E_o<=_ z_I-%Ya?nQ;dE#@hQ-Y+%*6UcOmfaowAK<~u47YQs$^syst5$e?w=>EkN`+l2_e`UL zdXErd+w5IPlxC$RK)C*)aX>oz)TM9KNj$fMDl|ePn;FRmIC|)Yqo#*rH^ww5$(9E@3qWrRT$RbD`v z3LBoM(PMlxR82?+j}G88Om#_HTw`lnN!pP?=bnjS1AVx^srRuds>WUsK-nG<6Rd&$ zS%9BoV|1 zeI6RRe=#l=(=9tVWC*N-m5=8>qtL*|m;gOeI@?~S>{QC}Al>2!m932)-GmKC| z2`&jZOPUC?l7gl-d;p48t*$;qq*4Gy^dE~&8jzy?LA1Sq&+d{(q=d9ACgyOXZfX2kRw*Ku=g|sPGs#- zg!v&~5b1^RE1{vwNYnxMP$WS*vaM-r<07KGFD^l%P{6Nyed-D3At$i=tWxNcOK?=8 zB3R^&nf&_=M$Ep#SR~cmj2?Bh2%9&ARCGkVy7s;5YG}|X=A%5ZQ@LFGh1a{Sk`Vmd z1f2`*rn#`R%Hb3aGuGu&kzOf)6Jc4`-HGDQ_#pRB$`d3JT;55I;#wdEhWo<(!F-M< zRDIan2;6mrhGBtOY1x8`{#q@>8vfWxQ~I<~FG4fGYlZkQ5KbflFdgk(+|lY>wH(bu{*8>!*!b4^wH z%{b_qqfvz&;cB!+2b@@j#;?ru1M?BG+G9YaT;v}c)Vz$F_y^SnvmbkGgx4bWk#`P0gy(6?#Djx_sND&%(2%Axrq!*D~gY z3!#A)ACaZsA)YoSQK9Sa{=JN&M{8+KBIg<3vy4PPyOLyo2=-#8I6WJdjMFa~yME@O z1!@0Q%L=0R45Hyu3gJS3PE*pXUF@K(V(q?SjZUW2h0W*Tisgg+dPmm zXn4F)1`~q8=NHA+Y1!#)M zH7iqM_z%B2spv}z3o0Nv&Y*_u<;MsE7puRLKUu6p1CPTnWgtSoi0qsIsrjoA(jMey zkY|yC{lv`(`$G{?;H-m^>5NDu@__rT=8*_-t^jjE&3Qmby|hg<+G~V)jQ)*mkh>-3 zJ>{aDsyUw)nBK4ox_=7L4btcjeoT^hh`>rCp0KiWWk`opHQp5Q_QNbL#_4@WYT%GT$^8)-+sq7>I`Lw=4!UjoQ!eP|s_Q#H@d`k%~vsnRG%O(pfS8`OP61Zz6!6L4?61VR{3->T=tL zPPQg)dUCwte9W%e{PXKS36@WR_c8ek%H6Z*r=Mv=7%)3_X<8cY8(4J}d*8XYY}204 zOWL_bfRkOvx55_>RXMV!fC+w2n08}*`l`r4eV3evoSQ9-%#HTz9>oy`8Ck?`l3v2+ zdi|Y7p#cF;MT8GzS!{=1I&y5Peg%y!svPK|vJM*o20N@PPEUtkZ46eHKzBoLDF%7P z)A9;o4@kB>{{sYE6uDkAi_tf4-1mq5${E!3D@2#8*-eiAT6zATxZaR;frmH?Ik7&r zevj&`+$$xB7GI zTIwms^HqTrBC>lgLsd8ZfcBnTIEgMia!pnXvnz5f7^fXUe7B3Bl#g*K%B&HWE))(8?1Ut+T(Jw%_9k!l~ym_ z;?R*A!l+|;b2M72aLp$xj2C5kWC9N-TLmOptwWd_iuy!NG-YhgXic$HUO3ozLY)pw zn!s&%Rwbhc2qf_Wt~)gewR1;xmCQyR5RcZS6havu*(p0NS@ClI#PepF{%O=uFRbWz z@xbFPih!um_9zj8iIb#rw?GPngLsS>v1qiMgjF#s)IdphBoM=IE+?6Pe2@&`_sXxC zLH&?EF>f$fj~gd8t!-31PdB-#%LJN9gKK~}X)?E~%df8;X#T?lFO-92Qeqt`PfAG6 zGRm@R9$Lb9s!jM)2~fAYNHE7|}930vfGIx;MgWR&;& z@6KQXqWWQ#Z_96T>!st^u{mM!*b(bt(~_!>bqT-3)(Z>^ZIAY)MPqo>+1ZBq1LXD+ zU1bb?d-|L`CB8L%_tRjh7?6kZqbykOD=6; z64Uehp3MbL1G%HFc(1LGa6m2e`OKxD7KF6v2@Bk;FQ`w33J8$-!Os%zKJfSp+WyjzxA^2%9(Z#x9lGBzbRdacI4W;McpZODL4bUnkPv@!B>zxus$hmSdA-* zbE+061N*5_@CxwjsoGenywYH#BtQx_I2GL!y0--8(1qU(g`IB2ix)zH$-Y;>Du1#!(7duMA6On0u4rF5-%J$A7tJoJ(Ihe>^E9;#Tu1jMlLl7oM+*D&tWB7NukZ$W2}p_ z9IX`fDiEBPa3kgQ?Nw^dV>W$sour8{8CE18I7=*CQ{^o(*sOovIUYsk=4KT85&@-w zju)GVqQ@$EfwslvS>yYrPwPzu=Yoyc9bZSI?g$h@=2bwV<*k{c)Aow7MBB$xkd|aH6VRxY|B>Y zMoui%5FN1Wr;e5_R~MCNlR;t<}XZ0K+9T<@l@~=4|y5 zpjfR5pv}Kj=`1gU zC>GXaYO~RqJTaqpl_%F6;$-WJMxvGCn$&1+a^*yD4jETGW=Th6*SiaaJ@GZ^v){)& z{k@X(cnPe=L?4)hBHBSo$S4R}39eloY^yqYEY>ToG~OR-S2Z3$ z&xpi5Ls@5r;KU_!d*_0l$_t1KRwh$^VH1TGtqv^;;dduns9`pITSk|U_cmK-6hDUr zJC@uZ@zJ$H5S+_*Y)(oJLATV{(jhs~lgB$`fxaL6vVx=1`V zXhT21`RTUbBhoJX3FFhHfypd1mb$nUukg7iV9%gUa>6)ClB(96Tyn5id9NrSszy0e zC85Q&UeGC2)t=T>qO&r7U0u!l8>>K$F?5l<%!$Pm7I}4y_IxRA%uP{}Y+p-mxajE+ zydkD2QOKNYbSUB9a<|5oUoi6(W$n>WD%6L>H0R+UXbZ}JXsZynR9Bo~fQ>t*LA1l%MYo2%MfS_qL;-c&&R@uSQ5vtK#%Em38df)ulUS6zp zyv52EE!?iFL-Chwa=5mD-WZ{qU1}2B3}4Bl8D@ydEs`aik`8HnNP@|-*Fv3Mq<3{c z_&vQzr#HbAeM_cYVF}Z_pH$kZ%}|V~?N$y#vRaKS0dXUTv(OT7(JaUtA^{jHOKDh+ z#16OCB9NdqXN62~CS2q53DE8ri%W=sdgnOtf~_eQE)Sgaei6TrCd~O(7F~;P5iZS? z)FK-y*9gcu$fDFZEKM;{R5Cm=LARyDV?8)Ea>DzJW;)NHQHYv^LO-0+0wx!%F|HZi z4t=ov&|j3)B#u7*d!h<9|GoJD7|u8Z*_iqb?dg zcF2f9e=X6k-msnT#hwW;6H-r&F5QV$8z#tLIUOU@*K5@|ced+m%BGdZ=~60^6Qwx8 zGuWMDF{rDgO4M+JPWiPuOiVogCgP?dY7=xHC%_Ze!k^U9ljS_nybtAfj!zlEoXK5s zLSQ>dd6`y^aIyJUDlZu<330g6S89X7yT30}Nrz|!Kh?ltKx&X^;RNsKX0O!d4l<}g zp<*fllcX9NDc@HOb_)`5rI;O0B~Aw=MFx6LJyHSYWREMqWEP`dXXd>l+X}oBO14XtHoN#0o=cv4t_xEP1ifA&lk1`vIHAev#-eveg#Kh; z5VP)Xeuq{3ZiI0ZUG@#2q(uJ+)8bp}{ewrkaQXWdm-d4zEPj{9JP6S6a8_wv0_pAq zljDuMorrYi<;%C4$U!S*fYqVsv)v{M5_A;Zn; zWKlWysu4YvTV_-S;l66+1*jP8V7XMbBArH2s?jxuN{{u{pgpI3M9sG~_a;K<8b~#!>;$#*JEcT&+9R$w93-5!%ReD}a&V)e|39_(!O~YiTB8!_n z@Q#tZwUo8+bx*UcVpoC%l^W-O+c#ml@jZP>eFSY&@=nEaN0EoSJ>Eq&T35CZiNytK z`VVNWWb&y-ClHajM$S=r1#{=jB-0_=L$>@%rr%P0=_5_`*_CcmLS|xRu{GH9>*dqc z#|45s`YQeCt{0S+3*%Z5Lk88SqMdz=TB59omtxyOdsYqXuDv{=5wPRzuv%{ocO3W( z#W4Fq{qspp&ZKHl_9Fx^Yu9)LADEm~r5nvM^U-?(M7Y}w97gnWbcgIHwK-)bMm_s* zbR!4USP66`E`U^2H}uzB^HizLRgJeo4SQO%l@IUmKsk{%_YPk+sdI`qWl}n~#wzt1 z=9x-&i(ARh<#`og>Q+%50ertw%H@l0+VlKIHZfn{6%E`uNM14`ih-Wq04(3_%R>f` z_p!BN9UQ9}#9w2ScDla@#$PWRbqVS5Gur>K{nQa{@ZTSv@id}s%9#Zm(gQNDG=xWl zN|eo#H$E=ZV8wO#4^yel@HA&g2qLPEXUI$~a>hrG%)q!W{t3=zH28H2O(l~Wi*>tK zEGsfj^DVo0hnJ`7Kp2{mtYcoJuVp4j8KFq$v)9gM?C9t{4CS~x(Qa*QNMyvP+ouB5 zm+|dgVvhUX9!i{DoY((y|Hb9^GFQInJM!#YPS7iBsy{6jgW#oDJVY>$ktHL;X3)Y)E|(%cLTZ1==NXmFxN`%w)MLLo2@$G9N6g>l zQyW3=@>*uw77K9QMQ%p{rmfr|O3o*qAo|>TPdl7zD5DI@kx`c0XTNNFQW@OgZNLc{ z&wEla>n0kIA{Y}yB&*;)Whk15(yTM}5H0!Caoe9#9+|-lQXXnmY91X#d5#%b`1)(t z$Y@1TeD8@tS8-=ub{Kf7atF3AQag=5ZZM?iJ|So2)Eo!&;fG+*JNOdT4NGiqGk2fV zh}0w?dRkVjrCAD2#K+u?quL`x^sn@s2S8lc%l(R|7vF$4!{mdqHPu|Bv-G5w0{?mD ztzt!R#Zc$kIhFj2;KMz0R904WS!6Gy_--lBr&ag%pR(ypng(y~xqSuwrEFJxSk%HF zvfS_Mb9o?LqoI8udwulH^UZuR0v?+`s;Yq54$6Bf53Vs8-WT~pUb^}|Dc`FFg{%AH z#|aQ|^@>!*R~X5+!#%Jo zHLtMX&8lt4r1_10eA#u|bKPNY+xhJld-o;>=A*Lbjh{`ybnbV}QTzpn7*RUn-%KBm z%V}aMI22~kV<6tZRa(Q_!kgXFWaEcrJeAYLC$%K}pNqccg>|n6XNi)mUh&kyq1pc} zGfS!Lut`F2mDKDtT8~3b}&E6y7_Z-HC9;IxrBz5 zXPCJYxm8r)BYb*6SNv6(q;WwJw%?kw`RGcLtP#5Q>cid9KZ1lr;yBrkcfSaHv3`QO z^b^v(Pize&(z_x86GKYOR&+_{dP*%7sOS|AT!RD0)u{>K(Y$m*u2+O(@ zX?Lp?_7V|oOCmlfz?WMFCzT5AVnn9}k-OWBebvKj?bz}u^{>u-{js-kI8fM*Sl|(u zlfER0WOI^c@tr5A=*Gwg(^=FHe3p}@{m24atjwx2Zawi2gY(WM-=vJZhV=a`wv+8; z;Y+*ca4EaFPZd|q{8_4w5L(rtCIPQTtmet%Ie{0hZ9b#rm3{Mw45$DOJl+-JQ$Icp zcU)7h$SILa%eUDhmL@+~9{-g>6Z%*{q056b*eD8XHXSn;1F8Z7 zA^__Clsh0O4F>1cW0&6fdt+00H9ckJeEauI?Kz>4zu1Sju)tV|_Y+zmKj!&^5i$t% z^4ErO;i@+WBG5TywN%hJI~(~Dm~b*>y_rq&RJStDZf{jfI2;>pz>O z|0?qS02N|`Fnd$C-=3tmX+Jv^*Y#71i`WDL`9skNBB9NTyQ&E|8v_NCEA09rT{}R7 z5mT??`kk9^_SABukxwo7X9dpyEKez+$s-!qVL8>?Jt6!{(Y>{#894;i{+gKR8Zq}& zGs#hhqxK>OqeA+gjN%flWG#O6E>@mUhD_iabgYvDk*hoLq~R7**Ouye--3_ zpI8ld9xM?j{`Pkh;@K%tPa(2=n(D{%r0*7Q|4fw; z7zNV8igopLw2e(5bA6)C9v%Y(z^4=erq3G|-+9S9Zd!_nrp41hJ$$YrmZm3}-Y>3t zcAHmIUo@|CZjj19-s`WmZEvR2KjLA>ACQSZV?C2cnBDXlhxd9Vl>n3v&#|oJK)#c7 zSFfA>t2OJI=H^HOht&V%L;t-8U|05^oaoP6H~q&gz@(lWQ5!aim=Q6XAR)h>gw^#a z*}wwJ)w7zVW?;y^#%k*sKb^G-@0vJ2Sm^CNDD72r3evFfCjT(YI-O=b+>uPzJ+)v$ zc;xjauv&&Pi1+j{#kn`7?gCfG+F0`L#X+qL;mml)M(1H5xt(M_HQ&|XFmaAa*af%8 zwP%gdPR!?Tk)k#_R%}Qw<5#xec{vR_KM1fJ_!0^o=a)U?o87NnPu8)_JBU2$sGx$&W zk5u~pTw=R$&nvN4^r8Im)WdF8)%2PA9v9AgvnhQj!L)T&T?cYcu*79!*XZoWX+E9z zWInzT_IRwl9gcx?S^2*Vk7`d>K?YuTSp$c%q%lqlY!aDd{rPL^!_S$v?vj&wG(A0I z)&F_?aYfHL`HI3`6QiXi6!9`-ztgrD`_@9d3!8rZ6?u6?m*myv^UP^JuzcSMa7@?< zns=!9eg5Wy0nHTXNccgpVW^adR9BnNTPn)|IfliAI(Z(J7kX+ZHz(q0Qj5_%cj#z# zF$sBpjve!3@P|ZuP0fbVjPE=^+GA4_Okxv__U_^j}yAcD?H9)fuV<)B= zDZ^-2J8*y9J8S=A=O!XBcc|9Go~CtPe_L%+sNK9%*Us5L5C8D@pf{vv!E$v z-kbhqvOQHhhFXsT-tcUQgW7BoQ06D7Mnlhb6)87d;~t?C){P6+340aQkUKL2PAAlqX- zl8W$9Ol48*1QO4zO$O$^P)Fg!jHX1=&V*!heq&BI;)M@TN({4neW(VtoHi>ZMrFG+ z$@prI!v~jHy-_Ik(J!Ly-z?z-{)B+^R8D+;2gzC8X1n7%#;1=6@5O7l zE(nL9x(p?+J!_m0GzzhbiOvludU8CAi{JQ1)TopCZuVW8hXe&$rj^Q zIGHaU_ z;k|eNL>po83gCk^5=R&N`gX9e`}EBJ=t~7VxNxEjA}WwtZbX8;?*R^#`o7cpQeD57 z1k#b=f>H(2a>M9H-7TXTCXuafp_OqJUwRm>^)q7pwP0QH^X*yMBX&eJI-!q1(^Ivr zenj}Z4Ed1Hk0)cVl?~<1?LEFpb4F3nO#>M|81NZIDvpBQJ<3^|0|z*`!6k;GiN5 zzA?GPmRb=~DUG!2k*4t*rP7Ns@<@qo0!3g|c>e4?{W_&>BaNsq_$fA??l!z$TmI89 z@2LEuGDX0ADorm18*My#F4cboQqQ)FM6-bj?ll2=qunLzAvQ-Ohl9|mDo+7 zoU?ve=z<_fMliHO0=Ru@tiX>@_5d$4m8X4lsj7f%DIkPRSLFNyd8}fflX2Ft>V(d( zD9$$Pngz6w=sxGF3ElUT(h1f=D_2#CsPj&#WZ9*4O{~33o8sl6>^kJ+B`}eCX|FCC zM8%D;HC^=F;4L*CDIXv;JEjlN1F6TF$tl{|nq!NKaPm|EtaT8mc_zhRH)sfX=^8$O zG39E}GP}>-3{p}n!e1?y;J)Mk0MBu-%^~O=Y$Tl7-Dj4L_A3WoC2!u$BNX{USL2W) z#0PjGLhVxI-Iypzy9Q>-l~zEu7^x;k2WR73)#xgBFOy*pZC}pJZD|Q=P2YM2BwW#= z|Ev@ZM>*ipV31QFu475=a)^L#M|2LWhl4Aurk;zG*31`{Xo&(in&oMrb|GRs3$7Jv zvtf_h6%^iS8?oc25pZu}5QN9*)JYR)O*5hwVooIXe}OeR{zmnr>#pq7=&1RR5+vUX zbKqHH(;BzKN~g0qXD!~fGLdHm9chElG{f&R;KEIHK(pNYe-h3Kip^OZ91e)ia_>pE z3AzKkj5rLN5)e7KGtHrxniZ4kJ81_%*Kz+Hv~PgSpo0GzmWDzD2gJw5Tkf27)ojgS zi&1oxnc~VT)2cH!ZS7Qj>d2`{)~n zwn6Qq*3)1OL4JYcZ@`tUawhwev!NYt3^C@oYzNw9-4+T_xZrH=&trWo*iax|Z)q`b z(iy{WW5rL~kR1J$G<|Fz=rM&zMx5B4?# zw{F<4;4h(x7hoN0Htu2mqEZvoTD^vU)!Tq#I?;uH(Z~dpz~h5y@2|spKA&cK)0Q zTGQ;qON~wes49<0=m)|v{oAf(R3_E7vXpfvm+HnsigBzM53gZ-f!-BK(65b8uC-cO z*1yaEV3G1-sn6;?lyIT1!PHAlhkoEb3j1{hJ;2}mjg1*}0`+D(8c{w|4U@zoUP8QX zz=1N9D|IsmmCn>;O@WC53uUFw#7@dk&h95US7=~m^YFgRI-@C#uu=i}6l9RWi-b|e z!B(w8M%)v2H_8|(zcHZN>Wvb_*B@tuPJNZ0#2UlX&C1uShEvv%LYhc&r(f1$8ZO9R z3Km}e;S@(w9_%0himW(eU4L=jBtJjZ&&n*OMk@7&(QmrsxMWgzkS>_7-^7n-iL-!5 zrnYym`N#f0o0F#q1K%Ju+jhyW*V|?`Bn9G589&O^;)4A(Gbp{qqV#jSIZB+QPP1eI z9}JM{A0;)#rc@{}82k#%GK(X<_G+umnaZMvNG`R%@_`#k^s+tyjJyBD?ln?7lT;FP zM|Ys^IBQHrFp;~Jf-5D4XS*$0pF14E%KW?wYjq(0iP2^up`=Is%eiI7pHL$-j>{fn z`AFLnIMnQ=`6itTqJ?@$aO?F4(xKT#b;~-I7#-oenX-8 zZiTp*Vm6pI($Q$z%Mg$V$+O5Pc)t(Y({|`$-a9Wp(tz!|xb?6K>k7-tKMZf@@4xzD z`H+oS#A}SqY^)Q@gJ}fj|CMi2uS<~f(gj;S>Y+U}YD&ho@~`CFBJU|v%L@~0_3*Ya z@*DTGk^1A>|1u}~0Kvik>`pJ4!>g9Ozhkuf<_W?C`oxga^KmXJRJ;;~zZ1ut+ z`+6nP~oC5Uzbbp#Lnd zbWkdDzrxggtFRx~?iwiOL3+MlK49?sUkj)=NKT6BhDo6wXKS{eo@MflC-citeDa8h zK7;?;QbD894>amp=`wWuX>|`4fQLwZ+5G9xBpsyAgwQv~4u4x6De@KSWBsT5*#ug= zb7}G=vG~jQI$wPYw+1s`sHeYUWVT@Kr_E4O|CiS7_g}wUb1&8UZZhqR`muioT%fsr z+64crInCdUB{IwipZR?ff9T}^$k@@IP95=K|1FTb*9i1@DO%dnqQCy-Cj(IP?F68F zpQZo*{j3?}2FK`N>GXbbH0*pucttd0?EK$CnMoVxG94#?71c3+b7xI`D?f$fVqv{M zhgF*w!w*BFeiQWmRYlCOgi=v_u61dtSy`0xo%7ZF-XW0S#SUB;>0TNHqf9gOd$0PZ zNt1cR_zZXLNYPtg99B2Irko)}b(`|eT)*xsekKfI_d!!D2lknQ3~+rvpHGEc+scW| z^gC!=;EM=MJwW+Zx$2v3{@q~`{0N%;Is9UgAB3fwtm6nX-$&>eudMP!%=g0XJS8ZE z%39p=S@;4ymWRwQ7Gx4=BlGnl&;Oa~_+l~Z(PpnLC-t9^nN+5o(?OC^>#r2;}?OVmp2x@iEawF@x|!R%!;OraVK__BX%VJ_vysyS&qbS z=O0g0KU7I859-6}`R+m)LSPRIBTV*F(%HlhpcipPU_$;;gaK9AnV&3VQQjY*vwk#) zsaZ^@ARRwoVnOe>`4Q)|#tgJTwln56?|S| zdV1mszuI!ek2HM3qGN&gKRM^{o_X=ent^=%9Qm~s%x`3S=UVNMV*Z7m|476SoaR2O zj54U0o*qbgGhfyRiaG0lE-Cu0-!2u9PyE#Pao-3iU&jPI-cZS|8q@SL9jMPK1jTu( zh)9?vVcizpX{FW2%X^!1(BFNo5YNrTAn83=lQM|=k6O=>bi^HyKO`KN_V_-wmj2Qs zc)a76KR9?ka1Uu{XaZnj9sl$rj8WB>^Q9+3^j~9*pM^qkYE5^bZmVm&`O)`Xh(5uF z*W`Raz5OdUpy%XSOu&22qyMwMmGVCyKPIG}UN90z`G;CvgUn#M`<39%1HgwE9&>)RX&YNxPZ21HbIeZ+7M*eXA zzi@%9`{}Y7<)0&wtGs^{;`v*W^zY&S|LAO*Q9;4+Kcu7eGEdS3u{vWdXRDv9#jHW) z@<*Q2f7kt*s%ew{MQbGHzfiZy8asrU!80L$=?ULNr96I{|DE#7Z`*V-es{>}nP?f{hbzY#bj`z)ij{f@m}W%?wakGtw^Igi@LiMMEkxM+5)#Jodk9-L_jMEc9Wd&QS&VcMR!|kUh_@4^JMJ@Oi`ZqMl_R zME`O+wX!AYM>^==EKL~7hM)dZ6$kULeJJ`#Vj|VGkkR!%q;vF7dloOdE5}cw%Q80$ zlS%%>)U`j6TMH_rGW>i#Z(Qoh`YXkZex|#1vqJZMM|Pw?ek+r7^~s9QNo4}}gn*wR z;N>a(k}o&xmd?jNxm~lshJ&P8_(6}ap;*)8EHI1Ww`Ej|8 z2pbqFi4ePO4Y_1duuXp;mhUPi0TUN<#8FuzMVlXH$^}SPz}^tNeS?TX1&P^FYEW*V z{0kg*)L{=Oqo_%wabMeXRb@RLN1u6jk@?IUa5*>|RT*vxo&&Qec%1orz_(4${)b@e zYyo-H`YjU$^wlDi27oWfu}Z*6*F!0uCoR3!MTj>b#9@O+PkRTvccY7m`vE5*mXa=bWGVK7 z$l}effxfjea;DX4J7&pfHf^(DCDH6h-bB3BOD@La-OcPA_iQTiVMk&=dZ)t{-l>-< zEp&cQdB(1xm%A)e`7x@;;<5MybtrT>ec3G(wTcJ7n#uE%QJ=?Q%1I&-9AX4BAD#ZO z++9Q7^78$x@R9cG3B<>Ar0fvBxtP;>UiK7v$`9uZxRROuiS`mD`{nFM1mJJDlsC%I zh)0dP5xjnk+)t!JnpEZHXef+Epn2i`T zh*pkBZ0LuD-2X1GuqiH-oSt2dFtYD45ka7O(-z_;4qwGu6b*+DAYRmEjbY`r&Ft^S zhHUWzF_L>3G(1vZ;P~w&+)(049);0@;Zk5_lw|RCI@Yzehf>sTYPX;LIOwH#$y)0* zXRL=?%_-uzcgu+?HU7W1WoR+fZiPra5spHGw4c0uZMwF!pF#J$T;H_c@{*S_eyRK2 z-%smUixT%z?S}+N*6z}l&w~T6ATRGN#RVfl4pO=VaanPz(GIZHCqii?u}H>twc3Iy zCflD<&TXfh*)$;IL9{91a5Ybw68+xRkAXqt+mqs0N?^9_e?Y2iVFT7arF<;H4XHL8 z)p;rWV|B{`{_0=hxFHy!NVY5mBIjA!Ly`?04;-L~mHBCFyB1VSfYd(=o=!m^gU z*sM5@u*wQtM8}evrEO;9q>X`vH`bCDse~X@U z_W>O_av-iyF0X*aEJ;Z8o}MqoWTu7+e(-rrzdo zJ_EbQ3d#;68w94fZa=3fw%YQLBlw-Vf|q1A*&|c zoYXp(vkQ{rTic0ZpMAylwjy$KWP&nYr9_6ZZMcBVwcVAx&=ha@?$gke$b(^xTLRNa zuSb~W{Wr%+6D7WK(`GGX4SW(;l|XIiYvh6>+%2})1_f9kE)(8B+}YYO&@m|p3U}6} zW((Wr+}()kTGSQ>8I2#oEk*$Kf-7Qe+P+cea$Q0soC1omg=d&HMv1VnmF|^n$+D)0 z5$B_OL&0ibsqNNw>D@2Id=#*jE$B_O@jy-)u+MiDA+jxRNl5PS*c??&l*nZynsdHt zEh!FPe2o`IJDD*Dq>7wW>{PbRD7$$}&^?h#?Qu%*+7=DvpCk+UuonwFMi-)N4#!4G zkAwKZqcorlOPPiw#+MK&?tmP7t9>Um9cz?3Jx24wW` zFrZ&pYk(lND&gxp)mo~j(JkUhn6A`TH~X$OmHAK|IM`C6&a;v|EN;3}pPB&))r$fd zhw!AyCNb%tX$~wyVz2wJdkV0zPwf1^wV^$3M*K?AT6P{D>!+UlV&jFEML7t$TNfg; zEY$7Dh>iX8s7F%S0ICz3-)wsY15eVxcV2Aa9#=t>!ip06d!hBU-a@Snlq}+fs<*nk zz{kAD3t^wvh^~M*!7h=JQ3dios7GK9bKx2QEo2JErhth1T}tV-5Ofsi41_2?Pvcx0 zZW@>}J-BY`Z2-!aTY)tO05nvZU?8h;S66DpF^v=j>_Q_Zg%YVAqBdD_Wc_RH-)h!TULDh3$)So^vQ3U{jo-eA=Wh`yP=K zwO2Ja7>$tp%@NrOnT%&O){Tz$N1!+Rd#XaOuk?ULBs zkY8K+c41I?Y@zvfzD5z1`<2pJEvPq2;LEii6u^bhvBN&c4FPe--c*5JJ6!w{y5l#J z&UJXlL>Ut?q6?Pa(_^@LaF231fvM2aUw^r&%?c^nQa$p%NSP4A89l?6*pL%h7{BBL zpVt(DQD7~&p-b*hsWh66zM2BD5sI<5p;v;dCymN|McHW4Qi09a+epE=XE@{TC`);w5_B;$Na^-Qrot?mD7fk@{kf$D$(JM zWBH&75<%l{FRTdx2gAsXMW44cBzKmi;|vEHF^w0-!pbZ^r18s0n7RO~$6+*{nr(~v z5uNkAjA#0JHdFVPxQx>!+5HA|&?w_2n-Gi-*zM_O0Lhh-a@yzG4EJYDzrS%&z$Yx^ z))q?yreA3+c|PMtS-`*VA(YOwProVRh~ zW{SHa54}u`zLdp?8D!SS7ih>1WeBiNRLNG>M)}fwh(f<6j)~PLoHxFt?sJjjKc(_t4pR)iYB`;3Wg+ppTj;`E!SBKxQ%!B0vlL|h|= z*Uusb9#N@w3OI*%FcD&wyOnRG5RR>y(tw>?R_3_(LM>dHg36tL9Bvk z2fV{58@6Y^!SX@2rP#OrNjbpl1H27-0C9v%(+h6MFAFSAts*#}KRQ)ne=Rx4DS|1% zyXz9h#_nyf22dwBtngKBG_h(n6}ToYjQA$?$wxD0wdYGWd}cCQjn0f2rFdaH(deM( zg=2_4Z5O3^g$y+mK)317$BHO1mICQ;7;D>fq~IpJW*nPmVZQv+8!eRlC<16UOxgoB z0eJ;bF~nFe0j|L;NC#s`bn9?pmfpAjJE&s@yNVij304@AEQAeCqgX0bw?}u? zflZRLn3vNUuJjH=derI@Ss3%R^ujf%ofF>Mnce!^GvvINk_3i8FzuvOHaz+?G82YS zq*giv_3Mnqjr-!YHZ^N{cP|u zS>N;*jUq=|t&J9dMG7Y>WF4TZvJHdMHE!KmMgDk41y8n5Hr6B07%9%Qck^gqOc$lb zn|ICB$u0-e^nJGqV0t&&$mx(6#fqyk>tYvbQ$>BZBQBCh4dK1Md3G+A>(H(lCyy_b z+9CB=HZuLOmb56VzpDBJk$PY2z)as=ji=@A4mEVJkYk%z!1fUzNgbU@*`X@^31GEEduIsaoRw&`9*kwhdfVGzZn%F8Lpc=!Ob$IEt-M3*`+ z9A0dbD7^{6(s(jX!}LB7?4=Cr-lX2FBNsMQEFZ=3S9opNe*nOg>Vyj1H=@Hd9ogpq z>S0|6C;o?1vsTyW*#k2LT(*S}j03t-2XK5eiIQJEpX7-DqZ^E5(E*`rSh%uL!p3O| zA$6qQa>FqIb^wplsF$?!8sAW!v-QLSGc|kzglrSji#?X$j)O#mRsmYVB-@Ta@8=F( z=2)&?$6>|8Aj{TE2TVvW&!VlpC76Wnkz1$UCQ;NYC5>jJG}>pklr5>^-g93vM}Xvc zKDxdQ!d@3)>BBtOyis{ZQ=q_i_!R_3~(0br}v*9)|q~!J%*3lJ+Xw)(CFQFs!X^wYS5S-_?yac%-Xb zQUk;{SzSz?h~MoikW{whvej3%J?^@kvW(#5_I9N1p47h_VQ^mF)x!8rZz5yUFJ)?C zon`B;Wb%Ltm+eUR_hIOgiIRSk46gN7vqTGY9dFik|o*~_gOaX;poxxgEH zSXFi@2*c^}UF|EEVGP79t2+i8qX>u(jGOj!Cn{SF(D{~hzr}?;0pj>Y%RxW5L2N4n zr$kNsB7mjQ*NU{wHlH%H{IE{jYbWJ%9U}T1gt24+l}uEh**~A|aJ1&jZ4gC9?w2MW z_+(-2segTfc~WuLIRnB7|JwRhhJEQuD*L>=Im4+tAFNkYdB#10>N}QlD-XVSW?)nA ztUrYPn5Uxy0=i$V$!6B=_h7ZI>uXZ}86)VTfGu8QADow9NadBYDavO)^HKV~cO&s% z65`SU9MduGH}%X<$JdWmQyd2=&wQwxx;!%Ml?WbRprSrfux0_CIp3XL_%Rvb@&Js2 zo(%OQtcWW{2*>{u>tB+g|No5e!F&<=>et_lW}P?yc+5}esH=Tg%UJQ8lu#WSLHtbJ zAf5{TJ5Ck9PSVNfjb+lHCPwdNeh1_ENnymej)e_0sG9xW=ojZSWz^_@4D8Taz$$tO& z%5NOF7$J7NC-dFks0<-xA)$1uI%7Qr>hM+leY?`}w*j#}QH00}JIqqu;Bk8X+!*dSB_8$NCvni1mEJ6Y*yV zJtyZ`8!TD{B2n0G!r>*(x!fT7I0pB}7#gDKQ)$jD1=SiE);x`-lPvn1~dgik3q$=A$O zEFRV?*-{~K>txOdz;l)zpeTT6oszQd`Jj%tO2 zOk%34j|j{4r=;6~G{>~lZ#8>a?F6a}t4GdF|2G(p%)b+t_X)B)C70CoN0U9*tRlUa z^!V#vhlom7{VD}6_!BG9T68}a*;3Vd*N<1#qrevH0W*f2FMJ)=RRWFW4ZV?O!zlY2SH#L`q>6q-R&7-DgFP7m)pYuT2Hpjy_J$?f| zdxQ}C>?P+ugbv91DSpYYp0iep`eZ;V`EdPwEuH}SP+Ky7hq04Bc;hg!d2%P|qoz=* zYlG!I5&xv0iM#G2SO`v}^O7#4n`5Sg5l_lLiM?b2Ld*U-G>u>2gpNUq6Z=(!)1TRf z#T(*hgg$+05Ck(v=g^K~Igu!RU$ugmg@UZn^uDnHN&3R+GN1Hy1V$R`X;Mn7g&5B7A~c{k8B#;z4(=`(AK zKCH6cJQEbUExm8f#P0P+sGBC~I0HWU5?jI4zOl=iH0R2OTV)77a?P{X%|T8=zK-Q8 z>?OO&Cj51zFu%WNh~-R@W}z#IdN0LS1EYPYtM55pJ3{&wi2!4@L6}25WM-xRS$i>r zv`5KvH}Kw_$_(IPWwrl_hu_S1b8CJFrJtJ8rp=nU-8%VRr(nM=XT^+EssUO4W@JT9 z;`vtRQ09LJIGh>Krzq$`1>$#}^EI?5hJ`|p$k&Jj{C@ODKfbqY%bs=gIHHMvLH0@B zM|Agzf%JwH|7#FCGP%Nfh&olYgUMO1sF9%Ep2-fx@yGKlVcS{p1?v3!bfmT2pG-0! zC3Gw;_5CJYP)|XBW(v%!L5jX+*nWiicrZz@xBrYIz!cMy!vEdmnQJ{d+W5SKk|{rr z*niDg=9dZ~`$Dc0neRVKE;YS;%|6`w+)L`o>=*kic---{cL^=zmVE3ZR=(?9-;Mqo zt^>!8lE2AVj_8hme5U=o{y&hx-l#t;`$B~uRIhpQ6Y}pO;_HOyzwbZPHQ39JPxxSF z(7pjj(&fOM$iDeU{S*0OY5E)fOzxHDu-tc-g4JYKsGg1gNhupU)9i#& zFpeA;`Ui3|9DtV_GzpxurkV)$+0u%DhgOmGHCdQ)DJD&%C`8lls;MiXh=NEK z+u$*Kz;6J73bK z1mRhz5g)efY;luE?Qwf5#rRcGstB$pgi}Mr;Ra}H*o`qU6We#3+Ufe5Yicp}cTuWL zBPx1zq6M=hX~yt@HB^ZwaB6mP3cz{lj6K`6>>n^J?q1qEumpeX^lJQky@YTr~;ydeU(r}*IEq{hcdwhqD^xAVzk?y)JcZeeh&P_!pXAco@w;* zLIcC*mBu}bQnzV-=9a)tz9+-LY-WpF5I+qTxmBh;a`lhK(#01zc_-p7>QNof-@s=K zjU|o6R>D~B_qcDWu6Bx_cT~U{lbe(TBex`QVskfcLkpM%SJn#Gb#5-T+R%{=D;U^G ztu4N`Hgqn^a*W%Q*nh?flG=mAM^%}j*<%TgLHJ`-o`&4^$uj>ptJRI9(QM`EaUI^l zbnPxf1XNOZx&5y42BKRSP*$Aca}a zm+IAobAPQ1FOuOIOwr)uFWBLPkH~m@M{nbMzZY8owgpx2uqQbE>iL1q>I(D_okasU zRNtlY4r^E&qU1)f@vs&y&pQTjuhYEZlsU^Dk`=AE?Sb=c85N=$T@%)^s<_;Rw_)B%Zyo_n-?Ir^^VOsgj%zT!ghBzqLfaJI52JLybmt_k>J)V0V z;(5Fv-prjrZr>4JWXtWV`|1zn2gS?Cv@XBUKOMg$o|G65d2Lwj0y=E_0b=Z)+>@lS zx~Avl22hSm6AP#k!bi~WijEJ~&Jp_jH}KeuG4kHpb4@B~x3#g=;{$vSX#5oeBW*=? z!Z)3k0Y!l0D=78lCO5-3qd7uTFTU*obYuSy17iNbmJt=u2zA{ehujkN@i)lmY#DcVw75_x}py9v|IYk5R@Dnf)$ zrwKX*z?(@xjl+165YVuP3G&?bVOi3}J-H&OQYFH=A$jnrHc}zJL2IgdQICO=v<=aY zM8MaiTlA8F7*OD7#E4jeRZe%-ZDk?Dx@*$%oJ%fL_YDLVS@Kh%TJ5EvcVuupEMzHr zE=WT*4npq5x>;*m>+#`nR0qSt!n5eQS5alRv2eNxU6Oj#7-6Qy4&4fdJskH=mW917 zhzsaavBQYCrN9z02Em7^H(ZAVdmv3Y*~3GiVQ=!v`!Z4T=wu(98@VmI&x7QXwCF(j zLWoPaH)f|6DXi(G)Fi@_*`jFAit&AR*-5tD)l8-Q?TN)&B6aFDECdseyoRSy%=@gr zR!h>s;Db_=f?W!qtSkR&4f`_4r!}#L8o0Aw7RaRmF!ewUWaNTLVrj1W2z16$K>sj!pVnlcjxU9DpBd>bU^C)M$IyU>pzGCz~e%_Ax}6&94sIROGb3>rThE?QZt{1oXIBhNh!c4bSbS~uX3T6`K2MnEZj{(_>*cvY;l>|8 zdQcgM7Y3_30dJCm$5hmzAJZ!{o>_160azBvDF*sB0|wE0$H+&LR!aoBq~{N0R4WJ4 zglCntsBT$R4f0n`a!||GMT$ODF$F-}gp9#P{|Y5v@ZI_^`1aq>;}fYkk?u2h5$SlY zn%3o$H+QBQ+vWq3*uaON(q0r^xoZdp`8Q5F^;jL4B~C$G2YR?Ay<(v=76L|Du*I9E zdWT$3=7qn`-d~m!#0p5E8{XI z`ffc_H5y~+eils8c^eJsQ`JCk)=ia$LH0u%@M03n?pSlne~_bRY>xrHPQ z#XC}1fZ>(k*pWoMsc7JRwmV9p^42C-jF)vssE1G;*tG3IEb4;{k(_hDKc`s1{5&PMy0r%`a+PLfGSW+wQE7bo!yC}h=_TQWNA(Sip zZT=-NS$)$`$;O6#r^^0@96HAX6tvocFHVeR)}>SVz0yZ1&}K4`RV=q zO7Y8GU<*!Bb+)^<_svz2jSgdij~Z7ROIA~7g_Mw57$g_;O>3r}_AC^lO&LDgt4y&i zr$(%v$=y^eS8HXYxIiM5i+N8kHLy5_xs~-=#iS|?H9i~CEROuxIY7clnhn?ywVL8g zi;Lxr6Vu(79#_eulMx{oabut)N%p2UWb_w|Q%7~gatx0dL-X<3V};S;VR|lzt2Fw4 zS1uEK;;g4vLWY;&2jj&U!c3TSH-28=$pC9){HSnsUtxT3j5nrDp;lH_pY6g4sX-}i zM?hP=WjJHyoAmcq>&l{IuzFQvBeG#`SGjWRB%H!(fE6cAK(^V>*>fPg_Cs$9FkIB6 zfva^ovcq-Y)Vvy)W_6jIacl@!Pmya3Sa5Qp5A2x6XDcvBYQJOfw;ny+ z++HmxT=3pH%UZicMSBX~TrBl)(P7Q~0sOG};au|2z2Pg%V6`HGOI8g0x06t|zib3{ zffVav$MPYxhgxY$ZL}8vMXrj_rcXY}g)JM22&U+TH)h6+4zc|bsU;`4Fj!Gm(g0J5 z>{)b;A~+zjD+gY{3J{>P0N#2^iBs>i7fmQ%RoJ$Wvsm$C}+TqB}JD& ztwF8up?5pIhtyAKDuGkO){>UE*2j(S)B>maiuV7PsRdNl38b_nBLy23Xv3D-!@u^l zHcyldNMmx76<6q^#-4Q%0@Jwlwge_FBYo2A$O=7J*t>;K$B5FyQ0^iYvB|H0a`TTc zrdDoZ`Y_eI3~Q9|v0Mu%9C$@ZHa(`&j0Uz`JTCT-p3rjkJ}{o+p)g9r63GsC#ai^b zwF$hQ2Vw|{!<(PxT8gdO9KlKc&#Rs)ZH$v7Zk;zgSW<9eLqZz8{Igsk&*0v}K#rmEs47yv1fw)m2#Z{P-|-qLI~-iynM6L@8K3ws0LLB=|1u zh$ffu-6F?|j=qR~vkYF`GF!3dt$5G}WhZZx+%#bV;3u-Knj?BUz^Yn0W!K}YMAaik zkLQ}QOZ7_W;r?^sSX<-XcthMtbZ@$J!n*vER;+dJZV0sOZa16Pz0B4N&T(uUja3Q> zvG)2%+v3C7j1bs>i|D;H8tPYN;!0rE^!R7c8@f-CzR}Vo?6+Iop6;Oki66d3*Y;kh zXCqH{fsJR>-bn7@yR3W1LVeRNp@J> z7UTNpw2j5AkYT%Rdd6-=IimJBXE;n&Mw^RmBR8a%5yXSg z=_&&m$*qEoEi`EB))Ocv?aZ~r6l;AiW1#-(pPG;njaEcqDg#TSNVC_d6s%;n3SD;F zr|G>uk`dU->=EndOo@F8`L>BTkFqnieV3IDwBNkpEITyh>4IH#THJswi0;Ol811$%j?+Hd{!c&ISpCvYxhvE%6sLc8wDuH$$K>? z7uS5aRCqIeW8juXLfH;#FVc`59|cIs*C?B1ta0?C&Vb%FrY}J5(KxQ=qMT$L6qo3^ z$V1=SV7AwmY2dCZ2R0RIcl%>2CrXPcjzmkB-|LaoK|A=z*?oChhWjCX$XMe zxSYsa!OiwOsybVp5bfaXWyW!`oJ+S-+D%rr6e1?tebPp|!xGt124u2CuDSMT@+3*l zlkp0VpO8_#VpaC4Lso&C74C+!&M^?p_3RZISP7XP^j}HU0F!06)e>J$nxP#d{L-dG zQW8<6SD5g2+bD(cfa!18I;}!FJ237I_#vF-{okK9jw8Ow!0406waT{a&Lek%MR+z= zD+|j|WZSyCURo&V{LOYy4!xF|rNvl3kjM^25*}0${%PtE<2`U3g}9ZstVW}z@Ii|* zjVWr|RE4>PNs7R&STXVeIt(k!`YTO)zvkp?@Kw8U=8AYXv$MiKCdn>8&;*OoqO_on zR$bF3J8jZ*L-xu;bXXCIqxbKiEDc^<&pBimKdS{7)V01RZdhp>A`p$q(QxTGgV@V+ z9#?JU?};5{C{#Of=c^DJP2uf@RyWoi%Zh4IG5)B1uSG#b zk?F&q@g|f2TSI#2Xy0bh0FlNQt2c zQZHf12KHK7eh%#f)a1)mA6>;+pnw`7O}#3qFGFur+;ufm4mZ{S#!x`%Ssh4)V^h_u zW3l%Jvw=gO^=~C;JGO?vr@L`ryn7o8pZy61lS}KTP3vUO8^Ic?UN?fr)5V9PE?+2I zXPvYP#NPLU-pMELl*EgAsXTP!vcb>QEZq1YUqxUg{hcFl=c>P%b_C9qhf-H2Kx%e) zmTk4Q+1I$E8%+^sX~d$StRCNy9LIwAaJ5?rBO@hD_3RXTi60&R^Elc6ODv#e2a%w|t>(miQoL zQSgeo`DO<5RIg}^eRDNv2^aH)ND#S==j9dGR8B zL~yqaGsPDW_=*Q$9e-Ti}uU;iT+I00n+9Vf zoVXfD`~*5uR=U7C7Pb%zUM-8%Y*AuHp0wwVp?Ee!0|*8?oY<4f=Tqwq5Un%dGUBSp zl=kmho`n!(n;qa14_aL@d4!;?(qAzKkXgY&!@`l-Jx1+Kq=4q%3J5>uz?r~}!I3u} zop`n~w_^4_gLM*3lN0A(nyPZp{&?FAhs}687<1!avDxG)^Euc}2cS$r2VE(=V?07l z&Kd%N?)A;HgrFfg>KZR>=YxM%p$&LWyi!DHKx^dRXu)N~Jy6lcQ~{bIn%IuJXK$&* zu-wY16?D|8qHLhBp0oVgvy;mJs8cU~3wr{h7oIQ6*XoI^4-9XU1IRt6ybccZj;R`d zGw3%32>P_SLLE3%cr*KBlSiHnHe1v*qHc%lms1Du1=?-n0o6c!mmh!ZrfXufKXL4i zZ1bGroM@Peg5{uMvQn3C1e*L=g5U_AcOSGogtyKn z-pwwB3tv1Nae3gPr*?Ul| zY3J>5&FD#p2kW=SCLsW>HgD*D+N1ProYgVvWqKmjb*FtlvCHaiU=}IXI?ox5|HMhL z3{~{;3i9Snq0#A^G=b(f!36Bn4!7CK?4aI)FO5Mnv?k9k5evphW~&jilDpuG%o|IEjk2wq>Zpv9LGm9Xe#|tcl)j zc691S92i3eF3^kkw0I*o1#AvjRYeG`1N2qJ>6W=m3YW4DTi7@^GmJMaO$mp{K7k|5 z>FhUXkzH;7!-2GrQ_>M%8EmJV<)5`{;j@@uhO)Wyu&}&fifEg!PjL{=5U5LPBhYFN z#y<33wvSQJJC{V4;tFP(EIA(Z<BpWZaE<%!b3D^#GBrCD1P zt8|PRWtO}HGt1@ks8MKCQ4`hAEU;U+c3qv!_RT+zihHK*djtY8CCFzAm=)}$KgJ2Z zJ7?6MUMmK8B7`~`%T0f0` zc(yvvsbd-76XhKxV^Vl)Iq>uk^{4P|dx5uvIdx|i8<%v!*XLkFJa;cD9R6YIU#7|r zn9`SS<%x!O#xc(v()6SH3)r^7pqHK`0~q?75+DIm4BHz%C^3UGzMAhf*UB`*2iZoqq1dUOOPPeBL!Gf~`VWyaakj`wwv0r2;2428McErm5)4WH+Ae@dSMwBAZ36yj`)Qrt9AzgrK~zAL*Z@Heem#7Ra3ag z(2-=vy*A!OtDO#l;~k?4vkOXTUnR7|IPj*LKO9tYZZ;DK(!R1On+h2o{R|w?}D*h4S3@zS1_V%X66zLaRM{JCOxh0J$FR4(Hz0dE; z;dZ;ZI7!gCPuXjHg*O4;z{5yv@4?HNbPo>#+;Oyi9%pic&?VVN2=cx|wADLYk};e1 zP=;0*N?3$`kRq!P>E#%XF1#gPIoe*EmeKs`td=Gdgvf{EEKMJa_S90h+kG*(U2FrVavf_ODUv@y(kg5odcS}1xd^xh(Cu+@5!{&fZL4?PK{?( zjqq76!KdkgdiLnh!9v)fBu9m+RMcFl14`m=fZf`gHzjkX$VXPimDMkTQC(NInI(u= zc4OGBklol^7e2Ns;#@xIiS>1=UI%|-TPgR@y7d-5byVZh>Z6bh=y`a??5iOAtNkm z;OP>0doF^BtJNh`T^%g}jjbP3B)3KaBuS(I_VpsTFHjfqw;1R0E$TXrsDi14yNkFI z%{>QrB*mT-ljmD&!vzO6KFl&IThNm5By>%83>Y;5vug1xNnKS(?$@#zZm7K)beTwY zsTYG_$l?PKNaoboT2cZ0{8&n`pxB|`N{H;o(S4!5vlL4416eT4(J)1T?v~uR0a}Y_ ziBt0jqbXlfp>$ZtxH)`ceVx=7R+>xF(2;CErQG4LR^@{K+bHD*er>t4 zgONTwYPze&03Eiu9)xooKYMfqpmOx@5@j4RG>#4rYV*7S@dZLefxCO{76U_3fAETB zF#S=0@2MRLvU!a=QUOxdgSx$EjSw2Hc-bWxB@X6lCd@BJ4z4%LZgOelJmbfQ_+i_Ze zz|Z(QXtOzz-SM&8>=Kh8T;ic0NLZxV87(JRV(8F<(s6Y-81dB_H z`(>9*^T*~=)D)#GGajR9;yl_0XS>karaRIL0@ZSw^kcqPOjC5Y0`|xn2PQlt z@-gp065s*AMs-oy)?G)L;$xtyvbmWWJOh6qA-5YLxg|P^9Tg6g;_uGDs!1x*SGw|rsb$*Sv$x>l9>pgh|IDYZ*4rljrhN3DvQ?5&r~ zdeg1lL9s$|-({rsX{)L>-M+AC)mp)OQQF2W>-Sa1dJ0H~4+B+QbmZRQO2cB|*oQ($ z<03C5$nSQDY!eq1-to!yIk}eKcCz-o6fXs(Yv~%je#WkK>)v{t5^0tJQS+6C5zoOm zG85eE8WmDwYh-BNRb$21H?g`H_>CqX&-q$MeMr!bSVZKOK6@j-b~o`Y4wLs&YAok- zXRxa+V&@dUnU!on)azTz=C#T zomIG%X^_1b83NA8CTmhrrnW;V1H-S|(+TV?hmERm?%;ajT-VxivJ5vFo+6dOovzhh zxkRrdbdW1l->I(NvlHINL8fr4rg@2^=+zqd))(L=m69Qc@~@@IAj#n>L#>KT|V16BSs5f`ZN^eBYUa86mm%zJS zWpY>UQ0?udhrp`$UbUC5*RmKz=wa_m?87?)NyqM!ZYmdwz?Z0U?E@EhZP^c?et0zt z$gz=ii-+8O*h>jXiXwbUg$GlCdzkUuFxi?78BITp7^xvx5}hVBiIN73;sT|MMm!*G z?pHn3#Atf#bCEht&eTj`t&eMMTwxJK1X#YY;?Y&CM1yJ|@^ZZs24+>Lg2#cwQsIu> z)&T}d$_2!6)g|!!s^k!Ol;C3l$#XWyAyw@Iosu;wt&*7NwY~Z-5?gjTi_tXhXk5^| zdlXMQIi8Ay+p5I>AV^{&7DrI5cCV?(*i5AWDHJ5(vvIwB;0IQMjs@e-RkgceOU7f; z=+mc_al=DV0+h-E(i%gMOSn#mpjPrVLu53nG^~SWcp~A}w4T-FQpB{slDa^)MFd&C zj({6K75-JY&nFGP0Hw)WgtZL-XG(!LY%OWfc9Xdk-c{;?kCrvMRX#bq6BG`Md&I@X zqf@h!D9#*Go^G`%dX`)u6Gg189A?|1jc(p$l;2BGFxQ(_Xvdf-{p}yleGWZPDg*u#m_p$OUp8w@luhwThn0!AAi+yot!TL&I+T7?e^bT75^r#Fg># z_t41kWO+jw3NXKsQ0&+XG zwkTiIHL_{dh)=s{206mrjb6Evo6^|_Hx1FjU;yyFTC>Gy4ZTo!XE~v%yeMIz4ZeBa zL#f&1?b!!PDK$wtE){#EQ5l!v=2mv#)?_szan@CU!lpno;up}Kjnc{F1&p5Mvz}V$ zKCk8dMR$#xXqB(TE`I6+&m2z?lTDwmD{X7FTxp}xTko`{cH8#HAqLbgG-LnBu~U+^ z`BpGTznU$wCghSQMuDPV78ERBKEg59)_I|~J1uA(F}Ffb0W?5AwsEv|Ek+!?Q4Dj&zDGh#q?;J<=Av}{W>%=bSG&);_}*k zG&7*R>t%wo;7`o%FBn-Q0hD=@gHYB|DOMA9!nuz#y|_mL(X*?Au9~R+)t$b;OPlg} zjyOqyDZL`Ka+#=(7gxl*V19<_Cqwo00Sq~){h`kYEtAF}$`=QI)qK3aVEJ|Z%ei&V z>kbWC$2OyKp1yL)1LnruYaSh82<%wwAm`}0n&DKQCj-O=w%0-FVIR(+W+EpZaQh91 zm`3bQ>}&cY7T4=OA>Aj}$(z$ulla8OuTZvj(8*X%rnhdKYE5>7f9EMo5s;eLx!&dK zhLNd0OujmLE%EF5)>f;u|( zU{)pKfw7Z+RL>dM(JHfcm~|nTh1t|r$I$O}=qtcav|99&c{X_cR=7Qp**6F7#oTut z%o7QJ>qtJQ$R3`4D}K&GYN429g}27U@#mtQ*vEr;en{-|MW@JJwDNVX>mJqGCH+kM zT5Tt-rq5wbx>KMlXXq1FF0AV-bDR%vo9-yPcg_%yeJnEn-p<)-`k_9rx8g1);z7Hf zz*}9)4b(NjPgfl$GI+v1v($P|)o(PT^1Rz1h@$gI51Lau*^~v&^=W^QOeUXUtG%F{ zhE$$EJZSgh`FkSRXryoFLbJ3kDS41i`$QqT0pGW&VqR*XR(78ED3R_=vv$!fZPh9- zHP!M@hs}qYX6Rr`_;(dZ>!Al#%b17g6TnGCQDp8N9=`|`c89vhk4Hoqu+bTqeVsi+ z|L8Q#KspHaIBW+6b9(NEgVgif_j$}>#}LC}$L1yD^gA8Q{f5*+DD%{5edguL%!vZ@ zU^GRE7`2mwe^}2@WYs`^*1uk($_vpQ{anw`Y0O?n+vn4xAnw*@Qmy8b_8(d-!m~O^ z&9KHBw5hVy-_B6mztb6o6W#HDCVKO)a5r?`O=0Fi2*m%*M`BGIOayPrXR+Qi33bRZTnM;t2DajOzvBa17|HHYKS$Kq-A;9)= zEar?TdXpZ~bDI{8fkiV`e2(r!#;M6CeHPYa?ml34GK;&o{4|~ce5P!wU|AE_ zJyW}jB0pi@gQ*g7%sI|g(qqbj$55qZynFqt{J7H3@}lkBr3MAB^dbBVogj-Z%bS2{gjRU`da>zk7H zjN)u$zyurgcPf%(#+#tmCs<-AN{mbol4)Puxt~K+D(*xpt6q*&pK~W!%04~7R&=$>kLcU|Jp9`9uqR)ILHdrzt~T(v2uAsWhP1#swG~+FY4uwO>gz>l$EYVNOiJG< zPhDKh$BQDd{ryC%Q0o5s7RnIrzd`^lAF+D|sCvOqU!9QgVItb%39iQ<>7lpVY4>au zoKn}u&u(T+ICY-l(;tQeFT7-gR``dYbnlGX-6|X7|06i|OHcxTz1Pgs`v)nxpJnb9 z_HV@?te;oX9*<7w80jm_4Y8A+2PbgZ8zzDI#NlHTJP0A`{~iztgx~gCy5Go?GdZfH zW8>3+d7b##RH`X#;{9!FdC~!7g~dJTikIj^za~az(upI1`1Kvg@I4cHzHq?blSlF0RehdHwF*>G+xGz2QX&854ivMBF>k`2)sVqhvNsCiH^d$<;g( zOU`i8wV+VHWIi~xyrbTaO|<-c;x&)XSiV4F0ZhEkWUoF?U#28)y5DkE^O?NHC+9pY`Z;UeKQilv>8N>x{_jhp;>m@T|6?8e@WDie z(W*r^2Ug6zC^G-6Ie_v$-~aeEUyoM)L;!flsJa=ZZv!zIk}FR+P|o*8O$o!m{haeg z_Yh(pfm4G_y^7X#bP&vB{B)ol@*W||@8h#ymJX^%f6nuVBShxHK@7_y`wu1(P0FE8 zvcqa+`oi*Jzt44Lie0%xr~US?CURz;BYD9dk6%tsKhA>5$nq7jX8AM-sV`R(|D5T}Rr<;5 zP@QgSVxFk|2)D5dPL_%3e~t_@?@CpifZ+NM=JtHi=St|A!_zf|qlo_}F3eX5rNIyv z(oH~)e%E3c$zHe4VZP2uvI@>X`RgFD-!lWJ%8wgaT~0C2ntnZ~DniXZKIW`srqCbP zffe0n;}yPd0-4>9$yz-#@9Uz#^k3=HnpXa;(sVUhLzA!NkYHvKReXJ4vFYzZl$U;n zJqYvTB(LQdXd#o`PxBNodp{50%hM!WGvuz7z<#A|h&N{!%GX75dNrf@)PHOV6*psR zG5}52Pr4=!)p1|*F@z$oGEl8!LD!&WBm)Tez)k8%Iwf%d)8vV|*E5Zgf$a~{ae(>A z%G}7P8@Avo-7Uj~q|&U}kz)cK!2daH{lxa&6^~n;8Dp0)TxQZbT^rA`h-(QbNDpW)BVE zmR`yjIklXI&pOfFnk3jbW%r|f3SIH?OOQ%xrCZQ2`O*s`xqw~ls^EB2$N7@S3UWG} zBNU-owLSL$4lH)iDN2+|p(%s_3o?H+8Fwf&h14X`1;uyBwPUqEtlQo1aA2c73wgYpnr!lzb@JRv&ZXxekGVoSGKjMluXA3cG_&!v0YF&>6Ad zs3c2)xuG1nEujVVr2qW(G>{xk@ODDSVfWw}GQ#(rmPN{2KLvUqScP_OC2ssL4!%?+ z2}1&X_BKno)=_~$&W~oXj`Ezi*rbKg2+?RZ`bU_$DAd699~lo#3}+2w(upe zk2lndRC8l=)ohWqQ1m0x?t8yy+++%Z9g(~SyiTo93FxIjgLdt%qR9Jjq!rYlFx9GT z8l`Q!)-9!n!jK!8_^h5YMBBHM;#5Ga8UvuJPKe{QQPx$lvea_7<{q4opCRWy!sx35 zxO?vQ391Bnm#HA;pLCU?SE)CavEEesPelOfh7BwYU&C5FUU=8oD;Wmk4Q9*+B3sc5 zch3ZDfNo;M;x*VU_5e0xe!zN4^apY1=$ac_nM|>Ub?v;yj(;s5*%3?AArR!H3q71^c#3f zJCy}9`G>o;+--Lz8+QoU%}PrJx8_trCvxL=v8t1WdcIAqZ#cUS&D2BR_z5;HCF9=xxGtNj9%H*(|;fijumynX6Q7< z%}Ga9-irp<8@1Wl*C8s^qHhy*ca>8nO4`2fT8eI9%xGSu#4FMj!PmGaK!rsRvvE$& z0Fbhi4h6eyey_9c?wSzZii0yXKEP_U3Tu_BF`J#W6QeDuC<8VCy>+dC0*LDn+(SGt zZmz;n_MRK*l-(Us(e`%oQal@ns+w`ry{dsH>A_7oTMa(5qOJ8TS&JsG`onn>X>fix zKbD4~Q&){^Y_Xc2_YTVtIi8Obi=z$3U(V&lMAtzXx?zHos0-VoRe=KpL#pq|0t^fe zqf#y2iS4e?y_)~fsG~#YX{gOjy>#2D>S3#@NO_t(4GIi)NI|ukSB|@eXs2E)#7113 zN0d3gzEzMg-R#tQMD6&Jfa1Au7i~wLTvyd#xOnYq3Yvtqkmbk_WeGNz7_P$m_`vQ; zb@cF=~_Qd+B3&?`zBB&s8k zTTaCqj9%NFQ`K5ZX%~dsD?A|8pDfXuFDEutqrIh<3~Czt)PEMjKT+_O45#2b8Ci(Dgg?6E6dmI!AsSPXbepg|9&G_amE!rs-XQ5g+cdL2y$q|ozV9bVI}kz3^8 z!Uba`Il?Iu)Oq+m%`XZqJHTFX=Irme4x1!0ni@gXh=<7Fts=$+mh>evw|3i+>(Eh$ zkWn2(1FJ95^b3PM!dR~h6G16Ic;2#@zA~0YH?yTu#~72_0S||xPdy%R;KXe9oPfBv zAUK1xb+1rXL`F1~h3_{}frH!1wJF4dcR4m^0^^u6M)9t;*ma1!-gEpIO9!um%-mrE z4cEX2Mh;vsEL=tAGi^1AG%o!0W*+-rSU7PwW8tuOn5;3SX~kY=E_M`NKn&gJO6SxG z1Z#~tO)&Pq#yn}?PO@GgVw$EU32koNPHt^pjdmQ;@cxe2fk4T{2qggm-nCh(_~>2G zIa03RrB2LO+}BMx*G=dy%rczuS`pp!9iR*(`z22*0AUe#96H?|Z@Mi{a6NrS#>oM< zOPveAYkh@Qi;CD>jAzYyHl*s7lEy7VJGGV$S=7s7f_w{#QydIMYPF2$wJSOK8~8zT zkXv!-!JSfin{NS`;eC?rbYiHLFN`n|ifBRunpbL_Fdbc#tOK$8>JW*P9|=p<1nUA}r;fSqa%KxPGW|%S%mQHJ7!PMJ9z-qj4wF*>tmp zK*i@}T`GLyXDYjfKRx2iIc%NRh|$_$1ZoPu zNGxq{Z(|uCc>$pe|2v@?|JYTAw%Q@jQA2a0$xm8K7*uE42E!D*f668xFy%_C&&Hh; zKT)v`(8qfhRID3LmlfMsSC3kpBjC^0szj;#O}J@GA2yYWf<_`^T$YH~&b%(9BbV}+ z9M3U^RG$1x%E>Sp_(shqI~%n6!cG0cmN(Imr0!D5g4~o@=1<*Pnc?uYJG3?SV(BG4 zIf|+Rz7jt%HXlX=kS9Eb6%CWDZ!u-0b_kb$y0cUqY<`&fv(2ze%1 z!2;WLr^5{^KMQk^AMwa**g;{0Jx}H4AhhE8221Q!J)N>d`L_HkDe}q?%JR+-g#;o+8_5XrxYw(`vwPQWF5SQWpGp z5$WPC((uJeil@52Za_Si&rL3LN2P1Ce0)`l++MFD9sM*XDK2(ajb`^tBI}8ExWsuG z*XI<_2BaVl$OnE`Oi~Cx={}7pUp+F}N>gHwf>|KyK^Q0vTQ{d&79K3dJ;1kkj-j7E z4JW56$m=zfkk$BSf42P4^wz;jVRn&1UKDMR zvn9BG^_`sLl@!*l`a;nTRim9Nf!J|Y5s<~(RBTWNm2y0e5~{hyGwOQQ!nv*l!(03gXr1KI+bfI7TCIdnzLI-{ z(p+4qx6axj#Ez=)ZacWG6ds*nGv1yuTCP^b{PZ>-QN zx33(y1PtPm> ztc`g8sc3WpcaO48glOO>f}5!1ox308iEQM5Z`eW|lQ0;R{5>SZxwe4Fi=(TqZQG&2 z3mxwmu)^#WREM1DYTHubKGk@glzWPUTE%q}x5R=m!=O-G=g4;pa7myo6wiO(Bj~HU zP{vC`Yk-ZrN8Jhc1WlOM%5*H2s;NZ@C(y05KV}PwvD)4uU3{x|5s#sg`8YgnN|CDv?+4e$*SBrrtwC*ws2nfFnzWtF4ibZ7udi;3^@Yb-Xag4+I-O3uN;ac z8^6*(bf;-8Ui_}SL@(6h7=4iT+~8`evpqO5?qyXbHvDEw;8QYYX_eS=l+B^+o;cf7 zg?|&j*Kvh|+!zIQXzwD1ErE=Tu8DfZ8$gy(ko>0(O3W%$vH^d%e2$`X(@7T8a>V;= zxO+g>j`60rOU3lGRcL4VQS*-Yvx!!|G&iuQ&nUcC66+mds3=ECu=o%giJlM&ir8W8 zPZS8;C4HuE9moyyq@^OhFC^OMWaTuqHknXo{?rQ?<&8mvz`+o@4aC#3uAZr|Z;cj8X7EO{_CR3t=voqNNs6XJ2Mj5tB z9tjZ}U6yk2Jt0-izf(r;dV?2tmdkPI1MJIhL#MvYg?IOMER@^v`rlEwv?(yS9q}@oC+1 z)5@^OI3-eCYx!kvZPM(5xEE3c3!aa3X))P!#2uxTPC}OjEhnXRVB3_-3+JKrn7L4Q z8w_3B)9G7Hn4YUkK}O%(*S;E+&o%JVeGGYku57>cmRK=^TUGv3`T_$sx-d-y-^U$AiF;@ ze#WgBF&m{{pr3rg&He}DcK>@^oXQ*N92xHf>IWXEgo>g2U{qfmPC%XECcLCC8ARs( zaGDDv*zXvOzkvr(G+-{n+=pIKs`Y;Gn^&4JHUYwBfu|5P7b^cDXGIua`!x9#V_+V@ z&w~dS@z>X+JY+nVOd`{8$8{(1NajM(8_bCwDB&6uHyUi-6}gMjYz|Chgycgw!` zS9Uqzq)7f16Js3+KNq$SaG0kIVK`+n@G`nu66KKb93)smRd}4$e#;H0VB{|tlE8Vo_f=RUAz7(4w&1Iiu9a`(9YI#|J%L{%l3kH#WD628KA`uktTDKFT zXNlX=aPTR3F(uLg(Byt4aPVCAtcbEoaL{Hw@JeeMsf`q}DYqZO4<<^{4`_ton{RMx z*_Jz*gnk)LFn9w;xEDVHB~tWTy7)F!RE1)p;5*@Wg*Jv`McQY!Qf{G(nsqgst`tg4 zE6{I$x`3MfqDMmkF1J18Au$eccchp+dF@Q^#5k8hIAum<(>$1J3U^hS@|Lrr(0+W6D7klU$ zm%cHppqW^HI$8ob;NNC32uc?75wOMr+OKI?T2!E zLz9KT){nz(-&~uPgFb{ICBI&8Mm=Bkhc!dE!dS)9?0L3qYlSzikJgt_ZoiF1d^7c_ zx=YbBt~Y2DJT9~T@)8w4SQ}mKIPMvHtBZlLEDj}s-FQv{K0#OlMm;i^6z^7YZt_(P zBYvM18%csXh*lQ-;^O1JZKB)ujKM=XT#^MYrT1-42|U@Mfg$a@7wwntI+JfbqcFKz zVfOHqnm|*WL=-s;o=g9uSqEC|Ws%{>l&}{C!ytKr*3>tB2?9@k=JTGT=(%(lohu<|iH(AmXIh*X1B`ZplcnaJ9raaV(;CsGFy^TqP&Mk5kAN z?0@#7+2GbyOS;~~I7(VXz{Nf4M!Gbby>4=0$z+d+=_SkJS39c~UQV`+ohIaoN4tGN z%LhGA22d~YBpQ*mU)3zd&E#!^Q$w_>F}56 z=$NY2pb_OtQ`KEx$+Je(EJyc^qs7OkBCKAVJ#+@+^O7rmMb`SCl!1w;j|ZV1?vJ4Vt4T2dIkFFBSqqW0T?5#Dw~Cc;%5!DBd$eL zT45_P>sm|#eph}!?Inc9PFGFk=U(zT;8C?YC%URQdqO{N_F+!xQu z#OXw@@47ova`VnkGDM#WmW|f616HOG+!!^cWVE9-%@YNYUbI2&+QwI^9KT(1ZcvMu zwBbL3fxU;>BI4}!)b=RVXRbE6-(1I$a}w?5Z8U*)&5S#VnytG)> zBMI#hI!kzcD)BHCyt0f2Zfe>sUdaOHh-kwly71QHt&&YpWC-+HF>KV!s39;Pyoo$A zq0OV?tBdKBEj0bh82TX=GiD)k(Ki-*1I9;6h!I(&Pt^cs+C6CyL9c1vEX6uTB%s1H z2G8pAxEHZ!NN0@+@1V1_5tO;ZW^$4(Ji-GzE18a!qi4x z13`NB7MqlT0>WJS)3ZiXxn>QH-O zuGVd{LxpBDCix8skCS{|)1b*47|TIu(#UV?u&Ola7P%=RnsT1qR&pEG>OCFpbY-~= zVMG!ec?M4PipZGlgwG!c6G~+Sbql;O^W$rPF2N0t}!vld=Z6vE`c#q-EkhPhyt;z>?#1a z{y2>>@OY7hy6+@@sz#9BEYJ1=q8up_sjHRTlfYgw3RicObL4^*K%z|t@^<9k5Gui! zhg%A10HeLL8`-AuCWU%EhLrG#-{O0;~V^m3y^R`}(;U733PseGe z$;S?ELy)Z-J9KRS>{z#hoX~QHtd5fgl-@$)jC--QPzmGU0n<<2 zuq&kyS|UnuNI~OVA~i@^S_o7mrMreyA6JTxfUs&@%HDSnpDLZ@J?c%A6c`a38Fh}T zCeIHvgQ@OjDOE5DFi2#{umPwv#c;;_CSmGA4%QWRv8^>74mspg*h^=@mQr^(DivAa zBe>q@-|}fB0Ry=FKuQ8puvdz|D%PkO2!*LY#9b)d_z941ZK8P9hGl|}vi(f6c_9u(R`rJxb}y3#$kEaA|X)HnJ0 zS>fxlC0=r__p0-CVEXKCB|7l67yvtIWh8r?ifE~=S8Ml`V5vy1WFDiv-fCpmlceRc z6w$!7AD&GIegRWca&rekx)yZmqlPj#IaTrlyf3h}o*dG2WkLTAjB35ix8~`KK4(LN zOq0`omg{tOGT3p&4I0zGua%>FrH$##bnDoVL!XD^yTP8apZ4-ThOC5nvfHx=ObP79 znQGpnIrX`|wFV&tvUEGJb6u(*e1jz>@wlh=5iHNnsLeobR@=D)r%4w$HQp8y{7j;vWo@jszr z#Ktk+zlwU_kMmMT$uX~Jy{2a7?BT2y#r3xg(}@}igwQ+wWQik}sPSS7#SO=P6ovW7 zn$exS|8wgP-~Fphca)>4XcMjTtkS1dlZ9&csndD2)v25T=L=wFwbE+(oX*!sYksz2-(U!%+l?xj7BoC#A^zq{6?3E}6x&PmNe2i!lzp^`DJCrMT_QG8RU{$Mu= z0p{y-CkwFh(_|Z?_CEKp1?xTC`n0m~+GiT0rqw&l5H4_gG z0v5h6lxC6p#dOW#*$B+fo!Ve;@dguluJYH3e0A%{*)wze{%5F3W`pRAh2{j9Lp3|1 zKWj4Q45sWl4}S0b%R>~IBLh`PAI^k)?0>|Ss>CaE(mu}As`;n)JT9a6rK%a$XHdl) zzl9U}*{ydzv;Tk%h4PH9Ke+5|-_}w8vO9>HnffO&-wu&>Vg`LVWWSUX*-!mX{Z;jU z66URXTYT5;D3#|mV2M_xl&dK|hbkc+>!bSK%<02PK*aA@{4iu?^8B7NFQm;=)jm6B zW%F4$+cJ-OgrQXl#uS-|E%fNgqIk`ZgI4#0H~M<=LHu>rD8mVUy;tjje>P(qR;}ql zG>qd<`aHp%d8(Rry`yw}*4C`!FAmQ>c=A;I*b%odAJ>N&Q!Vw&awwU6)X9QF(0fWA z7!=5M0W3y>Q0e2K;K9|+Vj}!hmvxXkJZNO{*OPVtlwR|;7!ReJ^2zpwrsvo zWs{@(;TOlbR#K);kYyP48c5;yA8?)g-2!f`C|@DAb3 z9xt6UohLJ+q<`AOaMtI@RQN&86yFX)x!ZZ;Fw+MPG&Exh38iWpo;X_2cjMUxEtrp) zjkxvdc;&eYEgnAEDo`<__`}`A^#A?Ze)lW%Fze`E>;Jwd=9$+l+|kwacd=#DU&--@ zgDDSexo_R*Z{*hg`zMcv)!9tU%c~nDKwa7GCzXxEo zmq3~OI~*zeZE1i{4@Ga}Rzb*r_|x!BQcMhse)v4XKhv|$eAa~Fc_3f^=W{e9q*$RG&T6Dnb?(6vk#mCG2VY0mCO&z5%pV_+wK$SSg!M4f=`kO z@+0gw4(XYFTq$yV?(|bIu_NbB?|BrW_0R!B1TV?}NjD=PHJzRPF~uQ%(u5A%`F9`* zld-0Dt5YLD(8F^c^Y0)_;bw7~zTcDS#mpS9lVN-#$4SiR+1O%l`cs*aDk}YLph&s1 zU-Swh)9Hrh$??$0Aofd*E8A%sOls(<8N@zLfhKOTXu1MK0ZprpbYq@??IQ0m{!Ibq zM>0JZJEqK!e9jrnZ{nme?7UCC*G?eJlh|?omH(Fw$&Z05q`rSew_|Uw-|=M6dnTZT4tp?T5x}>0e>~IN>7=G6Ix@a*2oI5$4wt?hjQA{qu3CSBQB0T5uI%uM)4XFL#!s^=+A z_$QY5PtGB+py@xKT3DK)(ZR;lw6Kl$#6HRR~|F|}e}NX%VbH<)(Gk?1o(~85?w0L?zcZyFU%4N74 zq4*Pu*~tVsQS(97KngV#IpN-d`Bi?3BM$qAVFx%-{ zKYE9}{oujjj&qsT*P*>EmV@0nNgId%?i8e$>w8D>!GlPI&qt*3%uM&hkkHNVM?}o| zeO?J0?3f^BuIMNfRop(NB??4J_->#=IfMUU9OfcHy8o?R193w(F-1Sjh4?rqnGd2Cd(&j0H9ZLr{EXtmgS~Zb zAZs?xs7TkB^ya3{WEVd6x7??nH*EL#ecK)%#a5j8?SF@k@YDWJwK*s%e?2c`8h56R z=UVd(Jt&=i-u`N*y(4-cA@b<({cQ!G47!K5eXg1wzjw&qQmXO*AD^}Cze~+9XTfrw zH5qoBsaT@D&GebAk=Yx{iLb`K*v>|YVEEl%gaIHjhQQ80@DRn5<0+-b(mwb3;jxbD z>JBNgEOf!jauyQcHl8{(sSKl-I6OI!13Gf<{`*?D$6QLI)pbZd6og!hlIK1?!AXEH z<1q{cG79WLHUXf~TW;1f&R^I^1CAXR0d}bneCRroTq$B^NO7o#H-7YYF`uA9p~6-z zhlh(nCBIxk(-JFui}bQy^eX__TF|K!X>bzAn4(Pdk*(ypw8F-NXhrqN(_=)Ef;-hB zOH%PjP0v(u&bY-URKWJ_NqVb*v`RO{8_8~zFm3?D;kdfjL^Wkn5Tk=Z-)yt1>dBAU z6v9TU)!%)TLp-cvFYeng_kL){>;dX>b3MUxmC}g+4N}Sbvv`bYMKa;z#!s$$N(O5| zUb!cBh;rjuAf6;~%E1>Rdea+n_=>1q)DGVi) z6Ct$>Ht>V3qX4ns4m zP`2(74hxC^QTNH&1zq@f-^ZV(xK9@M`6OZlFD(3wtO7%!fu-YdbcY6%5!iFA<+0aM zKx7S+cZ9yJUX)%sBaND_0ao(RIMicuap1xVq*F`1x2IBe!7u6hnDmIN^Kui#P~h;V z#t7%+@1+~aoX3OPQvDPR^VxHCb$um%3fg>7)%KtOk*Py(B5942LB-(t1kk97=TTge zw-*;j7lRn3SJM$&?wM*VMnFy|Fd0jv`?qhnlQp@P9^H)~forX0+p9jYOQJJHTal(K zJ&ix-dT%$8l`3~dI_gSA4`p+WL+QnGH~(0TlJ{bYMXph5@?ZmU~oAJUQz69*8wxGU*p$~H-*-m&2R(6Z`jv0DzcYgJhkN7bLimhSS5?P zmTT}{VShrxDu-IQheUVx(JknHfCccfd$Ko>3m^;L^*4i27OMYB-(pX;Y-Mi(!#D7u z>b~x)V1k_(6ge)f7puW#n|`3gY!*D9_TAA_Z?1|gyhDM+t`c$iJb)rEa=*LQzx(sfggl}$iibspR!FM0KIVfKb>jS4+Z)j!j`B@`K7 z(Wr%&CN;u2XB8;-Kz1ztE?s1@C#ZqrEQwjT4mwLctY7#)`N7df}0p$U39u(ee1B`Udy=D zvI^;5tDPV;>&_0Citv^hvYg7dS^4n?uyToix)6amd_B@^5*kOZOS>tLkt@;-Jt3ng zxiGLAxD#9jK;t90WTtogJoVn;(10uvUV80$gDFdE-H}^z&2?ruMfwEmzSsf7ubX-=q>xgHJQ_CIK<-LHHl)(hN>~JTj z3W}a60_rdvEAf+Kh4kZ|Q(@f108JVt^y5<(eV0h+N^QV2!6Gi%j(|5^bRat^%wU7x zvv?X&PY7GiGBm6G2jZI_4seWk)^>>~}X>v)k(-grwl!gH-??#uv*iuHK znA*0uw_iPcb31(@h>rzDqHPa`eAnAhi6gVGaOMwTwQrAm1bLW*RhNNY3Q&9uISsTM z;L6@>Zgc|Y+YS~7@`)A*)$IZNcz~dpa(9-U7s5UoIwDtoESuM5hsep+@3K2uE6n~o zCn#co`!M|5LvTPi)ek0~csrXugBeFo1=ok&)p8;|TE+0SM2uAOo{-zRzK~{$2a_M| zoqcZ}YNLB;d&^L+am_m;6C3=jHTaPA zD$5PO7T1Vla7$Kg+boI4XPs40;UMu~IYGuWay(pp{!UjI(gz+`L5Z=THQ|c|C|=1N z1-^-*kr%wQ82`58hU+Le3$6L`cRjD`Gf~*?Lz1ZOwkL=xr)Mc+6DumR;if>h*++#G zGPdO0-FU&qJQroDVH=~W5T+UC=2^jE_&-ArlM@ao)M(gxklpM~EeVSpZSiZNV!^_u zEr_((Zd5~7g@u!5t^>=ThQ;5g?M@QK?Hpj>LbVm-Xl&oo4NVG5!%5n7 zyRqmIR7riQ&hD2zIapNbUhN|C(S>xYaH+@#$+jtyX;9Qt0!n?KAJK1%s)+d0&2e(J zNSxqPRi6M4uR%rhY#$F9R9SXlb0d3ZqE0Mwa&)ZZvx#h713Ye2mq-TM2Q&8)JGlkYdo`t)JlGxjB zP$5`Gxr&rc{;9Unl|BL&7P4DX+L>$Udzf3hQfy?AhMaXyRtW*C zeqFMXa3RP6Xuty|!Z=$Xu$LlOnR11x&bT9{5z+Z|yoc!BUh{5y*U??v+0`QV6o~mi zVp_Nb)o%A4F2a4pf_0nMYid(Cy7I2I_{WrZV>IB>CiO6PNYDdu06IX$zawf{ZNzXm z!1nN*c(`yZ`27-b--ZPEVOvIZ7ulueB8cTr%h#oAxd+?vTna3=h~|;l<2kjO?~x3sF<>9 z9z40xJCz;@P$MakEhgAN<6egmU>)n){5Tv{KN5^0&DDz-ROEY~C<&O2-sZo64p*sK zVbp|Iw&nFU4}zDL6ntTf$}ZvCg4%#tz$Y9yTDWXfDbDOK6WqVy;pE)qloVD)=jiMM z*wH+;*~fcyxc(AH`UWPhc8O`v;)1DmTW+9gp>tepyQH|QGSYb}%kJb&e{4J%d1nN* zEgEq<8f}%U6HzM?ZZlR&1Jj=h-4#X$ck~A*kn+S3@BmLX-?h_hDS(yTx7NaJO4D9c z>*2w##X5qLoQgfNNaW1u(oVT6+*Ly^9p^WfL9iY$0=5tTUkOwWdbOV0ePL@*-bN=z zCn!ldJ*NRb32CQWjGZrd(dlt2cT(zE@?ywDcArm zBK{|VfZ93|Ux3G>wibfEG+Q6^|En-`^f1uvt3JZ(UC}GRO1+PYkH;6;u{w>V`d`ZUN$L%E=;v`2e^u7d>`Oy z5$*eWvtnV+%W_Vbo75!6d*5On)KL?pefeeq3D|}q;~S zv4dS#xqzLwiFT=$U>61AS}6t6Uqvzq7`JW*f zXq`q01p=k%q4kQRgES;t{-j)}oF1VQJgb5M2FfJWBL@!;I08}jfDE7|4Wuqb8Sc_` zAnZ$Qsnw+KdPVh&q5=UN2VK3{PK;ex?43HLi#``OwnEK4L}rXVH8Kn+PlnlS z(U9EnFT9?zi+!NYZ4(K6=)!pIu#G#c5Vf@=AiL8`E)>8|GsiOE($$GCUzrizi|log z5v6enHp;%#c!527mACQDG)sPZN2v-=lM(@zwASq2o2x_~nqK2BpBNXS=A){FT76?F z#seP`b#3lD^wh6oa(6D)hw29h^|6Q!5$&#PM;DF)&JITcN7ixD2ZX5Oz@X0$Inknx z&$eeqKIo=O6Jz#A#`A#S6lk;JFE~KB(ap``=-jf7*SeII3TSA24p=!08V<=$P7h*l z^nmG+eEo2>bjp%a@PO$l7w$gVkgg=-fZ=M2waUDqQ75{Ugd#DN=zOhFmRAdL$Z8|> zhi@|~Z_85i+E*8x-)-lo2+PSx!70dI}7rdTMx2q7sdsHdMtEQ2{r@bSt3i8=1G<|}@ng*Ux7S-}z0~G^da^pcxzb#6WI-UT$ zH!^$}7a^r@XA}J)S){tGJsOP0=}<`tGH@d?HGSG~D21f}gEr7hx3`sg>O(*b5oOaP zB;6liz-&GEtd%GjyRjWvOx*cvB^u5Wf_i7+ZZC-oYAWcyCxfa5t}LhSEQLYI)B+%- z5{}qhivGB!iHqAWLIuRtdoBPLPWw41GIcQ$`1B){?_DcgT-uD3b2g3{5wY%lIdzt5 zxxtS6Sd``0G+01(l9*KsPA5^Q+S62Lt1|MfA;JA?^Pxvy}+m zA$mon85ru)l8knE^nn!a1mFI%pYRL*NqFjP#%{b;K~fu7P==(#ZzpIxDH1NJ3ImAf zAj<0zpoQ6T4XIa=(=9{$Iy(K0S6fGjB89aQc4~`~fxturSC?Z}Mr;qD(v5NGbwP5( z^*uH=V8`4hdc#QIt%4x5vcqzOoGc*qxa=CCRyMOeN1~OhCU20XKNtdIhClhfYlGB@ z9-AUsIyw69a%z;WdPEmT-a$nW1aeaD2YG0)tDr*x*acQKM3sYVO{;>Zqyh^IB-PVe zOAv9EoNT;$43b`pFwwBv9F;9rH~>@&=)2X@x&}f?xK%yqz^X`ltM zST@zLn*ewYb$d1JiKBGD`7f-6;#zGM7Fz-jW=pLU3fuCCp##e(85bZ&-r?O{`Z&R@ z0c|_K<6ht!Fwr0kGGt!)&FOrYY3dNQ>(eaA<^mS88s-d*(z-hnUZj7A9unk1m`nsYVBKgAZpm4krABO| z9Eo<=8>WAOexFmml7VgHaxDMdAi z9HI$(o%}=29xZaDzO4Tn90TsGRzjz=3k6960!J7>g%=-@1g7wQ7F-h8_Jf)x#lwAN zG(#>{&-%1qsE=_({DGuGJ=us8UBCrmxRjIksK~Od7S-3ze%xG`HsGH|JiW0peGE@Y zl-AR4Ttg^1#d{b?2~`C;Kjxk9aCSH;qwa5nD|C@qV$WR5()cpRJ2oLZBoxz17!RCV z+f@S|jQq`hximrXa^6xe#HV6qZT~q{4qO$=eMi)>tdhAEuN34Hokt+B_HpAc*78d@ zukIUWy+t%m>v@Gn(ETFXotlo)Od1x81m^*zZhoiH>@d%`7~|Nu3^vRXeyk{@5k4{{ zAu&)BA9pH!`-hy&97#MPfs@eE>hK_CXdL5dpbn{;i%+V23bX^6b)Za_jXcyB^&=k7DDcy{cGnHkK8Wig`M*8k#NFI5++-d=$Ndvkb z?d$?rx-3ZVpj?SVcP&{Ww(yYuR;U?#DgLKiikj-g5KEM!R+LApNt>-_GVoZ~UE<<# ztOS*eTx2q-Liutq+e-FKM4<^VE2;Ga6bMtY35{iLxHNnLU|(=h(^aXDgxx<7T2}OY zi|Lq*%K6}c)_fp*h3Rg7dE|eHd^+Z5N1-pGOzYeW@82A!X6#PV{*Ir08Q7jD=B~37 zk($0b=Lc~>4?KMpIL4Td>pRg79_OcO_xwrSdE!$H939PYzCv4f%o!e~G9J*dw(0?% zc-2J9>O3!~Fvi*9iQhRt6aI|NeES&9^Kf$g-S%q=I^UnlOkGc_pV{W*|D;A*xgf%b zM-ItzGaFStRqsdZ5c9k}m54%^boxAijXhT7e>sH$HhP6(;qN3$!{V{xeq!#PcE0{$ zQG_~}TA?_O)4MT?A(T%9Ao2dc9q&GELOBvUuWd)INVk*Ou%6vd%l(NS9Ay8)SdLzA zXl9ewBCKQMU4Q)yzFM+$qh$JWw6si9lGb&46aBK!7IVs9!H=n$QXhw0ZydqFHOr40 z$eug%6fyAzKds7(`a8~%sXAy)N2g+xQ%O}mbk>t1;7RfCIX-+i5+tsLlotgYNvJ>lXDdE?KP zv00;2hrd6R#oO_RJvQ-Z7s}$)&PDoa&@H$lAo5qAPsN_;U^?gU{hiVUj%m66Kdi1! z86mv_a%A#uttV}BSM&W^#&2UBbH7Uq9452oj#sZ4cb=Xu`X~zq`<0{j8AxXS4<<2x z=dffzdLAvx_N2krz|ad}WK=oa&VtiB}D>~OSIE3ix4;+eFn#|546EKwNJeW8=6#l$8j{eLe_u2e02Lp^ELZhI7d`;C{ z`j&8)qZ81Yy#BjR)%Xw7J@Z6s-#HKSJB=}CkHhttj;_ixQDf-U6v)@4ph+Dq(X3yM zF+(o#(NUt|-`7{5WT-l(l^V0aO`_m^r;k1Uhm_ONGFpC&n2_6`jX~7RI(IC~ah_Nc zL8=|anpXRpewS~cq(hHCoa*ZbNuow zT#eXy)3U@JF80QKwiK05^ij)|K5VyNm=j{3&c|)`DgIlc5%_WLF((h}S8nX??N5`} zPcS9&djF<8a&F&X-t$JW321%HRZaJtUvs&~p7*F_gX5FkFkxYa#*Am)M%K^Gj<)o~ z^$gFSWqJ=&SdV`ggkO`ykTdS6^FKgkn2~Q3(JwPY3`ozz*hZvxKMD`=)_>F-Z9kly zTKq+m3=uu72MD`{27k%i$rMvA!U@3%bjxef@BcjkWTQ9p9q2a3JZkhi7go@^=`dmB zbrc15DL3mieNF`-cQ56~`!ALHG`lOGadd0+nZo7Be;w$Jka*K%yna9FF_Aw%7X7wY zADQSEyX-j9^ExKd02h_UwG&KU0ZT5j9iDBvRUM2hSZE=Fto~? z>#vQOKCcmF>o{;l;)Z~~U~e4+0}@vtCw?^}iJ^a=qr#QXmi)iWfckKnW$b?R@xNBx z%A6EC^(R>5S?5>oHlB|b3q?qoNBP__*AzTV0_@5!I7eNkKqRuRmk7t28=T7m{PcC2 zl#Ep61ZMX-UFg{SOxJ%P@wCp7Q_jxye_ad93^aenzNKRO&vMEu_&pCLlkjv^P55yi z2>xjW>dc~XvOd7V{Yra}n!AP0*LObevQF>~#0;}uiWD^^IaQ*RGi9Q+g><4{G&f6<2nC|-?wEz@r@uCKWPBBOG!(wxf(*!aswf4>NELCjR;a33!ib?Wuo=R4{Zf zvGhV-tDvn9v9ON+kC=bpmn$$M@qw2lml>YEIrd~GpXuoR7oDJ(>|bmXQE6a)ldu0q z^XeI5Aeg7?|7JKj{9mn;ywV_2)8o!%v#CE_$*t=GSM$qlF<9n_>v|z9nZG|t#rpV@ zi{ent7k{ZMn}jB~l) zcO$;pxe#>cq+|yB*@Z$)csUOS3;j5IGJg8RRqizboE`88&#h>^rq!E{!q0xU!tpQ~oHkH$$%F=c8)4}+_>FpO2T(n;4n)|35Q9=xkqh0t z;1={{hI`bz3sktBj4i!0sP-~FvMf7kCVyK16xY{lHy`1}?16~FNSrA_5IOZ^lKSfO zgyMvg6h~0DoCE@4V!NG$N61>KcvNDXq3}t+mZcQa0!gs4UHT{HD3V5D=pEc@P!URW zXiHmuT{>FEUH(^=K6yVJ{!ry}DUQ@jQVv3gl-$#7UIahrHZ*;e4J7grtsh>Q9pd+Kn3L!G~5`bi(aW5#WsGcDRl}6+5iW$VKY%Ef?UqtV? zv2ywN*ZUe|rC>n|M{)3bY#X%vm5d9X&tXd&q9nJ}7iNAR5ScdwsZkU|%i`EANv}s6 z)qM@}0JhfW=$bO&`7if>!n5*{pK4?f8=_E<__w-B(2=n&vPi%VxRRy4h>d@hfRshO z-SJeU!V;Lxgdq^%0*6XX4E*feuI2TFrOb-#JSb_JrVhLH z{r|#4VyZP;0SFB)FEwbZrCD|zNgcv{>m(Kpzx9p|tKAgo2I{(HagGVd8wED`qc|?D z4#o-vK=3-XG$qHa)j!sIIXX_EQ|yZFshlT1=eaFALmiq9Y!_@UHw-}NYbEeoiJ(FC zwUnzTpM*yOXdqI=O;RJgqC?bi#}HNqbOQ@UEQq4GlE(uIu{w?xVI4n4JYp{|E2b%a zlyr8j$+Ox($q_Aeud(R^%w~=}aVKy@a-cwAIQ5jhsu5SMzUHaT55g6>zNpjh+I5E0 z&Kx&|!UO;L(}rle!Ev)IH19FU%R$IC$YqtIu4&ai(jhLhxRIN^Z$D?MUB2xt%(kQJ z1?n+E6WfAZ{sTEUmpJiZiUMTQt@hhjST>oG-fXDIYomrUL(HAmE4~G`EUh|}erCcR zMTM&49)a3TqKsp72@M4q0uAcwbs4QPv-82Eg_ISg!NU{Yi*#v0oEp_&Je+tXACC*W z54Ysn0lWC@Ed$kDLtS_Fzyr0U8RhBLB}A0qPZp;}E3M62Ys4sP^lp`OqQg#eA0Pck zT~56A76D1%h+gp;f!kO1BJlWH6pdr0qjHR89H7in_`7-#{YfN84q;>==+O|mqYG5> zn!d>hUTbM5LBE{Qzm_${_qQPmcoPKD#!6f6!%YMlRE%_l))tw*!X+N2e|35H_aqq@ zbvxxx<)n(0zM(FQTQb#m5Wb??pjzn4OOvx;x>4jL6ZPYKzr)!jdcf*(iDmvg!cw}q z#zgi~1$^*qq)v&WZooq$YmP6c;9X$0;IO#WagpH=n)UMNcdDLs$?h&HYH&ku#gQ78R8 zqQUAZIZB&K6OOq8HvcFnGAGe3LMx zOtc1q3|Xt^Xd%hpp_4u2#Rvse+hACwfptZ_kdUXbLO~vmn`|bT&A^0mdIbHz*TB!B ze}TykAI104XoQlRJh-S99tEA&r^2f&3_yG|0lHLi4P_W(s6;t`5DUEwY$`U8AhdB+ zBIMAAVX=mWwfo;Bk2UeVBTci$UFJ6OAy8OzRwAp zPHGC$7dYftDPH14<>`PfNK1#CaVt%HgX@|#m7EPYlcer&6Z--Hb8qWlf zOKbTfjA2deTpXqVNb=!qrz#cU_eY1~E&T^Z z{i30>-=T{!sxiR_gJ%}oYZ)y2O<|B7+G;>xSafsL#~oiycDys7qW8sn zEP=+IoPWY*bBno=Lu^LVlD;T;4C`L#)R0pyn;LrS`Ub#4J>nz0(?=zOUACs_dY6U@ z^--M~y%Ryu80Nt9&cP3~Ao9Xm|P8>mY6pgB>K z!od>k?1@B_0Aj}@Js?s_GP3Uhpf}7|mDh|jhm7>?GOXWKwTVVvl^J@7gQU5cFT+2< zvw-HOhW4k=;DOdHj&*3`H^64N>iEE2V_ZQ)i-rL)jBqNxIVNSE9ZT62SG{r!@Z+@4 z+Jv4GPKofa)plFuk%IfLBpKk=(v~fUGlIx$Y706yni`JH3q@;zc5t!OM}nG0MyXCK za0zjHW;?+Kz;{G1hgrgQh8J2mo8TK&gR#l9*aBO(oFrF>%WgQ%|BH0B4~j!mxO zRNW2~7c#lI@nvibCHp*E`WF7+vX*&^r_uV-mmTNWvT zbQWgX6o=TBh6Gr!1s=_K?}e=`^}tSFrql|`i$hq)T$7KC;I7M4@IlLIfd#px zv2SG? z98b4j8gDEVK1~0PQJd()rJGx7)?T;Pk({Z&V8;1(zko(y5Bqp0SEfi((P*%R273r@ zkfP8Svf}};@Tf)}+1_3Fe5Mq-KZv|g;W6u#w2_3ii7@FXi=Y8*@t&9I&0+}cN)oO& zR3Y@@K;HV%wty@py9FbO7FenUEI=DtR8~u9;&-uM z0ANx_U$k)^mgx`#RfLWV=u!Be5$Y03wGs;n=7CzT08`%fqnp0uOM-u2)pc3| zP3Sf`azUlzr-i+wxb*0dqaU$*L4^qv21d8|qp}6aDlMg{-R*uqGz$4Oj28^dmO5-T zbXn)phMozUjJb^}u@g#ZOq8fCEYiXtf|cqCfKORX_)LOi7mxB{kE(|9bj>sSp&nem ztowP<;i!4``9X;iAmt3T+wO|;?(^(YLg9v=e=>Zb1|-?KZDkz=tEX$q!ijlm9VrOi zN%sgzs1SMN71Ar?s=~?^67maCdUm;2eGPcJQogPaqj=#|Kh%QNTJYlVHJxNrstV`otaIE;$dYnKq&9mm?#E6j zxo`yD;1=93LR2y!yN=5+VrWGDivLc!o5HLoSs=C|yrYn(9s#8Xq|w+$q}9bOWTRd* zGoYjq6eH@QQj`kgRl2*^?&!F`RmG|$RgncRoj%Cls9IHp;zJ~m|NLr4;x%F=U<+KK z9Az@``oax!B^ZkEQVK{vl8SW-v=TqGBFyR?gYfDFJzT zSG+bUJD9=FY8Oie&mIx)ip_8GufzQFxmW>O;T^9u4CQqHcW!EDgY9tg|H+T+VsI*& z;UZWXc-3tXSv80o8A0FYKE|JAJzP(*3j2Q`0U20Xcm`Fr$W*`#TXGy#@D7`$j)%6E z+dsHNRb3csxy~9==%}I6?Tap6cJaHDZ)PVDn|DKDXq!QrYuh$f-{w;V z@3f>AQciHSon6goQodme2vgX5?_&-5Y_aD9xmG2h2^qK6-L1D**h za%=Xs42LvTeN`)+lPLJkxht};nu8Bk4C+-_5XTv^utI?O;iDB zgJhj5?hq|2(_^&YFcOun%Vb)1^Ozn3?xwcdJ*Y1$yG!`u{MS9&!O6PM8eWJZekQyLr=5au78iw%1r~UJa}xpV^LRYzFY5Fy%~VWxBr1?9@;VA*bi&x z$m>G*3^_B+JS@i`0=6aLB#yn<*$Y_v!mI3oz~i_6Qw`b=3;CPd!4!D*^nN|Y@7tCI zr0Ug*K`vMOcmvWIr+F$UpJ}v}LtUKV3JxGjH@cK2)$Jf9!rTG6!T+ax__sVZE<}X4 zqN?`W1J5H+Yk09v&r+LXnAn`LxhZ<>#8>N=*l^zJJr)O!|b)m@nCdTbk=N>2v6J}TJ-jR=km2*{XlJ>-wXw6 zy8Mc-ek+X)YOI(&x*u1g2Pj>7`e!OIUseqHUvOrJ<^Av|!!JvT{|%Lw@dtoARQ}$- z`#RcC#@C%3qKb_VGg1d;8)DDee4=z|Bk^E9AeM|Yn$7x3oPT)A#+Sl9Uq$?98O8I2 zxZBGgUVxu$xH&xla-6FDi+?cm0agb7JVDEc71~X7Hpx^}v)-0Zj1gKZNT$^6T?YBc zwJVfUNgti?4cSHc*y6A)nm(DxOFYRDO0w`&kBTjfvo?GILb=oj_=$Yc*kbfz2DK$> znIkgbKk`B@1KhYc@~)ULy}ZX(hFJzLCILq%*2uA&BP`CFK~0J4K0&4AZ%JV3X)sBBRW6!*_>rSf&GjXDMINsn{)a%I2RP>_ z=n_H~vY@5xow43Zx+H1=9<8(gww4n?oKG+5bz?a;G&_WqRhj*T6LwW6anXf4z6{@$ z!4o}+w+tNzaioq)r&54uO-L&%R$<*M@lQbki6kZd&U#Nz@7uhiGgC-Kb$@DyHb)~ZP zYdK;mH}+-RDxOs1s%lO(~IP+)tO|%8BA=3+K+8x6$sG!?Dl)Aa@-(FwF>f>F*-qZ zEJL52BZST+62r!DTf)Ih*tHw9bu&2Nr>BXkVnYgcDK+c|;F4mPXe&2oz?lk}52FChImiG(op=mVv zPw4^B>L&+bI7-WDEsN-60fk^8B^L;&H=)wgMAdfH6jBEbW8sQpsn$EvbVr!3u86Lv zd$S;8i>>?`)Zb{moyI>yNWBtp3J~H_k=0&{;s7~IZ7Zb>I@zA$fCT-l#=Pi2W!YG3 z$8fv7W)BT>Us!TD^5zerVje%_A3C|n$I=DtfRAuZq3>U3-*3inijNj_#M5?oT7=*$7_8A`zkJ+7faQnynIV^m&U>}ux$lMR8>VEfj>FBA@7CNNuD~rDp zt&b2;?*ZepfrN`6fbis}!)_pf2s}gdAhZIPH9UF-{($!`r7Kd+$nf#a6q&{CHbp@4 zHrYOF*3O#3`3iK;=oLC^*_LOgQ@-Eah8@%@EpV+l3GM>!CC9&T)YsNt;CLx2SgUG) z=GJv2)nh#Sih^FQHSDoH2?ua*GrqFql)9ogT$@8na)n|0SH#*0m2K;Y7;go%_cG^3h-Z~T7m_u*x+rVmn+a4a2KCi*|4ZZ5oZgzS)P^NqZc#DIx=KIWOs0u zJNsVFhT%dL!`*&4Sk$R<(g*p^b<6E$*^0Y%0^YT2!2!JIi*Xjo0wIlR7%YHj5!HZ| z?E{-2QlA&0#erYpeS5C3w;kfRt5+JaZhMP+$H04F(vHEx%ZxI<7u4{UT2&2Z0~$LH zyCRKhLfWHjsBJC^HLojFbxpbtn&H(nQIfi)z-JH;00000Q2MC@qRmJ?KQ?gz_n0MN!ukyG=z@R=cd#Lq;<)U_}4` z008gx=WvEYWu?PuF*91bm(QZt*3C8P&MobS_v-0isi#jX71lt9UV^c(SkJ3PB>wts zNx;y5{R9bUNN4gk+Q`y*JV6Getg|L>EI}(vaW@*}S>3YkcLrQ>0mX%<6S7D)n9*v% z03ZMWGh$#hPzC(wZriPGmd%m1A#=%KZCg>4RfHr4$X*DDp*^(w1AP1M@cq$JUBV^v zSZg@4YiZW$l3QynYGF3VvR+k<^fwkoP3I~Orqy$pDPd{H#HcPOYg^a~lNVRUs7(*< zZ698>5YAxL7qO1aWQSq*s#j5LH(Q3+P7O=fxU$@AcHzng0jq#tK*PIl60HU@LnU%S zpSKSwa8hAY7*c+wC8lafN|5eRN!ZRI6SA?!;#xPSt@0Rr3Ah1&EMpmc{R6EE#>DUHC}3LgbtBWQINo z5wE*jJi~Ei^}Q8D4~>sY!^6kEoo~A|zO0w%pWOF%poXC^wH&|Xn($v#+z)3B%QxXe1;o-%@>AqHSM zW~LiB=1GR9hr9EoVQPi3)3~_Y4vrdTmYf?2OrPuFbRZbSa8(YP}H;b_m@0zpL_W?ApomahLZwEJ7WTF3aOWwQi-< zC{%YNvdG!SsHt~QpIviYKOKri(e*TQ@a+-iChOLa)^=ma(ca)#kIq ztmt*S_xY&Z?Wr}`_S75HBo+pq<;hKduQ(X0*e%_yNQ-l=vlLE;t(?^>N2>~&lwr9$ z2c;%9=_9>Xiki15>VbG5Bqb5Wb*B1Xf)j9x_`20X@Ib{sWl`Or;W6cp3M-O^8Vdbj zdefvRD3lCldnElN56>oSyy-q71!w6lBeEqk1->8)f;EQryVc+kfs3(ChT<~fN4`~YW62-_Zv9)jV~Ot@WT>&JL2@^~xG-b#bxu57B~|d%LmnuPt9EsY z8!9gLmzS*CX>4A6PCLqhnZ9m_30erZdgqzRBP>9wQX6#p?}};{ zSk5D6fb$PRYd#-w8z^mde3ZyUv2ZjrOvgf>gKQg+XUCDGN;ZN?$k5u6*A#L?psQg2 zD#TO5Ml2%lTZwUfP9)SlJkK1+#FshuKxfh+AZnCMSJ`vm2oX25iOA`mD=y?-o#??4 zPDmxAj_~`UrI2m%F@=D9(jqn25~1X72hP`5D+dLA1b3Cq)%+I!&M<{s}TG04%|1@l3G^qru`T5vEjWRs-xp)ZlOhhC9}R z(BPs;uA&ME+I{z%AvmihZ0jt&Deq>ptj0F*6<7?{szTL2I@$R};H+03Z< zgpLz$Q8zR?WL08YT2@(HQJ=Y4n)`Gs)Tr_QApT|5bzUEx1oL#TOe%`ltp~0!8qIkh zZZxoHuCT+ZsyfjHllZK4yD#**$=Qm~j1;&!)5Fym{u`eY3l@Q=tIe#xnw_dGXJD!3 znC@TDk-@6T5WWjr)hOtBn^haB@(IC^j6mH)06Y9)m%*t&-@GE$yA@NPB`gt|AMR^@!qQWYpWluO#s;i zu({QR5N~GV`@}WCO~@*l({m|j!{aP*NJb-d%Lr5#2Z4uQb1n^L@;XB=qRcv>G>-4I z>dJD6=c0B=bo29>uqzdL{J;}diq-t$L^k*dh8P>>tePHC>Q&<)zf)L7-Q$P6r86cA z@guLS0p%<4DK*XH*C0Rzlom}X5qeTRo zu=!ek-P&wE$J|`h{8iVc*na;)O^7qB+H`sl)~A2Ug7&c39)QbR19&QdRsBEDnfq3E zr}%8dREsB}R6Peu7r_%1L|VA)O-7CA4-FeULtO~-^_(tzLOG(|9dtDK543~OSA~S4 zt2f-=W*5!getr{w-)S##9%<(GlGilVph-jD(R|5YfAiTwrf;taU2+>8FB&Q_&@I4% z(_DlNZv1W@ZZ>nI+&}OvH-4rZ1kW!TWSG0-)h$mJhE*U@$Yj zPe$IwOmR{tR_D4@Fg6O4{H*ixhi8mNy-HRh_*YrZkLqFfR*km$x@O>V$m}od6TmXR z_J(>dUDHQ>L-bV+s zEktKlyZou~#ct8Tv$+cnv#K7{Rb7}S$oe4PDww2STKBQ(_l7jd?_~R#Zu3Eh8ODpt z4=x*os(f{`^GgWUe8P>8OAWRA9VgmEEPr&LtT&|>OX|mqJ;)uP40?STh)yUw)@yqQ%pCoo-+4 zQw5^@s}$Vq>837S)9UK!e{+a2TPIBUX?$(7X|aL=;lD#ajdN(|LK{)vXY6JC^AYh% zUEUjn-}IL@8|GYzqx{fMI)2dM^_7sX)$b5f_l3!{_leQ`SRY@Tw14R7 zsHS-YE@Oggehv#M5BlZiPw8yPQ#Fn*TKdqxu+MB$2!Ec#IWLA1@YTmEP8H!>p`oD3 z3W(~bPC1xHZ%{K;U3B~#b8PW#sA_L`sn!SjVV-F^N*4Og&?^IRK- z5LRco8T3?N4l-NNbgIv*d#%s!tv|#7)Gr(QT@7ubZS%$Iso}S&b;R`xUS2neOV6R) zh<`NK>SYbc&@BSA3BU+Uo?mt%bt=}ZUx5KLg+jXm)q>K$PBHv(7wdNFbq&FVTF1A% zruu*lF0TxS7PPet`AGw@xlP(^etuhMajxs^>s`oTk#kr+LF`-ASMgZm%Ts@Kqk(dS zlhx>({JhK2Z-dT~R=e{452kwJ;=w?VZ+-FutlcYqBQtNVu+p^U;K_8tRP*Lv^S!JL ztn1Yem~S-$onBv1YitSEIU%Fe{1HNn;~X^OnMJzVHL>s^>CC_8^60XBRdssUrMIqs z7H*Y>m9I7G|EtX>p&Rp?4G#Ln4<+!(@9&~n|GXqVwC4P-?(6DJss&h&t2ZVpl-e%=GPsnzh{~|^klvys6L^cNqrMG3i!Hh zK%3xCIpSYVzc*8Z>mlHNm8#zKkORv!t%_fNGPcR9?1wc>qX3`~msPLknBf3XKUYb)?x)y%wk~ZP))@$PU(Q+~?JQ@0Jnztd?JMVy0hRFjk(|=ZhO&@A~xWRTruz zLVQZ&YG{pYaXaqyq5o!C6SLoDz^KkP6&IX;8na#pApKTfXrDM*ho6|nfj25H#wMcQ z6CvhaE*h(?U3!mXr;3BomFefoG6-!+%6F|%Z+`UiPFjtNr-^CjuYR!ob=7Rne+9k% ztgaD!SZ>JZ3VgECy0_aG<{$Lu26AHiKHV;bF{eBJb@`7-M(9J-T0b>XE{r-(3$Rf> z`6G3o^M%Rh=zX#f!>+7DI=4fa6Xxrze6p@|Qg2F4TcR4+8yj{1d1Jpg1n~T6(<1FO zGx@28-{_YoOY|d#|4r>{#ak~Qf>R(ZSo77E=vU&5z|#~Bw(H1#YSlrkO+9~ zC{xxtI^ZV}9Qy%w#@;L(@4f?Um2_w$q#MaY)GHo4GJt%G&NEPzF+c7m%?#333CAcA zlM(|+UFMt$5y{IcXlWjV{P<|j@)XIq0lbwmdSh7$&ebdab<6_zTW}X+l2a=0CY_*+ z@=`mgjieZL>+Y?}pR#E?aIOgtiVmT=5SrF#1 zv=PB@aW@Gw_RVt5jk7$1i!Bt3D!b!lEoesBLm_mB)&xB5{E%?K#@qJf)a2-PgAyd% z%MmFvZ z3%N+Ui&;7v-umZo76#p2i3E1blxcDNTC<9aX7zEOT0?6Syam7617;3fi)2P&YbG@I z2N!g*vE0#t>Kj-P!E`a#(Afq@eH$+)?mYMo@MUlxTJKGwr289yH~3ek9S0I`QL*CU z*(vHsQ;~;rFmOXexkL#-# za##il-C5ZbG2AvWoy7KXC*7Mvgm@W_yD$Zij_>juy^ce|eTqGzkxA?cn~S~f4$0Y4 zh9hr2CLJmMWxuOcna1;YHapqV9)QYDJ7z@O>=={zVfu&H(7l)gAqQ;ls8?%AJ)>RQ zfvY`!%p4=*(x2PLFCa-!h5V(H}@dD zA>@|ShPd*-XuebYa3ShzB?GHo3qTuulM*Fb!7>I921e)RqXR{VIog~^{Sp9q;Do#9 z+P_XN7Z~D2(3hC9kRIGr)M;CEqntSq?5)C;qQ*q9Q6O6Imc0dIf+S5j z4i(?;6!H25OM^DTU>D?jdFbtblXk&xsQaJc9a=EbH~`x)Tid5iDb4pew$m9@X2o-M zLdxKVYt0jRVVM;MJ3+fC#seE34gzvcJUnhU2G|)slOTjBH3L4FS;Vx)hD$8gHs3&15ZNy)7CG zr4Ayr$X&9>#V1p30QNSOK0?Y$R1LCthjEuj;=%q>206N)#Sx*JeleG&jgy5^^-T?bpG$Q%}{Kg`u zgj1f2styi3bc0`py&x={l&BPe4M0*gQ-4xKQb$r#QHZ-VVqHj8uES>r1gHdIb!(00CG)icTp-#Ec#Wz+j}hl?NLH z(E*_)JaL@x#J(&;V)`-q%D4||Vfn#Z#1u}fi0!z~R9e=r-)ru4Hx3mXX&bNAEUCgI1h_(XnxZ5u zsE~A#Qz3#y9*!4oltWNM6yQbsm8&)Z$rp5Waz@r|dLPM*X=Z>uvjvYBcdJz!bIxOb z(9dmmN|!E0+?35B8T_#Qn+?(?Lu_%-SZ<$LEHu9EECWf3cmvD0%102~UEhGiZ-l|V zrNx3;-Ey@0I6tm~dZoQfzi{S)In*svoD+5vf=}e=6!0I*HEl@NlQIPqe}MH#0iw^{ za+-MNQaO|#Kul8aMx~= zha$ci<)Ow~%Nf!>Tcj`=Vt0~-5u7m^^$M0JzNz4M(oCn(*)Qr7S&NYa2s1h~ReKkP z%2>?`H61SA7dlPZ%vxd(2Y6AJ=%I-P^wA)qZfO&Ui&1saBl+5KJ&f_a2UI1S6el_~ zV+#$DoIz}!sc1XXnPcei6&M_;b7r#jkhI6_tTMsxW$3z)?LkvRluF>J!RV6JnIp~q zKq)thz&()J>-CSN;!*d2`a6`S@Rxz8gu`(RP@w|x73VXfkRd3=9~B7yGY1hsH9m_r zy(%hk&x?pq%4~c%(I6-uWam?!VZ(|y_RIhJs^JVA^N2=bl24NsQW>cI%=bQ?lcbkr zR2cDg@+}1&ARHS1(Pn#bmzCV1P2yAj80Hi-6?)Ccmt80PgYA5rLHV^v_;EiH=QbxJ zn-s!7Q`r*sI#u50QPOM}H;9=^F-B=(IkU3(y~@YB&7oc?rjK<~bMig`huz*7X98{L zn72#O7--Yn3l4C}m(_7=7f;B}D80FI9&}AG_Szi7MTtY*tSTm$4_R?M%k324X2rnj zOr&x6VGA6v5rq-LQ00b*S}pPnRRWMF_rxp1YR9mKdvxHaQKqPMrxfNVac%!qta&SVJp7SGHprO=dFtmqrT zJDs+dra49Yw5h|I3n&!_QMD1QVl94*RfiVNgz9T$9WV>zj zynfQJ*bnONC64bxm%N*8vec^x)OHbtc8PGnrX}?0v_y9YKc7(vFDtT!l%6x`G{vi& z1o;q;JUXLS@YTSsP+uTlK*rt+nXJjDRum=Kxd?ne$8^nKA(3wx@^8c-yW>56UjY4X zvc!Uq|4fjVhig`XOjOB_?jndxs`~~u}5SFV5VY#wGR$E zz8Y)nId=H21wwagc$nh=>xb=AN@qv?x#E-@SND+fE&)X`ph(v6=#TT22IwPUoH+K? zN}hJz%M;@Qu2^oBqpIuME967zD~9J<_&j#>U#RHZen5ST`?n?by~@9#=)>Pyaq^)j z*b|xnJ~@U{0dv_rvU?yBtV+%PHzSzSF!`ewO2$06*Wg+ zOb+OV_GE+m`5%b30#lIif}E5jUIWrU_kVf$C&AC6PmXPXjp)n_H)7R9wfw465mA|< zRj?>RvP#9MDQ8EHz<8HuT#VUYDaO=NfFs-Mdr&(#3Ga?40z|mGtzgWRhYF4EAzms$ zB84TAfESOFjELGI_b-SvQwi*6MJUDuIkBt^E8}AJ8)5vk1bGqf;m?haKQ75ZEs2|R zCYLNei@Yk3hkh-0laU3$TA$_!AvCzcBXJrlLacg|PH66LZhQH9-p}LJDR^IBaV}_YQbdC@wj2C~gTyBiPLL9yj5z zXrIY9tZ}->AUH=#Ldt3q)ZFyIHtq9_dRqq4AS<9UqCqpe%eYwYSh8-Z(v^Hm{lM{<1O$Z`j;SRs&}C@0wpDi{Z5>$1MX*w+nXk0XHTm0;|(B zF-9_n1E40;9IuuQ=pg_GWtUE-85qen7XOPFyMVV(RHD31xxr94w*|$Xf5q)QjuZvR zU#|BN>hb0^2|i%-1$q+c(|6_r#yL2#scP;ZI3qnE*NGje{-tQ-ZZ+VcoF>tP`EYTzGvE}@kYM|zi5K_G-Po%sl|L%}qZ{1+5qUdQ7kg`S&GqMAxW zmTJ(u9RLoJ^C0;Rsc?3ghKGtg$w6|MPdIHL5mTA-1ul{Vnq{&UKy=fw_Mn7tzGTh; znXorwM|8me*Xu<_Iyn;36&@JTPLPNxzO^ms!U38>?z8LDf4`0Jk4mja?9t2KaK+Wg zp8{7Ug%%S^G7`ETczDn=2l^yh36cD!_v0f%s@bCa=~AkkI~I%|+ldl$0KF63guAk2 z*~`1?{dvKj(1DD4B{}3?zCN^Fnc~2{fLM6;0fkq9?eKE(I`~{n*KYCg9KWB(9X_&2=l6q8=zbAw2>dg^FT(%)MNcO8bzhL*{JzKSfokvg|A9Az zDP+Lpp=_mO`bg+F$hM*(5JMm(gp-BLde?Ou($%0~1mI#h|ofI z3`lL^bU?P#l(Ur^ha9@D#AxK4$c4^tn8nB>2hExq7&XphDa$2$YzVvp#;+*@cq-d_ z=mAN**aw#6V&G-L;SS80#5PtLh3PX}73*>gJ7S6?F!E9x24eo;5*Y-l>{wDlC+HTO z$v8w%>~y=8n+_m0I~>Y%UHB#^CsG=qBb1`p*upqrB)~VMM98-#=|gP_<3ZJxAh{po zgywr{MzFi{I-LI`1D-4E9y&NFMyGZdEKo%~3NsFMEOcl)s%zZmsH5S4hpRc_!Jt8J zh&ssaT$d{1S+^pKK!>MAlg%K_o&VQttCMEa{tvr@=*}5+=~TiAO!OQ@ALw8f`fTs9 zDXndSCS#o-YA|x!TXzaxHg+I=>Ikg@$!7Ez0{vFe<|~N9m-VzrKI&JHp=C&?C60E* zf^^XVgU>ydknhrLwwaDymXCgM$wN;77cZUz2&boeierKu9l?Ve>xSC){EXmDfL(Y1 z1(Q9o75{wZw8B<#M$OvN#lEcinb%(2R4cQ=5ydI@M5=l2O~R2i3P&t<5uJ-nMl!SLBp!aFpgb&-@DcUPB^CR;V6Z$cG|dQf*3 zot^FF-8NRCl`EbvI7?Y=zW2|Lwlwik z@}DNRT@>1O^L?}xjHQ^RAK|b&>Z15fI%dRbVS=6T)*ZPm%cSbW)QA6#KFE5bGm1S^ z)Zw5tflRjt2uUV`qe4AcFPz(RM1w$+G2xNyR^_Dgxs+pP8+oP>Oz0nE$}&Bj1;TGPX6DZMA-<;#5HX)IK1 zM+e(O9WHjor`p!;Y+NlJT!m4*a*xr|KFbE(7_k#J+68ghMj$yzGHY@9gzY=maNt-G zCgihk0Jh-)D#t|Jyxk2jzbI)^mmLSVz0qc>Hs?6%{ps_N&fFcAyaJkQbsYhV3YnWR zuJ_n&Th(Q!KHPUWYry6bZ<{Ici+syT1?V$VD<^@QWo*jcf;>#8p}6Rrhq;JuJ#HDg z_v^8gxcZ zP-{kT*2R~LqZXwV_gs2Pz4xH58A)rdMDtnKj^et+J*>}?PHpdOs%;{xJCB`nJz}!n zTmkp#H|r!gfuTvDS1s(U*i9gtWGb@d-vqYP)?$t{_AkwbDQiVed=S%n`C)fm0yevy zz{(bbIH};+almPL^7SMNh-MlxnMRBWcuXL+M%Bv$ppzndpp%sMDA*KsOjG2u+#HQQ z%3#%sVgIO&!#hE3%{L-o>_z;}xm3lRo{ zQ#hi6WLXJ{hVyw5+}EBupj4HbT%+koqt(OkGU22hBqw;%joF#57REGskq1X3m9wY> z>e8t%oE+KQ*0=}a^x>8??XW-Zw&ZWMpz%OPq;W60t{7~Bd8i0Qwdh>ZO$bV!~)ego0%81=ME53;+QZruQzp#$5bpFn}YDe}VYRK__Ey`>C;*-KC4K=;;N8dDyX zMyq`x-1QPz8yIVtr%1+>OUpYvl*3!WA%+F*>|hSS-!&ouj~=1f&|_6u;^YE%KudA)7+=^7uXWEuibx#gek1TlLh?j-iLW6vt&oD2_}^k%F}rI~Wo771%YL zflVf+rY<1^sQ>jhrFvRBT~8?GKx$j?-;Mwplezce{?aCkz+$lC8HnuON@X8cdZD5g zXbiMHT8fLGH;~>J6-{aRAn7#F4M#1`u-v>re5aZAE|=Dz6Tg~mO?w;{0Roc(kk!Do zRX$2sg$<)is4Q=h+FeFhL)cdsRuz{wKo{Th^iN~oR5{MdCBYE|wqc2|V^p_vn_%Ar zc#Bh!RJRek01M@UZ$uBVtKd-`HTYly zV=g158_T!jhv-ZSOC0SliZZRG7`abb~9E1POyv}}z3E>Xn@S`=|W@x$G?5{#ZtNqn=>1YIUZnvn?*uC?| z6@3@B5h6%Hj_j!}cZ^--%A(FC-E7L$-1dJ@!(B|xRxpmeiv))*giKChqI>m& zr{{9^8}T#9i^&+dv&Y0;^hb(-%SMyBPk5tw|2*bK=zN80c*p|59nY=y?V?>;5u99i z&!j&X{3=h9o59%|#nIvN+T-kf->0z!ov?pg#r$4D{M^SD$wbfe8=t__9hdRf*eTxe zp?+`TC!&FN!Ql8x|5$9_Zd{_ZY@9}A%vrivfOIG_U2_>*v3+Y6P;#G~gf;ssdh0%> z8eQpIiOe{VmJGXrOy{jlXM_!me*Vqy@1&L+(ZW>qbkP2lz;drAX%&JH`$K1J4~_@E za3SOzo6)cozUK4KW@4#He$n@Zw$@e8CHES1Q^Uh$)dhB!Uiyu^KJN1_MJI{B?6 z+?%E?9y9jfjB|N9SMH-K->beF%KoMeGal)O`_<)WE|bFP{#n`lP4vnElg3Y5%A!BH ztOC(IQ*?TFB}WCFoe+<|H?I8kRrOWob)_X( z|Abc)bDBeB{`9HeqIWtaYxsBe*ABschM-z2UbW!@%hrpYB zC-A_ApRw{xb29pAcrJyF4VleMKAZq|I;!XWJ52{FUM%_}{^d7Gw5z8Y-R~q-m~x_1 z1zJj);VFH`$Uj~*8&0zkqFrWoDiDhbTgcbRfF@qt=*?TSbxgN!5UTPIy61R0B8A>o z&$J>ezBDzWU8vzyEg^g3q3$>AWc6E8U&RM%J+V?Zh`J@nzco6%lE->rKt?5QCBbZX zbm(!siS)w7S(fK@b{W-FTkH6gCeORI(!F7ZlU}IKe`=CZz1MmSit^dbCjHDSGSv+8 zt{^tz+e_Du{-z_f@tn8Vf5VXVOZMk!Wo(Ej@f4Snp0s+-m--P3YVQ^HKYDQ9r*3xU zrq3&R+sPXD%!ieB<_}N5$g>e2{2S2X^1Nc-QRA9FuMbPR7Q5!@&*)3UXEvJTmd%ao zK5eG^eb&m;AmjAkfMWE1-(-nkU^ zr4GR4*=^r$I-y109CyTTU1rl@#xSktVCr@2{RIbx9QiAJ#xjt6Y6_@qbAeQS24Ssd zJrh1(2#wNU#0qCczvdAB90!&oqXqvJ7I_ssbAiKa3wl)1Ws2vx)we_%$EUGV+;S4O(Dr_}!b5yx}u%fhoSJbEZD!Nssv*FQL>(saHLJDnFaiHV|n=YJV6_tEgqYt}oh^!6$hmB(8S z0#UvN2Mqn^)H$R@!*;&XM~yCUCA1!xRMI<1jVG6re(vc<^%nKLrqO6Hy;Qf6{9P>j z3nplPmZG@Ui~Rbe9sa0MjLP4Fa_gf$FwGO+g2CgAJ@ox0Uo*wp)%pwlk3WQ|amM>K zJ1)Y~`PY@aSSsZVzbD}!9$z$q_eXObpx;AS0WV*2rXLu)3_sgOQ!QVxJv8GjXTH*( zOcb0txB~4rrCKaDSoY?4Ghq6;xy+c=Y~Du8rJB7Kbrj}jy6UYB~H_~)$g78 z)B|>T5;s)q7mXZy9+n;)grNxXn+W(9rqgtFbEuA)2gy2jbYa^N+rPPANsJJrTHW<= ze>Q_Zfgw-+)7RK9uk)xnkJs>8-PSCrUUt#+Z8F$TSS0JPXmbTO3nCyYeEG9fS@iyq z{Th)DYa3k98*dy-Sb{h=n+BdSL%2Dy>4Ov44b1wdf;p@`i(+6Ny%*k}M@}l3Zy+s4 z(8sMi?_cxNm3KAd^8R9~zvr{q^JjUyp6?`0**em0AD}RUORBz~phfPW%q{TL5a%L!iD?8&ugVxwCZ|V_dlCi&-BbnzUkB$3?@25-r+9-e)R^<-9Mx2 z^P|Rk$@h8VpP=yEPQ%0Xm4EScrmz;qHyjUX%G<)|8tS=K>6r!BRl)sS@jPrue^)an z-lJ`QHg9mLK=u9_A$UK|s3QE6wR8RlW^CUW>G)p(s7iQ@6gL_h@yv72|M3ca;Mzs8 z_uNT;{E>Q>RGKtPvrVH*D9x+o3+3Y`+;g(*L?>JiKg-YN>;SlHP59;A{CbxnlD}e? z7J8Tg$HXJqi<~9okD6LuGM=J_+Z6!ru1O<8szIkqGsz!NTQ;fMmqXIrHNN%KGR-{` z-_VFmk}Hf3sUH^(0#>@kDxXfv@(zqTDa9R5bz%>N@zvFK7Ja(T9t5naJxo*0SZDRov=<&_ov);3^?wR#3dI%5eImO zVd;+2bb{_Gi9cCYa zc&Cjp-lryG)mU-Cwyap=t&wNXMActuyQ^|qA!QpUG&(9MjKeyhYKE<%wbhD-`FHN) z8p@gj!I+zOzlV5vKutJHp({TPHOOwpQ;erQa=NEDV9I?F$3YvcgE$jldu8 zS|`hx8QwXbU!>yEYrGCBEG9e`=nIZWW_cZMGdd;RR=u${yv5g`HfE>pf-I6>RIjfa zM;auxZgsT3O}%y1*;M&_m^&mUv>;o%)jGAVI6K7d-`2XTYOp5c>PQCPdQJc@s$2i0CN8wluF%*=3`vRs41V-Cb79mSylri;(+Kx`exw8c{i!CkhK#{B@bxK0EV z;o&}*+LM;}V+HE{d5Z)qbt7QiMcN%`dlUB;V8T(l?goj5>iGVQb~Rx~fYo zCzlND-}0ih3C?_FHacqHaA9Ox?9@NY`b~4DtUEbR=b2=qRWF7 z>Ij=7Bm9JDyJ%%;%lh#c3qFg9N03z;1mlsPzx6@fi1-n(B8dV~@ilckS0a(?w>mPOA{%HgJoYsX+ z62ASNQkxAVIbAsxkEMMHu5tRyN zN|hjzX7xobFLaKXj}zs^c7VvBgfj%__>Q-&Kv15Ulb{O1*jQPRXyfHtk=ws*D-+qv z+{Zt+Q;a7kEPQj?Gw(0EP+uUwfNq3>_BYh0`D{O$Y=-u_*k^wOX;i=zmtw+3;=@Vf zj!IO$W*rJtAl`V-e?4#7#1#@Eyh@`Ou$7iFCs-m9{ux_R0$B@`AnmG`4n_t55_Skv zdKDy95}4fdV;dM3XuPmNEGzqfuh@NZ7d6iDhx~yU<$q5mz8y{Va!W61$O{?gpUk+p zwXkPPteaA6U<^_5Hff=;P%uGl<*nBw8vOZ&;YYRQ?Vxm5-VD;K&+4v;I)fUWM&?lZh+7yh1qQv zg+*cGmEWm#UgHPiU3jD#w+%ilvp&lp0ezQ60-P??5B5nJsMc`@zx8xkEmG*AHk?sl zs!uY-Q|AZ`J)t7DiC`3bAb(F!jYG}I^qHOI!FFx%J(k(f=Rqe9K-RWUcu^kh$yoN) z8nI=7>_y&yjCxWA!~EDKF?knsV_qjO6UAr)9wEoMvc+PP42reDU+qi>YXe&g=KaZ~ zjW^l2V1e`b16pVeiaATnz)UFNWFZfPB(%f1Ep1drVQ|^0;alaB>fF-rLG^VPH;}yp zGl8^0LiPa8Jr5TMkh^jr-xAg-Fr-AiR%Bd}&X(-%p{ZW-{|-YD*Nvem@OA!T94o@1 zN;tG|$sg#s-CfL?0iVMswYGoH8%KMZ4dnZUpL-PaL;NXz5bM~5_fq_#fTHu#zmcUR zZk{Z)7*k+$FbO=hS`2$s>YOPo|B?w@D-pfMJQ2A{lt56x*Rv zBnMdV!F*Pgk*(RJ2nawJn?vTRjYpekv-WflX8)PS>xuiA#*p->vJR}KD-^$7yn4Y0}@1ItEXA3Yej zXI4K9ZMV-A{Zd~N8wDN(^@A4##Yo9pEOzX4U$)`Y$F!CjIsw+2&3&C>tEusw7!IoH zES$c@%^5gtep$qMtkO!>3NMSamc_3yK5(ObqM{pFdf3|!k7lE`b8xagI?P4l-b zt%pziezCZ7t3WZE4$7`LQMRw`UA{Ec4Q8?27R3sRm_o$Ba^{qDB6NZUl8rKS3u7nD zd!=Ai6jnMV0PvgpDmGII8#n3u}`6NaZ!tvPaSyKHowELK+=I`c@)u!U@; z<>Oepc*-To<~ot-MH2YBDNYg+a3u-}HTEoc4YWg!U>k#zCif-_z|N4qo|@(N9vLB? z@2fOKa1k2bQ6RKMLY@A3q^2S*^W6j_m0Xw}39?_2deB!p$^;Mz0_;d2_OFV`Gr<*a zOuC5=KJBd&5}~ii6Hf*!NP(iC=j>?se%e-qOBAzFuzqBe_$YKK?&=o$uDWG>7+#8N zbOejHJIM|o$=ZvV1#gjNd$CGzKOdV%&Y~CWHoOdn-DU>-a!gdr8UCw ztQeW|+;nnpfuFW*w#2Gl0NxBrQ_2zwA_DhM;4wgrWt#;`dqRJ)QmpOTunO!u4Wl_F zA837mr6{n)YHoPCXMa)f#|IQ)J8`7g7u{B;>7;<{Bw0IzN9U@U3Tp=>cz;QI#!@8d3X78O{w5`cYMKEmL z`JO$L)(v@!CNK?K3G9elnr?Ck*ZA4!j^ME<_x7TwPElD`h&NhB=x3uRsM00#s2~q$ z5G1hG3+M!vMR|_9cV73)G+sBqG(d)Ec7$F$toLy#rP-#Sq@1XLXONSnnOnd#)DxQG zL*$+0lYeN_7#TVjI8;(G*%}Wy^Yb9ZSm|_MG0E+;SIb>){D3ogr!`? zK0K4hlC?{Il5#rF6ic?U9#zowN`FlWt#022DEC*8% zhL<@3asSW|06qA)RuNU0oB^db`S?5b1GwXFgQ4Og96;^uf|!lEy}@W!nWf~&Lxv*E zssYn&iu_5m@;)Y+4GfYL2^ZcYDq&V`#}M-!pA8bj9*UIGX65MJn^a)=h&bm-`bZmY zQWW8dKOn>ksp6ozM52o^$;{C;#a;1LB9n2seaw;_ZEw&=eTEM1@}Z8*Od@Jm>ot(N z1fU)yB^L$bh)Dp)+KcoTM>dbo?uQ1^aF2D&I2K~efjGg1(9GzWPE><;rfSctyL7P&RTt?p; z+_Q1YH&mgLQ4O&s&dG0gJ#sWL(Kp&uLTcIXbtJCIQt}>eMJ^r$IsN#2+NuO5*-TQ- z2s;nX=in|St*6Pwfs@CeyV*Axh@w7+eOP0?ZHq*^TccX9Rl!=zPu-a^rK>8fT5-jS zmhMt{oCkNvH!!WxO-xnOuCH#tQ1pdu&A=9!dkQ$-LM#100sRVZu1 z!P35go!~xEj!|>ePChG%LezyjA|D4VduWF5uBd#0J2gn&TyLRqCIl0NT(J1^yH;i6 z?>aaR7zAuATQGc8p-8+Tlz<)vfys17cUJKuyNdw(G-@Sm0}tod$Fs0} zT!Q;kgvL(9?{|1^Od-ajr(O-SkyIUB6C4t7sxqkVq4<~8RU4FKHiGPeE~~Y%JZYUZ z#PZnfY?yjA9lO51T=W88I=hkwV3if8Z?;mAHbx7x)vLVJ03vKtC2vBFSv!2*LE=a@ z_aO^CBsP{~!RDg;6?L6d!otm&D=8%Ln#rJWB zw`-`j3uBWxk8XhAb<70oydcM3MeO9`h}nH@RacF39PD;_HoQwpov)OSz-g>l9Q^9X zha6qHm+|TXA{(8_1Aqm> z11Y(Q7elqc?1sL>$dWLCp!|x^e->8xS7!EwXm=~@0-mhWfV#(GyIY+;DXBAncvMl{sy5V}%Ds^7Xf6252J_hP&KLg+%}WiEVgm>jO0`nxxU{DUNhpYpPlA#eDEsA?|%Xr2IP35^$DpV_zO zWhq#j?c-CUn0H@SOvB-JccGK%{#V%oxAstDx7D1@&yE>_pEP9ng$04o{ENjaMc<%u z0Nps%4G&h77&z+Ib{fTH)BQj#6Vrh#V=b9EGj8K*4ES|wCLfm<9juN;4G1N-C5~ir zHWFfTVoQv)Dh;A&!{v+U@%F440SY^;skAX_?V5wv3$A3% zPDj4IZRe>d>POdc;P`Z`NXE8YfmdVwnmn`1j8>aQTg9}@kt^aWyx!AsHz;``q6*k;%c%B@s0ph9_B?azO*WIq@Uz5dZNKgYClIR08sP9A%aPYtrnRvwq zK=*+<^zf5Zie2E4m!fY?4jk)Je3B5n zRGt*bH{Kpf{>(xIBw?rG>tj4U!cWj+WV8So+)g;-jd$P~5*^UNF+VzHw)fdOm8N?T zUP69wQ$48Q#;}LF*m&c4GDf>a)hfXvxw7|>xm;*>3#+@lv=MP&ZA?60Ya^0?cgjM8 zFJ`b!S!b-@WR9Ptts&v7w^>NIkZ|v`Hm#K*<2St%Je@Voc4lfca!n=2SyQ-{ z0-g$i3+x;H!}_db6GRmDw6aD(qN%VSX&@#CQHC^DJBkxNIq69aB$3p$`(j z>1}A>I3FV&l>m}Vj!l^>s1a{BQVwYEZOrn}iDrjaT0P)_goN!Y33D_oyeYC z21P57pCM0@h}&uhT`!Ry>tp zO!J}W8xKdk^cnajpkP&%fyPTs0;DxUD1%FU$~Q*>8kV>pd$}qYq?#@a6@4zgku)EX zD01vqbjT`3Dj^Cb-}cZ;U_GOHoH@^vl@{7Mq!SSr!wFF0Mdtow zFHR{go-!XOqBvUP0?Mr7dIjak0JeV|Ii%dzW592H;nIJ zrX%`%r2h5Hd@21oz{#n?_h-_tVD<(sh@=7gSib1U3GlV_6ljXWVx5eA9r^MwKBDjinK2W}_kVSrQBjXkX`&?j*;CM_#(;f1 z85kWspJ=KRrWI0D(H< z(m~S0b(#uGi-Mspq!zBB1K&Dn%mR4Aet^w{==YBJ8|7?>H1MP}q2cxzLkGQeNGsH$ z&=7_&xTqAdEzZAwv;Lh-V=O3uE~b2S zKXr{B(+mMp=8i>N77TGTymOM?rgsmmBcH#+JHDi2yap6SZf(ImU!1) zm9>Wtwv}I1;Kmw9%mC?-h#+;u$_OpFCvZ!E?6m{SVMbb{MoF-@Ii+RM_vgf~IYs$f zr0EO!xZ$z>^I;XqUN$}7aY=jrfDmG$z%ku+w{?SoDloook|xNj=+yR}DX%+p$bi>* zRU$9FdW-22NMb2Vr}wZyIl+3=c&XjuDb#jPq&P0rIQg@oVDi#b4)@3gCOmWqVjE0s zrf&owC-(HBO5IWXykw&D8a2L3`@fGY;~(5`a<=Uj@_-00^TnM;-3L%g*|pTDVuJ2W zLspSZiy0LT7E<#cH%OY}`O~K%5#?wCEp$kNUTYh=FITOKz(^}a21x4`VO;I}Bf9mF zF0V^sJwxY;^&L+Pi1ApD)}S$e%mvmr@sd zs(0zoO!p*Dq^>PUa(3a)uYWtjF|$+l&OR%ZaFGHef+5F$k9FDocvcoVRb(1C-fFEF zf9JhJ#S;uVu{4oRa-EK>DhP5_l<+9)5A^hw?f_Xzjn~G~WWe=AKz~v592G+QHPV#m zH;s1~(54{KEPyLEHPwG@22J5q`1S!-PX*68{UFZMmpn7$q-?rNrpBI0K4?LJR&hd^ zbH~M2r?2!7BRZJ5luZF3WMJgPteAs*k0R@YgTkEn#C?3zL6S~xt)wOt>g%lx(~YTgNkU&$+`P`Dm-dBYyTT{2JEH?HV8kE?Qz+l z*zBe0S(xY!l}4yc7E$0W7!ZFQ-anQ5IM*J|UsF<7ic_TE$g^3GicG-m9^;&6M=RyO zw=0`VZXS93S3{6MfvBtXAfiP^q;J4)KxA(R!ty_G5CD;1kuL8wC|CiwV!+BMDkuEU zr$7uDWZZ6JMHwo^(@qph5&g0C2<@+x;*|@7aV6@*f~xWz2xPN!40R$T!L@?{ZZE1M|r*$1s@wr?xIrqhrj;g1qB*oh)t zJRF)}o?zyWI<*}njT37ZfDBPC%ta%_h4Nc(u-O>5Cw0NzVAt(j@kvEG zRRO_a#}z{gIvW?_idU(nQBA9-+r-#zdXas7!5H6Zk!6WD9&tF2nOY24;N>$*jhd?L z#b_rGOB+Q7qlVBI?8hDn#{bX+FILzmKe#ZQ zJc|4>D{&gbJpjfD1{ww-GW;G*!62ptDu4$?BqaqT7q!yBqI39<)(@_Oh%1Z^oaj}L zY0i2gN7F0aG@3o=LmJE@ghUJl(NWGB}#rm zzUSM?SQW(w!$Ru#sUX%_-K;_I9d8e?J(*s4;?+nT~6E3bpT2n5^Y|?t3d^=Q5rXssp zmw5r5_5dt}$w=IC56U18i#qlc&~Cy%G~YN zPes9Gw823mg-RBwl{Kjufi^070H$+b{E)X@3LrONNKW>~R%EzGkiF03f4iSr(X1p= zV}P(ZnKBrdH529vp`e(;#E(J3Sgj|zZg5i&!$Y#W2_Iq>d|30=5$;em?(wHdW7 zR=qv8T9n`hek2F)6&u=p3t-9@?*msR?+;D%oVJaPnr;CX-4lKh*nnvA{jFgz@hp-( z&9wjSg3-zIDx(OHn8$RbBqu~nWF`pwf3*3j`xl<}zJ(9Idj+tG+~CNdYjS(cy(=$k z^G36C$AW(j78Ctkov-CrJgoe<~u zd6=Jrb6U1N%`dg97o4o|#rTA9oEaXTkv^ch^7r?-fZk~>Ecsmy*?{(^h7&lvpy(!e zu;4+3oV2!H`|UG-(ydO3|B%5TS$n2V$tMAGIiA?R6ew~_tpk)eVVnEgUNEuH zxWEs!{TEGEg#AXGqvIXj1d$>`*=pqzI$vO;Ro}Xu7hoQj*3myP+b#Z`rl(o&8lurg zg&HQ#KYi>^BsspX(mubxarOItvHPzTVe53=pTcLuG+~*zrSadOtKFjbJT!_lNSoGe^Oy)7*FRvl`|__tQ8h?f^(ma50@C@ zCrkS}x{r681a_*Xl3b*FAb0}Vrg;lbBTrm?HaUk!{NvldaO01jV{p@OfLzvn)njw8 zX@9eYT<9hqT~1Q>XtJvcA-4a9;s3h!9LS&e>0!0r{TxUaN-!P&*GZB8V|&*{ovMX_ zm>w+lZ`l&C!TgDp_RS8}l=7$nMXe})1&F0$k=~34VNL8)?bC6U=oMY1^Fqpz;?xdF?#0##=(BgcGxOdZh(&{ z;i_e9Uu@rL*vh{pp|~V8ZV@+IMP|fvu%~CkCKy$7e}>LdoJsJm=k`Yv2K*P{GjRMP zaFNap>@W7r4aE>y@%-_2P-1Gdv7>nr>_1}g;3Gv?*S5588a=f}E=z^fZcSC4s9EZm zzTr@^8sXVHh#erB+RN}ys+!x&ZQe%Fd#)QObw9!|lHl^y=Y#0NXc5|+z|txgv(jTR z4rUW8=HsJY_F1hUbmaWPS`q7gi^^Tw7thI6iODNH1J~6Uzqu4+vsI%8iWsfpS5F&F z#QM<}<6*FRBX^-SQu8|6v_}iDT?etu5xO&5glcg_^Uy2!o2c<}8Ts<0>(}gBj_o<< z5iXhWah>6xio8dGJ&30GXBkcB$L(;MAV;tB8yo~4bq?8Ui=Dra*>1GdWqS718$MEb zm$Nf8{JoB1-{_{CpuXW4C*b0@+a_i&nMvx9slhbm+yJAJnX*XQdntln@fuEgIb082 zGc%`RuVQ@~8N& z;;@*!X7)n1$I*5=d0KU!P}-D(SDeYMcplzK%%eo@kgaQBA~X(!wb)|J`R2L3H_R91 zIX1t94O->OAyMJ#k~Mod;0$Zye`$h#_D$ob&lF=ri_b z;fuJ4ov3^pYE!hGYdJ(OTJ=3lG|v2O^i|jgxp}i`2hkNjfTlaQyAA411_HT|_Got) z##?9oc_{)~WStT&gguBKEnJJyX?bC~Bdtcvw2aASZ{PbK z;<9U^>PbHKsTK|*SJyN9Tkd@M^5~7p!hA$?LZg^_*(5 zOVo!wmohwt{5e>_`n~V6~m}X!)^O>aWpU^YQ9) zKcb`50)%X-*)A7-u6eS!KX0m^npS1Fu-5O>74~nYXxOXqY%y@^#!!N*Rr8m|IYLFa zTz^fMDL#_*B&!)*Za}`qG^ogLY`!`#uy8kesa!#CCOp@ozo;Q~H9Tg0P~_|LP@7=i zQ(b*&VsEFypJdrW?wYIORwuVc84 z_ay5lhkp*F3)Qo96tVjd{i*c!!^*!o>wTo1NquQ9A{2%6G7*7qbmzaGw_)a4VZH>t zvbu8(r+umIW%qBbJ!jTcJJ!B3mODLx9&9urn`ZtI29iKa?(cz$uH0wfBZD!_3nnbC z$7K0_`e~RM?wq9E$Ii0}+^%N}c6=v%GqqidlW>sdp;b2>&e}nLo6C9K5^_XoW{Fa3 zPF!E}J8>xUF}*WTX^Jkeu{*durxj&JcsXA)1qSqn_1l4FZ`rf4*ZUQh+&*u2M++r= z)EhjyPq$0$D#f%^KeO@gMl?;zC*S281WUKB+IrV>Sx#2V>WN)r{P^P?t#^weLtWxJ zP2VLtmy=s!{6F`fd0*IiBiLJde5H)nbW4lb7Z>JO3#9{uD{)|E`7Ei=Upbe?scY#C zs%7J!zebytx}hk6GPd5(OXq`wa4a5}nWob0eN7T(ZTvS4qr3!zv8>&8Q!@we zqs`l^P5oarq4CVKKi%*0ZX9-t+Zjsi3_LKmH%~~Le#;8{SXjH2($nkfY$KZ18(i!5 zqH3L5Ibun5Pr8h6ylc7Ry4cpmS<}aPy`2XV)t$p!LV3-&^@ysj<>%JJOQ3MMKXd=( zOGf8?{Zea$tQ_l>UNdHu&ef;-Y$NOUS00V+I#zT{H{+gS+^#@HHhI)-!)~8~5zL!% zpFQ>(m#h7o**IXmezfsz@jRlfsc(ZuP<>zf{*OsHX{z#UJA03xfXO)izk$Lloi9!4 zo~pmZs)TiyBqMp*LHwF)aA;;|fAb92Kw$_i&%6Mg_e_BP z4sM=xIGWOOdHZSKv~a0gb^c+z-)L^o;h;v=$!@7MyVY=cto8EW+6glGC2n3}oqXt4=py9r9Wl#q zBUT+zZlBCK=W=|eBA=8}8(g=1h6!}b47zl6%g}#E6X=9pJh-p-wL-2I1OhTKh)=&M zwU`*+xU_oJx9nN7dE8%kJDC>K^!+sr5uK_3wdfwE%!CY=!K!4ioN(GA~0fl(^fH+3zOZ6^tgU9a1 zug!H({7gkPmb|D^QSvh*tc7ntxpcPpocB73!&5&bUUkUYBGqlPrglmzwwsfLv=%#~ z2pxQkiEwIfN^o+3>l$t`Nmmhk=nanbl`KYXeDE7dheasQq<%PJ0;(I~J9@JWA7LOh#nmveIF%vVc_NiV#`U zZS~0%xj>8zp;Ep6%Vs4JkxfiSXO9%BlD-x<`5r*8O(}JXumchx;AD)BbmBnikJ3Qp zb&+{%J(wX)kQ2PdtK%2kt<1*dlB<+fW3tyRaHt|3A`&8>?NSrdfc+_sTio^EmKm5! ztr`l81DYtNY&ScRnc23Y0Vp+5*g@nnFfk3$+UotQaLpp8^&Kd#rP-85CQ!?pJZm+ez zrZPSeY2>502y2a&FPJ8oP1u%?Qs{IE$)FOTv0`=AqC*Y}sQ_I0@f7LHSjw6~bt_vb zJfcxRmsHid4#~zOe7*^EXf05pUnW1Zx{@rf*{Ap%74XW8D#fAJ4_?GKT})J_Hl758 z{U(*n`n^<5tcw|jBC^9_JpfZk1fZELBG5u2-+VP=vKJf{H)LTAj*@m-Yk_HXfo8$5 zZL9G|==5GS-v!Pd{;VGktyVu*0$wHJy0c};9T{zD$~aqHycivwbCG^l00v|~yCfFe z3o#rN(~~SpTaqpqkea=yr7bAlt_h& z6`L3d1LvtT;AW*pS!+-*c*XKy?isfPivVfgEfJWW7gyCA%f8 zl~78*JBTWZ(vb~FGWZhqa*vTLg?LU<)Z`Ayl)-yj1X(G0g6#`%+5FTA5U1{~#bKHX zTNFTEnwHYKPKBTY32bAUAx6Se4|YdIPM-OHXU}}}h5sd)L2^hE!O4~f{fr#l?KNPU znV_3{v^B)?&DOjO1NxT(_zVTX@hae#<$EYy-CkgY6oh~W?IN*j0y@ozmn5ZYpc~^r zEu@i1wNt)5)(2^Brt#ivZweYVH49MVWYql*3$XzNnUIWjsc&`FvW{CY#SLs7j74#m zTEi)})$UW3^;2II5Yvx3!k4BDc?a?Wg%?!d{ucT-Yjk(OfR8-@SiGJGxA69Xg;(_W zW&bE?XL66;cZ7Qq+9&+BZXrEX0xPUS{ryUEoCM+U}*fN(S{ z*zqB-HSG#uSuA~#0Uw48N+FcO-{4Let0`CYNJ=ybP_@#y=k{et!m%SB`BO+aQs2B& z_XZBeB|#wK=&eN=gch-we2o+-tl0P?OJDc9yr}%}CuC$KY@*B>`9pG4OoQn(BDZi) zI@zG~MwAlCuwCs+99*?Kph<6%@pwZi@EQEs`Zq_KazwTNY90?%V)|T!HWd0ytETnI}2QsI#+F>^zMHY!P(&7?AE1y8q zaSy;rNJ*YZWA43HWpI5^o}DBYMXX+Wed|E3T=$epfU`GcdYI;ek=-?jzdFm?dDHL~ z&t*h-O?{YNE=3gn6qMl}X2y{KL^GUZ8fYpT^P2bmtM_-+Oi=Ve=!TC^B#O0`4Nd)i<%VK9+)833kV)~sQ7B4U{I zy_%9=6}4AUwzS!f1G!)u;dkmXMx$J4LZEMcL4iIYhlyuRXv+8a=Frg>jcvv`fG|0MJE zGmTRae1H44S}1#l9bHS622M~+dq#%rjzzPrj_Aa-xzWTJqF4a4v=ixYgZSY*h6hLm zw>X|g+EWj%vkVTik4HNj*Ef_b3Z7>@fDs;y$u*@w+}?Wpt`V)lVuOL&fbPOB7G_t59ElBkp!`VB+oa0*dx)r7XC?t-&dr2ECMClf*3-O^CZF#hZ zz}UT*^;$U2D@Hbs$gI4|o)jq>ulA&p<)PPVU{ty+x;<6evLcpgRYS@Fgy+hXQz+*I z?jCJO=(tBTBD?o)l2hJh<2_NU*15&x)osg0y^cNQMAqQ7)~_AL3FC$2RF56!2*xIq z_Cu|b^dw)vnF7nokJ?#^Xh?2?;(s1jYQn&CbPD^)_@Je?(mg@Q_cjy&t^1NVaERIX z+UiZEwI_fDYYI`)JtdUY%SK%iO0=cGedJkn22QK_(o9tD_&e?$YGO3koaG0au(QwF z8Fr+pO_^=3JXsZZqqIZ+Bkv-~1d0QU1^7o+a%bDscHDgA`@Rs@v_{}5frfu7Mk=H@ z5fJ2KmeT7kj^^rFz1~Sl66*s|rV1dBcsF~0)UW+*w8lo2(m}wX;eb3rQIsy*83SK0 z!QHcy4z?M_mn4@^)(aVqQ7e)em$nQ`d`=X?c939j$!?Ej8=Fd{JRd3IiP`5TjMi}G z<>~#=Mizq{*1L`iWE3N)O{ivMl3`kVKX?Q}mIXNbGo_l9%aOW!AoGUFM&~_LEunAD z6nr!+Q83R0Z3muDvE|L1e2eIzWX+=-ADc0OsMS2}xcPTu?AS=Y&{G=>wK zyZ+4u$j_)K{=tqySJUUo*G+(d2k|v|lzvHoQNdl9{#CfEmmuJU@&bPH5|>mk8e-d0 zTwz`szdb)@=dj_g+H+#yEz;<6Sk<^-nl?&o2J2OM^U%( zny;Wz;7IJ~3hbxa(sfyua&<|zpPF`!LKAl2H5!Tl30?kL9am~*>t>CuZtH<6cNu~n zyHgH}bYOlxlyMWx>ZaQnm%<=)6B-aeNV0EKx)=NGX>>^!#2b-&CBqrUr8U1I^x25{ zdHa?W6shWyqaz>L)Col76uv537xE6w(^u=FH`80Ptc%N3I9cdOLiF5@3P2OJmy?cb z4=H6WdnOCSLac+;6_F_~Mwj{u7Y31RS6JoP-S>Y1z-;Jd93E{qYn=Pb<#qQ~@ZOkN zxA1V#)ph;hNDXyAO(oAAlqUMqFDQz;)BEn`3psDT4~kJi=xqF#8-wkQE;rKz`wkT& z#V-ZSPCk=?S9biA zC#lnWmgKheCo3mQ;iXXB8ZTZV75-aD#E*z=C(i1^JXhog;zWnn-VbA$|L?^Cx>X-& z%?|9I_W~uPA)~L$c`SLE_CXyhD~z0Cu%XG1a#mlkuXpmyw65t--24O_S1^|D9>l%6 zT5Tq}fd`;|{0Pe$t`Ihc5F20R-0&7DLpB@HmEv#@#E&)U;7%2JS&_2)`+Dk}xOaBn zC*3sg;mlf&ctx#Vzn`GYl|KuS;_EL@(`%*~1-^kb0o`)p1K*eSdS4tvhKi*er|6P5Pp7rKk6|7qk_Lw`Dd-TLz zqhf)_D9iMWbxEdB0h&ck2t1pqH#uW!zMT7@FX+plLAp;TVF(h>M!6wr5OH-XDauGls8E3qnd<3avJXBlZ zyDGx!635x3bAiHv$v-x4VR8(M&U(f^&I@G2clv*%HPQmr;1*gxs_v9;$Dr{6br?Wi z<_z~|B%M!fS5VuF9jqT4E?)eUF{38iBx8uZg{jjTI<9z9#E{r0V)AaAnRUG_?A1Em zttzm`vLW@`w+h0n=KkS5W!uSGbXQoY^X{5K-BTet8s>H6vk%JP!CE^Q6edKn(so^9 z!Df*tz@TGx7k%UPJs6aH-F^vy!w+MEbBD3?Jg~|Lg}K04s0AQDb3d1Ses{F7N?XaI zpyJvYaxpRqcviN;p#TOVd2EkMO?fP`56+M;nSQjXC8O)*4%N8xmC1_VHdoG7zAXjk z?nir<&Z=HFe9Pcl5K?qkg}8-uRGg=vmS}i9^Fo~>(=H7aV1^ihC+P-RcmmbrWd>Gy z-f7G-V;*%e?m>M5(z42za-Qro=H|v_h+3t{hvf5tZQ2P%EhkV7ciiC~BaI!%d9HFL zf)AxjgcJydR+kP;1V3@bqu9yuupmw16vET`hGW`kZuSLB=*6XY(c1ONxx0nuMP-Tu z2Nkf2`(mAgBxSGWj18})yxRse9bO1j$ie3s79=|i;cc@QOq?3koVVJbgPOKu_@6K^ z^~p|6tL748;e3VtPqHz8;%r;lL9kOgYl>ys;?r%E-E+oP)wtjkLwy zF%lC+>a@GkZ2YbGOw$hq7HLB^9cZQn73ydFW5^DCF?6Fv95jD}j}Bf&^3C1kG6*UU z18g<9Dp^Jev`oLl6>U4Y?_8?{uXH05O2{*~7jd^?OuVYw!0!5;-L}waZj=MzO&Ai+ z`XFbA{9iJPFBR#^T#z}|x*aH9|2uxg8Q`Q--g=K>Znbp5Iq_qSPG(UU%=YP>UY9PU zXXsL=voema#))<+9u0%XxX=**K-+McMn^vQB}sYUB1J=&WIIC>=Hdf`4B)0YXi~lU z96x|!dp%sx!W>5J4{JCy$D4@Gd>_Pw@O}^0`9VX}P4|OF-6((?A5b6S0wAWGlxR_J z(Ienbq4$B$47-W~+h;ucGDvfq4oBKXdvJ;9yNg zI#)6<$!?%K1MqtP`u>za{!`!vngE5x!_uLM_m>erH3b5U<7ze(KmMV;*`ET1g!@>a z#tt0M#QHWo0F!+T(WV2LDFBXRmOLl`T6+L&Db;Y;po+BW-M!HPZGp=6rl+b5E{XZd-i(Jb1r7lZWm4g_wzzNcQ(GXBmsn9`!?U3H3#5U zMcTk$|K%tn!wj|qr5)o%x1#spnzLq02rrTvhJp=_(;iR~v9?gRmPvRdm=NktOQc|uoAtH?Fl!r&)GNjKr{ z-r!y%JFFDsm4H9Om!ND#vHh@^ zLIvkOm{<~0XIL!j)ABGsV5rmEUMswx#OKSe8`%zV?hG{}h*E<+^ zV;NqfL&k6b9R;xJh5dFtZkj}0uSvYBP5j?9@a`KfANo|Yq?#8+UkTafC})0pabFz! z>6Eo#?1SMB=gwQ5%m18lE|NYG(A=X|dCRY=Os+D-pyJyk2H3Cd-^Z|IL?hj@8ypk% zxTECpmH+XmwRrnRg?*lDnLBlIMA%h2wCHxgUmzjZo5boq&L%2^R&?wOHZQXlUHhihz+|A8YYw0ajFhzS6i- zzZw#*Bj#I%o1|M&&-H7lF2+4hjara3oGs7LPUl)CclFe)j;{@l*Oit&cYEHS?jIC; zc5YW(Q+=dnOWEgW3nqu7vcK|fliw8d9R0q5^C?mBEiR~1ThlGoSB$CjW54-Ba@4be zCF~)0ll(NgqfFJ#-c_N0%j8Vz8rA>VnXw(_`UofFZG(Fmp-c$_MD=k*=dA=(e)GIF zejhk(UOnAx75t}qCp=qz`lYJmai&R&riN&vvU53Ws&(Bt>RlS{m#1AP-tfr57b;jE z#sa*{3G2tf(YjP@%>#6o9y(}YSmYK}D+HBe+WLZ55NXi(iGkr~bycFN_uzOp@1vKTsT ztn6BrqXm%jYWd1MieT+J_+r1|>$%y!s&t)uI7;+96%!ZL8s{+Y@$7qgmsQyP&MHT2 z~MKUy@I&^}=_gy+wjgRvD;^( z=={=N;Y^?S4|^^dD(I~vdI1S7m+xo$_K?q9k7xkXyzSb3g#@bqZPw1l>~Hy};#2V! zw8l_z5NZ1NUaiHhEH<9EN&DntKOZN6lR@=-tC&jUyO>-mP2|cx^~9%LC)b(`mZXBc ziH38yrm0rK{niyGxj?a_5_}x(De)B-fPbd5)q-|r`Y&Eo$%9d<@2@k(L;Fu!k8;#Z zsQNb3E_dgTtE>BQ;zQ_rzX=#dHMgeM<+o7HEYGVKJx-M>shdqwe^=3bd8TM#CHwLB zbi!h2`R;XrhG7Y5Z}zzJz9Ie1Xd6U40WP394>r%y>J7nkf){f=d>+2b%MaL>!gW4@ z4bP9|spT0>eaj+kr{cP+&-i}nWT=|?`g^xoU9jD0=9p0)pFH2v8_Ea!&1C$(JMl|r zKS!5Jue7SaVij#LT^_D5IQ40o=KqrgaI~Jz8yWgxk|y`wiUX zt{*Pm*13Hb?r^KC-}JN1U>tP|Iy3M4Y<#jWJ7!7m%coOa{4$>8b&+DiOz_tvis#Du zhQsOdc0r0RN9}AUrftZ5ouz%7TXQKj{QrSR+s_mUpIwO?%lbukQSpACfz*okZE`vP zc_CQx-{3&?F5T%a=X1;YV479@f1*fjc(1gPoIm4stSa=H5-Wfr(5UXMyzpu9tE!c2V~&VYyNmSBzlU{r6-q7 z<_ABtT+V6f+(7l)(p1sqCY7(=a?p>9M)e^2+D4miuk%M*PdMOe4^5$e#CDsG=C=MD z*r4{fA}fS+Mq1kW=j}IbX6P*}Vtj?+2hu^~Y?94K;TXpG;?t7rdtv{^0MFo~?|e!T zO=Lm?1*eGV#UUy}>G!VB69~agqeGl#;qO%dUjjRXeRS?(nU<3TB9eY^uU1FO0zR%? zTfeE=-s*EzotO>^_$UE2vFa@$5ckz86>yJ?2~e%ZfG^3~Md8`hW$}Vg9!~<)W4%+; zJ=mS4Qb22XyJl;(6VME!hxk~iu9q9TWTAD^TOuQEYa2MA+tykxjyf=Ye0sSEODPz#~PL9M`KrOWq;Z4+Dg^HHWyUZm%b8k^*YGW_6qgW6N~Q_&;uKR5ya5cky9 z+@F8ywnr*#U6)x7bsw*hz~WtA!)z&3)bqOAb^>WQY3A2#Y=!oj%4wpJ)YHRN+@3DJ z#3*8oqr3x;s=#5z;faI^NRcUkqnCJ1cera!Bsl!-dS*(G#5fkx@@^Lc*P>E3NO#7R z8VS6}|E`>r+Y`xhtkhTcV90m|N@XNL+&IfbgW{)tzC}%vCRqH7m;w>9aM;qy)TOFW zZxmxABt>{ToJ0V5vFOZ^*ZG=)fXdrVcf+sWIB0Z0QBaO{4N@Z++>sF*fFlnKLBD0q zD~w_#`QQM~@bvp>=%r7k4~7GbwwiShj_N16XLMPS_kKeF7@7tYg^vU!(aXr8v%Drq znbQN!8d5(>M~d6t-ii9R{caB9qSW61X7LxN8#U2t1#bIJKjPtL9^_%ZN3q_0K98X2 zAji0JUSevu5r+$s`9X9{H~S7Abs?*<^>_ zw8S&%pMZ=gf|eDj1v(%|4L_O#1xlHmUvrnoUtMh34D?kY7EH z-ZdPG#;B8j$>lt(Y)O4-93JWp`$QPk9U?O~Omj^a;XJa75}4-xZ%1ly&hUxQ&uu}v zno#7RHc?j+QLLUK+MYH1=xm?vD4Uev`2!ja+hOmNx)?dlD+8#wBuLLFZcR+CT`97T zU`tV=ceS$&=k|lf7oZz=rmK9Tn^K2Ar_2NF)scxvsFo&LvglSR zDe^Z3^l~Ye_?;3F-^W?okQVBcO>q4k~ ztkF7Ioopg5?hPMIX|Q#3@Uh1!Cy(l7*9?*vjju|QD>*A#9|UBZdLM#iLpz`I)Kw^d z7tu3aP6)k`J4&~aBn>?}XBE6bY8(VQoh8znRPcvDOy^2kw*5f{5H&BD#&YRI9Y8$> zbnn~~ol~X?8KA;v4&=Pm^;NUTpwrq;a}<=Lu72!qd%}UcTk)vRd?=C4bDEd)HQ)dk z>>^~?`0J+m&vx?+L(I)0OlP8aL-wSwp!I{K-3B~0pSKw3Ed0H=+eFLjS~CwL~l z$dDh(CPlSdkS0(;|3MblUfQTe$f6qVlE_#bUZmLIOp;T@6E(Xo5@Y=;jdjA2n$>WS4oW za^-BeSbyj>dP;HFI(bw3fT{}5vtk^$wEwNx2dbg(k=)>dKJgl&i1*Lr8({DN_8+nY z_C-j*V>D}DrxlHzZ!4NFZm(_78nF%w<>VA!S`?u@IKaDNq0r)9;Q*OL;LsvbD%oY% zlw{go8%&ym5;d{=tF_wYt!4Bg? z*_C7!BMc=qUO3K3nCW}w5U6|hD%w{ z{)cnxcJObnO(OYK{%HI(+9Wcs_qEr`_y0%7f5~70czX}9;XMOyuk7Fp+Ed}X?HL~= zGvWTd_f9hHIHrUzAIP5k_CM_PzX|_pcpp4fNel2ElZNDvW#!Y_Wy;{BLt{;t4dV#` z)HBw*reH~QqYXbX*>;>WAzQP{gsWbP&nbu9s6BPit-#B40CeC)l%pm2YrUk?BhJ?r;i5;~{LCH*KrBg8nzeTBu!;8PC>?K?6 zQL0iJ)iZ;n`i&PJ%8KjdTgd!qn)bV;K8zZQcJK0kbpUoKEXOFBbM>C6{lLNT=lSEmAxYzD&R^@(73- zJ-c(qHWaMvi)luRFsKvkpdt6A+E)<$5RUDwTMG?!-JO%cbdzfxDUA9r*AJ*NkysMs z#m)nzD#_V}qX(SvsC0Ykm3EMw7YIhoVa|TI2}G?_W*-NhyJ$-yo+FZu68{T77AYCp z)H_R>CHQYIj`9$5A4I7<57@b)1W9XVbj0J*y_!1^(i79W7*Qx<(yl3J?$Cl*1dY8# zz&vWgmB)j;FZI5~dvGL{ye$M7$#9!#W(mx9ESbW*o2g_DdC%(R1lfI6|AT!U{7z3L zd$@esH}cXVZK}i+7wN#PT+)e@FgpY@xVU(@lrSTlRMF{vdmV8i#hs=o+jd%lfyD*i zmLMF47$+&18f(jRX#^XFBF}Lz|Q9 zGgw8u77fuUb5u*|H4CPE<@zflXf0XLI`opv@4hUOa_s->5=rKvUmJ;;;UH_rERw_c z73q;Wn&deP0n~>d*Z!GvMRuUyvj_nm1cyPTNT^ubu;*JF;tO3e_ zB5QCIOBo)+jJ?v)`jT4lspHqBaI?@2xZTxW&}-|6q#{hP!mP?;$JwW-FJaKk z2>duUCzZrYd5jXz-0Zp6V{xvx^;k`~`o+NodKHx+6Gj$@`JB+J#n|D1+leMKpXAJS zdFkZKh~_FLEfTrauJrDi+)A_Gl6>JFTq|Wt&Twf}9k}itLLo}jj{b{-rL|}sHSYX& zT#Z;5*xQ6q-U0M$DmG?PdGjOoiCK^by#1cxuX6d3Htpd#VfWlovc%pF(B`q<>U&75 z^t|DU<<{@w=oZ^bXTVCPThboFL`}nSI^-ZI8F**wV^MPV7Plqd=@s*Bz|lMpoulWA z$R%<{4?!(q!;Ouwk&%xhE)!$)>GtL-=e4CqnZ{XydTSImA>W2gwsfKdL>5YUT0}&2 z7_o9lts`U)TdGFP9X`;~#J!omMwBQ`0fDU9zUE~%a=?V+dz4h+;V9Nm?Jmkm$<5w@ z(&G_vw+jG?;+|PLPPCVBUaTN=eZsFaD%44!d;LkZ4)&9yvZmrGb(Y_b1tPMi9ILVt zQKe+&3g7fqoY8=g1Evdj;_2S`mlS(|rqH~-4_NS?gSS`q;&w0Smuh~H`}w2rgkSg0 zo%`JHzF+|pIe))9g5LI<{;_7wo<2L+1k0v8lbrFTF^{nia<5Epu)6L=AP~Vgr>RFw z0p?gK!XlqR7KQUxF7td*aH}Oym~|uIJ5or=Imv1Q#q_N!-}LDa0DnfUyVmu$di@dyPjdPSTvZ1L&!@IRij}i*vB!n=hJ;vy?n+U@mMFb9$iGd-#+NHA0n#MQ)LKMKVBo%H_%Grk=5^fK|C! zFrSEKE$2NLih>ja`-P%#berhIen8>wF|Cc2g?w+hVtbE#!(VGRZ&vkDq!hB9w?>9D z*I!-{jUci}u*0S@v{9m49_UK~-&+!;sEDbjDIe;n5i~4wR6!gM9N2cq`_tXz}ZrKBA?xS@!B(hMsN|6K~P4 zg*mqw;Fl3)*787fn;R`j)VDcu+sIT!HS%Te*Jn@h^`cw(TM${?9jg+By-IA}q|@3` z7xGg2@CL%m09rfq>m&V*vJDe9KQnsuZFG7ws;zSjso1;(tK%EzvXtZlKtto;{-gk! zpDdCAV!mqjELq^IcM3K7X(sFay7x$slEcK)$3E2+CWi-=4W=(ZB?{kX`yOgdFx&Y) z($yEtz#g+jF#sBigw1KSMnXA0yyut(hr`-YI zA9za^27g4ck+I-bw}29IynJ>x6D!jTdqPt<2Tf-S%TqJ22!SUXx(i*iFKmV!>rt23 zEE`tgVfW^2>^=23(50jd#v{LZ{smXj2Wqpn0UlA{Y*m*a3SZLLvT^hea8%Kv2686zI}S{C@MX&!kd1Ng1G>s$g1ctDOYQb2X)B++H43>toDsoa zTxHsgtq=@V9`o96dyhEA>}O2a1G097T*sgwqtlK*?a3I|o>NbiYI9Uj%esPNUc*^m zgpOLtgsZTuEAIMK6J&eD%3NJKUtNp_jw}2Afl^nhu$KrhmkBkF6eoPQ)jK&V1gNRR zrH#Scan)9W4?syc*D9-8>u}{2R?~CYSIXxWI(F_j1hQ_GdDi+1ej0pJ^9yxc=C<32 z#JFdk6|$rFsOqHm#3w^Kp}3`V{|{}ttK}#e>z$ba?bW{ zo#z51of>ifuv_0gR+-lBLMrklb>G8m$L?UHoZJo~lMMjrg#qPtxi9g-jOx2QDzVCTieSGcta<_ut#Re zHKFdz_SFr{=W^~}kJ@h8R5=UD;jWgSp z?oJyMwT)g|h=ZxT_t&adMvd`i%3rOj2zL`YEA{S zQ+S}scmG}YL6s*f8<9o2Oz3uxML2az(9D897oOWhVAyKBcdq5JC6K!2})i zd2NGIzyNm)uHo5OPk!Siv!M6tes|6z;$ocO_PhswShQHJBkB5XaH2~4-H8c`_1dpo zvgMO^Wl)yb19?-rr1;m2pV}Ih+ z&F4xF=>1-kxoFe3?Ud@qE7ukVVCh`A=a3DD)N^mI;Bltz8*juTr4!;?}W2Yd@7~kl?qxaxCb4kT4q09} zp&pd&EL#5Xr$wKS-7r?erq6_zr%!|4(_RSCDB!)KaloToB#^0KL1Z;6{f_s75+#U) z77{586MJ93hGB$0j+R}R1jpf0U22AQQ8g49Gfk(pM;la9R@v7*nY*-_=ei0B6q2P| zzF{X{S5}$~$wUtN_IQmbL#Kdras8{M9GXA)-=59E9dEQ|q5joTKL9a(Iv*nns7S2# ziFcXF7CwFYA_4qM41@p^?91a}xW*8{!_nd;uC>7WQB==V2Gpl0CHM-umsYA<#rgw1wE^3X0k$rU z_~v?&P~rrOVKp4eV_p5L0emuN7?0+pVx(myN+DEY)Sy(6P>h~49#UhX|EB_BWXeaB zKdIHJcT_OSENU@|A&NAAcs9?}0x*N86QfKNUrRBe`$&$W4sdX40Jx5nr&KCpMvppR zm|O@ihXO~bd?<5Id=~HoYA_mbeeHA(tUX}VoWk@X{h-F0i4;l;P6@o8_!wEF4ev}( z8lWi7l9mF1fy5}$Li2&~h4dL`fv`YP(o%FN?XAkBdO;Zj1?!3Jr%<3c(1@pqzpi=s zPq&<7?-jb52jG(s8^MKN+V`n5TmpmhlO2|)&FCH>0 zLw0^+2;9emBA=zkQ&waLjsSI$s(wDZF0;CvWK+_ct$VGctIPTvr_Y5Z1r6@T_n&x! zw9@eU>Iyobe`Dmp38gt1I6FjBHckR&?HJW#rm1suooqg!bM&g?3!AsKrd|S`SQBS& z+>M7M0{5h2S#wk=Y3+qdB`)hI2ayd6p{Y!cJ5&|bjM;9w(B-D!k9$*QIMyAdTEzJF z6D)Q%NK+lU!;2RK0d-$_v)4EBD!m?XB?EWQ3}fGZ zjwaL$L4|tsOPlbu7CK&VrZj-bQ;x`YrgG)ZJUc+)%$b5bmkgm2mJ}-X98PD0R(2fH zV)zGN`R#Hg62URCx0FV1w!yNMCd&I)vKl7OLGtV_6K)-+@9{d&O_s%S0|l%Lp%-}# zpY267H}KSLL=eqq=0R7&cioTJ192}%oNP=xh7*3Aqe&YQbL}M$>xwVp>5#7I`6xMr zRthN_0a?aj(hUdf5A#30O*I$}I;Mp^kH^F(+kCq2{?jcYt_l-Ih0wMq4P;P2aRm;N zS7D{gmO$)P-%p+@NljQXH0zSfY8!u@ zy7#KFvfJ5DQ3V9~HEZ!kK(seh;HhU>;}sJ`xgz?(HKr&8Eh;iZyePai>|5dTk1c+@ zQVKaFJlHQrY77lW>5a4j4B;JaJBL7UKD#{_N)5-R{VK*+y?{&)oUp8ZK- zY6N@zyr>VcIa#H^tZ**Cm%wDd<4o_S6|SI!%tI=bI7p#{+ZGxW%q<(f<{dX$jB7O9 zTVULen;{XAnn!ULmi}DJO31poBJ{GuwBy(W`fsyz>0T6e@NCRyHSx`$2Pv6u4%35D z34-FQ$PVVr*|3iV49`K3kGmmPLBn=Gw7VnbVIeY5X}k!N+Y#}U0HK7dWEa&~$Klu?5)QVCCS zdQgSIBa8awMZ0$ih)y4Cnk2xWfu~u(@X10JgU0=@-tongYWWT|+`aV&z(TfhG1;$- zJURXn(mdwDVl)K9%=EAnv0K^nf za@dm4<6E+Rl!7foSI($;<1iM3{=2E2CE|_x5y_U~~mtaO7ycFk1|;JVqttj+Fe&)CS}(}jX!eI0Xqa01(_*J#bS@lO4Q z`~jd~*>++VcHn${&CzX+mD|`wZzFuNVcp0!)bwGzo7;)p=n3t@tGJu-IIC0BFh>g8m0Os_c?{N>jE8J5 z)X5S>6bqQ@6Zl&NfFi&EwV~;y1c1eT4lQdwtKq)-D(p6^)!w9ldl^Z{+Mlg z9_!`6s|{!Qy`SdkE}Z~MFB9J-C)JESvLJ9|;f0?hN*@QdYgU9)q((jY6)Lwdz^dHw zfv6Ok($)-z^0Q`QznmoEM6nFUc4rdSu|MEz zzKZbKQ(hX8kAKOQdh0V9~G67(+2BmY5ZnRX)rIEEv6^?W*$3Lw>}wXX6}_fbP5D zcu2Tv9Egg7zG&sHMVqG)T~(`!~Mhz#7= zci963k$MPU?vs!wR&8y7;3C^v92ho@1@$OkXjj{7sN7MUUqarS>2)j}4}@aAiSwBgFNf~QqljIl?Z2IzTs zB7!RLLMmX^B~-ygQ%?UiF@W%8FMfCr*h{h>(24I#QTk8eKmSI53G45_f8MYT-2H2w z!Ct5rN}w0Lefa!syj0=91Ddwh61N4h_Wv|5Ywyi`@jRBl*NVCFKWo1wBq{Uv{1HCV zo_;|)6Xf51?|sAhB!Bh=&h-A@9FMeX_6IQ7ffAgs5W0zmY}KzU%QC65P75q6Bis)-x3~6?Fek7FqV2;G0-HOlWCGs4blMC7F z{SzT+)y@(c9hmXcYFwmFD3FZ*U`DLmSWY0HI$&~x(TNT+&_O})b5Iua5 zxfVCYdeZ$29}>UP`Vrj~uf+*`1TnawlFCBDWDI-c7k#`5Po`n=V;rm*EZETr_q_~W zAUxzO$w!>&6mNqR!#e!QJ#CBHcq2n)oKT+EgDb&Fz}7g}oov>`y9SIkZ*j45D&L-I zmfYLb^7EW)b^*C%@0k52SSnHY<|co$Rv`;A8S#|3OGwm)AzMy@cop9oM#Jc)$(`)0 zScm;-R*(W_2Ue09mOWJyh43|OJ?sQF;84d~L@M{;nr`@AjAn%@aN*%yA_+;{&%>1WI7bKm`~ zogx=sJFG+l1%nG=leRz1)-OC3rjvaU`k=u@)!hEG7iSkH$FROo_SCo_UL70QerVg1 zJf`ih<^bObOZ|j*gK)ggrg(bn{d3zrDbA#ppVt>pYL#eQII}6?3eUazIhzGHcw!oPPm%0DsllogZMvYI3h;YCfmY;-Jl0c2{x12At+S!SNl< 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

    6((zF!njBaaUATE1+- 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 +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) +# at top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. Since the tabs have the same information as the +# navigation tree you can set this option to NO if you already set +# GENERATE_TREEVIEW to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. +# Since the tree basically has the same information as the tab index you +# could consider to set DISABLE_INDEX to NO when enabling this option. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values +# (range [0,1..20]) that doxygen will group on one line in the generated HTML +# documentation. Note that a value of 0 will completely suppress the enum +# values from appearing in the overview section. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +# (see http://www.mathjax.org) which uses client side Javascript for the +# rendering instead of using prerendered bitmaps. Use this if you do not +# have LaTeX installed or if you want to formulas look prettier in the HTML +# output. When enabled you may also need to install MathJax separately and +# configure the path to it using the MATHJAX_RELPATH option. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and +# SVG. The default value is HTML-CSS, which is slower, but has the best +# compatibility. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the +# HTML output directory using the MATHJAX_RELPATH option. The destination +# directory should contain the MathJax.js script. For instance, if the mathjax +# directory is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to +# the MathJax Content Delivery Network so you can quickly see the result without +# installing MathJax. However, it is strongly recommended to install a local +# copy of MathJax from http://www.mathjax.org before deployment. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension +# names that should be enabled during MathJax rendering. + +MATHJAX_EXTENSIONS = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = NO + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using Javascript. +# There are two flavours of web server based search depending on the +# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for +# searching and an index file used by the script. When EXTERNAL_SEARCH is +# enabled the indexing and searching needs to be provided by external tools. +# See the manual for details. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain +# the search results. Doxygen ships with an example indexer (doxyindexer) and +# search engine (doxysearch.cgi) which are based on the open source search engine +# library Xapian. See the manual for configuration details. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will returned the search results when EXTERNAL_SEARCH is enabled. +# Doxygen ships with an example search engine (doxysearch) which is based on +# the open source search engine library Xapian. See the manual for configuration +# details. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id +# of to a relative location where the documentation can be found. +# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ... + +EXTRA_SEARCH_MAPPINGS = + +#--------------------------------------------------------------------------- +# 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 = NO + +# 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 + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# 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, 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 = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for +# the generated latex document. The footer should contain everything after +# the last chapter. If it is left blank doxygen will generate a +# standard footer. Notice: only use this tag if you know what you are doing! + +LATEX_FOOTER = + +# 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 USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = 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 + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See +# http://en.wikipedia.org/wiki/BibTeX for more info. + +LATEX_BIB_STYLE = plain + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF 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 WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load style sheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# 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 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML 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 `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# 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 can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = YES + +# 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 and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = YES + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# pointed to by INCLUDE_PATH will be searched when 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 = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# 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. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = ASSIMP_DOXYGEN_BUILD=1 \ + __cplusplus + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition that +# overrules the definition found in the source code. + +EXPAND_AS_DEFINED = C_STRUCT \ + C_ENUM + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all references to function-like macros +# that are alone on a line, have an all uppercase name, and do not end with a +# semicolon, because these will confuse the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. For each +# tag file the location of the external documentation should be added. The +# format of a tag file without this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths +# or URLs. Note that each tag file must have a unique name (where the name does +# NOT include the path). If a tag file is not located in the directory in which +# doxygen is run, you must also specify the path to the tagfile here. + +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 + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# 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 the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option also works with HAVE_DOT disabled, but it is recommended to +# install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = NO + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# 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 = NO + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will use the Helvetica font for all dot files that +# doxygen generates. When you want a differently looking font you can specify +# the font name using DOT_FONTNAME. You need to make sure dot is able to find +# the font, which can be done by putting it in a standard location or by setting +# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the Helvetica font. +# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to +# set the path where dot can find it. + +DOT_FONTPATH = + +# 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 +# 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 GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside +# the class node. If there are many fields or methods and many nodes the +# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS +# threshold limits the number of items for each type to make the size more +# managable. Set this to 0 for no limit. Note that the threshold may be +# exceeded by 50% before the limit is enforced. + +UML_LIMIT_NUM_FIELDS = 10 + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, 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 ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will generate a graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are svg, png, jpg, or gif. +# If left blank png will be used. If you choose svg you need to set +# HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible in IE 9+ (other browsers do not have this requirement). + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# Note that this requires a modern browser other than Internet Explorer. +# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you +# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible. Older versions of IE do not have SVG support. + +INTERACTIVE_SVG = NO + +# The tag DOT_PATH 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 in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the +# \mscfile command). + +MSCFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 1000 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/doc/Doxyfile_Cmd b/doc/Doxyfile_Cmd index 237ec3674..f0a56e7c9 100644 --- a/doc/Doxyfile_Cmd +++ b/doc/Doxyfile_Cmd @@ -1,296 +1,2368 @@ -# Doxyfile 1.5.8 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = Assimp Command Line Tools -PROJECT_NUMBER = "v2.0 (November 2010)" -OUTPUT_DIRECTORY = -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class " \ - "The $name widget " \ - "The $name file " \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -QT_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = NO -OPTIMIZE_OUTPUT_JAVA = NO -OPTIMIZE_FOR_FORTRAN = NO -OPTIMIZE_OUTPUT_VHDL = NO -EXTENSION_MAPPING = -BUILTIN_STL_SUPPORT = YES -CPP_CLI_SUPPORT = NO -SIP_SUPPORT = NO -IDL_PROPERTY_SUPPORT = YES -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = YES -TYPEDEF_HIDES_STRUCT = YES -SYMBOL_CACHE_SIZE = 0 -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -EXTRACT_ANON_NSPACES = NO -HIDE_UNDOC_MEMBERS = YES -HIDE_UNDOC_CLASSES = YES -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = NO -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = NO -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = YES -SORT_GROUP_NAMES = NO -SORT_BY_SCOPE_NAME = YES -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = NO -SHOW_FILES = YES -SHOW_NAMESPACES = YES -FILE_VERSION_FILTER = -LAYOUT_FILE = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = ../doc/dox_cmd.h -INPUT_ENCODING = UTF-8 -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.d \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.idl \ - *.odl \ - *.cs \ - *.php \ - *.php3 \ - *.inc \ - *.m \ - *.mm \ - *.dox \ - *.py -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = */.svn/* \ - */.svn -EXCLUDE_SYMBOLS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = * -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = NO -REFERENCES_RELATION = NO -REFERENCES_LINK_SOURCE = YES -USE_HTAGS = NO -VERBATIM_HEADERS = NO -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = AssimpCmdDoc_Html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = style.css -HTML_ALIGN_MEMBERS = YES -HTML_DYNAMIC_SECTIONS = NO -GENERATE_DOCSET = NO -DOCSET_FEEDNAME = "Doxygen generated docs" -DOCSET_BUNDLE_ID = org.doxygen.Project -GENERATE_HTMLHELP = YES -CHM_FILE = AssimpCmdDoc.chm -HHC_LOCATION = "C:/Program Files (x86)/HTML Help Workshop/hhc.exe" -GENERATE_CHI = NO -CHM_INDEX_ENCODING = -BINARY_TOC = NO -TOC_EXPAND = NO -GENERATE_QHP = NO -QCH_FILE = -QHP_NAMESPACE = -QHP_VIRTUAL_FOLDER = doc -QHP_CUST_FILTER_NAME = -QHP_CUST_FILTER_ATTRS = -QHP_SECT_FILTER_ATTRS = -QHG_LOCATION = -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -FORMULA_FONTSIZE = 10 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = YES -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = ASSIMP_DOXYGEN_BUILD=1 \ - __cplusplus -EXPAND_AS_DEFINED = C_STRUCT \ - C_ENUM -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = NO -MSCGEN_PATH = -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -DOT_FONTNAME = FreeSans -DOT_FONTSIZE = 10 -DOT_FONTPATH = -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = NO -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -CALLER_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -DOT_GRAPH_MAX_NODES = 50 -MAX_DOT_GRAPH_DEPTH = 1000 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Options related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO +# Doxyfile 1.8.7 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = Tools + +# 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 = "v3.1.1 (June 2014)" + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify an logo or icon that is included in +# the documentation. The maximum height of the logo should not exceed 55 pixels +# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo +# to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. 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 = + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# 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. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES 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. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES 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. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class " \ + "The $name widget " \ + "The $name file " \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# 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. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES 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 +# The default value is: YES. + +FULL_PATH_NAMES = NO + +# 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. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES 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 regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = YES + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a +# new page for each member. If set to NO, the documentation of a member will be +# part of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# 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. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by by putting a % sign in front of the word +# or globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = YES + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO these classes will be included in the various overviews. This option has +# no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO 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. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = NO + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES 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. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = YES + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = YES + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the +# todo list. This list is created by putting \todo commands in the +# documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the +# test list. This list is created by putting \test commands in the +# documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES the list +# will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. Do not use file names with spaces, bibtex cannot handle them. See +# also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag 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. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO doxygen will only warn about wrong or incomplete parameter +# documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# 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. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is 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. +# Note: If this tag is empty the current directory is searched. + +INPUT = ../doc/dox_cmd.h + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank the +# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, +# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, +# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, +# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, +# *.qsf, *.as and *.js. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.py + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# 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. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# 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. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = */.svn/* \ + */.svn + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# 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 = + +# 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 = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be 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: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER ) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# 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. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES, then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES 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. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = NO + +# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# compiled with the --with-libclang option. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# 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. +# The default value is: YES. + +ALPHABETICAL_INDEX = NO + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +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 a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# 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. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = AssimpCmdDoc_Html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# 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 left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = style.css + +# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user- +# defined cascading style sheet that is included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefor more robust against future updates. +# Doxygen will copy the style sheet file to the output directory. For an example +# see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the stylesheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to NO can help when comparing the output of multiple runs. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = YES + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = AssimpCmdDoc.chm + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler ( hhc.exe). If non-empty +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = "C:/Program Files (x86)/HTML Help Workshop/hhc.exe" + +# The GENERATE_CHI flag controls if a separate .chi index file is generated ( +# YES) or that it should be included in the master .chm file ( NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated ( +# YES) or a normal table of contents ( NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using prerendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /

    "; for( size_t a = 0; a < mesh->mNumFaces; ++a ) { @@ -681,7 +688,7 @@ void ColladaExporter::WriteGeometry( size_t pIndex) { mOutput << startstr << "" << endstr; PushTag(); - mOutput << startstr << "" << endstr; + mOutput << startstr << "" << endstr; mOutput << startstr << ""; for( size_t a = 0; a < mesh->mNumFaces; ++a ) @@ -728,11 +735,11 @@ void ColladaExporter::WriteFloatArray( const std::string& pIdString, FloatDataTy std::string arrayId = pIdString + "-array"; - mOutput << startstr << "" << endstr; + mOutput << startstr << "" << endstr; PushTag(); // source array - mOutput << startstr << " "; + mOutput << startstr << " "; PushTag(); if( pType == FloatType_TexCoord2 ) @@ -804,11 +811,11 @@ void ColladaExporter::WriteFloatArray( const std::string& pIdString, FloatDataTy // Writes the scene library void ColladaExporter::WriteSceneLibrary() { - std::string scene_name = mScene->mRootNode->mName.C_Str(); + const std::string scene_name_escaped = XMLEscape(mScene->mRootNode->mName.C_Str()); mOutput << startstr << "" << endstr; PushTag(); - mOutput << startstr << "" << endstr; + mOutput << startstr << "" << endstr; PushTag(); // start recursive write at the root node @@ -833,7 +840,8 @@ void ColladaExporter::WriteNode(aiNode* pNode) pNode->mName.Set(ss.str()); } - mOutput << startstr << "mName.data << "\" name=\"" << pNode->mName.data << "\">" << endstr; + const std::string node_name_escaped = XMLEscape(pNode->mName.data); + mOutput << startstr << "" << endstr; PushTag(); // write transformation - we can directly put the matrix there @@ -854,13 +862,13 @@ void ColladaExporter::WriteNode(aiNode* pNode) if( mesh->mNumFaces == 0 || mesh->mNumVertices == 0 ) continue; - mOutput << startstr << "mMeshes[a]) << "\">" << endstr; + mOutput << startstr << "mMeshes[a])) << "\">" << endstr; PushTag(); mOutput << startstr << "" << endstr; PushTag(); mOutput << startstr << "" << endstr; PushTag(); - mOutput << startstr << "mMaterialIndex].name << "\" />" << endstr; + mOutput << startstr << "mMaterialIndex].name) << "\" />" << endstr; PopTag(); mOutput << startstr << "" << endstr; PopTag(); diff --git a/code/XMLTools.h b/code/XMLTools.h new file mode 100644 index 000000000..103f1d815 --- /dev/null +++ b/code/XMLTools.h @@ -0,0 +1,81 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2012, assimp team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +#ifndef INCLUDED_ASSIMP_XML_TOOLS_H +#define INCLUDED_ASSIMP_XML_TOOLS_H + +#include + +namespace Assimp { + // XML escape the 5 XML special characters (",',<,> and &) in |data| + // Based on http://stackoverflow.com/questions/5665231 + std::string XMLEscape(const std::string& data) { + std::string buffer; + + const size_t size = data.size(); + buffer.reserve(size + size / 8); + for(size_t i = 0; i < size; ++i) { + const char c = data[i]; + switch(c) { + case '&' : + buffer.append("&"); + break; + case '\"': + buffer.append("""); + break; + case '\'': + buffer.append("'"); + break; + case '<' : + buffer.append("<"); + break; + case '>' : + buffer.append(">"); + break; + default: + buffer.append(&c, 1); + break; + } + } + return buffer; + } +} + +#endif // INCLUDED_ASSIMP_XML_TOOLS_H diff --git a/test/models/Collada/cube_xmlspecialchars.dae b/test/models/Collada/cube_xmlspecialchars.dae new file mode 100644 index 000000000..94e1bed2d --- /dev/null +++ b/test/models/Collada/cube_xmlspecialchars.dae @@ -0,0 +1,210 @@ + + + + + alorino + Maya 7.0 | ColladaMaya v2.01 Jun 9 2006 at 16:08:19 | FCollada v1.11 + Collada Maya Export Options: bakeTransforms=0;exportPolygonMeshes=1;bakeLighting=0;isSampling=0; +curveConstrainSampling=0;exportCameraAsLookat=0; +exportLights=1;exportCameras=1;exportJointsAndSkin=1; +exportAnimations=1;exportTriangles=0;exportInvisibleNodes=0; +exportNormals=1;exportTexCoords=1;exportVertexColors=1;exportTangents=0; +exportTexTangents=0;exportConstraints=0;exportPhysics=0;exportXRefs=1; +dereferenceXRefs=0;cameraXFov=0;cameraYFov=1 + +Copyright 2006 Sony Computer Entertainment Inc. +Licensed under the SCEA Shared Source License, Version 1.0 (the +"License"); you may not use this file except in compliance with the +License. You may obtain a copy of the License at: +http://research.scea.com/scea_shared_source_license.html +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + + 2006-06-21T21:23:22Z + 2006-06-21T21:23:22Z + + Y_UP + + + + + + + 37.8493 + 1 + 10 + 1000 + + + + + + + + + 37.8501 + 1 + 0.01 + 1000 + + + + + + + + + + 1 1 1 + 1 + 0 + 0 + + + + 1.000000 + + + + + + 1 1 1 + 1 + 0 + 0 + + + + + + + + + + + + + + + + 0 0 0 1 + + + 0 0 0 1 + + + 0.137255 0.403922 0.870588 1 + + + 0.5 0.5 0.5 1 + + + 16 + + + 0 0 0 1 + + + 0.5 + + + 0 0 0 1 + + + 1 + + + 0 + + + + + + + + + + + -50 50 50 50 50 50 -50 -50 50 50 -50 50 -50 50 -50 50 50 -50 -50 -50 -50 50 -50 -50 + + + + + + + + + + 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 -1 0 0 -1 0 0 -1 0 0 -1 + + + + + + + + + + + + + + + 4 4 4 4 4 4 +

    0 0 2 1 3 2 1 3 0 4 1 5 5 6 4 7 6 8 7 9 3 10 2 11 0 12 4 13 6 14 2 15 3 16 7 17 5 18 1 19 5 20 7 21 6 22 4 23

    + + + + + + + + -427.749 333.855 655.017 + 0 1 0 -33 + 1 0 0 -22.1954 + 0 0 1 0 + + + + -500 1000 400 + 0 0 1 0 + 0 1 0 0 + 1 0 0 0 + + + + 0 0 1 0 + 0 1 0 0 + 1 0 0 0 + + + + + + + + + + -427.749 333.855 655.017 + 0 1 0 -33 + 1 0 0 -22.1954 + 0 0 1 0 + + + + 3 4 10 + 0 0 1 0 + 0 1 0 0 + 1 0 0 0 + + + + + + + + From 9d04a45088c995fcebd51f5c7a484670380e9188 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 27 Aug 2014 10:15:13 +0200 Subject: [PATCH 103/196] Collada : Add missing parsing into markup --- code/ColladaParser.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index b577aab0b..dffb04c3d 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -1163,6 +1163,19 @@ void ColladaParser::ReadEffectProfileCommon( Collada::Effect& pEffect) // just syntactic sugar } + else if( mFormat == FV_1_4_n && IsElement( "image")) + { + // read ID. Another entry which is "optional" by design but obligatory in reality + int attrID = GetAttribute( "id"); + std::string id = mReader->getAttributeValue( attrID); + + // create an entry and store it in the library under its ID + mImageLibrary[id] = Image(); + + // read on from there + ReadImage( mImageLibrary[id]); + } + /* Shading modes */ else if( IsElement( "phong")) pEffect.mShadeType = Shade_Phong; From 2e9195819ab43064e40b49ed6ad94d81ef32c976 Mon Sep 17 00:00:00 2001 From: Gargaj Date: Thu, 28 Aug 2014 15:17:53 +0200 Subject: [PATCH 104/196] start assxml exporter basics --- code/AssxmlExporter.cpp | 67 +++++++++++++++++++++++++++++++++++++++++ code/AssxmlExporter.h | 49 ++++++++++++++++++++++++++++++ code/CMakeLists.txt | 7 +++++ code/Exporter.cpp | 5 +++ 4 files changed, 128 insertions(+) create mode 100644 code/AssxmlExporter.cpp create mode 100644 code/AssxmlExporter.h diff --git a/code/AssxmlExporter.cpp b/code/AssxmlExporter.cpp new file mode 100644 index 000000000..03968553c --- /dev/null +++ b/code/AssxmlExporter.cpp @@ -0,0 +1,67 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2012, assimp team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ +/** @file AssxmlExporter.cpp + * ASSBIN exporter main code + */ +#include "AssimpPCH.h" +#include "./../include/assimp/version.h" +#include "ProcessHelper.h" + +#ifdef ASSIMP_BUILD_NO_OWN_ZLIB +# include +#else +# include "../contrib/zlib/zlib.h" +#endif + +#ifndef ASSIMP_BUILD_NO_EXPORT +#ifndef ASSIMP_BUILD_NO_ASSXML_EXPORTER + +using namespace Assimp; + +namespace Assimp { + +void ExportSceneAssxml(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene) +{ +} + +} // end of namespace Assimp + +#endif // ASSIMP_BUILD_NO_ASSBIN_EXPORTER +#endif // ASSIMP_BUILD_NO_EXPORT diff --git a/code/AssxmlExporter.h b/code/AssxmlExporter.h new file mode 100644 index 000000000..34ccda3e1 --- /dev/null +++ b/code/AssxmlExporter.h @@ -0,0 +1,49 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2012, assimp team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file AssbinExporter.h + * ASSBIN Exporter Main Header + */ +#ifndef AI_ASSBINEXPORTER_H_INC +#define AI_ASSBINEXPORTER_H_INC + +// nothing really needed here - reserved for future use like properties + +#endif diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 224ae7f57..c11a9b42a 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -180,6 +180,12 @@ SET( ASSBIN_SRCS ) SOURCE_GROUP( Assbin FILES ${ASSBIN_SRCS}) +SET( ASSXML_SRCS + AssxmlExporter.h + AssxmlExporter.cpp +) +SOURCE_GROUP( Assxml FILES ${ASSXML_SRCS}) + SET( B3D_SRCS B3DImporter.cpp B3DImporter.h @@ -656,6 +662,7 @@ SET( assimp_src ${AC_SRCS} ${ASE_SRCS} ${ASSBIN_SRCS} + ${ASSXML_SRCS} ${B3D_SRCS} ${BVH_SRCS} ${Collada_SRCS} diff --git a/code/Exporter.cpp b/code/Exporter.cpp index 22c60ebee..846e5f8bb 100644 --- a/code/Exporter.cpp +++ b/code/Exporter.cpp @@ -80,6 +80,7 @@ void ExportSceneSTLBinary(const char*,IOSystem*, const aiScene*); void ExportScenePly(const char*,IOSystem*, const aiScene*); void ExportScene3DS(const char*, IOSystem*, const aiScene*); void ExportSceneAssbin(const char*, IOSystem*, const aiScene*); +void ExportSceneAssxml(const char*, IOSystem*, const aiScene*); // ------------------------------------------------------------------------------------------------ // global array of all export formats which Assimp supports in its current build @@ -122,6 +123,10 @@ Exporter::ExportFormatEntry gExporters[] = #ifndef ASSIMP_BUILD_NO_ASSBIN_EXPORTER Exporter::ExportFormatEntry( "assbin", "Assimp Binary", "assbin" , &ExportSceneAssbin, 0), #endif + +#ifndef ASSIMP_BUILD_NO_ASSXML_EXPORTER + Exporter::ExportFormatEntry( "assxml", "Assxml Document", "assxml" , &ExportSceneAssxml, 0), +#endif }; #define ASSIMP_NUM_EXPORTERS (sizeof(gExporters)/sizeof(gExporters[0])) From c47dc2802e01faa61332d5bb6a5eed19086ca05c Mon Sep 17 00:00:00 2001 From: Gargaj Date: Thu, 28 Aug 2014 15:38:57 +0200 Subject: [PATCH 105/196] convert assxml exporter --- code/AssxmlExporter.cpp | 568 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 568 insertions(+) diff --git a/code/AssxmlExporter.cpp b/code/AssxmlExporter.cpp index 03968553c..35749be1c 100644 --- a/code/AssxmlExporter.cpp +++ b/code/AssxmlExporter.cpp @@ -57,8 +57,576 @@ using namespace Assimp; namespace Assimp { +namespace AssxmlExport { + +int ioprintf( IOStream * io, const char * format, ... ) +{ + char sz[4096]; + va_list va; + va_start( va, format ); + int nSize = vsnprintf( sz, 4096, format, va ); + ai_assert( nSize < 4096 ); + va_end( format ); + + io->Write( sz, sizeof(char), nSize ); + + return nSize; +} + +// ----------------------------------------------------------------------------------- +// Convert a name to standard XML format +void ConvertName(aiString& out, const aiString& in) +{ + out.length = 0; + for (unsigned int i = 0; i < in.length; ++i) { + switch (in.data[i]) { + case '<': + out.Append("<");break; + case '>': + out.Append(">");break; + case '&': + out.Append("&");break; + case '\"': + out.Append(""");break; + case '\'': + out.Append("'");break; + default: + out.data[out.length++] = in.data[i]; + } + } + out.data[out.length] = 0; +} + +// ----------------------------------------------------------------------------------- +// Write a single node as text dump +void WriteNode(const aiNode* node, IOStream * io, unsigned int depth) +{ + char prefix[512]; + for (unsigned int i = 0; i < depth;++i) + prefix[i] = '\t'; + prefix[depth] = '\0'; + + const aiMatrix4x4& m = node->mTransformation; + + aiString name; + ConvertName(name,node->mName); + ioprintf(io,"%s \n" + "%s\t \n" + "%s\t\t%0 6f %0 6f %0 6f %0 6f\n" + "%s\t\t%0 6f %0 6f %0 6f %0 6f\n" + "%s\t\t%0 6f %0 6f %0 6f %0 6f\n" + "%s\t\t%0 6f %0 6f %0 6f %0 6f\n" + "%s\t \n", + prefix,name.data,prefix, + prefix,m.a1,m.a2,m.a3,m.a4, + prefix,m.b1,m.b2,m.b3,m.b4, + prefix,m.c1,m.c2,m.c3,m.c4, + prefix,m.d1,m.d2,m.d3,m.d4,prefix); + + if (node->mNumMeshes) { + ioprintf(io, "%s\t\n%s\t", + prefix,node->mNumMeshes,prefix); + + for (unsigned int i = 0; i < node->mNumMeshes;++i) { + ioprintf(io,"%i ",node->mMeshes[i]); + } + ioprintf(io,"\n%s\t\n",prefix); + } + + if (node->mNumChildren) { + ioprintf(io,"%s\t\n", + prefix,node->mNumChildren); + + for (unsigned int i = 0; i < node->mNumChildren;++i) { + WriteNode(node->mChildren[i],io,depth+2); + } + ioprintf(io,"%s\t\n",prefix); + } + ioprintf(io,"%s\n",prefix); +} + + +// ----------------------------------------------------------------------------------- +// Some chuncks of text will need to be encoded for XML +// http://stackoverflow.com/questions/5665231/most-efficient-way-to-escape-xml-html-in-c-string#5665377 +static std::string encodeXML(const std::string& data) { + std::string buffer; + buffer.reserve(data.size()); + for(size_t pos = 0; pos != data.size(); ++pos) { + switch(data[pos]) { + case '&': buffer.append("&"); break; + case '\"': buffer.append("""); break; + case '\'': buffer.append("'"); break; + case '<': buffer.append("<"); break; + case '>': buffer.append(">"); break; + default: buffer.append(&data[pos], 1); break; + } + } + return buffer; +} + + + +// ----------------------------------------------------------------------------------- +// Write a text model dump +void WriteDump(const aiScene* scene, IOStream* io, bool shortened) +{ + time_t tt = ::time(NULL); + tm* p = ::gmtime(&tt); + + aiString name; + + // write header + ioprintf(io, + "\n" + "\n\n" + + "" + " \n\n" + "\n", + + aiGetVersionMajor(),aiGetVersionMinor(),aiGetVersionRevision(),asctime(p), + scene->mFlags, + 0 /*globalImporter->GetEffectivePostProcessing()*/); + + // write the node graph + WriteNode(scene->mRootNode, io, 0); + +#if 0 + // write cameras + for (unsigned int i = 0; i < scene->mNumCameras;++i) { + aiCamera* cam = scene->mCameras[i]; + ConvertName(name,cam->mName); + + // camera header + ioprintf(io,"\t\n" + "\t\t %0 8f %0 8f %0 8f \n" + "\t\t %0 8f %0 8f %0 8f \n" + "\t\t %0 8f %0 8f %0 8f \n" + "\t\t %f \n" + "\t\t %f \n" + "\t\t %f \n" + "\t\t %f \n" + "\t\n", + name.data, + cam->mUp.x,cam->mUp.y,cam->mUp.z, + cam->mLookAt.x,cam->mLookAt.y,cam->mLookAt.z, + cam->mPosition.x,cam->mPosition.y,cam->mPosition.z, + cam->mHorizontalFOV,cam->mAspect,cam->mClipPlaneNear,cam->mClipPlaneFar,i); + } + + // write lights + for (unsigned int i = 0; i < scene->mNumLights;++i) { + aiLight* l = scene->mLights[i]; + ConvertName(name,l->mName); + + // light header + ioprintf(io,"\t type=\"%s\"\n" + "\t\t %0 8f %0 8f %0 8f \n" + "\t\t %0 8f %0 8f %0 8f \n" + "\t\t %0 8f %0 8f %0 8f \n", + name.data, + (l->mType == aiLightSource_DIRECTIONAL ? "directional" : + (l->mType == aiLightSource_POINT ? "point" : "spot" )), + l->mColorDiffuse.r, l->mColorDiffuse.g, l->mColorDiffuse.b, + l->mColorSpecular.r,l->mColorSpecular.g,l->mColorSpecular.b, + l->mColorAmbient.r, l->mColorAmbient.g, l->mColorAmbient.b); + + if (l->mType != aiLightSource_DIRECTIONAL) { + ioprintf(io, + "\t\t %0 8f %0 8f %0 8f \n" + "\t\t %f \n" + "\t\t %f \n" + "\t\t %f \n", + l->mPosition.x,l->mPosition.y,l->mPosition.z, + l->mAttenuationConstant,l->mAttenuationLinear,l->mAttenuationQuadratic); + } + + if (l->mType != aiLightSource_POINT) { + ioprintf(io, + "\t\t %0 8f %0 8f %0 8f \n", + l->mDirection.x,l->mDirection.y,l->mDirection.z); + } + + if (l->mType == aiLightSource_SPOT) { + ioprintf(io, + "\t\t %f \n" + "\t\t %f \n", + l->mAngleOuterCone,l->mAngleInnerCone); + } + ioprintf(io,"\t\n"); + } +#endif + + // write textures + if (scene->mNumTextures) { + ioprintf(io,"\n",scene->mNumTextures); + for (unsigned int i = 0; i < scene->mNumTextures;++i) { + aiTexture* tex = scene->mTextures[i]; + bool compressed = (tex->mHeight == 0); + + // mesh header + ioprintf(io,"\t \n", + (compressed ? -1 : tex->mWidth),(compressed ? -1 : tex->mHeight), + (compressed ? "true" : "false")); + + if (compressed) { + ioprintf(io,"\t\t \n",tex->mWidth); + + if (!shortened) { + for (unsigned int n = 0; n < tex->mWidth;++n) { + ioprintf(io,"\t\t\t%2x",reinterpret_cast(tex->pcData)[n]); + if (n && !(n % 50)) { + ioprintf(io,"\n"); + } + } + } + } + else if (!shortened){ + ioprintf(io,"\t\t \n",tex->mWidth*tex->mHeight*4); + + // const unsigned int width = (unsigned int)log10((double)std::max(tex->mHeight,tex->mWidth))+1; + for (unsigned int y = 0; y < tex->mHeight;++y) { + for (unsigned int x = 0; x < tex->mWidth;++x) { + aiTexel* tx = tex->pcData + y*tex->mWidth+x; + unsigned int r = tx->r,g=tx->g,b=tx->b,a=tx->a; + ioprintf(io,"\t\t\t%2x %2x %2x %2x",r,g,b,a); + + // group by four for readibility + if (0 == (x+y*tex->mWidth) % 4) + ioprintf(io,"\n"); + } + } + } + ioprintf(io,"\t\t\n\t\n"); + } + ioprintf(io,"\n"); + } + + // write materials + if (scene->mNumMaterials) { + ioprintf(io,"\n",scene->mNumMaterials); + for (unsigned int i = 0; i< scene->mNumMaterials; ++i) { + const aiMaterial* mat = scene->mMaterials[i]; + + ioprintf(io,"\t\n"); + ioprintf(io,"\t\t\n",mat->mNumProperties); + for (unsigned int n = 0; n < mat->mNumProperties;++n) { + + const aiMaterialProperty* prop = mat->mProperties[n]; + const char* sz = ""; + if (prop->mType == aiPTI_Float) { + sz = "float"; + } + else if (prop->mType == aiPTI_Integer) { + sz = "integer"; + } + else if (prop->mType == aiPTI_String) { + sz = "string"; + } + else if (prop->mType == aiPTI_Buffer) { + sz = "binary_buffer"; + } + + ioprintf(io,"\t\t\tmKey.data, sz, + ::TextureTypeToString((aiTextureType)prop->mSemantic),prop->mIndex); + + if (prop->mType == aiPTI_Float) { + ioprintf(io," size=\"%i\">\n\t\t\t\t", + static_cast(prop->mDataLength/sizeof(float))); + + for (unsigned int p = 0; p < prop->mDataLength/sizeof(float);++p) { + ioprintf(io,"%f ",*((float*)(prop->mData+p*sizeof(float)))); + } + } + else if (prop->mType == aiPTI_Integer) { + ioprintf(io," size=\"%i\">\n\t\t\t\t", + static_cast(prop->mDataLength/sizeof(int))); + + for (unsigned int p = 0; p < prop->mDataLength/sizeof(int);++p) { + ioprintf(io,"%i ",*((int*)(prop->mData+p*sizeof(int)))); + } + } + else if (prop->mType == aiPTI_Buffer) { + ioprintf(io," size=\"%i\">\n\t\t\t\t", + static_cast(prop->mDataLength)); + + for (unsigned int p = 0; p < prop->mDataLength;++p) { + ioprintf(io,"%2x ",prop->mData[p]); + if (p && 0 == p%30) { + ioprintf(io,"\n\t\t\t\t"); + } + } + } + else if (prop->mType == aiPTI_String) { + ioprintf(io,">\n\t\t\t\t\"%s\"",encodeXML(prop->mData+4).c_str() /* skip length */); + } + ioprintf(io,"\n\t\t\t\n"); + } + ioprintf(io,"\t\t\n"); + ioprintf(io,"\t\n"); + } + ioprintf(io,"\n"); + } + + // write animations + if (scene->mNumAnimations) { + ioprintf(io,"\n",scene->mNumAnimations); + for (unsigned int i = 0; i < scene->mNumAnimations;++i) { + aiAnimation* anim = scene->mAnimations[i]; + + // anim header + ConvertName(name,anim->mName); + ioprintf(io,"\t\n", + name.data, anim->mDuration, anim->mTicksPerSecond); + + // write bone animation channels + if (anim->mNumChannels) { + ioprintf(io,"\t\t\n",anim->mNumChannels); + for (unsigned int n = 0; n < anim->mNumChannels;++n) { + aiNodeAnim* nd = anim->mChannels[n]; + + // node anim header + ConvertName(name,nd->mNodeName); + ioprintf(io,"\t\t\t\n",name.data); + + if (!shortened) { + // write position keys + if (nd->mNumPositionKeys) { + ioprintf(io,"\t\t\t\t\n",nd->mNumPositionKeys); + for (unsigned int a = 0; a < nd->mNumPositionKeys;++a) { + aiVectorKey* vc = nd->mPositionKeys+a; + ioprintf(io,"\t\t\t\t\t\n" + "\t\t\t\t\t\t%0 8f %0 8f %0 8f\n\t\t\t\t\t\n", + vc->mTime,vc->mValue.x,vc->mValue.y,vc->mValue.z); + } + ioprintf(io,"\t\t\t\t\n"); + } + + // write scaling keys + if (nd->mNumScalingKeys) { + ioprintf(io,"\t\t\t\t\n",nd->mNumScalingKeys); + for (unsigned int a = 0; a < nd->mNumScalingKeys;++a) { + aiVectorKey* vc = nd->mScalingKeys+a; + ioprintf(io,"\t\t\t\t\t\n" + "\t\t\t\t\t\t%0 8f %0 8f %0 8f\n\t\t\t\t\t\n", + vc->mTime,vc->mValue.x,vc->mValue.y,vc->mValue.z); + } + ioprintf(io,"\t\t\t\t\n"); + } + + // write rotation keys + if (nd->mNumRotationKeys) { + ioprintf(io,"\t\t\t\t\n",nd->mNumRotationKeys); + for (unsigned int a = 0; a < nd->mNumRotationKeys;++a) { + aiQuatKey* vc = nd->mRotationKeys+a; + ioprintf(io,"\t\t\t\t\t\n" + "\t\t\t\t\t\t%0 8f %0 8f %0 8f %0 8f\n\t\t\t\t\t\n", + vc->mTime,vc->mValue.x,vc->mValue.y,vc->mValue.z,vc->mValue.w); + } + ioprintf(io,"\t\t\t\t\n"); + } + } + ioprintf(io,"\t\t\t\n"); + } + ioprintf(io,"\t\t\n"); + } + ioprintf(io,"\t\n"); + } + ioprintf(io,"\n"); + } + + // write meshes + if (scene->mNumMeshes) { + ioprintf(io,"\n",scene->mNumMeshes); + for (unsigned int i = 0; i < scene->mNumMeshes;++i) { + aiMesh* mesh = scene->mMeshes[i]; + // const unsigned int width = (unsigned int)log10((double)mesh->mNumVertices)+1; + + // mesh header + ioprintf(io,"\t\n", + (mesh->mPrimitiveTypes & aiPrimitiveType_POINT ? "points" : ""), + (mesh->mPrimitiveTypes & aiPrimitiveType_LINE ? "lines" : ""), + (mesh->mPrimitiveTypes & aiPrimitiveType_TRIANGLE ? "triangles" : ""), + (mesh->mPrimitiveTypes & aiPrimitiveType_POLYGON ? "polygons" : ""), + mesh->mMaterialIndex); + + // bones + if (mesh->mNumBones) { + ioprintf(io,"\t\t\n",mesh->mNumBones); + + for (unsigned int n = 0; n < mesh->mNumBones;++n) { + aiBone* bone = mesh->mBones[n]; + + ConvertName(name,bone->mName); + // bone header + ioprintf(io,"\t\t\t\n" + "\t\t\t\t \n" + "\t\t\t\t\t%0 6f %0 6f %0 6f %0 6f\n" + "\t\t\t\t\t%0 6f %0 6f %0 6f %0 6f\n" + "\t\t\t\t\t%0 6f %0 6f %0 6f %0 6f\n" + "\t\t\t\t\t%0 6f %0 6f %0 6f %0 6f\n" + "\t\t\t\t \n", + name.data, + bone->mOffsetMatrix.a1,bone->mOffsetMatrix.a2,bone->mOffsetMatrix.a3,bone->mOffsetMatrix.a4, + bone->mOffsetMatrix.b1,bone->mOffsetMatrix.b2,bone->mOffsetMatrix.b3,bone->mOffsetMatrix.b4, + bone->mOffsetMatrix.c1,bone->mOffsetMatrix.c2,bone->mOffsetMatrix.c3,bone->mOffsetMatrix.c4, + bone->mOffsetMatrix.d1,bone->mOffsetMatrix.d2,bone->mOffsetMatrix.d3,bone->mOffsetMatrix.d4); + + if (!shortened && bone->mNumWeights) { + ioprintf(io,"\t\t\t\t\n",bone->mNumWeights); + + // bone weights + for (unsigned int a = 0; a < bone->mNumWeights;++a) { + aiVertexWeight* wght = bone->mWeights+a; + + ioprintf(io,"\t\t\t\t\t\n\t\t\t\t\t\t%f\n\t\t\t\t\t\n", + wght->mVertexId,wght->mWeight); + } + ioprintf(io,"\t\t\t\t\n"); + } + ioprintf(io,"\t\t\t\n"); + } + ioprintf(io,"\t\t\n"); + } + + // faces + if (!shortened && mesh->mNumFaces) { + ioprintf(io,"\t\t\n",mesh->mNumFaces); + for (unsigned int n = 0; n < mesh->mNumFaces; ++n) { + aiFace& f = mesh->mFaces[n]; + ioprintf(io,"\t\t\t\n" + "\t\t\t\t",f.mNumIndices); + + for (unsigned int j = 0; j < f.mNumIndices;++j) + ioprintf(io,"%i ",f.mIndices[j]); + + ioprintf(io,"\n\t\t\t\n"); + } + ioprintf(io,"\t\t\n"); + } + + // vertex positions + if (mesh->HasPositions()) { + ioprintf(io,"\t\t \n",mesh->mNumVertices); + if (!shortened) { + for (unsigned int n = 0; n < mesh->mNumVertices; ++n) { + ioprintf(io,"\t\t%0 8f %0 8f %0 8f\n", + mesh->mVertices[n].x, + mesh->mVertices[n].y, + mesh->mVertices[n].z); + } + } + ioprintf(io,"\t\t\n"); + } + + // vertex normals + if (mesh->HasNormals()) { + ioprintf(io,"\t\t \n",mesh->mNumVertices); + if (!shortened) { + for (unsigned int n = 0; n < mesh->mNumVertices; ++n) { + ioprintf(io,"\t\t%0 8f %0 8f %0 8f\n", + mesh->mNormals[n].x, + mesh->mNormals[n].y, + mesh->mNormals[n].z); + } + } + else { + } + ioprintf(io,"\t\t\n"); + } + + // vertex tangents and bitangents + if (mesh->HasTangentsAndBitangents()) { + ioprintf(io,"\t\t \n",mesh->mNumVertices); + if (!shortened) { + for (unsigned int n = 0; n < mesh->mNumVertices; ++n) { + ioprintf(io,"\t\t%0 8f %0 8f %0 8f\n", + mesh->mTangents[n].x, + mesh->mTangents[n].y, + mesh->mTangents[n].z); + } + } + ioprintf(io,"\t\t\n"); + + ioprintf(io,"\t\t \n",mesh->mNumVertices); + if (!shortened) { + for (unsigned int n = 0; n < mesh->mNumVertices; ++n) { + ioprintf(io,"\t\t%0 8f %0 8f %0 8f\n", + mesh->mBitangents[n].x, + mesh->mBitangents[n].y, + mesh->mBitangents[n].z); + } + } + ioprintf(io,"\t\t\n"); + } + + // texture coordinates + for (unsigned int a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++a) { + if (!mesh->mTextureCoords[a]) + break; + + ioprintf(io,"\t\t \n",mesh->mNumVertices, + a,mesh->mNumUVComponents[a]); + + if (!shortened) { + if (mesh->mNumUVComponents[a] == 3) { + for (unsigned int n = 0; n < mesh->mNumVertices; ++n) { + ioprintf(io,"\t\t%0 8f %0 8f %0 8f\n", + mesh->mTextureCoords[a][n].x, + mesh->mTextureCoords[a][n].y, + mesh->mTextureCoords[a][n].z); + } + } + else { + for (unsigned int n = 0; n < mesh->mNumVertices; ++n) { + ioprintf(io,"\t\t%0 8f %0 8f\n", + mesh->mTextureCoords[a][n].x, + mesh->mTextureCoords[a][n].y); + } + } + } + ioprintf(io,"\t\t\n"); + } + + // vertex colors + for (unsigned int a = 0; a < AI_MAX_NUMBER_OF_COLOR_SETS; ++a) { + if (!mesh->mColors[a]) + break; + ioprintf(io,"\t\t \n",mesh->mNumVertices,a); + if (!shortened) { + for (unsigned int n = 0; n < mesh->mNumVertices; ++n) { + ioprintf(io,"\t\t%0 8f %0 8f %0 8f %0 8f\n", + mesh->mColors[a][n].r, + mesh->mColors[a][n].g, + mesh->mColors[a][n].b, + mesh->mColors[a][n].a); + } + } + ioprintf(io,"\t\t\n"); + } + ioprintf(io,"\t\n"); + } + ioprintf(io,"\n"); + } + ioprintf(io,"\n"); +} + +} // end of namespace AssxmlExport + void ExportSceneAssxml(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene) { + IOStream * out = pIOSystem->Open( pFile, "wt" ); + if (!out) return; + + bool shortened = false; + AssxmlExport::WriteDump( pScene, out, shortened ); + + pIOSystem->Close( out ); } } // end of namespace Assimp From 8f0208e5a8d33c8b82feba197850280b04d3dacf Mon Sep 17 00:00:00 2001 From: Gargaj Date: Thu, 28 Aug 2014 15:41:17 +0200 Subject: [PATCH 106/196] whoops, still some residue from ASSBIN --- code/AssxmlExporter.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/AssxmlExporter.cpp b/code/AssxmlExporter.cpp index 35749be1c..89b7718b6 100644 --- a/code/AssxmlExporter.cpp +++ b/code/AssxmlExporter.cpp @@ -38,7 +38,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ /** @file AssxmlExporter.cpp - * ASSBIN exporter main code + * ASSXML exporter main code */ #include "AssimpPCH.h" #include "./../include/assimp/version.h" @@ -631,5 +631,5 @@ void ExportSceneAssxml(const char* pFile, IOSystem* pIOSystem, const aiScene* pS } // end of namespace Assimp -#endif // ASSIMP_BUILD_NO_ASSBIN_EXPORTER +#endif // ASSIMP_BUILD_NO_ASSXML_EXPORTER #endif // ASSIMP_BUILD_NO_EXPORT From 19de24a442ffc552485e106100235b5ceed3daff Mon Sep 17 00:00:00 2001 From: Gargaj Date: Thu, 28 Aug 2014 15:42:22 +0200 Subject: [PATCH 107/196] ...and some more assbin leftovers --- code/AssxmlExporter.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/AssxmlExporter.h b/code/AssxmlExporter.h index 34ccda3e1..d77445a99 100644 --- a/code/AssxmlExporter.h +++ b/code/AssxmlExporter.h @@ -38,11 +38,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ -/** @file AssbinExporter.h - * ASSBIN Exporter Main Header +/** @file AssxmlExporter.h + * ASSXML Exporter Main Header */ -#ifndef AI_ASSBINEXPORTER_H_INC -#define AI_ASSBINEXPORTER_H_INC +#ifndef AI_ASSXMLEXPORTER_H_INC +#define AI_ASSXMLEXPORTER_H_INC // nothing really needed here - reserved for future use like properties From 6f828087f9b787ecaf5925a25dfd56bae8355f0b Mon Sep 17 00:00:00 2001 From: Gargaj Date: Thu, 28 Aug 2014 15:45:48 +0200 Subject: [PATCH 108/196] add stdarg.h --- code/AssxmlExporter.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/code/AssxmlExporter.cpp b/code/AssxmlExporter.cpp index 89b7718b6..062fea6dd 100644 --- a/code/AssxmlExporter.cpp +++ b/code/AssxmlExporter.cpp @@ -40,6 +40,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file AssxmlExporter.cpp * ASSXML exporter main code */ +#include #include "AssimpPCH.h" #include "./../include/assimp/version.h" #include "ProcessHelper.h" From e2401c8b58c7d610d17cb22ac2cc365c70a15f19 Mon Sep 17 00:00:00 2001 From: Gargaj Date: Thu, 28 Aug 2014 15:51:01 +0200 Subject: [PATCH 109/196] fix va_end call --- code/AssxmlExporter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/AssxmlExporter.cpp b/code/AssxmlExporter.cpp index 062fea6dd..1538d2456 100644 --- a/code/AssxmlExporter.cpp +++ b/code/AssxmlExporter.cpp @@ -67,7 +67,7 @@ int ioprintf( IOStream * io, const char * format, ... ) va_start( va, format ); int nSize = vsnprintf( sz, 4096, format, va ); ai_assert( nSize < 4096 ); - va_end( format ); + va_end( va ); io->Write( sz, sizeof(char), nSize ); From d333e08343df9efba3a95909190d80a00806c50c Mon Sep 17 00:00:00 2001 From: Gargaj Date: Thu, 28 Aug 2014 16:27:29 +0200 Subject: [PATCH 110/196] add ambient light type, allow collada to load it --- code/ColladaHelper.h | 1 - code/ColladaLoader.cpp | 4 ---- include/assimp/light.h | 6 ++++++ 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/code/ColladaHelper.h b/code/ColladaHelper.h index 956665198..f249a28d5 100644 --- a/code/ColladaHelper.h +++ b/code/ColladaHelper.h @@ -118,7 +118,6 @@ struct Camera float mZNear, mZFar; }; -#define aiLightSource_AMBIENT 0xdeaddead #define ASSIMP_COLLADA_LIGHT_ANGLE_NOT_SET 1e9f /** A collada light source. */ diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp index e721c99b8..26d41862d 100644 --- a/code/ColladaLoader.cpp +++ b/code/ColladaLoader.cpp @@ -308,10 +308,6 @@ void ColladaLoader::BuildLightsForNode( const ColladaParser& pParser, const Coll continue; } const Collada::Light* srcLight = &srcLightIt->second; - if (srcLight->mType == aiLightSource_AMBIENT) { - DefaultLogger::get()->error("Collada: Skipping ambient light for the moment"); - continue; - } // now fill our ai data structure aiLight* out = new aiLight(); diff --git a/include/assimp/light.h b/include/assimp/light.h index 6b01c2878..ec0c20ec5 100644 --- a/include/assimp/light.h +++ b/include/assimp/light.h @@ -75,6 +75,12 @@ enum aiLightSourceType //! sport arenas. aiLightSource_SPOT = 0x3, + //! The generic light level of the world, including the bounces + //! of all other lightsources. + //! This light type doesn't have a valid position, direction, or + //! other properties, just a color. + aiLightSource_AMBIENT = 0x4, + /** This value is not used. It is just there to force the * compiler to map this enum to a 32 Bit integer. From ae7aba36479c348cbc755c09f85a9dbff9406481 Mon Sep 17 00:00:00 2001 From: Gargaj Date: Thu, 28 Aug 2014 16:34:39 +0200 Subject: [PATCH 111/196] + comment --- include/assimp/light.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/assimp/light.h b/include/assimp/light.h index ec0c20ec5..c1d674bd6 100644 --- a/include/assimp/light.h +++ b/include/assimp/light.h @@ -77,6 +77,7 @@ enum aiLightSourceType //! The generic light level of the world, including the bounces //! of all other lightsources. + //! Typically, there's at most one ambient light in a scene. //! This light type doesn't have a valid position, direction, or //! other properties, just a color. aiLightSource_AMBIENT = 0x4, From 625d2b7c4aead89ab406c953d8d46faa0c8f4578 Mon Sep 17 00:00:00 2001 From: Adam Petrone Date: Sat, 30 Aug 2014 00:39:03 -0400 Subject: [PATCH 112/196] Fix #325; Blender UV unwrap issue The BMesh converter might be missing more details, but this should get basic UVs working for now. --- code/BlenderBMesh.cpp | 20 ++++++++++++++++++++ code/BlenderBMesh.h | 1 + 2 files changed, 21 insertions(+) diff --git a/code/BlenderBMesh.cpp b/code/BlenderBMesh.cpp index 0e517f4c8..47dd657fc 100644 --- a/code/BlenderBMesh.cpp +++ b/code/BlenderBMesh.cpp @@ -143,9 +143,13 @@ void BlenderBMeshConverter::DestroyTriMesh( ) void BlenderBMeshConverter::ConvertPolyToFaces( const MPoly& poly ) { const MLoop* polyLoop = &BMesh->mloop[ poly.loopstart ]; + const MLoopUV* loopUV = &BMesh->mloopuv[ poly.loopstart ]; + if ( poly.totloop == 3 || poly.totloop == 4 ) { AddFace( polyLoop[ 0 ].v, polyLoop[ 1 ].v, polyLoop[ 2 ].v, poly.totloop == 4 ? polyLoop[ 3 ].v : 0 ); + + AddTFace( loopUV[ 0 ].uv, loopUV[ 1 ].uv, loopUV[ 2 ].uv, poly.totloop == 4 ? loopUV[ 3 ].uv : 0 ); } else if ( poly.totloop > 4 ) { @@ -173,4 +177,20 @@ void BlenderBMeshConverter::AddFace( int v1, int v2, int v3, int v4 ) triMesh->totface = triMesh->mface.size( ); } +// ------------------------------------------------------------------------------------------------ +void BlenderBMeshConverter::AddTFace( const float* uv1, const float *uv2, const float *uv3, const float* uv4 ) +{ + MTFace mtface; + memcpy( &mtface.uv[ 0 ], uv1, sizeof(float) * 2 ); + memcpy( &mtface.uv[ 1 ], uv2, sizeof(float) * 2 ); + memcpy( &mtface.uv[ 2 ], uv3, sizeof(float) * 2 ); + + if ( uv4 ) + { + memcpy( &mtface.uv[ 3 ], uv4, sizeof(float) * 2 ); + } + + triMesh->mtface.push_back( mtface ); +} + #endif // ASSIMP_BUILD_NO_BLEND_IMPORTER diff --git a/code/BlenderBMesh.h b/code/BlenderBMesh.h index 47afbf437..f26a2a043 100644 --- a/code/BlenderBMesh.h +++ b/code/BlenderBMesh.h @@ -80,6 +80,7 @@ namespace Assimp void DestroyTriMesh( ); void ConvertPolyToFaces( const Blender::MPoly& poly ); void AddFace( int v1, int v2, int v3, int v4 = 0 ); + void AddTFace( const float* uv1, const float* uv2, const float *uv3, const float* uv4 = 0 ); const Blender::Mesh* BMesh; Blender::Mesh* triMesh; From 8bf26065de197493d2c46844b0e0d25b41729638 Mon Sep 17 00:00:00 2001 From: George Papadopoulos Date: Mon, 1 Sep 2014 19:06:59 +0300 Subject: [PATCH 113/196] [FBX] parse upper cased Int/Enum properties --- code/FBXProperties.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/FBXProperties.cpp b/code/FBXProperties.cpp index 62cbba51d..13b354442 100644 --- a/code/FBXProperties.cpp +++ b/code/FBXProperties.cpp @@ -85,7 +85,7 @@ Property* ReadTypedProperty(const Element& element) else if (!strcmp(cs,"bool") || !strcmp(cs,"Bool")) { return new TypedProperty(ParseTokenAsInt(*tok[4]) != 0); } - else if (!strcmp(cs,"int") || !strcmp(cs,"enum")) { + else if (!strcmp(cs, "int") || !strcmp(cs, "Int") || !strcmp(cs, "enum") || !strcmp(cs, "Enum")) { return new TypedProperty(ParseTokenAsInt(*tok[4])); } else if (!strcmp(cs,"ULongLong")) { From 5ae65987c0c42cddfa8196e28d86097eb63c527a Mon Sep 17 00:00:00 2001 From: Michael Dawson-Haggerty Date: Thu, 4 Sep 2014 01:04:00 -0400 Subject: [PATCH 114/196] added the ability to load from file objects with pyassimp.load, as opposed to only being able to load from paths --- port/PyAssimp/pyassimp/core.py | 101 ++++++++++++++++--------------- port/PyAssimp/pyassimp/helper.py | 88 +++++++++++++++------------ 2 files changed, 100 insertions(+), 89 deletions(-) diff --git a/port/PyAssimp/pyassimp/core.py b/port/PyAssimp/pyassimp/core.py index 4e16718ac..e51e8f5a8 100644 --- a/port/PyAssimp/pyassimp/core.py +++ b/port/PyAssimp/pyassimp/core.py @@ -10,29 +10,20 @@ import sys if sys.version_info < (2,6): raise 'pyassimp: need python 2.6 or newer' - import ctypes import os import numpy -import logging; logger = logging.getLogger("pyassimp") - -# Attach a default, null handler, to the logger. -# applications can easily get log messages from pyassimp -# by calling for instance -# >>> logging.basicConfig(level=logging.DEBUG) -# before importing pyassimp -class NullHandler(logging.Handler): - def emit(self, record): - pass -h = NullHandler() -logger.addHandler(h) +import logging +logger = logging.getLogger("pyassimp") +# attach default null handler to logger so it doesn't complain +# even if you don't attach another handler to logger +logger.addHandler(logging.NullHandler()) from . import structs from .errors import AssimpError from . import helper - assimp_structs_as_tuple = ( structs.Matrix4x4, structs.Matrix3x3, @@ -59,10 +50,9 @@ def make_tuple(ai_obj, type = None): # It is faster and more correct to have an init function for each assimp class def _init_face(aiFace): - aiFace.indices = [aiFace.mIndices[i] for i in range(aiFace.mNumIndices)] + aiFace.indices = [aiFace.mIndices[i] for i in xrange(aiFace.mNumIndices)] -assimp_struct_inits = \ - { structs.Face : _init_face } +assimp_struct_inits = { structs.Face : _init_face } def call_init(obj, caller = None): if helper.hasattr_silent(obj,'contents'): #pointer @@ -86,7 +76,7 @@ def _is_init_type(obj): def _init(self, target = None, parent = None): """ - Custom initialize() for C structs, adds safely accessable member functionality. + Custom initialize() for C structs, adds safely accessible member functionality. :param target: set the object which receive the added methods. Useful when manipulating pointers, to skip the intermediate 'contents' deferencing. @@ -214,7 +204,7 @@ class AssimpLib(object): """ Assimp-Singleton """ - load, release, dll = helper.search_library() + load, load_mem, release, dll = helper.search_library() #the loader as singleton _assimp_lib = AssimpLib() @@ -239,7 +229,6 @@ def pythonize_assimp(type, obj, scene): return meshes if type == "ADDTRANSFORMATION": - def getnode(node, name): if node.name == name: return node for child in node.children: @@ -251,51 +240,65 @@ def pythonize_assimp(type, obj, scene): raise AssimpError("Object " + str(obj) + " has no associated node!") setattr(obj, "transformation", node.transformation) - def recur_pythonize(node, scene): - """ Recursively call pythonize_assimp on + ''' + Recursively call pythonize_assimp on nodes tree to apply several post-processing to pythonize the assimp datastructures. - """ - + ''' node.meshes = pythonize_assimp("MESH", node.meshes, scene) - + for mesh in node.meshes: mesh.material = scene.materials[mesh.materialindex] for cam in scene.cameras: pythonize_assimp("ADDTRANSFORMATION", cam, scene) - #for light in scene.lights: - # pythonize_assimp("ADDTRANSFORMATION", light, scene) - for c in node.children: recur_pythonize(c, scene) - -def load(filename, processing=0): - """ - Loads the model with some specific processing parameters. - - filename - file to load model from - processing - processing parameters - - result Scene-object with model-data - - throws AssimpError - could not open file - """ - #read pure data - #from ctypes import c_char_p, c_uint - #model = _assimp_lib.load(c_char_p(filename), c_uint(processing)) - model = _assimp_lib.load(filename.encode("ascii"), processing) +def load(filename, processing=0, file_type=None): + ''' + Load a model into a scene. On failure throws AssimpError. + + Arguments + --------- + filename: Either a filename or a file object to load model from. + If a file object is passed, file_type MUST be specified + Otherwise Assimp has no idea which importer to use. + This is named 'filename' so as to not break legacy code. + processing: assimp processing parameters + file_type: string, such as 'stl' + + Returns + --------- + Scene object with model-data + ''' + + if hasattr(filename, 'read'): + ''' + This is the case where a file object has been passed to load. + It is calling the following function: + const aiScene* aiImportFileFromMemory(const char* pBuffer, + unsigned int pLength, + unsigned int pFlags, + const char* pHint) + ''' + if file_type == None: + raise AssimpError('File type must be specified when passing file objects!') + data = filename.read() + model = _assimp_lib.load_mem(data, + len(data), + processing, + file_type) + else: + # a filename string has been passed + model = _assimp_lib.load(filename.encode("ascii"), processing) + if not model: - #Uhhh, something went wrong! - raise AssimpError("could not import file: %s" % filename) - + raise AssimpError('Could not import file!') scene = _init(model.contents) - recur_pythonize(scene.rootnode, scene) - return scene def release(scene): diff --git a/port/PyAssimp/pyassimp/helper.py b/port/PyAssimp/pyassimp/helper.py index 21cefdfc5..47794298c 100644 --- a/port/PyAssimp/pyassimp/helper.py +++ b/port/PyAssimp/pyassimp/helper.py @@ -75,42 +75,50 @@ def get_bounding_box_for_node(node, bb_min, bb_max, transformation): return bb_min, bb_max - - -def try_load_functions(library,dll,candidates): - """try to functbind to aiImportFile and aiReleaseImport +def try_load_functions(library_path, dll): + ''' + Try to bind to aiImportFile and aiReleaseImport + + Arguments + --------- + library_path: path to current lib + dll: ctypes handle to library + + Returns + --------- + If unsuccessful: + None + If successful: + Tuple containing (library_path, + load function, + release function, + ctypes handle to assimp library) + ''' - library - path to current lib - dll - ctypes handle to it - candidates - receives matching candidates - - They serve as signal functions to detect assimp, - also they're currently the only functions we need. - insert (library,aiImportFile,aiReleaseImport,dll) - into 'candidates' if successful. - - """ try: - load = dll.aiImportFile - release = dll.aiReleaseImport + load = dll.aiImportFile + release = dll.aiReleaseImport + load_mem = dll.aiImportFileFromMemory except AttributeError: - #OK, this is a library, but it has not the functions we need - pass - else: - #Library found! - from .structs import Scene - load.restype = POINTER(Scene) - - candidates.append((library, load, release, dll)) - + #OK, this is a library, but it doesn't have the functions we need + return None + + # library found! + from .structs import Scene + load.restype = POINTER(Scene) + load_mem.restype = POINTER(Scene) + return (library_path, load, load_mem, release, dll) def search_library(): - """Loads the assimp-Library. + ''' + Loads the assimp library. + Throws exception AssimpError if no library_path is found - result (load-function, release-function) - exception AssimpError if no library is found - - """ + Returns: tuple, (load filename function, + release function, + dll, + load from memory function) + ''' #this path folder = os.path.dirname(__file__) @@ -121,7 +129,6 @@ def search_library(): pass candidates = [] - # test every file for curfolder in [folder]+additional_dirs: for filename in os.listdir(curfolder): @@ -132,26 +139,27 @@ def search_library(): os.path.splitext(filename)[-1].lower() not in ext_whitelist: continue - library = os.path.join(curfolder, filename) - logger.debug('Try ' + library) + library_path = os.path.join(curfolder, filename) + logger.debug('Try ' + library_path) try: - dll = ctypes.cdll.LoadLibrary(library) + dll = ctypes.cdll.LoadLibrary(library_path) except Exception as e: logger.warning(str(e)) # OK, this except is evil. But different OSs will throw different # errors. So just ignore any errors. continue + + loaded = try_load_functions(library_path, dll) + if loaded: candidates.append(loaded) - try_load_functions(library,dll,candidates) - if not candidates: - # no library found - raise AssimpError("assimp library not found") + # no library_path found + raise AssimpError("assimp library_path not found") else: - # get the newest library + # get the newest library_path candidates = map(lambda x: (os.lstat(x[0])[-2], x), candidates) res = max(candidates, key=operator.itemgetter(0))[1] - logger.debug('Using assimp library located at ' + res[0]) + logger.debug('Using assimp library_path located at ' + res[0]) # XXX: if there are 1000 dll/so files containing 'assimp' # in their name, do we have all of them in our address From 7fff52bf8666d6c8aef1ac7e6c7a22a455711de4 Mon Sep 17 00:00:00 2001 From: Michael Dawson-Haggerty Date: Thu, 4 Sep 2014 01:06:30 -0400 Subject: [PATCH 115/196] cleaned up error message autoreplacement --- port/PyAssimp/pyassimp/helper.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/port/PyAssimp/pyassimp/helper.py b/port/PyAssimp/pyassimp/helper.py index 47794298c..b123d813d 100644 --- a/port/PyAssimp/pyassimp/helper.py +++ b/port/PyAssimp/pyassimp/helper.py @@ -153,13 +153,13 @@ def search_library(): if loaded: candidates.append(loaded) if not candidates: - # no library_path found - raise AssimpError("assimp library_path not found") + # no library found + raise AssimpError("assimp library not found") else: # get the newest library_path candidates = map(lambda x: (os.lstat(x[0])[-2], x), candidates) res = max(candidates, key=operator.itemgetter(0))[1] - logger.debug('Using assimp library_path located at ' + res[0]) + logger.debug('Using assimp library located at ' + res[0]) # XXX: if there are 1000 dll/so files containing 'assimp' # in their name, do we have all of them in our address From 8d27a27445d8db8337ae144aaefbf35cb7dba26b Mon Sep 17 00:00:00 2001 From: Michael Dawson-Haggerty Date: Thu, 4 Sep 2014 01:21:37 -0400 Subject: [PATCH 116/196] fixed docstrings --- port/PyAssimp/pyassimp/helper.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/port/PyAssimp/pyassimp/helper.py b/port/PyAssimp/pyassimp/helper.py index b123d813d..ccfd8d2b5 100644 --- a/port/PyAssimp/pyassimp/helper.py +++ b/port/PyAssimp/pyassimp/helper.py @@ -90,7 +90,8 @@ def try_load_functions(library_path, dll): None If successful: Tuple containing (library_path, - load function, + load from filename function, + load from memory function release function, ctypes handle to assimp library) ''' @@ -114,10 +115,10 @@ def search_library(): Loads the assimp library. Throws exception AssimpError if no library_path is found - Returns: tuple, (load filename function, + Returns: tuple, (load from filename function, + load from memory function, release function, - dll, - load from memory function) + dll) ''' #this path folder = os.path.dirname(__file__) @@ -148,7 +149,7 @@ def search_library(): # OK, this except is evil. But different OSs will throw different # errors. So just ignore any errors. continue - + # see if the functions we need are in the dll loaded = try_load_functions(library_path, dll) if loaded: candidates.append(loaded) From 1a594b861a139c027dba7452e58a994e5a9fe4e3 Mon Sep 17 00:00:00 2001 From: acgessler Date: Thu, 4 Sep 2014 18:50:37 -0700 Subject: [PATCH 117/196] Collada: use a counter instead of clock() to generate unique names. Closes #357 --- code/ColladaLoader.cpp | 6 +++--- code/ColladaLoader.h | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp index 26d41862d..95c41042a 100644 --- a/code/ColladaLoader.cpp +++ b/code/ColladaLoader.cpp @@ -73,7 +73,7 @@ static const aiImporterDesc desc = { // ------------------------------------------------------------------------------------------------ // Constructor to be privately used by Importer ColladaLoader::ColladaLoader() -: noSkeletonMesh(), ignoreUpDirection(false) +: noSkeletonMesh(), ignoreUpDirection(false), mNodeNameCounter() {} // ------------------------------------------------------------------------------------------------ @@ -1543,7 +1543,7 @@ const Collada::Node* ColladaLoader::FindNodeBySID( const Collada::Node* pNode, c // ------------------------------------------------------------------------------------------------ // Finds a proper name for a node derived from the collada-node's properties -std::string ColladaLoader::FindNameForNode( const Collada::Node* pNode) const +std::string ColladaLoader::FindNameForNode( const Collada::Node* pNode) { // now setup the name of the node. We take the name if not empty, otherwise the collada ID // FIX: Workaround for XSI calling the instanced visual scene 'untitled' by default. @@ -1557,7 +1557,7 @@ std::string ColladaLoader::FindNameForNode( const Collada::Node* pNode) const { // No need to worry. Unnamed nodes are no problem at all, except // if cameras or lights need to be assigned to them. - return boost::str( boost::format( "$ColladaAutoName$_%d") % clock()); + return boost::str( boost::format( "$ColladaAutoName$_%d") % mNodeNameCounter++); } } diff --git a/code/ColladaLoader.h b/code/ColladaLoader.h index 953bd20b8..392c8f359 100644 --- a/code/ColladaLoader.h +++ b/code/ColladaLoader.h @@ -203,7 +203,7 @@ protected: const Collada::Node* FindNodeBySID( const Collada::Node* pNode, const std::string& pSID) const; /** Finds a proper name for a node derived from the collada-node's properties */ - std::string FindNameForNode( const Collada::Node* pNode) const; + std::string FindNameForNode( const Collada::Node* pNode); protected: /** Filename, for a verbose error message */ @@ -235,6 +235,9 @@ protected: bool noSkeletonMesh; bool ignoreUpDirection; + + /** Used by FindNameForNode() to generate unique node names */ + unsigned int mNodeNameCounter; }; } // end of namespace Assimp From 185f01963fd330df18162c09cd6c047c78ec363f Mon Sep 17 00:00:00 2001 From: acgessler Date: Thu, 4 Sep 2014 20:49:48 -0700 Subject: [PATCH 118/196] LWO: replace legacy reinterpret_cast based code by memcpy to solve Android SIGBUS problems due to unaligned accesses. Fixes #351 --- code/IFF.h | 46 ++++++++++---------- code/LWOBLoader.cpp | 96 ++++++++++++++++++++++++----------------- code/LWOLoader.cpp | 100 ++++++++++++++++++++++++------------------- code/LWOLoader.h | 12 ++++-- code/LWOMaterial.cpp | 72 +++++++++++++++---------------- 5 files changed, 182 insertions(+), 144 deletions(-) diff --git a/code/IFF.h b/code/IFF.h index f730427c2..adc529e53 100644 --- a/code/IFF.h +++ b/code/IFF.h @@ -12,8 +12,6 @@ namespace Assimp { namespace IFF { -#include "./../include/assimp/Compiler/pushpack1.h" - ///////////////////////////////////////////////////////////////////////////////// //! Describes an IFF chunk header ///////////////////////////////////////////////////////////////////////////////// @@ -24,7 +22,7 @@ struct ChunkHeader //! Length of the chunk data, in bytes uint32_t length; -} PACK_STRUCT; +}; ///////////////////////////////////////////////////////////////////////////////// @@ -37,9 +35,7 @@ struct SubChunkHeader //! Length of the chunk data, in bytes uint16_t length; -} PACK_STRUCT; - -#include "./../include/assimp/Compiler/poppack1.h" +}; #define AI_IFF_FOURCC(a,b,c,d) ((uint32_t) (((uint8_t)a << 24u) | \ @@ -52,28 +48,34 @@ struct SubChunkHeader ///////////////////////////////////////////////////////////////////////////////// //! Load a chunk header //! @param outFile Pointer to the file data - points to the chunk data afterwards -//! @return Pointer to the chunk header +//! @return Copy of the chunk header ///////////////////////////////////////////////////////////////////////////////// -inline ChunkHeader* LoadChunk(uint8_t*& outFile) +inline ChunkHeader LoadChunk(uint8_t*& outFile) { - ChunkHeader* head = (ChunkHeader*) outFile; - AI_LSWAP4(head->length); - AI_LSWAP4(head->type); - outFile += sizeof(ChunkHeader); + ChunkHeader head; + ::memcpy(&head.type, outFile, 4); + outFile += 4; + ::memcpy(&head.length, outFile, 4); + outFile += 4; + AI_LSWAP4(head.length); + AI_LSWAP4(head.type); return head; } ///////////////////////////////////////////////////////////////////////////////// //! Load a sub chunk header //! @param outFile Pointer to the file data - points to the chunk data afterwards -//! @return Pointer to the sub chunk header +//! @return Copy of the sub chunk header ///////////////////////////////////////////////////////////////////////////////// -inline SubChunkHeader* LoadSubChunk(uint8_t*& outFile) +inline SubChunkHeader LoadSubChunk(uint8_t*& outFile) { - SubChunkHeader* head = (SubChunkHeader*) outFile; - AI_LSWAP2(head->length); - AI_LSWAP4(head->type); - outFile += sizeof(SubChunkHeader); + SubChunkHeader head; + ::memcpy(&head.type, outFile, 4); + outFile += 4; + ::memcpy(&head.length, outFile, 2); + outFile += 2; + AI_LSWAP2(head.length); + AI_LSWAP4(head.type); return head; } @@ -84,14 +86,14 @@ inline SubChunkHeader* LoadSubChunk(uint8_t*& outFile) //! @param fileType Receives the type of the file //! @return 0 if everything was OK, otherwise an error message ///////////////////////////////////////////////////////////////////////////////// -inline const char* ReadHeader(uint8_t* outFile,uint32_t& fileType) +inline const char* ReadHeader(uint8_t* outFile, uint32_t& fileType) { - ChunkHeader* head = LoadChunk(outFile); - if(AI_IFF_FOURCC_FORM != head->type) + ChunkHeader head = LoadChunk(outFile); + if(AI_IFF_FOURCC_FORM != head.type) { return "The file is not an IFF file: FORM chunk is missing"; } - fileType = *((uint32_t*)(head+1)); + ::memcpy(&fileType, outFile, 4); AI_LSWAP4(fileType); return 0; } diff --git a/code/LWOBLoader.cpp b/code/LWOBLoader.cpp index 730ba3aef..f8d4c36a8 100644 --- a/code/LWOBLoader.cpp +++ b/code/LWOBLoader.cpp @@ -58,30 +58,31 @@ void LWOImporter::LoadLWOBFile() while (running) { if (mFileBuffer + sizeof(IFF::ChunkHeader) > end)break; - LE_NCONST IFF::ChunkHeader* const head = IFF::LoadChunk(mFileBuffer); + const IFF::ChunkHeader head = IFF::LoadChunk(mFileBuffer); - if (mFileBuffer + head->length > end) + if (mFileBuffer + head.length > end) { throw DeadlyImportError("LWOB: Invalid chunk length"); break; } - uint8_t* const next = mFileBuffer+head->length; - switch (head->type) + uint8_t* const next = mFileBuffer+head.length; + switch (head.type) { // vertex list case AI_LWO_PNTS: { if (!mCurLayer->mTempPoints.empty()) DefaultLogger::get()->warn("LWO: PNTS chunk encountered twice"); - else LoadLWOPoints(head->length); + else LoadLWOPoints(head.length); break; } // face list case AI_LWO_POLS: { + if (!mCurLayer->mFaces.empty()) DefaultLogger::get()->warn("LWO: POLS chunk encountered twice"); - else LoadLWOBPolygons(head->length); + else LoadLWOBPolygons(head.length); break; } // list of tags @@ -89,14 +90,14 @@ void LWOImporter::LoadLWOBFile() { if (!mTags->empty()) DefaultLogger::get()->warn("LWO: SRFS chunk encountered twice"); - else LoadLWOTags(head->length); + else LoadLWOTags(head.length); break; } // surface chunk case AI_LWO_SURF: { - LoadLWOBSurface(head->length); + LoadLWOBSurface(head.length); break; } } @@ -137,14 +138,17 @@ void LWOImporter::CountVertsAndFacesLWOB(unsigned int& verts, unsigned int& face { while (cursor < end && max--) { - uint16_t numIndices = *cursor++; - verts += numIndices;faces++; + uint16_t numIndices; + ::memcpy(&numIndices, cursor++, 2); + verts += numIndices; + faces++; cursor += numIndices; - int16_t surface = *cursor++; + int16_t surface; + ::memcpy(&surface, cursor++, 2); if (surface < 0) { // there are detail polygons - numIndices = *cursor++; + ::memcpy(&numIndices, cursor++, 2); CountVertsAndFacesLWOB(verts,faces,cursor,end,numIndices); } } @@ -159,13 +163,22 @@ void LWOImporter::CopyFaceIndicesLWOB(FaceList::iterator& it, while (cursor < end && max--) { LWO::Face& face = *it;++it; - if((face.mNumIndices = *cursor++)) + uint16_t numIndices; + ::memcpy(&numIndices, cursor++, 2); + face.mNumIndices = numIndices; + if(face.mNumIndices) { - if (cursor + face.mNumIndices >= end)break; + if (cursor + face.mNumIndices >= end) + { + break; + } face.mIndices = new unsigned int[face.mNumIndices]; for (unsigned int i = 0; i < face.mNumIndices;++i) { - unsigned int & mi = face.mIndices[i] = *cursor++; + unsigned int & mi = face.mIndices[i]; + uint16_t index; + ::memcpy(&index, cursor++, 2); + mi = index; if (mi > mCurLayer->mTempPoints.size()) { DefaultLogger::get()->warn("LWOB: face index is out of range"); @@ -174,14 +187,19 @@ void LWOImporter::CopyFaceIndicesLWOB(FaceList::iterator& it, } } else DefaultLogger::get()->warn("LWOB: Face has 0 indices"); - int16_t surface = *cursor++; + int16_t surface; + ::memcpy(&surface, cursor++, 2); if (surface < 0) { surface = -surface; // there are detail polygons. - const uint16_t numPolygons = *cursor++; - if (cursor < end)CopyFaceIndicesLWOB(it,cursor,end,numPolygons); + uint16_t numPolygons; + ::memcpy(&numPolygons, cursor++, 2); + if (cursor < end) + { + CopyFaceIndicesLWOB(it,cursor,end,numPolygons); + } } face.surfaceIndex = surface-1; } @@ -235,7 +253,7 @@ void LWOImporter::LoadLWOBSurface(unsigned int size) if (mFileBuffer + 6 >= end) break; - IFF::SubChunkHeader* const head = IFF::LoadSubChunk(mFileBuffer); + IFF::SubChunkHeader head = IFF::LoadSubChunk(mFileBuffer); /* A single test file (sonycam.lwo) seems to have invalid surface chunks. * I'm assuming it's the fault of a single, unknown exporter so there are @@ -244,18 +262,18 @@ void LWOImporter::LoadLWOBSurface(unsigned int size) * We don't break if the chunk limit is exceeded. Instead, we're computing * how much storage is actually left and work with this value from now on. */ - if (mFileBuffer + head->length > end) { + if (mFileBuffer + head.length > end) { DefaultLogger::get()->error("LWOB: Invalid surface chunk length. Trying to continue."); - head->length = (uint16_t) (end - mFileBuffer); + head.length = (uint16_t) (end - mFileBuffer); } - uint8_t* const next = mFileBuffer+head->length; - switch (head->type) + uint8_t* const next = mFileBuffer+head.length; + switch (head.type) { // diffuse color case AI_LWO_COLR: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,COLR,3); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,COLR,3); surf.mColor.r = GetU1() / 255.0f; surf.mColor.g = GetU1() / 255.0f; surf.mColor.b = GetU1() / 255.0f; @@ -264,35 +282,35 @@ void LWOImporter::LoadLWOBSurface(unsigned int size) // diffuse strength ... case AI_LWO_DIFF: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,DIFF,2); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,DIFF,2); surf.mDiffuseValue = GetU2() / 255.0f; break; } // specular strength ... case AI_LWO_SPEC: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,SPEC,2); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,SPEC,2); surf.mSpecularValue = GetU2() / 255.0f; break; } // luminosity ... case AI_LWO_LUMI: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,LUMI,2); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,LUMI,2); surf.mLuminosity = GetU2() / 255.0f; break; } // transparency case AI_LWO_TRAN: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,TRAN,2); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,TRAN,2); surf.mTransparency = GetU2() / 255.0f; break; } // surface flags case AI_LWO_FLAG: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,FLAG,2); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,FLAG,2); uint16_t flag = GetU2(); if (flag & 0x4 ) surf.mMaximumSmoothAngle = 1.56207f; if (flag & 0x8 ) surf.mColorHighlights = 1.f; @@ -302,14 +320,14 @@ void LWOImporter::LoadLWOBSurface(unsigned int size) // maximum smoothing angle case AI_LWO_SMAN: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,SMAN,4); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,SMAN,4); surf.mMaximumSmoothAngle = fabs( GetF4() ); break; } // glossiness case AI_LWO_GLOS: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,GLOS,2); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,GLOS,2); surf.mGlossiness = (float)GetU2(); break; } @@ -317,42 +335,42 @@ void LWOImporter::LoadLWOBSurface(unsigned int size) case AI_LWO_CTEX: { pTex = SetupNewTextureLWOB(surf.mColorTextures, - head->length); + head.length); break; } // diffuse texture case AI_LWO_DTEX: { pTex = SetupNewTextureLWOB(surf.mDiffuseTextures, - head->length); + head.length); break; } // specular texture case AI_LWO_STEX: { pTex = SetupNewTextureLWOB(surf.mSpecularTextures, - head->length); + head.length); break; } // bump texture case AI_LWO_BTEX: { pTex = SetupNewTextureLWOB(surf.mBumpTextures, - head->length); + head.length); break; } // transparency texture case AI_LWO_TTEX: { pTex = SetupNewTextureLWOB(surf.mOpacityTextures, - head->length); + head.length); break; } // texture path case AI_LWO_TIMG: { if (pTex) { - GetS0(pTex->mFileName,head->length); + GetS0(pTex->mFileName,head.length); } else DefaultLogger::get()->warn("LWOB: Unexpected TIMG chunk"); break; @@ -360,7 +378,7 @@ void LWOImporter::LoadLWOBSurface(unsigned int size) // texture strength case AI_LWO_TVAL: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,TVAL,1); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,TVAL,1); if (pTex) { pTex->mStrength = (float)GetU1()/ 255.f; } @@ -370,7 +388,7 @@ void LWOImporter::LoadLWOBSurface(unsigned int size) // texture flags case AI_LWO_TFLG: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,TFLG,2); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,TFLG,2); if (pTex) { diff --git a/code/LWOLoader.cpp b/code/LWOLoader.cpp index 489ce1345..347cd9130 100644 --- a/code/LWOLoader.cpp +++ b/code/LWOLoader.cpp @@ -787,7 +787,8 @@ void LWOImporter::LoadLWO2Polygons(unsigned int length) CountVertsAndFacesLWO2(iNumVertices,iNumFaces,cursor,end); // allocate the output array and copy face indices - if (iNumFaces) { + if (iNumFaces) + { cursor = (uint16_t*)mFileBuffer; mCurLayer->mFaces.resize(iNumFaces,LWO::Face(type)); @@ -802,13 +803,18 @@ void LWOImporter::CountVertsAndFacesLWO2(unsigned int& verts, unsigned int& face { while (cursor < end && max--) { - AI_LSWAP2P(cursor); - uint16_t numIndices = *cursor++; + uint16_t numIndices; + ::memcpy(&numIndices, cursor++, 2); + AI_LSWAP2(numIndices); numIndices &= 0x03FF; - verts += numIndices;++faces; + + verts += numIndices; + ++faces; for(uint16_t i = 0; i < numIndices; i++) + { ReadVSizedIntLWO2((uint8_t*&)cursor); + } } } @@ -817,10 +823,16 @@ void LWOImporter::CopyFaceIndicesLWO2(FaceList::iterator& it, uint16_t*& cursor, const uint16_t* const end) { - while (cursor < end) { - - LWO::Face& face = *it++;; - if((face.mNumIndices = (*cursor++) & 0x03FF)) /* byte swapping has already been done */ { + while (cursor < end) + { + LWO::Face& face = *it++; + uint16_t numIndices; + ::memcpy(&numIndices, cursor++, 2); + AI_LSWAP2(numIndices); + face.mNumIndices = numIndices & 0x03FF; + + if(face.mNumIndices) /* byte swapping has already been done */ + { face.mIndices = new unsigned int[face.mNumIndices]; for(unsigned int i = 0; i < face.mNumIndices; i++) { @@ -848,8 +860,8 @@ void LWOImporter::LoadLWO2PolygonTags(unsigned int length) if (type != AI_LWO_SURF && type != AI_LWO_SMGP) return; - while (mFileBuffer < end) { - + while (mFileBuffer < end) + { unsigned int i = ReadVSizedIntLWO2(mFileBuffer) + mCurLayer->mFaceIDXOfs; unsigned int j = GetU2(); @@ -1106,19 +1118,19 @@ void LWOImporter::LoadLWO2Clip(unsigned int length) // first - get the index of the clip clip.idx = GetU4(); - IFF::SubChunkHeader* const head = IFF::LoadSubChunk(mFileBuffer); - switch (head->type) + IFF::SubChunkHeader head = IFF::LoadSubChunk(mFileBuffer); + switch (head.type) { case AI_LWO_STIL: - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,STIL,1); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,STIL,1); // "Normal" texture - GetS0(clip.path,head->length); + GetS0(clip.path,head.length); clip.type = Clip::STILL; break; case AI_LWO_ISEQ: - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,ISEQ,16); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,ISEQ,16); // Image sequence. We'll later take the first. { uint8_t digits = GetU1(); mFileBuffer++; @@ -1127,12 +1139,12 @@ void LWOImporter::LoadLWO2Clip(unsigned int length) std::string s; std::ostringstream ss; - GetS0(s,head->length); + GetS0(s,head.length); - head->length -= (unsigned int)s.length()+1; + head.length -= (unsigned int)s.length()+1; ss << s; ss << std::setw(digits) << offset + start; - GetS0(s,head->length); + GetS0(s,head.length); ss << s; clip.path = ss.str(); clip.type = Clip::SEQ; @@ -1148,7 +1160,7 @@ void LWOImporter::LoadLWO2Clip(unsigned int length) break; case AI_LWO_XREF: - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,XREF,4); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,XREF,4); // Just a cross-reference to another CLIp clip.type = Clip::REF; @@ -1156,7 +1168,7 @@ void LWOImporter::LoadLWO2Clip(unsigned int length) break; case AI_LWO_NEGA: - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,NEGA,2); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,NEGA,2); clip.negate = (0 != GetU2()); break; @@ -1194,17 +1206,17 @@ void LWOImporter::LoadLWO2Envelope(unsigned int length) while (true) { if (mFileBuffer + 6 >= end)break; - LE_NCONST IFF::SubChunkHeader* const head = IFF::LoadSubChunk(mFileBuffer); + LE_NCONST IFF::SubChunkHeader head = IFF::LoadSubChunk(mFileBuffer); - if (mFileBuffer + head->length > end) + if (mFileBuffer + head.length > end) throw DeadlyImportError("LWO2: Invalid envelope chunk length"); - uint8_t* const next = mFileBuffer+head->length; - switch (head->type) + uint8_t* const next = mFileBuffer+head.length; + switch (head.type) { // Type & representation of the envelope case AI_LWO_TYPE: - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,TYPE,2); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,TYPE,2); mFileBuffer++; // skip user format // Determine type of envelope @@ -1214,20 +1226,20 @@ void LWOImporter::LoadLWO2Envelope(unsigned int length) // precondition case AI_LWO_PRE: - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,PRE,2); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,PRE,2); envelope.pre = (LWO::PrePostBehaviour)GetU2(); break; // postcondition case AI_LWO_POST: - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,POST,2); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,POST,2); envelope.post = (LWO::PrePostBehaviour)GetU2(); break; // keyframe case AI_LWO_KEY: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,KEY,8); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,KEY,8); envelope.keys.push_back(LWO::Key()); LWO::Key& key = envelope.keys.back(); @@ -1240,7 +1252,7 @@ void LWOImporter::LoadLWO2Envelope(unsigned int length) // interval interpolation case AI_LWO_SPAN: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,SPAN,4); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,SPAN,4); if (envelope.keys.size()<2) DefaultLogger::get()->warn("LWO2: Unexpected SPAN chunk"); else { @@ -1286,22 +1298,22 @@ void LWOImporter::LoadLWO2File() while (true) { if (mFileBuffer + sizeof(IFF::ChunkHeader) > end)break; - IFF::ChunkHeader* const head = IFF::LoadChunk(mFileBuffer); + const IFF::ChunkHeader head = IFF::LoadChunk(mFileBuffer); - if (mFileBuffer + head->length > end) + if (mFileBuffer + head.length > end) { throw DeadlyImportError("LWO2: Chunk length points behind the file"); break; } - uint8_t* const next = mFileBuffer+head->length; + uint8_t* const next = mFileBuffer+head.length; unsigned int iUnnamed = 0; - if(!head->length) { + if(!head.length) { mFileBuffer = next; continue; } - switch (head->type) + switch (head.type) { // new layer case AI_LWO_LAYR: @@ -1311,7 +1323,7 @@ void LWOImporter::LoadLWO2File() LWO::Layer& layer = mLayers->back(); mCurLayer = &layer; - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,LAYR,16); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,LAYR,16); // layer index. layer.mIndex = GetU2(); @@ -1327,7 +1339,7 @@ void LWOImporter::LoadLWO2File() mCurLayer->mPivot.x = GetF4(); mCurLayer->mPivot.y = GetF4(); mCurLayer->mPivot.z = GetF4(); - GetS0(layer.mName,head->length-16); + GetS0(layer.mName,head.length-16); // if the name is empty, generate a default name if (layer.mName.empty()) { @@ -1360,7 +1372,7 @@ void LWOImporter::LoadLWO2File() break; unsigned int old = (unsigned int)mCurLayer->mTempPoints.size(); - LoadLWOPoints(head->length); + LoadLWOPoints(head.length); mCurLayer->mPointIDXOfs = old; break; } @@ -1379,7 +1391,7 @@ void LWOImporter::LoadLWO2File() if (mCurLayer->mTempPoints.empty()) DefaultLogger::get()->warn("LWO2: Unexpected VMAP chunk"); - else LoadLWO2VertexMap(head->length,head->type == AI_LWO_VMAD); + else LoadLWO2VertexMap(head.length,head.type == AI_LWO_VMAD); break; } // face list @@ -1389,7 +1401,7 @@ void LWOImporter::LoadLWO2File() break; unsigned int old = (unsigned int)mCurLayer->mFaces.size(); - LoadLWO2Polygons(head->length); + LoadLWO2Polygons(head.length); mCurLayer->mFaceIDXOfs = old; break; } @@ -1401,7 +1413,7 @@ void LWOImporter::LoadLWO2File() if (mCurLayer->mFaces.empty()) DefaultLogger::get()->warn("LWO2: Unexpected PTAG"); - else LoadLWO2PolygonTags(head->length); + else LoadLWO2PolygonTags(head.length); break; } // list of tags @@ -1409,28 +1421,28 @@ void LWOImporter::LoadLWO2File() { if (!mTags->empty()) DefaultLogger::get()->warn("LWO2: SRFS chunk encountered twice"); - else LoadLWOTags(head->length); + else LoadLWOTags(head.length); break; } // surface chunk case AI_LWO_SURF: { - LoadLWO2Surface(head->length); + LoadLWO2Surface(head.length); break; } // clip chunk case AI_LWO_CLIP: { - LoadLWO2Clip(head->length); + LoadLWO2Clip(head.length); break; } // envelope chunk case AI_LWO_ENVL: { - LoadLWO2Envelope(head->length); + LoadLWO2Envelope(head.length); break; } } diff --git a/code/LWOLoader.h b/code/LWOLoader.h index bf93998c1..e06cdc796 100644 --- a/code/LWOLoader.h +++ b/code/LWOLoader.h @@ -402,7 +402,9 @@ protected: // ------------------------------------------------------------------------------------------------ inline float LWOImporter::GetF4() { - float f = *((float*)mFileBuffer);mFileBuffer += 4; + float f; + ::memcpy(&f, mFileBuffer, 4); + mFileBuffer += 4; AI_LSWAP4(f); return f; } @@ -410,7 +412,9 @@ inline float LWOImporter::GetF4() // ------------------------------------------------------------------------------------------------ inline uint32_t LWOImporter::GetU4() { - uint32_t f = *((uint32_t*)mFileBuffer);mFileBuffer += 4; + uint32_t f; + ::memcpy(&f, mFileBuffer, 4); + mFileBuffer += 4; AI_LSWAP4(f); return f; } @@ -418,7 +422,9 @@ inline uint32_t LWOImporter::GetU4() // ------------------------------------------------------------------------------------------------ inline uint16_t LWOImporter::GetU2() { - uint16_t f = *((uint16_t*)mFileBuffer);mFileBuffer += 2; + uint16_t f; + ::memcpy(&f, mFileBuffer, 2); + mFileBuffer += 2; AI_LSWAP2(f); return f; } diff --git a/code/LWOMaterial.cpp b/code/LWOMaterial.cpp index a9ee1e3d7..cdeb6cabd 100644 --- a/code/LWOMaterial.cpp +++ b/code/LWOMaterial.cpp @@ -527,13 +527,13 @@ void LWOImporter::LoadLWO2ImageMap(unsigned int size, LWO::Texture& tex ) while (true) { if (mFileBuffer + 6 >= end)break; - LE_NCONST IFF::SubChunkHeader* const head = IFF::LoadSubChunk(mFileBuffer); + LE_NCONST IFF::SubChunkHeader head = IFF::LoadSubChunk(mFileBuffer); - if (mFileBuffer + head->length > end) + if (mFileBuffer + head.length > end) throw DeadlyImportError("LWO2: Invalid SURF.BLOCK chunk length"); - uint8_t* const next = mFileBuffer+head->length; - switch (head->type) + uint8_t* const next = mFileBuffer+head.length; + switch (head.type) { case AI_LWO_PROJ: tex.mapMode = (Texture::MappingMode)GetU2(); @@ -549,7 +549,7 @@ void LWOImporter::LoadLWO2ImageMap(unsigned int size, LWO::Texture& tex ) tex.mClipIdx = GetU2(); break; case AI_LWO_VMAP: - GetS0(tex.mUVChannelIndex,head->length); + GetS0(tex.mUVChannelIndex,head.length); break; case AI_LWO_WRPH: tex.wrapAmountH = GetF4(); @@ -595,13 +595,13 @@ void LWOImporter::LoadLWO2TextureHeader(unsigned int size, LWO::Texture& tex ) while (true) { if (mFileBuffer + 6 >= end)break; - LE_NCONST IFF::SubChunkHeader* const head = IFF::LoadSubChunk(mFileBuffer); + const IFF::SubChunkHeader head = IFF::LoadSubChunk(mFileBuffer); - if (mFileBuffer + head->length > end) + if (mFileBuffer + head.length > end) throw DeadlyImportError("LWO2: Invalid texture header chunk length"); - uint8_t* const next = mFileBuffer+head->length; - switch (head->type) + uint8_t* const next = mFileBuffer+head.length; + switch (head.type) { case AI_LWO_CHAN: tex.type = GetU4(); @@ -698,20 +698,20 @@ void LWOImporter::LoadLWO2ShaderBlock(LE_NCONST IFF::SubChunkHeader* /*head*/, u while (true) { if (mFileBuffer + 6 >= end)break; - LE_NCONST IFF::SubChunkHeader* const head = IFF::LoadSubChunk(mFileBuffer); + const IFF::SubChunkHeader head = IFF::LoadSubChunk(mFileBuffer); - if (mFileBuffer + head->length > end) + if (mFileBuffer + head.length > end) throw DeadlyImportError("LWO2: Invalid shader header chunk length"); - uint8_t* const next = mFileBuffer+head->length; - switch (head->type) + uint8_t* const next = mFileBuffer+head.length; + switch (head.type) { case AI_LWO_ENAB: shader.enabled = GetU2() ? true : false; break; case AI_LWO_FUNC: - GetS0( shader.functionName, head->length ); + GetS0( shader.functionName, head.length ); } mFileBuffer = next; } @@ -756,18 +756,18 @@ void LWOImporter::LoadLWO2Surface(unsigned int size) { if (mFileBuffer + 6 >= end) break; - LE_NCONST IFF::SubChunkHeader* const head = IFF::LoadSubChunk(mFileBuffer); + const IFF::SubChunkHeader head = IFF::LoadSubChunk(mFileBuffer); - if (mFileBuffer + head->length > end) + if (mFileBuffer + head.length > end) throw DeadlyImportError("LWO2: Invalid surface chunk length"); - uint8_t* const next = mFileBuffer+head->length; - switch (head->type) + uint8_t* const next = mFileBuffer+head.length; + switch (head.type) { // diffuse color case AI_LWO_COLR: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,COLR,12); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,COLR,12); surf.mColor.r = GetF4(); surf.mColor.g = GetF4(); surf.mColor.b = GetF4(); @@ -776,14 +776,14 @@ void LWOImporter::LoadLWO2Surface(unsigned int size) // diffuse strength ... hopefully case AI_LWO_DIFF: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,DIFF,4); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,DIFF,4); surf.mDiffuseValue = GetF4(); break; } // specular strength ... hopefully case AI_LWO_SPEC: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,SPEC,4); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,SPEC,4); surf.mSpecularValue = GetF4(); break; } @@ -794,21 +794,21 @@ void LWOImporter::LoadLWO2Surface(unsigned int size) if (surf.mTransparency == 10e10f) break; - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,TRAN,4); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,TRAN,4); surf.mTransparency = GetF4(); break; } // additive transparency case AI_LWO_ADTR: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,ADTR,4); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,ADTR,4); surf.mAdditiveTransparency = GetF4(); break; } // wireframe mode case AI_LWO_LINE: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,LINE,2); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,LINE,2); if (GetU2() & 0x1) surf.mWireframe = true; break; @@ -816,49 +816,49 @@ void LWOImporter::LoadLWO2Surface(unsigned int size) // glossiness case AI_LWO_GLOS: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,GLOS,4); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,GLOS,4); surf.mGlossiness = GetF4(); break; } // bump intensity case AI_LWO_BUMP: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,BUMP,4); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,BUMP,4); surf.mBumpIntensity = GetF4(); break; } // color highlights case AI_LWO_CLRH: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,CLRH,4); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,CLRH,4); surf.mColorHighlights = GetF4(); break; } // index of refraction case AI_LWO_RIND: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,RIND,4); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,RIND,4); surf.mIOR = GetF4(); break; } // polygon sidedness case AI_LWO_SIDE: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,SIDE,2); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,SIDE,2); surf.bDoubleSided = (3 == GetU2()); break; } // maximum smoothing angle case AI_LWO_SMAN: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,SMAN,4); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,SMAN,4); surf.mMaximumSmoothAngle = fabs( GetF4() ); break; } // vertex color channel to be applied to the surface case AI_LWO_VCOL: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,VCOL,12); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,VCOL,12); surf.mDiffuseValue *= GetF4(); // strength ReadVSizedIntLWO2(mFileBuffer); // skip envelope surf.mVCMapType = GetU4(); // type of the channel @@ -870,18 +870,18 @@ void LWOImporter::LoadLWO2Surface(unsigned int size) // surface bock entry case AI_LWO_BLOK: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,BLOK,4); - LE_NCONST IFF::SubChunkHeader* head2 = IFF::LoadSubChunk(mFileBuffer); + AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,BLOK,4); + IFF::SubChunkHeader head2 = IFF::LoadSubChunk(mFileBuffer); - switch (head2->type) + switch (head2.type) { case AI_LWO_PROC: case AI_LWO_GRAD: case AI_LWO_IMAP: - LoadLWO2TextureBlock(head2, head->length); + LoadLWO2TextureBlock(&head2, head.length); break; case AI_LWO_SHDR: - LoadLWO2ShaderBlock(head2, head->length); + LoadLWO2ShaderBlock(&head2, head.length); break; default: From 1c27d3c565290b74a9df18b928af7d278aafb422 Mon Sep 17 00:00:00 2001 From: acgessler Date: Thu, 4 Sep 2014 21:04:39 -0700 Subject: [PATCH 119/196] Regression test suite: look for assimp_cmd binary in current folder first. --- test/regression/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/regression/utils.py b/test/regression/utils.py index 931aacedf..73c8336ca 100644 --- a/test/regression/utils.py +++ b/test/regression/utils.py @@ -88,6 +88,7 @@ def find_assimp_or_die(): global assimp_bin_path if os.name == "nt": search_x86 = [ + os.path.join("assimp.exe"), os.path.join("..","..","bin","assimpcmd_release-dll_Win32","assimp.exe"), os.path.join("..","..","bin","x86","assimp"), os.path.join("..","..","bin","Release","assimp.exe") From 48b138d57597def0265c78cc37db67f0ac38187f Mon Sep 17 00:00:00 2001 From: acgessler Date: Thu, 4 Sep 2014 22:42:00 -0700 Subject: [PATCH 120/196] Add cmake install to travis build. --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index e0c0788ae..efdf0b2cc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,6 +16,7 @@ compiler: script: - cmake -G "Unix Makefiles" -DASSIMP_ENABLE_BOOST_WORKAROUND=YES -DASSIMP_NO_EXPORT=$TRAVIS_NO_EXPORT -STATIC_BUILD=$TRAVIS_STATIC_BUILD - make + - sudo make install - cd test/unit - ../../bin/unit From 9e24acb18702fb3945cea694db9f8f71096b1f5a Mon Sep 17 00:00:00 2001 From: acgessler Date: Thu, 4 Sep 2014 22:42:51 -0700 Subject: [PATCH 121/196] Try running regression tests from travis --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index efdf0b2cc..517db52b9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,4 +19,7 @@ script: - sudo make install - cd test/unit - ../../bin/unit + - cd ../regression + - chmod 755 run.py + - ./run.py From 19a50b9a9e7627b181a4a8a071f4c2ec62b8f70d Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Thu, 4 Sep 2014 22:56:08 -0700 Subject: [PATCH 122/196] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 517db52b9..772cb51ae 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ before_install: - - sudo apt-get install cmake libcppunit-dev + - sudo apt-get install cmake libcppunit-dev python3 env: - TRAVIS_NO_EXPORT=YES From 11dc89d4551ff111d31773a79f1a6da0fbff601b Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Thu, 4 Sep 2014 23:06:47 -0700 Subject: [PATCH 123/196] Update .travis.yml --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 772cb51ae..8a4974ae8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,7 @@ script: - cmake -G "Unix Makefiles" -DASSIMP_ENABLE_BOOST_WORKAROUND=YES -DASSIMP_NO_EXPORT=$TRAVIS_NO_EXPORT -STATIC_BUILD=$TRAVIS_STATIC_BUILD - make - sudo make install + - sudo ldconfig - cd test/unit - ../../bin/unit - cd ../regression From fd84970596fb825d1ee8bf0003827c7ad7d7a01c Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Thu, 4 Sep 2014 23:18:20 -0700 Subject: [PATCH 124/196] Regression tests: run.py should not block on user input if used for CI. --- test/regression/run.py | 1 - 1 file changed, 1 deletion(-) diff --git a/test/regression/run.py b/test/regression/run.py index caa3a6bd0..9c8ef619a 100644 --- a/test/regression/run.py +++ b/test/regression/run.py @@ -258,6 +258,5 @@ def run_test(): # ------------------------------------------------------------------------------- if __name__ == "__main__": run_test() - input("Press any key to continue ...") # vim: ai ts=4 sts=4 et sw=4 From 5a0c7058b547510e515c113c95a7eee113fa0741 Mon Sep 17 00:00:00 2001 From: acgessler Date: Fri, 5 Sep 2014 21:20:07 -0700 Subject: [PATCH 125/196] regression tests: ignore pond.0.ply file due to overly long runtime. --- test/regression/run.py | 4 ++++ test/regression/settings.py | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/test/regression/run.py b/test/regression/run.py index caa3a6bd0..5d17f9f48 100644 --- a/test/regression/run.py +++ b/test/regression/run.py @@ -160,6 +160,10 @@ def process_dir(d, outfile_results, zipin, result): process_dir(fullpath, outfile_results, zipin, result) continue + if f in settings.files_to_ignore: + print("Ignoring " + f) + continue + for pppreset in settings.pp_configs_to_test: filehash = utils.hashing(fullpath, pppreset) failure = False diff --git a/test/regression/settings.py b/test/regression/settings.py index 4f81cc66e..b8cd28683 100644 --- a/test/regression/settings.py +++ b/test/regression/settings.py @@ -47,6 +47,14 @@ test scripts rely on this) import os +# ------------------------------------------------------------------------------- +# Files to ignore (with reason) +# +# pond.0.ply - loads with 40k identical triangles, causing postprocessing +# to have quadratic runtime. +# ------------------------------------------------------------------------------- +files_to_ignore = ["pond.0.ply"] + # ------------------------------------------------------------------------------- # List of file extensions to be excluded from the regression suite # File extensions are case insensitive From 1249171bba0aa4cb2f78e38f99fcd63bb5b668e6 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Fri, 5 Sep 2014 23:56:49 -0700 Subject: [PATCH 126/196] Regression tests: output list of failures in Travis terminal output --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 8a4974ae8..a2b4423ae 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,4 +23,7 @@ script: - cd ../regression - chmod 755 run.py - ./run.py + - echo ========================================================== + - echo REGRESSION TEST FAILS (results/run_regression_suite_failures.csv) + - cat ../results/run_regression_suite_failures.csv From 460566197bb03e9ac042e2c850c3f44bf5896d11 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Sat, 6 Sep 2014 00:14:50 -0700 Subject: [PATCH 127/196] Travis: fix echo failing --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index a2b4423ae..aa1c9d56b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ script: - cd ../regression - chmod 755 run.py - ./run.py - - echo ========================================================== - - echo REGRESSION TEST FAILS (results/run_regression_suite_failures.csv) + - echo "==========================================================" + - echo "REGRESSION TEST FAILS (results/run_regression_suite_failures.csv)" - cat ../results/run_regression_suite_failures.csv From 66e608a39306d674a544ce194ab1da010e1b932a Mon Sep 17 00:00:00 2001 From: Jared Duke Date: Sun, 7 Sep 2014 16:52:03 -0700 Subject: [PATCH 128/196] Replace cppunit with the googletest framework The GTest framework has a more active support base, and natively supports CMake. Introduce it as an external dependency (using CMake's ExternalProject_Add), replacing cppunit and porting the associated unit tests. --- .travis.yml | 2 +- cmake-modules/AddGTest.cmake | 64 + code/AssbinExporter.cpp | 3 + code/AssxmlExporter.cpp | 2 + code/JoinVerticesProcess.h | 2 - code/ScenePreprocessor.cpp | 8 +- contrib/cppunit-1.12.1/AUTHORS | 6 - contrib/cppunit-1.12.1/BUGS | 6 - contrib/cppunit-1.12.1/COPYING | 504 - contrib/cppunit-1.12.1/ChangeLog | 3664 --- contrib/cppunit-1.12.1/CodingGuideLines.txt | 61 - contrib/cppunit-1.12.1/INSTALL | 226 - contrib/cppunit-1.12.1/INSTALL-WIN32.txt | 205 - contrib/cppunit-1.12.1/INSTALL-unix | 121 - contrib/cppunit-1.12.1/Makefile.am | 80 - contrib/cppunit-1.12.1/Makefile.in | 872 - contrib/cppunit-1.12.1/NEWS | 1151 - contrib/cppunit-1.12.1/README | 19 - contrib/cppunit-1.12.1/THANKS | 23 - contrib/cppunit-1.12.1/TODO | 35 - contrib/cppunit-1.12.1/aclocal.m4 | 7542 ----- .../config/ac_create_prefix_config_h.m4 | 107 - .../config/ac_cxx_have_sstream.m4 | 24 - .../config/ac_cxx_have_strstream.m4 | 29 - .../config/ac_cxx_namespaces.m4 | 22 - contrib/cppunit-1.12.1/config/ac_cxx_rtti.m4 | 34 - .../ac_cxx_string_compare_string_first.m4 | 27 - contrib/cppunit-1.12.1/config/ac_dll.m4 | 47 - .../config/ax_cxx_gcc_abi_demangle.m4 | 40 - .../config/ax_cxx_have_isfinite.m4 | 27 - .../config/bb_enable_doxygen.m4 | 34 - contrib/cppunit-1.12.1/config/config.guess | 1526 - contrib/cppunit-1.12.1/config/config.h.in | 100 - contrib/cppunit-1.12.1/config/config.sub | 1658 -- contrib/cppunit-1.12.1/config/depcomp | 589 - contrib/cppunit-1.12.1/config/install-sh | 519 - contrib/cppunit-1.12.1/config/ltmain.sh | 6964 ----- contrib/cppunit-1.12.1/config/missing | 367 - contrib/cppunit-1.12.1/configure | 23322 ---------------- contrib/cppunit-1.12.1/configure.in | 155 - .../contrib/bc5/bcc-makefile.zip | Bin 4359 -> 0 bytes .../contrib/msvc/AddingUnitTestMethod.dsm | 170 - .../cppunit-1.12.1/contrib/msvc/CppUnit.WWTpl | 486 - .../cppunit-1.12.1/contrib/msvc/readme.txt | 10 - .../cppunit-1.12.1/contrib/xml-xsl/report.xsl | 125 - .../cppunit-1.12.1/contrib/xml-xsl/tests.xml | 58 - contrib/cppunit-1.12.1/cppunit-config.1 | 67 - contrib/cppunit-1.12.1/cppunit-config.in | 98 - contrib/cppunit-1.12.1/cppunit.m4 | 92 - contrib/cppunit-1.12.1/cppunit.pc.in | 11 - contrib/cppunit-1.12.1/cppunit.spec | 65 - contrib/cppunit-1.12.1/cppunit.spec.in | 65 - contrib/cppunit-1.12.1/doc/Doxyfile.in | 604 - contrib/cppunit-1.12.1/doc/FAQ | 31 - contrib/cppunit-1.12.1/doc/Makefile.am | 67 - contrib/cppunit-1.12.1/doc/Makefile.in | 441 - contrib/cppunit-1.12.1/doc/Money.dox | 558 - contrib/cppunit-1.12.1/doc/cookbook.dox | 523 - contrib/cppunit-1.12.1/doc/footer.html | 23 - contrib/cppunit-1.12.1/doc/header.html | 27 - .../doc/other_documentation.dox | 147 - contrib/cppunit-1.12.1/include/Makefile.am | 4 - contrib/cppunit-1.12.1/include/Makefile.in | 514 - .../include/cppunit/AdditionalMessage.h | 76 - .../cppunit-1.12.1/include/cppunit/Asserter.h | 143 - .../cppunit/BriefTestProgressListener.h | 43 - .../include/cppunit/CompilerOutputter.h | 146 - .../include/cppunit/Exception.h | 90 - .../include/cppunit/Makefile.am | 42 - .../include/cppunit/Makefile.in | 587 - .../cppunit-1.12.1/include/cppunit/Message.h | 156 - .../include/cppunit/Outputter.h | 26 - .../include/cppunit/Portability.h | 177 - .../include/cppunit/Protector.h | 94 - .../include/cppunit/SourceLine.h | 63 - .../include/cppunit/SynchronizedObject.h | 80 - contrib/cppunit-1.12.1/include/cppunit/Test.h | 117 - .../include/cppunit/TestAssert.h | 428 - .../include/cppunit/TestCaller.h | 204 - .../cppunit-1.12.1/include/cppunit/TestCase.h | 55 - .../include/cppunit/TestComposite.h | 45 - .../include/cppunit/TestFailure.h | 58 - .../include/cppunit/TestFixture.h | 99 - .../cppunit-1.12.1/include/cppunit/TestLeaf.h | 44 - .../include/cppunit/TestListener.h | 148 - .../cppunit-1.12.1/include/cppunit/TestPath.h | 211 - .../include/cppunit/TestResult.h | 156 - .../include/cppunit/TestResultCollector.h | 87 - .../include/cppunit/TestRunner.h | 135 - .../include/cppunit/TestSuccessListener.h | 39 - .../include/cppunit/TestSuite.h | 80 - .../include/cppunit/TextOutputter.h | 59 - .../cppunit/TextTestProgressListener.h | 44 - .../include/cppunit/TextTestResult.h | 39 - .../include/cppunit/TextTestRunner.h | 6 - .../include/cppunit/XmlOutputter.h | 167 - .../include/cppunit/XmlOutputterHook.h | 163 - .../include/cppunit/config/CppUnitApi.h | 33 - .../include/cppunit/config/Makefile.am | 10 - .../include/cppunit/config/Makefile.in | 438 - .../include/cppunit/config/SelectDllLoader.h | 76 - .../include/cppunit/config/SourcePrefix.h | 14 - .../include/cppunit/config/config-bcb5.h | 47 - .../include/cppunit/config/config-evc4.h | 78 - .../include/cppunit/config/config-mac.h | 58 - .../include/cppunit/config/config-msvc6.h | 83 - .../cppunit/extensions/AutoRegisterSuite.h | 83 - .../extensions/ExceptionTestCaseDecorator.h | 104 - .../include/cppunit/extensions/HelperMacros.h | 541 - .../include/cppunit/extensions/Makefile.am | 19 - .../include/cppunit/extensions/Makefile.in | 446 - .../include/cppunit/extensions/Orthodox.h | 95 - .../include/cppunit/extensions/RepeatedTest.h | 43 - .../cppunit/extensions/TestCaseDecorator.h | 40 - .../cppunit/extensions/TestDecorator.h | 49 - .../include/cppunit/extensions/TestFactory.h | 27 - .../cppunit/extensions/TestFactoryRegistry.h | 182 - .../cppunit/extensions/TestFixtureFactory.h | 50 - .../include/cppunit/extensions/TestNamer.h | 89 - .../include/cppunit/extensions/TestSetUp.h | 34 - .../extensions/TestSuiteBuilderContext.h | 131 - .../cppunit/extensions/TestSuiteFactory.h | 27 - .../cppunit/extensions/TypeInfoHelper.h | 33 - .../cppunit/plugin/DynamicLibraryManager.h | 121 - .../plugin/DynamicLibraryManagerException.h | 53 - .../include/cppunit/plugin/Makefile.am | 9 - .../include/cppunit/plugin/Makefile.in | 437 - .../include/cppunit/plugin/PlugInManager.h | 113 - .../include/cppunit/plugin/PlugInParameters.h | 36 - .../include/cppunit/plugin/TestPlugIn.h | 200 - .../cppunit/plugin/TestPlugInDefaultImpl.h | 52 - .../cppunit/portability/CppUnitDeque.h | 25 - .../include/cppunit/portability/CppUnitMap.h | 29 - .../include/cppunit/portability/CppUnitSet.h | 28 - .../cppunit/portability/CppUnitStack.h | 26 - .../cppunit/portability/CppUnitVector.h | 25 - .../cppunit/portability/FloatingPoint.h | 54 - .../include/cppunit/portability/Makefile.am | 10 - .../include/cppunit/portability/Makefile.in | 438 - .../include/cppunit/portability/Stream.h | 347 - .../include/cppunit/tools/Algorithm.h | 23 - .../include/cppunit/tools/Makefile.am | 7 - .../include/cppunit/tools/Makefile.in | 435 - .../include/cppunit/tools/StringTools.h | 34 - .../include/cppunit/tools/XmlDocument.h | 86 - .../include/cppunit/tools/XmlElement.h | 149 - .../include/cppunit/ui/Makefile.am | 1 - .../include/cppunit/ui/Makefile.in | 511 - .../include/cppunit/ui/mfc/Makefile.am | 5 - .../include/cppunit/ui/mfc/Makefile.in | 433 - .../include/cppunit/ui/mfc/MfcTestRunner.h | 76 - .../include/cppunit/ui/mfc/TestRunner.h | 21 - .../include/cppunit/ui/qt/Config.h | 21 - .../include/cppunit/ui/qt/Makefile.am | 6 - .../include/cppunit/ui/qt/Makefile.in | 434 - .../include/cppunit/ui/qt/QtTestRunner.h | 85 - .../include/cppunit/ui/qt/TestRunner.h | 11 - .../include/cppunit/ui/text/Makefile.am | 5 - .../include/cppunit/ui/text/Makefile.in | 433 - .../include/cppunit/ui/text/TestRunner.h | 24 - .../include/cppunit/ui/text/TextTestRunner.h | 97 - .../cppunit-1.12.1/src/CppUnitLibraries.sln | 50 - .../src/CppUnitLibrariesVC9.sln | 50 - contrib/cppunit-1.12.1/src/Makefile.am | 4 - contrib/cppunit-1.12.1/src/Makefile.in | 514 - .../src/cppunit/AdditionalMessage.cpp | 41 - .../cppunit-1.12.1/src/cppunit/Asserter.cpp | 101 - .../src/cppunit/BeOsDynamicLibraryManager.cpp | 49 - .../src/cppunit/BriefTestProgressListener.cpp | 49 - .../src/cppunit/CompilerOutputter.cpp | 216 - .../src/cppunit/DefaultProtector.cpp | 42 - .../src/cppunit/DefaultProtector.h | 27 - .../cppunit-1.12.1/src/cppunit/DllMain.cpp | 16 - .../src/cppunit/DynamicLibraryManager.cpp | 77 - .../DynamicLibraryManagerException.cpp | 41 - .../cppunit-1.12.1/src/cppunit/Exception.cpp | 126 - .../cppunit-1.12.1/src/cppunit/Makefile.am | 67 - .../cppunit-1.12.1/src/cppunit/Makefile.in | 632 - .../cppunit-1.12.1/src/cppunit/Message.cpp | 170 - .../src/cppunit/PlugInManager.cpp | 110 - .../src/cppunit/PlugInParameters.cpp | 28 - .../cppunit-1.12.1/src/cppunit/Protector.cpp | 86 - .../src/cppunit/ProtectorChain.cpp | 86 - .../src/cppunit/ProtectorChain.h | 51 - .../src/cppunit/ProtectorContext.h | 38 - .../src/cppunit/RepeatedTest.cpp | 29 - .../src/cppunit/ShlDynamicLibraryManager.cpp | 53 - .../cppunit-1.12.1/src/cppunit/SourceLine.cpp | 81 - .../src/cppunit/StringTools.cpp | 80 - .../src/cppunit/SynchronizedObject.cpp | 32 - contrib/cppunit-1.12.1/src/cppunit/Test.cpp | 97 - .../cppunit-1.12.1/src/cppunit/TestAssert.cpp | 46 - .../cppunit-1.12.1/src/cppunit/TestCase.cpp | 137 - .../src/cppunit/TestCaseDecorator.cpp | 47 - .../src/cppunit/TestComposite.cpp | 77 - .../src/cppunit/TestDecorator.cpp | 53 - .../src/cppunit/TestFactoryRegistry.cpp | 161 - .../src/cppunit/TestFailure.cpp | 71 - .../cppunit-1.12.1/src/cppunit/TestLeaf.cpp | 28 - .../cppunit-1.12.1/src/cppunit/TestNamer.cpp | 44 - .../cppunit-1.12.1/src/cppunit/TestPath.cpp | 254 - .../src/cppunit/TestPlugInDefaultImpl.cpp | 63 - .../cppunit-1.12.1/src/cppunit/TestResult.cpp | 196 - .../src/cppunit/TestResultCollector.cpp | 117 - .../cppunit-1.12.1/src/cppunit/TestRunner.cpp | 101 - .../cppunit-1.12.1/src/cppunit/TestSetUp.cpp | 32 - .../src/cppunit/TestSuccessListener.cpp | 44 - .../cppunit-1.12.1/src/cppunit/TestSuite.cpp | 64 - .../src/cppunit/TestSuiteBuilderContext.cpp | 85 - .../src/cppunit/TextOutputter.cpp | 140 - .../src/cppunit/TextTestProgressListener.cpp | 43 - .../src/cppunit/TextTestResult.cpp | 50 - .../src/cppunit/TextTestRunner.cpp | 144 - .../src/cppunit/TypeInfoHelper.cpp | 53 - .../src/cppunit/UnixDynamicLibraryManager.cpp | 44 - .../cppunit/Win32DynamicLibraryManager.cpp | 73 - .../src/cppunit/XmlDocument.cpp | 106 - .../cppunit-1.12.1/src/cppunit/XmlElement.cpp | 226 - .../src/cppunit/XmlOutputter.cpp | 205 - .../src/cppunit/XmlOutputterHook.cpp | 44 - .../cppunit-1.12.1/src/cppunit/cppunit.dsp | 707 - .../cppunit-1.12.1/src/cppunit/cppunit.vcproj | 2707 -- .../src/cppunit/cppunit_dll.dsp | 682 - .../src/cppunit/cppunit_dll.vcproj | 1673 -- .../src/cppunit/cppunitvc9.vcproj | 2708 -- contrib/cppunit_note.txt | 8 - test/CMakeLists.txt | 101 +- test/unit/BoostWorkaround/tupletest.cpp | 33 - test/unit/Main.cpp | 48 +- test/unit/UnitTestPCH.h | 6 +- test/unit/utExport.cpp | 82 +- test/unit/utExport.h | 41 - test/unit/utFindDegenerates.cpp | 78 +- test/unit/utFindDegenerates.h | 33 - test/unit/utFindInvalidData.cpp | 59 +- test/unit/utFindInvalidData.h | 33 - test/unit/utFixInfacingNormals.cpp | 3 +- test/unit/utGenNormals.cpp | 32 +- test/unit/utGenNormals.h | 35 - test/unit/utImporter.cpp | 174 +- test/unit/utImporter.h | 62 - test/unit/utJoinVertices.cpp | 58 +- test/unit/utJoinVertices.h | 36 - test/unit/utLimitBoneWeights.cpp | 33 +- test/unit/utLimitBoneWeights.h | 36 - test/unit/utMaterialSystem.cpp | 68 +- test/unit/utMaterialSystem.h | 43 - test/unit/utNoBoostTest.cpp | 75 +- test/unit/utNoBoostTest.h | 37 - test/unit/utPretransformVertices.cpp | 46 +- test/unit/utPretransformVertices.h | 37 - test/unit/utRemoveComments.cpp | 34 +- test/unit/utRemoveComments.h | 34 - test/unit/utRemoveComponent.cpp | 103 +- test/unit/utRemoveComponent.h | 51 - test/unit/utRemoveRedundantMaterials.cpp | 48 +- test/unit/utRemoveRedundantMaterials.h | 38 - test/unit/utScenePreprocessor.cpp | 82 +- test/unit/utScenePreprocessor.h | 44 - test/unit/utSharedPPData.cpp | 51 +- test/unit/utSharedPPData.h | 38 - test/unit/utSortByPType.cpp | 61 +- test/unit/utSortByPType.h | 35 - test/unit/utSplitLargeMeshes.cpp | 57 +- test/unit/utSplitLargeMeshes.h | 39 - test/unit/utTargetAnimation.cpp | 3 +- test/unit/utTargetAnimation.h | 0 test/unit/utTextureTransform.cpp | 3 +- test/unit/utTriangulate.cpp | 44 +- test/unit/utTriangulate.h | 35 - test/unit/utVertexTriangleAdjacency.cpp | 153 +- test/unit/utVertexTriangleAdjacency.h | 41 - 272 files changed, 914 insertions(+), 81855 deletions(-) create mode 100644 cmake-modules/AddGTest.cmake delete mode 100644 contrib/cppunit-1.12.1/AUTHORS delete mode 100644 contrib/cppunit-1.12.1/BUGS delete mode 100644 contrib/cppunit-1.12.1/COPYING delete mode 100644 contrib/cppunit-1.12.1/ChangeLog delete mode 100644 contrib/cppunit-1.12.1/CodingGuideLines.txt delete mode 100644 contrib/cppunit-1.12.1/INSTALL delete mode 100644 contrib/cppunit-1.12.1/INSTALL-WIN32.txt delete mode 100644 contrib/cppunit-1.12.1/INSTALL-unix delete mode 100644 contrib/cppunit-1.12.1/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/NEWS delete mode 100644 contrib/cppunit-1.12.1/README delete mode 100644 contrib/cppunit-1.12.1/THANKS delete mode 100644 contrib/cppunit-1.12.1/TODO delete mode 100644 contrib/cppunit-1.12.1/aclocal.m4 delete mode 100644 contrib/cppunit-1.12.1/config/ac_create_prefix_config_h.m4 delete mode 100644 contrib/cppunit-1.12.1/config/ac_cxx_have_sstream.m4 delete mode 100644 contrib/cppunit-1.12.1/config/ac_cxx_have_strstream.m4 delete mode 100644 contrib/cppunit-1.12.1/config/ac_cxx_namespaces.m4 delete mode 100644 contrib/cppunit-1.12.1/config/ac_cxx_rtti.m4 delete mode 100644 contrib/cppunit-1.12.1/config/ac_cxx_string_compare_string_first.m4 delete mode 100644 contrib/cppunit-1.12.1/config/ac_dll.m4 delete mode 100644 contrib/cppunit-1.12.1/config/ax_cxx_gcc_abi_demangle.m4 delete mode 100644 contrib/cppunit-1.12.1/config/ax_cxx_have_isfinite.m4 delete mode 100644 contrib/cppunit-1.12.1/config/bb_enable_doxygen.m4 delete mode 100644 contrib/cppunit-1.12.1/config/config.guess delete mode 100644 contrib/cppunit-1.12.1/config/config.h.in delete mode 100644 contrib/cppunit-1.12.1/config/config.sub delete mode 100644 contrib/cppunit-1.12.1/config/depcomp delete mode 100644 contrib/cppunit-1.12.1/config/install-sh delete mode 100644 contrib/cppunit-1.12.1/config/ltmain.sh delete mode 100644 contrib/cppunit-1.12.1/config/missing delete mode 100644 contrib/cppunit-1.12.1/configure delete mode 100644 contrib/cppunit-1.12.1/configure.in delete mode 100644 contrib/cppunit-1.12.1/contrib/bc5/bcc-makefile.zip delete mode 100644 contrib/cppunit-1.12.1/contrib/msvc/AddingUnitTestMethod.dsm delete mode 100644 contrib/cppunit-1.12.1/contrib/msvc/CppUnit.WWTpl delete mode 100644 contrib/cppunit-1.12.1/contrib/msvc/readme.txt delete mode 100644 contrib/cppunit-1.12.1/contrib/xml-xsl/report.xsl delete mode 100644 contrib/cppunit-1.12.1/contrib/xml-xsl/tests.xml delete mode 100644 contrib/cppunit-1.12.1/cppunit-config.1 delete mode 100644 contrib/cppunit-1.12.1/cppunit-config.in delete mode 100644 contrib/cppunit-1.12.1/cppunit.m4 delete mode 100644 contrib/cppunit-1.12.1/cppunit.pc.in delete mode 100644 contrib/cppunit-1.12.1/cppunit.spec delete mode 100644 contrib/cppunit-1.12.1/cppunit.spec.in delete mode 100644 contrib/cppunit-1.12.1/doc/Doxyfile.in delete mode 100644 contrib/cppunit-1.12.1/doc/FAQ delete mode 100644 contrib/cppunit-1.12.1/doc/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/doc/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/doc/Money.dox delete mode 100644 contrib/cppunit-1.12.1/doc/cookbook.dox delete mode 100644 contrib/cppunit-1.12.1/doc/footer.html delete mode 100644 contrib/cppunit-1.12.1/doc/header.html delete mode 100644 contrib/cppunit-1.12.1/doc/other_documentation.dox delete mode 100644 contrib/cppunit-1.12.1/include/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/include/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/AdditionalMessage.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/Asserter.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/BriefTestProgressListener.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/CompilerOutputter.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/Exception.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/Message.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/Outputter.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/Portability.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/Protector.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/SourceLine.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/SynchronizedObject.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/Test.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TestAssert.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TestCaller.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TestCase.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TestComposite.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TestFailure.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TestFixture.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TestLeaf.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TestListener.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TestPath.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TestResult.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TestResultCollector.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TestRunner.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TestSuccessListener.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TestSuite.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TextOutputter.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TextTestProgressListener.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TextTestResult.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/TextTestRunner.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/XmlOutputter.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/XmlOutputterHook.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/config/CppUnitApi.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/config/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/config/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/config/SelectDllLoader.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/config/SourcePrefix.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/config/config-bcb5.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/config/config-evc4.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/config/config-mac.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/config/config-msvc6.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/AutoRegisterSuite.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/ExceptionTestCaseDecorator.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/HelperMacros.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/Orthodox.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/RepeatedTest.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/TestCaseDecorator.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/TestDecorator.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/TestFactory.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/TestFactoryRegistry.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/TestFixtureFactory.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/TestNamer.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/TestSetUp.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/TestSuiteBuilderContext.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/TestSuiteFactory.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/extensions/TypeInfoHelper.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/plugin/DynamicLibraryManager.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/plugin/DynamicLibraryManagerException.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/plugin/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/plugin/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/plugin/PlugInManager.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/plugin/PlugInParameters.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/plugin/TestPlugIn.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/plugin/TestPlugInDefaultImpl.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitDeque.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitMap.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitSet.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitStack.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitVector.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/portability/FloatingPoint.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/portability/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/portability/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/portability/Stream.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/tools/Algorithm.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/tools/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/tools/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/tools/StringTools.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/tools/XmlDocument.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/tools/XmlElement.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/mfc/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/mfc/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/mfc/MfcTestRunner.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/mfc/TestRunner.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/qt/Config.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/qt/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/qt/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/qt/QtTestRunner.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/qt/TestRunner.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/text/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/text/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/text/TestRunner.h delete mode 100644 contrib/cppunit-1.12.1/include/cppunit/ui/text/TextTestRunner.h delete mode 100644 contrib/cppunit-1.12.1/src/CppUnitLibraries.sln delete mode 100644 contrib/cppunit-1.12.1/src/CppUnitLibrariesVC9.sln delete mode 100644 contrib/cppunit-1.12.1/src/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/src/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/AdditionalMessage.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/Asserter.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/BeOsDynamicLibraryManager.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/BriefTestProgressListener.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/CompilerOutputter.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/DefaultProtector.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/DefaultProtector.h delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/DllMain.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/DynamicLibraryManager.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/DynamicLibraryManagerException.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/Exception.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/Makefile.am delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/Makefile.in delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/Message.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/PlugInManager.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/PlugInParameters.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/Protector.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/ProtectorChain.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/ProtectorChain.h delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/ProtectorContext.h delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/RepeatedTest.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/ShlDynamicLibraryManager.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/SourceLine.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/StringTools.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/SynchronizedObject.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/Test.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestAssert.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestCase.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestCaseDecorator.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestComposite.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestDecorator.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestFactoryRegistry.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestFailure.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestLeaf.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestNamer.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestPath.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestPlugInDefaultImpl.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestResult.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestResultCollector.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestRunner.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestSetUp.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestSuccessListener.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestSuite.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TestSuiteBuilderContext.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TextOutputter.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TextTestProgressListener.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TextTestResult.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TextTestRunner.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/TypeInfoHelper.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/UnixDynamicLibraryManager.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/Win32DynamicLibraryManager.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/XmlDocument.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/XmlElement.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/XmlOutputter.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/XmlOutputterHook.cpp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/cppunit.dsp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/cppunit.vcproj delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/cppunit_dll.dsp delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/cppunit_dll.vcproj delete mode 100644 contrib/cppunit-1.12.1/src/cppunit/cppunitvc9.vcproj delete mode 100644 contrib/cppunit_note.txt delete mode 100644 test/unit/BoostWorkaround/tupletest.cpp delete mode 100644 test/unit/utExport.h delete mode 100644 test/unit/utFindDegenerates.h delete mode 100644 test/unit/utFindInvalidData.h delete mode 100644 test/unit/utGenNormals.h delete mode 100644 test/unit/utImporter.h delete mode 100644 test/unit/utJoinVertices.h delete mode 100644 test/unit/utLimitBoneWeights.h delete mode 100644 test/unit/utMaterialSystem.h delete mode 100644 test/unit/utNoBoostTest.h delete mode 100644 test/unit/utPretransformVertices.h delete mode 100644 test/unit/utRemoveComments.h delete mode 100644 test/unit/utRemoveComponent.h delete mode 100644 test/unit/utRemoveRedundantMaterials.h delete mode 100644 test/unit/utScenePreprocessor.h delete mode 100644 test/unit/utSharedPPData.h delete mode 100644 test/unit/utSortByPType.h delete mode 100644 test/unit/utSplitLargeMeshes.h delete mode 100644 test/unit/utTargetAnimation.h delete mode 100644 test/unit/utTriangulate.h delete mode 100644 test/unit/utVertexTriangleAdjacency.h diff --git a/.travis.yml b/.travis.yml index aa1c9d56b..9c6422058 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ before_install: - - sudo apt-get install cmake libcppunit-dev python3 + - sudo apt-get install cmake python3 env: - TRAVIS_NO_EXPORT=YES diff --git a/cmake-modules/AddGTest.cmake b/cmake-modules/AddGTest.cmake new file mode 100644 index 000000000..5257148c9 --- /dev/null +++ b/cmake-modules/AddGTest.cmake @@ -0,0 +1,64 @@ +find_package(Threads REQUIRED) +include(ExternalProject) + +if(MSYS OR MINGW) + set(DISABLE_PTHREADS ON) +else() + set(DISABLE_PTHREADS OFF) +endif() + +if (MSVC) + set(RELEASE_LIB_DIR ReleaseLibs) + set(DEBUG_LIB_DIR DebugLibs) +else() + set(RELEASE_LIB_DIR "") + set(DEBUG_LIB_DIR "") +endif() + +set(GTEST_CMAKE_ARGS + "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + "-Dgtest_force_shared_crt=ON" + "-Dgtest_disable_pthreads:BOOL=${DISABLE_PTHREADS}") +set(GTEST_RELEASE_LIB_DIR "") +set(GTEST_DEBUGLIB_DIR "") +if (MSVC) + set(GTEST_CMAKE_ARGS ${GTEST_CMAKE_ARGS} + "-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=${DEBUG_LIB_DIR}" + "-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=${RELEASE_LIB_DIR}") + set(GTEST_LIB_DIR) +endif() + +set(GTEST_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/gtest") + +ExternalProject_Add(gtest + GIT_REPOSITORY https://chromium.googlesource.com/external/googletest + TIMEOUT 10 + PREFIX "${GTEST_PREFIX}" + CMAKE_ARGS "${GTEST_CMAKE_ARGS}" + LOG_DOWNLOAD ON + LOG_CONFIGURE ON + LOG_BUILD ON + # Disable install + INSTALL_COMMAND "" +) + +set(LIB_PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}") +set(LIB_SUFFIX "${CMAKE_STATIC_LIBRARY_SUFFIX}") +set(GTEST_LOCATION "${GTEST_PREFIX}/src/gtest-build") +set(GTEST_DEBUG_LIBRARIES + "${GTEST_LOCATION}/${DEBUG_LIB_DIR}/${LIB_PREFIX}gtest${LIB_SUFFIX}" + "${CMAKE_THREAD_LIBS_INIT}") +SET(GTEST_RELEASE_LIBRARIES + "${GTEST_LOCATION}/${RELEASE_LIB_DIR}/${LIB_PREFIX}gtest${LIB_SUFFIX}" + "${CMAKE_THREAD_LIBS_INIT}") + +if(MSVC_VERSION EQUAL 1700) + add_definitions(-D_VARIADIC_MAX=10) +endif() + +ExternalProject_Get_Property(gtest source_dir) +include_directories(${source_dir}/include) +include_directories(${source_dir}/gtest/include) + +ExternalProject_Get_Property(gtest binary_dir) +link_directories(${binary_dir}) diff --git a/code/AssbinExporter.cpp b/code/AssbinExporter.cpp index a330dfd45..b1999d2b1 100644 --- a/code/AssbinExporter.cpp +++ b/code/AssbinExporter.cpp @@ -51,6 +51,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # include "../contrib/zlib/zlib.h" #endif +#include + + #ifndef ASSIMP_BUILD_NO_EXPORT #ifndef ASSIMP_BUILD_NO_ASSBIN_EXPORTER diff --git a/code/AssxmlExporter.cpp b/code/AssxmlExporter.cpp index 1538d2456..c2e3f1833 100644 --- a/code/AssxmlExporter.cpp +++ b/code/AssxmlExporter.cpp @@ -51,6 +51,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # include "../contrib/zlib/zlib.h" #endif +#include + #ifndef ASSIMP_BUILD_NO_EXPORT #ifndef ASSIMP_BUILD_NO_ASSXML_EXPORTER diff --git a/code/JoinVerticesProcess.h b/code/JoinVerticesProcess.h index 0195c0168..1413ad2dc 100644 --- a/code/JoinVerticesProcess.h +++ b/code/JoinVerticesProcess.h @@ -49,8 +49,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { -class JoinVerticesTest; - // --------------------------------------------------------------------------- /** The JoinVerticesProcess unites identical vertices in all imported meshes. * By default the importer returns meshes where each face addressed its own diff --git a/code/ScenePreprocessor.cpp b/code/ScenePreprocessor.cpp index 3e72ad72c..feb515679 100644 --- a/code/ScenePreprocessor.cpp +++ b/code/ScenePreprocessor.cpp @@ -91,11 +91,10 @@ void ScenePreprocessor::ProcessMesh (aiMesh* mesh) { // If aiMesh::mNumUVComponents is *not* set assign the default value of 2 for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i) { - if (!mesh->mTextureCoords[i]) + if (!mesh->mTextureCoords[i]) { mesh->mNumUVComponents[i] = 0; - - else { - if( !mesh->mNumUVComponents[i]) + } else { + if (!mesh->mNumUVComponents[i]) mesh->mNumUVComponents[i] = 2; aiVector3D* p = mesh->mTextureCoords[i], *end = p+mesh->mNumVertices; @@ -112,7 +111,6 @@ void ScenePreprocessor::ProcessMesh (aiMesh* mesh) p->z = p->y = 0.f; } else if (3 == mesh->mNumUVComponents[i]) { - // Really 3D coordinates? Check whether the third coordinate is != 0 for at least one element for (; p != end; ++p) { if (p->z != 0) diff --git a/contrib/cppunit-1.12.1/AUTHORS b/contrib/cppunit-1.12.1/AUTHORS deleted file mode 100644 index b600073ca..000000000 --- a/contrib/cppunit-1.12.1/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -Michael Feathers -Jerome Lacoste -E. Sommerlade -Baptiste Lepilleur -Bastiaan Bakker -Steve Robbins diff --git a/contrib/cppunit-1.12.1/BUGS b/contrib/cppunit-1.12.1/BUGS deleted file mode 100644 index 64fb00f92..000000000 --- a/contrib/cppunit-1.12.1/BUGS +++ /dev/null @@ -1,6 +0,0 @@ - KNOWN BUGS - ---------- - -The handling of html and man pages in doc/Makefile.am is -flawed. It will not pass "make distcheck". - diff --git a/contrib/cppunit-1.12.1/COPYING b/contrib/cppunit-1.12.1/COPYING deleted file mode 100644 index b1e3f5a26..000000000 --- a/contrib/cppunit-1.12.1/COPYING +++ /dev/null @@ -1,504 +0,0 @@ - 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. - - 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. - - 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. - - 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. - - 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. - - 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. - - 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. - - 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. - - 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 - - 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. - - - Copyright (C) - - 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. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/contrib/cppunit-1.12.1/ChangeLog b/contrib/cppunit-1.12.1/ChangeLog deleted file mode 100644 index 21637bc1c..000000000 --- a/contrib/cppunit-1.12.1/ChangeLog +++ /dev/null @@ -1,3664 +0,0 @@ -2008-02-07 Steve M. Robbins - - * src/qttestrunner/MostRecentTests.h: - * src/qttestrunner/TestRunnerModel.h: Change from to - replacment ; avoids use of compatibility headers. - -2007-03-04 Steve M. Robbins - - * include/cppunit/portability/FloatingPoint.h (floatingPointIsFinite): Change - return type to int, following the convention of isfinite(), finite(), etc. - -2007-02-25 Baptiste Lepilleur - - * doc/cookbook.dox: changed suite() to return a TestSuite instead - of a Test to avoid introducing unnecessary complexity. - -2007-02-24 Steve M. Robbins - - * include/cppunit/portability/FloatingPoint.h: Include Portability.h. - -2007-02-24 Baptiste Lepilleur - - * src/cppunit/TestAssert.cpp (assertDoubleEquals): Moved finite & NaN - tests to include/cppunit/portability/FloatingPoint.h. Changed - implementation assertDoubleEquals to explicitly test for NaN - in case of non-finite values to force equality failure in the - presence of NaN. Previous implementation failed on Microsoft - Visual Studio 6 (on this platform: NaN == NaN). - * examples/cppunittest/TestAssertTest.cpp: Add more unit tests to - test the portable floating-point primitive. Added missing - include . - - * include/cppunit/portability/Makefile.am: - * include/cppunit/portability/FloatingPoint.h: Added file. Extracted - isfinite() from TestAssert.cpp. - - * include/cppunit/config-evc4: - * include/cppunit/config-msvc6: Added support for _finite(). - -2007-01-30 Steve M. Robbins - - * examples/cppunittest/assertion_traitsTest.h: - * examples/cppunittest/assertion_traitsTest.cpp: New. Test - assertion_traits<>. - - * examples/cppunittest/Makefile.am: Add - assertion_traitsTest.{h,cpp}. - - * examples/cppunittest/TestAssertTest.h: - * examples/cppunittest/TestAssertTest.cpp: Add - testAssertDoubleEqualsPrecision() to test precision of failure - message. - -2007-01-27 Steve M. Robbins - - * examples/cppunittest/TestAssertTest.cpp: - * examples/cppunittest/TestAssertTest.h: Remove declaration of - unimplemented functions testAssertDoubleNotEquals1 and - testAssertDoubleNotEquals2. Factor new method - testAssertDoubleNonFinite out of existing testAssertDoubleEquals. - - * src/cppunit/Win32DynamicLibraryManager.cpp (doLoadLibrary): - Unconditionally use ANSI version of LoadLibrary() and other - functions with string arguments. - -2007-01-26 Steve M. Robbins - - * config/ax_cxx_have_isfinite.m4: New. Autoconf macro that tests - for finite() in C++ mode. - * configure.in: Check for isfinite() and finite(). - - * examples/cppunittest/TestAssertTest.cpp (testAssertDoubleEquals): - * src/cppunit/TestAssert.cpp (assertDoubleEquals): Account for - non-finite values. - -2007-01-11 Steve M. Robbins - - * examples/cppunittest/MockFunctor.h: - * examples/cppunittest/MockProtector.h: - * examples/cppunittest/XmlOutputterTest.cpp: - * examples/cppunittest/XmlUniformiser.cpp: - * src/DllPlugInTester/CommandLineParser.cpp: - * src/cppunit/DynamicLibraryManagerException.cpp: - * src/cppunit/TestCaseDecorator.cpp: - * src/cppunit/TextTestRunner.cpp: - * src/cppunit/XmlDocument.cpp: Arrange field initializers in - correct order. - - * include/cppunit/plugin/TestPlugIn.h (struct CppUnitTestPlugIn): - * include/cppunit/extensions/TestFixtureFactory.h (class TestFixtureFactory): - * include/cppunit/XmlOutputterHook.h (XmlOutputterHook): Add - virtual destructor to virtual class. - - * examples/cppunittest/TestAssertTest.cpp: Put a C++ statement in - the first argument of CPPUNIT_ASSERT_THROW() and - CPPUNIT_ASSERT_NO_THROW(). - - * examples/hierarchy/main.cpp (main): Return value now reflects - whether tests passed. - * examples/hierarchy/Makefile.am (XFAIL_TESTS): New. Mark hierachy - test program as an expected failure. - - * Makefile.am (dist-hook): Don't fail if $(distdir)/lib already - exists. - - * config/bb_enable_doxygen.m4 (BB_ENABLE_DOXYGEN): Add quotes - around function name, BB_ENABLE_DOXYGEN. - -2006-10-26 Baptiste Lepilleur - * include/cppunit/TestResult.h: - * include/cppunit/ui/Config.h: fixed compilation issues with QtTestRunner. - -2006-06-29 Baptiste Lepilleur - * Makefile.am: - * lib/.keepme: added dummy file to prevent lib/ removal by some - unzip clients. Fixed bug #1527877 . - - * src/msvc6/TesRunner/TestRunner.rc: - * src/msvc6/testpluginrunner/TestPlugInRunner.rc: Fixed bug #1528212 - (some resources wrongly tagged as French). - -2006-06-29 Baptiste Lepilleur - * include/cppunit/ui/text/TextTestRunner.h - * src/cppunit/TextTestRunner.cpp: applied patch #1210013 to remove - hidden virtual function warning. - - * autogen.sh: applied patch #1449380 contributed by Sander Temme - to allow running autogen on Mac OS X. - - * doc/header.html: updated to handle new tabs css required for - html doc generated with doxygen 1.4.7. - - * src/msvc6/testrunner/MsDevCallerListCtrl.cpp: applied correction - provided to fix bug #1498175 (double click on failure does not - goto failure). - -2006-03-04 Baptiste Lepilleur - * contrib/xml-xsl/report.xsl: reported correction posted on the wiki. - - * removed debian/ directory. An up to date patch can be found at: - packages.debian.org. - - * cppunit.spec.in: applied patch #1242905 partially (%post and %postun). - - * cppunit.pc.in: - * configure.in: - * Makefile.am: integrated patch from Robert Leight to generate pkg-config. - -2006-02-04 Baptiste Lepilleur - * include/cppunit/TestListener.h: - * src/qttestrunner/TestRunnerModel.cpp: removed compilation warning. - -2006-02-01 Baptiste Lepilleur - * examples/qt: integrated Ernst patch from qt examples. - -2005-12-12 Baptiste Lepilleur - * src/qttestrunner: integrated Ernst patch for QtTestRunner and Qt 3.x. - Enhanced qmake project files to handle multiple build configuration - -2005-11-27 Baptiste Lepilleur - * doc/cookbook.dox: fixed type (patch #1334567) - -2005-11-06 Baptiste Lepilleur - * include/cppunit/config/SourcePrefix.h: disable warning #4996 - (sprintf is deprecated) for visual studio 2005. - - * include/cppunit/TestAssert.h: use sprintf_s instead of sprintf for - visual studio 2005. - - * examples/ClockerPlugIn/ClockerPlugIn.cpp - * examples/DumperPlugIn/DumperPlugIn.cpp: use SourcePrefix.h. Fixed - wrong macro usage to implement DllMain. - - * examples/msvc6/HostApp/ExamplesTestCase.h - * examples/msvc6/HostApp/ExamplesTestCase.cpp - * examples/simple/ExamplesTestCase.h - * examples/simple/ExamplesTestCase.cpp: removed divideByZero test case - as it cause some crash on some platforms. - - -2005-10-27 Baptiste Lepilleur - * include/cppunit/TestAssert.h: added missing #include - -2005-07-30 Baptiste Lepilleur - * include/cppunit/config/SourcePrefix.h: added, prefix added at begining of sources - to remove warning. Removed most warning when compiling with VC++ 6sp6. - - * examples/money/Money.h: - * examples/money/MoneyTest.cpp: added assert equal usage. - -2005-07-30 Baptiste Lepilleur - - * include/cppunit/config/config-msvc6.h: auto-detect if RTTI are enabled - the _CPPRTTI macro (defined by the compiler when enabling RTTI). - - * include/cppunit/config/config-msvc6.h: added missing macro definition - CPPUNIT_HAVE_CPP_CAST. - - * src/cppunit/TestResultCollector.cpp: fixed memory leak in destructor. - -2005-07-15 Baptiste Lepilleur - - * config/bb_enable_doxygen.m4: Rolled back Brad Hards patch as it break - generation of doc/Makefile.am. - - * cppunit.spec.in: Applied patch #1232555 from Patrice Dumas. This file is - use for RPM packaging. - - * development snapshot release 1.11.0. - -2005-07-09 Baptiste Lepilleur - - * doc/Money.dox: - * include/cppunit/TestSuite.h: - * include/cppunit/XmlOutputterHook.h: applied Brad Hards patch - that correct miscellaneous doc generation issues (unescaped <>, \...). - - * include/cppunit/plugin/TestPlugIn.h: - * include/cppunit/CompilerOutputter.h: - * doc/CppUnit-win.dox: removed a few documentation generation warnings. - - * config/bb_enable_doxygen.m4: applied Brad Hards patch to remove warning - when running ./autogen.sh or aclocal. - - * doc/money.dox: fixed bad usage of CPPUNIT_ASSERT_EQUALS. - -2005-07-05 Baptiste Lepilleur - - * Examples/simple/Makefile.am: do not install 'simple' programm - (patch #1230784). - -2005-07-05 Baptiste Lepilleur - - * include/cppunit/TestResultCollector.h - * src/cppunit/TestResultCollector.cpp: fixed memory leak - occuring when calling reset(). - - * src/cppunit/DllMain.cpp: added work-around for mingw compilation - for BLENDFUNCTION macro issue when including windows.h. - - * src/qttestrunner/TestRunnerDlgImpl.cpp: fixed display of multiline - messages. - - * include/cppunit/Portability.h: better integration of compiler output - for gcc on Mac OS X with Xcode (contributed by Claus Broch). - -2005-06-14 Baptiste Lepilleur - * src/msvc6/testrunner/ProgressBar.cpp: applied patch from bug #1165875, - (use system color for border instead of hard-coded color). - - * src/cppunit/Makefile.am: - * configure.in: MinGW, cygwin: enable build of shared library when using - libtool. patch #1194394 contributed by Stéphane Fillod. - - * cppunit.m4: applied patch #1076398 contributed by Henner Sudek. Fix - version number comparison in AM_PATH_CPPUNIT. - - * contrib/xml-xsl/cppunit2junit.txt - * contrib/xml-xsl/cppunit2junit.xsl - * contrib/readme.txt: XSLT for compatibility with Ant junit xml formatter. - Patch #1112053 contributed by Norbert Barbosa. - -2005-02-23 Baptiste Lepilleur - - * examples/hierarchy/BoardGameTest.h: - * examples/hierarchy/ChessTest.h: fixed compilation issue, prefixed access - to class member with 'this' (inheriting from template parameter - dependent class). - -2004-11-19 Baptiste Lepilleur - - * include/cppunit/Message.h - * include/cppunit/SourceLine.h: - * src/cppunit/Message.cpp: - * src/cppunit/SourceLine.cpp: provided thread-safe copy constructor on - platform that do not provide thread-safe copy constructor for std::string. - -2004-11-08 Baptiste Lepilleur - - * include/cppunit/TestAssert.h: fixed portability bug pointed out by - Neil Ferguson. - -2004-11-06 Baptiste Lepilleur - - * include/cppunit/TestAssert.h: integrated Neil Ferguson patch for high - precision conversion to string for double number. Modified the patch - to works even if DBL_DIG C99 macro is not defined. - - * include/cppunit/Portability.h: fixed EVC++ 4 detection. - - * src/cppunit/Win32DynamicLibraryManager.cpp: integrated patch #1024428, - MinGW compilation under Windows XP. - -2004-11-05 Baptiste Lepilleur - - * include/cppunit/TestAssert.h: - * src/cppunit/TestAssert.cpp: integrated Neil Ferguson patch for missing - _MESSAGE assertion variants. Also enhanced the failure message of a - few assertions. - -2004-09-10 Baptiste Lepilleur - - * src/msvc6/DSPlugIn/StdAfx.h: add #error to prevent compilation on VC 7. - - * src/msvc6/testrunner/MsDevCallerListCtrl.cpp: - * src/msvc6/testrunner/MsDevCallerListCtrl.h: integrated go to source line - features on double click contributed by Max Quatember and - Andreas Pfaffenbichler. - -2004-08-01 Baptiste Lepilleur - - * include/cppunit/XmlOutputter.h: - * include/cppunit/tools/XmlDocument.h: - * src/cppunit/XmlDocument.cpp: - * src/cppunit/XmlOutputter.cpp: integrated patch #997006 from Akos Maroy. - This patch makes the 'standalone' attribute in XML header optional. - -2004-06-25 Baptiste Lepilleur - - * include/cppunit/Portability.h: moved OStringStream alias definition to - portability/Stream.h. User need to define EVC4 to indicate that - config-evc4.h should be used. (how to we detect this automatically ?). - Notes that this means it might be needed to add #include to some - headers since its no longer included by Portability.h. - - * include/cppunit/portability/Stream.h: define alias OStringStream, stdCOut(), - and OFileStream. If CPPUNIT_NO_STREAM is defined (evc4 config), then provides - our own implementation (based on sprintf and fwrite). - - * include/cppunit/config/config-evc4.h: config file for embedded visual c++ 4. - Still need to detect for this platform in Portability.h (currently relying on - EVC4 being defined...) - - * *.[cpp/h]: most source files have been impacted with the following change: - #include -> #include - std::ostream -> CPPUNIT_NS::OStream - std::ofstream -> CPPUNIT_NS::OFileStream - std::cout -> CPPUNIT_NS::stdCOut() - std::endl -> "\n" - Also, code using std::cin as been defined out if CPPUNIT_NO_STREAM was defined. - The exact list of impact files can be obtain in CVS using tags: - TG_CPPUNIT_NO_STREAM_BEFORE & TG_CPPUNIT_NO_STREAM_AFTER. - -2004-06-19 Baptiste Lepilleur - - * cppunit.m4: patch #946302, AM_PATH_CPPUNIT doesn't report result - if CppUnit is missing. - - -2004-06-18 Baptiste Lepilleur - - * Release 10.0.2 - - * include/cppunit/extension/TestSuiteBuilderContext.h: - * src/cppunit/TestSuiteBuilderContext.cpp: fixed bug #921843. This bug - was caused by a known STL bug in VC++ 6. - See http://www.dinkumware.com/vc_fixes.html issue with shared - std::map in dll. As a work-around the map has been replaced by a vector. - - * src/DllPlugInTester/*.cpp: bug #941625, string literal using char * - instead of const char *. Patch contributed by Curt Arnold has been - applied. - - * src/msvc6/testrunner/TestRunnerDlg.h: - * src/msvc6/testrunner/TestRunnerDlg.cpp: - * src/msvc6/testpluginrunner/TestPlugIn.cpp: - * src/msvc6/testpluginrunner/TestPlugInRunnerApp.cpp: - * src/msvc6/testpluginrunner/TestPlugInRunnerModel.cpp: - * src/msvc6/testpluginrunner/TestPlugInRunnerModel.h: bug #952912, - memory leaks when loading/reloading plug-ins. - -2004-06-17 Baptiste Lepilleur - - * include/cppunit/Portability.h: - * include/cppunit/plugin/TestPlugIn.h: fixed report compilation issue - with mingw & cygwin. WIN32 is now always defined if _WIN32 is defined. - Bug #945737 & #930338. - - * doc/Makefile.am: fixed bug #940650 => cp -dpR, removed option -p since - there is no link to preserve anyway (does not exist on SunOs). - - * src/cppunit/TestPath.cpp: bug #938753, array bound read in - splitPathString() with substr if an empty string is passed. - - * src/*/*.dsp: bug #933154, post build fail in directory with spaces. - - -2004-06-16 Baptiste Lepilleur - - * 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 - - * release 1.9.14 - -2004-03-13 Baptiste Lepilleur - - * 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 - - * release 1.9.12 - -2004-02-18 Baptiste Lepilleur - - * configure.in: - * makefile.am: - * config/ax_cxx_gcc_abi_demangle.m4: - * src/cppunit/TypeInfoHelper.cpp: added patch from - Neil Ferguson to use gcc c++ abi to demangle typeinfo - name when available. - -2003-05-15 Baptiste Lepilleur - - * include/cppunit/plugin/testplugin.h: fixed bug #767358, wrong - preprocessor symbol for SHL_LOADER. - -2003-05-15 Baptiste Lepilleur - - * 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 - - * 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 to add support - for plug-in to hp-ux (patch #721546). - - * INSTALL-unix: added build instruction for HP-UX. - -2003-04-06 Baptiste Lepilleur - - * include/cppunit/extensions/TestSuiteBuilder.h: removed (unused) - -2003-03-31 Baptiste Lepilleur - - * src/cppunit/DynamicLibraryManager.cpp: fixed compilation issue on Mingw - (bug #711583) - -2003-03-20 Baptiste Lepilleur - - * include/cppunit/extensions/TestNamer.h: - * src/cppunit/TestNamer.cpp: Fixed bug #704684, TestNamer has non-virtual - destructor. - -2003-03-15 Baptiste Lepilleur - - * 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 - * 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 - - * include/cppunit/extensions/TestNamer.h: fixed bug #662666 (missing include - for typeinfo). - -2002-12-12 Baptiste Lepilleur - - * 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 - - * include/cppunit/TextTestResult.h: added missing dll export for - operator << (bug #610119). - -2002-12-02 Baptiste Lepilleur - - * 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 - - * 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 - - * include/cppunit/ui/text/TextTestRunner.h: fixed header guards. - -2002-08-29 Baptiste Lepilleur - - * include/cppunit/TestResult.h: - * src/cppunit/TestResult.cpp: fixed shouldStop() bug. - -2002-08-29 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - - * 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 - - * cppunit.m4: Doc fix: MINIMUM-VERSION is not optional when using - this macro. - -2002-08-04 Baptiste Lepilleur - - * 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 - - * include/cppunit/XmlOutputterHook.h: integrated Stephan Stapel - documentation update. - -2002-08-03 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * src/msvc6/DSPlugIn/DSPlugIn.dsp: updated so that only the release - configuration get copied to the lib/ directory. - -2002-07-03 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - - * 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 . - - * examples/cppunittest/XmlElement.cpp: added missing include . - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * doc/cookbook.dox: fixed bug. - - * install-unix: added compilation instruction for Solaris/Sun 6.0 - -2002-05-25 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * include/cppunit/plugin/DynamicLibraryManagerException.h: removed - trailing ',' in enum. - - * examples/ClockerPlugIn/ClockerListener.cpp: bugfix, average test - case time computation. - -2002-04-21 Baptiste Lepilleur - - * bumped version to 1.9.7 - - * comitted stuffs I forgot to in 1.9.6. - -2002-04-21 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * configure.in: bumped version to 1.9.0 - - * NEWS: added version 1.9.0 - -2002-04-11 Baptiste Lepilleur - - * doc/FAQ: removed question about the Exception::operator =() problem. - - * release 1.8.0 - -2002-04-11 Steve M. Robbins - - * 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 - - * 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 - - * 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 - instead of 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 - - * examples/cppunittest/CppUnitTestMain.cpp: never wait for a key press. - -2002-04-04 Baptiste Lepilleur - - * 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 - - * configure.in: bumped version to 1.7.11 - -2002-03-28 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - - * configure.in: bumped version to 1.7.9 - -2002-03-26 Baptiste Lepilleur - - * src/msvc6/testpluginrunner/TestPlugInRunner.dsp: fixed release configuration. - -2002-03-25 Baptiste Lepilleur - - * 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 - - * configure.in: bumped version to 1.7.7 - -2002-03-25 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - - * src/cppunit/TextTestProgressListener.cpp: flush the stream after each - progess step. - -2002-03-03 Baptiste Lepilleur - - * configure.in: updated version number to 1.7.4 - -2002-03-03 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - - * INSTALL-unix: Add note about cygwin. - -2001-10-24 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - - * include/cppunit/Exception.h: - * src/cppunit/Exception.cpp: what(), added back the throw() qualifier. - -2001-10-14 Baptiste Lepilleur - - * 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 - - * src/cppunit/Exception.cpp (what): Remove "throw()" qualifier, to - match earlier change to header. - -2001-10-07 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * configure.in: Set version to 1.7.0. - -2001-09-30 Steve M. Robbins - - * 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 - - * 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 - - * include/cppunit/config-mac.h: New. Macintosh configuration, - courtesy of Duane Murphy. - - * include/cppunit/Portability.h: Move 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 - - * configure.in: Set version to 1.6.1. - -2001-09-29 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 in preference to . - Patrick Hartling reports the former is required for the SGI - MIPSpro 7.3.1.2 compiler. - -2001-09-19 Baptiste Lepilleur - - * 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 - - * 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 - - * include/cppunit/TextTestResult.h: Change include from - to . Sugggested by Peer Sommerlund. - - * include/cppunit/Portability.h: Qualify ostrstream with std. - Suggested by Patrick Hartling. - -2001-09-18 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - . - - * include/cppunit/Makefile.am (libcppunitinclude_HEADERS): Remove - TestFixture.h. - -2001-09-14 Baptiste Lepilleur - * 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 which isn't - needed any more. - - * include/cppunit/TestCase.h: - * include/cppunit/TestSuite.h: - * include/cppunit/extensions/TestFactoryRegistry.h: added - include 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 - - * doc/Makefile.am: Add workaround for broken Doxygen. - - * src/cppunit/TextTestResult.cpp (operator<<): Remove CppUnit:: - prefix. - - * configure.in: Add check for . - * src/cppunit/TestAssert.cpp: Use if not - available. - * src/cppunit/TestCase.cpp: Do not include . - - * 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 - - * 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 - - * 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 - - * examples/cppunittest/TestAssertTest.h: - * examples/cppunittest/TestAssertTest.cpp: Add tests - for CPPUNIT_ASSERT_EQUAL. - -2001-07-12 Steve M. Robbins - - * 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 - - * 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 - - * 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 - - * 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 . - -2001-06-27 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - - * configure.in: Require autoconf 2.50 or better. - -2001-06-17 Bastiaan Bakker - - * 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 with - - - * src/cppunit/TypeInfoHelper.cpp: use new macro name - CPPUNIT_FUNC_STRING_COMPARE_STRING_FIRST - - -2001-06-12 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - - * src/cppunit/TypeInfoHelper.cpp: removed #include , - 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 for fabs(). - -2001-06-02 Steve M. Robbins - - * src/cppunit/Exception.cpp: Remove unnecessary namespace - declaration; it confuses Doxygen. - -2001-06-02 Steve M. Robbins - - * 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 - - * 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 . - - * 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 - - * 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 - - * 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 - - * src/cppunit/TestCase.cpp (toString): put type_info in std - namespace and inside CU_USE_TYPEINFO ifdef. - -2001-05-29 Steve M. Robbins - - * 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 - - * 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 . See - for change log - format. - - * doc/cookbook.html: Update all code examples, except for TestRunner - section. - -2001-05-23 Baptiste Lepilleur - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * Merged MSVC++ specific TestRunner and example adapted from - Micheal Feathers version by Baptiste Lepilleur. - - * Moved cppunit subdir into src. - -2001-04-24 Bastiaan Bakker - - * 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 - - * Added MSVC++ workspace and project files, submitted by Baptiste - Lepilleur. - -2001-04-15 Bastiaan Bakker - - * 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 - - * 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 '. 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 - - * 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/contrib/cppunit-1.12.1/CodingGuideLines.txt b/contrib/cppunit-1.12.1/CodingGuideLines.txt deleted file mode 100644 index 5651ee802..000000000 --- a/contrib/cppunit-1.12.1/CodingGuideLines.txt +++ /dev/null @@ -1,61 +0,0 @@ -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 diff --git a/contrib/cppunit-1.12.1/INSTALL b/contrib/cppunit-1.12.1/INSTALL deleted file mode 100644 index 666ffd9f8..000000000 --- a/contrib/cppunit-1.12.1/INSTALL +++ /dev/null @@ -1,226 +0,0 @@ -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/contrib/cppunit-1.12.1/INSTALL-WIN32.txt b/contrib/cppunit-1.12.1/INSTALL-WIN32.txt deleted file mode 100644 index 31756cd3a..000000000 --- a/contrib/cppunit-1.12.1/INSTALL-WIN32.txt +++ /dev/null @@ -1,205 +0,0 @@ -Frequently Asked Questions: See doc/FAQ - - -At the current time, the only supported WIN32 platform is -Microsoft Visual C++. You must have VC++ 6.0 at least. - -Quick Steps to compile & run a sample using the GUI TestRunner: -- Open examples/examples.dsw in VC++ (contains all the samples). - VC7 will ask you if you want to convert, anwser 'yes to all'. -- Make HostApp the Active project -- Compile -- For Visual Studio 6 only: - - in VC++, Tools/Customize.../Add-ins and macro files/Browse... - - select the file lib/TestRunnerDSPlugIn.dll and press ok to register - the add-ins (double-click on failure = open file in VC++). -- Run the project - - -Project build Target: ---------------------- - -Framework & tools: - -* cppunit (cppunit.lib) : unit testing framework library, the one you use -to write unit tests. - -* cppunit_dll(cppunit_dll.dll/lib) : same as above, but build as a DLL. - -* DllPlugInTester(DllPlugInTester.exe) : test plug-in runner executable. -Use this to test DLL in your post-build step, or debug them. - -* TestRunner (testrunner.dll) : a MFC extension DLL to run and browser unit -tests from a GUI. - -* DSPlugIn (lib/TestRunnerDSPlugIn.dll) : a VC++ 6.0 add-in used by -testrunner.dll. If you double-click on a failure in the MFC TestRunner, -a running instance of VC++ will open the file and highlight the line. -This add-ins is not required for Visual Studio 7. - -* TestPlugInRunner : (Warning: experimental) a VC++ -application to run test plug-in. A test plug-in is a DLL that publish a -specified interface. This application is still incomplete (the auto-reload -feature is missing). - -All libraries are placed in the lib/ directory. - - -Examples: ---------- - -* CppUnitTestMain : the actual test suite use to test CppUnit. Use a -TextTestRunner, and post-build testing with CompilterOutputter. Configuration -to link against cppunit static library and cppunit dll library. - -* CppUnitTestApp : contains the same test suite as CppUnitTestMain, but -run them using the MFC TestRunner. - -* hierarchy : a sample demonstrating how to sublcass test (you might rather -want to use HelperMacros.h and the CPPUNIT_TEST_SUB_SUITE macro which does -it in a 'cleaner' way. That sample has not been updated for a long time). - -* HostApp : a sample using the MFC TestRunner demonstrating different test -failure. Also demonstrates the MFC Unicode TestRunner. - -* Money : an example that come along with the Money article of the -documentation. Probably what you want to look at if you are a newbie. - - -Configuration: --------------- - -CppUnit and TestRunner comes with 3 configurations. - -* Release (): Multihtreaded DLL, release mode -* Debug (d): Debug Multithreaded DLL, debug mode -* Unicode Release (u): Unicode Multihtreaded DLL, release mode -* Unicode Debug (ud): Unicode Debug Multithreaded DLL, debug mode - -For CppUnit, when building as dll, "dll" is appended to the 'suffix'. - -The letters enclosed in brackets indicates the suffix added to -the library name. For example, the debug configuration cppunit static library -name is cppunitd.lib. The debug configuration cppunit dll name is cppunitd_dll.lib. - - -Building: ---------- - -* Open the 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 lib/ directory. - - -Testing: --------- - -* Open the workspace examples/Examples.dsw. -* Make CppUnitTestApp the active project. -* Select the configuration you build the library for. -* Compile and run the project. The TestRunner GUI should appear. - - -Libraries: ----------- - -All the compiled libraries and DLL can be found in the 'lib' directory. -Most libraries can be build from src/CppUnitLibraries.dsw workspace. - -lib\: -cppunit.lib : CppUnit static library "Multithreaded DLL" -cppunitd.lib : CppUnit static library "Debug Multithreaded DLL" -cppunit_dll.dll : CppUnit dynamic library (DLL) "Multithreaded DLL" -cppunit_dll.lib : CppUnit dynamic import library "Multithreaded DLL" -cppunitd_dll.dll : CppUnit dynamic library (DLL) "Debug Multithreaded DLL" -cppunitd_dll.lib : CppUnit dynamic import library "Debug Multithreaded DLL" -qttestrunner.dll : QT TestRunner dynamic library (DLL) "Multithreaded DLL" -qttestrunner.lib : QT TestRunner import library "Multithreaded DLL" -testrunner.dll : MFC TestRunner dynamic library (DLL) "Multithreaded DLL" -testrunner.lib : MFC TestRunner import library "Multithreaded DLL" -testrunnerd.dll : MFC TestRunner dynamic library (DLL) "Debug Multithreaded DLL" -testrunnerd.lib : MFC TestRunner import library "Debug Multithreaded DLL" -testrunneru.dll : MFC Unicode TestRunner dynamic library (DLL) "Multithreaded DLL" -testrunneru.lib : MFC Unicode TestRunner import library "Multithreaded DLL" -testrunnerud.dll : MFC Unicode TestRunner dynamic library (DLL) "Debug Multithreaded DLL" -testrunnerud.lib : MFC Unicode TestRunner import library "Debug Multithreaded DLL" -TestRunnerDSPlugIn.dll : The add-in you register in VC++. - -Notes that when you are using CppUnit DLL (cppunit*_dll.dll), you must link -against the associated import library and define the pre-processor symbol -CPPUNIT_DLL in your project. - - -Tools: ------- - -CppUnit provides a generic test runner for test plug-in: DllPlugInTester. -It can be found in the lib/ directory. It requires cppunit*_dll.dll - -lib/: -DllPlugInTester_dll.exe : test plug-in runner, "Multithreaded DLL", cppunit_dll.dll -DllPlugInTesterd_dll.exe : test plug-in runner, "Debug Multithreaded DLL", cppunitd_dll.dll -DllPlugInTester.exe : test plug-in runner, "Multithreaded DLL", static link cppunit.lib -DllPlugInTesterd.exe : test plug-in runner, "Debug Multithreaded DLL", static link cppunitd.lib - -Notes that the DllPlugInTester(d).exe version of this tools does not allow -to use the automatic test registration that comes along with test plug-in. -You probably don't want to use them unless you really know what you are doing. - - -Using CppUnit: --------------- - -* Writing unit tests: - To write unit tests, you need to link against cppunitXX.lib, where - XX is the chosen configuration suffix letters. - CppUnit include directory must be in the include search path. - You can do that by adding the include directory in - Project Settings/C++/Preprocessor/Additional include directories, - or Tools/Options/Directories/Include. - - Quick steps: - - link lib/cppunitXX.lib - - include/ must be in the include search path - -* Using the TestRunner GUI: - To use the test runner GUI you need to link against testrunnerXX.lib - and cppunitXX.lib, where XX is the chosen configuration suffix - letters. testrunner.dll must be in the path when your program is - run (the Debug/Release directory, your project dsp directory, or - in a directory specified in the PATH environment variable). - One of the easiest way to do that is to either add a post-build - command or add the testrunner.dll which is in the lib/ directory - to your project and define a custom build step that copy the - dll to your "Intermediate" directory (Debug or Release usually). - - Since the TestRunner GUI is a MFC extension DLL, it can access - the CWinApp of the using application. Settings are stored using - the application registry key. That means that "most recently used - test" settings are different for each application. - - Quick steps: - - link lib/cppunitXX.lib and lib/testrunnerXX.lib - - include/ must be in the include search path - - lib/testrunnerXX.dll must be available to run your project - -* Using the DSPlugIn: - You must register the plug-in with VC++. This is done in - Tools/Customize/Add-ins and Macro files, selecting browse and - selecting lib/TestRunnerDSPlugIn.dll (you can register the release - or the debug version, both work). - - If an instance of VC++ is running and you double-click on a failure, - VC++ will open the file and select the failure line. - -* Using the Test Plug In Runner: - Your DLL must export a function that implement the interface -defined in include/msvc6/testrunner/TestPlugInInterface.h. -See examples/msvc6/TestPlugIn/TestPlugInInterfaceImpl.* for an example. -Be warned, that runner is still experimental and have not been tested -much. - - If you did a batch build, run TestPlugInRunnerd.exe and choose dll - examples/cppunittest/DebugPlugIn/CppUnitTestPlugInd.dll, or - examples/simple/DebugPlugIn/simple_plugind.dll to test it out. diff --git a/contrib/cppunit-1.12.1/INSTALL-unix b/contrib/cppunit-1.12.1/INSTALL-unix deleted file mode 100644 index 52b4d8b28..000000000 --- a/contrib/cppunit-1.12.1/INSTALL-unix +++ /dev/null @@ -1,121 +0,0 @@ -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/contrib/cppunit-1.12.1/Makefile.am b/contrib/cppunit-1.12.1/Makefile.am deleted file mode 100644 index 90642176e..000000000 --- a/contrib/cppunit-1.12.1/Makefile.am +++ /dev/null @@ -1,80 +0,0 @@ -AUTOMAKE_OPTIONS = 1.4 -ACLOCAL_AMFLAGS = -I config - -SUBDIRS = src include examples doc - -pkgconfigdatadir = $(libdir)/pkgconfig - -pkgconfigdata_DATA = cppunit.pc - -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 \ - lib/.keepme - -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 - test -d $(distdir)/lib || 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/contrib/cppunit-1.12.1/Makefile.in b/contrib/cppunit-1.12.1/Makefile.in deleted file mode 100644 index eef51fbd4..000000000 --- a/contrib/cppunit-1.12.1/Makefile.in +++ /dev/null @@ -1,872 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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@ - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/cppunit-config.in \ - $(srcdir)/cppunit.pc.in $(srcdir)/cppunit.spec.in \ - $(top_srcdir)/config/config.h.in $(top_srcdir)/configure \ - AUTHORS COPYING ChangeLog INSTALL NEWS THANKS TODO \ - config/config.guess config/config.sub config/depcomp \ - config/install-sh config/ltmain.sh config/missing -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = cppunit.pc cppunit.spec cppunit-config -am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ - "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdatadir)" -binSCRIPT_INSTALL = $(INSTALL_SCRIPT) -SCRIPTS = $(bin_SCRIPTS) -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -man1dir = $(mandir)/man1 -NROFF = nroff -MANS = $(man_MANS) -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -m4dataDATA_INSTALL = $(INSTALL_DATA) -pkgconfigdataDATA_INSTALL = $(INSTALL_DATA) -DATA = $(m4data_DATA) $(pkgconfigdata_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = 1.4 -ACLOCAL_AMFLAGS = -I config -SUBDIRS = src include examples doc -pkgconfigdatadir = $(libdir)/pkgconfig -pkgconfigdata_DATA = cppunit.pc -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 \ - lib/.keepme - -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 -all: all-recursive - -.SUFFIXES: -am--refresh: - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ - cd $(srcdir) && $(AUTOMAKE) --gnu \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - -config/config.h: config/stamp-h1 - @if test ! -f $@; then \ - rm -f config/stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) config/stamp-h1; \ - else :; fi - -config/stamp-h1: $(top_srcdir)/config/config.h.in $(top_builddir)/config.status - @rm -f config/stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config/config.h -$(top_srcdir)/config/config.h.in: $(am__configure_deps) - cd $(top_srcdir) && $(AUTOHEADER) - rm -f config/stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config/config.h config/stamp-h1 -cppunit.pc: $(top_builddir)/config.status $(srcdir)/cppunit.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -cppunit.spec: $(top_builddir)/config.status $(srcdir)/cppunit.spec.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -cppunit-config: $(top_builddir)/config.status $(srcdir)/cppunit-config.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -install-binSCRIPTS: $(bin_SCRIPTS) - @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(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 -install-man1: $(man1_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - test -z "$(man1dir)" || $(MKDIR_P) "$(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 -install-m4dataDATA: $(m4data_DATA) - @$(NORMAL_INSTALL) - test -z "$(m4datadir)" || $(MKDIR_P) "$(DESTDIR)$(m4datadir)" - @list='$(m4data_DATA)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - 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=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(m4datadir)/$$f'"; \ - rm -f "$(DESTDIR)$(m4datadir)/$$f"; \ - done -install-pkgconfigdataDATA: $(pkgconfigdata_DATA) - @$(NORMAL_INSTALL) - test -z "$(pkgconfigdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdatadir)" - @list='$(pkgconfigdata_DATA)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(pkgconfigdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdatadir)/$$f'"; \ - $(pkgconfigdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdatadir)/$$f"; \ - done - -uninstall-pkgconfigdataDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfigdata_DATA)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(pkgconfigdatadir)/$$f'"; \ - rm -f "$(DESTDIR)$(pkgconfigdatadir)/$$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): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - 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) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - 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) \ - || eval $$failcom; \ - 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 - -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; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -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; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { 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 - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d $(distdir) || mkdir $(distdir) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - 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 $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r $(distdir) -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) - -dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) - -dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | 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 - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - 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 ../.. && umask 077 && mkdir "$$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 \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$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: - for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdatadir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -info: info-recursive - -info-am: - -install-data-am: install-m4dataDATA install-man \ - install-pkgconfigdataDATA - -install-dvi: install-dvi-recursive - -install-exec-am: install-binSCRIPTS - -install-html: install-html-recursive - -install-info: install-info-recursive - -install-man: install-man1 - -install-pdf: install-pdf-recursive - -install-ps: install-ps-recursive - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -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-m4dataDATA uninstall-man \ - uninstall-pkgconfigdataDATA - -uninstall-man: uninstall-man1 - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ - install-strip - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ - dist-gzip dist-hook dist-lzma dist-shar dist-tarZ dist-zip \ - distcheck distclean distclean-generic distclean-hdr \ - distclean-libtool distclean-tags distcleancheck distdir \ - distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am install-binSCRIPTS install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-m4dataDATA install-man install-man1 \ - install-pdf install-pdf-am install-pkgconfigdataDATA \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-binSCRIPTS \ - uninstall-m4dataDATA uninstall-man uninstall-man1 \ - uninstall-pkgconfigdataDATA - - -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 - test -d $(distdir)/lib || 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/contrib/cppunit-1.12.1/NEWS b/contrib/cppunit-1.12.1/NEWS deleted file mode 100644 index bf82dfdbd..000000000 --- a/contrib/cppunit-1.12.1/NEWS +++ /dev/null @@ -1,1151 +0,0 @@ - New in CppUnit 1.12.1: - ---------------------- - -* Assertion: - - - CPPUNIT_ASSERT_DOUBLES_EQUAL() now properly handles non-finite - values, specifically NaN, +Inf, and -Inf. - -* Portability: - - - Fixed some compilation issue for QtTestRunner. - - Code should build on Windows in UNICODE mode. - - New in CppUnit 1.12.0: - ---------------------- - -* Portability: - - - autogen.sh can now be run on Mac OS X (patch #1449380 - contributed by Sander Temme). - -* MFC Test runner: - - - fixed bug #1498175: double click on failure would sometime - not goto failed assertion in visual studio. - -* Documentation: - - - now generated with doxygen 1.4.7 new 'tabs' style. - - - New in CppUnit 1.11.4: - ---------------------- - - -* Portability: - - - Support for Embedded Visual C++ 4 added. For this purpose, CppUnit now - provides a very simple stream implementation if none is provided. - This should also help porting on other platforms which have STL but - no stream support. Just make sure that CPPUNIT_NO_STREAM is defined - to 1 in your config header. - -* Assertion: - - - Added missing _MESSAGE variants for the following assertions: - - CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE - CPPUNIT_ASSERT_THROW_MESSAGE - CPPUNIT_ASSERT_NO_THROW_MESSAGE - CPPUNIT_ASSERT_ASSERTION_FAIL_MESSAGE - CPPUNIT_ASSERT_ASSERTION_PASS_MESSAGE - - Notes: change made to CPPUNIT_ASSERT_THROW may cause compilation error - if you're expecting std::exception as it would be caught twice. Contact us - if it is an issue (we don't see much use for such a test). - - Some assertions failure message are now more detailed (exception, - expression). - Thanks to Neil Ferguson who contributed this patch. - - - Assertion on real number now output expected and actual value using the - maximum available precision instead of the previous strategy of rounding - to 6 digits. - - Thanks to Neil Ferguson who contributed this patch. - -* Outputter: - - - XML Ouputter: patch #997006 contributed by Akos Maroy makes the - 'stand-alone' attribute of the XML header optional. - See XmlOutputter::setStandalone() & XmlDocument::setStandalone(). - - - Better integration of compiler output for gcc on Mac OS X with Xcode - (contributed by Claus Broch). - -* MFC Test Runner - - - Integration with VC++ 7.0 & 7.1. Double clicking on a failure will now - to the failure location in the open IDE (no add-in necessary). - This was contributed by Max Quatember and Andreas Pfaffenbichler. - - - Progress bar: now use system color to draw border - (patch from bug #1165875 contributed by Pieter Van Dyck). - -* QT Test Runner - - - Fixed display of multi-line messages (patch contributed by Karol Szkudlarek). - -* Compilation: - - - The standard pkg-config file is now generated on unix (contributed by - Robert Leight). - - - MinGW: patch #1024428 contributed by astar, fixed compilation issue in - Win32DynamicLibraryManager.cpp. - - - MinGW, cygwin: enable build of shared library when using libtool. - patch #1194394 contributed by Stéphane Fillod. - - - autotool: applied patch #1076398 contributed by Henner Sudek. Quote: - "This patch allows AM_PATH_CPPUNIT to accept version - numbers without minor and micro version. - Now you can do: - AM_PATH_CPPUNIT(1.9) - instead of - AM_PATH_CPPUNIT(1.9.0)" - - - Visual Studio 2005: removed deprecated warning. - -* Documentation: - - - Corrected many typos in cookbook and money example. Thanks to all - those who helped ! - -* Bug Fix: - - - cppunit.m4: patch #946302, AM_PATH_CPPUNIT doesn't report result - if CppUnit is missing. - - - Message/SourceLine: copy constructor have been specifically implemented - to ensure they are thread-safe even if std::string copy constructor - is not (usually on reference count based implementation). - - - TestResultCollector: fixed memory leak occuring when calling reset(). - -* Contrib: - - - added XSLT for compatibility with Ant junit xml formatter. - Patch #1112053 contributed by Norbert Barbosa. - See xml-xsl/cppunit2junit.xsl and cppunit2junit.txt for details. - - - xml-xsl/report.xsl has been fixed to work with current xml output. - -* (Possible) Compatiblity break: - - - All text output is now done on cout() instead of sometime cerr & - sometime cout depending on the component. - - - OStringStream definition has been removed from Portability.h. This - means that is no longer included, and that ostringstream and - string might not be defined. In practice this should have no impact - since those includes have been moved to other CppUnit headers. - -* Notes: - - - CppUnit now uses the alias OStream when refering to std::ostream for - portability. - - - - New in CppUnit 1.10.2: - ---------------------- - -* Bug Fix: - - - Memory checker: bug #938753, array bound read in - splitPathString() with substr if an empty string is passed. - - - Memory leaks: bug #952912, many memory leaks removed in the - MFC test plug-in runner. - - - Crash when using CPPUNIT_TEST_SUITE_REGISTRATION with cppunit dll. - Bug #921843. This bug was caused by a known STL bug in VC++ 6. - See http://www.dinkumware.com/vc_fixes.html issue with shared - std::map in dll. - -* Compilation: - - - mingw & cigwin, bug #930338 & #945737 fixed. - - - make install does not work on SunOS. Bug #940650 fixed. - - - bug #933154, post-build step fails in directory with spaces - with Visual C++. - - - DllPlugInTester, bug #941625 (char * string literal). Applied patch - contribued by Curt Arnold. - - - 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 - 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 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 to - - - 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 element instead of in the content - of the element. - Changed from: - - test6 - Error - error2 - - To: - - test6 - Error - error2 - - - -* 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 split 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 split 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/contrib/cppunit-1.12.1/README b/contrib/cppunit-1.12.1/README deleted file mode 100644 index a27c5452f..000000000 --- a/contrib/cppunit-1.12.1/README +++ /dev/null @@ -1,19 +0,0 @@ - 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 -. - diff --git a/contrib/cppunit-1.12.1/THANKS b/contrib/cppunit-1.12.1/THANKS deleted file mode 100644 index 89cfa9c7a..000000000 --- a/contrib/cppunit-1.12.1/THANKS +++ /dev/null @@ -1,23 +0,0 @@ -Tim Jansen -Christian Leutloff -Steve M. Robbins -Patrick Berny -Patrick Hartling -Peer Sommerlund -Duane Murphy -Gigi Sayfan -Armin "bored" Michel -Jeffrey Morgan -'cuppa' project team (http://sourceforge.jp/projects/cuppa/) -Phil Verghese -Lavoie Philippe -Pavel Zabelin -Marco Welti -Thomas Neidhart -Hans Bühler (Dynamic Window library used by MFC UI) -John Sisson -Steven Mitter -Stephan Stapel -Abdessattar Sassi (hp-ux plug-in support) -Max Quatember and Andreas Pfaffenbichler (VC++ 7 MFC TestRunner go to source line) -Vincent Rivière diff --git a/contrib/cppunit-1.12.1/TODO b/contrib/cppunit-1.12.1/TODO deleted file mode 100644 index 19fa3240a..000000000 --- a/contrib/cppunit-1.12.1/TODO +++ /dev/null @@ -1,35 +0,0 @@ -* Bugs: -Asserter::makeNotEqualMessage() strip the shortDescription of the additional message. - -* CppUnit: - - 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 ) - -* 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 - -* 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/contrib/cppunit-1.12.1/aclocal.m4 b/contrib/cppunit-1.12.1/aclocal.m4 deleted file mode 100644 index ac008c6a6..000000000 --- a/contrib/cppunit-1.12.1/aclocal.m4 +++ /dev/null @@ -1,7542 +0,0 @@ -# generated automatically by aclocal 1.10.1 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008 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. - -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(AC_AUTOCONF_VERSION, [2.61],, -[m4_warning([this file was generated for autoconf 2.61. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- - -# serial 52 Debian 1.5.26-1 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 1s/^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 MSVC, -# 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 "$LTCFLAGS" && LTCFLAGS=$CFLAGS -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_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -_LT_CC_BASENAME([$compiler]) - -# 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 - -_LT_REQUIRED_DARWIN_CHECKS - -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"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_AC_SYS_COMPILER - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -AC_DEFUN([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -]) - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -AC_DEFUN([_LT_COMPILER_BOILERPLATE], -[AC_REQUIRE([LT_AC_PROG_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$rm conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -AC_DEFUN([_LT_LINKER_BOILERPLATE], -[AC_REQUIRE([LT_AC_PROG_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# -------------------------- -# Check for some things on darwin -AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - echo "int foo(void){return 1;}" > conftest.c - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib ${wl}-single_module conftest.c - if test -f libconftest.dylib; then - lt_cv_apple_cc_single_mod=yes - rm -rf libconftest.dylib* - fi - rm conftest.c - fi]) - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - case $host_os in - rhapsody* | darwin1.[[0123]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" - fi - if test "$DSYMUTIL" != ":"; then - _lt_dsymutil="~$DSYMUTIL \$lib || :" - else - _lt_dsymutil= - fi - ;; - esac -]) - -# _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_REQUIRE([LT_AC_PROG_SED])dnl -AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# 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 "$lt_aix_libpath_sed"` -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 </dev/null 2>&1 && unset CDPATH - -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-*kfreebsd*-gnu|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-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - 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-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - 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 - ;; -sparc*-*solaris*) - # 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 - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -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_REQUIRE([LT_AC_PROG_SED]) -AC_CACHE_CHECK([$1], [$2], - [$2=no - ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$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}\{0,1\} :&$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 other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; 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_REQUIRE([LT_AC_PROG_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker 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 - $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $rm -r 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 - teststring="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; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ - = "XX$teststring") >/dev/null 2>&1 && - new_result=`expr "X$teststring" : ".*" 2>&1` && - lt_cv_sys_max_cmd_len=$new_result && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - teststring= - # 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` - fi - ;; - 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 < -#endif - -#include - -#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); */ - } - else - puts (dlerror ()); - - exit (status); -}] -EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|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="-ldld"], - [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="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - 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" - wl=$lt_prog_compiler_wl 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 - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - 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_PROG_SED])dnl -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 - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - 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}\{0,1\} :&$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 - $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm 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" - old_striplib="$STRIP -S" - 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_REQUIRE([LT_AC_PROG_SED])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".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" -m4_if($1,[],[ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$lt_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. - lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` - else - lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - sys_lib_search_path_spec=`echo $lt_search_path_spec` -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' - ;; - -aix[[4-9]]*) - 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.so - # instead of lib.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 - ;; - -bsdi[[45]]*) - 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_cmds=".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~ - chmod a+x \$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="/usr/lib /lib/w32api /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 - 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_cmds='`test .$module = .yes && echo .so || echo .dylib`' - m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - 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* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[123]]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - 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 - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - 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_cmds='.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_cmds='.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_cmds='.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' - ;; - -interix[[3-9]]*) - 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' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -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* | k*bsd*-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' - 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 - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # 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' - ;; - -netbsdelf*-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 - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_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}${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 - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - 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_cmds=".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" - ;; - -rdos*) - dynamic_linker=no - ;; - -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.3*) - 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 - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - shlibpath_overrides_runpath=no - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - shlibpath_overrides_runpath=yes - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -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_CACHE_VAL([lt_cv_sys_lib_search_path_spec], -[lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"]) -sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -AC_CACHE_VAL([lt_cv_sys_lib_dlsearch_path_spec], -[lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"]) -sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" - -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 -])# AC_LIBTOOL_SYS_DYNAMIC_LINKER - - -# _LT_AC_TAGCONFIG -# ---------------- -AC_DEFUN([_LT_AC_TAGCONFIG], -[AC_REQUIRE([LT_AC_PROG_SED])dnl -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 - if test -z "$LTCFLAGS"; then - eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" - 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" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; 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 DLLs -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 recognize 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 <&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 recognize 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 pathname 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 pathname 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 variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - 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|DragonFly)/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 - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - 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*) - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - 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 - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | 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 pathname 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_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_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" - done - 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 -# AC_CONFIG_SUBDIRS is not called here. 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 -# AC_CONFIG_SUBDIRS is not called here. 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 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([_LT_AC_PROG_CXXCPP]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) -])# _LT_AC_LANG_CXX - -# _LT_AC_PROG_CXXCPP -# ------------------ -AC_DEFUN([_LT_AC_PROG_CXXCPP], -[ -AC_REQUIRE([AC_PROG_CXX]) -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -fi -])# _LT_AC_PROG_CXXCPP - -# 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=${tagnames+${tagnames},}F77]) -])# _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=${tagnames+${tagnames},}GCJ]) -])# _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=${tagnames+${tagnames},}RC]) -])# 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;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -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_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_DLOPEN_SELF - -# Report which library types will 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 - ;; - -aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - 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([_LT_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_shlibpath_var, $1)=unsupported -_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)= -_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)= - -# Source file extension for C++ test sources. -ac_ext=cpp - -# 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;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# 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 - $as_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 - $as_unset lt_cv_path_LD -fi -test -z "${LDCXX+set}" || LD=$LDCXX -CC=${CXX-"c++"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) - -# 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 -nostdlib $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 - ;; - aix[[4-9]]*) - 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]].*|aix[[5-9]]*) - 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 - : - 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' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - 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 '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${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 '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_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' - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach 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 - ;; - - 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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - darwin* | rhapsody*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _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)='' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - _LT_AC_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - if test "$GXX" = yes ; then - 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_dar_single_mod${_lt_dsymutil}" - _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -r -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${_lt_dsymutil}" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -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${_lt_dar_export_syms}${_lt_dsymutil}" - fi - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~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 $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - 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* | dragonfly*) - # 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) | 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 - _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 - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) ;; - *) - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _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*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _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 - hppa*64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _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 - ;; - interix[[3-9]]*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - 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 ${output_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}${output_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* | k*bsd*-gnu) - 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 - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _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' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _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' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $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' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_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' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='echo' - - # 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' - ;; - esac - ;; - 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* | netbsdelf*-gnu) - 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::"' - ;; - openbsd2*) - # C++ shared libraries are fairly broken - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd='echo' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - 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 ${output_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}${output_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 ${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~ - $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 ${output_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}${output_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 - ;; - 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(archive_cmds_need_lc,$1)=yes - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -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} ${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 compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # 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 - - output_verbose_link_cmd='echo' - - # 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' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - # So that behaviour is only enabled if SCOABSPATH is set to a - # non-empty value in the environment. Most likely only useful for - # creating official distributions of packages. - # This is a hack until libtool officially supports absolute path - # names for shared libraries. - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - 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_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($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], -[AC_REQUIRE([LT_AC_PROG_SED])dnl -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 < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - # - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - if test "$solaris_use_stlport4" != yes; then - _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) -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 - return - end -" - -# Code to be used in simple link tests -lt_simple_link_test_code="\ - program t - end -" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${F77-"f77"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) - -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 - ;; -aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - 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]) - -_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_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($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 {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${GCJ-"gcj"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds - -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_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($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 }' - -# 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 - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# 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_CC_BASENAME([$compiler]) -_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 EGREP RANLIB LN_S LTCC LTCFLAGS NM \ - SED SHELL STRIP \ - 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(compiler_lib_search_dirs, $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(fix_srcfile_path, $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, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -# Free Software Foundation, Inc. -# -# This file is part of GNU Libtool: -# Originally by Gordon Matzigkeit , 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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 1s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# 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 -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# 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 - -# LTCC compiler flags. -LTCFLAGS=$lt_LTCFLAGS - -# 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=$lt_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="$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_cmds='$shrext_cmds' - -# 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 directories searched by this compiler when creating a shared -# library -compiler_lib_search_dirs=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_dirs, $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_fix_srcfile_path - -# 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. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -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([LT_AC_PROG_SED]) -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 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'" - ;; -linux* | k*bsd*-gnu) - if test "$host_cpu" = ia64; then - symcode='[[ABCDGIRSTW]]' - 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'" - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -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='[[ABCDGIRSTW]]' ;; -esac - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # 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 < $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 < 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 <> 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 -rf 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* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | 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). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_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)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - 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 - aix[[4-9]]*) - # 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 - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - 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* | dragonfly*) - # 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)='${wl}-a ${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)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - 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* | k*bsd*-gnu) - 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* | ecpc*) - # 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' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler. - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - 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' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _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 ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - 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*) - ;; - 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 - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _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' - ;; - esac - ;; - 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* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | 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). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_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' - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - 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 - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - - mingw* | cygwin* | 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). - m4_if([$1], [GCJ], [], - [_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* | k*bsd*-gnu) - case $cc_basename 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' - ;; - pgcc* | pgf77* | pgf90* | pgf95*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - 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' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C 5.9 - _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)='-Wl,' - ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _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)='' - ;; - esac - ;; - 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' - ;; - - rdos*) - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - 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*) - _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 - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _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' - ;; - - unicos*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - 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_cv_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 - -# -# Check to make sure the static flag actually works. -# -wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" -AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) -]) - - -# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) -# ------------------------------------ -# See if the linker supports building shared libraries. -AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], -[AC_REQUIRE([LT_AC_PROG_SED])dnl -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 - aix[[4-9]]*) - # 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 '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - ;; - linux* | k*bsd*-gnu) - _LT_AC_TAGVAR(link_all_deplibs, $1)=no - ;; - *) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] -],[ - 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_|_GLOBAL__F[ID]_.*'] - # 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. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - # Just being paranoid about ensuring that cc_basename is set. - _LT_CC_BASENAME([$compiler]) - 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 - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - 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}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - 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 - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <&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 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 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 '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - interix[[3-9]]*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | k*bsd*-gnu) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_addflag= - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - *) - tmp_sharedflag='-shared' ;; - esac - _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test $supports_anon_versioning = yes; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - $echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - _LT_AC_TAGVAR(link_all_deplibs, $1)=no - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - 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*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <&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 - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - 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)" = no; then - runpath_var= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - 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 "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - 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]].*|aix[[5-9]]*) - 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 - : - 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' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - 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 '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${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 '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_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' - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${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 - ;; - - bsdi[[45]]*) - _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_cmds=".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' - _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - darwin* | rhapsody*) - case $host_os in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _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)='' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - if test "$GCC" = yes ; then - 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_dar_single_mod${_lt_dsymutil}" - _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~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 $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - 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* | dragonfly*) - _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*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _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 - fi - ;; - - hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -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*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _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* | netbsdelf*-gnu) - 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*) - if test -f /usr/libexec/ld.so; then - _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(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _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 - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - 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 ${output_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)=: - ;; - - solaris*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - if test "$GCC" = yes; then - wlarc='${wl}' - _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 - wlarc='' - _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]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - 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*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - 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 - -# -# 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* - echo "$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) - pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $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 -# #undef WIN32_LEAN_AND_MEAN -# #include -# -# #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 -# 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) -]) - - -# Cheap backport of AS_EXECUTABLE_P and required macros -# from Autoconf 2.59; we should not use $as_executable_p directly. - -# _AS_TEST_PREPARE -# ---------------- -m4_ifndef([_AS_TEST_PREPARE], -[m4_defun([_AS_TEST_PREPARE], -[if test -x / >/dev/null 2>&1; then - as_executable_p='test -x' -else - as_executable_p='test -f' -fi -])])# _AS_TEST_PREPARE - -# AS_EXECUTABLE_P -# --------------- -# Check whether a file is executable. -m4_ifndef([AS_EXECUTABLE_P], -[m4_defun([AS_EXECUTABLE_P], -[AS_REQUIRE([_AS_TEST_PREPARE])dnl -$as_executable_p $1[]dnl -])])# AS_EXECUTABLE_P - -# 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 -IFS=$as_save_IFS -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 && continue - 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_SUBST([SED]) -AC_MSG_RESULT([$SED]) -]) - -# Copyright (C) 2002, 2003, 2005, 2006, 2007 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. - -# 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. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.10' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.10.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.10.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005 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. - -# 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. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 -# 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. - -# serial 8 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -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])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 -# 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. - -# serial 9 - -# 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], UPC, [depcc="$UPC" am_compiler_list=], - [$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 - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch 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/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - 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 - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' 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 build - --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])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 -# 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. - -#serial 3 - -# _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. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. 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 " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/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"]) -]) - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 -# 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. - -# serial 8 - -# 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 -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008 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. - -# serial 13 - -# 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. - -# 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_PREREQ([2.60])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -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 -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])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_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# 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([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_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 -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])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_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005 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. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} -AC_SUBST(install_sh)]) - -# Copyright (C) 2003, 2005 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. - -# serial 2 - -# 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])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005 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. - -# serial 3 - -# 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 -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 -# 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. - -# serial 5 - -# 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 -AC_REQUIRE_AUX_FILE([missing])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 -]) - -# Copyright (C) 2003, 2004, 2005, 2006 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. - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005 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. - -# serial 3 - -# _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. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 -# 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. - -# serial 4 - -# 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)]) - -# Copyright (C) 2001, 2003, 2005 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. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# 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="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006 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. - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005 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. - -# serial 2 - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) -m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([config/ac_create_prefix_config_h.m4]) -m4_include([config/ac_cxx_have_sstream.m4]) -m4_include([config/ac_cxx_have_strstream.m4]) -m4_include([config/ac_cxx_namespaces.m4]) -m4_include([config/ac_cxx_rtti.m4]) -m4_include([config/ac_cxx_string_compare_string_first.m4]) -m4_include([config/ac_dll.m4]) -m4_include([config/ax_cxx_gcc_abi_demangle.m4]) -m4_include([config/ax_cxx_have_isfinite.m4]) -m4_include([config/bb_enable_doxygen.m4]) diff --git a/contrib/cppunit-1.12.1/config/ac_create_prefix_config_h.m4 b/contrib/cppunit-1.12.1/config/ac_create_prefix_config_h.m4 deleted file mode 100644 index 1534ff42b..000000000 --- a/contrib/cppunit-1.12.1/config/ac_create_prefix_config_h.m4 +++ /dev/null @@ -1,107 +0,0 @@ -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 2001/06/17 15:47:32 bastiaan Exp $ -dnl @author Guido Draheim - -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/contrib/cppunit-1.12.1/config/ac_cxx_have_sstream.m4 b/contrib/cppunit-1.12.1/config/ac_cxx_have_sstream.m4 deleted file mode 100644 index 0630cf09c..000000000 --- a/contrib/cppunit-1.12.1/config/ac_cxx_have_sstream.m4 +++ /dev/null @@ -1,24 +0,0 @@ -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 2001/07/07 16:05:47 smr99 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 -#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/contrib/cppunit-1.12.1/config/ac_cxx_have_strstream.m4 b/contrib/cppunit-1.12.1/config/ac_cxx_have_strstream.m4 deleted file mode 100644 index 232a3d6f8..000000000 --- a/contrib/cppunit-1.12.1/config/ac_cxx_have_strstream.m4 +++ /dev/null @@ -1,29 +0,0 @@ -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 -#else -# include -#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/contrib/cppunit-1.12.1/config/ac_cxx_namespaces.m4 b/contrib/cppunit-1.12.1/config/ac_cxx_namespaces.m4 deleted file mode 100644 index 7041acfc8..000000000 --- a/contrib/cppunit-1.12.1/config/ac_cxx_namespaces.m4 +++ /dev/null @@ -1,22 +0,0 @@ -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 2001/06/02 23:26:36 smr99 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/contrib/cppunit-1.12.1/config/ac_cxx_rtti.m4 b/contrib/cppunit-1.12.1/config/ac_cxx_rtti.m4 deleted file mode 100644 index e91bc645d..000000000 --- a/contrib/cppunit-1.12.1/config/ac_cxx_rtti.m4 +++ /dev/null @@ -1,34 +0,0 @@ -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 2001/06/02 22:29:52 smr99 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 -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/contrib/cppunit-1.12.1/config/ac_cxx_string_compare_string_first.m4 b/contrib/cppunit-1.12.1/config/ac_cxx_string_compare_string_first.m4 deleted file mode 100644 index a1cb7a289..000000000 --- a/contrib/cppunit-1.12.1/config/ac_cxx_string_compare_string_first.m4 +++ /dev/null @@ -1,27 +0,0 @@ -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 -#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/contrib/cppunit-1.12.1/config/ac_dll.m4 b/contrib/cppunit-1.12.1/config/ac_dll.m4 deleted file mode 100644 index ad7438a13..000000000 --- a/contrib/cppunit-1.12.1/config/ac_dll.m4 +++ /dev/null @@ -1,47 +0,0 @@ - -# 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 -#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/contrib/cppunit-1.12.1/config/ax_cxx_gcc_abi_demangle.m4 b/contrib/cppunit-1.12.1/config/ax_cxx_gcc_abi_demangle.m4 deleted file mode 100644 index 7a74956cd..000000000 --- a/contrib/cppunit-1.12.1/config/ax_cxx_gcc_abi_demangle.m4 +++ /dev/null @@ -1,40 +0,0 @@ -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/02/18 20:45:36 blep Exp $ -dnl @author Neil Ferguson -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 -#include -#include - -template -class A {}; -],[A 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"; -], - 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/contrib/cppunit-1.12.1/config/ax_cxx_have_isfinite.m4 b/contrib/cppunit-1.12.1/config/ax_cxx_have_isfinite.m4 deleted file mode 100644 index 5f9c7fcae..000000000 --- a/contrib/cppunit-1.12.1/config/ax_cxx_have_isfinite.m4 +++ /dev/null @@ -1,27 +0,0 @@ -dnl @synopsis AX_CXX_HAVE_ISFINITE -dnl -dnl If isfinite() is available to the C++ compiler: -dnl define HAVE_ISFINITE -dnl add "-lm" to LIBS -dnl -AC_DEFUN([AX_CXX_HAVE_ISFINITE], - [ax_cxx_have_isfinite_save_LIBS=$LIBS - LIBS="$LIBS -lm" - - AC_CACHE_CHECK(for isfinite, ax_cv_cxx_have_isfinite, - [AC_LANG_SAVE - AC_LANG_CPLUSPLUS - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include ]], - [[int f = isfinite( 3 );]])], - [ax_cv_cxx_have_isfinite=yes], - [ax_cv_cxx_have_isfinite=no]) - AC_LANG_RESTORE]) - - if test "$ax_cv_cxx_have_isfinite" = yes; then - AC_DEFINE([HAVE_ISFINITE],1,[define if compiler has isfinite]) - else - LIBS=$ax_cxx_have_isfinite_save_LIBS - fi -]) diff --git a/contrib/cppunit-1.12.1/config/bb_enable_doxygen.m4 b/contrib/cppunit-1.12.1/config/bb_enable_doxygen.m4 deleted file mode 100644 index f388639bc..000000000 --- a/contrib/cppunit-1.12.1/config/bb_enable_doxygen.m4 +++ /dev/null @@ -1,34 +0,0 @@ -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/contrib/cppunit-1.12.1/config/config.guess b/contrib/cppunit-1.12.1/config/config.guess deleted file mode 100644 index f32079abd..000000000 --- a/contrib/cppunit-1.12.1/config/config.guess +++ /dev/null @@ -1,1526 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -# Free Software Foundation, Inc. - -timestamp='2008-01-23' - -# 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., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, 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 . -# Please send patches to . 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 ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2008 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 ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # 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 "$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 ; set_cc_for_build= ;' - -# 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 - -# 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 ;; - sh5el) machine=sh5le-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 ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # 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 Pn.n version is a patched version. - # 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/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; - 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 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - 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 ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - 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 ;; - 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 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - 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 ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # 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 ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* 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 && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - 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 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????: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 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - 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 ;; - *: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 - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - 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 ;; - *:AIX:*:[456]) - 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 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 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 - #include - - 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 - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep __LP64__ >/dev/null - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - 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 && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - 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 ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - 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 ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:[3456]*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - EM64T | authenticamd) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 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 ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-gnu - else - echo ${UNAME_MACHINE}-unknown-linux-gnueabi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo frv-unknown-linux-gnu - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - 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 | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - 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 | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; - 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}-unknown-linux-gnu${LIBC} - exit ;; - 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-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - 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}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^LIBC/{ - s: ::g - p - }'`" - test x"${LIBC}" != x && { - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit - } - test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } - ;; - 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 ;; - 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 ;; - 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 ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - 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 ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - 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 ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /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 ;; - 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 ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - 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 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*: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 | S7501*:*: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; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *: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 ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - 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 ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *: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 ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NSE-?:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *: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 ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; -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 < -# include -#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 - 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\n"); 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 -# 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 && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# 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 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 < 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/contrib/cppunit-1.12.1/config/config.h.in b/contrib/cppunit-1.12.1/config/config.h.in deleted file mode 100644 index db5f1feae..000000000 --- a/contrib/cppunit-1.12.1/config/config.h.in +++ /dev/null @@ -1,100 +0,0 @@ -/* 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 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 header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the `finite' function. */ -#undef HAVE_FINITE - -/* define if the compiler supports GCC C++ ABI name demangling */ -#undef HAVE_GCC_ABI_DEMANGLE - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* define if compiler has isfinite */ -#undef HAVE_ISFINITE - -/* Define if you have the libdl library or equivalent. */ -#undef HAVE_LIBDL - -/* Define to 1 if you have the 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 header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRSTREAM - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the 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/contrib/cppunit-1.12.1/config/config.sub b/contrib/cppunit-1.12.1/config/config.sub deleted file mode 100644 index 6759825a5..000000000 --- a/contrib/cppunit-1.12.1/config/config.sub +++ /dev/null @@ -1,1658 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -# Free Software Foundation, Inc. - -timestamp='2008-01-16' - -# 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., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, 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 . 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 ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2008 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 ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # 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 ;; - - * ) - 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* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ - uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-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 | -knuth | -cray) - 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 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -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/'` - ;; - -sco5v6*) - # 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] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64vr | mips64vrel \ - | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | mt \ - | msp430 \ - | nios | nios2 \ - | ns16k | ns32k \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | score \ - | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | v850 | v850e \ - | we32k \ - | x86 | xc16x | xscale | xscalee[bl] | 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) - ;; - ms1) - basic_machine=mt-unknown - ;; - - # 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-* | avr32-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tron-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # 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 - ;; - abacus) - basic_machine=abacus-unknown - ;; - 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 - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - 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 - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - 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 - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - 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 - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - 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 - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - 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 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - 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 - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - 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 - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - 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 - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - 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 - ;; - rdos) - basic_machine=i386-pc - os=-rdos - ;; - 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 - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - 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 - ;; - tile*) - basic_machine=tile-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - 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 - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - 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 - ;; - mmix) - basic_machine=mmix-knuth - ;; - 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 - ;; - sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - 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* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ - | -ekkobsd* | -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-gnu* | -linux-newlib* | -linux-uclibc* \ - | -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* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) - # 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* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -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 - ;; - -tpf*) - os=-tpf - ;; - -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 - ;; - -zvmoe) - os=-zvmoe - ;; - -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 - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-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 - ;; - mep-*) - os=-elf - ;; - 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 - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-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 - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -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 - -# 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/contrib/cppunit-1.12.1/config/depcomp b/contrib/cppunit-1.12.1/config/depcomp deleted file mode 100644 index e5f9736c7..000000000 --- a/contrib/cppunit-1.12.1/config/depcomp +++ /dev/null @@ -1,589 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2007-03-29.01 - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 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., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, 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 . - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -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 - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -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. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - 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. In older versions, 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. - # Version 6 uses the directory in both cases. - 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$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - 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,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$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" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - 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$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. - sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -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 - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space 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 preprocessed 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 preprocessed 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 -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [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 preprocessed 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 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/contrib/cppunit-1.12.1/config/install-sh b/contrib/cppunit-1.12.1/config/install-sh deleted file mode 100644 index a5897de6e..000000000 --- a/contrib/cppunit-1.12.1/config/install-sh +++ /dev/null @@ -1,519 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2006-12-25.00 - -# 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. - -nl=' -' -IFS=" "" $nl" - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -no_target_directory= - -usage="\ -Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -d create directories instead of installing files. - -g GROUP $chgrpprog installed files to GROUP. - -m MODE $chmodprog installed files to MODE. - -o USER $chownprog installed files to USER. - -s $stripprog installed files. - -t DIRECTORY install into DIRECTORY. - -T report an error if DSTFILE is a directory. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) dst_arg=$2 - shift;; - - -T) no_target_directory=true;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dst_arg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - -*) prefix='./';; - *) prefix='';; - esac - - eval "$initialize_posix_glob" - - oIFS=$IFS - IFS=/ - $posix_glob set -f - set fnord $dstdir - shift - $posix_glob set +f - IFS=$oIFS - - prefixes= - - for d - do - test -z "$d" && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$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 $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && - { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && - { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - { - # 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. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/contrib/cppunit-1.12.1/config/ltmain.sh b/contrib/cppunit-1.12.1/config/ltmain.sh deleted file mode 100644 index 5def35163..000000000 --- a/contrib/cppunit-1.12.1/config/ltmain.sh +++ /dev/null @@ -1,6964 +0,0 @@ -# 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, 2004, 2005, 2006, -# 2007, 2008 Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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. - -basename="s,^.*/,,g" - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - -# The name of this program: -progname=`echo "$progpath" | $SED $basename` -modename="$progname" - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -PROGRAM=ltmain.sh -PACKAGE=libtool -VERSION="1.5.26 Debian 1.5.26-1" -TIMESTAMP=" (1.1220.2.493 2008/02/01 16:58:18)" - -# Be Bourne compatible (taken from Autoconf:_AS_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+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# 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 "$progpath" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit $EXIT_FAILURE -fi - -# Global variables. -mode=$default_mode -nonopt= -prev= -prevopt= -run= -show="$echo" -show_help= -execute_dlfiles= -duplicate_deps=no -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 - -##################################### -# Shell function definitions: -# This seems to be the best place for them - -# func_mktempdir [string] -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. -func_mktempdir () -{ - my_template="${TMPDIR-/tmp}/${1-$progname}" - - if test "$run" = ":"; then - # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" - else - - # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` - - if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" - - save_mktempdir_umask=`umask` - umask 0077 - $mkdir "$my_tmpdir" - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || { - $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 - exit $EXIT_FAILURE - } - fi - - $echo "X$my_tmpdir" | $Xsed -} - - -# func_win32_libid arg -# return the library type of file 'arg' -# -# 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. -func_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 | \ - $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then - win32_nmres=`eval $NM -f posix -A $1 | \ - $SED -n -e '1,100{ - / I /{ - s,.*,import, - p - q - } - }'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - 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 -} - - -# func_infer_tag arg -# 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. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - CC_quoted="$CC_quoted $arg" - done - case $@ 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` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; - # 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$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - CC_quoted="$CC_quoted $arg" - done - case "$@ " in - " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) - # 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 $EXIT_FAILURE -# else -# $echo "$modename: using $tagname tagged configuration" - fi - ;; - esac - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - - $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" - $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 - exit $EXIT_FAILURE - fi -} - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - my_status="" - - $show "${rm}r $my_gentop" - $run ${rm}r "$my_gentop" - $show "$mkdir $my_gentop" - $run $mkdir "$my_gentop" - my_status=$? - if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then - exit $my_status - fi - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - extracted_serial=`expr $extracted_serial + 1` - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - - $show "${rm}r $my_xdir" - $run ${rm}r "$my_xdir" - $show "$mkdir $my_xdir" - $run $mkdir "$my_xdir" - exit_status=$? - if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then - exit $exit_status - fi - case $host in - *-darwin*) - $show "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - if test -z "$run"; then - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` - darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` - if test -n "$darwin_arches"; then - darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - $show "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we have a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` - lipo -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - ${rm}r unfat-$$ - cd "$darwin_orig_dir" - else - cd "$darwin_orig_dir" - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - fi # $run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` - done - func_extract_archives_result="$my_oldobjs" -} -# End of Shell function definitions -##################################### - -# Darwin sucks -eval std_shrext=\"$shrext_cmds\" - -disable_libs=no - -# 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" - preserve_args="${preserve_args}=$arg" - - # Check whether tagname contains only valid characters - case $tagname in - *[!-_A-Za-z0-9,/]*) - $echo "$progname: invalid tag name: $tagname" 1>&2 - exit $EXIT_FAILURE - ;; - 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$" < "$progpath" > /dev/null; then - taglist="$taglist $tagname" - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" - 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 - -Copyright (C) 2008 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." - exit $? - ;; - - --config) - ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath - # 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" < "$progpath" - done - exit $? - ;; - - --debug) - $echo "$progname: enabling shell trace mode" - set -x - preserve_args="$preserve_args $arg" - ;; - - --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 $? - ;; - - --finish) mode="finish" ;; - - --mode) prevopt="--mode" prev=mode ;; - --mode=*) mode="$optarg" ;; - - --preserve-dup-deps) duplicate_deps="yes" ;; - - --quiet | --silent) - show=: - preserve_args="$preserve_args $arg" - ;; - - --tag) - prevopt="--tag" - prev=tag - preserve_args="$preserve_args --tag" - ;; - --tag=*) - set tag "$optarg" ${1+"$@"} - shift - prev=tag - preserve_args="$preserve_args --tag" - ;; - - -dlopen) - prevopt="-dlopen" - prev=execute_dlfiles - ;; - - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - - *) - nonopt="$arg" - break - ;; - esac -done - -if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE -fi - -case $disable_libs in -no) - ;; -shared) - build_libtool_libs=no - build_old_libs=yes - ;; -static) - build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` - ;; -esac - -# 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 $EXIT_FAILURE - 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_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - - 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 $EXIT_FAILURE - fi - arg_mode=target - continue - ;; - - -static | -prefer-pic | -prefer-non-pic) - later="$later $arg" - continue - ;; - - -no-suppress) - suppress_opt=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, and some SunOS ksh mistreat backslash-escaping - # in scan sets (worked around with variable expansion), - # and furthermore cannot handle '|' '&' '(' ')' in scan sets - # at all, so we specify them 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 $EXIT_FAILURE - ;; - target) - $echo "$modename: you must specify a target with \`-o'" 1>&2 - exit $EXIT_FAILURE - ;; - *) - # 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 ;; - *.[fF][09]?) xform=[fF][09]. ;; - *.for) xform=for ;; - *.java) xform=java ;; - *.obj) xform=obj ;; - *.sx) xform=sx ;; - 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 $EXIT_FAILURE - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -static) - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` - case $qlibobj in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qlibobj="\"$qlibobj\"" ;; - esac - test "X$libobj" != "X$qlibobj" \ - && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." - 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 $EXIT_FAILURE - 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 $EXIT_FAILURE" 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 $EXIT_FAILURE" 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 "$progpath" "$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 $EXIT_FAILURE - fi - $echo "$srcfile" > "$lockfile" - fi - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi - qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` - case $qsrcfile in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qsrcfile="\"$qsrcfile\"" ;; - esac - - $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 </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 $EXIT_FAILURE - 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 <> ${libobj}T </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 $EXIT_FAILURE - 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 <> ${libobj}T <&2 - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_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" - 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 $EXIT_FAILURE - fi - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - precious_regex) - precious_files_regex="$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 $EXIT_FAILURE - 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 - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - 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 $EXIT_FAILURE - 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 $EXIT_FAILURE - 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 $EXIT_FAILURE - ;; - 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 - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - darwin_framework|darwin_framework_skip) - test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - prev= - 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 $EXIT_FAILURE - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework|-arch|-isysroot) - case " $CC " in - *" ${arg} ${1} "* | *" ${arg} ${1} "*) - prev=darwin_framework_skip ;; - *) compiler_flags="$compiler_flags $arg" - prev=darwin_framework ;; - esac - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - 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 - absdir="$dir" - notinst_path="$notinst_path $dir" - 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*) - testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - *) dllsearchpath="$dllsearchpath:$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # 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 - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue - ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - deplibs="$deplibs $arg" - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - -model) - compile_command="$compile_command $arg" - compiler_flags="$compiler_flags $arg" - finalize_command="$finalize_command $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - compiler_flags="$compiler_flags $arg" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; - - -module) - module=yes - continue - ;; - - # -64, -mips[0-9] enable 64-bit mode on the SGI compiler - # -r[0-9][0-9]* specifies the processor on the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler - # +DA*, +DD* enable 64-bit mode on the HP compiler - # -q* pass through compiler args for the IBM compiler - # -m* pass through architecture-specific compiler args for GCC - # -m*, -t[45]*, -txscale* pass through architecture-specific - # compiler args for GCC - # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC - # -F/path gives path to uninstalled frameworks, gcc on darwin - # @file GCC response files - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) - - # 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" - compiler_flags="$compiler_flags $arg" - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin 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 ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -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 $EXIT_FAILURE - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - continue - ;; - - -static | -static-libtool-libs) - # 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 $EXIT_FAILURE - 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 - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - 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 $EXIT_FAILURE - 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 $EXIT_FAILURE - 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 - exit_status=$? - if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then - exit $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 $EXIT_FAILURE - ;; - *.$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 duplications 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 - 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 $EXIT_FAILURE - ;; - 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%" - test "X$link_all_deplibs" != Xno && libs="$libs $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 - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - compiler_flags="$compiler_flags $deplib" - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 - continue - fi - name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` - if test "$linkmode" = lib; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - 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" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - ;; - *) - $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) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - if eval $echo \"$deplib\" 2>/dev/null \ - | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; 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' or unhandled argument \`$deplib'" 1>&2 - exit $EXIT_FAILURE - 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 $EXIT_FAILURE - 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 - avoidtemprpath= - - - # 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 $EXIT_FAILURE - 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 $EXIT_FAILURE - 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 $EXIT_FAILURE - 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 $EXIT_FAILURE - 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 - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - fi - 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 $EXIT_FAILURE - 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 "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - *" $dir "*) ;; - *" $absdir "*) ;; - *) temp_rpath="$temp_rpath $absdir" ;; - 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 - use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes ; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_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='~' - cmds=$extract_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $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='~' - cmds=$old_archive_from_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $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.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) 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 | - $EGREP ": [^:]* 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="$add_dir -L$inst_prefix_dir$libdir" - ;; - 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 $EXIT_FAILURE - 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="$add_dir -L$inst_prefix_dir$libdir" - ;; - 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 - 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 $EXIT_FAILURE - 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` - eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$deplibdir/$depdepl" ; then - depdepl="$deplibdir/$depdepl" - elif test -f "$path/$depdepl" ; then - depdepl="$path/$depdepl" - else - # Can't find it, oh well... - depdepl= - fi - # do not add paths which are already there - case " $newlib_search_path " in - *" $path "*) ;; - *) newlib_search_path="$newlib_search_path $path";; - esac - fi - path="" - ;; - *) - 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 - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - case " $deplibs " in - *" $depdepl "*) ;; - *) deplibs="$depdepl $deplibs" ;; - 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) - case " $deplibs" in - *\ -l* | *\ -L*) - $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; - esac - - 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_cmds\" - 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 $EXIT_FAILURE - 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_cmds\" - 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 $EXIT_FAILURE - 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 $EXIT_FAILURE - 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|none) - 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` - age="$number_minor" - revision="$number_minor" - lt_irix_increment=no - ;; - *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit $EXIT_FAILURE - ;; - 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]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - 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 $EXIT_FAILURE - 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` - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - 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) - if test "X$lt_irix_increment" = "Xno"; then - major=`expr $current - $age` - else - major=`expr $current - $age + 1` - fi - 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 $EXIT_FAILURE - ;; - 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}.*) - if test "X$precious_files_regex" != "X"; then - if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - 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* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # 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 </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 - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; - esac - ;; - *) new_libs="$new_libs $deplib" ;; - esac - done - deplibs="$new_libs" - - - # 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 - case $archive_cmds in - *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; - *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; - esac - 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_cmds\" - 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" - linknames= - 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 - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - 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=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - 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" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - libobjs="$libobjs $func_extract_archives_result" - 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 test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - len=`expr "X$test_cmds" : ".*" 2>/dev/null` && - 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 - output_la=`$echo "X$output" | $Xsed -e "$basename"` - - # 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/$output_la-${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" : ".*" 2>/dev/null` && - 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/$output_la-${k}.$objext - k=`expr $k + 1` - output=$output_objdir/$output_la-${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 reloadable object files - # after they are used. - i=0 - while test "$i" -lt "$k" - do - i=`expr $i + 1` - delfiles="$delfiles $output_objdir/$output_la-${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 "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - 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" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' - fi - - exit $lt_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 $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - fi - fi - - exit $EXIT_SUCCESS - 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) - case " $deplibs" in - *\ -l* | *\ -L*) - $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; - esac - - 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 $EXIT_FAILURE - 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 and hope we can get by with - # turning comma into space.. - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - 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" - cmds=$reload_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $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 $EXIT_SUCCESS - 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 $EXIT_SUCCESS - 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" - cmds=$reload_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $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 $EXIT_SUCCESS - ;; - - 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 - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - new_libs="$new_libs -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$new_libs $deplib" ;; - esac - ;; - *) new_libs="$new_libs $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - 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*) - testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - *) dllsearchpath="$dllsearchpath:$testbindir";; - 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/$outputname.exp" - $run $rm $export_symbols - $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* ) - $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - else - $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - $run eval 'mv "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* ) - $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - 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 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. */ -" - - case $host in - *cygwin* | *mingw* ) - $echo >> "$output_objdir/$dlsyms" "\ -/* DATA imports from DLLs on WIN32 can't be const, because - runtime relocations are performed -- see ld's documentation - on pseudo-relocs */ -struct { -" - ;; - * ) - $echo >> "$output_objdir/$dlsyms" "\ -const struct { -" - ;; - esac - - - $echo >> "$output_objdir/$dlsyms" "\ - 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 $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" - $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -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. - case $host in - *cygwin* | *mingw* ) - if test -f "$output_objdir/${outputname}.def" ; then - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` - else - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` - fi - ;; - * ) - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` - ;; - esac - ;; - *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 - exit $EXIT_FAILURE - ;; - 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" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` - fi - - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - $show "$link_command" - $run eval "$link_command" - exit_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 $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 $EXIT_SUCCESS - 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" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` - 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" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` - fi - - # Quote $echo for shipping. - if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then - case $progpath in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; - *) qecho="$SHELL `pwd`/$progpath --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* ) - output_name=`basename $output` - output_path=`dirname $output` - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $rm $cwrappersource $cwrapper - trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - cat > $cwrappersource <> $cwrappersource<<"EOF" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#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 '/' -# define PATH_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 -# ifndef PATH_SEPARATOR_2 -# define PATH_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 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -/* -DDEBUG is fairly common in CFLAGS. */ -#undef DEBUG -#if defined DEBUGWRAPPER -# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) -#else -# define DEBUG(format, ...) -#endif - -const char *program_name = NULL; - -void * xmalloc (size_t num); -char * xstrdup (const char *string); -const char * base_name (const char *name); -char * find_executable(const char *wrapper); -int check_executable(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 (base_name (argv[0])); - DEBUG("(main) argv[0] : %s\n",argv[0]); - DEBUG("(main) program_name : %s\n",program_name); - newargz = XMALLOC(char *, argc+2); -EOF - - cat >> $cwrappersource <> $cwrappersource <<"EOF" - newargz[1] = find_executable(argv[0]); - if (newargz[1] == NULL) - lt_fatal("Couldn't find %s", argv[0]); - DEBUG("(main) found exe at : %s\n",newargz[1]); - /* 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; - - for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" - return 127; -} - -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 -; -} - -const char * -base_name (const char *name) -{ - const char *base; - -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha ((unsigned char)name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return base; -} - -int -check_executable(const char * path) -{ - struct stat st; - - DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); - if ((!path) || (!*path)) - return 0; - - if ((stat (path, &st) >= 0) && - ( - /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ -#if defined (S_IXOTH) - ((st.st_mode & S_IXOTH) == S_IXOTH) || -#endif -#if defined (S_IXGRP) - ((st.st_mode & S_IXGRP) == S_IXGRP) || -#endif - ((st.st_mode & S_IXUSR) == S_IXUSR)) - ) - return 1; - else - return 0; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise */ -char * -find_executable (const char* wrapper) -{ - int has_slash = 0; - const char* p; - const char* p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char* concat_name; - - DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable(concat_name)) - return concat_name; - XFREE(concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable(concat_name)) - return concat_name; - XFREE(concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char* path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char* q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR(*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); - tmp_len = strlen(tmp); - concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable(concat_name)) - return concat_name; - XFREE(concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); - tmp_len = strlen(tmp); - concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable(concat_name)) - return concat_name; - XFREE(concat_name); - return NULL; -} - -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 $LTCFLAGS -s -o $cwrapper $cwrappersource - ;; - esac - $rm $output - trap "$rm $output; exit $EXIT_FAILURE" 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' - -# Be Bourne compatible (taken from Autoconf:_AS_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+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -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 $EXIT_FAILURE - 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 \$*\" - exit $EXIT_FAILURE - 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 $EXIT_FAILURE - fi -fi\ -" - chmod +x $output - fi - exit $EXIT_SUCCESS - ;; - 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" - generated="$generated $gentop" - - func_extract_archives $gentop $addlibs - oldobjs="$oldobjs $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - $echo "X$obj" | $Xsed -e 's%^.*/%%' - done | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "copying selected object files to avoid basename conflicts..." - - if test -z "$gentop"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - exit_status=$? - if test "$exit_status" -ne 0 && test ! -d "$gentop"; then - exit $exit_status - fi - fi - - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - counter=`expr $counter + 1` - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - $run ln "$obj" "$gentop/$newobj" || - $run cp "$obj" "$gentop/$newobj" - oldobjs="$oldobjs $gentop/$newobj" - ;; - *) oldobjs="$oldobjs $obj" ;; - esac - done - fi - - eval cmds=\"$old_archive_cmds\" - - if len=`expr "X$cmds" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - 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 - - # 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" : ".*" 2>/dev/null` && - 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 - eval cmd=\"$cmd\" - 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 $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - - # 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 $EXIT_FAILURE - 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 $EXIT_FAILURE - 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 $EXIT_FAILURE - fi - newdlprefiles="$newdlprefiles $libdir/$name" - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlfiles="$newdlfiles $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlprefiles="$newdlprefiles $abs" - 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 $EXIT_SUCCESS - ;; - - # 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" | 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) - case " $install_prog " in - *[\\\ /]cp\ *) ;; - *) prev=$arg ;; - esac - ;; - -g | -m | -o) prev=$arg ;; - -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 $EXIT_FAILURE - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - 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 $EXIT_FAILURE - 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 $EXIT_FAILURE - 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 $EXIT_FAILURE - ;; - 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 $EXIT_FAILURE - 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 $EXIT_FAILURE - fi - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` - else - relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` - 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 $EXIT_FAILURE - 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. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - if test "$linkname" != "$realname"; then - $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" - $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" - fi - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - cmds=$postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' - fi - - exit $lt_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 $EXIT_FAILURE - ;; - 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 $EXIT_SUCCESS - ;; - - *) - # 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= - - # Note that it is not necessary on cygwin/mingw to append a dot to - # foo even if both foo and FILE.exe exist: automatic-append-.exe - # behavior happens only for exec(3), not for open(2)! Also, sourcing - # `FILE.' does not work on cygwin managed mounts. - # - # If there is no directory component, then add one. - case $wrapper in - */* | *\\*) . ${wrapper} ;; - *) . ./${wrapper} ;; - 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 $EXIT_FAILURE - 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= - # Note that it is not necessary on cygwin/mingw to append a dot to - # foo even if both foo and FILE.exe exist: automatic-append-.exe - # behavior happens only for exec(3), not for open(2)! Also, sourcing - # `FILE.' does not work on cygwin managed mounts. - # - # If there is no directory component, then add one. - case $wrapper in - */* | *\\*) . ${wrapper} ;; - *) . ./${wrapper} ;; - esac - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - if test "$finalize" = yes && test -z "$run"; then - tmpdir=`func_mktempdir` - file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` - - $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 anyway - 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 "$old_striplib"; then - $show "$old_striplib $oldlib" - $run eval "$old_striplib $oldlib" || exit $? - fi - - # Do each command in the postinstall commands. - cmds=$old_postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $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 $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - 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. - cmds=$finish_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $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 $EXIT_SUCCESS - - $echo "X----------------------------------------------------------------------" | $Xsed - $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 "X----------------------------------------------------------------------" | $Xsed - exit $EXIT_SUCCESS - ;; - - # 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 $EXIT_FAILURE - 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 $EXIT_FAILURE - 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 $EXIT_FAILURE - 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 - if test ! -f "$dir/$dlname"; then - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 - exit $EXIT_FAILURE - fi - 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 - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - fi" - done - - # 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 - $echo "$cmd$args" - exit $EXIT_SUCCESS - 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 $EXIT_FAILURE - 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" - - case "$mode" in - clean) - case " $library_names " in - # " " in the beginning catches empty $dlname - *" $dlname "*) ;; - *) rmfiles="$rmfiles $objdir/$dlname" ;; - esac - test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - cmds=$postuninstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $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. - cmds=$old_postuninstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $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. - ;; - esac - 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 $EXIT_FAILURE - ;; - esac - - if test -z "$exec_cmd"; then - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 - exit $EXIT_FAILURE - fi -fi # test -z "$show_help" - -if test -n "$exec_cmd"; then - eval exec $exec_cmd - exit $EXIT_FAILURE -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 ." - exit $EXIT_SUCCESS - ;; - -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 - -precious-files-regex REGEX - don't remove output files matching REGEX - -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 uninstalled libtool libraries - -static-libtool-libs - 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 $EXIT_FAILURE - ;; -esac - -$echo -$echo "Try \`$modename --help' for more information about other modes." - -exit $? - -# 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 -disable_libs=shared -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -disable_libs=static -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff --git a/contrib/cppunit-1.12.1/config/missing b/contrib/cppunit-1.12.1/config/missing deleted file mode 100644 index 1c8ff7049..000000000 --- a/contrib/cppunit-1.12.1/config/missing +++ /dev/null @@ -1,367 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2006-05-10.23 - -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 -# Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 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., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, 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=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# 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 - -msg="missing on your system" - -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; - - -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' - autom4te touch the output file, or create a stub one - 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] - -Send bug reports to ." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - -esac - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). -case $1 in - lex|yacc) - # Not GNU programs, they don't have --version. - ;; - - tar) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $1 in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. 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) - echo 1>&2 "\ -WARNING: \`$1' is $msg. 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) - echo 1>&2 "\ -WARNING: \`$1' is $msg. 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*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. 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) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - 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' $msg. 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 test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex|flex) - echo 1>&2 "\ -WARNING: \`$1' is $msg. 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 test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man) - echo 1>&2 "\ -WARNING: \`$1' is $msg. 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 "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit 1 - fi - ;; - - makeinfo) - echo 1>&2 "\ -WARNING: \`$1' is $msg. 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." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - tar) - shift - - # 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 is $msg. - 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 prerequisites 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 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/contrib/cppunit-1.12.1/configure b/contrib/cppunit-1.12.1/configure deleted file mode 100644 index 424eea621..000000000 --- a/contrib/cppunit-1.12.1/configure +++ /dev/null @@ -1,23322 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61. -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006 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 more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -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+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - - - -# PATH needs CR -# 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 - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -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 -IFS=$as_save_IFS - - ;; -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_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -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 -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; 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'` - -# CDPATH. -$as_unset CDPATH - - -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi - - if test $as_have_required = yes && (eval ": -(as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : -else - as_candidate_shells= - 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=. - case $as_dir in - /*) - for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done;; - esac -done -IFS=$as_save_IFS - - - for as_shell in $as_candidate_shells $SHELL; do - # Try only shells that exist, to save several forks. - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { ("$as_shell") 2> /dev/null <<\_ASEOF -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+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -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+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -(as_func_return () { - (exit $1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = "$1" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break -fi - -fi - - done - - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi - - -fi - -fi - - - -(eval "as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # 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 after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, 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 - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\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 sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -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$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval 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="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - - -# 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 </dev/null 2>&1 && unset CDPATH - -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=${tagnames+${tagnames},}CXX - -tagnames=${tagnames+${tagnames},}F77 - -exec 7<&0 &1 - -# 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` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# 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 -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#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 -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -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 -am__isrc -CYGPATH_W -PACKAGE -VERSION -ACLOCAL -AUTOCONF -AUTOMAKE -AUTOHEADER -MAKEINFO -install_sh -STRIP -INSTALL_STRIP_PROGRAM -mkdir_p -AWK -SET_MAKE -am__leading_dot -AMTAR -am__tar -am__untar -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 -SED -GREP -EGREP -LN_S -ECHO -AR -RANLIB -DSYMUTIL -NMEDIT -DLLTOOL -AS -OBJDUMP -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='' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CXX -CXXFLAGS -CCC -CPP -CXXCPP -F77 -FFLAGS' - - -# 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. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -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 - - case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -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) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$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 ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -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'` - 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 ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$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 ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - 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 ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$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'` - 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; }; } - 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 directory names. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } -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 - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } - - -# 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 the parent directory. - ac_confdir=`$as_dirname -- "$0" || -$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 - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 - { (exit 1); exit 1; }; } - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# 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 \`..'] - -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] - --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] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_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 build - --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 if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - 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 -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested 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 - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -configure -generated by GNU Autoconf 2.61 - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 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 -fi -cat >config.log <<_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.61. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -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` -/usr/bin/hostinfo = `(/usr/bin/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 -IFS=$as_save_IFS - -} >&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_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_arg'" - ;; - 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: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -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, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------------- ## -## File substitutions. ## -## ------------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - cat confdefs.h - 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.conftest.* && - rm -f -r 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 -f -r conftest* 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 -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" -elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" -else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" -fi -shift -for ac_site_file -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 $ac_precious_vars; 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=12 -CPPUNIT_MICRO_VERSION=1 -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 - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -ac_config_headers="$ac_config_headers config/config.h" - -am__api_version='1.10' - -# 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" -# OS/2's system install, which has a completely different semantic -# ./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/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - - -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. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - 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 -f 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 - -{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 -echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } -if test -z "$MKDIR_P"; then - if test "${ac_cv_path_mkdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done -done -IFS=$as_save_IFS - -fi - - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - test -d ./--version && rmdir ./--version - MKDIR_P="$ac_install_sh -d" - fi -fi -{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 -echo "${ECHO_T}$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$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 - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if 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 -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"} - -install_sh=${install_sh-"\$(SHELL) $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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' - - - - - - -# 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 x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$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" -# OS/2's system install, which has a completely different semantic -# ./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/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - - -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. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 -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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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.exe - 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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.exe -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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -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` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* 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 file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { (ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi - -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } -if test -z "$ac_file"; then - 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 - -# Check that 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' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 that 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 { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 | *.map | *.inf | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - 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 -/* 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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; - *) 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 -/* 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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err 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 -{ 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 - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* 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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* 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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* 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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -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 ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include -/* 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; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -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 -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_c89=$ac_arg -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; - xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; -esac - - -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 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 - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch 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/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - 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 - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' 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=cpp -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 -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 g++ c++ gpp aCC CC cxx cc++ cl.exe 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -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` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&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 -/* 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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err 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 -{ 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 - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* 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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cxx_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CXXFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* 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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* 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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cxx_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -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 -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 - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch 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/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - 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 - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' 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=cpp -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 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 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 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. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -echo "$as_me: error: cannot run $SHELL $ac_aux_dir/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_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - { { 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=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_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; } -case $ac_cv_build in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -echo "$as_me: error: invalid value of canonical build" >&2;} - { (exit 1); exit 1; }; };; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ 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 - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} - { (exit 1); exit 1; }; } -fi - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -echo "$as_me: error: invalid value of canonical host" >&2;} - { (exit 1); exit 1; }; };; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -{ 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 { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS -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 && continue - 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 - -fi - -SED=$lt_cv_path_SED - -{ echo "$as_me:$LINENO: result: $SED" >&5 -echo "${ECHO_T}$SED" >&6; } - -{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_GREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue - # Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_GREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_GREP=$GREP -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -echo "${ECHO_T}$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } -if test "${ac_cv_path_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_path_EGREP="$GREP -E" - else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_EGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue - # Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_EGREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_EGREP=$EGREP -fi - - - fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - - -# Check whether --with-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 pathname 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 variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &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 lds only accept -v. -case `$LD -v 2>&1 &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' -case $host_os in - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - -{ 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_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_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" - done - 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 recognize dependent libraries" >&5 -echo $ECHO_N "checking how to recognize 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 -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - 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*) - # func_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='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - 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|DragonFly)/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 - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - 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*) - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - 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 - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | 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"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - -# Check whether --enable-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 4969 "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-*kfreebsd*-gnu|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-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - 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-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - 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 -/* 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 { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 - ;; -sparc*-*solaris*) - # 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 - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-cygwin* | *-*-mingw* | *-*-pw32*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; 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_DLLTOOL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { echo "$as_me:$LINENO: result: $DLLTOOL" >&5 -echo "${ECHO_T}$DLLTOOL" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; 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_DLLTOOL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5 -echo "${ECHO_T}$ac_ct_DLLTOOL" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. -set dummy ${ac_tool_prefix}as; 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_AS+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AS"; then - ac_cv_prog_AS="$AS" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AS="${ac_tool_prefix}as" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -AS=$ac_cv_prog_AS -if test -n "$AS"; then - { echo "$as_me:$LINENO: result: $AS" >&5 -echo "${ECHO_T}$AS" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_AS"; then - ac_ct_AS=$AS - # Extract the first word of "as", so it can be a program name with args. -set dummy as; 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_AS+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_AS"; then - ac_cv_prog_ac_ct_AS="$ac_ct_AS" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AS="as" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_AS=$ac_cv_prog_ac_ct_AS -if test -n "$ac_ct_AS"; then - { echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 -echo "${ECHO_T}$ac_ct_AS" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_AS" = x; then - AS="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - AS=$ac_ct_AS - fi -else - AS="$ac_cv_prog_AS" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; 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_OBJDUMP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { echo "$as_me:$LINENO: result: $OBJDUMP" >&5 -echo "${ECHO_T}$OBJDUMP" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; 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_OBJDUMP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 -echo "${ECHO_T}$ac_ct_OBJDUMP" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -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 to if __STDC__ is defined, since - # 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.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 nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.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 to if __STDC__ is defined, since - # 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.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 nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#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)) - return 2; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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.conftest.* 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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* 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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&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 -/* 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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.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:$ac_c_preproc_warn_flag 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 compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - 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: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&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;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&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 - - - -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - ac_ext=cpp -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 to if __STDC__ is defined, since - # 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.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 nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.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 to if __STDC__ is defined, since - # 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.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 nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.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=cpp -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 - -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 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn - 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn -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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 - - if test "x$ac_ct_F77" = x; then - F77="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - F77=$ac_ct_F77 - fi -fi - - -# Provide some information about the compiler. -echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -rm -f a.out - -# If we don't use `.F' as extension, the preprocessor is not run on the -# input file. (Note that this only needs to work for GNU compilers.) -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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err 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 -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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err 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 "x$ac_cv_f77_compiler_gnu" = xyes; then - FFLAGS="-g -O2" - else - FFLAGS="-g" - fi -else - if test "x$ac_cv_f77_compiler_gnu" = xyes; then - FFLAGS="-O2" - else - FFLAGS= - fi -fi - -G77=`test $ac_compiler_gnu = yes && echo yes` -ac_ext=cpp -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 - teststring="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; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ - = "XX$teststring") >/dev/null 2>&1 && - new_result=`expr "X$teststring" : ".*" 2>&1` && - lt_cv_sys_max_cmd_len=$new_result && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - teststring= - # 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` - fi - ;; - 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 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'" - ;; -linux* | k*bsd*-gnu) - if test "$host_cpu" = ia64; then - symcode='[ABCDGIRSTW]' - 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'" - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -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='[ABCDGIRSTW]' ;; -esac - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # 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 <&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 < 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 <> 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 -rf 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 1s/^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 MSVC, -# 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - -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 - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -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 "$LTCFLAGS" && LTCFLAGS=$CFLAGS -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_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` - - -# 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 <&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 <&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 - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; 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_DSYMUTIL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 -echo "${ECHO_T}$DSYMUTIL" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; 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_DSYMUTIL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 -echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; 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_NMEDIT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { echo "$as_me:$LINENO: result: $NMEDIT" >&5 -echo "${ECHO_T}$NMEDIT" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; 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_NMEDIT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 -echo "${ECHO_T}$ac_ct_NMEDIT" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - - { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 -echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; } -if test "${lt_cv_apple_cc_single_mod+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - echo "int foo(void){return 1;}" > conftest.c - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib ${wl}-single_module conftest.c - if test -f libconftest.dylib; then - lt_cv_apple_cc_single_mod=yes - rm -rf libconftest.dylib* - fi - rm conftest.c - fi -fi -{ echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 -echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; } - { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 -echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; } -if test "${lt_cv_ld_exported_symbols_list+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat >conftest.$ac_ext <<_ACEOF -/* 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 { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - lt_cv_ld_exported_symbols_list=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - lt_cv_ld_exported_symbols_list=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 -echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; } - case $host_os in - rhapsody* | darwin1.[0123]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" - fi - if test "$DSYMUTIL" != ":"; then - _lt_dsymutil="~$DSYMUTIL \$lib || :" - else - _lt_dsymutil= - fi - ;; - esac - - -enable_dlopen=no -enable_win32_dll=yes - -# Check whether --enable-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 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;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$rm conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm -r conftest* - - - -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 - echo "$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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7838: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:7842: \$? = $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 other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; 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* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | 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). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - 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' - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - 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 - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - lt_prog_compiler_pic='-qnocommon' - lt_prog_compiler_wl='-Wl,' - ;; - esac - ;; - - mingw* | cygwin* | 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* | k*bsd*-gnu) - case $cc_basename in - icc* | ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - esac - ;; - esac - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - 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 - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - 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_cv_prog_compiler_pic_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8128: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:8132: \$? = $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 other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $rm conftest* - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_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 - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker 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 - $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $rm -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - -{ 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 - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - 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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8232: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:8236: \$? = $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 - $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm 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_|_GLOBAL__F[ID]_.*' - # 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. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - # Just being paranoid about ensuring that cc_basename is set. - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` - - 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 - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - 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}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - 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 - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <&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 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 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 '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | k*bsd*-gnu) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_addflag= - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - *) - tmp_sharedflag='-shared' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test $supports_anon_versioning = yes; then - archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - $echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - link_all_deplibs=no - else - ld_shlibs=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - 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*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <&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 - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - 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" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - 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 "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - 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].*|aix[5-9]*) - 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 - : - 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' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - 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 -/* 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 { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# 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 "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${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 '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_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 -/* 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 { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# 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 "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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' - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${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 - ;; - - bsdi[45]*) - 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_cmds=".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*) - case $host_os in - rhapsody* | darwin1.[012]) - allow_undefined_flag='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='' - link_all_deplibs=yes - if test "$GCC" = yes ; then - output_verbose_link_cmd='echo' - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' - module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds - archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~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 $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - ld_shlibs=no - ;; - esac - 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* | dragonfly*) - 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*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - 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 - fi - ;; - - hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -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*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - 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* | netbsdelf*-gnu) - 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*) - if test -f /usr/libexec/ld.so; then - 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' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - 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 - else - ld_shlibs=no - 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 ${output_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=: - ;; - - solaris*) - no_undefined_flag=' -z text' - if test "$GCC" = yes; then - wlarc='${wl}' - 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 - wlarc='' - 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].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - 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*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - 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 - -# -# 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* - echo "$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 - pic_flag=$lt_prog_compiler_pic - 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 dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".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 - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$lt_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. - lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` - else - lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - sys_lib_search_path_spec=`echo $lt_search_path_spec` -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' - ;; - -aix[4-9]*) - 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.so - # instead of lib.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 - ;; - -bsdi[45]*) - 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_cmds=".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~ - chmod a+x \$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="/usr/lib /lib/w32api /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 - 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_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - 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* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - 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 - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - 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_cmds='.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_cmds='.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_cmds='.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' - ;; - -interix[3-9]*) - 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' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -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* | k*bsd*-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' - 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 - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # 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' - ;; - -netbsdelf*-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 - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_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}${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 - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - 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_cmds=".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" - ;; - -rdos*) - dynamic_linker=no - ;; - -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.3*) - 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 - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - shlibpath_overrides_runpath=no - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - shlibpath_overrides_runpath=yes - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -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 "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" -fi - -sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" -fi - -sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" - -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 - -{ 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" - old_striplib="$STRIP -S" - { 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 - -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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case declares shl_load. - For example, HP-UX 11i declares gettimeofday. */ -#define shl_load innocuous_shl_load - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef shl_load - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -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 -#endif - -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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="-ldld" -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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case declares dlopen. - For example, HP-UX 11i declares gettimeofday. */ -#define dlopen innocuous_dlopen - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef dlopen - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -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 -#endif - -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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="-ldld" -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" - wl=$lt_prog_compiler_wl 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 < -#endif - -#include - -#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); */ - } - else - puts (dlerror ()); - - 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; ) >&5 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_dlunknown|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 - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { 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 < -#endif - -#include - -#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); */ - } - else - puts (dlerror ()); - - 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; ) >&5 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_dlunknown|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 library types will 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 - ;; - -aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - 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 EGREP RANLIB LN_S LTCC LTCFLAGS NM \ - SED SHELL STRIP \ - 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 \ - compiler_lib_search_dirs \ - 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 \ - fix_srcfile_path \ - 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, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -# Free Software Foundation, Inc. -# -# This file is part of GNU Libtool: -# Originally by Gordon Matzigkeit , 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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 1s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# 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 -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# 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 - -# LTCC compiler flags. -LTCFLAGS=$lt_LTCFLAGS - -# 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=$lt_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="$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_cmds='$shrext_cmds' - -# 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 directories searched by this compiler when creating a shared -# library -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# 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=$lt_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. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi - - -ac_ext=cpp -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 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 - if test -z "$LTCFLAGS"; then - eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" - 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" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - ac_ext=cpp -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_shlibpath_var_CXX=unsupported -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= -compiler_lib_search_dirs_CXX= - -# Source file extension for C++ test sources. -ac_ext=cpp - -# 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;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$rm conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm -r conftest* - - -# 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 - $as_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 - $as_unset lt_cv_path_LD -fi -test -z "${LDCXX+set}" || LD=$LDCXX -CC=${CXX-"c++"} -compiler=$CC -compiler_CXX=$CC -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` - - -# 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 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 pathname 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 variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &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 lds only accept -v. -case `$LD -v 2>&1 &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 -nostdlib $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 - ;; - aix[4-9]*) - 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].*|aix[5-9]*) - 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 - : - 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' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - 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 -/* 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 { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# 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 "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${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 '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_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 -/* 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 { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# 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 "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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' - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' - archive_cmds_need_lc_CXX=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - 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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; - darwin* | rhapsody*) - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - whole_archive_flag_spec_CXX='' - link_all_deplibs_CXX=yes - allow_undefined_flag_CXX="$_lt_dar_allow_undefined" - if test "$GXX" = yes ; then - output_verbose_link_cmd='echo' - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - if test "$lt_cv_apple_cc_single_mod" != "yes"; then - archive_cmds_CXX="\$CC -r -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${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -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${_lt_dar_export_syms}${_lt_dsymutil}" - fi - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' - module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds - archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - ld_shlibs_CXX=no - ;; - esac - 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 - ;; - freebsd[12]*) - # 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* | dragonfly*) - # 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) | 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 - 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 - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) ;; - *) - export_dynamic_flag_spec_CXX='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - 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*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - 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 - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - 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 - ;; - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - 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 ${output_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}${output_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* | k*bsd*-gnu) - 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 - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - 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' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - 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' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $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' - whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_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' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='echo' - - # 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' - ;; - esac - ;; - 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* | netbsdelf*-gnu) - 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::"' - ;; - openbsd2*) - # C++ shared libraries are fairly broken - ld_shlibs_CXX=no - ;; - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='${wl}-E' - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd='echo' - else - ld_shlibs_CXX=no - fi - ;; - 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 ${output_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}${output_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 ${output_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 ${output_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}${output_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 - ;; - 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++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -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} ${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 compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='echo' - - # 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' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='${wl}-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - # So that behaviour is only enabled if SCOABSPATH is set to a - # non-empty value in the environment. Most likely only useful for - # creating official distributions of packages. - # This is a hack until libtool officially supports absolute path - # names for shared libraries. - no_undefined_flag_CXX='${wl}-z,text' - allow_undefined_flag_CXX='${wl}-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - 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 <&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 - -compiler_lib_search_dirs_CXX= -if test -n "$compiler_lib_search_path_CXX"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - # - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac - -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* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | 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). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - 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= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - 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 - aix[4-9]*) - # 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 - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - lt_prog_compiler_pic_CXX='-qnocommon' - lt_prog_compiler_wl_CXX='-Wl,' - ;; - 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* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${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='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - 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* | k*bsd*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - icpc* | ecpc*) - # Intel C++ - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - 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' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - 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*) - ;; - 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 - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - 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_cv_prog_compiler_pic_works_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13110: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:13114: \$? = $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 other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $rm conftest* - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test x"$lt_cv_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 - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker 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 - $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $rm -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then - : -else - lt_prog_compiler_static_CXX= -fi - - -{ 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 - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - 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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13214: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:13218: \$? = $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 - $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm 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 - aix[4-9]*) - # 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 '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - ;; - linux* | k*bsd*-gnu) - link_all_deplibs_CXX=no - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - -{ 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 - -# -# 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* - echo "$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 - pic_flag=$lt_prog_compiler_pic_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 dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".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" - -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' - ;; - -aix[4-9]*) - 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.so - # instead of lib.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 - ;; - -bsdi[45]*) - 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_cmds=".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~ - chmod a+x \$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="/usr/lib /lib/w32api /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 - 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_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - 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* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - 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 - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - 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_cmds='.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_cmds='.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_cmds='.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' - ;; - -interix[3-9]*) - 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' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -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* | k*bsd*-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' - 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 - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # 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' - ;; - -netbsdelf*-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 - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_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}${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 - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - 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_cmds=".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" - ;; - -rdos*) - dynamic_linker=no - ;; - -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.3*) - 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 - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - shlibpath_overrides_runpath=no - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - shlibpath_overrides_runpath=yes - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -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 "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" -fi - -sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" -fi - -sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" - -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 - -{ 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 - - -# 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 EGREP RANLIB LN_S LTCC LTCFLAGS NM \ - SED SHELL STRIP \ - 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 \ - compiler_lib_search_dirs_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 \ - fix_srcfile_path_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 -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# 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 - -# LTCC compiler flags. -LTCFLAGS=$lt_LTCFLAGS - -# 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=$lt_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="$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_cmds='$shrext_cmds' - -# 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 directories searched by this compiler when creating a shared -# library -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_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=$lt_fix_srcfile_path - -# 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. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi - - -ac_ext=cpp -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 - return - end -" - -# Code to be used in simple link tests -lt_simple_link_test_code="\ - program t - end -" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$rm conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm -r conftest* - - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${F77-"f77"} -compiler=$CC -compiler_F77=$CC -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` - - -{ 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 - ;; -aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - 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; } - -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* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | 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). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - 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' - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - 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 - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - lt_prog_compiler_pic_F77='-qnocommon' - lt_prog_compiler_wl_F77='-Wl,' - ;; - esac - ;; - - mingw* | cygwin* | 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* | k*bsd*-gnu) - case $cc_basename in - icc* | ecc*) - lt_prog_compiler_wl_F77='-Wl,' - lt_prog_compiler_pic_F77='-KPIC' - lt_prog_compiler_static_F77='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl_F77='-Wl,' - lt_prog_compiler_pic_F77='-fpic' - lt_prog_compiler_static_F77='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl_F77='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static_F77='-non_shared' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic_F77='-KPIC' - lt_prog_compiler_static_F77='-Bstatic' - lt_prog_compiler_wl_F77='-Wl,' - ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic_F77='-KPIC' - lt_prog_compiler_static_F77='-Bstatic' - lt_prog_compiler_wl_F77='' - ;; - esac - ;; - esac - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl_F77='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static_F77='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static_F77='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic_F77='-KPIC' - lt_prog_compiler_static_F77='-Bstatic' - case $cc_basename in - f77* | f90* | f95*) - lt_prog_compiler_wl_F77='-Qoption ld ';; - *) - lt_prog_compiler_wl_F77='-Wl,';; - esac - ;; - - 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*) - 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 - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl_F77='-Wl,' - lt_prog_compiler_pic_F77='-KPIC' - lt_prog_compiler_static_F77='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl_F77='-Wl,' - lt_prog_compiler_can_build_shared_F77=no - ;; - - 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_cv_prog_compiler_pic_works_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_pic_works_F77=no - ac_outfile=conftest.$ac_objext - echo "$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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14812: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:14816: \$? = $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 other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_F77=yes - fi - fi - $rm conftest* - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_F77" >&6; } - -if test x"$lt_cv_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 - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_static_works_F77=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker 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 - $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_F77=yes - fi - else - lt_cv_prog_compiler_static_works_F77=yes - fi - fi - $rm -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works_F77" >&6; } - -if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then - : -else - lt_prog_compiler_static_F77= -fi - - -{ 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 - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - 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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14916: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:14920: \$? = $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 - $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_F77=yes - fi - fi - chmod u+w . 2>&5 - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm 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_|_GLOBAL__F[ID]_.*' - # 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. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - # Just being paranoid about ensuring that cc_basename is set. - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` - - 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 - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - 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}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - 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 - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs_F77=no - cat <&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 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 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 '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_F77=no - fi - ;; - - interix[3-9]*) - hardcode_direct_F77=no - hardcode_shlibpath_var_F77=no - hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' - export_dynamic_flag_spec_F77='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | k*bsd*-gnu) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_addflag= - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers - whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - *) - tmp_sharedflag='-shared' ;; - esac - archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test $supports_anon_versioning = yes; then - archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - $echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - link_all_deplibs_F77=no - else - ld_shlibs_F77=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - 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*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - ld_shlibs_F77=no - cat <&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 - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs_F77=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' - archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' - archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' - else - ld_shlibs_F77=no - fi - ;; - esac - ;; - - 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" = no; then - runpath_var= - hardcode_libdir_flag_spec_F77= - export_dynamic_flag_spec_F77= - whole_archive_flag_spec_F77= - 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 "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct_F77=unsupported - fi - ;; - - aix[4-9]*) - 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].*|aix[5-9]*) - 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 - : - 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' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - 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 { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# 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 "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${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 '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_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 { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# 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 "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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' - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_F77='$convenience' - archive_cmds_need_lc_F77=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${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 - ;; - - bsdi[45]*) - 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_cmds=".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_F77='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes_F77=yes - ;; - - darwin* | rhapsody*) - case $host_os in - rhapsody* | darwin1.[012]) - allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - archive_cmds_need_lc_F77=no - hardcode_direct_F77=no - hardcode_automatic_F77=yes - hardcode_shlibpath_var_F77=unsupported - whole_archive_flag_spec_F77='' - link_all_deplibs_F77=yes - if test "$GCC" = yes ; then - output_verbose_link_cmd='echo' - archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' - module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds - archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - ld_shlibs_F77=no - ;; - esac - 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* | dragonfly*) - 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*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - 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 - fi - ;; - - hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -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*) - archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_F77=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_libdir_flag_spec_ld_F77='+b $libdir' - hardcode_direct_F77=no - hardcode_shlibpath_var_F77=no - ;; - *) - 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* | netbsdelf*-gnu) - 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*) - if test -f /usr/libexec/ld.so; then - 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' - archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - 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 - else - ld_shlibs_F77=no - 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 ${output_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=: - ;; - - solaris*) - no_undefined_flag_F77=' -z text' - if test "$GCC" = yes; then - wlarc='${wl}' - 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 - wlarc='' - 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].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' - fi - ;; - 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*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_F77='${wl}-z,text' - archive_cmds_need_lc_F77=no - hardcode_shlibpath_var_F77=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_F77='${wl}-z,text' - allow_undefined_flag_F77='${wl}-z,nodefs' - archive_cmds_need_lc_F77=no - hardcode_shlibpath_var_F77=no - hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' - hardcode_libdir_separator_F77=':' - link_all_deplibs_F77=yes - export_dynamic_flag_spec_F77='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - 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 - -# -# 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* - echo "$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 - pic_flag=$lt_prog_compiler_pic_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 dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".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" - -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' - ;; - -aix[4-9]*) - 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.so - # instead of lib.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 - ;; - -bsdi[45]*) - 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_cmds=".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~ - chmod a+x \$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="/usr/lib /lib/w32api /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 - 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_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - 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* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - 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 - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - 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_cmds='.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_cmds='.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_cmds='.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' - ;; - -interix[3-9]*) - 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' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -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* | k*bsd*-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' - 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 - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # 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' - ;; - -netbsdelf*-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 - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_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}${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 - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - 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_cmds=".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" - ;; - -rdos*) - dynamic_linker=no - ;; - -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.3*) - 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 - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - shlibpath_overrides_runpath=no - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - shlibpath_overrides_runpath=yes - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -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 "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" -fi - -sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" -fi - -sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" - -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 - -{ 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 - - -# 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 EGREP RANLIB LN_S LTCC LTCFLAGS NM \ - SED SHELL STRIP \ - 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 \ - compiler_lib_search_dirs_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 \ - fix_srcfile_path_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 -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# 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 - -# LTCC compiler flags. -LTCFLAGS=$lt_LTCFLAGS - -# 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=$lt_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="$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_cmds='$shrext_cmds' - -# 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 directories searched by this compiler when creating a shared -# library -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_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=$lt_fix_srcfile_path - -# 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. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi - - -ac_ext=cpp -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 {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$rm conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm -r conftest* - - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${GCJ-"gcj"} -compiler=$CC -compiler_GCJ=$CC -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` - - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -archive_cmds_need_lc_GCJ=no - -old_archive_cmds_GCJ=$old_archive_cmds - - -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 - echo "$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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17136: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:17140: \$? = $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 other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; 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* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | 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). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_GCJ='-fno-common' - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - 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 - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - lt_prog_compiler_pic_GCJ='-qnocommon' - lt_prog_compiler_wl_GCJ='-Wl,' - ;; - esac - ;; - - mingw* | cygwin* | 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). - - ;; - - 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* | k*bsd*-gnu) - case $cc_basename in - icc* | ecc*) - lt_prog_compiler_wl_GCJ='-Wl,' - lt_prog_compiler_pic_GCJ='-KPIC' - lt_prog_compiler_static_GCJ='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl_GCJ='-Wl,' - lt_prog_compiler_pic_GCJ='-fpic' - lt_prog_compiler_static_GCJ='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl_GCJ='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static_GCJ='-non_shared' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic_GCJ='-KPIC' - lt_prog_compiler_static_GCJ='-Bstatic' - lt_prog_compiler_wl_GCJ='-Wl,' - ;; - *Sun\ F*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic_GCJ='-KPIC' - lt_prog_compiler_static_GCJ='-Bstatic' - lt_prog_compiler_wl_GCJ='' - ;; - esac - ;; - esac - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl_GCJ='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static_GCJ='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static_GCJ='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic_GCJ='-KPIC' - lt_prog_compiler_static_GCJ='-Bstatic' - case $cc_basename in - f77* | f90* | f95*) - lt_prog_compiler_wl_GCJ='-Qoption ld ';; - *) - lt_prog_compiler_wl_GCJ='-Wl,';; - esac - ;; - - 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*) - 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 - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl_GCJ='-Wl,' - lt_prog_compiler_pic_GCJ='-KPIC' - lt_prog_compiler_static_GCJ='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl_GCJ='-Wl,' - lt_prog_compiler_can_build_shared_GCJ=no - ;; - - 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_cv_prog_compiler_pic_works_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_pic_works_GCJ=no - ac_outfile=conftest.$ac_objext - echo "$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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17426: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:17430: \$? = $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 other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_GCJ=yes - fi - fi - $rm conftest* - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_GCJ" >&6; } - -if test x"$lt_cv_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 - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" -{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } -if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_static_works_GCJ=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker 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 - $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_GCJ=yes - fi - else - lt_cv_prog_compiler_static_works_GCJ=yes - fi - fi - $rm -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works_GCJ" >&6; } - -if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then - : -else - lt_prog_compiler_static_GCJ= -fi - - -{ 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 - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - 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}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17530: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:17534: \$? = $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 - $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_GCJ=yes - fi - fi - chmod u+w . 2>&5 - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm 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_|_GLOBAL__F[ID]_.*' - # 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. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - # Just being paranoid about ensuring that cc_basename is set. - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` - - 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 - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - 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}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - 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 - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs_GCJ=no - cat <&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 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 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 '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $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}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_GCJ=no - fi - ;; - - interix[3-9]*) - hardcode_direct_GCJ=no - hardcode_shlibpath_var_GCJ=no - hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' - export_dynamic_flag_spec_GCJ='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | k*bsd*-gnu) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_addflag= - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers - whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - *) - tmp_sharedflag='-shared' ;; - esac - archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test $supports_anon_versioning = yes; then - archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - $echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - link_all_deplibs_GCJ=no - else - ld_shlibs_GCJ=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - 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*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - ld_shlibs_GCJ=no - cat <&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 - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs_GCJ=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' - archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' - archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' - else - ld_shlibs_GCJ=no - fi - ;; - esac - ;; - - 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" = no; then - runpath_var= - hardcode_libdir_flag_spec_GCJ= - export_dynamic_flag_spec_GCJ= - whole_archive_flag_spec_GCJ= - 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 "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct_GCJ=unsupported - fi - ;; - - aix[4-9]*) - 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].*|aix[5-9]*) - 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 - : - 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' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - 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 -/* 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 { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# 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 "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${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 '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_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 -/* 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 { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - -lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\(.*\)$/\1/ - p - } - }' -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -# 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 "$lt_aix_libpath_sed"` -fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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' - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_GCJ='$convenience' - archive_cmds_need_lc_GCJ=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${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 - ;; - - bsdi[45]*) - 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_cmds=".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_GCJ='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes_GCJ=yes - ;; - - darwin* | rhapsody*) - case $host_os in - rhapsody* | darwin1.[012]) - allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - archive_cmds_need_lc_GCJ=no - hardcode_direct_GCJ=no - hardcode_automatic_GCJ=yes - hardcode_shlibpath_var_GCJ=unsupported - whole_archive_flag_spec_GCJ='' - link_all_deplibs_GCJ=yes - if test "$GCC" = yes ; then - output_verbose_link_cmd='echo' - archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' - module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds - archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - ld_shlibs_GCJ=no - ;; - esac - 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* | dragonfly*) - 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*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - 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 - fi - ;; - - hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -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*) - archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_GCJ=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' - hardcode_direct_GCJ=no - hardcode_shlibpath_var_GCJ=no - ;; - *) - 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* | netbsdelf*-gnu) - 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*) - if test -f /usr/libexec/ld.so; then - 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' - archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - 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 - else - ld_shlibs_GCJ=no - 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 ${output_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=: - ;; - - solaris*) - no_undefined_flag_GCJ=' -z text' - if test "$GCC" = yes; then - wlarc='${wl}' - 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 - wlarc='' - 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].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' - fi - ;; - 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*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_GCJ='${wl}-z,text' - archive_cmds_need_lc_GCJ=no - hardcode_shlibpath_var_GCJ=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_GCJ='${wl}-z,text' - allow_undefined_flag_GCJ='${wl}-z,nodefs' - archive_cmds_need_lc_GCJ=no - hardcode_shlibpath_var_GCJ=no - hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' - hardcode_libdir_separator_GCJ=':' - link_all_deplibs_GCJ=yes - export_dynamic_flag_spec_GCJ='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - 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 - -# -# 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* - echo "$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 - pic_flag=$lt_prog_compiler_pic_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 dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".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" - -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' - ;; - -aix[4-9]*) - 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.so - # instead of lib.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 - ;; - -bsdi[45]*) - 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_cmds=".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~ - chmod a+x \$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="/usr/lib /lib/w32api /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 - 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_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - 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* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - 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 - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - 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_cmds='.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_cmds='.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_cmds='.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' - ;; - -interix[3-9]*) - 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' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -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* | k*bsd*-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' - 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 - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # 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' - ;; - -netbsdelf*-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 - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_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}${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 - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - 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_cmds=".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" - ;; - -rdos*) - dynamic_linker=no - ;; - -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.3*) - 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 - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - shlibpath_overrides_runpath=no - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - shlibpath_overrides_runpath=yes - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -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 "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" -fi - -sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" -fi - -sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" - -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 - -{ 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 - - -# 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 EGREP RANLIB LN_S LTCC LTCFLAGS NM \ - SED SHELL STRIP \ - 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 \ - compiler_lib_search_dirs_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 \ - fix_srcfile_path_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 -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# 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 - -# LTCC compiler flags. -LTCFLAGS=$lt_LTCFLAGS - -# 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=$lt_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="$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_cmds='$shrext_cmds' - -# 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 directories searched by this compiler when creating a shared -# library -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_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=$lt_fix_srcfile_path - -# 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. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi - - -ac_ext=cpp -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 }' - -# 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"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$rm conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm -r conftest* - - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${RC-"windres"} -compiler=$CC -compiler_RC=$CC -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` - -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 EGREP RANLIB LN_S LTCC LTCFLAGS NM \ - SED SHELL STRIP \ - 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 \ - compiler_lib_search_dirs_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 \ - fix_srcfile_path_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 -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# 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 - -# LTCC compiler flags. -LTCFLAGS=$lt_LTCFLAGS - -# 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=$lt_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="$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_cmds='$shrext_cmds' - -# 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 directories searched by this compiler when creating a shared -# library -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_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=$lt_fix_srcfile_path - -# 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. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi - - -ac_ext=cpp -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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case declares shl_load. - For example, HP-UX 11i declares gettimeofday. */ -#define shl_load innocuous_shl_load - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef shl_load - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -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 -#endif - -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#if HAVE_DLFCN_H -# include -#endif - -int -main () -{ -dlopen(0, 0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - 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 { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -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 -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&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 was given. -if test "${enable_doxygen+set}" = set; then - enableval=$enable_doxygen; -fi - -# Check whether --enable-dot was given. -if test "${enable_dot+set}" = set; then - enableval=$enable_dot; -fi - -# Check whether --enable-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 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - - ;; -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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -IFS=$as_save_IFS - - ;; -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
    ". 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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* 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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&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=cpp -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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=cpp -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=cpp -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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include - -template -class A {}; - -int -main () -{ -A 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"; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=cpp -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=cpp -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 -/* 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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=cpp -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=cpp -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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=cpp -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 - - - -# Check for library functions -# ---------------------------------------------------------------------------- -{ 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=cpp -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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#ifdef HAVE_NAMESPACES -using namespace std; -#endif -int -main () -{ -stringstream message; message << "Hello"; return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=cpp -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=cpp -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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&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 -/* 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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err 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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.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:$ac_cxx_preproc_warn_flag 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 compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - 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: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&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;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -#if HAVE_STRSTREAM -# include -#else -# include -#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 { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; 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 core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=cpp -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 - -ax_cxx_have_isfinite_save_LIBS=$LIBS - LIBS="$LIBS -lm" - - { echo "$as_me:$LINENO: checking for isfinite" >&5 -echo $ECHO_N "checking for isfinite... $ECHO_C" >&6; } -if test "${ax_cv_cxx_have_isfinite+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - ac_ext=cpp -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 -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -int f = isfinite( 3 ); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ax_cv_cxx_have_isfinite=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ax_cv_cxx_have_isfinite=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=cpp -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: $ax_cv_cxx_have_isfinite" >&5 -echo "${ECHO_T}$ax_cv_cxx_have_isfinite" >&6; } - - if test "$ax_cv_cxx_have_isfinite" = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_ISFINITE 1 -_ACEOF - - else - LIBS=$ax_cxx_have_isfinite_save_LIBS - fi - - -for ac_func in finite -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 { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -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 -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 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); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&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 - - -cppunit_val='CPPUNIT_HAVE_RTTI' -# Check whether --enable-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.pc 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, we kill variables containing newlines. -# 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. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}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 "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - 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 "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file - else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} - 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}' - -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_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$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 more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -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+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - - - -# PATH needs CR -# 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 - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -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 -IFS=$as_save_IFS - - ;; -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_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -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 -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; 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'` - -# CDPATH. -$as_unset CDPATH - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # 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 after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, 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 - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\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 sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -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$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval 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="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 - -# Save the log message, to keep $[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by $as_me, which was -generated by GNU Autoconf 2.61. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -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 and configuration settings, 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 ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.61, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2006 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -_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 - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; - --debug | --debu | --deb | --de | --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;; - --he | --h) - # Conflict between --help and --header - { 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 ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { 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" - ac_need_defaults=false ;; - - 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 CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL - export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config/config.h") CONFIG_HEADERS="$CONFIG_HEADERS config/config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "cppunit.pc") CONFIG_FILES="$CONFIG_FILES cppunit.pc" ;; - "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" ;; - "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; - - *) { { 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 against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= - trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$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 "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -# -# Set up the sed scripts for 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 - -_ACEOF - - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -CPPUNIT_MAJOR_VERSION!$CPPUNIT_MAJOR_VERSION$ac_delim -CPPUNIT_MINOR_VERSION!$CPPUNIT_MINOR_VERSION$ac_delim -CPPUNIT_MICRO_VERSION!$CPPUNIT_MICRO_VERSION$ac_delim -CPPUNIT_INTERFACE_AGE!$CPPUNIT_INTERFACE_AGE$ac_delim -CPPUNIT_BINARY_AGE!$CPPUNIT_BINARY_AGE$ac_delim -CPPUNIT_VERSION!$CPPUNIT_VERSION$ac_delim -LT_RELEASE!$LT_RELEASE$ac_delim -LT_CURRENT!$LT_CURRENT$ac_delim -LT_REVISION!$LT_REVISION$ac_delim -LT_AGE!$LT_AGE$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -am__isrc!$am__isrc$ac_delim -CYGPATH_W!$CYGPATH_W$ac_delim -PACKAGE!$PACKAGE$ac_delim -VERSION!$VERSION$ac_delim -ACLOCAL!$ACLOCAL$ac_delim -AUTOCONF!$AUTOCONF$ac_delim -AUTOMAKE!$AUTOMAKE$ac_delim -AUTOHEADER!$AUTOHEADER$ac_delim -MAKEINFO!$MAKEINFO$ac_delim -install_sh!$install_sh$ac_delim -STRIP!$STRIP$ac_delim -INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim -mkdir_p!$mkdir_p$ac_delim -AWK!$AWK$ac_delim -SET_MAKE!$SET_MAKE$ac_delim -am__leading_dot!$am__leading_dot$ac_delim -AMTAR!$AMTAR$ac_delim -am__tar!$am__tar$ac_delim -am__untar!$am__untar$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -LDFLAGS!$LDFLAGS$ac_delim -CPPFLAGS!$CPPFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim -EXEEXT!$EXEEXT$ac_delim -OBJEXT!$OBJEXT$ac_delim -DEPDIR!$DEPDIR$ac_delim -am__include!$am__include$ac_delim -am__quote!$am__quote$ac_delim -AMDEP_TRUE!$AMDEP_TRUE$ac_delim -AMDEP_FALSE!$AMDEP_FALSE$ac_delim -AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim -CCDEPMODE!$CCDEPMODE$ac_delim -am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim -am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim -CXX!$CXX$ac_delim -CXXFLAGS!$CXXFLAGS$ac_delim -ac_ct_CXX!$ac_ct_CXX$ac_delim -CXXDEPMODE!$CXXDEPMODE$ac_delim -am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim -am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim -build!$build$ac_delim -build_cpu!$build_cpu$ac_delim -build_vendor!$build_vendor$ac_delim -build_os!$build_os$ac_delim -host!$host$ac_delim -host_cpu!$host_cpu$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -CEOF$ac_eof -_ACEOF - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -host_vendor!$host_vendor$ac_delim -host_os!$host_os$ac_delim -SED!$SED$ac_delim -GREP!$GREP$ac_delim -EGREP!$EGREP$ac_delim -LN_S!$LN_S$ac_delim -ECHO!$ECHO$ac_delim -AR!$AR$ac_delim -RANLIB!$RANLIB$ac_delim -DSYMUTIL!$DSYMUTIL$ac_delim -NMEDIT!$NMEDIT$ac_delim -DLLTOOL!$DLLTOOL$ac_delim -AS!$AS$ac_delim -OBJDUMP!$OBJDUMP$ac_delim -CPP!$CPP$ac_delim -CXXCPP!$CXXCPP$ac_delim -F77!$F77$ac_delim -FFLAGS!$FFLAGS$ac_delim -ac_ct_F77!$ac_ct_F77$ac_delim -LIBTOOL!$LIBTOOL$ac_delim -LIBADD_DL!$LIBADD_DL$ac_delim -DOXYGEN!$DOXYGEN$ac_delim -DOT!$DOT$ac_delim -DOC_TRUE!$DOC_TRUE$ac_delim -DOC_FALSE!$DOC_FALSE$ac_delim -enable_dot!$enable_dot$ac_delim -enable_html_docs!$enable_html_docs$ac_delim -enable_latex_docs!$enable_latex_docs$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 30; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof -_ACEOF - - -# 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 - -cat >>$CONFIG_STATUS <<\_ACEOF -fi # test -n "$CONFIG_FILES" - - -for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; - esac - ac_file_inputs="$ac_file_inputs $ac_f" - done - - # 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. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - fi - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$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'` - { as_dir="$ac_dir" - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$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'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= - -case `sed -n '/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p -' $ac_file_inputs` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -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&@top_builddir@&$ac_top_builddir_sub&;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&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} - - rm -f "$tmp/stdin" - case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; - esac - ;; - :H) - # - # CONFIG_HEADER - # -_ACEOF - -# Transform confdefs.h into a sed script `conftest.defines', that -# substitutes the proper values into config.h.in to produce config.h. -rm -f conftest.defines conftest.tail -# First, append a space to every undef/define line, to ease matching. -echo 's/$/ /' >conftest.defines -# Then, protect against being on the right side of a sed subst, or in -# an unquoted here document, in config.status. If some macros were -# called several times there might be several #defines for the same -# symbol, which is useless. But do not sort them, since the last -# AC_DEFINE must be honored. -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where -# NAME is the cpp macro being defined, VALUE is the value it is being given. -# PARAMS is the parameter list in the macro definition--in most cases, it's -# just an empty string. -ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' -ac_dB='\\)[ (].*,\\1define\\2' -ac_dC=' ' -ac_dD=' ,' - -uniq confdefs.h | - sed -n ' - t rset - :rset - s/^[ ]*#[ ]*define[ ][ ]*// - t ok - d - :ok - s/[\\&,]/\\&/g - s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p - s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p - ' >>conftest.defines - -# Remove the space that was appended to ease matching. -# Then replace #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. -# (The regexp can be short, since the line contains either #define or #undef.) -echo 's/ $// -s,^[ #]*u.*,/* & */,' >>conftest.defines - -# Break up conftest.defines: -ac_max_sed_lines=50 - -# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" -# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" -# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" -# et cetera. -ac_in='$ac_file_inputs' -ac_out='"$tmp/out1"' -ac_nxt='"$tmp/out2"' - -while : -do - # Write a here document: - cat >>$CONFIG_STATUS <<_ACEOF - # First, check the format of the line: - cat >"\$tmp/defines.sed" <<\\CEOF -/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def -/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def -b -:def -_ACEOF - sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS - ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in - sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail - grep . conftest.tail >/dev/null || break - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines conftest.tail - -echo "ac_result=$ac_in" >>$CONFIG_STATUS -cat >>$CONFIG_STATUS <<\_ACEOF - if test x"$ac_file" != x-; then - echo "/* $configure_input */" >"$tmp/config.h" - cat "$ac_result" >>"$tmp/config.h" - 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 - rm -f $ac_file - mv "$tmp/config.h" $ac_file - fi - else - echo "/* $configure_input */" - cat "$ac_result" - fi - rm -f "$tmp/out12" -# Compute $ac_file's index in $config_headers. -_am_arg=$ac_file -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 -echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) 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. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$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 - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. 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 " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/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_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'` - { as_dir=$dirpart/$fdir - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$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'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done - ;; - "default":C) chmod a+x cppunit-config ;; - - esac -done # for ac_tag - - -{ (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 - $as_dirname -- /* automatically generated */ || -$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/contrib/cppunit-1.12.1/configure.in b/contrib/cppunit-1.12.1/configure.in deleted file mode 100644 index ed1880cb5..000000000 --- a/contrib/cppunit-1.12.1/configure.in +++ /dev/null @@ -1,155 +0,0 @@ -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=12 -CPPUNIT_MICRO_VERSION=1 -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_LIBTOOL_WIN32_DLL -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
    ". 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 - - -# Check for library functions -# ---------------------------------------------------------------------------- -AC_CXX_HAVE_SSTREAM -AC_CXX_HAVE_STRSTREAM -AX_CXX_HAVE_ISFINITE -AC_CHECK_FUNCS(finite) - -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.pc - 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/contrib/cppunit-1.12.1/contrib/bc5/bcc-makefile.zip b/contrib/cppunit-1.12.1/contrib/bc5/bcc-makefile.zip deleted file mode 100644 index 8be8d7bb27104dd86d188ea6dbf99213fcd91bcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4359 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 diff --git a/contrib/cppunit-1.12.1/contrib/msvc/AddingUnitTestMethod.dsm b/contrib/cppunit-1.12.1/contrib/msvc/AddingUnitTestMethod.dsm deleted file mode 100644 index 51f0dcba3..000000000 --- a/contrib/cppunit-1.12.1/contrib/msvc/AddingUnitTestMethod.dsm +++ /dev/null @@ -1,170 +0,0 @@ -'Made by bloodchen -'bloodchen@hotmail.com -Sub NewTestClass -On Error Resume Next -dim proj_path,ext,pos,proj_dir,MyCppFile,MyCppName,MyHFile,MyHName,ClassName,HText,CPPText -proj_path = ActiveProject.fullname -ext = "" -pos = len (proj_path) -Do While ext <> "\" -ext = Mid(proj_path, pos, 1) -pos = pos -1 -Loop -proj_dir = left(proj_path, pos+1) -ClassName=InputBox("Enter the class name:", "Class Name") -if ActiveProject.Type <> "Build" then -MsgBox "This project is not valid. Ending macro." -Exit Sub -end if -if (len(ClassName) <= 0) then -MsgBox "Invalid class name. Ending macro." -Exit Sub -end if - -' ClassName="CTest" -MyCppName=proj_dir+ClassName+".cpp" -MyHName=proj_dir+ClassName+".h" -ActiveProject.AddFile MyCppName -ActiveProject.AddFile MyHName -Documents.Add "Text" -ActiveDocument.Selection.StartOfDocument - -HText= "#ifndef "+ClassName+"DEF"+VbCrLf& _ -"#define "+ClassName+"DEF"+VbCrLf& _ -""+VbCrLf& _ -"#include "+VbCrLf& _ -"#include "+VbCrLf& _ -"class "+ClassName+":public CppUnit::TestCase"+VbCrLf& _ -"{"+VbCrLf& _ -" CPPUNIT_TEST_SUITE( "+ClassName+" );"+VbCrLf& _ -" CPPUNIT_TEST_SUITE_END();"+VbCrLf& _ -"public:"+VbCrLf& _ -" "+ClassName+"();"+VbCrLf& _ -" virtual ~"+ClassName+"();"+VbCrLf& _ -"};"+VbCrLf& _ -"#endif"+VbCrLf -ActiveDocument.Selection = HText -ActiveDocument.Save MyHName -' WriteFile MyHName,HText -Documents.Add "Text" -ActiveDocument.Selection.StartOfDocument -CPPText = "#include "+chr(34)+"stdafx.h"+chr(34)+VbCrLf& _ -"#include "+chr(34)+ClassName+".h"+chr(34)+VbCrLf& _ -""+VbCrLf& _ -""+VbCrLf& _ -"CPPUNIT_TEST_SUITE_REGISTRATION( "+ClassName+ " );"+VbCrLf& _ -""+VbCrLf& _ -""+VbCrLf& _ -ClassName+"::"+ClassName+"()"+VbCrLf& _ -"{"+VbCrLf& _ -"}"+VbCrLf& _ -""+VbCrLf& _ -""+VbCrLf& _ -ClassName+"::~"+ClassName+"()"+VbCrLf& _ -"{"+VbCrLf& _ -"}" -' WriteFile MyCppName,CPPText -ActiveDocument.Selection = CPPText -ActiveDocument.Save MyCppName - -End Sub - - -Sub ToggleHandCPP() -'DESCRIPTION: Opens the .cpp or .h file for the current document. -'Toggles between the .cpp & .h file -ext = ActiveDocument.FullName -If ext = "" Then -msgbox ("Error, not a .cpp or .h file") -exit sub -End If -DocName = UCase(ext) - -If Right(DocName,4) = ".CPP" Then -fn = left(DocName, Len(DocName)-3) & "h" -ElseIf Right(DocName,2) = ".H" Then -fn = Left(DocName, Len(DocName)-1) & "cpp" -Else -msgbox ("Error, not a .cpp or a .h file") -exit sub -End If -'msgbox (fn) -on error resume next -Documents.Open (fn) -End Sub - -Sub ADDTestMethod() -strHpt = ActiveDocument.FullName -if right(strHpt,3) = "CPP" Or right (strHpt,3) = "cpp" Then -ActiveDocument.Selection.SelectLine -strText = ActiveDocument.Selection.Text -if (Instr(strText, "::" ) = 0) Then -MsgBox("Line not valid !!") -Exit Sub -End If -else exit sub -end if - -pos = Instr(strText, "::") -strName = Right(strText, (Len(strText) - (pos+1))) -pos = Instr(strName,"(") -strName = Left(strName,pos-1) -strClass = Left(strText,pos - 1) -while (instr(strClass, " ") > 0) -pos = instr(strClass, " ") -strTyp = strTyp & Left(strClass, pos) -strClass = Right(strClass, Len(strClass) - (pos) ) -wend -ToggleHandCPP - -ActiveDocument.Selection.SelectAll -strHead = ActiveDocument.Selection.Text - -if (instr(strHead,strClass) = 0) Then -MsgBox(" Can't find class " & strClass & " !!") -ToggleHandCPP -Exit Sub -End If -ActiveDocument.Selection.EndOfDocument -lineBottom = ActiveDocument.Selection.CurrentLine - -ActiveDocument.Selection.StartOfDocument -ActiveDocument.Selection.StartOfLine -ActiveDocument.Selection.SelectLine -strLine = ActiveDocument.Selection.Text -while (instr(strLine, strName) = 0 And ActiveDocument.Selection.CurrentLine <> lineBottom) -ActiveDocument.Selection.StartOfLine -ActiveDocument.Selection.LineDown dsMove -ActiveDocument.Selection.SelectLine -strLine = ActiveDocument.Selection.Text -Wend -if (ActiveDocument.Selection.CurrentLine < lineBottom) Then -if( instr(strLine, "CPPUNIT_TEST" ) <> 0 )Then -ToggleHandCPP -Exit Sub -end if -End If - -ActiveDocument.Selection.StartOfDocument -ActiveDocument.Selection.StartOfLine -ActiveDocument.Selection.SelectLine -strLine = ActiveDocument.Selection.Text -while (instr(strLine, " CPPUNIT_TEST_SUITE_END();" ) = 0 And ActiveDocument.Selection.CurrentLine <> lineBottom) -ActiveDocument.Selection.StartOfLine -ActiveDocument.Selection.LineDown dsMove -ActiveDocument.Selection.SelectLine -strLine = ActiveDocument.Selection.Text -Wend -if (ActiveDocument.Selection.CurrentLine < lineBottom) Then -ActiveDocument.Selection.EndOfLine -ActiveDocument.Selection.LineUp -ActiveDocument.Selection.EndOfLine -ActiveDocument.Selection.NewLine -ActiveDocument.Selection = "CPPUNIT_TEST( "&strName&" );" -else -MsgBox("CPPUNIT_TEST_SUITE_END not found") -end if -ToggleHandCPP - -End Sub - \ No newline at end of file diff --git a/contrib/cppunit-1.12.1/contrib/msvc/CppUnit.WWTpl b/contrib/cppunit-1.12.1/contrib/msvc/CppUnit.WWTpl deleted file mode 100644 index 174a64b5a..000000000 --- a/contrib/cppunit-1.12.1/contrib/msvc/CppUnit.WWTpl +++ /dev/null @@ -1,486 +0,0 @@ -Baptiste Lepilleur's template file. -(@)Copyright 2001, Baptiste Lepilleur . - - - -[-ExtractPath] -!!Memo -Extract the path from a full filename. -path is the filename we need to extract the path from. -returns: extracted path. -Algo: we iterates the filename from the end until we found a character '\'. -!!End - -!!Params -path @@(ProjectPath)@@ -!!End - -!!Code -Input path: "@@path@@" -!!Set index @@(Strlen @@path@@)@@ -!!// -!!Set finalpath -!!Label LoopExtractPath -!!Sub index 1 -!!If @@index@@ < 0 -!!Goto EndExtractPath -!!Endif -!!// -!!Set lastchar @@(StrSub @@path@@ @@index@@ 1)@@ -!!If @@lastchar@@ != "\" -!!Goto LoopExtractPath -!!Endif -!!// -!!Add index 1 -!!Set finalpath @@(StrSub @@path@@ 0 @@index@@)@@ -!!// -!!Label EndExtractPath -!!Return @@finalpath@@ -!!End - - - ---------------------------------------------------------------------------------- ---------------------------------------------------------------------------------- ---------------------------------------------------------------------------------- ---------------------------------------------------------------------------------- -[+01 Create Class in file] -!!Memo -Creates a new class in new files (.h/.cpp) and adds them to the project. -!!End - -!!Params -classname Ttr -parentclassname = -classdesc This class represents -objectkind Reference Object -hasserialize 0 -isrefobj 0 -inlinectordtor 0 -createfile 1 -isunittest 0 -!!End - -!!Dialog - -Class name:
    -Brief description:
    -Object Kind: -
    - -Parent class name:
    - - - Create a new file ? (otherwise Insert in current file).
    -
    - - Has: virtual void Serialize( CArchive &ar )
    - - Is a reference counted object (inherit ERefObj)
    - - Inline ctor/dtor, copy ctor/operator.
    - - Is a CppUnit unit test.
    - - - - - - - -!!End - -!!Code -!!// Set variable that indicates the kind of object we are working on. -!!Set defvalobject 0 -!!If @@objectkind@@ == "Default Value Object" -!!Set defvalobject 1 -!!Endif -!!// -!!Set valobject 0 -!!If @@objectkind@@ == "Explicit Value Object" -!!Set valobject 1 -!!Endif -!!// -!!Set refobject 0 -!!If @@objectkind@@ == "Reference Object" -!!Set refobject 1 -!!Endif -!!// -!!// Set class filename (relative to dsp) -!!Set headerfn @@classname@@.h -!!Set implfn @@classname@@.cpp -!!Set headerdefine @@(String @@(Call -MakeHeaderDefined fn @@headerfn@@)@@:U)@@ -!!// -!!// hasparentclass indicates if a parent class has been defined. -!!Set hasparentclass 0 -!!If @@parentclassname@@ != = -!!Set hasparentclass 1 -!!Else -!!If @@isunittest@@ -!!Set parentclassname CppUnit::TestFixture -!!Set hasparentclass 1 -!!Endif -!!Endif -!!// -!!// hasparent is set to 1 if the class has some parent (ERefObj or parentclass). -!!Set hasparent @@hasparentclass@@ -!!If @@isrefobj@@ -!!Set hasparent 1 -!!Endif -!!// -!!// -!!// All variables are set, we can now generates the class. -!!// -!!// -!!// -!!// -!!// ---------------------------------------------------------------------------- -!!// ------------------------------ header file --------------------------------- -!!// ---------------------------------------------------------------------------- -!!// -!!// -!!// -!!If @@createfile@@ -!!FileNew @@headerfn@@ dsp -!!Set headerpath @@(FilePath)@@ -// ////////////////////////////////////////////////////////////////////////// -// Header file @@headerfn@@ for class @@classname@@ -// (c)Copyright 2000, Baptiste Lepilleur. -// Created: @@(Date "yyyy/MM/dd")@@ -// ////////////////////////////////////////////////////////////////////////// -#ifndef @@headerdefine@@ -#define @@headerdefine@@ -!!Else -// ////////////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////////////// -// Definition of class @@classname@@ -// ////////////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////////////// -!!Endif -!!If @@hasparentclass@@ - -!!If @@isunittest@@ -#include -!!Else -#include "@@parentclassname@@.h" -!!Endif -!!Endif - - -!!If @@isrefobj@@ -/*! Declare @@classname@@Ref as a reference pointer on @@classname@@. - */ -EDECL_REF( @@classname@@ ); - - - -!!Endif -/*! \class @@classname@@ - * \brief @@classdesc@@ - */ -class @@classname@@@@\ -!!// Write inherited class list (parent class first, then ERefObj if inherited). -!!If @@hasparent@@ - : @@\ -!!// xpos contains the indentation level for inheritance declarations... -!!GetPos xpos ypos -!!Sub xpos 1 -public @@\ -!!Else - -!!Endif -!!If @@hasparentclass@@ -@@parentclassname@@@@\ -!!If @@isrefobj@@ -, -@@(Call -MakeFiller filler " " count @@xpos@@)@@@@\ -public @@\ -!!Else - -!!Endif -!!Endif -!!If @@isrefobj@@ -ERefObj -!!Endif -{ -!!// -!!// -!!// ------------ Done with inheritance, declare the class body... ---------- -!!// -!!// -!!If @@isunittest@@ - CPPUNIT_TEST_SUITE( @@classname@@ ); - CPPUNIT_TEST( putTestMethodNameHere ); - CPPUNIT_TEST_SUITE_END(); - -!!Endif -public: -!!If !@@defvalobject@@ - /*! Constructs a @@classname@@ object. - */ - @@classname@@(); - -!!Endif -!!If @@valobject@@ - /*! Copy constructor. - * @param copy Object to copy. - */ - @@classname@@( const @@classname@@ © ); - -!!Endif - /// Destructor. - virtual ~@@classname@@(); -!!If @@valobject@@ - - /*! Copy operator. - * @param copy Object to copy. - * @return Reference on this object. - */ - @@classname@@ &operator =( const @@classname@@ © ); -!!Endif -!!If @@isunittest@@ - - void setUp(); - void tearDown(); -!!Endif -!!// Private for methods -!!If @@refobject@@ - -private: - /// Prevents the use of the copy constructor. - @@classname@@( const @@classname@@ © ); - - /// Prevents the use of the copy operator. - void operator =( const @@classname@@ © ); -!!Endif -!!// Private for member datas - -private: -}; - - - -!!If @@createfile@@ -// Inlines methods for @@classname@@:@@\ -!!GetPos xpos ypos -!!Sub xpos 4 - -// @@(Call -MakeFiller filler - count @@xpos@@)@@ -!!Endif //@@createfile@@ -!!If @@inlinectordtor@@ -!!If !@@defvalobject@@ - - -inline -@@classname@@::@@classname@@()@@\ -!!If @@hasparentclass@@ - : - @@parentclassname@@() -!!Else - -!!Endif -{ -} -!!Endif //!@@defvalobject@@ -!!If @@valobject@@ - - -inline -@@classname@@::@@classname@@( const @@classname@@ © )@@\ -!!If @@hasparentclass@@ - : - @@parentclassname@@( copy ) -!!Else - -!!Endif -!!Endif //@@valobject@@ - - -inline -@@classname@@::~@@classname@@() -{ -} -!!If @@valobject@@ - - -inline @@classname@@ & -@@classname@@::operator =( const @@classname@@ © ) -{ - - return *this; -} -!!Endif //@@valobject@@ -!!Endif //@@inlinectordtor@@ - - -!!If @@createfile@@ - -#endif // @@headerdefine@@ -!!FileSave -!!ProjectFileAdd -!!Endif -!!// -!!// -!!// -!!// ---------------------------------------------------------------------------- -!!// -------------------------- Implementation file ----------------------------- -!!// ---------------------------------------------------------------------------- -!!// -!!// -!!// -!!If @@createfile@@ -!!FileNew @@implfn@@ dsp -// ////////////////////////////////////////////////////////////////////////// -// Implementation file @@implfn@@ for class @@classname@@ -// (c)Copyright 2000, Baptiste Lepilleur. -// Created: @@(Date "yyyy/MM/dd")@@ -// ////////////////////////////////////////////////////////////////////////// - -#include "StdAfx.h" -#include "@@headerfn@@" -!!Else - - -// ////////////////////////////////////////////////////////////////////////// -// Implementation of class @@classname@@ -// ////////////////////////////////////////////////////////////////////////// -!!Endif -!!If @@isunittest@@ - -CPPUNIT_TEST_SUITE_REGISTRATION( @@classname@@ ); -!!Endif -!!If !@@inlinectordtor@@ -!!If !@@defvalobject@@ - - -@@classname@@::@@classname@@()@@\ -!!If @@hasparentclass@@ - : - @@parentclassname@@() -!!Else - -!!Endif -{ -} -!!Endif -!!If @@valobject@@ - - -@@classname@@::@@classname@@( const @@classname@@ © )@@\ -!!If @@hasparentclass@@ - : - @@parentclassname@@( copy ) -!!Else - -!!Endif -{ -} -!!Endif - - -@@classname@@::~@@classname@@() -{ -} -!!If @@valobject@@ - - -@@classname@@ & -@@classname@@::operator =( const @@classname@@ © ) -{ - - return *this; -} -!!Endif -!!Endif -!!If @@isunittest@@ - - -void -@@classname@@::setUp() -{ -} - - -void -@@classname@@::tearDown() -{ -} -!!Endif - -!!If @@createfile@@ -!!FileSave -!!ProjectFileAdd -!!//ExecuteCommand FileOpen "@@headerpath@@" -!!Endif -!!End - ---------------------------------------------------------------------------------- ---------------------------------------------------------------------------------- -[-Dummy] -!!Code -!!End - ---------------------------------------------------------------------------------- ------------------------- [-MakeHeaderDefined] ------------------------------- ---------------------------------------------------------------------------------- -[-MakeHeaderDefined] -!!Memo -This template replace all occurences of '.' in the specified filename "fn" by '_'. -This is typically used to make the #ifndef at the beginning of header files. -Parameters: "fn" filename in which each occurence of '.' is replaced by '_'. -Returns: Transformed filename. -!!End - -!!Params -fn TestDoIt -!!End - -!!Code -!!Set result @@fn@@ -!!Label LoopMakeHeaderDefined -!!Set fn @@result@@ -!!// Check if there is any occurence left of '.' -!!Set index @@(StrFind @@fn@@ ".")@@ -!!If @@index@@ < 0 -!!Goto EndMakeHeaderDefined -!!Endif -!!// Replace occurences of '.' in fb by '_' and set to result. -!!Set result @@(StrSub @@fn@@ 0 @@index@@ )@@_ -!!Add index 1 -!!Set result @@result@@@@(StrSub @@fn@@ @@index@@)@@ -!!Goto LoopMakeHeaderDefined -!!Label EndMakeHeaderDefined -!!Return @@result@@ -!!End - ---------------------------------------------------------------------------------- ----------------------------- [-MakeFiller] ---------------------------------- ---------------------------------------------------------------------------------- -[-MakeFiller] -!!Memo -Make a string that contains "count" occurrence of "filler". -Parameters: "filler" String that is repeated. - "count" Number of times the "filler" is repeated. -Returns: A string that contains "count" times the string "filler". -!!End - -!!Params -filler - -count 10 -!!End - -!!Code -!!Set result -!!Label LoopMakerFiller -!!If @@count@@ > 0 -!!Set result @@result@@@@filler@@ -!!Sub count 1 -!!Goto LoopMakerFiller -!!Endif -!!Return @@result@@ -!!End \ No newline at end of file diff --git a/contrib/cppunit-1.12.1/contrib/msvc/readme.txt b/contrib/cppunit-1.12.1/contrib/msvc/readme.txt deleted file mode 100644 index b2ac1b48a..000000000 --- a/contrib/cppunit-1.12.1/contrib/msvc/readme.txt +++ /dev/null @@ -1,10 +0,0 @@ -What's in those files: - - * CppUnit.WWTpl: a template Workspace Whiz! which create a new class -and add the new files to the project. You can specify that the class is a -CppUnit testcase and all the macro will be defined to register the test case -and declare the test suite. Workspace Whiz! is an add-ins for VC++. It can -be found at: http://www.workspacewhiz.com/. - - * AddingUnitTestMethod.dsm: a set of VC++ macro to add unit test -using helper macros. \ No newline at end of file diff --git a/contrib/cppunit-1.12.1/contrib/xml-xsl/report.xsl b/contrib/cppunit-1.12.1/contrib/xml-xsl/report.xsl deleted file mode 100644 index b394cdbe6..000000000 --- a/contrib/cppunit-1.12.1/contrib/xml-xsl/report.xsl +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -Test Report - - - -

    Test Report

    - - - -
    - - -

    FailedTests

    - - - - - - - - - - - -
    idNameFailureTypeLocationMessage
    -
    - - No failed test. - -
    -
    - - - - - - - -
    - -
    - - - - line # in - - - - -

    SuccessfulTests

    - - - - - - - - -
    idName
    -
    - - No sucessful test. - -
    -
    - - - - - - - - - -

    Statistics

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    StatusNumber
    Tests
    FailuresTotal
    Errors
    Failures
    -
    - -
    diff --git a/contrib/cppunit-1.12.1/contrib/xml-xsl/tests.xml b/contrib/cppunit-1.12.1/contrib/xml-xsl/tests.xml deleted file mode 100644 index 6fef14ebe..000000000 --- a/contrib/cppunit-1.12.1/contrib/xml-xsl/tests.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - ExampleTestCase.example - Assertion - - exampletestcase.cpp - 7 - - - 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 } - - - ExampleTestCase.anotherExample - Assertion - - exampletestcase.cpp - 15 - - 1 == 2 - - - ExampleTestCase.testAdd - Assertion - - exampletestcase.cpp - 27 - - result == 6.0 - - - ExampleTestCase.testDivideByZero - Error - caught unknown exception - - - ExampleTestCase.testEquals - Assertion - - exampletestcase.cpp - 48 - - Expected: 12, but was: 13. - - - - - 5 - 5 - 1 - 4 - - diff --git a/contrib/cppunit-1.12.1/cppunit-config.1 b/contrib/cppunit-1.12.1/cppunit-config.1 deleted file mode 100644 index baa8b5845..000000000 --- a/contrib/cppunit-1.12.1/cppunit-config.1 +++ /dev/null @@ -1,67 +0,0 @@ -.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 -.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 -. diff --git a/contrib/cppunit-1.12.1/cppunit-config.in b/contrib/cppunit-1.12.1/cppunit-config.in deleted file mode 100644 index 51e8b581c..000000000 --- a/contrib/cppunit-1.12.1/cppunit-config.in +++ /dev/null @@ -1,98 +0,0 @@ -#!/bin/sh - -prefix=@prefix@ -exec_prefix=@exec_prefix@ -exec_prefix_set=no -includedir=@includedir@ - -usage() -{ - cat <&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/contrib/cppunit-1.12.1/cppunit.m4 b/contrib/cppunit-1.12.1/cppunit.m4 deleted file mode 100644 index 41f067b6d..000000000 --- a/contrib/cppunit-1.12.1/cppunit.m4 +++ /dev/null @@ -1,92 +0,0 @@ -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 - AC_MSG_RESULT(no) - 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/'` - if test "x${cppunit_major_min}" = "x" ; then - cppunit_major_min=0 - fi - - cppunit_minor_min=`echo $cppunit_version_min | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - if test "x${cppunit_minor_min}" = "x" ; then - cppunit_minor_min=0 - fi - - cppunit_micro_min=`echo $cppunit_version_min | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x${cppunit_micro_min}" = "x" ; then - cppunit_micro_min=0 - fi - - 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/contrib/cppunit-1.12.1/cppunit.pc.in b/contrib/cppunit-1.12.1/cppunit.pc.in deleted file mode 100644 index 79c3a7f5e..000000000 --- a/contrib/cppunit-1.12.1/cppunit.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: CppUnit -Description: The C++ Unit Test Library -Version: @CPPUNIT_VERSION@ -Libs: -L${libdir} -lcppunit -Libs.private: @LIBADD_DL@ -Cflags: -I${includedir} \ No newline at end of file diff --git a/contrib/cppunit-1.12.1/cppunit.spec b/contrib/cppunit-1.12.1/cppunit.spec deleted file mode 100644 index 5152beb0e..000000000 --- a/contrib/cppunit-1.12.1/cppunit.spec +++ /dev/null @@ -1,65 +0,0 @@ -Name: cppunit -Version: 1.12.1 -Release: 2 - -Summary: C++ Port of JUnit Testing Framework -License: LGPL -Group: Development/Libraries -Url: http://cppunit.sourceforge.net/ -Source: ftp://download.sourceforge.net/pub/sourceforge/cppunit/cppunit-%version.tar.gz - -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) - -%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 -%setup -q - -%build -%configure --enable-doxygen -make %{?_smp_mflags} - -%install -rm -rf $RPM_BUILD_ROOT -make install DESTDIR=$RPM_BUILD_ROOT -rm -f $RPM_BUILD_ROOT/%{_libdir}/*.la -rm -rf $RPM_BUILD_ROOT/%{_datadir}/cppunit - -%clean -rm -rf $RPM_BUILD_ROOT - -%files -%defattr(-,root,root,-) -%{_bindir}/cppunit-config -%{_bindir}/DllPlugInTester -%{_includedir}/cppunit/* -%{_mandir}/man1/* -%{_datadir}/aclocal/* -%{_libdir}/libcppunit*.so.* -%{_libdir}/libcppunit.so -%{_libdir}/libcppunit.a -%doc AUTHORS COPYING INSTALL NEWS README THANKS ChangeLog TODO BUGS doc/FAQ - -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig - -%files doc -%doc doc/html/* - -%changelog -* Mon Jul 4 2005 Patrice Dumas -- update using the fedora template -* Sat Apr 14 2001 Bastiaan Bakker -- Initial release diff --git a/contrib/cppunit-1.12.1/cppunit.spec.in b/contrib/cppunit-1.12.1/cppunit.spec.in deleted file mode 100644 index 39507dc35..000000000 --- a/contrib/cppunit-1.12.1/cppunit.spec.in +++ /dev/null @@ -1,65 +0,0 @@ -Name: cppunit -Version: @VERSION@ -Release: 2 - -Summary: C++ Port of JUnit Testing Framework -License: LGPL -Group: Development/Libraries -Url: http://cppunit.sourceforge.net/ -Source: ftp://download.sourceforge.net/pub/sourceforge/cppunit/cppunit-%version.tar.gz - -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) - -%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 -%setup -q - -%build -%configure --enable-doxygen -make %{?_smp_mflags} - -%install -rm -rf $RPM_BUILD_ROOT -make install DESTDIR=$RPM_BUILD_ROOT -rm -f $RPM_BUILD_ROOT/%{_libdir}/*.la -rm -rf $RPM_BUILD_ROOT/%{_datadir}/cppunit - -%clean -rm -rf $RPM_BUILD_ROOT - -%files -%defattr(-,root,root,-) -%{_bindir}/cppunit-config -%{_bindir}/DllPlugInTester -%{_includedir}/cppunit/* -%{_mandir}/man1/* -%{_datadir}/aclocal/* -%{_libdir}/libcppunit*.so.* -%{_libdir}/libcppunit.so -%{_libdir}/libcppunit.a -%doc AUTHORS COPYING INSTALL NEWS README THANKS ChangeLog TODO BUGS doc/FAQ - -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig - -%files doc -%doc doc/html/* - -%changelog -* Mon Jul 4 2005 Patrice Dumas -- update using the fedora template -* Sat Apr 14 2001 Bastiaan Bakker -- Initial release diff --git a/contrib/cppunit-1.12.1/doc/Doxyfile.in b/contrib/cppunit-1.12.1/doc/Doxyfile.in deleted file mode 100644 index 28f462451..000000000 --- a/contrib/cppunit-1.12.1/doc/Doxyfile.in +++ /dev/null @@ -1,604 +0,0 @@ -# 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 , where -# is the value of the INPUT_FILTER tag, and 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/contrib/cppunit-1.12.1/doc/FAQ b/contrib/cppunit-1.12.1/doc/FAQ deleted file mode 100644 index e43cdbaf6..000000000 --- a/contrib/cppunit-1.12.1/doc/FAQ +++ /dev/null @@ -1,31 +0,0 @@ -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/contrib/cppunit-1.12.1/doc/Makefile.am b/contrib/cppunit-1.12.1/doc/Makefile.am deleted file mode 100644 index 08e5a03b6..000000000 --- a/contrib/cppunit-1.12.1/doc/Makefile.am +++ /dev/null @@ -1,67 +0,0 @@ -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 -pR 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/contrib/cppunit-1.12.1/doc/Makefile.in b/contrib/cppunit-1.12.1/doc/Makefile.in deleted file mode 100644 index a60dd6bed..000000000 --- a/contrib/cppunit-1.12.1/doc/Makefile.in +++ /dev/null @@ -1,441 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = doc -DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = Doxyfile -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(htmldir)" -htmlDATA_INSTALL = $(INSTALL_DATA) -DATA = $(html_DATA) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ - -# 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 -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -EXTRA_DIST = $(doxygen_input) $(static_pages) -doxygen_input = cookbook.dox other_documentation.dox header.html footer.html Money.dox -static_pages = FAQ -@DOC_TRUE@html_DATA = $(static_pages) html/index.html -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu doc/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-htmlDATA: $(html_DATA) - @$(NORMAL_INSTALL) - test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)" - @list='$(html_DATA)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - 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=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(htmldir)/$$f'"; \ - rm -f "$(DESTDIR)$(htmldir)/$$f"; \ - done -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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: - for dir in "$(DESTDIR)$(htmldir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-htmlDATA - @$(NORMAL_INSTALL) - $(MAKE) $(AM_MAKEFLAGS) install-data-hook - -install-dvi: install-dvi-am - -install-exec-am: - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-htmlDATA uninstall-local - -.MAKE: install-am install-data-am install-strip - -.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 html html-am info info-am \ - install install-am install-data install-data-am \ - install-data-hook install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-htmlDATA \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am 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-local - - -@DOC_TRUE@install-data-hook: -@DOC_TRUE@ cp -pR 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/contrib/cppunit-1.12.1/doc/Money.dox b/contrib/cppunit-1.12.1/doc/Money.dox deleted file mode 100644 index d35e8e8f2..000000000 --- a/contrib/cppunit-1.12.1/doc/Money.dox +++ /dev/null @@ -1,558 +0,0 @@ -/*! \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 libraries -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. - -configure.in -\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 - -Makefile.am -\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) -ldl\endverbatim - - - - - - - - -\section sec_running_test Running our tests - -We have a main that doesn't do anything. Let's start by adding the mechanics -to run our tests (remember, test before you code ;-) ). For this example, -we will use a TextTestRunner with the CompilerOutputter for post-build -testing: - -MoneyApp.cpp -\code -#include "stdafx.h" -#include -#include -#include - - -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: \$(TargetPath) - -\$(TargetPath) 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. Notice 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: - -MoneyTest.h: -\code -#ifndef MONEYTEST_H -#define MONEYTEST_H - -#include - -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. - -MoneyTest.cpp -\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 like. Let's start implementing... - -Money.h -\code -#ifndef MONEY_H -#define MONEY_H - -#include - -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; - } - -private: - double m_amount; - std::string m_currency; -}; - -#endif\endcode - -Include Money.h 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 find out it is the former. -Let's fix that: - -Money.h -\code - Money( double amount, std::string currency ) - : m_amount( amount ) - , m_currency( currency ) - { - }\endcode - -Compile. Our test finally pass! -Let's add some functionnality 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: - -MoneyTest.h -\code - CPPUNIT_TEST_SUITE( MoneyTest ); - CPPUNIT_TEST( testConstructor ); - CPPUNIT_TEST( testEqual ); - CPPUNIT_TEST_SUITE_END(); -public: - ... - void testEqual(); -\endcode - -MoneyTest.cpp -\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: - -Money.h -\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. Finally got it working! - - - -\subsection sec_opadd Adding moneys - - Let's add our test 'testAdd' to MoneyTest. You know the routine... - -MoneyTest.cpp -\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( expectedMoney == money ); // add works - CPPUNIT_ASSERT( &money == &(money += money12FF) ); // add 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: - -Money.h -\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: - -MoneyTest.h -\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 end 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: - -MoneyTest.cpp -\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: - -Money.h -\code -#include -#include - -class IncompatibleMoneyError : public std::runtime_error -{ -public: - IncompatibleMoneyError() : runtime_error( "Incompatible moneys" ) - { - } -}; -\endcode - - Compile. As expected testAddThrow() fail... Let's fix that: - -Money.h -\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 passes! - - TODO: -- How to use CPPUNIT_ASSERT_EQUALS with Money -- Copy constructor/Assignment 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 ;-) - - - -*/ diff --git a/contrib/cppunit-1.12.1/doc/cookbook.dox b/contrib/cppunit-1.12.1/doc/cookbook.dox deleted file mode 100644 index ace3eccbe..000000000 --- a/contrib/cppunit-1.12.1/doc/cookbook.dox +++ /dev/null @@ -1,523 +0,0 @@ -/*! \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 operator ==, 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 operator ==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 and 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 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( - "testEquality", - &ComplexNumberTest::testEquality ) ); -suite.addTest( new CppUnit::TestCaller( - "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 suite 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::TestSuite *suite() - { - CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite( "ComplexNumberTest" ); - suiteOfTests->addTest( new CppUnit::TestCaller( - "testEquality", - &ComplexNumberTest::testEquality ) ); - suiteOfTests->addTest( new CppUnit::TestCaller( - "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 -#include "ExampleTestCase.h" -#include "ComplexNumberTest.h" -\endcode - -And add a call to -\link ::CppUnit::TextUi::TestRunner::addTest addTest(CppUnit::Test *) \endlink -in the main() 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 failures and errors. 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 suite() -method is a repetitive and error prone task. A \ref WritingTestFixture set of -macros have been created to automatically implements the -static suite() method. - -The following code is a rewrite of ComplexNumberTest using those macros: - -\code -#include - -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 suite() 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_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 -#include - -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 ®istry = 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 -#include - -int main( int argc, char **argv) -{ - CppUnit::TextUi::TestRunner runner; - CppUnit::TestFactoryRegistry ®istry = 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 Project Settings/Post-Build step, -by adding the following command: "$(TargetPath)". It is expanded to -the application executable path. Look up the project -examples/cppunittest/CppUnitTestMain.dsp which -use that technic. - - - -Original version by Michael Feathers. -Doxygen conversion and update by Baptiste Lepilleur. -*/ diff --git a/contrib/cppunit-1.12.1/doc/footer.html b/contrib/cppunit-1.12.1/doc/footer.html deleted file mode 100644 index 448359e1c..000000000 --- a/contrib/cppunit-1.12.1/doc/footer.html +++ /dev/null @@ -1,23 +0,0 @@ -
    - - - - - - - -
    - - SourceForge Logo - - hosts this site. - - - Send comments to:
    - CppUnit Developers -
    - - - diff --git a/contrib/cppunit-1.12.1/doc/header.html b/contrib/cppunit-1.12.1/doc/header.html deleted file mode 100644 index 01cf93229..000000000 --- a/contrib/cppunit-1.12.1/doc/header.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -CppUnit - The Unit Testing Library - - - - - - - - - - - - -
    - - CppUnit project page - - - FAQ - - CppUnit home page -
    - -
    diff --git a/contrib/cppunit-1.12.1/doc/other_documentation.dox b/contrib/cppunit-1.12.1/doc/other_documentation.dox deleted file mode 100644 index df244c76c..000000000 --- a/contrib/cppunit-1.12.1/doc/other_documentation.dox +++ /dev/null @@ -1,147 +0,0 @@ -/** - \mainpage - - \section _history History - The first port of JUnit to C++ was done - by Michael Feathers. His versions - can be found on the - - XProgramming software page. 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. Modules 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 - - the WikiWiki Pages on CppUnit. 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 - - Lesser General Public License. - - \author Eric Sommerlade (sommerlade@gmx.net) - \author Michael Feathers (mfeathers@objectmentor.com) - \author Jerome Lacoste (lacostej@altern.org) - \author Baptiste Lepilleur - \author Bastiaan Bakker - \author Steve Robbins - */ - - - -/*! \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_PLUGIN_IMPLEMENT(); - * \endcode - * - * The interface CppUnitTestPlugIn is automatically implemented by the previous - * macro. You can define your own 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_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/contrib/cppunit-1.12.1/include/Makefile.am b/contrib/cppunit-1.12.1/include/Makefile.am deleted file mode 100644 index 872ec7063..000000000 --- a/contrib/cppunit-1.12.1/include/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -SUBDIRS = cppunit - -# already handled by toplevel dist-hook. -# DIST_SUBDIRS = msvc6 diff --git a/contrib/cppunit-1.12.1/include/Makefile.in b/contrib/cppunit-1.12.1/include/Makefile.in deleted file mode 100644 index a89d91416..000000000 --- a/contrib/cppunit-1.12.1/include/Makefile.in +++ /dev/null @@ -1,514 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = include -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = cppunit -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu include/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# 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): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - 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) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - 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) \ - || eval $$failcom; \ - 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 - -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; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -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; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { 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 - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - 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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-exec-am: - -install-html: install-html-recursive - -install-info: install-info-recursive - -install-man: - -install-pdf: install-pdf-recursive - -install-ps: install-ps-recursive - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -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: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ - install-strip - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am - - -# 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/contrib/cppunit-1.12.1/include/cppunit/AdditionalMessage.h b/contrib/cppunit-1.12.1/include/cppunit/AdditionalMessage.h deleted file mode 100644 index 917d75414..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/AdditionalMessage.h +++ /dev/null @@ -1,76 +0,0 @@ -#ifndef CPPUNIT_ADDITIONALMESSAGE_H -#define CPPUNIT_ADDITIONALMESSAGE_H - -#include - - -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/contrib/cppunit-1.12.1/include/cppunit/Asserter.h b/contrib/cppunit-1.12.1/include/cppunit/Asserter.h deleted file mode 100644 index 94dadaad7..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/Asserter.h +++ /dev/null @@ -1,143 +0,0 @@ -#ifndef CPPUNIT_ASSERTER_H -#define CPPUNIT_ASSERTER_H - -#include -#include -#include - -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 - * #include - * - * 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/contrib/cppunit-1.12.1/include/cppunit/BriefTestProgressListener.h b/contrib/cppunit-1.12.1/include/cppunit/BriefTestProgressListener.h deleted file mode 100644 index 137ca44b3..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/BriefTestProgressListener.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef CPPUNIT_BRIEFTESTPROGRESSLISTENER_H -#define CPPUNIT_BRIEFTESTPROGRESSLISTENER_H - -#include - - -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 © ); - - /// Prevents the use of the copy operator. - void operator =( const BriefTestProgressListener © ); - -private: - bool m_lastTestFailed; -}; - - -CPPUNIT_NS_END - -#endif // CPPUNIT_BRIEFTESTPROGRESSLISTENER_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/CompilerOutputter.h b/contrib/cppunit-1.12.1/include/cppunit/CompilerOutputter.h deleted file mode 100644 index 885fe6526..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/CompilerOutputter.h +++ /dev/null @@ -1,146 +0,0 @@ -#ifndef CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H -#define CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H - -#include -#include -#include - -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, - 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 supported (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, - 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 © ); - - /// Prevents the use of the copy operator. - void operator =( const CompilerOutputter © ); - - virtual bool processLocationFormatCommand( char command, - const SourceLine &sourceLine ); - - virtual std::string extractBaseName( const std::string &fileName ) const; - -private: - TestResultCollector *m_result; - OStream &m_stream; - std::string m_locationFormat; - int m_wrapColumn; -}; - - -CPPUNIT_NS_END - - -#endif // CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/Exception.h b/contrib/cppunit-1.12.1/include/cppunit/Exception.h deleted file mode 100644 index bf5fcacf6..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/Exception.h +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef CPPUNIT_EXCEPTION_H -#define CPPUNIT_EXCEPTION_H - -#include -#include -#include -#include - - -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/contrib/cppunit-1.12.1/include/cppunit/Makefile.am b/contrib/cppunit-1.12.1/include/cppunit/Makefile.am deleted file mode 100644 index c743a67c5..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/Makefile.am +++ /dev/null @@ -1,42 +0,0 @@ -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/contrib/cppunit-1.12.1/include/cppunit/Makefile.in b/contrib/cppunit-1.12.1/include/cppunit/Makefile.in deleted file mode 100644 index 4594fa045..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/Makefile.in +++ /dev/null @@ -1,587 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = include/cppunit -DIST_COMMON = $(libcppunitinclude_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libcppunitincludedir)" -libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(libcppunitinclude_HEADERS) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -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 - -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/cppunit/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu include/cppunit/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(libcppunitincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libcppunitincludedir)" - @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - 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=$(am__strip_dir) \ - 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): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - 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) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - 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) \ - || eval $$failcom; \ - 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 - -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; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -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; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { 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 - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - 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: - for dir in "$(DESTDIR)$(libcppunitincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -info: info-recursive - -info-am: - -install-data-am: install-libcppunitincludeHEADERS - -install-dvi: install-dvi-recursive - -install-exec-am: - -install-html: install-html-recursive - -install-info: install-info-recursive - -install-man: - -install-pdf: install-pdf-recursive - -install-ps: install-ps-recursive - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -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-libcppunitincludeHEADERS - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ - install-strip - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive dist-hook distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libcppunitincludeHEADERS install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am tags tags-recursive uninstall uninstall-am \ - uninstall-libcppunitincludeHEADERS - - -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/contrib/cppunit-1.12.1/include/cppunit/Message.h b/contrib/cppunit-1.12.1/include/cppunit/Message.h deleted file mode 100644 index 1ae51cc2b..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/Message.h +++ /dev/null @@ -1,156 +0,0 @@ -#ifndef CPPUNIT_MESSAGE_H -#define CPPUNIT_MESSAGE_H - -#include - -#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 -#include - - -CPPUNIT_NS_BEGIN - - -#if CPPUNIT_NEED_DLL_DECL -// template class CPPUNIT_API std::deque; -#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(); - - // Ensure thread-safe copy by detaching the string. - Message( const Message &other ); - - 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 ); - - Message &operator =( const Message &other ); - - /*! \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 Details; - Details m_details; -}; - - -CPPUNIT_NS_END - -#if CPPUNIT_NEED_DLL_DECL -#pragma warning( pop ) -#endif - - -#endif // CPPUNIT_MESSAGE_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/Outputter.h b/contrib/cppunit-1.12.1/include/cppunit/Outputter.h deleted file mode 100644 index f31d6815d..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/Outputter.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef CPPUNIT_OUTPUTTER_H -#define CPPUNIT_OUTPUTTER_H - -#include - - -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/contrib/cppunit-1.12.1/include/cppunit/Portability.h b/contrib/cppunit-1.12.1/include/cppunit/Portability.h deleted file mode 100644 index ddf031691..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/Portability.h +++ /dev/null @@ -1,177 +0,0 @@ -#ifndef CPPUNIT_PORTABILITY_H -#define CPPUNIT_PORTABILITY_H - -#if defined(_WIN32) && !defined(WIN32) -# define WIN32 1 -#endif - -/* include platform specific config */ -#if defined(__BORLANDC__) -# include -#elif defined (_MSC_VER) -# if _MSC_VER == 1200 && defined(_WIN32_WCE) //evc4 -# include -# else -# include -# endif -#else -# include -#endif - -// Version number of package -#ifndef CPPUNIT_VERSION -#define CPPUNIT_VERSION "1.12.0" -#endif - -#include // define CPPUNIT_API & CPPUNIT_NEED_DLL_DECL -#include - - -/* 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. - */ -#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) -#if defined(__GNUC__) && ( defined(__APPLE_CPP__) || defined(__APPLE_CC__) ) -// gcc/Xcode integration on Mac OS X -# define CPPUNIT_COMPILER_LOCATION_FORMAT "%p:%l: " -#else -# define CPPUNIT_COMPILER_LOCATION_FORMAT "%f:%l:" -#endif -#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( pointer ) - -# define CPPUNIT_STATIC_CAST( TargetType, pointer ) \ - static_cast( 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 - -#endif // CPPUNIT_PORTABILITY_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/Protector.h b/contrib/cppunit-1.12.1/include/cppunit/Protector.h deleted file mode 100644 index d14e75f64..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/Protector.h +++ /dev/null @@ -1,94 +0,0 @@ -#ifndef CPPUNIT_PROTECTOR_H -#define CPPUNIT_PROTECTOR_H - -#include - -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/contrib/cppunit-1.12.1/include/cppunit/SourceLine.h b/contrib/cppunit-1.12.1/include/cppunit/SourceLine.h deleted file mode 100644 index f7a85df7f..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/SourceLine.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef CPPUNIT_SOURCELINE_H -#define CPPUNIT_SOURCELINE_H - -#include -#include - -/*! \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(); - - // Ensure thread-safe copy by detaching the string buffer. - SourceLine( const SourceLine &other ); - - SourceLine( const std::string &fileName, - int lineNumber ); - - SourceLine &operator =( const SourceLine &other ); - - /// 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/contrib/cppunit-1.12.1/include/cppunit/SynchronizedObject.h b/contrib/cppunit-1.12.1/include/cppunit/SynchronizedObject.h deleted file mode 100644 index 0f7d094aa..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/SynchronizedObject.h +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef CPPUNIT_SYNCHRONIZEDOBJECT_H -#define CPPUNIT_SYNCHRONIZEDOBJECT_H - -#include - - -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 © ); - - /// Prevents the use of the copy operator. - void operator =( const SynchronizedObject © ); -}; - - -CPPUNIT_NS_END - -#endif // CPPUNIT_SYNCHRONIZEDOBJECT_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/Test.h b/contrib/cppunit-1.12.1/include/cppunit/Test.h deleted file mode 100644 index a56be0fbe..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/Test.h +++ /dev/null @@ -1,117 +0,0 @@ -#ifndef CPPUNIT_TEST_H -#define CPPUNIT_TEST_H - -#include -#include - -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/contrib/cppunit-1.12.1/include/cppunit/TestAssert.h b/contrib/cppunit-1.12.1/include/cppunit/TestAssert.h deleted file mode 100644 index f74797b9d..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TestAssert.h +++ /dev/null @@ -1,428 +0,0 @@ -#ifndef CPPUNIT_TESTASSERT_H -#define CPPUNIT_TESTASSERT_H - -#include -#include -#include -#include -#include -#include // For struct assertion_traits - - -CPPUNIT_NS_BEGIN - - -/*! \brief Traits used by CPPUNIT_ASSERT_EQUAL(). - * - * Here is an example of specialising these traits: - * - * \code - * template<> - * struct assertion_traits // 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 -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 Traits used by CPPUNIT_ASSERT_DOUBLES_EQUAL(). - * - * This specialisation from @c struct @c assertion_traits<> ensures that - * doubles are converted in full, instead of being rounded to the default - * 6 digits of precision. Use the system defined ISO C99 macro DBL_DIG - * within float.h is available to define the maximum precision, otherwise - * use the hard-coded maximum precision of 15. - */ -template <> -struct assertion_traits -{ - static bool equal( double x, double y ) - { - return x == y; - } - - static std::string toString( double x ) - { -#ifdef DBL_DIG - const int precision = DBL_DIG; -#else - const int precision = 15; -#endif // #ifdef DBL_DIG - char buffer[128]; -#ifdef __STDC_SECURE_LIB__ // Use secure version with visual studio 2005 to avoid warning. - sprintf_s(buffer, sizeof(buffer), "%.*g", precision, x); -#else - sprintf(buffer, "%.*g", precision, x); -#endif - return buffer; - } -}; - - -/*! \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 -void assertEquals( const T& expected, - const T& actual, - SourceLine sourceLine, - const std::string &message ) -{ - if ( !assertion_traits::equal(expected,actual) ) // lazy toString conversion... - { - Asserter::failNotEqual( assertion_traits::toString(expected), - assertion_traits::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(). - * \sa CPPUNIT_ASSERT_DOUBLES_EQUAL for detailed semantic of the assertion. - */ -void CPPUNIT_API assertDoubleEquals( double expected, - double actual, - double delta, - SourceLine sourceLine, - const std::string &message ); - - -/* 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), \ - CPPUNIT_NS::Message( "assertion failed", \ - "Expression: " \ - #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 message 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 double value comparisons. - * \ingroup Assertions - * - * The assertion pass if both expected and actual are finite and - * \c fabs( \c expected - \c actual ) <= \c delta. - * If either \c expected or actual are infinite (+/- inf), the - * assertion pass if \c expected == \c actual. - * If either \c expected or \c actual is a NaN (not a number), then - * the assertion fails. - */ -#define CPPUNIT_ASSERT_DOUBLES_EQUAL(expected,actual,delta) \ - ( CPPUNIT_NS::assertDoubleEquals( (expected), \ - (actual), \ - (delta), \ - CPPUNIT_SOURCELINE(), \ - "" ) ) - - -/*! \brief Macro for primitive double value comparisons, setting a - * user-supplied message in case of failure. - * \ingroup Assertions - * \sa CPPUNIT_ASSERT_DOUBLES_EQUAL for detailed semantic of the assertion. - */ -#define CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(message,expected,actual,delta) \ - ( CPPUNIT_NS::assertDoubleEquals( (expected), \ - (actual), \ - (delta), \ - CPPUNIT_SOURCELINE(), \ - (message) ) ) - - -/** Asserts that the given expression throws an exception of the specified type. - * \ingroup Assertions - * Example of usage: - * \code - * std::vector v; - * CPPUNIT_ASSERT_THROW( v.at( 50 ), std::out_of_range ); - * \endcode - */ -# define CPPUNIT_ASSERT_THROW( expression, ExceptionType ) \ - CPPUNIT_ASSERT_THROW_MESSAGE( CPPUNIT_NS::AdditionalMessage(), \ - expression, \ - ExceptionType ) - - -// 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 - -// implementation detail -#define CPPUNIT_GET_PARAMETER_STRING( parameter ) #parameter - -/** Asserts that the given expression throws an exception of the specified type, - * setting a user supplied message in case of failure. - * \ingroup Assertions - * Example of usage: - * \code - * std::vector v; - * CPPUNIT_ASSERT_THROW_MESSAGE( "- std::vector v;", v.at( 50 ), std::out_of_range ); - * \endcode - */ -# define CPPUNIT_ASSERT_THROW_MESSAGE( message, expression, ExceptionType ) \ - do { \ - bool cpputCorrectExceptionThrown_ = false; \ - CPPUNIT_NS::Message cpputMsg_( "expected exception not thrown" ); \ - cpputMsg_.addDetail( message ); \ - cpputMsg_.addDetail( "Expected: " \ - CPPUNIT_GET_PARAMETER_STRING( ExceptionType ) ); \ - \ - try { \ - expression; \ - } catch ( const ExceptionType & ) { \ - cpputCorrectExceptionThrown_ = true; \ - } catch ( const std::exception &e) { \ - cpputMsg_.addDetail( "Actual : " + \ - CPPUNIT_EXTRACT_EXCEPTION_TYPE_( e, \ - "std::exception or derived") ); \ - cpputMsg_.addDetail( std::string("What() : ") + e.what() ); \ - } catch ( ... ) { \ - cpputMsg_.addDetail( "Actual : unknown."); \ - } \ - \ - if ( cpputCorrectExceptionThrown_ ) \ - break; \ - \ - CPPUNIT_NS::Asserter::fail( cpputMsg_, \ - CPPUNIT_SOURCELINE() ); \ - } while ( false ) - - -/** Asserts that the given expression does not throw any exceptions. - * \ingroup Assertions - * Example of usage: - * \code - * std::vector v; - * v.push_back( 10 ); - * CPPUNIT_ASSERT_NO_THROW( v.at( 0 ) ); - * \endcode - */ -# define CPPUNIT_ASSERT_NO_THROW( expression ) \ - CPPUNIT_ASSERT_NO_THROW_MESSAGE( CPPUNIT_NS::AdditionalMessage(), \ - expression ) - - -/** Asserts that the given expression does not throw any exceptions, - * setting a user supplied message in case of failure. - * \ingroup Assertions - * Example of usage: - * \code - * std::vector v; - * v.push_back( 10 ); - * CPPUNIT_ASSERT_NO_THROW( "std::vector v;", v.at( 0 ) ); - * \endcode - */ -# define CPPUNIT_ASSERT_NO_THROW_MESSAGE( message, expression ) \ - do { \ - CPPUNIT_NS::Message cpputMsg_( "unexpected exception caught" ); \ - cpputMsg_.addDetail( message ); \ - \ - try { \ - expression; \ - } catch ( const std::exception &e ) { \ - cpputMsg_.addDetail( "Caught: " + \ - CPPUNIT_EXTRACT_EXCEPTION_TYPE_( e, \ - "std::exception or derived" ) ); \ - cpputMsg_.addDetail( std::string("What(): ") + e.what() ); \ - CPPUNIT_NS::Asserter::fail( cpputMsg_, \ - CPPUNIT_SOURCELINE() ); \ - } catch ( ... ) { \ - cpputMsg_.addDetail( "Caught: unknown." ); \ - CPPUNIT_NS::Asserter::fail( cpputMsg_, \ - CPPUNIT_SOURCELINE() ); \ - } \ - } while ( false ) - - -/** 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 fail, with a user-supplied message in - * case of error. - * \ingroup Assertions - * Use to test assertions. - * Example of usage: - * \code - * CPPUNIT_ASSERT_ASSERTION_FAIL_MESSAGE( "1 == 2", CPPUNIT_ASSERT( 1 == 2 ) ); - * \endcode - */ -# define CPPUNIT_ASSERT_ASSERTION_FAIL_MESSAGE( message, assertion ) \ - CPPUNIT_ASSERT_THROW_MESSAGE( message, 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 ) - - -/** Asserts that an assertion pass, with a user-supplied message in - * case of failure. - * \ingroup Assertions - * Use to test assertions. - * Example of usage: - * \code - * CPPUNIT_ASSERT_ASSERTION_PASS_MESSAGE( "1 != 1", CPPUNIT_ASSERT( 1 == 1 ) ); - * \endcode - */ -# define CPPUNIT_ASSERT_ASSERTION_PASS_MESSAGE( message, assertion ) \ - CPPUNIT_ASSERT_NO_THROW_MESSAGE( message, 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/contrib/cppunit-1.12.1/include/cppunit/TestCaller.h b/contrib/cppunit-1.12.1/include/cppunit/TestCaller.h deleted file mode 100644 index dc4d82ed9..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TestCaller.h +++ /dev/null @@ -1,204 +0,0 @@ -#ifndef CPPUNIT_TESTCALLER_H // -*- C++ -*- -#define CPPUNIT_TESTCALLER_H - -#include -#include - - -#if CPPUNIT_USE_TYPEINFO_NAME -# include -#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 -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 -{ - 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( "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 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(); - } - - 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/contrib/cppunit-1.12.1/include/cppunit/TestCase.h b/contrib/cppunit-1.12.1/include/cppunit/TestCase.h deleted file mode 100644 index d4b7a46a8..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TestCase.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef CPPUNIT_TESTCASE_H -#define CPPUNIT_TESTCASE_H - -#include -#include -#include -#include -#include - - -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/contrib/cppunit-1.12.1/include/cppunit/TestComposite.h b/contrib/cppunit-1.12.1/include/cppunit/TestComposite.h deleted file mode 100644 index 0ded95fcd..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TestComposite.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef CPPUNIT_TESTCOMPSITE_H // -*- C++ -*- -#define CPPUNIT_TESTCOMPSITE_H - -#include -#include - -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/contrib/cppunit-1.12.1/include/cppunit/TestFailure.h b/contrib/cppunit-1.12.1/include/cppunit/TestFailure.h deleted file mode 100644 index 64199790d..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TestFailure.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef CPPUNIT_TESTFAILURE_H // -*- C++ -*- -#define CPPUNIT_TESTFAILURE_H - -#include -#include - -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/contrib/cppunit-1.12.1/include/cppunit/TestFixture.h b/contrib/cppunit-1.12.1/include/cppunit/TestFixture.h deleted file mode 100644 index 1223adbc9..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TestFixture.h +++ /dev/null @@ -1,99 +0,0 @@ -#ifndef CPPUNIT_TESTFIXTURE_H // -*- C++ -*- -#define CPPUNIT_TESTFIXTURE_H - -#include - -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( "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( - * "testAdd", &MathTest::testAdd)); - * suiteOfTests->addTest(new CppUnit::TestCaller( - * "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/contrib/cppunit-1.12.1/include/cppunit/TestLeaf.h b/contrib/cppunit-1.12.1/include/cppunit/TestLeaf.h deleted file mode 100644 index c83b07597..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TestLeaf.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef CPPUNIT_TESTLEAF_H -#define CPPUNIT_TESTLEAF_H - -#include - - -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/contrib/cppunit-1.12.1/include/cppunit/TestListener.h b/contrib/cppunit-1.12.1/include/cppunit/TestListener.h deleted file mode 100644 index 330262d33..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TestListener.h +++ /dev/null @@ -1,148 +0,0 @@ -#ifndef CPPUNIT_TESTLISTENER_H // -*- C++ -*- -#define CPPUNIT_TESTLISTENER_H - -#include - - -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 - * #include - * #include // 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 m_suiteFailure; - * CppUnit::TestPath m_currentPath; - * std::map m_suiteStatus; - * std::map 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/contrib/cppunit-1.12.1/include/cppunit/TestPath.h b/contrib/cppunit-1.12.1/include/cppunit/TestPath.h deleted file mode 100644 index c3c851cc5..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TestPath.h +++ /dev/null @@ -1,211 +0,0 @@ -#ifndef CPPUNIT_TESTPATH_H -#define CPPUNIT_TESTPATH_H - -#include - -#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 -#include - -CPPUNIT_NS_BEGIN - - -class Test; - -#if CPPUNIT_NEED_DLL_DECL -// template class CPPUNIT_API std::deque; -#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 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 Tests; - Tests m_tests; - -}; - - -CPPUNIT_NS_END - -#endif // CPPUNIT_TESTPATH_H - diff --git a/contrib/cppunit-1.12.1/include/cppunit/TestResult.h b/contrib/cppunit-1.12.1/include/cppunit/TestResult.h deleted file mode 100644 index e7e1050a0..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TestResult.h +++ /dev/null @@ -1,156 +0,0 @@ -#ifndef CPPUNIT_TESTRESULT_H -#define CPPUNIT_TESTRESULT_H - -#include - -#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 -#include -#include - -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; -#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 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/contrib/cppunit-1.12.1/include/cppunit/TestResultCollector.h b/contrib/cppunit-1.12.1/include/cppunit/TestResultCollector.h deleted file mode 100644 index 01b0a547a..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TestResultCollector.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef CPPUNIT_TESTRESULTCOLLECTOR_H -#define CPPUNIT_TESTRESULTCOLLECTOR_H - -#include - -#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 -#include - - -CPPUNIT_NS_BEGIN - -#if CPPUNIT_NEED_DLL_DECL -// template class CPPUNIT_API std::deque; -// template class CPPUNIT_API std::deque; -#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 TestFailures; - typedef CppUnitDeque 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: - void freeFailures(); - - Tests m_tests; - TestFailures m_failures; - int m_testErrors; - -private: - /// Prevents the use of the copy constructor. - TestResultCollector( const TestResultCollector © ); - - /// Prevents the use of the copy operator. - void operator =( const TestResultCollector © ); -}; - - - -CPPUNIT_NS_END - -#if CPPUNIT_NEED_DLL_DECL -#pragma warning( pop ) -#endif - - -#endif // CPPUNIT_TESTRESULTCOLLECTOR_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/TestRunner.h b/contrib/cppunit-1.12.1/include/cppunit/TestRunner.h deleted file mode 100644 index 930370ad9..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TestRunner.h +++ /dev/null @@ -1,135 +0,0 @@ -#ifndef CPPUNIT_TESTRUNNER_H -#define CPPUNIT_TESTRUNNER_H - -#include -#include - -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 - * #include - * #include - * #include - * #include - * #include - * - * - * 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 © ); - - /// Prevents the use of the copy operator. - void operator =( const TestRunner © ); - -private: -}; - - -CPPUNIT_NS_END - -#endif // CPPUNIT_TESTRUNNER_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/TestSuccessListener.h b/contrib/cppunit-1.12.1/include/cppunit/TestSuccessListener.h deleted file mode 100644 index 60c5ff500..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TestSuccessListener.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef CPPUNIT_TESTSUCCESSLISTENER_H -#define CPPUNIT_TESTSUCCESSLISTENER_H - -#include -#include - - -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/contrib/cppunit-1.12.1/include/cppunit/TestSuite.h b/contrib/cppunit-1.12.1/include/cppunit/TestSuite.h deleted file mode 100644 index 2b9cd8d49..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TestSuite.h +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef CPPUNIT_TESTSUITE_H // -*- C++ -*- -#define CPPUNIT_TESTSUITE_H - -#include - -#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 -#include - -CPPUNIT_NS_BEGIN - - -#if CPPUNIT_NEED_DLL_DECL -// template class CPPUNIT_API std::vector; -#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 ( - * "testAdd", testAdd)); - * suite->addTest(new CppUnit::TestCaller ( - * "testDivideByZero", testDivideByZero)); - * \endcode - * Note that \link TestSuite TestSuites \endlink 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 &getTests() const; - - /*! Destroys all the tests of the suite. - */ - virtual void deleteContents(); - - int getChildTestCount() const; - - Test *doGetChildTestAt( int index ) const; - -private: - CppUnitVector m_tests; -}; - - -CPPUNIT_NS_END - -#if CPPUNIT_NEED_DLL_DECL -#pragma warning( pop ) -#endif - -#endif // CPPUNIT_TESTSUITE_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/TextOutputter.h b/contrib/cppunit-1.12.1/include/cppunit/TextOutputter.h deleted file mode 100644 index 6bd9ceaae..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TextOutputter.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef CPPUNIT_TEXTOUTPUTTER_H -#define CPPUNIT_TEXTOUTPUTTER_H - -#include -#include -#include - -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, - 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; - OStream &m_stream; - -private: - /// Prevents the use of the copy constructor. - TextOutputter( const TextOutputter © ); - - /// Prevents the use of the copy operator. - void operator =( const TextOutputter © ); -}; - - - -CPPUNIT_NS_END - -#endif // CPPUNIT_TEXTOUTPUTTER_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/TextTestProgressListener.h b/contrib/cppunit-1.12.1/include/cppunit/TextTestProgressListener.h deleted file mode 100644 index 7521c40bc..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TextTestProgressListener.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef CPPUNIT_TEXTTESTPROGRESSLISTENER_H -#define CPPUNIT_TEXTTESTPROGRESSLISTENER_H - -#include - - -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 © ); - - /// Prevents the use of the copy operator. - void operator =( const TextTestProgressListener © ); - -private: -}; - - -CPPUNIT_NS_END - -#endif // CPPUNIT_TEXTTESTPROGRESSLISTENER_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/TextTestResult.h b/contrib/cppunit-1.12.1/include/cppunit/TextTestResult.h deleted file mode 100644 index e7b1fa3ea..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TextTestResult.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef CPPUNIT_TEXTTESTRESULT_H -#define CPPUNIT_TEXTTESTRESULT_H - -#include -#include -#include - -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( OStream &stream ); -}; - -/** insertion operator for easy output */ -CPPUNIT_API OStream &operator <<( OStream &stream, - TextTestResult &result ); - -CPPUNIT_NS_END - -#endif // CPPUNIT_TEXTTESTRESULT_H - - diff --git a/contrib/cppunit-1.12.1/include/cppunit/TextTestRunner.h b/contrib/cppunit-1.12.1/include/cppunit/TextTestRunner.h deleted file mode 100644 index 23890e086..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/TextTestRunner.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef CPPUNIT_TEXTTESTRUNNER_H -#define CPPUNIT_TEXTTESTRUNNER_H - -#include - -#endif // CPPUNIT_TEXTTESTRUNNER_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/XmlOutputter.h b/contrib/cppunit-1.12.1/include/cppunit/XmlOutputter.h deleted file mode 100644 index 0de9676d8..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/XmlOutputter.h +++ /dev/null @@ -1,167 +0,0 @@ -#ifndef CPPUNIT_XMLTESTRESULTOUTPUTTER_H -#define CPPUNIT_XMLTESTRESULTOUTPUTTER_H - -#include - -#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 -#include -#include -#include - - -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, - 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 ); - - /*! \brief set the output document as standalone or not. - * - * For the output document, specify wether it's a standalone XML - * document, or not. - * - * \param standalone if true, the output will be specified as standalone. - * if false, it will be not. - */ - virtual void setStandalone( bool standalone ); - - typedef CppUnitMap > 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 Hooks; - - TestResultCollector *m_result; - 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 © ); - - /// Prevents the use of the copy operator. - void operator =( const XmlOutputter © ); - -private: -}; - - -CPPUNIT_NS_END - -#if CPPUNIT_NEED_DLL_DECL -#pragma warning( pop ) -#endif - - -#endif // CPPUNIT_XMLTESTRESULTOUTPUTTER_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/XmlOutputterHook.h b/contrib/cppunit-1.12.1/include/cppunit/XmlOutputterHook.h deleted file mode 100644 index 5ded3b1ee..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/XmlOutputterHook.h +++ /dev/null @@ -1,163 +0,0 @@ -#ifndef CPPUNIT_XMLOUTPUTTERHOOK_H -#define CPPUNIT_XMLOUTPUTTERHOOK_H - -#include - - -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 - * #include - * #include - * - * ... - * - * 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 - * - * - * meAuthor - * myProject - * 1028143912 - * - * - * ... - * \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 \ 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 \ 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 \ element. - */ - virtual void statisticsAdded( XmlDocument *document, - XmlElement *statisticsElement ); - - virtual ~XmlOutputterHook() {} -}; - - -CPPUNIT_NS_END - -#endif // CPPUNIT_XMLOUTPUTTERHOOK_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/config/CppUnitApi.h b/contrib/cppunit-1.12.1/include/cppunit/config/CppUnitApi.h deleted file mode 100644 index a068bbd54..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/config/CppUnitApi.h +++ /dev/null @@ -1,33 +0,0 @@ -#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/contrib/cppunit-1.12.1/include/cppunit/config/Makefile.am b/contrib/cppunit-1.12.1/include/cppunit/config/Makefile.am deleted file mode 100644 index 2f0b1f806..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/config/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -libcppunitincludedir = $(includedir)/cppunit/config - -libcppunitinclude_HEADERS = \ - config-bcb5.h \ - config-evc4.h \ - config-mac.h \ - config-msvc6.h \ - SelectDllLoader.h \ - CppUnitApi.h \ - SourcePrefix.h diff --git a/contrib/cppunit-1.12.1/include/cppunit/config/Makefile.in b/contrib/cppunit-1.12.1/include/cppunit/config/Makefile.in deleted file mode 100644 index 4c21edb95..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/config/Makefile.in +++ /dev/null @@ -1,438 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = include/cppunit/config -DIST_COMMON = $(libcppunitinclude_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libcppunitincludedir)" -libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(libcppunitinclude_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -libcppunitincludedir = $(includedir)/cppunit/config -libcppunitinclude_HEADERS = \ - config-bcb5.h \ - config-evc4.h \ - config-mac.h \ - config-msvc6.h \ - SelectDllLoader.h \ - CppUnitApi.h \ - SourcePrefix.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/cppunit/config/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu include/cppunit/config/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(libcppunitincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libcppunitincludedir)" - @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - 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=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libcppunitincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(libcppunitincludedir)/$$f"; \ - done - -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; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { 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 - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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: - for dir in "$(DESTDIR)$(libcppunitincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-libcppunitincludeHEADERS - -install-dvi: install-dvi-am - -install-exec-am: - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -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-libcppunitincludeHEADERS - -.MAKE: install-am install-strip - -.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 html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libcppunitincludeHEADERS install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - 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-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/contrib/cppunit-1.12.1/include/cppunit/config/SelectDllLoader.h b/contrib/cppunit-1.12.1/include/cppunit/config/SelectDllLoader.h deleted file mode 100644 index dc1c01155..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/config/SelectDllLoader.h +++ /dev/null @@ -1,76 +0,0 @@ -#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_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 -#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/contrib/cppunit-1.12.1/include/cppunit/config/SourcePrefix.h b/contrib/cppunit-1.12.1/include/cppunit/config/SourcePrefix.h deleted file mode 100644 index 2334601b5..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/config/SourcePrefix.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef CPPUNIT_CONFIG_H_INCLUDED -#define CPPUNIT_CONFIG_H_INCLUDED - -#include - -#ifdef _MSC_VER -#pragma warning(disable: 4018 4284 4146) -#if _MSC_VER >= 1400 -#pragma warning(disable: 4996) // sprintf is deprecated -#endif -#endif - - -#endif // CPPUNIT_CONFIG_H_INCLUDED diff --git a/contrib/cppunit-1.12.1/include/cppunit/config/config-bcb5.h b/contrib/cppunit-1.12.1/include/cppunit/config/config-bcb5.h deleted file mode 100644 index d49145206..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/config/config-bcb5.h +++ /dev/null @@ -1,47 +0,0 @@ -#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 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/contrib/cppunit-1.12.1/include/cppunit/config/config-evc4.h b/contrib/cppunit-1.12.1/include/cppunit/config/config-evc4.h deleted file mode 100644 index a79169812..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/config/config-evc4.h +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef _INCLUDE_CPPUNIT_CONFIG_EVC4_H -#define _INCLUDE_CPPUNIT_CONFIG_EVC4_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 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 0 -#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_NO_STREAM 1 -#define CPPUNIT_NO_ASSERT 1 - -#define CPPUNIT_HAVE_SSTREAM 0 - -/* 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 - -/* define to 1 if the compiler has _finite() */ -#ifndef CPPUNIT_HAVE__FINITE -#define CPPUNIT_HAVE__FINITE 1 -#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 -//#define CPPUNIT_NO_NAMESPACE 1 -*/ - - -/* _INCLUDE_CPPUNIT_CONFIG_EVC4_H */ -#endif diff --git a/contrib/cppunit-1.12.1/include/cppunit/config/config-mac.h b/contrib/cppunit-1.12.1/include/cppunit/config/config-mac.h deleted file mode 100644 index 4ace906cf..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/config/config-mac.h +++ /dev/null @@ -1,58 +0,0 @@ -#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 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 header file. */ -#ifdef CPPUNIT_HAVE_CMATH -#undef CPPUNIT_HAVE_CMATH -#endif - -/* Define if you have the 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 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/contrib/cppunit-1.12.1/include/cppunit/config/config-msvc6.h b/contrib/cppunit-1.12.1/include/cppunit/config/config-msvc6.h deleted file mode 100644 index d6881711a..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/config/config-msvc6.h +++ /dev/null @@ -1,83 +0,0 @@ -#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 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 -# ifdef _CPPRTTI // Defined by the compiler option /GR -# define CPPUNIT_HAVE_RTTI 1 -# else -# define CPPUNIT_HAVE_RTTI 0 -# endif -#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 - -// Define to 1 if the compiler support C++ style cast. -#define CPPUNIT_HAVE_CPP_CAST 1 - -/* define to 1 if the compiler has _finite() */ -#ifndef CPPUNIT_HAVE__FINITE -#define CPPUNIT_HAVE__FINITE 1 -#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 -//#define CPPUNIT_NO_NAMESPACE 1 -*/ - - -/* _INCLUDE_CPPUNIT_CONFIG_MSVC6_H */ -#endif diff --git a/contrib/cppunit-1.12.1/include/cppunit/extensions/AutoRegisterSuite.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/AutoRegisterSuite.h deleted file mode 100644 index e04adb5d9..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/AutoRegisterSuite.h +++ /dev/null @@ -1,83 +0,0 @@ -#ifndef CPPUNIT_EXTENSIONS_AUTOREGISTERSUITE_H -#define CPPUNIT_EXTENSIONS_AUTOREGISTERSUITE_H - -#include -#include -#include - -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 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 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/contrib/cppunit-1.12.1/include/cppunit/extensions/ExceptionTestCaseDecorator.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/ExceptionTestCaseDecorator.h deleted file mode 100644 index 9c816addb..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/ExceptionTestCaseDecorator.h +++ /dev/null @@ -1,104 +0,0 @@ -#ifndef CPPUNIT_EXTENSIONS_EXCEPTIONTESTCASEDECORATOR_H -#define CPPUNIT_EXTENSIONS_EXCEPTIONTESTCASEDECORATOR_H - -#include -#include -#include - -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 - * { - * 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 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/contrib/cppunit-1.12.1/include/cppunit/extensions/HelperMacros.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/HelperMacros.h deleted file mode 100644 index 12431e465..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/HelperMacros.h +++ /dev/null @@ -1,541 +0,0 @@ -// ////////////////////////////////////////////////////////////////////////// -// Header file HelperMacros.h -// (c)Copyright 2000, Baptiste Lepilleur. -// Created: 2001/04/15 -// ////////////////////////////////////////////////////////////////////////// -#ifndef CPPUNIT_EXTENSIONS_HELPERMACROS_H -#define CPPUNIT_EXTENSIONS_HELPERMACROS_H - -#include -#include -#include -#include -#include -#include -#include -#include - - -/*! \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 - * 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 - * 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 ); - * CPPUNIT_TEST_SUITE_REGISTRATION( StringTest ); - * \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 \ - 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 - * 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 suite( \ - new CPPUNIT_NS::TestSuite( namer.getFixtureName() )); \ - CPPUNIT_NS::ConcretTestFixtureFactory 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 - * 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 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( \ - * 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( \ - context.getTestNameFor( #testMethod), \ - &TestFixtureType::testMethod, \ - context.makeFixture() ) ) ) - -/*! \brief Add a test which fail if the specified exception is not caught. - * - * Example: - * \code - * #include - * #include - * 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 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 declared by CPPUNIT_TEST_SUITE(). - * - * Here is an example that add two custom tests: - * - * \code - * #include - * - * 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/contrib/cppunit-1.12.1/include/cppunit/extensions/Makefile.am b/contrib/cppunit-1.12.1/include/cppunit/extensions/Makefile.am deleted file mode 100644 index ff96de318..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -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/contrib/cppunit-1.12.1/include/cppunit/extensions/Makefile.in b/contrib/cppunit-1.12.1/include/cppunit/extensions/Makefile.in deleted file mode 100644 index c08890478..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/Makefile.in +++ /dev/null @@ -1,446 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = include/cppunit/extensions -DIST_COMMON = $(libcppunitinclude_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libcppunitincludedir)" -libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(libcppunitinclude_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -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 - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/cppunit/extensions/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu include/cppunit/extensions/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(libcppunitincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libcppunitincludedir)" - @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - 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=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libcppunitincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(libcppunitincludedir)/$$f"; \ - done - -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; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { 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 - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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: - for dir in "$(DESTDIR)$(libcppunitincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-libcppunitincludeHEADERS - -install-dvi: install-dvi-am - -install-exec-am: - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -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-libcppunitincludeHEADERS - -.MAKE: install-am install-strip - -.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 html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libcppunitincludeHEADERS install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - 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-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/contrib/cppunit-1.12.1/include/cppunit/extensions/Orthodox.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/Orthodox.h deleted file mode 100644 index 722125937..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/Orthodox.h +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef CPPUNIT_EXTENSIONS_ORTHODOX_H -#define CPPUNIT_EXTENSIONS_ORTHODOX_H - -#include - -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 > ()); - * 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 Orthodox : public TestCase -{ -public: - Orthodox () : TestCase ("Orthodox") {} - -protected: - ClassUnderTest call (ClassUnderTest object); - void runTest (); - - -}; - - -// Run an orthodoxy test -template void Orthodox::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 -ClassUnderTest Orthodox::call (ClassUnderTest object) -{ - return object; -} - - -CPPUNIT_NS_END - -#endif diff --git a/contrib/cppunit-1.12.1/include/cppunit/extensions/RepeatedTest.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/RepeatedTest.h deleted file mode 100644 index 390ce4807..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/RepeatedTest.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef CPPUNIT_EXTENSIONS_REPEATEDTEST_H -#define CPPUNIT_EXTENSIONS_REPEATEDTEST_H - -#include -#include - -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/contrib/cppunit-1.12.1/include/cppunit/extensions/TestCaseDecorator.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/TestCaseDecorator.h deleted file mode 100644 index 3a15ba974..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/TestCaseDecorator.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef CPPUNIT_EXTENSIONS_TESTCASEDECORATOR_H -#define CPPUNIT_EXTENSIONS_TESTCASEDECORATOR_H - -#include -#include - -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/contrib/cppunit-1.12.1/include/cppunit/extensions/TestDecorator.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/TestDecorator.h deleted file mode 100644 index 59d9a302e..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/TestDecorator.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef CPPUNIT_EXTENSIONS_TESTDECORATOR_H -#define CPPUNIT_EXTENSIONS_TESTDECORATOR_H - -#include -#include - -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/contrib/cppunit-1.12.1/include/cppunit/extensions/TestFactory.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/TestFactory.h deleted file mode 100644 index 214d35349..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/TestFactory.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef CPPUNIT_EXTENSIONS_TESTFACTORY_H -#define CPPUNIT_EXTENSIONS_TESTFACTORY_H - -#include - -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/contrib/cppunit-1.12.1/include/cppunit/extensions/TestFactoryRegistry.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/TestFactoryRegistry.h deleted file mode 100644 index fc8723e40..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/TestFactoryRegistry.h +++ /dev/null @@ -1,182 +0,0 @@ -#ifndef CPPUNIT_EXTENSIONS_TESTFACTORYREGISTRY_H -#define CPPUNIT_EXTENSIONS_TESTFACTORYREGISTRY_H - -#include - -#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 -#include -#include - -CPPUNIT_NS_BEGIN - - -class TestSuite; - -#if CPPUNIT_NEED_DLL_DECL -// template class CPPUNIT_API std::set; -#endif - - -/*! \brief Registry for TestFactory. - * \ingroup CreatingTestSuite - * - * Notes that the registry \b DON'T assumes lifetime control for any registered tests - * anymore. - * - * The default 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 ®istry = 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 ®istry = 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 © ); - void operator =( const TestFactoryRegistry © ); - -private: - typedef CppUnitSet > 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/contrib/cppunit-1.12.1/include/cppunit/extensions/TestFixtureFactory.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/TestFixtureFactory.h deleted file mode 100644 index 45354c62b..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/TestFixtureFactory.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef CPPUNIT_EXTENSIONS_TESTFIXTUREFACTORY_H -#define CPPUNIT_EXTENSIONS_TESTFIXTUREFACTORY_H - -#include - - -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; - - virtual ~TestFixtureFactory() {} -}; - - -/*! \brief Concret TestFixture factory (Implementation). - * - * Implementation detail. Use by HelperMacros to handle TestFixture hierarchy. - */ -template -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/contrib/cppunit-1.12.1/include/cppunit/extensions/TestNamer.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/TestNamer.h deleted file mode 100644 index 5a6471c0c..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/TestNamer.h +++ /dev/null @@ -1,89 +0,0 @@ -#ifndef CPPUNIT_EXTENSIONS_TESTNAMER_H -#define CPPUNIT_EXTENSIONS_TESTNAMER_H - -#include -#include - -#if CPPUNIT_HAVE_RTTI -# include -#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/contrib/cppunit-1.12.1/include/cppunit/extensions/TestSetUp.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/TestSetUp.h deleted file mode 100644 index f2128ecd7..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/TestSetUp.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef CPPUNIT_EXTENSIONS_TESTSETUP_H -#define CPPUNIT_EXTENSIONS_TESTSETUP_H - -#include - -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/contrib/cppunit-1.12.1/include/cppunit/extensions/TestSuiteBuilderContext.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/TestSuiteBuilderContext.h deleted file mode 100644 index db26926cd..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/TestSuiteBuilderContext.h +++ /dev/null @@ -1,131 +0,0 @@ -#ifndef CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H -#define CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H - -#include -#include -#include - -#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 ); - - virtual ~TestSuiteBuilderContextBase(); - - /*! \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; - - // Notes: we use a vector here instead of a map to work-around the - // shared std::map in dll bug in VC6. - // See http://www.dinkumware.com/vc_fixes.html for detail. - typedef std::pair Property; - typedef CppUnitVector Properties; - - TestSuite &m_suite; - const TestNamer &m_namer; - TestFixtureFactory &m_factory; - -private: - Properties m_properties; -}; - - -/*! \brief Type-sage context used when creating test suite in HelperMacros. - * - * \sa TestSuiteBuilderContextBase. - */ -template -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/contrib/cppunit-1.12.1/include/cppunit/extensions/TestSuiteFactory.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/TestSuiteFactory.h deleted file mode 100644 index 260b48315..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/TestSuiteFactory.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef CPPUNIT_EXTENSIONS_TESTSUITEFACTORY_H -#define CPPUNIT_EXTENSIONS_TESTSUITEFACTORY_H - -#include - -CPPUNIT_NS_BEGIN - - - class Test; - - /*! \brief TestFactory for TestFixture that implements a static suite() method. - * \see AutoRegisterSuite. - */ - template - class TestSuiteFactory : public TestFactory - { - public: - virtual Test *makeTest() - { - return TestCaseType::suite(); - } - }; - - -CPPUNIT_NS_END - -#endif // CPPUNIT_EXTENSIONS_TESTSUITEFACTORY_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/extensions/TypeInfoHelper.h b/contrib/cppunit-1.12.1/include/cppunit/extensions/TypeInfoHelper.h deleted file mode 100644 index c0ecdbc6e..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/extensions/TypeInfoHelper.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef CPPUNIT_TYPEINFOHELPER_H -#define CPPUNIT_TYPEINFOHELPER_H - -#include - -#if CPPUNIT_HAVE_RTTI - -#include -#include - -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/contrib/cppunit-1.12.1/include/cppunit/plugin/DynamicLibraryManager.h b/contrib/cppunit-1.12.1/include/cppunit/plugin/DynamicLibraryManager.h deleted file mode 100644 index d70ccde46..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/plugin/DynamicLibraryManager.h +++ /dev/null @@ -1,121 +0,0 @@ -#ifndef CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGER_H -#define CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGER_H - -#include -#include - -#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 © ); - - /// Prevents the use of the copy operator. - void operator =( const DynamicLibraryManager © ); - -private: - LibraryHandle m_libraryHandle; - std::string m_libraryName; -}; - - -CPPUNIT_NS_END - -#endif // !defined(CPPUNIT_NO_TESTPLUGIN) - -#endif // CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGER_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/plugin/DynamicLibraryManagerException.h b/contrib/cppunit-1.12.1/include/cppunit/plugin/DynamicLibraryManagerException.h deleted file mode 100644 index 11ebbd9da..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/plugin/DynamicLibraryManagerException.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGEREXCEPTION_H -#define CPPUNIT_PLUGIN_DYNAMICLIBRARYMANAGEREXCEPTION_H - -#include - -#if !defined(CPPUNIT_NO_TESTPLUGIN) -#include -#include - - -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/contrib/cppunit-1.12.1/include/cppunit/plugin/Makefile.am b/contrib/cppunit-1.12.1/include/cppunit/plugin/Makefile.am deleted file mode 100644 index 5221a6693..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/plugin/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -libcppunitincludedir = $(includedir)/cppunit/plugin - -libcppunitinclude_HEADERS = \ - DynamicLibraryManager.h \ - DynamicLibraryManagerException.h \ - TestPlugIn.h \ - TestPlugInDefaultImpl.h \ - PlugInManager.h \ - PlugInParameters.h diff --git a/contrib/cppunit-1.12.1/include/cppunit/plugin/Makefile.in b/contrib/cppunit-1.12.1/include/cppunit/plugin/Makefile.in deleted file mode 100644 index c97e6e4d9..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/plugin/Makefile.in +++ /dev/null @@ -1,437 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = include/cppunit/plugin -DIST_COMMON = $(libcppunitinclude_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libcppunitincludedir)" -libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(libcppunitinclude_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -libcppunitincludedir = $(includedir)/cppunit/plugin -libcppunitinclude_HEADERS = \ - DynamicLibraryManager.h \ - DynamicLibraryManagerException.h \ - TestPlugIn.h \ - TestPlugInDefaultImpl.h \ - PlugInManager.h \ - PlugInParameters.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/cppunit/plugin/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu include/cppunit/plugin/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(libcppunitincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libcppunitincludedir)" - @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - 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=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libcppunitincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(libcppunitincludedir)/$$f"; \ - done - -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; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { 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 - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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: - for dir in "$(DESTDIR)$(libcppunitincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-libcppunitincludeHEADERS - -install-dvi: install-dvi-am - -install-exec-am: - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -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-libcppunitincludeHEADERS - -.MAKE: install-am install-strip - -.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 html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libcppunitincludeHEADERS install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - 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-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/contrib/cppunit-1.12.1/include/cppunit/plugin/PlugInManager.h b/contrib/cppunit-1.12.1/include/cppunit/plugin/PlugInManager.h deleted file mode 100644 index 6ecedc89b..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/plugin/PlugInManager.h +++ /dev/null @@ -1,113 +0,0 @@ -#ifndef CPPUNIT_PLUGIN_PLUGINMANAGER_H -#define CPPUNIT_PLUGIN_PLUGINMANAGER_H - -#include - -#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 -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 DynamicLibraryManagerException is thrown if an error occurs during loading. - */ - void load( const std::string &libraryFileName, - const PlugInParameters ¶meters = 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 © ); - - /// Prevents the use of the copy operator. - void operator =( const PlugInManager © ); - -private: - typedef CppUnitDeque 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/contrib/cppunit-1.12.1/include/cppunit/plugin/PlugInParameters.h b/contrib/cppunit-1.12.1/include/cppunit/plugin/PlugInParameters.h deleted file mode 100644 index c67d0f1d2..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/plugin/PlugInParameters.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef CPPUNIT_PLUGIN_PARAMETERS -#define CPPUNIT_PLUGIN_PARAMETERS - -#include - -#if !defined(CPPUNIT_NO_TESTPLUGIN) - -#include -#include - -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/contrib/cppunit-1.12.1/include/cppunit/plugin/TestPlugIn.h b/contrib/cppunit-1.12.1/include/cppunit/plugin/TestPlugIn.h deleted file mode 100644 index 1c9b929a5..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/plugin/TestPlugIn.h +++ /dev/null @@ -1,200 +0,0 @@ -#ifndef CPPUNIT_PLUGIN_TESTPLUGIN -#define CPPUNIT_PLUGIN_TESTPLUGIN - -#include - -#if !defined(CPPUNIT_NO_TESTPLUGIN) - -#include - -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 ¶meters ) =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; - - virtual ~CppUnitTestPlugIn() {} -}; - - - -/*! \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); - * \endcode - */ -#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 - - -/*! \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 -#define BLENDFUNCTION void // for mingw & gcc -#include -#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/contrib/cppunit-1.12.1/include/cppunit/plugin/TestPlugInDefaultImpl.h b/contrib/cppunit-1.12.1/include/cppunit/plugin/TestPlugInDefaultImpl.h deleted file mode 100644 index fa4b8078f..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/plugin/TestPlugInDefaultImpl.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef CPPUNIT_PLUGIN_TESTPLUGINADAPTER -#define CPPUNIT_PLUGIN_TESTPLUGINADAPTER - -#include - -#if !defined(CPPUNIT_NO_TESTPLUGIN) - -#include - -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 ¶meters ); - - 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/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitDeque.h b/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitDeque.h deleted file mode 100644 index bbab21f56..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitDeque.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef CPPUNIT_PORTABILITY_CPPUNITDEQUE_H -#define CPPUNIT_PORTABILITY_CPPUNITDEQUE_H - -// The technic used is similar to the wrapper of STLPort. - -#include -#include - - -#if CPPUNIT_STD_NEED_ALLOCATOR - -template -class CppUnitDeque : public std::deque -{ -public: -}; - -#else // CPPUNIT_STD_NEED_ALLOCATOR - -#define CppUnitDeque std::deque - -#endif - -#endif // CPPUNIT_PORTABILITY_CPPUNITDEQUE_H - diff --git a/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitMap.h b/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitMap.h deleted file mode 100644 index 0cdc723a2..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitMap.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef CPPUNIT_PORTABILITY_CPPUNITMAP_H -#define CPPUNIT_PORTABILITY_CPPUNITMAP_H - -// The technic used is similar to the wrapper of STLPort. - -#include -#include -#include - - -#if CPPUNIT_STD_NEED_ALLOCATOR - -template -class CppUnitMap : public std::map - ,CPPUNIT_STD_ALLOCATOR> -{ -public: -}; - -#else // CPPUNIT_STD_NEED_ALLOCATOR - -#define CppUnitMap std::map - -#endif - -#endif // CPPUNIT_PORTABILITY_CPPUNITMAP_H - diff --git a/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitSet.h b/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitSet.h deleted file mode 100644 index 18b8662eb..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitSet.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef CPPUNIT_PORTABILITY_CPPUNITSET_H -#define CPPUNIT_PORTABILITY_CPPUNITSET_H - -// The technic used is similar to the wrapper of STLPort. - -#include -#include -#include - - -#if CPPUNIT_STD_NEED_ALLOCATOR - -template -class CppUnitSet : public std::set - ,CPPUNIT_STD_ALLOCATOR> -{ -public: -}; - -#else // CPPUNIT_STD_NEED_ALLOCATOR - -#define CppUnitSet std::set - -#endif - -#endif // CPPUNIT_PORTABILITY_CPPUNITSET_H - diff --git a/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitStack.h b/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitStack.h deleted file mode 100644 index bc7785b03..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitStack.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef CPPUNIT_PORTABILITY_CPPUNITSTACK_H -#define CPPUNIT_PORTABILITY_CPPUNITSTACK_H - -// The technic used is similar to the wrapper of STLPort. - -#include -#include -#include - - -#if CPPUNIT_STD_NEED_ALLOCATOR - -template -class CppUnitStack : public std::stack > -{ -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/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitVector.h b/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitVector.h deleted file mode 100644 index 6666a63b0..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/portability/CppUnitVector.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef CPPUNIT_PORTABILITY_CPPUNITVECTOR_H -#define CPPUNIT_PORTABILITY_CPPUNITVECTOR_H - -// The technic used is similar to the wrapper of STLPort. - -#include -#include - - -#if CPPUNIT_STD_NEED_ALLOCATOR - -template -class CppUnitVector : public std::vector -{ -public: -}; - -#else // CPPUNIT_STD_NEED_ALLOCATOR - -#define CppUnitVector std::vector - -#endif - -#endif // CPPUNIT_PORTABILITY_CPPUNITVECTOR_H - diff --git a/contrib/cppunit-1.12.1/include/cppunit/portability/FloatingPoint.h b/contrib/cppunit-1.12.1/include/cppunit/portability/FloatingPoint.h deleted file mode 100644 index e8c91b3f5..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/portability/FloatingPoint.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef CPPUNIT_PORTABILITY_FLOATINGPOINT_H_INCLUDED -#define CPPUNIT_PORTABILITY_FLOATINGPOINT_H_INCLUDED - -#include -#include - -CPPUNIT_NS_BEGIN - -/// \brief Tests if a floating-point is a NaN. -// According to IEEE-754 floating point standard, -// (see e.g. page 8 of -// http://www.cs.berkeley.edu/~wkahan/ieee754status/ieee754.ps) -// all comparisons with NaN are false except "x != x", which is true. -// -// At least Microsoft Visual Studio 6 is known not to implement this test correctly. -// It emits the following code to test equality: -// fcomp qword ptr [nan] -// fnstsw ax // copie fp (floating-point) status register to ax -// test ah,40h // test bit 14 of ax (0x4000) => C3 of fp status register -// According to the following documentation on the x86 floating point status register, -// the C2 bit should be tested to test for NaN value. -// http://webster.cs.ucr.edu/AoA/Windows/HTML/RealArithmetic.html#1000117 -// In Microsoft Visual Studio 2003 & 2005, the test is implemented with: -// test ah,44h // Visual Studio 2005 test both C2 & C3... -// -// To work around this, a NaN is assumed to be detected if no strict ordering is found. -inline bool floatingPointIsUnordered( double x ) -{ - // x != x will detect a NaN on conformant platform - // (2.0 < x && x < 1.0) will detect a NaN on non conformant platform: - // => no ordering can be found for x. - return (x != x) || (2.0 < x && x < 1.0); -} - - -/// \brief Tests if a floating-point is finite. -/// @return \c true if x is neither a NaN, nor +inf, nor -inf, \c false otherwise. -inline int floatingPointIsFinite( double x ) -{ -#if defined(CPPUNIT_HAVE_ISFINITE) - return isfinite( x ); -#elif defined(CPPUNIT_HAVE_FINITE) - return finite( x ); -#elif defined(CPPUNIT_HAVE__FINITE) - return _finite(x); -#else - double testInf = x * 0.0; // Produce 0.0 if x is finite, a NaN otherwise. - return testInf == 0.0 && !floatingPointIsUnordered(testInf); -#endif -} - -CPPUNIT_NS_END - -#endif // CPPUNIT_PORTABILITY_FLOATINGPOINT_H_INCLUDED diff --git a/contrib/cppunit-1.12.1/include/cppunit/portability/Makefile.am b/contrib/cppunit-1.12.1/include/cppunit/portability/Makefile.am deleted file mode 100644 index 2caeb321a..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/portability/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -libcppunitincludedir = $(includedir)/cppunit/portability - -libcppunitinclude_HEADERS = \ - CppUnitDeque.h \ - CppUnitMap.h \ - CppUnitSet.h \ - CppUnitStack.h \ - CppUnitVector.h \ - FloatingPoint.h \ - Stream.h diff --git a/contrib/cppunit-1.12.1/include/cppunit/portability/Makefile.in b/contrib/cppunit-1.12.1/include/cppunit/portability/Makefile.in deleted file mode 100644 index 80278e976..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/portability/Makefile.in +++ /dev/null @@ -1,438 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = include/cppunit/portability -DIST_COMMON = $(libcppunitinclude_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libcppunitincludedir)" -libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(libcppunitinclude_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -libcppunitincludedir = $(includedir)/cppunit/portability -libcppunitinclude_HEADERS = \ - CppUnitDeque.h \ - CppUnitMap.h \ - CppUnitSet.h \ - CppUnitStack.h \ - CppUnitVector.h \ - FloatingPoint.h \ - Stream.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/cppunit/portability/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu include/cppunit/portability/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(libcppunitincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libcppunitincludedir)" - @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - 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=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libcppunitincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(libcppunitincludedir)/$$f"; \ - done - -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; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { 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 - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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: - for dir in "$(DESTDIR)$(libcppunitincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-libcppunitincludeHEADERS - -install-dvi: install-dvi-am - -install-exec-am: - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -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-libcppunitincludeHEADERS - -.MAKE: install-am install-strip - -.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 html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libcppunitincludeHEADERS install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - 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-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/contrib/cppunit-1.12.1/include/cppunit/portability/Stream.h b/contrib/cppunit-1.12.1/include/cppunit/portability/Stream.h deleted file mode 100644 index e9beb8c1b..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/portability/Stream.h +++ /dev/null @@ -1,347 +0,0 @@ -#ifndef CPPUNIT_PORTABILITY_STREAM_H_INCLUDED -#define CPPUNIT_PORTABILITY_STREAM_H_INCLUDED - -// This module define: -// Type CppUT::Stream (either std::stream or a custom type) -// Type CppUT::OStringStream (eitjer std::ostringstream, older alternate or a custom type) -// Functions stdCOut() & stdCErr() which returns a reference on cout & cerr stream (or our -// custom stream). - -#include - - -#if defined( CPPUNIT_NO_STREAM ) - -#include -#include -#include - -CPPUNIT_NS_BEGIN - -class StreamBuffer -{ -public: - virtual ~StreamBuffer() {} - - virtual void write( const char *text, unsigned int length ) = 0; - - virtual void flush() {} -}; - - -class StringStreamBuffer : public StreamBuffer -{ -public: - std::string str() const - { - return str_; - } - -public: // overridden from StreamBuffer - void write( const char *text, unsigned int length ) - { - str_.append( text, length ); - } - -private: - std::string str_; -}; - - -class FileStreamBuffer : public StreamBuffer -{ -public: - FileStreamBuffer( FILE *file ) - : file_( file ) - { - } - - FILE *file() const - { - return file_; - } - -public: // overridden from StreamBuffer - void write( const char *text, unsigned int length ) - { - if ( file_ ) - fwrite( text, sizeof(char), length, file_ ); - } - - void flush() - { - if ( file_ ) - fflush( file_ ); - } - -private: - FILE *file_; -}; - - -class OStream -{ -public: - OStream() - : buffer_( 0 ) - { - } - - OStream( StreamBuffer *buffer ) - : buffer_( buffer ) - { - } - - virtual ~OStream() - { - flush(); - } - - OStream &flush() - { - if ( buffer_ ) - buffer_->flush(); - return *this; - } - - void setBuffer( StreamBuffer *buffer ) - { - buffer_ = buffer; - } - - OStream &write( const char *text, unsigned int length ) - { - if ( buffer_ ) - buffer_->write( text, length ); - return *this; - } - - OStream &write( const char *text ) - { - return write( text, strlen(text) ); - } - - OStream &operator <<( bool v ) - { - const char *out = v ? "true" : "false"; - return write( out ); - } - - OStream &operator <<( short v ) - { - char buffer[64]; - sprintf( buffer, "%hd", v ); - return write( buffer ); - } - - OStream &operator <<( unsigned short v ) - { - char buffer[64]; - sprintf( buffer, "%hu", v ); - return write( buffer ); - } - - OStream &operator <<( int v ) - { - char buffer[64]; - sprintf( buffer, "%d", v ); - return write( buffer ); - } - - OStream &operator <<( unsigned int v ) - { - char buffer[64]; - sprintf( buffer, "%u", v ); - return write( buffer ); - } - - OStream &operator <<( long v ) - { - char buffer[64]; - sprintf( buffer, "%ld", v ); - return write( buffer ); - } - - OStream &operator <<( unsigned long v ) - { - char buffer[64]; - sprintf( buffer, "%lu", v ); - return write( buffer ); - } - - OStream &operator <<( float v ) - { - char buffer[128]; - sprintf( buffer, "%.16g", double(v) ); - return write( buffer ); - } - - OStream &operator <<( double v ) - { - char buffer[128]; - sprintf( buffer, "%.16g", v ); - return write( buffer ); - } - - OStream &operator <<( long double v ) - { - char buffer[128]; - sprintf( buffer, "%.16g", double(v) ); - return write( buffer ); - } - - OStream &operator <<( const void *v ) - { - char buffer[64]; - sprintf( buffer, "%p", v ); - return write( buffer ); - } - - OStream &operator <<( const char *v ) - { - return write( v ? v : "NULL" ); - } - - OStream &operator <<( char c ) - { - char buffer[16]; - sprintf( buffer, "%c", c ); - return write( buffer ); - } - - OStream &operator <<( const std::string &s ) - { - return write( s.c_str(), s.length() ); - } - -private: - StreamBuffer *buffer_; -}; - - -class OStringStream : public OStream -{ -public: - OStringStream() - : OStream( &buffer_ ) - { - } - - std::string str() const - { - return buffer_.str(); - } - -private: - StringStreamBuffer buffer_; -}; - - -class OFileStream : public OStream -{ -public: - OFileStream( FILE *file ) - : OStream( &buffer_ ) - , buffer_( file ) - , ownFile_( false ) - { - } - - OFileStream( const char *path ) - : OStream( &buffer_ ) - , buffer_( fopen( path, "wt" ) ) - , ownFile_( true ) - { - } - - virtual ~OFileStream() - { - if ( ownFile_ && buffer_.file() ) - fclose( buffer_.file() ); - } - -private: - FileStreamBuffer buffer_; - bool ownFile_; -}; - -inline OStream &stdCOut() -{ - static OFileStream stream( stdout ); - return stream; -} - -inline OStream &stdCErr() -{ - static OFileStream stream( stderr ); - return stream; -} - -CPPUNIT_NS_END - -#elif CPPUNIT_HAVE_SSTREAM // #if defined( CPPUNIT_NO_STREAM ) -# include -# include - - CPPUNIT_NS_BEGIN - typedef std::ostringstream OStringStream; // The standard C++ way - typedef std::ofstream OFileStream; - CPPUNIT_NS_END - - -#elif CPPUNIT_HAVE_CLASS_STRSTREAM -# include -# if CPPUNIT_HAVE_STRSTREAM -# include -# else // CPPUNIT_HAVE_STRSTREAM -# include -# 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 // #if defined( CPPUNIT_NO_STREAM ) - - - -#if !defined( CPPUNIT_NO_STREAM ) - -#include - - CPPUNIT_NS_BEGIN - - typedef std::ostream OStream; - - inline OStream &stdCOut() - { - return std::cout; - } - - inline OStream &stdCErr() - { - return std::cerr; - } - - CPPUNIT_NS_END - -#endif // #if !defined( CPPUNIT_NO_STREAM ) - -#endif // CPPUNIT_PORTABILITY_STREAM_H_INCLUDED - diff --git a/contrib/cppunit-1.12.1/include/cppunit/tools/Algorithm.h b/contrib/cppunit-1.12.1/include/cppunit/tools/Algorithm.h deleted file mode 100644 index e5746a2bf..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/tools/Algorithm.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef CPPUNIT_TOOLS_ALGORITHM_H_INCLUDED -#define CPPUNIT_TOOLS_ALGORITHM_H_INCLUDED - -#include - -CPPUNIT_NS_BEGIN - -template -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/contrib/cppunit-1.12.1/include/cppunit/tools/Makefile.am b/contrib/cppunit-1.12.1/include/cppunit/tools/Makefile.am deleted file mode 100644 index 8ce080867..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/tools/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -libcppunitincludedir = $(includedir)/cppunit/tools - -libcppunitinclude_HEADERS = \ - Algorithm.h \ - StringTools.h \ - XmlElement.h \ - XmlDocument.h \ No newline at end of file diff --git a/contrib/cppunit-1.12.1/include/cppunit/tools/Makefile.in b/contrib/cppunit-1.12.1/include/cppunit/tools/Makefile.in deleted file mode 100644 index 5b7d3e6c1..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/tools/Makefile.in +++ /dev/null @@ -1,435 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = include/cppunit/tools -DIST_COMMON = $(libcppunitinclude_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libcppunitincludedir)" -libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(libcppunitinclude_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -libcppunitincludedir = $(includedir)/cppunit/tools -libcppunitinclude_HEADERS = \ - Algorithm.h \ - StringTools.h \ - XmlElement.h \ - XmlDocument.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/cppunit/tools/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu include/cppunit/tools/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(libcppunitincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libcppunitincludedir)" - @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - 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=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libcppunitincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(libcppunitincludedir)/$$f"; \ - done - -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; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { 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 - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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: - for dir in "$(DESTDIR)$(libcppunitincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-libcppunitincludeHEADERS - -install-dvi: install-dvi-am - -install-exec-am: - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -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-libcppunitincludeHEADERS - -.MAKE: install-am install-strip - -.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 html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libcppunitincludeHEADERS install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - 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-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/contrib/cppunit-1.12.1/include/cppunit/tools/StringTools.h b/contrib/cppunit-1.12.1/include/cppunit/tools/StringTools.h deleted file mode 100644 index 7a6b6d710..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/tools/StringTools.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef CPPUNIT_TOOLS_STRINGTOOLS_H -#define CPPUNIT_TOOLS_STRINGTOOLS_H - -#include -#include -#include - - -CPPUNIT_NS_BEGIN - - -/*! \brief Tool functions to manipulate string. - */ -struct StringTools -{ - - typedef CppUnitVector 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/contrib/cppunit-1.12.1/include/cppunit/tools/XmlDocument.h b/contrib/cppunit-1.12.1/include/cppunit/tools/XmlDocument.h deleted file mode 100644 index 4ee73257a..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/tools/XmlDocument.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef CPPUNIT_TOOLS_XMLDOCUMENT_H -#define CPPUNIT_TOOLS_XMLDOCUMENT_H - -#include - -#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_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. - * - * By default, the XML document is stand-alone and tagged with enconding "ISO-8859-1". - */ -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 = "" ); - - bool standalone() const; - - /*! \brief set the output document as standalone or not. - * - * For the output document, specify wether it's a standalone XML - * document, or not. - * - * \param standalone if true, the output will be specified as standalone. - * if false, it will be not. - */ - void setStandalone( bool standalone ); - - void setRootElement( XmlElement *rootElement ); - XmlElement &rootElement() const; - - std::string toString() const; - -private: - /// Prevents the use of the copy constructor. - XmlDocument( const XmlDocument © ); - - /// Prevents the use of the copy operator. - void operator =( const XmlDocument © ); - -protected: - std::string m_encoding; - std::string m_styleSheet; - XmlElement *m_rootElement; - bool m_standalone; -}; - - -#if CPPUNIT_NEED_DLL_DECL -#pragma warning( pop ) -#endif - - -CPPUNIT_NS_END - -#endif // CPPUNIT_TOOLS_XMLDOCUMENT_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/tools/XmlElement.h b/contrib/cppunit-1.12.1/include/cppunit/tools/XmlElement.h deleted file mode 100644 index 0b36bd238..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/tools/XmlElement.h +++ /dev/null @@ -1,149 +0,0 @@ -#ifndef CPPUNIT_TOOLS_XMLELEMENT_H -#define CPPUNIT_TOOLS_XMLELEMENT_H - -#include - -#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 -#include - - -CPPUNIT_NS_BEGIN - - -class XmlElement; - -#if CPPUNIT_NEED_DLL_DECL -// template class CPPUNIT_API std::deque; -#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 Attribute; - - std::string attributesAsString() const; - std::string escape( std::string value ) const; - -private: - std::string m_name; - std::string m_content; - - typedef CppUnitDeque Attributes; - Attributes m_attributes; - - typedef CppUnitDeque Elements; - Elements m_elements; -}; - - -CPPUNIT_NS_END - -#if CPPUNIT_NEED_DLL_DECL -#pragma warning( pop ) -#endif - - -#endif // CPPUNIT_TOOLS_XMLELEMENT_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/ui/Makefile.am b/contrib/cppunit-1.12.1/include/cppunit/ui/Makefile.am deleted file mode 100644 index 1b9f08efe..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -SUBDIRS = text mfc qt diff --git a/contrib/cppunit-1.12.1/include/cppunit/ui/Makefile.in b/contrib/cppunit-1.12.1/include/cppunit/ui/Makefile.in deleted file mode 100644 index e8a9d5903..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/Makefile.in +++ /dev/null @@ -1,511 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = include/cppunit/ui -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = text mfc qt -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/cppunit/ui/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu include/cppunit/ui/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# 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): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - 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) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - 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) \ - || eval $$failcom; \ - 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 - -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; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -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; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { 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 - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - 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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-exec-am: - -install-html: install-html-recursive - -install-info: install-info-recursive - -install-man: - -install-pdf: install-pdf-recursive - -install-ps: install-ps-recursive - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -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: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ - install-strip - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-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/contrib/cppunit-1.12.1/include/cppunit/ui/mfc/Makefile.am b/contrib/cppunit-1.12.1/include/cppunit/ui/mfc/Makefile.am deleted file mode 100644 index 1ea8b5edf..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/mfc/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -libcppunitincludedir = $(includedir)/cppunit/ui/mfc - -libcppunitinclude_HEADERS = \ - TestRunner.h \ - MfcTestRunner.h diff --git a/contrib/cppunit-1.12.1/include/cppunit/ui/mfc/Makefile.in b/contrib/cppunit-1.12.1/include/cppunit/ui/mfc/Makefile.in deleted file mode 100644 index abe488a11..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/mfc/Makefile.in +++ /dev/null @@ -1,433 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = include/cppunit/ui/mfc -DIST_COMMON = $(libcppunitinclude_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libcppunitincludedir)" -libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(libcppunitinclude_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -libcppunitincludedir = $(includedir)/cppunit/ui/mfc -libcppunitinclude_HEADERS = \ - TestRunner.h \ - MfcTestRunner.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/cppunit/ui/mfc/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu include/cppunit/ui/mfc/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(libcppunitincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libcppunitincludedir)" - @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - 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=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libcppunitincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(libcppunitincludedir)/$$f"; \ - done - -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; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { 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 - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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: - for dir in "$(DESTDIR)$(libcppunitincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-libcppunitincludeHEADERS - -install-dvi: install-dvi-am - -install-exec-am: - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -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-libcppunitincludeHEADERS - -.MAKE: install-am install-strip - -.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 html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libcppunitincludeHEADERS install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - 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-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/contrib/cppunit-1.12.1/include/cppunit/ui/mfc/MfcTestRunner.h b/contrib/cppunit-1.12.1/include/cppunit/ui/mfc/MfcTestRunner.h deleted file mode 100644 index 6a5f7b770..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/mfc/MfcTestRunner.h +++ /dev/null @@ -1,76 +0,0 @@ -#ifndef CPPUNITUI_MFC_MFCTESTRUNNER_H -#define CPPUNITUI_MFC_MFCTESTRUNNER_H - -#if _MSC_VER >= 1000 -#pragma once -#endif // _MSC_VER >= 1000 - -#include -#include - -/* 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 - * #include - * - * 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 &tests ); - -protected: - Test *getRootTest(); - - TestSuite *m_suite; - - typedef CppUnitVector Tests; - Tests m_tests; -}; - - -CPPUNIT_NS_END - -#endif // CPPUNITUI_MFC_MFCTESTRUNNER_H \ No newline at end of file diff --git a/contrib/cppunit-1.12.1/include/cppunit/ui/mfc/TestRunner.h b/contrib/cppunit-1.12.1/include/cppunit/ui/mfc/TestRunner.h deleted file mode 100644 index c4d6affac..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/mfc/TestRunner.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef CPPUNITUI_MFC_TESTRUNNER_H -#define CPPUNITUI_MFC_TESTRUNNER_H - -#include - -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/contrib/cppunit-1.12.1/include/cppunit/ui/qt/Config.h b/contrib/cppunit-1.12.1/include/cppunit/ui/qt/Config.h deleted file mode 100644 index beaf9ad4e..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/qt/Config.h +++ /dev/null @@ -1,21 +0,0 @@ -#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 diff --git a/contrib/cppunit-1.12.1/include/cppunit/ui/qt/Makefile.am b/contrib/cppunit-1.12.1/include/cppunit/ui/qt/Makefile.am deleted file mode 100644 index 7d4fb46c0..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/qt/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -libcppunitincludedir = $(includedir)/cppunit/ui/qt - -libcppunitinclude_HEADERS = \ - TestRunner.h \ - QtTestRunner.h \ - Config.h diff --git a/contrib/cppunit-1.12.1/include/cppunit/ui/qt/Makefile.in b/contrib/cppunit-1.12.1/include/cppunit/ui/qt/Makefile.in deleted file mode 100644 index 1154d4008..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/qt/Makefile.in +++ /dev/null @@ -1,434 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = include/cppunit/ui/qt -DIST_COMMON = $(libcppunitinclude_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libcppunitincludedir)" -libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(libcppunitinclude_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -libcppunitincludedir = $(includedir)/cppunit/ui/qt -libcppunitinclude_HEADERS = \ - TestRunner.h \ - QtTestRunner.h \ - Config.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/cppunit/ui/qt/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu include/cppunit/ui/qt/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(libcppunitincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libcppunitincludedir)" - @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - 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=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libcppunitincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(libcppunitincludedir)/$$f"; \ - done - -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; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { 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 - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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: - for dir in "$(DESTDIR)$(libcppunitincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-libcppunitincludeHEADERS - -install-dvi: install-dvi-am - -install-exec-am: - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -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-libcppunitincludeHEADERS - -.MAKE: install-am install-strip - -.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 html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libcppunitincludeHEADERS install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - 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-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/contrib/cppunit-1.12.1/include/cppunit/ui/qt/QtTestRunner.h b/contrib/cppunit-1.12.1/include/cppunit/ui/qt/QtTestRunner.h deleted file mode 100644 index 4b6ab4e4e..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/qt/QtTestRunner.h +++ /dev/null @@ -1,85 +0,0 @@ -// ////////////////////////////////////////////////////////////////////////// -// 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 -#include "Config.h" - -CPPUNIT_NS_BEGIN - - - class Test; - class TestSuite; - - -/*! - * \brief QT test runner. - * \ingroup ExecutingTest - * - * Here is an example of usage: - * \code - * #include - * #include - * - * [...] - * - * 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 © ); - - /// Prevents the use of the copy operator. - void operator =( const QtTestRunner © ); - - Test *getRootTest(); - -private: - typedef CppUnitVector 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/contrib/cppunit-1.12.1/include/cppunit/ui/qt/TestRunner.h b/contrib/cppunit-1.12.1/include/cppunit/ui/qt/TestRunner.h deleted file mode 100644 index 9c53e4ba6..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/qt/TestRunner.h +++ /dev/null @@ -1,11 +0,0 @@ -// ////////////////////////////////////////////////////////////////////////// -// 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 - -#endif // CPPUNIT_QTUI_TESTRUNNER_H diff --git a/contrib/cppunit-1.12.1/include/cppunit/ui/text/Makefile.am b/contrib/cppunit-1.12.1/include/cppunit/ui/text/Makefile.am deleted file mode 100644 index 5f01d8146..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/text/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -libcppunitincludedir = $(includedir)/cppunit/ui/text - -libcppunitinclude_HEADERS = \ - TestRunner.h \ - TextTestRunner.h diff --git a/contrib/cppunit-1.12.1/include/cppunit/ui/text/Makefile.in b/contrib/cppunit-1.12.1/include/cppunit/ui/text/Makefile.in deleted file mode 100644 index db794f694..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/text/Makefile.in +++ /dev/null @@ -1,433 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = include/cppunit/ui/text -DIST_COMMON = $(libcppunitinclude_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libcppunitincludedir)" -libcppunitincludeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(libcppunitinclude_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -libcppunitincludedir = $(includedir)/cppunit/ui/text -libcppunitinclude_HEADERS = \ - TestRunner.h \ - TextTestRunner.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/cppunit/ui/text/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu include/cppunit/ui/text/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-libcppunitincludeHEADERS: $(libcppunitinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(libcppunitincludedir)" || $(MKDIR_P) "$(DESTDIR)$(libcppunitincludedir)" - @list='$(libcppunitinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - 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=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libcppunitincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(libcppunitincludedir)/$$f"; \ - done - -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; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { 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 - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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: - for dir in "$(DESTDIR)$(libcppunitincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-libcppunitincludeHEADERS - -install-dvi: install-dvi-am - -install-exec-am: - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -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-libcppunitincludeHEADERS - -.MAKE: install-am install-strip - -.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 html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libcppunitincludeHEADERS install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - 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-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/contrib/cppunit-1.12.1/include/cppunit/ui/text/TestRunner.h b/contrib/cppunit-1.12.1/include/cppunit/ui/text/TestRunner.h deleted file mode 100644 index 023eb8348..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/text/TestRunner.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef CPPUNIT_UI_TEXT_TESTRUNNER_H -#define CPPUNIT_UI_TEXT_TESTRUNNER_H - -#include - - -#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/contrib/cppunit-1.12.1/include/cppunit/ui/text/TextTestRunner.h b/contrib/cppunit-1.12.1/include/cppunit/ui/text/TextTestRunner.h deleted file mode 100644 index 86da4d4b3..000000000 --- a/contrib/cppunit-1.12.1/include/cppunit/ui/text/TextTestRunner.h +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef CPPUNIT_UI_TEXT_TEXTTESTRUNNER_H -#define CPPUNIT_UI_TEXT_TEXTTESTRUNNER_H - - -#include -#include -#include - -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; - -public: // overridden from TestRunner (to avoid hidden virtual function warning) - virtual void run( TestResult &controller, - const std::string &testPath = "" ); - -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/contrib/cppunit-1.12.1/src/CppUnitLibraries.sln b/contrib/cppunit-1.12.1/src/CppUnitLibraries.sln deleted file mode 100644 index 5dbeb6193..000000000 --- a/contrib/cppunit-1.12.1/src/CppUnitLibraries.sln +++ /dev/null @@ -1,50 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cppunit", "cppunit\cppunit.vcproj", "{98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug Static|Win32 = Debug Static|Win32 - Debug Static|x64 = Debug Static|x64 - Debug Unicode|Win32 = Debug Unicode|Win32 - Debug Unicode|x64 = Debug Unicode|x64 - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release Static|Win32 = Release Static|Win32 - Release Static|x64 = Release Static|x64 - Release Unicode|Win32 = Release Unicode|Win32 - Release Unicode|x64 = Release Unicode|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Static|Win32.Build.0 = Debug|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Static|x64.ActiveCfg = Debug|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Static|x64.Build.0 = Debug|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Unicode|Win32.Build.0 = Debug|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Unicode|x64.ActiveCfg = Debug|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Unicode|x64.Build.0 = Debug|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug|Win32.ActiveCfg = Debug|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug|Win32.Build.0 = Debug|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug|x64.ActiveCfg = Debug|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug|x64.Build.0 = Debug|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Static|Win32.ActiveCfg = Release|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Static|Win32.Build.0 = Release|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Static|x64.ActiveCfg = Release|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Static|x64.Build.0 = Release|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Unicode|Win32.ActiveCfg = Release|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Unicode|Win32.Build.0 = Release|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Unicode|x64.ActiveCfg = Release|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Unicode|x64.Build.0 = Release|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release|Win32.ActiveCfg = Release|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release|Win32.Build.0 = Release|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release|x64.ActiveCfg = Release|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/contrib/cppunit-1.12.1/src/CppUnitLibrariesVC9.sln b/contrib/cppunit-1.12.1/src/CppUnitLibrariesVC9.sln deleted file mode 100644 index 62417d477..000000000 --- a/contrib/cppunit-1.12.1/src/CppUnitLibrariesVC9.sln +++ /dev/null @@ -1,50 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual C++ Express 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cppunit", "cppunit\cppunitvc9.vcproj", "{98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug Static|Win32 = Debug Static|Win32 - Debug Static|x64 = Debug Static|x64 - Debug Unicode|Win32 = Debug Unicode|Win32 - Debug Unicode|x64 = Debug Unicode|x64 - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release Static|Win32 = Release Static|Win32 - Release Static|x64 = Release Static|x64 - Release Unicode|Win32 = Release Unicode|Win32 - Release Unicode|x64 = Release Unicode|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Static|Win32.ActiveCfg = Debug|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Static|Win32.Build.0 = Debug|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Static|x64.ActiveCfg = Debug|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Static|x64.Build.0 = Debug|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Unicode|Win32.Build.0 = Debug|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Unicode|x64.ActiveCfg = Debug|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug Unicode|x64.Build.0 = Debug|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug|Win32.ActiveCfg = Debug|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug|Win32.Build.0 = Debug|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug|x64.ActiveCfg = Debug|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Debug|x64.Build.0 = Debug|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Static|Win32.ActiveCfg = Release|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Static|Win32.Build.0 = Release|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Static|x64.ActiveCfg = Release|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Static|x64.Build.0 = Release|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Unicode|Win32.ActiveCfg = Release|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Unicode|Win32.Build.0 = Release|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Unicode|x64.ActiveCfg = Release|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release Unicode|x64.Build.0 = Release|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release|Win32.ActiveCfg = Release|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release|Win32.Build.0 = Release|Win32 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release|x64.ActiveCfg = Release|x64 - {98E0A8E6-D7B0-4683-9DDC-7E24535A17E6}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/contrib/cppunit-1.12.1/src/Makefile.am b/contrib/cppunit-1.12.1/src/Makefile.am deleted file mode 100644 index 81430b4e3..000000000 --- a/contrib/cppunit-1.12.1/src/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -SUBDIRS = cppunit DllPlugInTester - -# already handled by toplevel dist-hook. -# DIST_SUBDIRS = msvc6 \ No newline at end of file diff --git a/contrib/cppunit-1.12.1/src/Makefile.in b/contrib/cppunit-1.12.1/src/Makefile.in deleted file mode 100644 index 089cc494f..000000000 --- a/contrib/cppunit-1.12.1/src/Makefile.in +++ /dev/null @@ -1,514 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = cppunit DllPlugInTester -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# 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): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - 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) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - 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) \ - || eval $$failcom; \ - 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 - -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; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -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; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { 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 - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - 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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-exec-am: - -install-html: install-html-recursive - -install-info: install-info-recursive - -install-man: - -install-pdf: install-pdf-recursive - -install-ps: install-ps-recursive - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -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: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ - install-strip - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am - - -# 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/contrib/cppunit-1.12.1/src/cppunit/AdditionalMessage.cpp b/contrib/cppunit-1.12.1/src/cppunit/AdditionalMessage.cpp deleted file mode 100644 index 9f3da1392..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/AdditionalMessage.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include - - -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/contrib/cppunit-1.12.1/src/cppunit/Asserter.cpp b/contrib/cppunit-1.12.1/src/cppunit/Asserter.cpp deleted file mode 100644 index a9cf95cb4..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/Asserter.cpp +++ /dev/null @@ -1,101 +0,0 @@ -#include -#include -#include - - -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/contrib/cppunit-1.12.1/src/cppunit/BeOsDynamicLibraryManager.cpp b/contrib/cppunit-1.12.1/src/cppunit/BeOsDynamicLibraryManager.cpp deleted file mode 100644 index b8568be0c..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/BeOsDynamicLibraryManager.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include - -#if defined(CPPUNIT_HAVE_BEOS_DLL_LOADER) -#include - -#include - - -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/contrib/cppunit-1.12.1/src/cppunit/BriefTestProgressListener.cpp b/contrib/cppunit-1.12.1/src/cppunit/BriefTestProgressListener.cpp deleted file mode 100644 index c38cea067..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/BriefTestProgressListener.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include -#include -#include -#include - - -CPPUNIT_NS_BEGIN - - -BriefTestProgressListener::BriefTestProgressListener() - : m_lastTestFailed( false ) -{ -} - - -BriefTestProgressListener::~BriefTestProgressListener() -{ -} - - -void -BriefTestProgressListener::startTest( Test *test ) -{ - stdCOut() << test->getName(); - stdCOut().flush(); - - m_lastTestFailed = false; -} - - -void -BriefTestProgressListener::addFailure( const TestFailure &failure ) -{ - stdCOut() << " : " << (failure.isError() ? "error" : "assertion"); - m_lastTestFailed = true; -} - - -void -BriefTestProgressListener::endTest( Test *test ) -{ - if ( !m_lastTestFailed ) - stdCOut() << " : OK"; - stdCOut() << "\n"; -} - - -CPPUNIT_NS_END - diff --git a/contrib/cppunit-1.12.1/src/cppunit/CompilerOutputter.cpp b/contrib/cppunit-1.12.1/src/cppunit/CompilerOutputter.cpp deleted file mode 100644 index 8196a5f87..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/CompilerOutputter.cpp +++ /dev/null @@ -1,216 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - - -CPPUNIT_NS_BEGIN - - -CompilerOutputter::CompilerOutputter( TestResultCollector *result, - 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, - 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() << ")\n"; -} - - -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 << "\nTest name: " << failure->failedTestName(); -} - - -void -CompilerOutputter::printFailureMessage( TestFailure *failure ) -{ - m_stream << "\n"; - Exception *thrownException = failure->thrownException(); - m_stream << thrownException->message().shortDescription() << "\n"; - - std::string message = thrownException->message().details(); - if ( m_wrapColumn > 0 ) - message = StringTools::wrap( message, m_wrapColumn ); - - m_stream << message << "\n"; -} - - -void -CompilerOutputter::printStatistics() -{ - m_stream << "Failures !!!\n"; - m_stream << "Run: " << m_result->runTests() << " " - << "Failure total: " << m_result->testFailuresTotal() << " " - << "Failures: " << m_result->testFailures() << " " - << "Errors: " << m_result->testErrors() - << "\n"; -} - - -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/contrib/cppunit-1.12.1/src/cppunit/DefaultProtector.cpp b/contrib/cppunit-1.12.1/src/cppunit/DefaultProtector.cpp deleted file mode 100644 index 6fb306b25..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/DefaultProtector.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include -#include -#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/contrib/cppunit-1.12.1/src/cppunit/DefaultProtector.h b/contrib/cppunit-1.12.1/src/cppunit/DefaultProtector.h deleted file mode 100644 index 4a76ea013..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/DefaultProtector.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef CPPUNIT_DEFAULTPROTECTOR_H -#define CPPUNIT_DEFAULTPROTECTOR_H - -#include - -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/contrib/cppunit-1.12.1/src/cppunit/DllMain.cpp b/contrib/cppunit-1.12.1/src/cppunit/DllMain.cpp deleted file mode 100644 index 51fe31ece..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/DllMain.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#define WIN32_LEAN_AND_MEAN -#define NOGDI -#define NOUSER -#define NOKERNEL -#define NOSOUND -#define BLENDFUNCTION void // for mingw & gcc - -#include - -BOOL APIENTRY -DllMain( HANDLE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved ) -{ - return TRUE; -} diff --git a/contrib/cppunit-1.12.1/src/cppunit/DynamicLibraryManager.cpp b/contrib/cppunit-1.12.1/src/cppunit/DynamicLibraryManager.cpp deleted file mode 100644 index e6f629455..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/DynamicLibraryManager.cpp +++ /dev/null @@ -1,77 +0,0 @@ -#include - -#if !defined(CPPUNIT_NO_TESTPLUGIN) -#include - -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/contrib/cppunit-1.12.1/src/cppunit/DynamicLibraryManagerException.cpp b/contrib/cppunit-1.12.1/src/cppunit/DynamicLibraryManagerException.cpp deleted file mode 100644 index 8498652e0..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/DynamicLibraryManagerException.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include - -#if !defined(CPPUNIT_NO_TESTPLUGIN) - -CPPUNIT_NS_BEGIN - - -DynamicLibraryManagerException::DynamicLibraryManagerException( - const std::string &libraryName, - const std::string &errorDetail, - Cause cause ) - : std::runtime_error( "" ), - m_cause( cause ) -{ - 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/contrib/cppunit-1.12.1/src/cppunit/Exception.cpp b/contrib/cppunit-1.12.1/src/cppunit/Exception.cpp deleted file mode 100644 index 3bbe24b9b..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/Exception.cpp +++ /dev/null @@ -1,126 +0,0 @@ -#include - - -CPPUNIT_NS_BEGIN - - -#ifdef CPPUNIT_ENABLE_SOURCELINE_DEPRECATED -/*! - * \deprecated Use SourceLine::isValid() instead. - */ -const std::string Exception::UNKNOWNFILENAME = ""; - -/*! - * \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/contrib/cppunit-1.12.1/src/cppunit/Makefile.am b/contrib/cppunit-1.12.1/src/cppunit/Makefile.am deleted file mode 100644 index d5a60bf73..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/Makefile.am +++ /dev/null @@ -1,67 +0,0 @@ -# -# $Id: Makefile.am,v 1.44 2005/06/14 21:28:46 blep 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= \ - -no-undefined -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ - -release $(LT_RELEASE) - diff --git a/contrib/cppunit-1.12.1/src/cppunit/Makefile.in b/contrib/cppunit-1.12.1/src/cppunit/Makefile.in deleted file mode 100644 index aa68cb040..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/Makefile.in +++ /dev/null @@ -1,632 +0,0 @@ -# Makefile.in generated by automake 1.10.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 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.am,v 1.44 2005/06/14 21:28:46 blep Exp $ -# - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -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 = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/cppunit -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = \ - $(top_srcdir)/config/ac_create_prefix_config_h.m4 \ - $(top_srcdir)/config/ac_cxx_have_sstream.m4 \ - $(top_srcdir)/config/ac_cxx_have_strstream.m4 \ - $(top_srcdir)/config/ac_cxx_namespaces.m4 \ - $(top_srcdir)/config/ac_cxx_rtti.m4 \ - $(top_srcdir)/config/ac_cxx_string_compare_string_first.m4 \ - $(top_srcdir)/config/ac_dll.m4 \ - $(top_srcdir)/config/ax_cxx_gcc_abi_demangle.m4 \ - $(top_srcdir)/config/ax_cxx_have_isfinite.m4 \ - $(top_srcdir)/config/bb_enable_doxygen.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config/config.h -CONFIG_CLEAN_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libdir)" -libLTLIBRARIES_INSTALL = $(INSTALL) -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) -libcppunit_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(libcppunit_la_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/config -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libcppunit_la_SOURCES) -DIST_SOURCES = $(libcppunit_la_SOURCES) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -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@ -DLLTOOL = @DLLTOOL@ -DOT = @DOT@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -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@ -MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -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@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -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@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -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 = \ - -no-undefined -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ - -release $(LT_RELEASE) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .cpp .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/cppunit/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/cppunit/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --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=$(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --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) - $(libcppunit_la_LINK) -rpath $(libdir) $(libcppunit_la_OBJECTS) $(libcppunit_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -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@ - -.cpp.o: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< - -.cpp.obj: -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.cpp.lo: -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -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; nonemtpy = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -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; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - 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; nonempty = 1; } \ - END { if (nonempty) { 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 - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - 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: - for dir in "$(DESTDIR)$(libdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -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-libLTLIBRARIES - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am \ - install-libLTLIBRARIES install-man install-pdf install-pdf-am \ - install-ps install-ps-am 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-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/contrib/cppunit-1.12.1/src/cppunit/Message.cpp b/contrib/cppunit-1.12.1/src/cppunit/Message.cpp deleted file mode 100644 index 9d6a0e92b..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/Message.cpp +++ /dev/null @@ -1,170 +0,0 @@ -#include -#include - - -CPPUNIT_NS_BEGIN - - -Message::Message() -{ -} - -Message::Message( const Message &other ) -{ - *this = other; -} - - -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 ); -} - -Message & -Message::operator =( const Message &other ) -{ - if ( this != &other ) - { - m_shortDescription = other.m_shortDescription.c_str(); - m_details.clear(); - Details::const_iterator it = other.m_details.begin(); - Details::const_iterator itEnd = other.m_details.end(); - while ( it != itEnd ) - m_details.push_back( (*it++).c_str() ); - } - - return *this; -} - - -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/contrib/cppunit-1.12.1/src/cppunit/PlugInManager.cpp b/contrib/cppunit-1.12.1/src/cppunit/PlugInManager.cpp deleted file mode 100644 index b595deefb..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/PlugInManager.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include -#include - -#if !defined(CPPUNIT_NO_TESTPLUGIN) -#include -#include -#include -#include - - -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 ¶meters ) -{ - 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/contrib/cppunit-1.12.1/src/cppunit/PlugInParameters.cpp b/contrib/cppunit-1.12.1/src/cppunit/PlugInParameters.cpp deleted file mode 100644 index 1b532f9fa..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/PlugInParameters.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include - -#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/contrib/cppunit-1.12.1/src/cppunit/Protector.cpp b/contrib/cppunit-1.12.1/src/cppunit/Protector.cpp deleted file mode 100644 index 5c171ec46..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/Protector.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include -#include -#include -#include -#include "ProtectorContext.h" -#include - -CPPUNIT_NS_BEGIN - -Functor::~Functor() -{ -} - - -Protector::~Protector() -{ -} - - -void -Protector::reportError( const ProtectorContext &context, - const Exception &error ) const -{ - std::auto_ptr 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 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/contrib/cppunit-1.12.1/src/cppunit/ProtectorChain.cpp b/contrib/cppunit-1.12.1/src/cppunit/ProtectorChain.cpp deleted file mode 100644 index f528341eb..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/ProtectorChain.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#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/contrib/cppunit-1.12.1/src/cppunit/ProtectorChain.h b/contrib/cppunit-1.12.1/src/cppunit/ProtectorChain.h deleted file mode 100644 index 711b56fbc..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/ProtectorChain.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef CPPUNIT_PROTECTORCHAIN_H -#define CPPUNIT_PROTECTORCHAIN_H - -#include -#include - -#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 Protectors; - Protectors m_protectors; - - typedef CppUnitDeque Functors; -}; - - -CPPUNIT_NS_END - -#if CPPUNIT_NEED_DLL_DECL -#pragma warning( pop ) -#endif - -#endif // CPPUNIT_PROTECTORCHAIN_H - diff --git a/contrib/cppunit-1.12.1/src/cppunit/ProtectorContext.h b/contrib/cppunit-1.12.1/src/cppunit/ProtectorContext.h deleted file mode 100644 index c3d496c49..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/ProtectorContext.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef CPPUNIT_PROTECTORCONTEXT_H -#define CPPUNIT_PROTECTORCONTEXT_H - -#include -#include - -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/contrib/cppunit-1.12.1/src/cppunit/RepeatedTest.cpp b/contrib/cppunit-1.12.1/src/cppunit/RepeatedTest.cpp deleted file mode 100644 index 2533ca1d9..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/RepeatedTest.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include -#include - -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/contrib/cppunit-1.12.1/src/cppunit/ShlDynamicLibraryManager.cpp b/contrib/cppunit-1.12.1/src/cppunit/ShlDynamicLibraryManager.cpp deleted file mode 100644 index 9f4be2277..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/ShlDynamicLibraryManager.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include - -#if defined(CPPUNIT_HAVE_UNIX_SHL_LOADER) -#include - -#include -#include - - -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/contrib/cppunit-1.12.1/src/cppunit/SourceLine.cpp b/contrib/cppunit-1.12.1/src/cppunit/SourceLine.cpp deleted file mode 100644 index dfadae3f0..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/SourceLine.cpp +++ /dev/null @@ -1,81 +0,0 @@ -#include - - -CPPUNIT_NS_BEGIN - - -SourceLine::SourceLine() : - m_lineNumber( -1 ) -{ -} - - -SourceLine::SourceLine( const SourceLine &other ) - : m_fileName( other.m_fileName.c_str() ) - , m_lineNumber( other.m_lineNumber ) -{ -} - - -SourceLine::SourceLine( const std::string &fileName, - int lineNumber ) - : m_fileName( fileName.c_str() ) - , m_lineNumber( lineNumber ) -{ -} - - -SourceLine & -SourceLine::operator =( const SourceLine &other ) -{ - if ( this != &other ) - { - m_fileName = other.m_fileName.c_str(); - m_lineNumber = other.m_lineNumber; - } - return *this; -} - - -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/contrib/cppunit-1.12.1/src/cppunit/StringTools.cpp b/contrib/cppunit-1.12.1/src/cppunit/StringTools.cpp deleted file mode 100644 index 584a5c0bc..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/StringTools.cpp +++ /dev/null @@ -1,80 +0,0 @@ -#include -#include -#include - - -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 splitText; - - std::string::const_iterator itStart = text.begin(); - while ( !text.empty() ) - { - std::string::const_iterator itSeparator = std::find( itStart, - text.end(), - separator ); - splitText.push_back( text.substr( itStart - text.begin(), - itSeparator - itStart ) ); - if ( itSeparator == text.end() ) - break; - itStart = itSeparator +1; - } - - return splitText; -} - - -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/contrib/cppunit-1.12.1/src/cppunit/SynchronizedObject.cpp b/contrib/cppunit-1.12.1/src/cppunit/SynchronizedObject.cpp deleted file mode 100644 index 1764538e5..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/SynchronizedObject.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include - - -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/contrib/cppunit-1.12.1/src/cppunit/Test.cpp b/contrib/cppunit-1.12.1/src/cppunit/Test.cpp deleted file mode 100644 index fef8be793..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/Test.cpp +++ /dev/null @@ -1,97 +0,0 @@ -#include -#include -#include -#include - - -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/contrib/cppunit-1.12.1/src/cppunit/TestAssert.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestAssert.cpp deleted file mode 100644 index 6e4e794b2..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestAssert.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include - -CPPUNIT_NS_BEGIN - - -void -assertDoubleEquals( double expected, - double actual, - double delta, - SourceLine sourceLine, - const std::string &message ) -{ - AdditionalMessage msg( "Delta : " + - assertion_traits::toString(delta) ); - msg.addDetail( AdditionalMessage(message) ); - - bool equal; - if ( floatingPointIsFinite(expected) && floatingPointIsFinite(actual) ) - equal = fabs( expected - actual ) <= delta; - else - { - // If expected or actual is not finite, it may be +inf, -inf or NaN (Not a Number). - // Value of +inf or -inf leads to a true equality regardless of delta if both - // expected and actual have the same value (infinity sign). - // NaN Value should always lead to a failed equality. - if ( floatingPointIsUnordered(expected) || floatingPointIsUnordered(actual) ) - { - equal = false; // expected or actual is a NaN - } - else // ordered values, +inf or -inf comparison - { - equal = expected == actual; - } - } - - Asserter::failNotEqualIf( !equal, - assertion_traits::toString(expected), - assertion_traits::toString(actual), - sourceLine, - msg, - "double equality assertion failed" ); -} - - -CPPUNIT_NS_END diff --git a/contrib/cppunit-1.12.1/src/cppunit/TestCase.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestCase.cpp deleted file mode 100644 index 13c05257f..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestCase.cpp +++ /dev/null @@ -1,137 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#if CPPUNIT_USE_TYPEINFO_NAME -# include -#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/contrib/cppunit-1.12.1/src/cppunit/TestCaseDecorator.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestCaseDecorator.cpp deleted file mode 100644 index a7229f4b2..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestCaseDecorator.cpp +++ /dev/null @@ -1,47 +0,0 @@ -#include - -CPPUNIT_NS_BEGIN - - -TestCaseDecorator::TestCaseDecorator( TestCase *test ) - : TestCase( test->getName() ), - m_test( test ) -{ -} - - -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/contrib/cppunit-1.12.1/src/cppunit/TestComposite.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestComposite.cpp deleted file mode 100644 index 4768791b5..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestComposite.cpp +++ /dev/null @@ -1,77 +0,0 @@ -#include -#include - - -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/contrib/cppunit-1.12.1/src/cppunit/TestDecorator.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestDecorator.cpp deleted file mode 100644 index 4e25a6af9..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestDecorator.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include - -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/contrib/cppunit-1.12.1/src/cppunit/TestFactoryRegistry.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestFactoryRegistry.cpp deleted file mode 100644 index afe10bb4b..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestFactoryRegistry.cpp +++ /dev/null @@ -1,161 +0,0 @@ -#include -#include -#include -#include -#include - - -CPPUNIT_NS_BEGIN - -/*! \brief (INTERNAL) List of all TestFactoryRegistry. - */ -class TestFactoryRegistryList -{ -private: - typedef CppUnitMap > 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( 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/contrib/cppunit-1.12.1/src/cppunit/TestFailure.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestFailure.cpp deleted file mode 100644 index e31e13893..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestFailure.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include -#include -#include - -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/contrib/cppunit-1.12.1/src/cppunit/TestLeaf.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestLeaf.cpp deleted file mode 100644 index 3d8767cf5..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestLeaf.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include - - -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/contrib/cppunit-1.12.1/src/cppunit/TestNamer.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestNamer.cpp deleted file mode 100644 index eec9be973..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestNamer.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include -#include -#include - - -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/contrib/cppunit-1.12.1/src/cppunit/TestPath.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestPath.cpp deleted file mode 100644 index a2783a293..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestPath.cpp +++ /dev/null @@ -1,254 +0,0 @@ -#include -#include -#include -#include - - -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 ) -{ - if ( pathAsString.empty() ) - return true; - - bool isRelative = pathAsString[0] != '/'; - - 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/contrib/cppunit-1.12.1/src/cppunit/TestPlugInDefaultImpl.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestPlugInDefaultImpl.cpp deleted file mode 100644 index 1e3982586..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestPlugInDefaultImpl.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include - -#if !defined(CPPUNIT_NO_TESTPLUGIN) - -#include -#include -#include - - -CPPUNIT_NS_BEGIN - - -TestPlugInDefaultImpl::TestPlugInDefaultImpl() -{ -} - - -TestPlugInDefaultImpl::~TestPlugInDefaultImpl() -{ -} - - -void -TestPlugInDefaultImpl::initialize( TestFactoryRegistry *registry, - const PlugInParameters ¶meters ) -{ -} - - -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/contrib/cppunit-1.12.1/src/cppunit/TestResult.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestResult.cpp deleted file mode 100644 index 6be19f1a1..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestResult.cpp +++ /dev/null @@ -1,196 +0,0 @@ -#include -#include -#include -#include -#include -#include -#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/contrib/cppunit-1.12.1/src/cppunit/TestResultCollector.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestResultCollector.cpp deleted file mode 100644 index 4371c5030..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestResultCollector.cpp +++ /dev/null @@ -1,117 +0,0 @@ -#include -#include - - -CPPUNIT_NS_BEGIN - - -TestResultCollector::TestResultCollector( SynchronizationObject *syncObject ) - : TestSuccessListener( syncObject ) -{ - reset(); -} - - -TestResultCollector::~TestResultCollector() -{ - freeFailures(); -} - - -void -TestResultCollector::freeFailures() -{ - TestFailures::iterator itFailure = m_failures.begin(); - while ( itFailure != m_failures.end() ) - delete *itFailure++; - m_failures.clear(); -} - - -void -TestResultCollector::reset() -{ - TestSuccessListener::reset(); - - ExclusiveZone zone( m_syncObject ); - freeFailures(); - m_testErrors = 0; - m_tests.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/contrib/cppunit-1.12.1/src/cppunit/TestRunner.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestRunner.cpp deleted file mode 100644 index 8d95a6308..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestRunner.cpp +++ /dev/null @@ -1,101 +0,0 @@ -#include -#include -#include -#include - - -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/contrib/cppunit-1.12.1/src/cppunit/TestSetUp.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestSetUp.cpp deleted file mode 100644 index d4d853089..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestSetUp.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include - -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/contrib/cppunit-1.12.1/src/cppunit/TestSuccessListener.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestSuccessListener.cpp deleted file mode 100644 index 3c9c8214c..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestSuccessListener.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include - - -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/contrib/cppunit-1.12.1/src/cppunit/TestSuite.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestSuite.cpp deleted file mode 100644 index 8dd2ea6e7..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestSuite.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include -#include -#include - -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 & -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/contrib/cppunit-1.12.1/src/cppunit/TestSuiteBuilderContext.cpp b/contrib/cppunit-1.12.1/src/cppunit/TestSuiteBuilderContext.cpp deleted file mode 100644 index ff71b52c1..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TestSuiteBuilderContext.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include -#include -#include -#include - - -CPPUNIT_NS_BEGIN - -TestSuiteBuilderContextBase::TestSuiteBuilderContextBase( - TestSuite &suite, - const TestNamer &namer, - TestFixtureFactory &factory ) - : m_suite( suite ) - , m_namer( namer ) - , m_factory( factory ) -{ -} - - -TestSuiteBuilderContextBase::~TestSuiteBuilderContextBase() -{ -} - - -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 ) -{ - Properties::iterator it = m_properties.begin(); - for ( ; it != m_properties.end(); ++it ) - { - if ( (*it).first == key ) - { - (*it).second = value; - return; - } - } - - Property property( key, value ); - m_properties.push_back( property ); -} - -const std::string -TestSuiteBuilderContextBase::getStringProperty( const std::string &key ) const -{ - Properties::const_iterator it = m_properties.begin(); - for ( ; it != m_properties.end(); ++it ) - { - if ( (*it).first == key ) - return (*it).second; - } - return ""; -} - - -CPPUNIT_NS_END diff --git a/contrib/cppunit-1.12.1/src/cppunit/TextOutputter.cpp b/contrib/cppunit-1.12.1/src/cppunit/TextOutputter.cpp deleted file mode 100644 index f74214fc6..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TextOutputter.cpp +++ /dev/null @@ -1,140 +0,0 @@ -#include -#include -#include -#include -#include - - -CPPUNIT_NS_BEGIN - - -TextOutputter::TextOutputter( TestResultCollector *result, - OStream &stream ) - : m_result( result ) - , m_stream( stream ) -{ -} - - -TextOutputter::~TextOutputter() -{ -} - - -void -TextOutputter::write() -{ - printHeader(); - m_stream << "\n"; - printFailures(); - m_stream << "\n"; -} - - -void -TextOutputter::printFailures() -{ - TestResultCollector::TestFailures::const_iterator itFailure = m_result->failures().begin(); - int failureNumber = 1; - while ( itFailure != m_result->failures().end() ) - { - m_stream << "\n"; - 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 << "\n"; - printFailureDetail( failure->thrownException() ); - m_stream << "\n"; -} - - -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() << "\n"; - m_stream << thrownException->message().details(); -} - - -void -TextOutputter::printHeader() -{ - if ( m_result->wasSuccessful() ) - m_stream << "\nOK (" << m_result->runTests () << " tests)\n" ; - else - { - m_stream << "\n"; - printFailureWarning(); - printStatistics(); - } -} - - -void -TextOutputter::printFailureWarning() -{ - m_stream << "!!!FAILURES!!!\n"; -} - - -void -TextOutputter::printStatistics() -{ - m_stream << "Test Results:\n"; - - m_stream << "Run: " << m_result->runTests() - << " Failures: " << m_result->testFailures() - << " Errors: " << m_result->testErrors() - << "\n"; -} - - -CPPUNIT_NS_END - diff --git a/contrib/cppunit-1.12.1/src/cppunit/TextTestProgressListener.cpp b/contrib/cppunit-1.12.1/src/cppunit/TextTestProgressListener.cpp deleted file mode 100644 index 7fa92ce39..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TextTestProgressListener.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include - - -CPPUNIT_NS_BEGIN - - -TextTestProgressListener::TextTestProgressListener() -{ -} - - -TextTestProgressListener::~TextTestProgressListener() -{ -} - - -void -TextTestProgressListener::startTest( Test *test ) -{ - stdCOut() << "."; -} - - -void -TextTestProgressListener::addFailure( const TestFailure &failure ) -{ - stdCOut() << ( failure.isError() ? "E" : "F" ); -} - - -void -TextTestProgressListener::endTestRun( Test *test, - TestResult *eventManager ) -{ - stdCOut() << "\n"; - stdCOut().flush(); -} - - -CPPUNIT_NS_END - diff --git a/contrib/cppunit-1.12.1/src/cppunit/TextTestResult.cpp b/contrib/cppunit-1.12.1/src/cppunit/TextTestResult.cpp deleted file mode 100644 index 871eb6da3..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TextTestResult.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include -#include -#include -#include -#include -#include - - -CPPUNIT_NS_BEGIN - - -TextTestResult::TextTestResult() -{ - addListener( this ); -} - - -void -TextTestResult::addFailure( const TestFailure &failure ) -{ - TestResultCollector::addFailure( failure ); - stdCOut() << ( failure.isError() ? "E" : "F" ); -} - - -void -TextTestResult::startTest( Test *test ) -{ - TestResultCollector::startTest (test); - stdCOut() << "."; -} - - -void -TextTestResult::print( OStream &stream ) -{ - TextOutputter outputter( this, stream ); - outputter.write(); -} - - -OStream & -operator <<( OStream &stream, - TextTestResult &result ) -{ - result.print (stream); return stream; -} - - -CPPUNIT_NS_END diff --git a/contrib/cppunit-1.12.1/src/cppunit/TextTestRunner.cpp b/contrib/cppunit-1.12.1/src/cppunit/TextTestRunner.cpp deleted file mode 100644 index 1534ec0cc..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TextTestRunner.cpp +++ /dev/null @@ -1,144 +0,0 @@ -// ==> Implementation of cppunit/ui/text/TestRunner.h - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -CPPUNIT_NS_BEGIN - - -/*! Constructs a new text runner. - * \param outputter used to print text result. Owned by the runner. - */ -TextTestRunner::TextTestRunner( Outputter *outputter ) - : m_result( new TestResultCollector() ) - , m_eventManager( new TestResult() ) - , m_outputter( outputter ) -{ - if ( !m_outputter ) - m_outputter = new TextOutputter( m_result, stdCOut() ); - 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 !defined( CPPUNIT_NO_STREAM ) - if ( doWait ) - { - stdCOut() << " to continue\n"; - stdCOut().flush(); - std::cin.get (); - } -#endif -} - - -void -TextTestRunner::printResult( bool doPrintResult ) -{ - stdCOut() << "\n"; - 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; -} - - -void -TextTestRunner::run( TestResult &controller, - const std::string &testPath ) -{ - TestRunner::run( controller, testPath ); -} - - -CPPUNIT_NS_END diff --git a/contrib/cppunit-1.12.1/src/cppunit/TypeInfoHelper.cpp b/contrib/cppunit-1.12.1/src/cppunit/TypeInfoHelper.cpp deleted file mode 100644 index bd01001b4..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/TypeInfoHelper.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include - -#if CPPUNIT_HAVE_RTTI - -#include - -#if CPPUNIT_HAVE_GCC_ABI_DEMANGLE -#include -#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/contrib/cppunit-1.12.1/src/cppunit/UnixDynamicLibraryManager.cpp b/contrib/cppunit-1.12.1/src/cppunit/UnixDynamicLibraryManager.cpp deleted file mode 100644 index f235cce5a..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/UnixDynamicLibraryManager.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include - -#if defined(CPPUNIT_HAVE_UNIX_DLL_LOADER) -#include - -#include -#include - - -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/contrib/cppunit-1.12.1/src/cppunit/Win32DynamicLibraryManager.cpp b/contrib/cppunit-1.12.1/src/cppunit/Win32DynamicLibraryManager.cpp deleted file mode 100644 index acadf4627..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/Win32DynamicLibraryManager.cpp +++ /dev/null @@ -1,73 +0,0 @@ -#include - -#if defined(CPPUNIT_HAVE_WIN32_DLL_LOADER) -#include - -#define WIN32_LEAN_AND_MEAN -#define NOGDI -#define NOUSER -#define NOKERNEL -#define NOSOUND -#define NOMINMAX -#define BLENDFUNCTION void // for mingw & gcc -#include - - -CPPUNIT_NS_BEGIN - - -DynamicLibraryManager::LibraryHandle -DynamicLibraryManager::doLoadLibrary( const std::string &libraryName ) -{ - return ::LoadLibraryA( 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; - ::FormatMessageA( - FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - GetLastError(), - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language - (LPSTR) &lpMsgBuf, - 0, - NULL - ); - - std::string message = (LPCSTR)lpMsgBuf; - - // Display the string. -// ::MessageBoxA( NULL, (LPCSTR)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/contrib/cppunit-1.12.1/src/cppunit/XmlDocument.cpp b/contrib/cppunit-1.12.1/src/cppunit/XmlDocument.cpp deleted file mode 100644 index 31f9115a7..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/XmlDocument.cpp +++ /dev/null @@ -1,106 +0,0 @@ -#include -#include -#include - - -CPPUNIT_NS_BEGIN - - -XmlDocument::XmlDocument( const std::string &encoding, - const std::string &styleSheet ) - : m_styleSheet( styleSheet ) - , m_rootElement( new XmlElement( "DummyRoot" ) ) - , m_standalone( true ) -{ - 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; -} - - -bool -XmlDocument::standalone() const -{ - return m_standalone; -} - - -void -XmlDocument::setStandalone( bool standalone ) -{ - m_standalone = standalone; -} - - -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 = "\n"; - - if ( !m_styleSheet.empty() ) - asString += "\n"; - - asString += m_rootElement->toString(); - - return asString; -} - - -CPPUNIT_NS_END - diff --git a/contrib/cppunit-1.12.1/src/cppunit/XmlElement.cpp b/contrib/cppunit-1.12.1/src/cppunit/XmlElement.cpp deleted file mode 100644 index f930ad4e9..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/XmlElement.cpp +++ /dev/null @@ -1,226 +0,0 @@ -#include -#include -#include - - -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 += "\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 += "<"; - break; - case '>': - escaped += ">"; - break; - case '&': - escaped += "&"; - break; - case '\'': - escaped += "'"; - break; - case '"': - escaped += """; - break; - default: - escaped += c; - } - } - - return escaped; -} - - -CPPUNIT_NS_END - diff --git a/contrib/cppunit-1.12.1/src/cppunit/XmlOutputter.cpp b/contrib/cppunit-1.12.1/src/cppunit/XmlOutputter.cpp deleted file mode 100644 index c605e335c..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/XmlOutputter.cpp +++ /dev/null @@ -1,205 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -CPPUNIT_NS_BEGIN - - -XmlOutputter::XmlOutputter( TestResultCollector *result, - 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::setStandalone( bool standalone ) -{ - m_xml->setStandalone( standalone ); -} - - -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(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/contrib/cppunit-1.12.1/src/cppunit/XmlOutputterHook.cpp b/contrib/cppunit-1.12.1/src/cppunit/XmlOutputterHook.cpp deleted file mode 100644 index 4b4e8d8e5..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/XmlOutputterHook.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include - - -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/contrib/cppunit-1.12.1/src/cppunit/cppunit.dsp b/contrib/cppunit-1.12.1/src/cppunit/cppunit.dsp deleted file mode 100644 index 1f588f518..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/cppunit.dsp +++ /dev/null @@ -1,707 +0,0 @@ -# Microsoft Developer Studio Project File - Name="cppunit" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=CPPUNIT - WIN32 DEBUG -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "cppunit.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "cppunit.mak" CFG="CPPUNIT - WIN32 DEBUG" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "cppunit - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "cppunit - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "cppunit - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GR /GX /Zd /O2 /I "..\..\include" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "WIN32" /YX /FD /c -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo -# Begin Special Build Tool -TargetPath=.\Release\cppunit.lib -TargetName=cppunit -SOURCE="$(InputPath)" -PostBuild_Desc=Copying target to lib/ -PostBuild_Cmds=copy "$(TargetPath)" ..\..\lib\$(TargetName).lib -# End Special Build Tool - -!ELSEIF "$(CFG)" == "cppunit - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "WIN32" /YX /FD /GZ /c -# ADD BASE RSC /l 0x40c /d "_DEBUG" -# ADD RSC /l 0x40c /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"Debug\cppunitd.lib" -# Begin Special Build Tool -TargetPath=.\Debug\cppunitd.lib -TargetName=cppunitd -SOURCE="$(InputPath)" -PostBuild_Desc=Copying target to lib/ -PostBuild_Cmds=copy "$(TargetPath)" ..\..\lib\$(TargetName).lib -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "cppunit - Win32 Release" -# Name "cppunit - Win32 Debug" -# Begin Group "documentation" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\ChangeLog -# End Source File -# Begin Source File - -SOURCE=..\..\CodingGuideLines.txt -# End Source File -# Begin Source File - -SOURCE=..\..\doc\cookbook.dox -# End Source File -# Begin Source File - -SOURCE=..\..\doc\FAQ -# End Source File -# Begin Source File - -SOURCE="..\..\INSTALL-unix" -# End Source File -# Begin Source File - -SOURCE="..\..\INSTALL-WIN32.txt" -# End Source File -# Begin Source File - -SOURCE=..\..\doc\Money.dox -# End Source File -# Begin Source File - -SOURCE=..\..\NEWS -# End Source File -# Begin Source File - -SOURCE=..\..\doc\other_documentation.dox -# End Source File -# Begin Source File - -SOURCE=..\..\THANKS -# End Source File -# Begin Source File - -SOURCE=..\..\TODO -# End Source File -# End Group -# Begin Group "listener" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\BriefTestProgressListener.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\BriefTestProgressListener.h -# End Source File -# Begin Source File - -SOURCE=.\TestResultCollector.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestResultCollector.h -# End Source File -# Begin Source File - -SOURCE=.\TestSuccessListener.cpp -# End Source File -# Begin Source File - -SOURCE=.\TextTestProgressListener.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TextTestProgressListener.h -# End Source File -# Begin Source File - -SOURCE=.\TextTestResult.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TextTestResult.h -# End Source File -# End Group -# Begin Group "textui" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\include\cppunit\ui\text\TestRunner.h -# End Source File -# Begin Source File - -SOURCE=.\TextTestRunner.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TextTestRunner.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\ui\text\TextTestRunner.h -# End Source File -# End Group -# Begin Group "portability" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE="..\..\include\cppunit\config\config-bcb5.h" -# End Source File -# Begin Source File - -SOURCE="..\..\include\cppunit\config\config-evc4.h" -# End Source File -# Begin Source File - -SOURCE="..\..\include\cppunit\config\config-mac.h" -# End Source File -# Begin Source File - -SOURCE="..\..\include\cppunit\config\config-msvc6.h" -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\config\CppUnitApi.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\portability\CppUnitDeque.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\portability\CppUnitMap.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\portability\CppUnitSet.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\portability\CppUnitStack.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\portability\CppUnitVector.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\portability\FloatingPoint.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Portability.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\config\SelectDllLoader.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\config\SourcePrefix.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\portability\Stream.h -# End Source File -# End Group -# Begin Group "output" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\CompilerOutputter.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\CompilerOutputter.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Outputter.h -# End Source File -# Begin Source File - -SOURCE=.\TextOutputter.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TextOutputter.h -# End Source File -# Begin Source File - -SOURCE=.\XmlOutputter.cpp - -!IF "$(CFG)" == "cppunit - Win32 Release" - -!ELSEIF "$(CFG)" == "cppunit - Win32 Debug" - -# ADD CPP /W3 - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\XmlOutputter.h -# End Source File -# Begin Source File - -SOURCE=.\XmlOutputterHook.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\XmlOutputterHook.h -# End Source File -# End Group -# Begin Group "core" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\AdditionalMessage.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\AdditionalMessage.h -# End Source File -# Begin Source File - -SOURCE=.\Asserter.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Asserter.h -# End Source File -# Begin Source File - -SOURCE=.\Exception.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Exception.h -# End Source File -# Begin Source File - -SOURCE=.\Message.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Message.h -# End Source File -# Begin Source File - -SOURCE=.\SourceLine.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\SourceLine.h -# End Source File -# Begin Source File - -SOURCE=.\SynchronizedObject.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\SynchronizedObject.h -# End Source File -# Begin Source File - -SOURCE=.\Test.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Test.h -# End Source File -# Begin Source File - -SOURCE=.\TestAssert.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestAssert.h -# End Source File -# Begin Source File - -SOURCE=.\TestCase.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestCase.h -# End Source File -# Begin Source File - -SOURCE=.\TestComposite.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestComposite.h -# End Source File -# Begin Source File - -SOURCE=.\TestFailure.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestFailure.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestFixture.h -# End Source File -# Begin Source File - -SOURCE=.\TestLeaf.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestLeaf.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestListener.h -# End Source File -# Begin Source File - -SOURCE=.\TestPath.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestPath.h -# End Source File -# Begin Source File - -SOURCE=.\TestResult.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestResult.h -# End Source File -# Begin Source File - -SOURCE=.\TestRunner.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestRunner.h -# End Source File -# Begin Source File - -SOURCE=.\TestSuite.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestSuite.h -# End Source File -# End Group -# Begin Group "helper" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\AutoRegisterSuite.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\HelperMacros.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestCaller.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestFactory.h -# End Source File -# Begin Source File - -SOURCE=.\TestFactoryRegistry.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestFactoryRegistry.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestFixtureFactory.h -# End Source File -# Begin Source File - -SOURCE=.\TestNamer.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestNamer.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestSuiteBuilder.h -# End Source File -# Begin Source File - -SOURCE=.\TestSuiteBuilderContext.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestSuiteBuilderContext.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestSuiteFactory.h -# End Source File -# Begin Source File - -SOURCE=.\TypeInfoHelper.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TypeInfoHelper.h -# End Source File -# End Group -# Begin Group "extension" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\ExceptionTestCaseDecorator.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\Orthodox.h -# End Source File -# Begin Source File - -SOURCE=.\RepeatedTest.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\RepeatedTest.h -# End Source File -# Begin Source File - -SOURCE=.\TestCaseDecorator.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestCaseDecorator.h -# End Source File -# Begin Source File - -SOURCE=.\TestDecorator.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestDecorator.h -# End Source File -# Begin Source File - -SOURCE=.\TestSetUp.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestSetUp.h -# End Source File -# End Group -# Begin Group "plugin" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\BeOsDynamicLibraryManager.cpp -# End Source File -# Begin Source File - -SOURCE=.\DynamicLibraryManager.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\plugin\DynamicLibraryManager.h -# End Source File -# Begin Source File - -SOURCE=.\DynamicLibraryManagerException.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\plugin\DynamicLibraryManagerException.h -# End Source File -# Begin Source File - -SOURCE=.\PlugInManager.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\plugin\PlugInManager.h -# End Source File -# Begin Source File - -SOURCE=.\PlugInParameters.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\plugin\PlugInParameters.h -# End Source File -# Begin Source File - -SOURCE=.\ShlDynamicLibraryManager.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\plugin\TestPlugIn.h -# End Source File -# Begin Source File - -SOURCE=.\TestPlugInDefaultImpl.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\plugin\TestPlugInDefaultImpl.h -# End Source File -# Begin Source File - -SOURCE=.\UnixDynamicLibraryManager.cpp -# End Source File -# Begin Source File - -SOURCE=.\Win32DynamicLibraryManager.cpp -# End Source File -# End Group -# Begin Group "tools" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\include\cppunit\tools\Algorithm.h -# End Source File -# Begin Source File - -SOURCE=.\StringTools.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\tools\StringTools.h -# End Source File -# Begin Source File - -SOURCE=.\XmlDocument.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\tools\XmlDocument.h -# End Source File -# Begin Source File - -SOURCE=.\XmlElement.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\tools\XmlElement.h -# End Source File -# End Group -# Begin Group "protector" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\DefaultProtector.cpp -# End Source File -# Begin Source File - -SOURCE=.\DefaultProtector.h -# End Source File -# Begin Source File - -SOURCE=.\Protector.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Protector.h -# End Source File -# Begin Source File - -SOURCE=.\ProtectorChain.cpp -# End Source File -# Begin Source File - -SOURCE=.\ProtectorChain.h -# End Source File -# Begin Source File - -SOURCE=.\ProtectorContext.h -# End Source File -# End Group -# Begin Source File - -SOURCE=..\..\configure.in -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Makefile.am -# End Source File -# Begin Source File - -SOURCE=.\Makefile.am -# End Source File -# End Target -# End Project diff --git a/contrib/cppunit-1.12.1/src/cppunit/cppunit.vcproj b/contrib/cppunit-1.12.1/src/cppunit/cppunit.vcproj deleted file mode 100644 index e8247acbb..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/cppunit.vcproj +++ /dev/null @@ -1,2707 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/contrib/cppunit-1.12.1/src/cppunit/cppunit_dll.dsp b/contrib/cppunit-1.12.1/src/cppunit/cppunit_dll.dsp deleted file mode 100644 index 805fec3b0..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/cppunit_dll.dsp +++ /dev/null @@ -1,682 +0,0 @@ -# Microsoft Developer Studio Project File - Name="cppunit_dll" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=cppunit_dll - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "cppunit_dll.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "cppunit_dll.mak" CFG="cppunit_dll - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "cppunit_dll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "cppunit_dll - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "cppunit_dll - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "cppunit_dll___Win32_Release" -# PROP BASE Intermediate_Dir "cppunit_dll___Win32_Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "ReleaseDll" -# PROP Intermediate_Dir "ReleaseDll" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# 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 -# ADD CPP /nologo /MD /W3 /GR /GX /Zd /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "CPPUNIT_BUILD_DLL" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# 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 -# 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 -# SUBTRACT LINK32 /pdb:none -# Begin Special Build Tool -TargetDir=.\ReleaseDll -TargetPath=.\ReleaseDll\cppunit_dll.dll -TargetName=cppunit_dll -SOURCE="$(InputPath)" -PostBuild_Desc=Copying target to lib/ -PostBuild_Cmds=copy "$(TargetPath)" ..\..\lib\$(TargetName).dll copy "$(TargetDir)\$(TargetName).lib" ..\..\lib\$(TargetName).lib -# End Special Build Tool - -!ELSEIF "$(CFG)" == "cppunit_dll - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "cppunit_dll___Win32_Debug" -# PROP BASE Intermediate_Dir "cppunit_dll___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "DebugDll" -# PROP Intermediate_Dir "DebugDll" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# 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 -# 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 -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x40c /d "_DEBUG" -# ADD RSC /l 0x40c /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# 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 -# 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 -# SUBTRACT LINK32 /pdb:none -# Begin Special Build Tool -TargetDir=.\DebugDll -TargetPath=.\DebugDll\cppunitd_dll.dll -TargetName=cppunitd_dll -SOURCE="$(InputPath)" -PostBuild_Desc=Copying target to lib/ -PostBuild_Cmds=copy "$(TargetPath)" ..\..\lib\$(TargetName).dll copy "$(TargetDir)\$(TargetName).lib" ..\..\lib\$(TargetName).lib -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "cppunit_dll - Win32 Release" -# Name "cppunit_dll - Win32 Debug" -# Begin Group "DllSpecific" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\DllMain.cpp -# End Source File -# End Group -# Begin Group "extension" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\ExceptionTestCaseDecorator.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\Orthodox.h -# End Source File -# Begin Source File - -SOURCE=.\RepeatedTest.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\RepeatedTest.h -# End Source File -# Begin Source File - -SOURCE=.\TestCaseDecorator.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestCaseDecorator.h -# End Source File -# Begin Source File - -SOURCE=.\TestDecorator.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestDecorator.h -# End Source File -# Begin Source File - -SOURCE=.\TestSetUp.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestSetUp.h -# End Source File -# End Group -# Begin Group "helper" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\AutoRegisterSuite.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\HelperMacros.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestCaller.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestFactory.h -# End Source File -# Begin Source File - -SOURCE=.\TestFactoryRegistry.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestFactoryRegistry.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestFixtureFactory.h -# End Source File -# Begin Source File - -SOURCE=.\TestNamer.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestNamer.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestSuiteBuilder.h -# End Source File -# Begin Source File - -SOURCE=.\TestSuiteBuilderContext.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestSuiteBuilderContext.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TestSuiteFactory.h -# End Source File -# Begin Source File - -SOURCE=.\TypeInfoHelper.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\TypeInfoHelper.h -# End Source File -# End Group -# Begin Group "core" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\AdditionalMessage.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\AdditionalMessage.h -# End Source File -# Begin Source File - -SOURCE=.\Asserter.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Asserter.h -# End Source File -# Begin Source File - -SOURCE=.\Exception.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Exception.h -# End Source File -# Begin Source File - -SOURCE=.\Message.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Message.h -# End Source File -# Begin Source File - -SOURCE=.\SourceLine.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\SourceLine.h -# End Source File -# Begin Source File - -SOURCE=.\SynchronizedObject.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\SynchronizedObject.h -# End Source File -# Begin Source File - -SOURCE=.\Test.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Test.h -# End Source File -# Begin Source File - -SOURCE=.\TestAssert.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestAssert.h -# End Source File -# Begin Source File - -SOURCE=.\TestCase.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestCase.h -# End Source File -# Begin Source File - -SOURCE=.\TestComposite.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestComposite.h -# End Source File -# Begin Source File - -SOURCE=.\TestFailure.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestFailure.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestFixture.h -# End Source File -# Begin Source File - -SOURCE=.\TestLeaf.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestLeaf.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestListener.h -# End Source File -# Begin Source File - -SOURCE=.\TestPath.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestPath.h -# End Source File -# Begin Source File - -SOURCE=.\TestResult.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestResult.h -# End Source File -# Begin Source File - -SOURCE=.\TestRunner.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestRunner.h -# End Source File -# Begin Source File - -SOURCE=.\TestSuite.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestSuite.h -# End Source File -# End Group -# Begin Group "output" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\CompilerOutputter.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\CompilerOutputter.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Outputter.h -# End Source File -# Begin Source File - -SOURCE=.\TestResultCollector.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TestResultCollector.h -# End Source File -# Begin Source File - -SOURCE=.\TextOutputter.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TextOutputter.h -# End Source File -# Begin Source File - -SOURCE=.\XmlOutputter.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\XmlOutputter.h -# End Source File -# Begin Source File - -SOURCE=.\XmlOutputterHook.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\XmlOutputterHook.h -# End Source File -# End Group -# Begin Group "portability" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE="..\..\include\cppunit\config\config-bcb5.h" -# End Source File -# Begin Source File - -SOURCE="..\..\include\cppunit\config\config-mac.h" -# End Source File -# Begin Source File - -SOURCE="..\..\include\cppunit\config\config-msvc6.h" -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\config\CppUnitApi.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\portability\CppUnitDeque.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\portability\CppUnitMap.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\portability\CppUnitSet.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\portability\CppUnitStack.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\portability\CppUnitVector.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Portability.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\config\SelectDllLoader.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\config\SourcePrefix.h -# End Source File -# End Group -# Begin Group "textui" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\include\cppunit\ui\text\TestRunner.h -# End Source File -# Begin Source File - -SOURCE=.\TextTestRunner.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TextTestRunner.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\ui\text\TextTestRunner.h -# End Source File -# End Group -# Begin Group "listener" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\BriefTestProgressListener.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\BriefTestProgressListener.h -# End Source File -# Begin Source File - -SOURCE=.\TestSuccessListener.cpp -# End Source File -# Begin Source File - -SOURCE=.\TextTestProgressListener.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TextTestProgressListener.h -# End Source File -# Begin Source File - -SOURCE=.\TextTestResult.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\TextTestResult.h -# End Source File -# End Group -# Begin Group "documentation" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\ChangeLog -# End Source File -# Begin Source File - -SOURCE=..\..\doc\cookbook.dox -# End Source File -# Begin Source File - -SOURCE=..\..\doc\FAQ -# End Source File -# Begin Source File - -SOURCE=..\..\NEWS -# End Source File -# Begin Source File - -SOURCE=..\..\doc\other_documentation.dox -# End Source File -# Begin Source File - -SOURCE=..\..\TODO -# End Source File -# End Group -# Begin Group "plugin" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\BeosDynamicLibraryManager.cpp -# End Source File -# Begin Source File - -SOURCE=.\DynamicLibraryManager.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\plugin\DynamicLibraryManager.h -# End Source File -# Begin Source File - -SOURCE=.\DynamicLibraryManagerException.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\plugin\DynamicLibraryManagerException.h -# End Source File -# Begin Source File - -SOURCE=.\PlugInManager.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\plugin\PlugInManager.h -# End Source File -# Begin Source File - -SOURCE=.\PlugInParameters.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\plugin\PlugInParameters.h -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\plugin\TestPlugIn.h -# End Source File -# Begin Source File - -SOURCE=.\TestPlugInDefaultImpl.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\plugin\TestPlugInDefaultImpl.h -# End Source File -# Begin Source File - -SOURCE=.\UnixDynamicLibraryManager.cpp -# End Source File -# Begin Source File - -SOURCE=.\Win32DynamicLibraryManager.cpp -# End Source File -# End Group -# Begin Group "tools" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\StringTools.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\tools\StringTools.h -# End Source File -# Begin Source File - -SOURCE=.\XmlDocument.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\tools\XmlDocument.h -# End Source File -# Begin Source File - -SOURCE=.\XmlElement.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\tools\XmlElement.h -# End Source File -# End Group -# Begin Group "protector" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\DefaultProtector.cpp -# End Source File -# Begin Source File - -SOURCE=.\DefaultProtector.h -# End Source File -# Begin Source File - -SOURCE=.\Protector.cpp -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Protector.h -# End Source File -# Begin Source File - -SOURCE=.\ProtectorChain.cpp -# End Source File -# Begin Source File - -SOURCE=.\ProtectorChain.h -# End Source File -# Begin Source File - -SOURCE=.\ProtectorContext.h -# End Source File -# End Group -# Begin Source File - -SOURCE="..\..\INSTALL-WIN32.txt" -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\Makefile.am -# End Source File -# Begin Source File - -SOURCE=.\Makefile.am -# End Source File -# Begin Source File - -SOURCE=..\..\include\cppunit\extensions\XmlInputHelper.h -# End Source File -# End Target -# End Project diff --git a/contrib/cppunit-1.12.1/src/cppunit/cppunit_dll.vcproj b/contrib/cppunit-1.12.1/src/cppunit/cppunit_dll.vcproj deleted file mode 100644 index bc701ecf7..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/cppunit_dll.vcproj +++ /dev/null @@ -1,1673 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/contrib/cppunit-1.12.1/src/cppunit/cppunitvc9.vcproj b/contrib/cppunit-1.12.1/src/cppunit/cppunitvc9.vcproj deleted file mode 100644 index 6022d51ec..000000000 --- a/contrib/cppunit-1.12.1/src/cppunit/cppunitvc9.vcproj +++ /dev/null @@ -1,2708 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/contrib/cppunit_note.txt b/contrib/cppunit_note.txt deleted file mode 100644 index cf1e02608..000000000 --- a/contrib/cppunit_note.txt +++ /dev/null @@ -1,8 +0,0 @@ -This is a "slim" version of CPPunit. It contains everything we need, but nothing more. - -- Tools have been removed -- x64-Build configs have been added -- VC6 build & headers have been removed (Assimp can't be compiled with vc6) -- vc9 solution has been added, vc8 solution uses Assimp 'FastSTL' settings - ---- Alex \ No newline at end of file diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 92b618558..ae6ace59d 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,138 +1,59 @@ cmake_minimum_required( VERSION 2.6 ) +INCLUDE( AddGTest ) + INCLUDE_DIRECTORIES( ${Assimp_SOURCE_DIR}/include ${Assimp_SOURCE_DIR}/code - ${Assimp_SOURCE_DIR}/contrib/cppunit-1.12.1/include ) # Add the temporary output directories to the library path to make sure the # Assimp library can be found, even if it is not installed system-wide yet. LINK_DIRECTORIES( ${Assimp_BINARY_DIR} ${AssetImporter_BINARY_DIR}/lib ) -SOURCE_GROUP( unit FILES +SOURCE_GROUP( unit FILES unit/CCompilerTest.c - unit/BoostWorkaround/tupletest.cpp ) -if(WIN32) -SET( CPPUNIT_SRCS - ../contrib/cppunit-1.12.1/src/cppunit/AdditionalMessage.cpp - ../contrib/cppunit-1.12.1/src/cppunit/Asserter.cpp - ../contrib/cppunit-1.12.1/src/cppunit/BeOsDynamicLibraryManager.cpp - ../contrib/cppunit-1.12.1/src/cppunit/BriefTestProgressListener.cpp - ../contrib/cppunit-1.12.1/src/cppunit/CompilerOutputter.cpp - ../contrib/cppunit-1.12.1/src/cppunit/DefaultProtector.cpp - ../contrib/cppunit-1.12.1/src/cppunit/DefaultProtector.h - ../contrib/cppunit-1.12.1/src/cppunit/DllMain.cpp - ../contrib/cppunit-1.12.1/src/cppunit/DynamicLibraryManager.cpp - ../contrib/cppunit-1.12.1/src/cppunit/DynamicLibraryManagerException.cpp - ../contrib/cppunit-1.12.1/src/cppunit/Exception.cpp - ../contrib/cppunit-1.12.1/src/cppunit/Message.cpp - ../contrib/cppunit-1.12.1/src/cppunit/PlugInManager.cpp - ../contrib/cppunit-1.12.1/src/cppunit/PlugInParameters.cpp - ../contrib/cppunit-1.12.1/src/cppunit/Protector.cpp - ../contrib/cppunit-1.12.1/src/cppunit/ProtectorChain.cpp - ../contrib/cppunit-1.12.1/src/cppunit/ProtectorChain.h - ../contrib/cppunit-1.12.1/src/cppunit/ProtectorContext.h - ../contrib/cppunit-1.12.1/src/cppunit/RepeatedTest.cpp - ../contrib/cppunit-1.12.1/src/cppunit/ShlDynamicLibraryManager.cpp - ../contrib/cppunit-1.12.1/src/cppunit/SourceLine.cpp - ../contrib/cppunit-1.12.1/src/cppunit/StringTools.cpp - ../contrib/cppunit-1.12.1/src/cppunit/SynchronizedObject.cpp - ../contrib/cppunit-1.12.1/src/cppunit/Test.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestAssert.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestCase.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestCaseDecorator.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestComposite.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestDecorator.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestFactoryRegistry.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestFailure.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestLeaf.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestNamer.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestPath.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestPlugInDefaultImpl.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestResult.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestResultCollector.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestRunner.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestSetUp.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestSuccessListener.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestSuite.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TestSuiteBuilderContext.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TextOutputter.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TextTestProgressListener.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TextTestResult.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TextTestRunner.cpp - ../contrib/cppunit-1.12.1/src/cppunit/TypeInfoHelper.cpp - ../contrib/cppunit-1.12.1/src/cppunit/UnixDynamicLibraryManager.cpp - ../contrib/cppunit-1.12.1/src/cppunit/Win32DynamicLibraryManager.cpp - ../contrib/cppunit-1.12.1/src/cppunit/XmlDocument.cpp - ../contrib/cppunit-1.12.1/src/cppunit/XmlElement.cpp - ../contrib/cppunit-1.12.1/src/cppunit/XmlOutputter.cpp - ../contrib/cppunit-1.12.1/src/cppunit/XmlOutputterHook.cpp -) -SOURCE_GROUP(cppunit FILES ${CPPUNIT_SRCS}) -else() - find_library(CPPUNIT_LIBRARY cppunit) -endif() - SET( TEST_SRCS unit/utFindDegenerates.cpp - unit/utFindDegenerates.h unit/utFindInvalidData.cpp - unit/utFindInvalidData.h unit/utFixInfacingNormals.cpp unit/utGenNormals.cpp - unit/utGenNormals.h unit/utImporter.cpp - unit/utImporter.h unit/utImproveCacheLocality.cpp unit/utJoinVertices.cpp - unit/utJoinVertices.h unit/utLimitBoneWeights.cpp - unit/utLimitBoneWeights.h unit/utMaterialSystem.cpp - unit/utMaterialSystem.h unit/utPretransformVertices.cpp - unit/utPretransformVertices.h unit/utRemoveComments.cpp - unit/utRemoveComments.h unit/utRemoveComponent.cpp - unit/utRemoveComponent.h unit/utRemoveRedundantMaterials.cpp - unit/utRemoveRedundantMaterials.h unit/utScenePreprocessor.cpp - unit/utScenePreprocessor.h unit/utSharedPPData.cpp - unit/utSharedPPData.h unit/utSortByPType.cpp - unit/utSortByPType.h unit/utSplitLargeMeshes.cpp - unit/utSplitLargeMeshes.h unit/utTargetAnimation.cpp - unit/utTargetAnimation.h unit/utTextureTransform.cpp unit/utTriangulate.cpp - unit/utTriangulate.h unit/utVertexTriangleAdjacency.cpp - unit/utVertexTriangleAdjacency.h unit/utNoBoostTest.cpp - unit/utNoBoostTest.h - unit/BoostWorkaround/tupletest.cpp ) -SOURCE_GROUP(tests FILES ${TEST_SRCS}) +SOURCE_GROUP( tests FILES ${TEST_SRCS} ) - -add_executable( unit +add_executable( unit unit/CCompilerTest.c unit/Main.cpp unit/UnitTestPCH.cpp unit/UnitTestPCH.h ${TEST_SRCS} - ${CPPUNIT_SRCS} ) -SET_PROPERTY(TARGET assimp PROPERTY DEBUG_POSTFIX ${ASSIMP_DEBUG_POSTFIX}) +SET_PROPERTY( TARGET assimp PROPERTY DEBUG_POSTFIX ${ASSIMP_DEBUG_POSTFIX} ) -target_link_libraries ( unit assimp ${CPPUNIT_LIBRARY} ) +add_dependencies( unit gtest ) +target_link_libraries( unit assimp + debug ${GTEST_DEBUG_LIBRARIES} + optimized ${GTEST_RELEASE_LIBRARIES} +) diff --git a/test/unit/BoostWorkaround/tupletest.cpp b/test/unit/BoostWorkaround/tupletest.cpp deleted file mode 100644 index 75f06ffcb..000000000 --- a/test/unit/BoostWorkaround/tupletest.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "BoostWorkaround/boost/tuple/tuple.hpp" - -struct another -{int dummy;}; - -boost::tuple first; -boost::tuple second; -boost::tuple<> third; -boost::tuple last; - -void test () { - - // Implicit conversion - first = boost::make_tuple(4,4,4); - - // FIXME: Explicit conversion not really required yet - last = (boost::tuple)boost::make_tuple(4.,4.,4.); - - // Non-const access - first.get<0>() = 1; - first.get<1>() = 2; - first.get<2>() = 3; - - float f = last.get<2>(); - bool b = second.get<3>(); - - // Const cases - const boost::tuple constant = boost::make_tuple(4,4,4); - first.get<0>() = constant.get<0>(); - - // Direct assignment w. explicit conversion - last = first; -} diff --git a/test/unit/Main.cpp b/test/unit/Main.cpp index 33840a3c0..4c9b52cb6 100644 --- a/test/unit/Main.cpp +++ b/test/unit/Main.cpp @@ -1,26 +1,19 @@ - #include "UnitTestPCH.h" -//#include -#include -#include -#include -#include -#include -#include - #include #include -int main (int argc, char* argv[]) +int main(int argc, char* argv[]) { + ::testing::InitGoogleTest(&argc, argv); + // seed the randomizer with the current system time time_t t;time(&t); srand((unsigned int)t); // ............................................................................ - // create a logger from both CPP + // create a logger from both CPP Assimp::DefaultLogger::create("AssimpLog_Cpp.txt",Assimp::Logger::VERBOSE, aiDefaultLogStream_DEBUGGER | aiDefaultLogStream_FILE); @@ -29,40 +22,11 @@ int main (int argc, char* argv[]) aiLogStream logstream= aiGetPredefinedLogStream(aiDefaultLogStream_FILE, "AssimpLog_C.txt"); aiAttachLogStream(&logstream); - - // ............................................................................ - - // Informiert Test-Listener ueber Testresultate - CPPUNIT_NS :: TestResult testresult; - - // Listener zum Sammeln der Testergebnisse registrieren - CPPUNIT_NS :: TestResultCollector collectedresults; - testresult.addListener (&collectedresults); - - // Listener zur Ausgabe der Ergebnisse einzelner Tests - CPPUNIT_NS :: BriefTestProgressListener progress; - testresult.addListener (&progress); - - // Test-Suite ueber die Registry im Test-Runner einfuegen - CPPUNIT_NS :: TestRunner testrunner; - testrunner.addTest (CPPUNIT_NS :: TestFactoryRegistry :: getRegistry ().makeTest ()); - testrunner.run (testresult); - - // Resultate im Compiler-Format ausgeben - CPPUNIT_NS :: CompilerOutputter compileroutputter (&collectedresults, std::cerr); - compileroutputter.write (); - -#if 0 - // Resultate im XML-Format ausgeben - std::ofstream of("output.xml"); - CPPUNIT_NS :: XmlOutputter xml (&collectedresults, of); - xml.write (); -#endif + int result = RUN_ALL_TESTS(); // ............................................................................ // but shutdown must be done from C to ensure proper deallocation aiDetachAllLogStreams(); - // Rueckmeldung, ob Tests erfolgreich waren - return collectedresults.wasSuccessful () ? 0 : 1; + return result; } diff --git a/test/unit/UnitTestPCH.h b/test/unit/UnitTestPCH.h index edc4be0bf..b57f523f0 100644 --- a/test/unit/UnitTestPCH.h +++ b/test/unit/UnitTestPCH.h @@ -8,11 +8,9 @@ #include #include -// CPPUNIT -#include -#include +#include #include #undef min -#undef max \ No newline at end of file +#undef max diff --git a/test/unit/utExport.cpp b/test/unit/utExport.cpp index ec5088510..e444b7af5 100644 --- a/test/unit/utExport.cpp +++ b/test/unit/utExport.cpp @@ -1,74 +1,82 @@ - #include "UnitTestPCH.h" -#include "utExport.h" + +#include +#include + #ifndef ASSIMP_BUILD_NO_EXPORT -CPPUNIT_TEST_SUITE_REGISTRATION (ExporterTest); +class ExporterTest : public ::testing::Test { +public: -void ExporterTest :: setUp (void) -{ - - ex = new Assimp::Exporter(); - im = new Assimp::Importer(); + virtual void SetUp() + { + ex = new Assimp::Exporter(); + im = new Assimp::Importer(); - pTest = im->ReadFile("../../test/models/X/test.x",0); -} + pTest = im->ReadFile("../../test/models/X/test.x",0); + } + virtual void TearDown() + { + delete ex; + delete im; + } -void ExporterTest :: tearDown (void) -{ - delete ex; - delete im; -} +protected: + const aiScene* pTest; + Assimp::Exporter* ex; + Assimp::Importer* im; +}; -void ExporterTest :: testExportToFile (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(ExporterTest, testExportToFile) { const char* file = "unittest_output.dae"; - CPPUNIT_ASSERT_EQUAL(AI_SUCCESS,ex->Export(pTest,"collada",file)); + EXPECT_EQ(AI_SUCCESS,ex->Export(pTest,"collada",file)); // check if we can read it again - CPPUNIT_ASSERT(im->ReadFile(file,0)); + EXPECT_TRUE(im->ReadFile(file,0)); } - -void ExporterTest :: testExportToBlob (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(ExporterTest, testExportToBlob) { const aiExportDataBlob* blob = ex->ExportToBlob(pTest,"collada"); - CPPUNIT_ASSERT(blob); - CPPUNIT_ASSERT(blob->data); - CPPUNIT_ASSERT(blob->size > 0); - CPPUNIT_ASSERT(!blob->name.length); + ASSERT_TRUE(blob); + EXPECT_TRUE(blob->data); + EXPECT_GT(blob->size, 0U); + EXPECT_EQ(0U, blob->name.length); // XXX test chained blobs (i.e. obj file with accompanying mtl script) // check if we can read it again - CPPUNIT_ASSERT(im->ReadFileFromMemory(blob->data,blob->size,0,"dae")); + EXPECT_TRUE(im->ReadFileFromMemory(blob->data,blob->size,0,"dae")); } - -void ExporterTest :: testCppExportInterface (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(ExporterTest, testCppExportInterface) { - CPPUNIT_ASSERT(ex->GetExportFormatCount() > 0); + EXPECT_TRUE(ex->GetExportFormatCount() > 0); for(size_t i = 0; i < ex->GetExportFormatCount(); ++i) { const aiExportFormatDesc* const desc = ex->GetExportFormatDescription(i); - CPPUNIT_ASSERT(desc); - CPPUNIT_ASSERT(desc->description && strlen(desc->description)); - CPPUNIT_ASSERT(desc->fileExtension && strlen(desc->fileExtension)); - CPPUNIT_ASSERT(desc->id && strlen(desc->id)); + ASSERT_TRUE(desc); + EXPECT_TRUE(desc->description && strlen(desc->description)); + EXPECT_TRUE(desc->fileExtension && strlen(desc->fileExtension)); + EXPECT_TRUE(desc->id && strlen(desc->id)); } - CPPUNIT_ASSERT(ex->IsDefaultIOHandler()); + EXPECT_TRUE(ex->IsDefaultIOHandler()); } - -void ExporterTest :: testCExportInterface (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(ExporterTest, testCExportInterface) { - CPPUNIT_ASSERT(aiGetExportFormatCount() > 0); + EXPECT_TRUE(aiGetExportFormatCount() > 0); for(size_t i = 0; i < aiGetExportFormatCount(); ++i) { const aiExportFormatDesc* const desc = aiGetExportFormatDescription(i); - CPPUNIT_ASSERT(desc); + EXPECT_TRUE(desc); // rest has aleady been validated by testCppExportInterface } } diff --git a/test/unit/utExport.h b/test/unit/utExport.h deleted file mode 100644 index 722d19e2e..000000000 --- a/test/unit/utExport.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef INCLUDED_UT_EXPORT_H -#define INCLUDED_UT_EXPORT_H - -#ifndef ASSIMP_BUILD_NO_EXPORT - -#include -#include - -using namespace Assimp; - -class ExporterTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (ExporterTest); - CPPUNIT_TEST (testExportToFile); - CPPUNIT_TEST (testExportToBlob); - CPPUNIT_TEST (testCppExportInterface); - CPPUNIT_TEST (testCExportInterface); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testExportToFile (void); - void testExportToBlob (void); - void testCppExportInterface (void); - void testCExportInterface (void); - - private: - - - const aiScene* pTest; - Assimp::Exporter* ex; - Assimp::Importer* im; -}; - -#endif - -#endif diff --git a/test/unit/utFindDegenerates.cpp b/test/unit/utFindDegenerates.cpp index 11fd47ad8..71b6fb5e8 100644 --- a/test/unit/utFindDegenerates.cpp +++ b/test/unit/utFindDegenerates.cpp @@ -1,12 +1,26 @@ - #include "UnitTestPCH.h" -#include "utFindDegenerates.h" + +#include -CPPUNIT_TEST_SUITE_REGISTRATION (FindDegeneratesProcessTest); +using namespace std; +using namespace Assimp; + +class FindDegeneratesProcessTest : public ::testing::Test +{ +public: + + virtual void SetUp(); + virtual void TearDown(); + +protected: + + aiMesh* mesh; + FindDegeneratesProcess* process; +}; // ------------------------------------------------------------------------------------------------ -void FindDegeneratesProcessTest :: setUp (void) +void FindDegeneratesProcessTest::SetUp() { mesh = new aiMesh(); process = new FindDegeneratesProcess(); @@ -22,31 +36,30 @@ void FindDegeneratesProcessTest :: setUp (void) } mesh->mPrimitiveTypes = aiPrimitiveType_LINE | aiPrimitiveType_POINT | - aiPrimitiveType_POLYGON | aiPrimitiveType_TRIANGLE; + aiPrimitiveType_POLYGON | aiPrimitiveType_TRIANGLE; unsigned int numOut = 0, numFaces = 0; for (unsigned int i = 0; i < 1000; ++i) { aiFace& f = mesh->mFaces[i]; - f.mNumIndices = (i % 5)+1; // between 1 and 5 - f.mIndices = new unsigned int[f.mNumIndices]; - bool had = false; - for (unsigned int n = 0; n < f.mNumIndices;++n) { - - // FIXME + f.mNumIndices = (i % 5)+1; // between 1 and 5 + f.mIndices = new unsigned int[f.mNumIndices]; + bool had = false; + for (unsigned int n = 0; n < f.mNumIndices;++n) { + // FIXME #if 0 - // some duplicate indices - if ( n && n == (i / 200)+1) { - f.mIndices[n] = f.mIndices[n-1]; - had = true; - } - // and some duplicate vertices + // some duplicate indices + if ( n && n == (i / 200)+1) { + f.mIndices[n] = f.mIndices[n-1]; + had = true; + } + // and some duplicate vertices #endif - if (n && i % 2 && 0 == n % 2) { - f.mIndices[n] = f.mIndices[n-1]+5000; - had = true; - } - else { - f.mIndices[n] = numOut++; + if (n && i % 2 && 0 == n % 2) { + f.mIndices[n] = f.mIndices[n-1]+5000; + had = true; + } + else { + f.mIndices[n] = numOut++; } } if (!had) @@ -57,14 +70,14 @@ void FindDegeneratesProcessTest :: setUp (void) } // ------------------------------------------------------------------------------------------------ -void FindDegeneratesProcessTest :: tearDown (void) +void FindDegeneratesProcessTest::TearDown() { delete mesh; delete process; } // ------------------------------------------------------------------------------------------------ -void FindDegeneratesProcessTest :: testDegeneratesDetection( void ) +TEST_F(FindDegeneratesProcessTest, testDegeneratesDetection) { process->EnableInstantRemoval(false); process->ExecuteOnMesh(mesh); @@ -75,18 +88,21 @@ void FindDegeneratesProcessTest :: testDegeneratesDetection( void ) out += f.mNumIndices; } - CPPUNIT_ASSERT(mesh->mNumFaces == 1000 && mesh->mNumVertices == 10000); - CPPUNIT_ASSERT(mesh->mNumUVComponents[0] == out); - CPPUNIT_ASSERT(mesh->mPrimitiveTypes == (aiPrimitiveType_LINE | aiPrimitiveType_POINT | - aiPrimitiveType_POLYGON | aiPrimitiveType_TRIANGLE)); + EXPECT_EQ(1000U, mesh->mNumFaces); + EXPECT_EQ(10000U, mesh->mNumVertices); + EXPECT_EQ(out, mesh->mNumUVComponents[0]); + EXPECT_EQ(static_cast( + aiPrimitiveType_LINE | aiPrimitiveType_POINT | + aiPrimitiveType_POLYGON | aiPrimitiveType_TRIANGLE), + mesh->mPrimitiveTypes); } // ------------------------------------------------------------------------------------------------ -void FindDegeneratesProcessTest :: testDegeneratesRemoval( void ) +TEST_F(FindDegeneratesProcessTest, testDegeneratesRemoval) { process->EnableInstantRemoval(true); process->ExecuteOnMesh(mesh); - CPPUNIT_ASSERT(mesh->mNumUVComponents[1] == mesh->mNumFaces); + EXPECT_EQ(mesh->mNumUVComponents[1], mesh->mNumFaces); } diff --git a/test/unit/utFindDegenerates.h b/test/unit/utFindDegenerates.h deleted file mode 100644 index a1d05c5fa..000000000 --- a/test/unit/utFindDegenerates.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef TESTDEGENERATES_H -#define TESTDEGENERATES_H - - -#include - -using namespace std; -using namespace Assimp; - -class FindDegeneratesProcessTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (FindDegeneratesProcessTest); - CPPUNIT_TEST (testDegeneratesDetection); - CPPUNIT_TEST (testDegeneratesRemoval); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testDegeneratesDetection (void); - void testDegeneratesRemoval (void); - - private: - - aiMesh* mesh; - FindDegeneratesProcess* process; - -}; - -#endif diff --git a/test/unit/utFindInvalidData.cpp b/test/unit/utFindInvalidData.cpp index 08efd0906..5c94ae6e7 100644 --- a/test/unit/utFindInvalidData.cpp +++ b/test/unit/utFindInvalidData.cpp @@ -1,14 +1,28 @@ - #include "UnitTestPCH.h" -#include "utFindInvalidData.h" + +#include -CPPUNIT_TEST_SUITE_REGISTRATION (FindInvalidDataProcessTest); +using namespace std; +using namespace Assimp; + +class FindInvalidDataProcessTest : public ::testing::Test +{ +public: + + virtual void SetUp(); + virtual void TearDown(); + +protected: + + aiMesh* pcMesh; + FindInvalidDataProcess* piProcess; +}; // ------------------------------------------------------------------------------------------------ -void FindInvalidDataProcessTest :: setUp (void) +void FindInvalidDataProcessTest::SetUp() { - CPPUNIT_ASSERT( AI_MAX_NUMBER_OF_TEXTURECOORDS >= 3); + ASSERT_TRUE( AI_MAX_NUMBER_OF_TEXTURECOORDS >= 3); piProcess = new FindInvalidDataProcess(); pcMesh = new aiMesh(); @@ -39,46 +53,45 @@ void FindInvalidDataProcessTest :: setUp (void) } // ------------------------------------------------------------------------------------------------ -void FindInvalidDataProcessTest :: tearDown (void) +void FindInvalidDataProcessTest::TearDown() { delete piProcess; delete pcMesh; } // ------------------------------------------------------------------------------------------------ -void FindInvalidDataProcessTest :: testStepNegativeResult (void) +TEST_F(FindInvalidDataProcessTest, testStepNegativeResult) { ::memset(pcMesh->mNormals,0,pcMesh->mNumVertices*sizeof(aiVector3D)); ::memset(pcMesh->mBitangents,0,pcMesh->mNumVertices*sizeof(aiVector3D)); pcMesh->mTextureCoords[2][455] = aiVector3D( std::numeric_limits::quiet_NaN() ); - + piProcess->ProcessMesh(pcMesh); - CPPUNIT_ASSERT(NULL != pcMesh->mVertices); - CPPUNIT_ASSERT(NULL == pcMesh->mNormals); - CPPUNIT_ASSERT(NULL == pcMesh->mTangents); - CPPUNIT_ASSERT(NULL == pcMesh->mBitangents); + EXPECT_TRUE(NULL != pcMesh->mVertices); + EXPECT_TRUE(NULL == pcMesh->mNormals); + EXPECT_TRUE(NULL == pcMesh->mTangents); + EXPECT_TRUE(NULL == pcMesh->mBitangents); - for (unsigned int i = 0; i < 2;++i) - CPPUNIT_ASSERT(NULL != pcMesh->mTextureCoords[i]); - + EXPECT_TRUE(NULL != pcMesh->mTextureCoords[i]); + for (unsigned int i = 2; i < AI_MAX_NUMBER_OF_TEXTURECOORDS;++i) - CPPUNIT_ASSERT(NULL == pcMesh->mTextureCoords[i]); + EXPECT_TRUE(NULL == pcMesh->mTextureCoords[i]); } // ------------------------------------------------------------------------------------------------ -void FindInvalidDataProcessTest :: testStepPositiveResult (void) +TEST_F(FindInvalidDataProcessTest, testStepPositiveResult) { piProcess->ProcessMesh(pcMesh); - CPPUNIT_ASSERT(NULL != pcMesh->mVertices); + EXPECT_TRUE(NULL != pcMesh->mVertices); - CPPUNIT_ASSERT(NULL != pcMesh->mNormals); - CPPUNIT_ASSERT(NULL != pcMesh->mTangents); - CPPUNIT_ASSERT(NULL != pcMesh->mBitangents); + EXPECT_TRUE(NULL != pcMesh->mNormals); + EXPECT_TRUE(NULL != pcMesh->mTangents); + EXPECT_TRUE(NULL != pcMesh->mBitangents); for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS;++i) - CPPUNIT_ASSERT(NULL != pcMesh->mTextureCoords[i]); -} \ No newline at end of file + EXPECT_TRUE(NULL != pcMesh->mTextureCoords[i]); +} diff --git a/test/unit/utFindInvalidData.h b/test/unit/utFindInvalidData.h deleted file mode 100644 index 76f4d85c0..000000000 --- a/test/unit/utFindInvalidData.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef TESTNORMALS_H -#define TESTNORMALS_H - - -#include - -using namespace std; -using namespace Assimp; - -class FindInvalidDataProcessTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (FindInvalidDataProcessTest); - CPPUNIT_TEST (testStepNegativeResult); - CPPUNIT_TEST (testStepPositiveResult); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testStepPositiveResult (void); - void testStepNegativeResult (void); - - private: - - - aiMesh* pcMesh; - FindInvalidDataProcess* piProcess; -}; - -#endif diff --git a/test/unit/utFixInfacingNormals.cpp b/test/unit/utFixInfacingNormals.cpp index 3e9e49b91..8d2bbf64b 100644 --- a/test/unit/utFixInfacingNormals.cpp +++ b/test/unit/utFixInfacingNormals.cpp @@ -1,2 +1 @@ - -#include "UnitTestPCH.h" \ No newline at end of file +#include "UnitTestPCH.h" diff --git a/test/unit/utGenNormals.cpp b/test/unit/utGenNormals.cpp index c25bd3464..3d812e232 100644 --- a/test/unit/utGenNormals.cpp +++ b/test/unit/utGenNormals.cpp @@ -1,11 +1,25 @@ - #include "UnitTestPCH.h" -#include "utGenNormals.h" + +#include -CPPUNIT_TEST_SUITE_REGISTRATION (GenNormalsTest); +using namespace std; +using namespace Assimp; -void GenNormalsTest :: setUp (void) +class GenNormalsTest : public ::testing::Test +{ +public: + + virtual void SetUp(); + virtual void TearDown(); + +protected: + aiMesh* pcMesh; + GenVertexNormalsProcess* piProcess; +}; + +// ------------------------------------------------------------------------------------------------ +void GenNormalsTest::SetUp() { piProcess = new GenVertexNormalsProcess(); pcMesh = new aiMesh(); @@ -23,14 +37,16 @@ void GenNormalsTest :: setUp (void) pcMesh->mVertices[2] = aiVector3D(3.0f,2.0f,4.0f); } -void GenNormalsTest :: tearDown (void) +// ------------------------------------------------------------------------------------------------ +void GenNormalsTest::TearDown() { delete this->pcMesh; delete this->piProcess; } -void GenNormalsTest :: testSimpleTriangle (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(GenNormalsTest, testSimpleTriangle) { - piProcess->GenMeshVertexNormals(pcMesh,0); - CPPUNIT_ASSERT(0 != pcMesh->mNormals); + piProcess->GenMeshVertexNormals(pcMesh, 0); + EXPECT_TRUE(pcMesh->mNormals != NULL); } diff --git a/test/unit/utGenNormals.h b/test/unit/utGenNormals.h deleted file mode 100644 index 6de09e043..000000000 --- a/test/unit/utGenNormals.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef TESTNORMALS_H -#define TESTNORMALS_H - -#include -#include - -#include -#include - - -using namespace std; -using namespace Assimp; - -class GenNormalsTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (GenNormalsTest); - CPPUNIT_TEST (testSimpleTriangle); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testSimpleTriangle (void); - - private: - - - aiMesh* pcMesh; - GenVertexNormalsProcess* piProcess; -}; - -#endif diff --git a/test/unit/utImporter.cpp b/test/unit/utImporter.cpp index a3b9a6fe1..d55791c81 100644 --- a/test/unit/utImporter.cpp +++ b/test/unit/utImporter.cpp @@ -1,6 +1,22 @@ - #include "UnitTestPCH.h" -#include "utImporter.h" + +#include +#include + + +using namespace std; +using namespace Assimp; + +class ImporterTest : public ::testing::Test +{ +public: + + virtual void SetUp() { pImp = new Importer(); } + virtual void TearDown() { delete pImp; } + +protected: + Importer* pImp; +}; #define InputData_BLOCK_SIZE 1310 @@ -49,10 +65,6 @@ static unsigned char InputData_abRawBlock[1310] = { 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,96,233,20,194,67,196,97,190,147,56,182,65, }; - - -CPPUNIT_TEST_SUITE_REGISTRATION (ImporterTest); - #define AIUT_DEF_ERROR_TEXT "sorry, this is a test" @@ -66,108 +78,108 @@ static const aiImporterDesc desc = { 0, 0, 0, - "apple mac linux windows" + "apple mac linux windows" }; - -bool TestPlugin :: CanRead( const std::string& pFile, - IOSystem* /*pIOHandler*/, bool /*test*/) const +class TestPlugin : public BaseImporter { - std::string::size_type pos = pFile.find_last_of('.'); - // no file extension - can't read - if( pos == std::string::npos) - return false; - std::string extension = pFile.substr( pos); +public: - // todo ... make case-insensitive - return (extension == ".apple" || extension == ".mac" || - extension == ".linux" || extension == ".windows" ); -} + virtual bool CanRead( + const std::string& pFile, IOSystem* /*pIOHandler*/, bool /*test*/) const + { + std::string::size_type pos = pFile.find_last_of('.'); + // no file extension - can't read + if( pos == std::string::npos) + return false; + std::string extension = pFile.substr( pos); -const aiImporterDesc* TestPlugin :: GetInfo() const -{ - return & desc; -} + // todo ... make case-insensitive + return (extension == ".apple" || extension == ".mac" || + extension == ".linux" || extension == ".windows" ); -void TestPlugin :: InternReadFile( const std::string& /*pFile*/, - aiScene* /*pScene*/, IOSystem* /*pIOHandler*/) -{ - throw DeadlyImportError(AIUT_DEF_ERROR_TEXT); -} + } + virtual const aiImporterDesc* GetInfo () const + { + return & desc; + } -void ImporterTest :: setUp (void) -{ - pImp = new Importer(); -} + virtual void InternReadFile( + const std::string& /*pFile*/, aiScene* /*pScene*/, IOSystem* /*pIOHandler*/) + { + throw DeadlyImportError(AIUT_DEF_ERROR_TEXT); + } +}; -void ImporterTest :: tearDown (void) -{ - delete pImp; -} - -void ImporterTest :: testMemoryRead (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(ImporterTest, testMemoryRead) { const aiScene* sc = pImp->ReadFileFromMemory(InputData_abRawBlock,InputData_BLOCK_SIZE, aiProcessPreset_TargetRealtime_Quality,"3ds"); - CPPUNIT_ASSERT(sc != NULL); - CPPUNIT_ASSERT(sc->mRootNode->mName == aiString("<3DSRoot>")); - CPPUNIT_ASSERT(sc->mNumMeshes == 1 && sc->mMeshes[0]->mNumVertices ==24 && sc->mMeshes[0]->mNumFaces ==12); + ASSERT_TRUE(sc != NULL); + EXPECT_EQ(aiString("<3DSRoot>"), sc->mRootNode->mName); + EXPECT_EQ(1U, sc->mNumMeshes); + EXPECT_EQ(24U, sc->mMeshes[0]->mNumVertices); + EXPECT_EQ(12U, sc->mMeshes[0]->mNumFaces); } -void ImporterTest :: testIntProperty (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(ImporterTest, testIntProperty) { bool b; pImp->SetPropertyInteger("quakquak",1503,&b); - CPPUNIT_ASSERT(!b); - CPPUNIT_ASSERT(1503 == pImp->GetPropertyInteger("quakquak",0)); - CPPUNIT_ASSERT(314159 == pImp->GetPropertyInteger("not_there",314159)); + EXPECT_FALSE(b); + EXPECT_EQ(1503, pImp->GetPropertyInteger("quakquak",0)); + EXPECT_EQ(314159, pImp->GetPropertyInteger("not_there",314159)); pImp->SetPropertyInteger("quakquak",1504,&b); - CPPUNIT_ASSERT(b); + EXPECT_TRUE(b); } -void ImporterTest :: testFloatProperty (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(ImporterTest, testFloatProperty) { bool b; pImp->SetPropertyFloat("quakquak",1503.f,&b); - CPPUNIT_ASSERT(!b); - CPPUNIT_ASSERT(1503.f == pImp->GetPropertyFloat("quakquak",0.f)); - CPPUNIT_ASSERT(314159.f == pImp->GetPropertyFloat("not_there",314159.f)); + EXPECT_TRUE(!b); + EXPECT_EQ(1503.f, pImp->GetPropertyFloat("quakquak",0.f)); + EXPECT_EQ(314159.f, pImp->GetPropertyFloat("not_there",314159.f)); } -void ImporterTest :: testStringProperty (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(ImporterTest, testStringProperty) { bool b; pImp->SetPropertyString("quakquak","test",&b); - CPPUNIT_ASSERT(!b); - CPPUNIT_ASSERT("test" == pImp->GetPropertyString("quakquak","weghwekg")); - CPPUNIT_ASSERT("ILoveYou" == pImp->GetPropertyString("not_there","ILoveYou")); + EXPECT_TRUE(!b); + EXPECT_EQ("test", pImp->GetPropertyString("quakquak","weghwekg")); + EXPECT_EQ("ILoveYou", pImp->GetPropertyString("not_there","ILoveYou")); } -void ImporterTest :: testPluginInterface (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(ImporterTest, testPluginInterface) { - pImp->RegisterLoader(new TestPlugin()); - CPPUNIT_ASSERT(pImp->IsExtensionSupported(".apple")); - CPPUNIT_ASSERT(pImp->IsExtensionSupported(".mac")); - CPPUNIT_ASSERT(pImp->IsExtensionSupported("*.linux")); - CPPUNIT_ASSERT(pImp->IsExtensionSupported("windows")); - CPPUNIT_ASSERT(pImp->IsExtensionSupported(".x")); /* x and 3ds must be available in this Assimp build, of course! */ - CPPUNIT_ASSERT(pImp->IsExtensionSupported(".3ds")); - CPPUNIT_ASSERT(!pImp->IsExtensionSupported(".")); + EXPECT_TRUE(pImp->IsExtensionSupported(".apple")); + EXPECT_TRUE(pImp->IsExtensionSupported(".mac")); + EXPECT_TRUE(pImp->IsExtensionSupported("*.linux")); + EXPECT_TRUE(pImp->IsExtensionSupported("windows")); + EXPECT_TRUE(pImp->IsExtensionSupported(".x")); /* x and 3ds must be available in this Assimp build, of course! */ + EXPECT_TRUE(pImp->IsExtensionSupported(".3ds")); + EXPECT_FALSE(pImp->IsExtensionSupported(".")); TestPlugin* p = (TestPlugin*) pImp->GetImporter(".windows"); - CPPUNIT_ASSERT(NULL != p); + ASSERT_TRUE(NULL != p); try { - p->InternReadFile("",0,NULL); + p->InternReadFile("",0,NULL); } catch ( const DeadlyImportError& dead) { - CPPUNIT_ASSERT(!strcmp(dead.what(),AIUT_DEF_ERROR_TEXT)); + EXPECT_TRUE(!strcmp(dead.what(),AIUT_DEF_ERROR_TEXT)); // unregister the plugin and delete it pImp->UnregisterLoader(p); @@ -175,25 +187,27 @@ void ImporterTest :: testPluginInterface (void) return; } - CPPUNIT_ASSERT(false); // control shouldn't reach this point + EXPECT_TRUE(false); // control shouldn't reach this point } -void ImporterTest :: testExtensionCheck (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(ImporterTest, testExtensionCheck) { std::string s; pImp->GetExtensionList(s); - // TODO + // TODO } -void ImporterTest :: testMultipleReads (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(ImporterTest, testMultipleReads) { // see http://sourceforge.net/projects/assimp/forums/forum/817654/topic/3591099 // Check whether reading and post-processing multiple times using - // the same objects is *generally* fine. This test doesn't target + // the same objects is *generally* fine. This test doesn't target // importers. Testing post-processing stability is the main point. - const unsigned int flags = + const unsigned int flags = aiProcess_Triangulate | aiProcess_JoinIdenticalVertices | aiProcess_GenSmoothNormals | @@ -206,13 +220,13 @@ void ImporterTest :: testMultipleReads (void) aiProcess_OptimizeMeshes | aiProcess_OptimizeGraph; - CPPUNIT_ASSERT(pImp->ReadFile("../../test/models/X/test.x",flags)); - //CPPUNIT_ASSERT(pImp->ReadFile("../../test/models/X/dwarf.x",flags)); # is in nonbsd - CPPUNIT_ASSERT(pImp->ReadFile("../../test/models/X/Testwuson.X",flags)); - CPPUNIT_ASSERT(pImp->ReadFile("../../test/models/X/anim_test.x",flags)); - //CPPUNIT_ASSERT(pImp->ReadFile("../../test/models/X/dwarf.x",flags)); # is in nonbsd + EXPECT_TRUE(pImp->ReadFile("../../test/models/X/test.x",flags)); + //EXPECT_TRUE(pImp->ReadFile("../../test/models/X/dwarf.x",flags)); # is in nonbsd + EXPECT_TRUE(pImp->ReadFile("../../test/models/X/Testwuson.X",flags)); + EXPECT_TRUE(pImp->ReadFile("../../test/models/X/anim_test.x",flags)); + //EXPECT_TRUE(pImp->ReadFile("../../test/models/X/dwarf.x",flags)); # is in nonbsd - CPPUNIT_ASSERT(pImp->ReadFile("../../test/models/X/anim_test.x",flags)); - CPPUNIT_ASSERT(pImp->ReadFile("../../test/models/X/BCN_Epileptic.X",flags)); - //CPPUNIT_ASSERT(pImp->ReadFile("../../test/models/X/dwarf.x",flags)); # is in nonbsd + EXPECT_TRUE(pImp->ReadFile("../../test/models/X/anim_test.x",flags)); + EXPECT_TRUE(pImp->ReadFile("../../test/models/X/BCN_Epileptic.X",flags)); + //EXPECT_TRUE(pImp->ReadFile("../../test/models/X/dwarf.x",flags)); # is in nonbsd } diff --git a/test/unit/utImporter.h b/test/unit/utImporter.h deleted file mode 100644 index aa4b56301..000000000 --- a/test/unit/utImporter.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef TESTIMPORTER_H -#define TESTIMPORTER_H - -#include -#include - -#include -#include - -using namespace std; -using namespace Assimp; - -class ImporterTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (ImporterTest); - CPPUNIT_TEST (testIntProperty); - CPPUNIT_TEST (testFloatProperty); - CPPUNIT_TEST (testStringProperty); - CPPUNIT_TEST (testPluginInterface); - CPPUNIT_TEST (testExtensionCheck); - CPPUNIT_TEST (testMemoryRead); - CPPUNIT_TEST (testMultipleReads); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testIntProperty (void); - void testFloatProperty (void); - void testStringProperty (void); - - void testPluginInterface (void); - void testExtensionCheck (void); - void testMemoryRead (void); - - void testMultipleReads (void); - - private: - - Importer* pImp; -}; - -class TestPlugin : public BaseImporter -{ -public: - - // overriden - bool CanRead( const std::string& pFile, - IOSystem* pIOHandler, bool test) const; - - // overriden - const aiImporterDesc* GetInfo () const; - - // overriden - void InternReadFile( const std::string& pFile, - aiScene* pScene, IOSystem* pIOHandler); -}; - -#endif diff --git a/test/unit/utJoinVertices.cpp b/test/unit/utJoinVertices.cpp index e8c2ea9db..1c192f65c 100644 --- a/test/unit/utJoinVertices.cpp +++ b/test/unit/utJoinVertices.cpp @@ -1,11 +1,27 @@ - #include "UnitTestPCH.h" -#include "utJoinVertices.h" -CPPUNIT_TEST_SUITE_REGISTRATION (JoinVerticesTest); +#include +#include + + +using namespace std; +using namespace Assimp; + +class JoinVerticesTest : public ::testing::Test +{ +public: + + virtual void SetUp(); + virtual void TearDown(); + +protected: + + JoinVerticesProcess* piProcess; + aiMesh* pcMesh; +}; // ------------------------------------------------------------------------------------------------ -void JoinVerticesTest :: setUp (void) +void JoinVerticesTest::SetUp() { // construct the process piProcess = new JoinVerticesProcess(); @@ -38,39 +54,39 @@ void JoinVerticesTest :: setUp (void) // generate extra members - set them to zero to make sure they're identical pcMesh->mTextureCoords[0] = new aiVector3D[900]; - for (unsigned int i = 0; i < 900;++i)pcMesh->mTextureCoords[0][i] = aiVector3D( 0.f ); + for (unsigned int i = 0; i < 900;++i)pcMesh->mTextureCoords[0][i] = aiVector3D( 0.f ); pcMesh->mNormals = new aiVector3D[900]; - for (unsigned int i = 0; i < 900;++i)pcMesh->mNormals[i] = aiVector3D( 0.f ); + for (unsigned int i = 0; i < 900;++i)pcMesh->mNormals[i] = aiVector3D( 0.f ); pcMesh->mTangents = new aiVector3D[900]; - for (unsigned int i = 0; i < 900;++i)pcMesh->mTangents[i] = aiVector3D( 0.f ); + for (unsigned int i = 0; i < 900;++i)pcMesh->mTangents[i] = aiVector3D( 0.f ); pcMesh->mBitangents = new aiVector3D[900]; - for (unsigned int i = 0; i < 900;++i)pcMesh->mBitangents[i] = aiVector3D( 0.f ); + for (unsigned int i = 0; i < 900;++i)pcMesh->mBitangents[i] = aiVector3D( 0.f ); } // ------------------------------------------------------------------------------------------------ -void JoinVerticesTest :: tearDown (void) +void JoinVerticesTest::TearDown() { delete this->pcMesh; delete this->piProcess; } // ------------------------------------------------------------------------------------------------ -void JoinVerticesTest :: testProcess(void) +TEST_F(JoinVerticesTest, testProcess) { // execute the step on the given data piProcess->ProcessMesh(pcMesh,0); // the number of faces shouldn't change - CPPUNIT_ASSERT(pcMesh->mNumFaces == 300); - CPPUNIT_ASSERT(pcMesh->mNumVertices == 300); + ASSERT_EQ(300U, pcMesh->mNumFaces); + ASSERT_EQ(300U, pcMesh->mNumVertices); - CPPUNIT_ASSERT(NULL != pcMesh->mNormals); - CPPUNIT_ASSERT(NULL != pcMesh->mTangents); - CPPUNIT_ASSERT(NULL != pcMesh->mBitangents); - CPPUNIT_ASSERT(NULL != pcMesh->mTextureCoords[0]); + ASSERT_TRUE(NULL != pcMesh->mNormals); + ASSERT_TRUE(NULL != pcMesh->mTangents); + ASSERT_TRUE(NULL != pcMesh->mBitangents); + ASSERT_TRUE(NULL != pcMesh->mTextureCoords[0]); // the order doesn't care float fSum = 0.f; @@ -79,11 +95,11 @@ void JoinVerticesTest :: testProcess(void) aiVector3D& v = pcMesh->mVertices[i]; fSum += v.x + v.y + v.z; - CPPUNIT_ASSERT(!pcMesh->mNormals[i].x); - CPPUNIT_ASSERT(!pcMesh->mTangents[i].x); - CPPUNIT_ASSERT(!pcMesh->mBitangents[i].x); - CPPUNIT_ASSERT(!pcMesh->mTextureCoords[0][i].x); + EXPECT_FALSE(pcMesh->mNormals[i].x); + EXPECT_FALSE(pcMesh->mTangents[i].x); + EXPECT_FALSE(pcMesh->mBitangents[i].x); + EXPECT_FALSE(pcMesh->mTextureCoords[0][i].x); } - CPPUNIT_ASSERT(fSum == 150.f*299.f*3.f); // gaussian sum equation + EXPECT_EQ(150.f*299.f*3.f, fSum); // gaussian sum equation } diff --git a/test/unit/utJoinVertices.h b/test/unit/utJoinVertices.h deleted file mode 100644 index 6dcf44bae..000000000 --- a/test/unit/utJoinVertices.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef TESTLBW_H -#define TESTLBW_H - -#include -#include - -#include -#include - - -using namespace std; -using namespace Assimp; -namespace Assimp { -class JoinVerticesTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (JoinVerticesTest); - CPPUNIT_TEST (testProcess); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testProcess (void); - - - private: - - JoinVerticesProcess* piProcess; - aiMesh* pcMesh; - -}; -} -#endif diff --git a/test/unit/utLimitBoneWeights.cpp b/test/unit/utLimitBoneWeights.cpp index 01e8125e5..7028ef83f 100644 --- a/test/unit/utLimitBoneWeights.cpp +++ b/test/unit/utLimitBoneWeights.cpp @@ -1,12 +1,26 @@ - #include "UnitTestPCH.h" -#include "utLimitBoneWeights.h" + +#include +#include -CPPUNIT_TEST_SUITE_REGISTRATION (LimitBoneWeightsTest); +using namespace std; +using namespace Assimp; + +class LimitBoneWeightsTest : public ::testing::Test { +public: + + virtual void SetUp(); + virtual void TearDown(); + +protected: + + LimitBoneWeightsProcess* piProcess; + aiMesh* pcMesh; +}; // ------------------------------------------------------------------------------------------------ -void LimitBoneWeightsTest :: setUp (void) +void LimitBoneWeightsTest::SetUp() { // construct the process this->piProcess = new LimitBoneWeightsProcess(); @@ -35,14 +49,14 @@ void LimitBoneWeightsTest :: setUp (void) } // ------------------------------------------------------------------------------------------------ -void LimitBoneWeightsTest :: tearDown (void) +void LimitBoneWeightsTest::TearDown() { delete pcMesh; delete piProcess; } // ------------------------------------------------------------------------------------------------ -void LimitBoneWeightsTest :: testProcess(void) +TEST_F(LimitBoneWeightsTest, testProcess) { // execute the step on the given data piProcess->ProcessMesh(pcMesh); @@ -68,7 +82,7 @@ void LimitBoneWeightsTest :: testProcess(void) // now validate the size of the lists and check whether all weights sum to 1.0f for (unsigned int i = 0; i < pcMesh->mNumVertices;++i) { - CPPUNIT_ASSERT( asWeights[i].size() <= 4 ); + EXPECT_LE(asWeights[i].size(), 4U); float fSum = 0.0f; for (VertexWeightList::const_iterator iter = asWeights[i].begin(); @@ -76,11 +90,12 @@ void LimitBoneWeightsTest :: testProcess(void) { fSum += (*iter).mWeight; } - CPPUNIT_ASSERT( fSum >= 0.95 && fSum <= 1.04); + EXPECT_GE(fSum, 0.95F); + EXPECT_LE(fSum, 1.04F); } // delete allocated storage delete[] asWeights; // everything seems to be OK -} \ No newline at end of file +} diff --git a/test/unit/utLimitBoneWeights.h b/test/unit/utLimitBoneWeights.h deleted file mode 100644 index dd709dda3..000000000 --- a/test/unit/utLimitBoneWeights.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef TESTLBW_H -#define TESTLBW_H - -#include -#include - -#include -#include - - -using namespace std; -using namespace Assimp; - -class LimitBoneWeightsTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (LimitBoneWeightsTest); - CPPUNIT_TEST (testProcess); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testProcess (void); - - - private: - - LimitBoneWeightsProcess* piProcess; - aiMesh* pcMesh; - -}; - -#endif diff --git a/test/unit/utMaterialSystem.cpp b/test/unit/utMaterialSystem.cpp index 352cadb2e..27304fe7b 100644 --- a/test/unit/utMaterialSystem.cpp +++ b/test/unit/utMaterialSystem.cpp @@ -1,72 +1,74 @@ - #include "UnitTestPCH.h" -#include "utMaterialSystem.h" + +#include +#include -CPPUNIT_TEST_SUITE_REGISTRATION (MaterialSystemTest); +using namespace std; +using namespace Assimp; -// ------------------------------------------------------------------------------------------------ -void MaterialSystemTest :: setUp (void) +class MaterialSystemTest : public ::testing::Test { - this->pcMat = new aiMaterial(); -} +public: + + virtual void SetUp() { this->pcMat = new aiMaterial(); } + virtual void TearDown() { delete this->pcMat; } + +protected: + + aiMaterial* pcMat; +}; // ------------------------------------------------------------------------------------------------ -void MaterialSystemTest :: tearDown (void) -{ - delete this->pcMat; -} - -// ------------------------------------------------------------------------------------------------ -void MaterialSystemTest :: testFloatProperty (void) +TEST_F(MaterialSystemTest, testFloatProperty) { float pf = 150392.63f; this->pcMat->AddProperty(&pf,1,"testKey1"); pf = 0.0f; - CPPUNIT_ASSERT(AI_SUCCESS == pcMat->Get("testKey1",0,0,pf)); - CPPUNIT_ASSERT(pf == 150392.63f); + EXPECT_EQ(AI_SUCCESS, pcMat->Get("testKey1",0,0,pf)); + EXPECT_EQ(150392.63f, pf); } // ------------------------------------------------------------------------------------------------ -void MaterialSystemTest :: testFloatArrayProperty (void) +TEST_F(MaterialSystemTest, testFloatArrayProperty) { float pf[] = {0.0f,1.0f,2.0f,3.0f}; unsigned int pMax = sizeof(pf) / sizeof(float); this->pcMat->AddProperty(&pf,pMax,"testKey2"); pf[0] = pf[1] = pf[2] = pf[3] = 12.0f; - CPPUNIT_ASSERT(AI_SUCCESS == pcMat->Get("testKey2",0,0,pf,&pMax)); - CPPUNIT_ASSERT(pMax == sizeof(pf) / sizeof(float)); - CPPUNIT_ASSERT(!pf[0] && 1.0f == pf[1] && 2.0f == pf[2] && 3.0f == pf[3] ); + EXPECT_EQ(AI_SUCCESS, pcMat->Get("testKey2",0,0,pf,&pMax)); + EXPECT_EQ(sizeof(pf) / sizeof(float), pMax); + EXPECT_TRUE(!pf[0] && 1.0f == pf[1] && 2.0f == pf[2] && 3.0f == pf[3] ); } // ------------------------------------------------------------------------------------------------ -void MaterialSystemTest :: testIntProperty (void) +TEST_F(MaterialSystemTest, testIntProperty) { int pf = 15039263; this->pcMat->AddProperty(&pf,1,"testKey3"); pf = 12; - CPPUNIT_ASSERT(AI_SUCCESS == pcMat->Get("testKey3",0,0,pf)); - CPPUNIT_ASSERT(pf == 15039263); + EXPECT_EQ(AI_SUCCESS, pcMat->Get("testKey3",0,0,pf)); + EXPECT_EQ(15039263, pf); } // ------------------------------------------------------------------------------------------------ -void MaterialSystemTest :: testIntArrayProperty (void) +TEST_F(MaterialSystemTest, testIntArrayProperty) { int pf[] = {0,1,2,3}; unsigned int pMax = sizeof(pf) / sizeof(int); this->pcMat->AddProperty(&pf,pMax,"testKey4"); pf[0] = pf[1] = pf[2] = pf[3] = 12; - CPPUNIT_ASSERT(AI_SUCCESS == pcMat->Get("testKey4",0,0,pf,&pMax)); - CPPUNIT_ASSERT(pMax == sizeof(pf) / sizeof(int)); - CPPUNIT_ASSERT(!pf[0] && 1 == pf[1] && 2 == pf[2] && 3 == pf[3] ); + EXPECT_EQ(AI_SUCCESS, pcMat->Get("testKey4",0,0,pf,&pMax)); + EXPECT_EQ(sizeof(pf) / sizeof(int), pMax); + EXPECT_TRUE(!pf[0] && 1 == pf[1] && 2 == pf[2] && 3 == pf[3] ); } // ------------------------------------------------------------------------------------------------ -void MaterialSystemTest :: testColorProperty (void) +TEST_F(MaterialSystemTest, testColorProperty) { aiColor4D clr; clr.r = 2.0f;clr.g = 3.0f;clr.b = 4.0f;clr.a = 5.0f; @@ -74,17 +76,17 @@ void MaterialSystemTest :: testColorProperty (void) clr.b = 1.0f; clr.a = clr.g = clr.r = 0.0f; - CPPUNIT_ASSERT(AI_SUCCESS == pcMat->Get("testKey5",0,0,clr)); - CPPUNIT_ASSERT(clr.r == 2.0f && clr.g == 3.0f && clr.b == 4.0f && clr.a == 5.0f); + EXPECT_EQ(AI_SUCCESS, pcMat->Get("testKey5",0,0,clr)); + EXPECT_TRUE(clr.r == 2.0f && clr.g == 3.0f && clr.b == 4.0f && clr.a == 5.0f); } // ------------------------------------------------------------------------------------------------ -void MaterialSystemTest :: testStringProperty (void) +TEST_F(MaterialSystemTest, testStringProperty) { aiString s; s.Set("Hello, this is a small test"); this->pcMat->AddProperty(&s,"testKey6"); s.Set("358358"); - CPPUNIT_ASSERT(AI_SUCCESS == pcMat->Get("testKey6",0,0,s)); - CPPUNIT_ASSERT(!::strcmp(s.data,"Hello, this is a small test")); + EXPECT_EQ(AI_SUCCESS, pcMat->Get("testKey6",0,0,s)); + EXPECT_STREQ("Hello, this is a small test", s.data); } diff --git a/test/unit/utMaterialSystem.h b/test/unit/utMaterialSystem.h deleted file mode 100644 index 8a35cf650..000000000 --- a/test/unit/utMaterialSystem.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef TESTMATERIALS_H -#define TESTMATERIALS_H - -#include -#include - -#include -#include - - -using namespace std; -using namespace Assimp; - -class MaterialSystemTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (MaterialSystemTest); - CPPUNIT_TEST (testFloatProperty); - CPPUNIT_TEST (testFloatArrayProperty); - CPPUNIT_TEST (testIntProperty); - CPPUNIT_TEST (testIntArrayProperty); - CPPUNIT_TEST (testColorProperty); - CPPUNIT_TEST (testStringProperty); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testFloatProperty (void); - void testFloatArrayProperty (void); - void testIntProperty (void); - void testIntArrayProperty (void); - void testColorProperty (void); - void testStringProperty (void); - - private: - - aiMaterial* pcMat; -}; - -#endif diff --git a/test/unit/utNoBoostTest.cpp b/test/unit/utNoBoostTest.cpp index cf812c8f0..76b96129b 100644 --- a/test/unit/utNoBoostTest.cpp +++ b/test/unit/utNoBoostTest.cpp @@ -1,18 +1,71 @@ - #include "UnitTestPCH.h" -#include "utNoBoostTest.h" + +#include "BoostWorkaround/boost/tuple/tuple.hpp" + +#define ASSIMP_FORCE_NOBOOST +#include "BoostWorkaround/boost/format.hpp" -CPPUNIT_TEST_SUITE_REGISTRATION (NoBoostTest); +using namespace std; +using namespace Assimp; + +using boost::format; +using boost::str; // ------------------------------------------------------------------------------------------------ -void NoBoostTest :: testFormat() +TEST(NoBoostTest, testFormat) { - - CPPUNIT_ASSERT( noboost::str( noboost::format("Ahoi!") ) == "Ahoi!" ); - CPPUNIT_ASSERT( noboost::str( noboost::format("Ahoi! %%") ) == "Ahoi! %" ); - CPPUNIT_ASSERT( noboost::str( noboost::format("Ahoi! %s") ) == "Ahoi! " ); - CPPUNIT_ASSERT( noboost::str( noboost::format("Ahoi! %s") % "!!" ) == "Ahoi! !!" ); - CPPUNIT_ASSERT( noboost::str( noboost::format("Ahoi! %s") % "!!" % "!!" ) == "Ahoi! !!" ); - CPPUNIT_ASSERT( noboost::str( noboost::format("%s%s%s") % "a" % std::string("b") % "c" ) == "abc" ); + EXPECT_EQ( "Ahoi!", boost::str( boost::format("Ahoi!") )); + EXPECT_EQ( "Ahoi! %", boost::str( boost::format("Ahoi! %%") )); + EXPECT_EQ( "Ahoi! ", boost::str( boost::format("Ahoi! %s") )); + EXPECT_EQ( "Ahoi! !!", boost::str( boost::format("Ahoi! %s") % "!!" )); + EXPECT_EQ( "Ahoi! !!", boost::str( boost::format("Ahoi! %s") % "!!" % "!!" )); + EXPECT_EQ( "abc", boost::str( boost::format("%s%s%s") % "a" % std::string("b") % "c" )); +} + +struct another +{ + int dummy; +}; + +// ------------------------------------------------------------------------------------------------ +TEST(NoBoostTest, Tuple) { + // Implicit conversion + boost::tuple first = boost::make_tuple(4,4,4); + EXPECT_EQ(4U, first.get<0>()); + EXPECT_EQ(4U, first.get<1>()); + EXPECT_EQ(4U, first.get<2>()); + + boost::tuple second; + bool b = second.get<3>(); + EXPECT_FALSE(b); + + boost::tuple<> third; + + // FIXME: Explicit conversion not really required yet + boost::tuple last = + (boost::tuple)boost::make_tuple(1.,2.,3.); + EXPECT_EQ(1.f, last.get<0>()); + EXPECT_EQ(2.f, last.get<1>()); + EXPECT_EQ(3.f, last.get<2>()); + + // Non-const access + first.get<0>() = 1; + first.get<1>() = 2; + first.get<2>() = 3; + EXPECT_EQ(1U, first.get<0>()); + EXPECT_EQ(2U, first.get<1>()); + EXPECT_EQ(3U, first.get<2>()); + + // Const cases + const boost::tuple constant = boost::make_tuple(5,5,5); + first.get<0>() = constant.get<0>(); + EXPECT_EQ(5U, constant.get<0>()); + EXPECT_EQ(5U, first.get<0>()); + + // Direct assignment w. explicit conversion + last = first; + EXPECT_EQ(5.f, last.get<0>()); + EXPECT_EQ(2.f, last.get<1>()); + EXPECT_EQ(3.f, last.get<2>()); } diff --git a/test/unit/utNoBoostTest.h b/test/unit/utNoBoostTest.h deleted file mode 100644 index 6fbff7dff..000000000 --- a/test/unit/utNoBoostTest.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef TESTNOBOOST_H -#define TESTNOBOOST_H - -namespace noboost { - -#define ASSIMP_FORCE_NOBOOST -#include "../../code/BoostWorkaround/boost/format.hpp" - using boost::format; - using boost::str; - -} - -using namespace std; -using namespace Assimp; - -class NoBoostTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (NoBoostTest); - CPPUNIT_TEST (testFormat); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void) { - } - void tearDown (void) { - } - - protected: - - void testFormat (void); - - private: - - -}; - -#endif diff --git a/test/unit/utPretransformVertices.cpp b/test/unit/utPretransformVertices.cpp index a48e87a05..e8dea14ab 100644 --- a/test/unit/utPretransformVertices.cpp +++ b/test/unit/utPretransformVertices.cpp @@ -1,8 +1,24 @@ - #include "UnitTestPCH.h" -#include "utPretransformVertices.h" -CPPUNIT_TEST_SUITE_REGISTRATION (PretransformVerticesTest); +#include +#include + + +using namespace std; +using namespace Assimp; + +class PretransformVerticesTest : public ::testing::Test +{ +public: + + virtual void SetUp(); + virtual void TearDown(); + +protected: + + aiScene* scene; + PretransformVertices* process; +}; // ------------------------------------------------------------------------------------------------ void AddNodes(unsigned int num, aiNode* father, unsigned int depth) @@ -29,7 +45,7 @@ void AddNodes(unsigned int num, aiNode* father, unsigned int depth) } // ------------------------------------------------------------------------------------------------ -void PretransformVerticesTest :: setUp (void) +void PretransformVerticesTest::SetUp() { scene = new aiScene(); @@ -55,7 +71,7 @@ void PretransformVerticesTest :: setUp (void) } mesh->mMaterialIndex = i%5; - if (i % 2) + if (i % 2) mesh->mNormals = new aiVector3D[mesh->mNumVertices]; } @@ -68,30 +84,28 @@ void PretransformVerticesTest :: setUp (void) } // ------------------------------------------------------------------------------------------------ -void PretransformVerticesTest :: tearDown (void) +void PretransformVerticesTest::TearDown() { delete scene; delete process; } - // ------------------------------------------------------------------------------------------------ -void PretransformVerticesTest :: testProcess_CollapseHierarchy (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(PretransformVerticesTest, testProcessCollapseHierarchy) { process->KeepHierarchy(false); process->Execute(scene); - CPPUNIT_ASSERT(scene->mNumMaterials == 5); - CPPUNIT_ASSERT(scene->mNumMeshes == 10); // every second mesh has normals + EXPECT_EQ(5U, scene->mNumMaterials); + EXPECT_EQ(10U, scene->mNumMeshes); // every second mesh has normals } // ------------------------------------------------------------------------------------------------ -void PretransformVerticesTest :: testProcess_KeepHierarchy (void) +TEST_F(PretransformVerticesTest, testProcessKeepHierarchy) { - process->KeepHierarchy(true); process->Execute(scene); - CPPUNIT_ASSERT(scene->mNumMaterials == 5); - CPPUNIT_ASSERT(scene->mNumMeshes == 49); // see note on mesh 12 above - -} \ No newline at end of file + EXPECT_EQ(5U, scene->mNumMaterials); + EXPECT_EQ(49U, scene->mNumMeshes); // see note on mesh 12 above +} diff --git a/test/unit/utPretransformVertices.h b/test/unit/utPretransformVertices.h deleted file mode 100644 index 2f5754c3c..000000000 --- a/test/unit/utPretransformVertices.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef TESTLBW_H -#define TESTLBW_H - -#include -#include - -#include -#include - - -using namespace std; -using namespace Assimp; - -class PretransformVerticesTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (PretransformVerticesTest); - CPPUNIT_TEST (testProcess_CollapseHierarchy); - CPPUNIT_TEST (testProcess_KeepHierarchy); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testProcess_CollapseHierarchy (void); - void testProcess_KeepHierarchy (void); - - - private: - - aiScene* scene; - PretransformVertices* process; -}; - -#endif diff --git a/test/unit/utRemoveComments.cpp b/test/unit/utRemoveComments.cpp index 5779946eb..4f75599b9 100644 --- a/test/unit/utRemoveComments.cpp +++ b/test/unit/utRemoveComments.cpp @@ -1,31 +1,21 @@ - #include "UnitTestPCH.h" -#include "utRemoveComments.h" + +#include -CPPUNIT_TEST_SUITE_REGISTRATION (RemoveCommentsTest); +using namespace std; +using namespace Assimp; + // ------------------------------------------------------------------------------------------------ -void RemoveCommentsTest :: setUp (void) -{ - // nothing to do here -} - -// ------------------------------------------------------------------------------------------------ -void RemoveCommentsTest :: tearDown (void) -{ - // nothing to do here -} - -// ------------------------------------------------------------------------------------------------ -void RemoveCommentsTest :: testSingleLineComments (void) +TEST(RemoveCommentsTest, testSingleLineComments) { const char* szTest = "int i = 0; \n" "if (4 == //)\n" "\ttrue) { // do something here \n" "\t// hello ... and bye //\n"; - + char* szTest2 = new char[::strlen(szTest)+1]; ::strcpy(szTest2,szTest); @@ -35,21 +25,21 @@ void RemoveCommentsTest :: testSingleLineComments (void) "\t \n"; CommentRemover::RemoveLineComments("//",szTest2,' '); - CPPUNIT_ASSERT(0 == ::strcmp(szTest2,szTestResult)); + EXPECT_STREQ(szTestResult, szTest2); delete[] szTest2; } // ------------------------------------------------------------------------------------------------ -void RemoveCommentsTest :: testMultiLineComments (void) +TEST(RemoveCommentsTest, testMultiLineComments) { - const char* szTest = + const char* szTest = "/* comment to be removed */\n" "valid text /* \n " " comment across multiple lines */" " / * Incomplete comment */ /* /* multiple comments */ */"; - const char* szTestResult = + const char* szTestResult = " \n" "valid text " " " @@ -59,7 +49,7 @@ void RemoveCommentsTest :: testMultiLineComments (void) ::strcpy(szTest2,szTest); CommentRemover::RemoveMultiLineComments("/*","*/",szTest2,' '); - CPPUNIT_ASSERT(0 == ::strcmp(szTest2,szTestResult)); + EXPECT_STREQ(szTestResult, szTest2); delete[] szTest2; } diff --git a/test/unit/utRemoveComments.h b/test/unit/utRemoveComments.h deleted file mode 100644 index aef61db88..000000000 --- a/test/unit/utRemoveComments.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef REMOVECOMMENTS_H -#define REMOVECOMMENTS_H - -#include -#include - -#include - - -using namespace std; -using namespace Assimp; - -class RemoveCommentsTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (RemoveCommentsTest); - CPPUNIT_TEST (testSingleLineComments); - CPPUNIT_TEST (testMultiLineComments); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testSingleLineComments (void); - void testMultiLineComments (void); - - - private: - -}; - -#endif diff --git a/test/unit/utRemoveComponent.cpp b/test/unit/utRemoveComponent.cpp index 6c61c3f97..8537badec 100644 --- a/test/unit/utRemoveComponent.cpp +++ b/test/unit/utRemoveComponent.cpp @@ -1,11 +1,28 @@ - #include "UnitTestPCH.h" -#include "utRemoveComponent.h" + +#include +#include +#include -CPPUNIT_TEST_SUITE_REGISTRATION (RemoveVCProcessTest); +using namespace std; +using namespace Assimp; -void RemoveVCProcessTest :: setUp (void) +class RemoveVCProcessTest : public ::testing::Test +{ +public: + + virtual void SetUp(); + virtual void TearDown(); + +protected: + + RemoveVCProcess* piProcess; + aiScene* pScene; +}; + +// ------------------------------------------------------------------------------------------------ +void RemoveVCProcessTest::SetUp() { // construct the process piProcess = new RemoveVCProcess(); @@ -50,100 +67,122 @@ void RemoveVCProcessTest :: setUp (void) // COMPILE TEST: aiMaterial may no add any extra members, // so we don't need a virtual destructor char check[sizeof(aiMaterial) == sizeof(aiMaterial) ? 10 : -1]; - check[0] = 0; + check[0] = 0; } -void RemoveVCProcessTest :: tearDown (void) +// ------------------------------------------------------------------------------------------------ +void RemoveVCProcessTest::TearDown() { delete pScene; delete piProcess; } -void RemoveVCProcessTest::testMeshRemove (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(RemoveVCProcessTest, testMeshRemove) { piProcess->SetDeleteFlags(aiComponent_MESHES); piProcess->Execute(pScene); - CPPUNIT_ASSERT(NULL == pScene->mMeshes && 0 == pScene->mNumMeshes); - CPPUNIT_ASSERT(pScene->mFlags == AI_SCENE_FLAGS_INCOMPLETE); + EXPECT_TRUE(NULL == pScene->mMeshes); + EXPECT_EQ(0U, pScene->mNumMeshes); + EXPECT_TRUE(pScene->mFlags == AI_SCENE_FLAGS_INCOMPLETE); } -void RemoveVCProcessTest::testAnimRemove (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(RemoveVCProcessTest, testAnimRemove) { piProcess->SetDeleteFlags(aiComponent_ANIMATIONS); piProcess->Execute(pScene); - CPPUNIT_ASSERT(NULL == pScene->mAnimations && 0 == pScene->mNumAnimations); - CPPUNIT_ASSERT(pScene->mFlags == 0); + EXPECT_TRUE(NULL == pScene->mAnimations); + EXPECT_EQ(0U, pScene->mNumAnimations); + EXPECT_EQ(0U, pScene->mFlags); } -void RemoveVCProcessTest::testMaterialRemove (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(RemoveVCProcessTest, testMaterialRemove) { piProcess->SetDeleteFlags(aiComponent_MATERIALS); piProcess->Execute(pScene); // there should be one default material now ... - CPPUNIT_ASSERT(1 == pScene->mNumMaterials && + EXPECT_TRUE(1 == pScene->mNumMaterials && pScene->mMeshes[0]->mMaterialIndex == 0 && pScene->mMeshes[1]->mMaterialIndex == 0); - CPPUNIT_ASSERT(pScene->mFlags == 0); + EXPECT_EQ(0U, pScene->mFlags); } -void RemoveVCProcessTest::testTextureRemove (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(RemoveVCProcessTest, testTextureRemove) { piProcess->SetDeleteFlags(aiComponent_TEXTURES); piProcess->Execute(pScene); - CPPUNIT_ASSERT(NULL == pScene->mTextures && 0 == pScene->mNumTextures); - CPPUNIT_ASSERT(pScene->mFlags == 0); + EXPECT_TRUE(NULL == pScene->mTextures); + EXPECT_EQ(0U, pScene->mNumTextures); + EXPECT_EQ(0U, pScene->mFlags); } -void RemoveVCProcessTest::testCameraRemove (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(RemoveVCProcessTest, testCameraRemove) { piProcess->SetDeleteFlags(aiComponent_CAMERAS); piProcess->Execute(pScene); - CPPUNIT_ASSERT(NULL == pScene->mCameras && 0 == pScene->mNumCameras); - CPPUNIT_ASSERT(pScene->mFlags == 0); + EXPECT_TRUE(NULL == pScene->mCameras); + EXPECT_EQ(0U, pScene->mNumCameras); + EXPECT_EQ(0U, pScene->mFlags); } -void RemoveVCProcessTest::testLightRemove (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(RemoveVCProcessTest, testLightRemove) { piProcess->SetDeleteFlags(aiComponent_LIGHTS); piProcess->Execute(pScene); - CPPUNIT_ASSERT(NULL == pScene->mLights && 0 == pScene->mNumLights); - CPPUNIT_ASSERT(pScene->mFlags == 0); + EXPECT_TRUE(NULL == pScene->mLights); + EXPECT_EQ(0U, pScene->mNumLights); + EXPECT_EQ(0U, pScene->mFlags); } -void RemoveVCProcessTest::testMeshComponentsRemoveA (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(RemoveVCProcessTest, testMeshComponentsRemoveA) { piProcess->SetDeleteFlags(aiComponent_TEXCOORDSn(1) | aiComponent_TEXCOORDSn(2) | aiComponent_TEXCOORDSn(3)); piProcess->Execute(pScene); - CPPUNIT_ASSERT(pScene->mMeshes[0]->mTextureCoords[0] && + EXPECT_TRUE(pScene->mMeshes[0]->mTextureCoords[0] && !pScene->mMeshes[0]->mTextureCoords[1] && !pScene->mMeshes[0]->mTextureCoords[2] && !pScene->mMeshes[0]->mTextureCoords[3]); - CPPUNIT_ASSERT(pScene->mFlags == 0); + EXPECT_EQ(0U, pScene->mFlags); } -void RemoveVCProcessTest::testMeshComponentsRemoveB (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(RemoveVCProcessTest, testMeshComponentsRemoveB) { piProcess->SetDeleteFlags(aiComponent_TEXCOORDSn(1) | aiComponent_NORMALS); piProcess->Execute(pScene); - CPPUNIT_ASSERT(pScene->mMeshes[0]->mTextureCoords[0] && + EXPECT_TRUE(pScene->mMeshes[0]->mTextureCoords[0] && pScene->mMeshes[0]->mTextureCoords[1] && pScene->mMeshes[0]->mTextureCoords[2] && // shift forward ... !pScene->mMeshes[0]->mTextureCoords[3] && !pScene->mMeshes[0]->mNormals); - CPPUNIT_ASSERT(pScene->mFlags == 0); + EXPECT_EQ(0U, pScene->mFlags); } -void RemoveVCProcessTest::testRemoveEverything (void) +// ------------------------------------------------------------------------------------------------ +TEST_F(RemoveVCProcessTest, testRemoveEverything) { - piProcess->SetDeleteFlags(aiComponent_LIGHTS | aiComponent_ANIMATIONS | + piProcess->SetDeleteFlags(aiComponent_LIGHTS | aiComponent_ANIMATIONS | aiComponent_MATERIALS | aiComponent_MESHES | aiComponent_CAMERAS | aiComponent_TEXTURES); piProcess->Execute(pScene); + EXPECT_EQ(0U, pScene->mNumAnimations); + EXPECT_EQ(0U, pScene->mNumCameras); + EXPECT_EQ(0U, pScene->mNumLights); + EXPECT_EQ(0U, pScene->mNumMeshes); + EXPECT_EQ(0U, pScene->mNumTextures); + // Only the default material should remain. + EXPECT_EQ(1U, pScene->mNumMaterials); } diff --git a/test/unit/utRemoveComponent.h b/test/unit/utRemoveComponent.h deleted file mode 100644 index 1eeb31e65..000000000 --- a/test/unit/utRemoveComponent.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef TESTLBW_H -#define TESTLBW_H - -#include -#include - -#include -#include -#include - -using namespace std; -using namespace Assimp; - -class RemoveVCProcessTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (RemoveVCProcessTest); - CPPUNIT_TEST (testMeshRemove); - CPPUNIT_TEST (testAnimRemove); - CPPUNIT_TEST (testMaterialRemove); - CPPUNIT_TEST (testTextureRemove); - CPPUNIT_TEST (testCameraRemove); - CPPUNIT_TEST (testLightRemove); - CPPUNIT_TEST (testMeshComponentsRemoveA); - CPPUNIT_TEST (testMeshComponentsRemoveB); - CPPUNIT_TEST (testRemoveEverything); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testMeshRemove (void); - void testAnimRemove (void); - void testMaterialRemove (void); - void testTextureRemove (void); - void testCameraRemove (void); - void testLightRemove (void); - - void testMeshComponentsRemoveA (void); - void testMeshComponentsRemoveB (void); - void testRemoveEverything (void); - - private: - - RemoveVCProcess* piProcess; - aiScene* pScene; -}; - -#endif diff --git a/test/unit/utRemoveRedundantMaterials.cpp b/test/unit/utRemoveRedundantMaterials.cpp index a4d4f01dc..e072b02f6 100644 --- a/test/unit/utRemoveRedundantMaterials.cpp +++ b/test/unit/utRemoveRedundantMaterials.cpp @@ -1,10 +1,28 @@ - #include "UnitTestPCH.h" -#include "utRemoveRedundantMaterials.h" -CPPUNIT_TEST_SUITE_REGISTRATION (RemoveRedundantMatsTest); +#include +#include +#include +using namespace std; +using namespace Assimp; + +class RemoveRedundantMatsTest : public ::testing::Test +{ +public: + + virtual void SetUp(); + virtual void TearDown(); + +protected: + + RemoveRedundantMatsProcess* piProcess; + + aiScene* pcScene1; + aiScene* pcScene2; +}; + // ------------------------------------------------------------------------------------------------ aiMaterial* getUniqueMaterial1() { @@ -48,7 +66,7 @@ aiMaterial* getUniqueMaterial3() } // ------------------------------------------------------------------------------------------------ -void RemoveRedundantMatsTest :: setUp (void) +void RemoveRedundantMatsTest::SetUp() { // construct the process piProcess = new RemoveRedundantMatsProcess(); @@ -89,44 +107,44 @@ void RemoveRedundantMatsTest :: setUp (void) } // ------------------------------------------------------------------------------------------------ -void RemoveRedundantMatsTest :: tearDown (void) +void RemoveRedundantMatsTest::TearDown() { delete piProcess; delete pcScene1; } // ------------------------------------------------------------------------------------------------ -void RemoveRedundantMatsTest :: testRedundantMaterials (void) +TEST_F(RemoveRedundantMatsTest, testRedundantMaterials) { piProcess->SetFixedMaterialsString(); piProcess->Execute(pcScene1); - CPPUNIT_ASSERT_EQUAL(pcScene1->mNumMaterials,3u); - CPPUNIT_ASSERT(0 != pcScene1->mMaterials && + EXPECT_EQ(3U, pcScene1->mNumMaterials); + EXPECT_TRUE(0 != pcScene1->mMaterials && 0 != pcScene1->mMaterials[0] && 0 != pcScene1->mMaterials[1] && 0 != pcScene1->mMaterials[2]); aiString sName; - CPPUNIT_ASSERT(AI_SUCCESS == aiGetMaterialString(pcScene1->mMaterials[2],AI_MATKEY_NAME,&sName)); - CPPUNIT_ASSERT(!::strcmp( sName.data, "Complex material name" )); + EXPECT_EQ(AI_SUCCESS, aiGetMaterialString(pcScene1->mMaterials[2],AI_MATKEY_NAME,&sName)); + EXPECT_STREQ("Complex material name", sName.data); } // ------------------------------------------------------------------------------------------------ -void RemoveRedundantMatsTest :: testRedundantMaterialsWithExcludeList (void) +TEST_F(RemoveRedundantMatsTest, testRedundantMaterialsWithExcludeList) { piProcess->SetFixedMaterialsString("\'Unique Mat2\'\t\'Complex material name\' and_another_one_which_we_wont_use"); piProcess->Execute(pcScene1); - CPPUNIT_ASSERT_EQUAL(pcScene1->mNumMaterials,4u); - CPPUNIT_ASSERT(0 != pcScene1->mMaterials && + EXPECT_EQ(4U, pcScene1->mNumMaterials); + EXPECT_TRUE(0 != pcScene1->mMaterials && 0 != pcScene1->mMaterials[0] && 0 != pcScene1->mMaterials[1] && 0 != pcScene1->mMaterials[2] && 0 != pcScene1->mMaterials[3]); aiString sName; - CPPUNIT_ASSERT(AI_SUCCESS == aiGetMaterialString(pcScene1->mMaterials[3],AI_MATKEY_NAME,&sName)); - CPPUNIT_ASSERT(!::strcmp( sName.data, "Complex material name" )); + EXPECT_EQ(AI_SUCCESS, aiGetMaterialString(pcScene1->mMaterials[3],AI_MATKEY_NAME,&sName)); + EXPECT_STREQ("Complex material name", sName.data); } diff --git a/test/unit/utRemoveRedundantMaterials.h b/test/unit/utRemoveRedundantMaterials.h deleted file mode 100644 index 388c7dd66..000000000 --- a/test/unit/utRemoveRedundantMaterials.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef TESTRRM_H -#define TESTRRM_H - -#include -#include - -#include -#include -#include - -using namespace std; -using namespace Assimp; - -class RemoveRedundantMatsTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (RemoveRedundantMatsTest); - CPPUNIT_TEST (testRedundantMaterials); - CPPUNIT_TEST (testRedundantMaterialsWithExcludeList); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testRedundantMaterials (void); - void testRedundantMaterialsWithExcludeList (void); - - private: - - RemoveRedundantMatsProcess* piProcess; - - aiScene* pcScene1; - aiScene* pcScene2; -}; - -#endif diff --git a/test/unit/utScenePreprocessor.cpp b/test/unit/utScenePreprocessor.cpp index 3fa75be43..9abaa56aa 100644 --- a/test/unit/utScenePreprocessor.cpp +++ b/test/unit/utScenePreprocessor.cpp @@ -1,10 +1,34 @@ - #include "UnitTestPCH.h" -#include "utScenePreprocessor.h" -CPPUNIT_TEST_SUITE_REGISTRATION (ScenePreprocessorTest); + +#include +#include +#include +#include + +using namespace std; +using namespace Assimp; + + +class ScenePreprocessorTest : public ::testing::Test +{ +public: + + virtual void SetUp(); + virtual void TearDown(); + +protected: + + void CheckIfOnly(aiMesh* p, unsigned int num, unsigned flag); + + void ProcessAnimation(aiAnimation* anim) { pp->ProcessAnimation(anim); } + void ProcessMesh(aiMesh* mesh) { pp->ProcessMesh(mesh); } + + ScenePreprocessor* pp; + aiScene* scene; +}; // ------------------------------------------------------------------------------------------------ -void ScenePreprocessorTest::setUp (void) +void ScenePreprocessorTest::SetUp() { // setup a dummy scene with a single node scene = new aiScene(); @@ -21,7 +45,7 @@ void ScenePreprocessorTest::setUp (void) } // ------------------------------------------------------------------------------------------------ -void ScenePreprocessorTest::tearDown (void) +void ScenePreprocessorTest::TearDown() { delete pp; delete scene; @@ -29,29 +53,29 @@ void ScenePreprocessorTest::tearDown (void) // ------------------------------------------------------------------------------------------------ // Check whether ProcessMesh() returns flag for a mesh that consist of primitives with num indices -void ScenePreprocessorTest::CheckIfOnly(aiMesh* p,unsigned int num, unsigned int flag) +void ScenePreprocessorTest::CheckIfOnly(aiMesh* p, unsigned int num, unsigned int flag) { // Triangles only - for (unsigned i = 0; i < p->mNumFaces;++i) { + for (unsigned i = 0; i < p->mNumFaces;++i) { p->mFaces[i].mNumIndices = num; } pp->ProcessMesh(p); - CPPUNIT_ASSERT(p->mPrimitiveTypes == flag); + EXPECT_EQ(flag, p->mPrimitiveTypes); p->mPrimitiveTypes = 0; } // ------------------------------------------------------------------------------------------------ // Check whether a mesh is preprocessed correctly. Case 1: The mesh needs preprocessing -void ScenePreprocessorTest::testMeshPreprocessingPos (void) +TEST_F(ScenePreprocessorTest, testMeshPreprocessingPos) { aiMesh* p = new aiMesh(); p->mNumFaces = 100; p->mFaces = new aiFace[p->mNumFaces]; - + p->mTextureCoords[0] = new aiVector3D[10]; p->mNumUVComponents[0] = 0; p->mNumUVComponents[1] = 0; - + CheckIfOnly(p,1,aiPrimitiveType_POINT); CheckIfOnly(p,2,aiPrimitiveType_LINE); CheckIfOnly(p,3,aiPrimitiveType_TRIANGLE); @@ -69,32 +93,34 @@ void ScenePreprocessorTest::testMeshPreprocessingPos (void) for (; i < p->mNumFaces;++i) { p->mFaces[i].mNumIndices = 10; } - pp->ProcessMesh(p); - CPPUNIT_ASSERT(p->mPrimitiveTypes == (aiPrimitiveType_TRIANGLE|aiPrimitiveType_POLYGON)); - CPPUNIT_ASSERT(p->mNumUVComponents[0] == 2); - CPPUNIT_ASSERT(p->mNumUVComponents[1] == 0); + ProcessMesh(p); + EXPECT_EQ(static_cast(aiPrimitiveType_TRIANGLE|aiPrimitiveType_POLYGON), + p->mPrimitiveTypes); + EXPECT_EQ(2U, p->mNumUVComponents[0]); + EXPECT_EQ(0U, p->mNumUVComponents[1]); delete p; } // ------------------------------------------------------------------------------------------------ // Check whether a mesh is preprocessed correctly. Case 1: The mesh doesn't need preprocessing -void ScenePreprocessorTest::testMeshPreprocessingNeg (void) +TEST_F(ScenePreprocessorTest, testMeshPreprocessingNeg) { aiMesh* p = new aiMesh(); p->mPrimitiveTypes = aiPrimitiveType_TRIANGLE|aiPrimitiveType_POLYGON; - pp->ProcessMesh(p); + ProcessMesh(p); // should be unmodified - CPPUNIT_ASSERT(p->mPrimitiveTypes == (aiPrimitiveType_TRIANGLE|aiPrimitiveType_POLYGON)); + EXPECT_EQ(static_cast(aiPrimitiveType_TRIANGLE|aiPrimitiveType_POLYGON), + p->mPrimitiveTypes); delete p; } // ------------------------------------------------------------------------------------------------ // Make a dummy animation with a single channel, '' -aiAnimation* MakeDummyAnimation() +aiAnimation* MakeDummyAnimation() { - aiAnimation* p = new aiAnimation(); + aiAnimation* p = new aiAnimation(); p->mNumChannels = 1; p->mChannels = new aiNodeAnim*[1]; aiNodeAnim* anim = p->mChannels[0] = new aiNodeAnim(); @@ -104,7 +130,7 @@ aiAnimation* MakeDummyAnimation() // ------------------------------------------------------------------------------------------------ // Check whether an anim is preprocessed correctly. Case 1: The anim needs preprocessing -void ScenePreprocessorTest::testAnimationPreprocessingPos (void) +TEST_F(ScenePreprocessorTest, testAnimationPreprocessingPos) { aiAnimation* p = MakeDummyAnimation(); aiNodeAnim* anim = p->mChannels[0]; @@ -117,20 +143,20 @@ void ScenePreprocessorTest::testAnimationPreprocessingPos (void) anim->mScalingKeys[i].mTime = i; anim->mScalingKeys[i].mValue = aiVector3D((float)i); } - pp->ProcessAnimation(p); + ProcessAnimation(p); // we should now have a proper duration - CPPUNIT_ASSERT_DOUBLES_EQUAL(p->mDuration,9.,0.005); + EXPECT_NEAR(p->mDuration, 9., 0.005); // ... one scaling key - CPPUNIT_ASSERT(anim->mNumPositionKeys == 1 && - anim->mPositionKeys && - anim->mPositionKeys[0].mTime == 0.0 && + EXPECT_TRUE(anim->mNumPositionKeys == 1 && + anim->mPositionKeys && + anim->mPositionKeys[0].mTime == 0.0 && anim->mPositionKeys[0].mValue == aiVector3D(1.f,2.f,3.f)); // ... and one rotation key - CPPUNIT_ASSERT(anim->mNumRotationKeys == 1 && anim->mRotationKeys && - anim->mRotationKeys[0].mTime == 0.0); + EXPECT_TRUE(anim->mNumRotationKeys == 1 && anim->mRotationKeys && + anim->mRotationKeys[0].mTime == 0.0); delete p; } diff --git a/test/unit/utScenePreprocessor.h b/test/unit/utScenePreprocessor.h deleted file mode 100644 index 8ebc4b0c0..000000000 --- a/test/unit/utScenePreprocessor.h +++ /dev/null @@ -1,44 +0,0 @@ - - - -#ifndef TESTSCENEPREPROCESSOR_H -#define TESTSCENEPREPROCESSOR_H - -#include -#include - -#include -#include -#include -#include - -using namespace std; -using namespace Assimp; - -class ScenePreprocessorTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (ScenePreprocessorTest); - CPPUNIT_TEST (testMeshPreprocessingPos); - CPPUNIT_TEST (testMeshPreprocessingNeg); - CPPUNIT_TEST (testAnimationPreprocessingPos); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testMeshPreprocessingPos (void); - void testMeshPreprocessingNeg (void); - void testAnimationPreprocessingPos (void); - - private: - - void CheckIfOnly(aiMesh* p,unsigned int num, unsigned flag); - - ScenePreprocessor* pp; - aiScene* scene; -}; - -#endif \ No newline at end of file diff --git a/test/unit/utSharedPPData.cpp b/test/unit/utSharedPPData.cpp index 6344365d7..aec793e8b 100644 --- a/test/unit/utSharedPPData.cpp +++ b/test/unit/utSharedPPData.cpp @@ -1,9 +1,23 @@ - #include "UnitTestPCH.h" -#include "utSharedPPData.h" + +#include +#include -CPPUNIT_TEST_SUITE_REGISTRATION (SharedPPDataTest); +using namespace std; +using namespace Assimp; + +class SharedPPDataTest : public ::testing::Test +{ +public: + + virtual void SetUp(); + virtual void TearDown(); + +protected: + + SharedPostProcessInfo* shared; +}; static bool destructed; @@ -17,50 +31,55 @@ struct TestType // ------------------------------------------------------------------------------------------------ -void SharedPPDataTest :: setUp (void) +void SharedPPDataTest::SetUp() { shared = new SharedPostProcessInfo(); destructed = false; } // ------------------------------------------------------------------------------------------------ -void SharedPPDataTest :: tearDown (void) +void SharedPPDataTest::TearDown() { - + } // ------------------------------------------------------------------------------------------------ -void SharedPPDataTest :: testPODProperty (void) +TEST_F(SharedPPDataTest, testPODProperty) { int i = 5; shared->AddProperty("test",i); int o; - CPPUNIT_ASSERT(shared->GetProperty("test",o) && 5 == o); - CPPUNIT_ASSERT(!shared->GetProperty("test2",o) && 5 == o); + EXPECT_TRUE(shared->GetProperty("test",o)); + EXPECT_EQ(5, o); + EXPECT_FALSE(shared->GetProperty("test2",o)); + EXPECT_EQ(5, o); float f = 12.f, m; shared->AddProperty("test",f); - CPPUNIT_ASSERT(shared->GetProperty("test",m) && 12.f == m); + EXPECT_TRUE(shared->GetProperty("test",m)); + EXPECT_EQ(12.f, m); } // ------------------------------------------------------------------------------------------------ -void SharedPPDataTest :: testPropertyPointer (void) +TEST_F(SharedPPDataTest, testPropertyPointer) { int *i = new int[35]; shared->AddProperty("test16",i); int* o; - CPPUNIT_ASSERT(shared->GetProperty("test16",o) && o == i); + EXPECT_TRUE(shared->GetProperty("test16",o)); + EXPECT_EQ(i, o); shared->RemoveProperty("test16"); - CPPUNIT_ASSERT(!shared->GetProperty("test16",o)); + EXPECT_FALSE(shared->GetProperty("test16",o)); } // ------------------------------------------------------------------------------------------------ -void SharedPPDataTest :: testPropertyDeallocation (void) +TEST_F(SharedPPDataTest, testPropertyDeallocation) { TestType *out, * pip = new TestType(); shared->AddProperty("quak",pip); - CPPUNIT_ASSERT(shared->GetProperty("quak",out) && out == pip); + EXPECT_TRUE(shared->GetProperty("quak",out)); + EXPECT_EQ(pip, out); delete shared; - CPPUNIT_ASSERT(destructed); + EXPECT_TRUE(destructed); } diff --git a/test/unit/utSharedPPData.h b/test/unit/utSharedPPData.h deleted file mode 100644 index 601420e1d..000000000 --- a/test/unit/utSharedPPData.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef TESTPPD_H -#define TESTPPD_H - -#include -#include - -#include -#include - - -using namespace std; -using namespace Assimp; - -class SharedPPDataTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (SharedPPDataTest); - CPPUNIT_TEST (testPODProperty); - CPPUNIT_TEST (testPropertyPointer); - CPPUNIT_TEST (testPropertyDeallocation); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testPODProperty (void); - void testPropertyPointer (void); - void testPropertyDeallocation (void); - - private: - - SharedPostProcessInfo* shared; - -}; - -#endif diff --git a/test/unit/utSortByPType.cpp b/test/unit/utSortByPType.cpp index f486813d2..c8411f6ec 100644 --- a/test/unit/utSortByPType.cpp +++ b/test/unit/utSortByPType.cpp @@ -1,13 +1,28 @@ - #include "UnitTestPCH.h" -#include "utSortByPType.h" -#include "utScenePreprocessor.h" +#include +#include +#include -CPPUNIT_TEST_SUITE_REGISTRATION (SortByPTypeProcessTest); +using namespace std; +using namespace Assimp; + + +class SortByPTypeProcessTest : public ::testing::Test +{ +public: + + virtual void SetUp(); + virtual void TearDown(); + +protected: + + SortByPTypeProcess* process1; + aiScene* scene; +}; // ------------------------------------------------------------------------------------------------ -static unsigned int num[10][4] = +static unsigned int num[10][4] = { {0,0,0,1000}, {0,0,1000,0}, @@ -22,7 +37,7 @@ static unsigned int num[10][4] = }; // ------------------------------------------------------------------------------------------------ -static unsigned int result[10] = +static unsigned int result[10] = { aiPrimitiveType_POLYGON, aiPrimitiveType_TRIANGLE, @@ -37,7 +52,7 @@ static unsigned int result[10] = }; // ------------------------------------------------------------------------------------------------ -void SortByPTypeProcessTest :: setUp (void) +void SortByPTypeProcessTest::SetUp() { // process0 = new DeterminePTypeHelperProcess(); process1 = new SortByPTypeProcess(); @@ -113,7 +128,7 @@ void SortByPTypeProcessTest :: setUp (void) } // ------------------------------------------------------------------------------------------------ -void SortByPTypeProcessTest :: tearDown (void) +void SortByPTypeProcessTest::TearDown() { //delete process0; delete process1; @@ -121,27 +136,27 @@ void SortByPTypeProcessTest :: tearDown (void) } // ------------------------------------------------------------------------------------------------ -//void SortByPTypeProcessTest :: testDeterminePTypeStep (void) +//TEST_F(SortByPTypeProcessTest, DeterminePTypeStep() //{ // process0->Execute(scene); // // for (unsigned int i = 0; i < 10; ++i) // { // aiMesh* mesh = scene->mMeshes[i]; -// CPPUNIT_ASSERT(mesh->mPrimitiveTypes == result[i]); +// EXPECT_TRUE(mesh->mPrimitiveTypes == result[i]); // } //} // ------------------------------------------------------------------------------------------------ -void SortByPTypeProcessTest :: testSortByPTypeStep (void) +TEST_F(SortByPTypeProcessTest, SortByPTypeStep) { -// process0->Execute(scene); + // process0->Execute(scene); // and another small test for ScenePreprocessor ScenePreprocessor s(scene); s.ProcessScene(); for (unsigned int m = 0; m< 10;++m) - CPPUNIT_ASSERT(scene->mMeshes[m]->mPrimitiveTypes == result[m]); + EXPECT_EQ(result[m], scene->mMeshes[m]->mPrimitiveTypes); process1->Execute(scene); @@ -152,23 +167,23 @@ void SortByPTypeProcessTest :: testSortByPTypeStep (void) { if ((idx = num[m][n])) { - CPPUNIT_ASSERT(real < scene->mNumMeshes); + EXPECT_TRUE(real < scene->mNumMeshes); aiMesh* mesh = scene->mMeshes[real]; - CPPUNIT_ASSERT(NULL != mesh); - CPPUNIT_ASSERT(mesh->mPrimitiveTypes == AI_PRIMITIVE_TYPE_FOR_N_INDICES(n+1)); - CPPUNIT_ASSERT(NULL != mesh->mVertices); - CPPUNIT_ASSERT(NULL != mesh->mNormals); - CPPUNIT_ASSERT(NULL != mesh->mTangents); - CPPUNIT_ASSERT(NULL != mesh->mBitangents); - CPPUNIT_ASSERT(NULL != mesh->mTextureCoords[0]); + EXPECT_TRUE(NULL != mesh); + EXPECT_EQ(AI_PRIMITIVE_TYPE_FOR_N_INDICES(n+1), mesh->mPrimitiveTypes); + EXPECT_TRUE(NULL != mesh->mVertices); + EXPECT_TRUE(NULL != mesh->mNormals); + EXPECT_TRUE(NULL != mesh->mTangents); + EXPECT_TRUE(NULL != mesh->mBitangents); + EXPECT_TRUE(NULL != mesh->mTextureCoords[0]); - CPPUNIT_ASSERT(mesh->mNumFaces == idx); + EXPECT_TRUE(mesh->mNumFaces == idx); for (unsigned int f = 0; f < mesh->mNumFaces;++f) { aiFace& face = mesh->mFaces[f]; - CPPUNIT_ASSERT(face.mNumIndices == (n+1) || (3 == n && face.mNumIndices > 3)); + EXPECT_TRUE(face.mNumIndices == (n+1) || (3 == n && face.mNumIndices > 3)); } ++real; } diff --git a/test/unit/utSortByPType.h b/test/unit/utSortByPType.h deleted file mode 100644 index 2590bb2b3..000000000 --- a/test/unit/utSortByPType.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef TESTPPD_H -#define TESTPPD_H - -#include -#include - -#include -#include - - -using namespace std; -using namespace Assimp; - -class SortByPTypeProcessTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (SortByPTypeProcessTest); - CPPUNIT_TEST (testSortByPTypeStep); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testDeterminePTypeStep (void); - void testSortByPTypeStep (void); - - private: - - SortByPTypeProcess* process1; - aiScene* scene; -}; - -#endif diff --git a/test/unit/utSplitLargeMeshes.cpp b/test/unit/utSplitLargeMeshes.cpp index 52d94a2be..ce550736e 100644 --- a/test/unit/utSplitLargeMeshes.cpp +++ b/test/unit/utSplitLargeMeshes.cpp @@ -1,12 +1,29 @@ - #include "UnitTestPCH.h" -#include "utSplitLargeMeshes.h" + +#include +#include -CPPUNIT_TEST_SUITE_REGISTRATION (SplitLargeMeshesTest); +using namespace std; +using namespace Assimp; + +class SplitLargeMeshesTest : public ::testing::Test +{ +public: + + virtual void SetUp(); + virtual void TearDown(); + +protected: + + SplitLargeMeshesProcess_Triangle* piProcessTriangle; + SplitLargeMeshesProcess_Vertex* piProcessVertex; + aiMesh* pcMesh1; + aiMesh* pcMesh2; +}; // ------------------------------------------------------------------------------------------------ -void SplitLargeMeshesTest :: setUp (void) +void SplitLargeMeshesTest::SetUp() { // construct the processes this->piProcessTriangle = new SplitLargeMeshesProcess_Triangle(); @@ -17,8 +34,8 @@ void SplitLargeMeshesTest :: setUp (void) this->pcMesh1 = new aiMesh(); pcMesh1->mNumVertices = 2100; // quersumme: 3 - pcMesh1->mVertices = new aiVector3D[pcMesh1->mNumVertices]; - pcMesh1->mNormals = new aiVector3D[pcMesh1->mNumVertices]; + pcMesh1->mVertices = new aiVector3D[pcMesh1->mNumVertices]; + pcMesh1->mNormals = new aiVector3D[pcMesh1->mNumVertices]; pcMesh1->mNumFaces = pcMesh1->mNumVertices / 3; pcMesh1->mFaces = new aiFace[pcMesh1->mNumFaces]; @@ -37,9 +54,9 @@ void SplitLargeMeshesTest :: setUp (void) // generate many, many faces with randomized indices for // the second mesh this->pcMesh2 = new aiMesh(); - pcMesh2->mNumVertices = 3000; - pcMesh2->mVertices = new aiVector3D[pcMesh2->mNumVertices]; - pcMesh2->mNormals = new aiVector3D[pcMesh2->mNumVertices]; + pcMesh2->mNumVertices = 3000; + pcMesh2->mVertices = new aiVector3D[pcMesh2->mNumVertices]; + pcMesh2->mNormals = new aiVector3D[pcMesh2->mNumVertices]; pcMesh2->mNumFaces = 10000; pcMesh2->mFaces = new aiFace[pcMesh2->mNumFaces]; @@ -56,14 +73,14 @@ void SplitLargeMeshesTest :: setUp (void) } // ------------------------------------------------------------------------------------------------ -void SplitLargeMeshesTest :: tearDown (void) +void SplitLargeMeshesTest::TearDown() { delete this->piProcessTriangle; delete this->piProcessVertex; } // ------------------------------------------------------------------------------------------------ -void SplitLargeMeshesTest :: testVertexSplit() +TEST_F(SplitLargeMeshesTest, testVertexSplit) { std::vector< std::pair > avOut; @@ -75,17 +92,18 @@ void SplitLargeMeshesTest :: testVertexSplit() iter != end; ++iter) { aiMesh* mesh = (*iter).first; - CPPUNIT_ASSERT(mesh->mNumVertices < 1000); - CPPUNIT_ASSERT(0 != mesh->mNormals && 0 != mesh->mVertices); + EXPECT_LT(mesh->mNumVertices, 1000U); + EXPECT_TRUE(NULL != mesh->mNormals); + EXPECT_TRUE(NULL != mesh->mVertices); iOldFaceNum -= mesh->mNumFaces; delete mesh; } - CPPUNIT_ASSERT(0 == iOldFaceNum); + EXPECT_EQ(0, iOldFaceNum); } // ------------------------------------------------------------------------------------------------ -void SplitLargeMeshesTest :: testTriangleSplit() +TEST_F(SplitLargeMeshesTest, testTriangleSplit) { std::vector< std::pair > avOut; @@ -98,11 +116,12 @@ void SplitLargeMeshesTest :: testTriangleSplit() iter != end; ++iter) { aiMesh* mesh = (*iter).first; - CPPUNIT_ASSERT(mesh->mNumFaces < 1000); - CPPUNIT_ASSERT(0 != mesh->mNormals && 0 != mesh->mVertices); + EXPECT_LT(mesh->mNumFaces, 1000U); + EXPECT_TRUE(NULL != mesh->mNormals); + EXPECT_TRUE(NULL != mesh->mVertices); iOldFaceNum -= mesh->mNumFaces; delete mesh; } - CPPUNIT_ASSERT(0 == iOldFaceNum); -} \ No newline at end of file + EXPECT_EQ(0, iOldFaceNum); +} diff --git a/test/unit/utSplitLargeMeshes.h b/test/unit/utSplitLargeMeshes.h deleted file mode 100644 index 37eaa8ef6..000000000 --- a/test/unit/utSplitLargeMeshes.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef TESTLM_H -#define TESTLM_H - -#include -#include - -#include -#include - - -using namespace std; -using namespace Assimp; - -class SplitLargeMeshesTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (SplitLargeMeshesTest); - CPPUNIT_TEST (testVertexSplit); - CPPUNIT_TEST (testTriangleSplit); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testVertexSplit (void); - void testTriangleSplit (void); - - - private: - - SplitLargeMeshesProcess_Triangle* piProcessTriangle; - SplitLargeMeshesProcess_Vertex* piProcessVertex; - aiMesh* pcMesh1; - aiMesh* pcMesh2; -}; - -#endif diff --git a/test/unit/utTargetAnimation.cpp b/test/unit/utTargetAnimation.cpp index d131e2049..9954de8f7 100644 --- a/test/unit/utTargetAnimation.cpp +++ b/test/unit/utTargetAnimation.cpp @@ -1,4 +1,3 @@ - #include "UnitTestPCH.h" -// TODO \ No newline at end of file +// TODO diff --git a/test/unit/utTargetAnimation.h b/test/unit/utTargetAnimation.h deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/unit/utTextureTransform.cpp b/test/unit/utTextureTransform.cpp index 3e9e49b91..9954de8f7 100644 --- a/test/unit/utTextureTransform.cpp +++ b/test/unit/utTextureTransform.cpp @@ -1,2 +1,3 @@ +#include "UnitTestPCH.h" -#include "UnitTestPCH.h" \ No newline at end of file +// TODO diff --git a/test/unit/utTriangulate.cpp b/test/unit/utTriangulate.cpp index 58b9f5a96..0bfbca907 100644 --- a/test/unit/utTriangulate.cpp +++ b/test/unit/utTriangulate.cpp @@ -1,12 +1,26 @@ - #include "UnitTestPCH.h" -#include "utTriangulate.h" + +#include +#include -CPPUNIT_TEST_SUITE_REGISTRATION (TriangulateProcessTest); +using namespace std; +using namespace Assimp; +class TriangulateProcessTest : public ::testing::Test +{ +public: -void TriangulateProcessTest :: setUp (void) + virtual void SetUp(); + virtual void TearDown(); + +protected: + + aiMesh* pcMesh; + TriangulateProcess* piProcess; +}; + +void TriangulateProcessTest::SetUp() { piProcess = new TriangulateProcess(); pcMesh = new aiMesh(); @@ -15,8 +29,8 @@ void TriangulateProcessTest :: setUp (void) pcMesh->mFaces = new aiFace[1000]; pcMesh->mVertices = new aiVector3D[10000]; - pcMesh->mPrimitiveTypes = aiPrimitiveType_POINT | aiPrimitiveType_LINE | - aiPrimitiveType_LINE | aiPrimitiveType_POLYGON; + pcMesh->mPrimitiveTypes = aiPrimitiveType_POINT | aiPrimitiveType_LINE | + aiPrimitiveType_LINE | aiPrimitiveType_POLYGON; for (unsigned int m = 0, t = 0, q = 4; m < 1000; ++m) { @@ -35,7 +49,7 @@ void TriangulateProcessTest :: setUp (void) { face.mIndices[p] = pcMesh->mNumVertices; - // construct fully convex input data in ccw winding, xy plane + // construct fully convex input data in ccw winding, xy plane aiVector3D& v = pcMesh->mVertices[pcMesh->mNumVertices++]; v.z = 0.f; v.x = cos (p * (float)(AI_MATH_TWO_PI)/face.mNumIndices); @@ -44,13 +58,13 @@ void TriangulateProcessTest :: setUp (void) } } -void TriangulateProcessTest :: tearDown (void) +void TriangulateProcessTest::TearDown() { delete piProcess; delete pcMesh; } -void TriangulateProcessTest :: testTriangulation (void) +TEST_F(TriangulateProcessTest, testTriangulation) { piProcess->TriangulateMesh(pcMesh); @@ -68,7 +82,7 @@ void TriangulateProcessTest :: testTriangulation (void) for (unsigned int i = 0, tt = q-2; i < tt; ++i,++m) { aiFace& face = pcMesh->mFaces[m]; - CPPUNIT_ASSERT(face.mNumIndices == 3); + EXPECT_EQ(3U, face.mNumIndices); for (unsigned int qqq = 0; qqq < face.mNumIndices; ++qqq) { @@ -77,7 +91,7 @@ void TriangulateProcessTest :: testTriangulation (void) } for (std::vector::const_iterator it = ait.begin(); it != ait.end(); ++it) { - CPPUNIT_ASSERT(*it); + EXPECT_TRUE(*it); } --m; idx+=q; @@ -85,15 +99,15 @@ void TriangulateProcessTest :: testTriangulation (void) } else { - CPPUNIT_ASSERT(face.mNumIndices == t); + EXPECT_EQ(t, face.mNumIndices); for (unsigned int i = 0; i < face.mNumIndices; ++i,++idx) { - CPPUNIT_ASSERT(face.mIndices[i] == idx); + EXPECT_EQ(idx, face.mIndices[i]); } } } // we should have no valid normal vectors now necause we aren't a pure polygon mesh - CPPUNIT_ASSERT(pcMesh->mNormals == NULL); -} \ No newline at end of file + EXPECT_TRUE(pcMesh->mNormals == NULL); +} diff --git a/test/unit/utTriangulate.h b/test/unit/utTriangulate.h deleted file mode 100644 index 426aba94c..000000000 --- a/test/unit/utTriangulate.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef TESTNORMALS_H -#define TESTNORMALS_H - -#include -#include - -#include -#include - - -using namespace std; -using namespace Assimp; - -class TriangulateProcessTest : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (TriangulateProcessTest); - CPPUNIT_TEST (testTriangulation); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void testTriangulation (void); - - private: - - - aiMesh* pcMesh; - TriangulateProcess* piProcess; -}; - -#endif diff --git a/test/unit/utVertexTriangleAdjacency.cpp b/test/unit/utVertexTriangleAdjacency.cpp index 9d9227d2f..800821a1b 100644 --- a/test/unit/utVertexTriangleAdjacency.cpp +++ b/test/unit/utVertexTriangleAdjacency.cpp @@ -1,25 +1,36 @@ - #include "UnitTestPCH.h" -#include "utVertexTriangleAdjacency.h" + +#include "assimp/types.h" +#include "assimp/mesh.h" + +#include -CPPUNIT_TEST_SUITE_REGISTRATION (VTAdjacency); +using namespace std; +using namespace Assimp; + +class VTAdjacencyTest : public ::testing::Test +{ +protected: + + void checkMesh(const aiMesh& mesh); +}; // ------------------------------------------------------------------------------------------------ -void VTAdjacency :: setUp (void) +TEST_F(VTAdjacencyTest, largeRandomDataSet) { // build a test mesh with randomized input data // ******************************************************************************* - pMesh = new aiMesh(); + aiMesh mesh; - pMesh->mNumVertices = 500; - pMesh->mNumFaces = 600; + mesh.mNumVertices = 500; + mesh.mNumFaces = 600; - pMesh->mFaces = new aiFace[600]; + mesh.mFaces = new aiFace[600]; unsigned int iCurrent = 0; for (unsigned int i = 0; i < 600;++i) { - aiFace& face = pMesh->mFaces[i]; + aiFace& face = mesh.mFaces[i]; face.mNumIndices = 3; face.mIndices = new unsigned int[3]; @@ -32,44 +43,55 @@ void VTAdjacency :: setUp (void) face.mIndices[1] == face.mIndices[2]); } + checkMesh(mesh); +} - // build a second test mesh - this one is extremely small +// ------------------------------------------------------------------------------------------------ +TEST_F(VTAdjacencyTest, smallDataSet) +{ + + // build a test mesh - this one is extremely small // ******************************************************************************* - pMesh2 = new aiMesh(); + aiMesh mesh; - pMesh2->mNumVertices = 5; - pMesh2->mNumFaces = 3; + mesh.mNumVertices = 5; + mesh.mNumFaces = 3; - pMesh2->mFaces = new aiFace[3]; - pMesh2->mFaces[0].mIndices = new unsigned int[3]; - pMesh2->mFaces[1].mIndices = new unsigned int[3]; - pMesh2->mFaces[2].mIndices = new unsigned int[3]; + mesh.mFaces = new aiFace[3]; + mesh.mFaces[0].mIndices = new unsigned int[3]; + mesh.mFaces[1].mIndices = new unsigned int[3]; + mesh.mFaces[2].mIndices = new unsigned int[3]; - pMesh2->mFaces[0].mIndices[0] = 1; - pMesh2->mFaces[0].mIndices[1] = 3; - pMesh2->mFaces[0].mIndices[2] = 2; + mesh.mFaces[0].mIndices[0] = 1; + mesh.mFaces[0].mIndices[1] = 3; + mesh.mFaces[0].mIndices[2] = 2; - pMesh2->mFaces[1].mIndices[0] = 0; - pMesh2->mFaces[1].mIndices[1] = 2; - pMesh2->mFaces[1].mIndices[2] = 3; + mesh.mFaces[1].mIndices[0] = 0; + mesh.mFaces[1].mIndices[1] = 2; + mesh.mFaces[1].mIndices[2] = 3; - pMesh2->mFaces[2].mIndices[0] = 3; - pMesh2->mFaces[2].mIndices[1] = 0; - pMesh2->mFaces[2].mIndices[2] = 4; + mesh.mFaces[2].mIndices[0] = 3; + mesh.mFaces[2].mIndices[1] = 0; + mesh.mFaces[2].mIndices[2] = 4; + checkMesh(mesh); +} - // build a third test mesh which does not reference all vertices +// ------------------------------------------------------------------------------------------------ +TEST_F(VTAdjacencyTest, unreferencedVerticesSet) +{ + // build a test mesh which does not reference all vertices // ******************************************************************************* - pMesh3 = new aiMesh(); + aiMesh mesh; - pMesh3->mNumVertices = 500; - pMesh3->mNumFaces = 600; + mesh.mNumVertices = 500; + mesh.mNumFaces = 600; - pMesh3->mFaces = new aiFace[600]; - iCurrent = 0; + mesh.mFaces = new aiFace[600]; + unsigned int iCurrent = 0; for (unsigned int i = 0; i < 600;++i) { - aiFace& face = pMesh3->mFaces[i]; + aiFace& face = mesh.mFaces[i]; face.mNumIndices = 3; face.mIndices = new unsigned int[3]; @@ -88,62 +110,32 @@ void VTAdjacency :: setUp (void) } else if (face.mIndices[1]) face.mIndices[1]--; } + + checkMesh(mesh); } // ------------------------------------------------------------------------------------------------ -void VTAdjacency :: tearDown (void) +void VTAdjacencyTest::checkMesh(const aiMesh& mesh) { - delete pMesh; - pMesh = 0; + VertexTriangleAdjacency adj(mesh.mFaces,mesh.mNumFaces,mesh.mNumVertices,true); - delete pMesh2; - pMesh2 = 0; - - delete pMesh3; - pMesh3 = 0; -} - -// ------------------------------------------------------------------------------------------------ -void VTAdjacency :: largeRandomDataSet (void) -{ - checkMesh(pMesh); -} - -// ------------------------------------------------------------------------------------------------ -void VTAdjacency :: smallDataSet (void) -{ - checkMesh(pMesh2); -} - -// ------------------------------------------------------------------------------------------------ -void VTAdjacency :: unreferencedVerticesSet (void) -{ - checkMesh(pMesh3); -} - -// ------------------------------------------------------------------------------------------------ -void VTAdjacency :: checkMesh (aiMesh* pMesh) -{ - pAdj = new VertexTriangleAdjacency(pMesh->mFaces,pMesh->mNumFaces,pMesh->mNumVertices,true); - - - unsigned int* const piNum = pAdj->mLiveTriangles; + unsigned int* const piNum = adj.mLiveTriangles; // check the primary adjacency table and check whether all faces // are contained in the list unsigned int maxOfs = 0; - for (unsigned int i = 0; i < pMesh->mNumFaces;++i) + for (unsigned int i = 0; i < mesh.mNumFaces;++i) { - aiFace& face = pMesh->mFaces[i]; + aiFace& face = mesh.mFaces[i]; for (unsigned int qq = 0; qq < 3 ;++qq) { const unsigned int idx = face.mIndices[qq]; const unsigned int num = piNum[idx]; // go to this offset - const unsigned int ofs = pAdj->mOffsetTable[idx]; + const unsigned int ofs = adj.mOffsetTable[idx]; maxOfs = std::max(ofs+num,maxOfs); - unsigned int* pi = &pAdj->mAdjacencyTable[ofs]; + unsigned int* pi = &adj.mAdjacencyTable[ofs]; // and search for us ... unsigned int tt = 0; @@ -159,35 +151,34 @@ void VTAdjacency :: checkMesh (aiMesh* pMesh) } } // assert if *this* vertex has not been found in the table - CPPUNIT_ASSERT(tt < num); + EXPECT_LT(tt, num); } } // now check whether there are invalid faces - const unsigned int* pi = pAdj->mAdjacencyTable; + const unsigned int* pi = adj.mAdjacencyTable; for (unsigned int i = 0; i < maxOfs;++i,++pi) { - CPPUNIT_ASSERT(0xffffffff == *pi); + EXPECT_EQ(0xffffffff, *pi); } // check the numTrianglesPerVertex table - for (unsigned int i = 0; i < pMesh->mNumFaces;++i) + for (unsigned int i = 0; i < mesh.mNumFaces;++i) { - aiFace& face = pMesh->mFaces[i]; + aiFace& face = mesh.mFaces[i]; for (unsigned int qq = 0; qq < 3 ;++qq) { const unsigned int idx = face.mIndices[qq]; // we should not reach 0 here ... - CPPUNIT_ASSERT( 0 != piNum[idx]); + EXPECT_NE(0U, piNum[idx]); piNum[idx]--; } } // check whether we reached 0 in all entries - for (unsigned int i = 0; i < pMesh->mNumVertices;++i) + for (unsigned int i = 0; i < mesh.mNumVertices;++i) { - CPPUNIT_ASSERT(!piNum[i]); + EXPECT_FALSE(piNum[i]); } - delete pAdj; } diff --git a/test/unit/utVertexTriangleAdjacency.h b/test/unit/utVertexTriangleAdjacency.h deleted file mode 100644 index ed2646fc1..000000000 --- a/test/unit/utVertexTriangleAdjacency.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef VTADJ_H -#define VTADJ_H - -#include -#include - -#include "assimp/types.h" -#include "assimp/mesh.h" -#include - - -using namespace std; -using namespace Assimp; - -class VTAdjacency : public CPPUNIT_NS :: TestFixture -{ - CPPUNIT_TEST_SUITE (VTAdjacency); - CPPUNIT_TEST (largeRandomDataSet); - CPPUNIT_TEST (smallDataSet); - CPPUNIT_TEST (unreferencedVerticesSet); - CPPUNIT_TEST_SUITE_END (); - - public: - void setUp (void); - void tearDown (void); - - protected: - - void largeRandomDataSet (void); - void smallDataSet (void); - void unreferencedVerticesSet (void); - - void checkMesh(aiMesh* pMesh); - - private: - - VertexTriangleAdjacency* pAdj; - aiMesh* pMesh, *pMesh2, *pMesh3; -}; - -#endif From 0e28416104cf5ed4df8faa2272fada161318f6e5 Mon Sep 17 00:00:00 2001 From: Jared Duke Date: Mon, 8 Sep 2014 17:30:21 -0700 Subject: [PATCH 129/196] Add tests for fast_atof The custom implementation for fast_atof currently lacks test coverage, making it susceptiple to regressions with future changes. Add some basic test coverage, in addition to a few documented cases that are known to fail. --- test/CMakeLists.txt | 1 + test/unit/utFastAtof.cpp | 144 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+) create mode 100644 test/unit/utFastAtof.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ae6ace59d..d9407634d 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -16,6 +16,7 @@ SOURCE_GROUP( unit FILES ) SET( TEST_SRCS + unit/utFastAtof.cpp unit/utFindDegenerates.cpp unit/utFindInvalidData.cpp unit/utFixInfacingNormals.cpp diff --git a/test/unit/utFastAtof.cpp b/test/unit/utFastAtof.cpp new file mode 100644 index 000000000..141dfb9b7 --- /dev/null +++ b/test/unit/utFastAtof.cpp @@ -0,0 +1,144 @@ +#include "UnitTestPCH.h" + +#include + + +class FastAtofTest : public ::testing::Test +{ +protected: + template + static void RunTest(AtofFunc atof_func) + { + const Real kEps = 1e-5; + +#define TEST_CASE(NUM) EXPECT_NEAR(static_cast(NUM), atof_func(#NUM), kEps) +#define TEST_CASE_NAN(NUM) EXPECT_TRUE(std::isnan(atof_func(#NUM))) +#define TEST_CASE_INF(NUM) EXPECT_TRUE(std::isinf(atof_func(#NUM))) + + TEST_CASE(0); + TEST_CASE(1.354); + TEST_CASE(1054E-3); + TEST_CASE(-1054E-3); + TEST_CASE(-10.54E30); + TEST_CASE(-345554.54e-5); + TEST_CASE(-34555.534954e-5); + TEST_CASE(-34555.534954e-5); + TEST_CASE(549067); + TEST_CASE(567); + TEST_CASE(446); + TEST_CASE(7); + TEST_CASE(73); + TEST_CASE(256); + TEST_CASE(5676); + TEST_CASE(3); + TEST_CASE(738); + TEST_CASE(684); + TEST_CASE(26); + TEST_CASE(673.678e-56); + TEST_CASE(53); + TEST_CASE(67); + TEST_CASE(684); + TEST_CASE(-5437E24); + TEST_CASE(8); + TEST_CASE(84); + TEST_CASE(3); + TEST_CASE(56733.68); + TEST_CASE(786); + TEST_CASE(6478); + TEST_CASE(34563.65683598734); + TEST_CASE(5673); + TEST_CASE(784e-3); + TEST_CASE(8678); + TEST_CASE(46784); + TEST_CASE(-54.0888e-6); + TEST_CASE(100000e10); + TEST_CASE(1e-307); + TEST_CASE(0.000001e-301); + TEST_CASE(0.0000001e-300); + TEST_CASE(0.00000001e-299); + TEST_CASE(1000000e-313); + TEST_CASE(10000000e-314); + TEST_CASE(100000000e-315); + TEST_CASE(12.345); + TEST_CASE(12.345e19); + TEST_CASE(-.1e+9); + TEST_CASE(.125); + TEST_CASE(1e20); + TEST_CASE(0e-19); + TEST_CASE(400012); + TEST_CASE(5.9e-76); + TEST_CASE_INF(inf); + TEST_CASE_INF(inf); + TEST_CASE_INF(infinity); + TEST_CASE_INF(Inf); + TEST_CASE_INF(-Inf); + TEST_CASE_INF(+InFiNiTy); + TEST_CASE_NAN(NAN); + TEST_CASE_NAN(NaN); + TEST_CASE_NAN(nan); + EXPECT_EQ(static_cast(6), atof_func("006")); + EXPECT_EQ(static_cast(5.3), atof_func("5.300 ")); + + /* Failing Cases: + EXPECT_EQ(static_cast(6), atof_func(" 006")); + EXPECT_EQ(static_cast(5.3), atof_func(" 5.300 ")); + TEST_CASE(-10.54E45); + TEST_CASE(0x0A); + TEST_CASE(0xA0); + TEST_CASE(0x1p1023); + TEST_CASE(0x1000p1011); + TEST_CASE(0x1p1020); + TEST_CASE(0x0.00001p1040); + TEST_CASE(0x1p-1021); + TEST_CASE(0x1000p-1033); + TEST_CASE(0x10000p-1037); + TEST_CASE(0x0.001p-1009); + TEST_CASE(0x0.0001p-1005); + TEST_CASE(0x1.4p+3); + TEST_CASE(0xAp0); + TEST_CASE(0x0Ap0); + TEST_CASE(0x0.A0p8); + TEST_CASE(0x0.50p9); + TEST_CASE(0x0.28p10); + TEST_CASE(0x0.14p11); + TEST_CASE(0x0.0A0p12); + TEST_CASE(0x0.050p13); + TEST_CASE(0x0.028p14); + TEST_CASE(0x0.014p15); + TEST_CASE(0x00.00A0p16); + TEST_CASE(0x00.0050p17); + TEST_CASE(0x00.0028p18); + TEST_CASE(0x00.0014p19); + TEST_CASE(0x1p-1023); + TEST_CASE(0x0.8p-1022); + TEST_CASE(0x80000Ap-23); + TEST_CASE(0x100000000000008p0); + TEST_CASE(0x100000000000008.p0); + TEST_CASE(0x100000000000008.00p0); + TEST_CASE(0x10000000000000800p0); + TEST_CASE(0x10000000000000801p0) + */ + +#undef TEST_CASE +#undef TEST_CASE_NAN +#undef TEST_CASE_INF + } +}; + +struct FastAtofWrapper { + float operator()(const char* str) { return Assimp::fast_atof(str); } +}; + +struct FastAtodWrapper { + double operator()(const char* str) { return Assimp::fast_atod(str); } +}; + +TEST_F(FastAtofTest, FastAtof) +{ + RunTest(FastAtofWrapper()); +} + +TEST_F(FastAtofTest, FastAtod) +{ + RunTest(FastAtodWrapper()); +} From 43c82b0b38f77891b7d7b76fd1132bde0f4d2131 Mon Sep 17 00:00:00 2001 From: Jared Duke Date: Tue, 9 Sep 2014 16:34:10 -0700 Subject: [PATCH 130/196] Remove std::isnan and std::isinf usage from utFastAtofTest These functions were added in C++11, and should not be used nakedly in the current code base. Replace them with suitable C++03 constructs. --- code/fast_atof.h | 3 +++ test/unit/utFastAtof.cpp | 17 +++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/code/fast_atof.h b/code/fast_atof.h index 03e08f404..13312fcd8 100644 --- a/code/fast_atof.h +++ b/code/fast_atof.h @@ -248,6 +248,9 @@ inline const char* fast_atoreal_move( const char* c, Real& out, bool check_comma if ((c[0] == 'I' || c[0] == 'i') && ASSIMP_strincmp(c, "inf", 3) == 0) { out = std::numeric_limits::infinity(); + if (inv) { + out = -out; + } c += 3; if ((c[0] == 'I' || c[0] == 'i') && ASSIMP_strincmp(c, "inity", 5) == 0) { diff --git a/test/unit/utFastAtof.cpp b/test/unit/utFastAtof.cpp index 141dfb9b7..f32478b55 100644 --- a/test/unit/utFastAtof.cpp +++ b/test/unit/utFastAtof.cpp @@ -2,6 +2,19 @@ #include +namespace { + +template +bool IsNan(Real x) { + return x != x; +} + +template +bool IsInf(Real x) { + return std::abs(x) == std::numeric_limits::infinity(); +} + +} // Namespace class FastAtofTest : public ::testing::Test { @@ -12,8 +25,8 @@ protected: const Real kEps = 1e-5; #define TEST_CASE(NUM) EXPECT_NEAR(static_cast(NUM), atof_func(#NUM), kEps) -#define TEST_CASE_NAN(NUM) EXPECT_TRUE(std::isnan(atof_func(#NUM))) -#define TEST_CASE_INF(NUM) EXPECT_TRUE(std::isinf(atof_func(#NUM))) +#define TEST_CASE_NAN(NUM) EXPECT_TRUE(IsNan(atof_func(#NUM))) +#define TEST_CASE_INF(NUM) EXPECT_TRUE(IsInf(atof_func(#NUM))) TEST_CASE(0); TEST_CASE(1.354); From af4c30bc77635834138afb38da6bf3f7178af6e9 Mon Sep 17 00:00:00 2001 From: Ryan Cole Date: Fri, 12 Sep 2014 01:48:41 +1200 Subject: [PATCH 131/196] small typo fix renamed getNumVertives to getNumVertices. --- port/jassimp/jassimp/src/jassimp/AiMesh.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/port/jassimp/jassimp/src/jassimp/AiMesh.java b/port/jassimp/jassimp/src/jassimp/AiMesh.java index 81ac0b775..c9cb3669a 100644 --- a/port/jassimp/jassimp/src/jassimp/AiMesh.java +++ b/port/jassimp/jassimp/src/jassimp/AiMesh.java @@ -316,7 +316,7 @@ public final class AiMesh { * * @return the number of vertices. */ - public int getNumVertives() { + public int getNumVertices() { return m_numVertices; } @@ -432,7 +432,7 @@ public final class AiMesh { * Returns a buffer containing vertex positions.

    * * A vertex position consists of a triple of floats, the buffer will - * therefore contain 3 * getNumVertives() floats + * therefore contain 3 * getNumVertices() floats * * @return a native-order direct buffer, or null if no data is available */ @@ -503,7 +503,7 @@ public final class AiMesh { * used to check whether this is the case.

    * * Indices are stored as integers, the buffer will therefore contain - * 3 * getNumVertives() integers (3 indices per triangle) + * 3 * getNumVertices() integers (3 indices per triangle) * * @return a native-order direct buffer * @throws UnsupportedOperationException @@ -523,7 +523,7 @@ public final class AiMesh { * Returns a buffer containing normals.

    * * A normal consists of a triple of floats, the buffer will - * therefore contain 3 * getNumVertives() floats + * therefore contain 3 * getNumVertices() floats * * @return a native-order direct buffer */ @@ -540,7 +540,7 @@ public final class AiMesh { * Returns a buffer containing tangents.

    * * A tangent consists of a triple of floats, the buffer will - * therefore contain 3 * getNumVertives() floats + * therefore contain 3 * getNumVertices() floats * * @return a native-order direct buffer */ @@ -557,7 +557,7 @@ public final class AiMesh { * Returns a buffer containing bitangents.

    * * A bitangent consists of a triple of floats, the buffer will - * therefore contain 3 * getNumVertives() floats + * therefore contain 3 * getNumVertices() floats * * @return a native-order direct buffer */ @@ -574,7 +574,7 @@ public final class AiMesh { * Returns a buffer containing vertex colors for a color set.

    * * A vertex color consists of 4 floats (red, green, blue and alpha), the - * buffer will therefore contain 4 * getNumVertives() floats + * buffer will therefore contain 4 * getNumVertices() floats * * @param colorset the color set * @@ -595,7 +595,7 @@ public final class AiMesh { * A texture coordinate consists of up to 3 floats (u, v, w). The actual * number can be queried via {@link #getNumUVComponents(int)}. The * buffer will contain - * getNumUVComponents(coords) * getNumVertives() floats + * getNumUVComponents(coords) * getNumVertices() floats * * @param coords the texture coordinate set * From 7dff0c6d525d871285d2799082a1d312d2e93af0 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 12 Sep 2014 12:05:42 +0200 Subject: [PATCH 132/196] refactoring: remove not use iosystem. Signed-off-by: Kim Kulling --- code/ObjFileImporter.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index 65a8be314..254ef05db 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -109,9 +109,7 @@ const aiImporterDesc* ObjFileImporter::GetInfo () const // ------------------------------------------------------------------------------------------------ // Obj-file import implementation void ObjFileImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler) -{ - DefaultIOSystem io; - +{ // Read file into memory const std::string mode = "rb"; boost::scoped_ptr file( pIOHandler->Open( pFile, mode)); From 49c9786b0a9446cb2ce726930736ef6b5ad2dc4e Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 12 Sep 2014 15:40:50 +0200 Subject: [PATCH 133/196] update: avoid mesh generation on heap, when the mesh will be empty ( obj-loader ). Signed-off-by: Kim Kulling --- code/ObjFileImporter.cpp | 34 ++++++++++++++-------------------- code/ObjFileImporter.h | 4 ++-- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index 254ef05db..874dda707 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -230,16 +230,10 @@ aiNode *ObjFileImporter::createNodes(const ObjFile::Model* pModel, const ObjFile for ( unsigned int i=0; i< pObject->m_Meshes.size(); i++ ) { unsigned int meshId = pObject->m_Meshes[ i ]; - aiMesh *pMesh = new aiMesh; - createTopology( pModel, pObject, meshId, pMesh ); - if ( pMesh->mNumVertices > 0 ) - { + aiMesh *pMesh = createTopology( pModel, pObject, meshId ); + if( pMesh && pMesh->mNumFaces > 0 ) { MeshArray.push_back( pMesh ); } - else - { - delete pMesh; - } } // Create all nodes from the sub-objects stored in the current object @@ -272,22 +266,22 @@ aiNode *ObjFileImporter::createNodes(const ObjFile::Model* pModel, const ObjFile // ------------------------------------------------------------------------------------------------ // Create topology data -void ObjFileImporter::createTopology(const ObjFile::Model* pModel, - const ObjFile::Object* pData, - unsigned int uiMeshIndex, - aiMesh* pMesh ) +aiMesh *ObjFileImporter::createTopology( const ObjFile::Model* pModel, const ObjFile::Object* pData, + unsigned int uiMeshIndex ) { // Checking preconditions ai_assert( NULL != pModel ); if( NULL == pData ) { - return; + return NULL; } // Create faces ObjFile::Mesh *pObjMesh = pModel->m_Meshes[ uiMeshIndex ]; - ai_assert( NULL != pObjMesh ); - - pMesh->mNumFaces = 0; + if( !pObjMesh ) { + return NULL; + } + ai_assert( NULL != pObjMesh ); + aiMesh* pMesh = new aiMesh; for (size_t index = 0; index < pObjMesh->m_Faces.size(); index++) { ObjFile::Face* const inp = pObjMesh->m_Faces[ index ]; @@ -295,16 +289,14 @@ void ObjFileImporter::createTopology(const ObjFile::Model* pModel, if (inp->m_PrimitiveType == aiPrimitiveType_LINE) { pMesh->mNumFaces += inp->m_pVertices->size() - 1; pMesh->mPrimitiveTypes |= aiPrimitiveType_LINE; - } - else if (inp->m_PrimitiveType == aiPrimitiveType_POINT) { + } else if (inp->m_PrimitiveType == aiPrimitiveType_POINT) { pMesh->mNumFaces += inp->m_pVertices->size(); pMesh->mPrimitiveTypes |= aiPrimitiveType_POINT; } else { ++pMesh->mNumFaces; if (inp->m_pVertices->size() > 3) { pMesh->mPrimitiveTypes |= aiPrimitiveType_POLYGON; - } - else { + } else { pMesh->mPrimitiveTypes |= aiPrimitiveType_TRIANGLE; } } @@ -353,6 +345,8 @@ void ObjFileImporter::createTopology(const ObjFile::Model* pModel, // Create mesh vertices createVertexArray(pModel, pData, uiMeshIndex, pMesh, uiIdxCount); + + return pMesh; } // ------------------------------------------------------------------------------------------------ diff --git a/code/ObjFileImporter.h b/code/ObjFileImporter.h index 814a65652..716cf65d1 100644 --- a/code/ObjFileImporter.h +++ b/code/ObjFileImporter.h @@ -91,8 +91,8 @@ private: aiNode *pParent, aiScene* pScene, std::vector &MeshArray); //! \brief Creates topology data like faces and meshes for the geometry. - void createTopology(const ObjFile::Model* pModel, const ObjFile::Object* pData, - unsigned int uiMeshIndex, aiMesh* pMesh); + aiMesh *createTopology( const ObjFile::Model* pModel, const ObjFile::Object* pData, + unsigned int uiMeshIndex ); //! \brief Creates vertices from model. void createVertexArray(const ObjFile::Model* pModel, const ObjFile::Object* pCurrentObject, From 485aa8b39d160d9e2fb43bb468b3d08cc0234453 Mon Sep 17 00:00:00 2001 From: Jared Duke Date: Fri, 12 Sep 2014 19:37:10 -0700 Subject: [PATCH 134/196] Fix null check in Q3BSPFileImporter Reverse the null condition, preventing invalid texture stream dereferencing. Fixes #380. --- code/Q3BSPFileImporter.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/Q3BSPFileImporter.cpp b/code/Q3BSPFileImporter.cpp index b662be299..c7b829843 100644 --- a/code/Q3BSPFileImporter.cpp +++ b/code/Q3BSPFileImporter.cpp @@ -641,17 +641,17 @@ bool Q3BSPFileImporter::importTextureFromArchive( const Q3BSP::Q3BSPModel *pMode bool res = true; sQ3BSPTexture *pTexture = pModel->m_Textures[ textureId ]; if ( !pTexture ) { - return false; - } + return false; + } - std::vector supportedExtensions; - supportedExtensions.push_back( ".jpg" ); - supportedExtensions.push_back( ".png" ); - supportedExtensions.push_back( ".tga" ); + std::vector supportedExtensions; + supportedExtensions.push_back( ".jpg" ); + supportedExtensions.push_back( ".png" ); + supportedExtensions.push_back( ".tga" ); std::string textureName, ext; if ( expandFile( pArchive, pTexture->strName, supportedExtensions, textureName, ext ) ) { IOStream *pTextureStream = pArchive->Open( textureName.c_str() ); - if ( !pTextureStream ) { + if ( pTextureStream ) { size_t texSize = pTextureStream->FileSize(); aiTexture *pTexture = new aiTexture; pTexture->mHeight = 0; From 35c9a33718ca211b0a70064e42f6e1505806be23 Mon Sep 17 00:00:00 2001 From: Jared Duke Date: Sat, 13 Sep 2014 09:34:07 -0700 Subject: [PATCH 135/196] Fix crash for Blender poly to face conversion without UVs BlenderBMeshConverter assumes that the BMesh has UVs, but that is not always the case. Handle the non-UV case by only adding a T face when UVs are present. --- code/BlenderBMesh.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/code/BlenderBMesh.cpp b/code/BlenderBMesh.cpp index 47dd657fc..5108b1832 100644 --- a/code/BlenderBMesh.cpp +++ b/code/BlenderBMesh.cpp @@ -143,13 +143,21 @@ void BlenderBMeshConverter::DestroyTriMesh( ) void BlenderBMeshConverter::ConvertPolyToFaces( const MPoly& poly ) { const MLoop* polyLoop = &BMesh->mloop[ poly.loopstart ]; - const MLoopUV* loopUV = &BMesh->mloopuv[ poly.loopstart ]; - + if ( poly.totloop == 3 || poly.totloop == 4 ) { AddFace( polyLoop[ 0 ].v, polyLoop[ 1 ].v, polyLoop[ 2 ].v, poly.totloop == 4 ? polyLoop[ 3 ].v : 0 ); - - AddTFace( loopUV[ 0 ].uv, loopUV[ 1 ].uv, loopUV[ 2 ].uv, poly.totloop == 4 ? loopUV[ 3 ].uv : 0 ); + + // UVs are optional, so only convert when present. + if ( BMesh->mloopuv.size() ) + { + if ( (poly.loopstart + poly.totloop ) >= static_cast( BMesh->mloopuv.size() ) ) + { + ThrowException( "BMesh uv loop array has incorrect size" ); + } + const MLoopUV* loopUV = &BMesh->mloopuv[ poly.loopstart ]; + AddTFace( loopUV[ 0 ].uv, loopUV[ 1 ].uv, loopUV[ 2 ].uv, poly.totloop == 4 ? loopUV[ 3 ].uv : 0 ); + } } else if ( poly.totloop > 4 ) { From ab6b5a7b21cacf2e3cfcaf3695ce9d7323fbcf1d Mon Sep 17 00:00:00 2001 From: Denis Biryukov Date: Mon, 15 Sep 2014 23:35:03 +0400 Subject: [PATCH 136/196] Fix gcc warnings. (initialization order) --- code/FBXBinaryTokenizer.cpp | 11 ++++++----- code/FBXTokenizer.cpp | 9 +++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/code/FBXBinaryTokenizer.cpp b/code/FBXBinaryTokenizer.cpp index b5f151c15..ba5db4625 100644 --- a/code/FBXBinaryTokenizer.cpp +++ b/code/FBXBinaryTokenizer.cpp @@ -55,14 +55,15 @@ namespace FBX { // ------------------------------------------------------------------------------------------------ Token::Token(const char* sbegin, const char* send, TokenType type, unsigned int offset) - : sbegin(sbegin) + : + #ifdef DEBUG + contents(sbegin, static_cast(send-sbegin)), + #endif + sbegin(sbegin) , send(send) , type(type) , line(offset) , column(BINARY_MARKER) -#ifdef DEBUG - , contents(sbegin, static_cast(send-sbegin)) -#endif { ai_assert(sbegin); ai_assert(send); @@ -395,4 +396,4 @@ void TokenizeBinary(TokenList& output_tokens, const char* input, unsigned int le } // !FBX } // !Assimp -#endif \ No newline at end of file +#endif diff --git a/code/FBXTokenizer.cpp b/code/FBXTokenizer.cpp index 7aa81543a..caa80c191 100644 --- a/code/FBXTokenizer.cpp +++ b/code/FBXTokenizer.cpp @@ -58,14 +58,15 @@ namespace FBX { // ------------------------------------------------------------------------------------------------ Token::Token(const char* sbegin, const char* send, TokenType type, unsigned int line, unsigned int column) - : sbegin(sbegin) + : +#ifdef DEBUG + contents(sbegin, static_cast(send-sbegin)), +#endif + sbegin(sbegin) , send(send) , type(type) , line(line) , column(column) -#ifdef DEBUG - , contents(sbegin, static_cast(send-sbegin)) -#endif { ai_assert(sbegin); ai_assert(send); From c482458cae36669877e273f04d61e2395e7d64d6 Mon Sep 17 00:00:00 2001 From: Jared Duke Date: Sun, 14 Sep 2014 17:19:42 -0700 Subject: [PATCH 137/196] Fix non-BMesh containing .blend import BlenderBMeshConverter was erroneously asserting that it contained valid mesh upon construction. The assertion should only occur when triangulation is requested, allowing non-BMesh blender meshes to load properly. Note that this fixes a number of .blend regression tests that are currently baselined as failures. --- code/BlenderBMesh.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/code/BlenderBMesh.cpp b/code/BlenderBMesh.cpp index 5108b1832..ed1de0b40 100644 --- a/code/BlenderBMesh.cpp +++ b/code/BlenderBMesh.cpp @@ -65,7 +65,6 @@ BlenderBMeshConverter::BlenderBMeshConverter( const Mesh* mesh ): BMesh( mesh ), triMesh( NULL ) { - AssertValidMesh( ); } // ------------------------------------------------------------------------------------------------ From 046b7e5f478adb0050cbb8e3d37891ce785d972c Mon Sep 17 00:00:00 2001 From: Jared Duke Date: Mon, 15 Sep 2014 18:14:38 -0700 Subject: [PATCH 138/196] Rebase FBX regression db entries The FBX importer now properly parses field-of-view tokens. Rebase only the failing FBX entries to accomodate the fix, also removing the comment noting the (now incorrect) comment about improper import of the FOV property. --- code/FBXConverter.cpp | 2 -- test/regression/db.zip | Bin 1015891 -> 1018079 bytes 2 files changed, 2 deletions(-) diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 03d359875..137f7cbed 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -381,8 +381,6 @@ private: out_camera->mAspect = cam.AspectWidth() / cam.AspectHeight(); out_camera->mPosition = cam.Position(); out_camera->mLookAt = cam.InterestPosition() - out_camera->mPosition; - - // BUG HERE cam.FieldOfView() returns 1.0f every time. 1.0f is default value. out_camera->mHorizontalFOV = AI_DEG_TO_RAD(cam.FieldOfView()); } diff --git a/test/regression/db.zip b/test/regression/db.zip index 12f4a18ba5e84f89fb13c66200120687b36ff834..9c4ba16bbc3028b816c754360be2149ff065644e 100644 GIT binary patch delta 120396 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ùzHAsS%0Iz7(_P0bItT~x`3Xc>?^yL(jAfL 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

    DDWwF;w*2#^SJ3T=#2hbZiq_RK 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 z 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 H(>(tV%3jbQ delta 114574 zcmeFZc{G)6+dpn!dvDu3&*PRk^Gw2)WFC`HnTJS(BE%*Vp+vb%nUauX-U*qfGGr<; z6(O0DIpMdb`@XyH_j#Z7ylZ{ede?8Q*I(x~ovwYI$M88m$8nrf_tgi()M-o&pfDy9 z5)v|!9Pz4?Wi%lWST1%@aSyTyffeFL(a;JAtOPgGfKRKF6=O$D8DF!KL{AN7*zlve6Q?I>q#rNUC*BpUL_sa~-oT*9p3NA%-vTh9o2g`C z>F@N1Q=7(1o8E+W(!A-DT7#ZahH6Eq8n)PtxSoge$*1svxEC;-!F$5}4Mm zBaO=7u}Vuxv~jlAEgVHMxV~0-_lpJD1GFARbw}hSvU3$v@A0wavldT5_-NXyLo?X-rLNbdLBi_0NlY^|i|u8_lV=iSdCNrER=8o0?KM*2Va2aN&~zKma`jgeEv zWS-XV6N9II$+RcXdosL#n}d>j-8W~+?ysP9a9Qe842I`3bb8!2r>tEvmlIU-SUE$ zNQD}C;WDzpBPYosqkq3w3Dx|~$iOSW_mlD{vh9K$%77?gyBnu>&k z0=v-C*JY$#DojrugTk_Li+Wct27o=njW`Wm0N4}UDAL#(0!zbnw@^45{v<}UFev!B67_~Ht2Jk3mWf(F#2JY0d$^`6vGZX= zYsAyJ)ltjB#n{zW-{XEb-`?cw9`oDl+upBoy)z^iL+J9*44tI05~;jjvMY8H)S_3n zV>I`(zYAn2hLx(ki=x6wtxgzEFiva>P~Ef5n)f(^&YfVsOq*Qqbj7#s*=J{Q@9CGV z1veTR&bEaKh|se+IxmU7-Y zA8WTu3j*M+T$rfwJ+qo0NfPf~Got)d!f&V|&t*ZHtNV<^``;RL8{Kke0#rz%1I>;M zDwV;CjSwPlpsh!{RJ4OcQ{CO4v|V|0+;l!mZN`bV1*!JRbg&WZIHVGzr~6AruXHGc zh2(;V^3?niC-woIgdhcEEUk5jtF4ERjN-6!oA8mvxb}HutjTXO3F1~d`!Wpx%fOD3 z%DshPdAL*K-n~R|De>_p$|m2n>j3OI?&_m}brymgKDe6<5QItc{vsLSDt8(hAQ-Fc zj8gzC3HQXeObZC%i4)mdkBF d{}ONQgcFR8px2!?;B@j^y`Ae-yYUen>v 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 L5)yH1GRyw~P|*Od From c8661ab0552863547cf160710a1cef094d5a632d Mon Sep 17 00:00:00 2001 From: Jared Duke Date: Tue, 16 Sep 2014 17:47:55 -0700 Subject: [PATCH 139/196] Rebase BLEND regression db entries Now that .blend import works properly for non-BMesh-containing meshes, all .blend regression test cases should now succeed. Rebase accordingly. --- test/regression/db.zip | Bin 1018079 -> 1091443 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/regression/db.zip b/test/regression/db.zip index 9c4ba16bbc3028b816c754360be2149ff065644e..d942fe75a0f2efb8ebe4ddb556d0b722d2545d82 100644 GIT binary patch delta 151043 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

    >;!ja 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 From 083d5630efc3cde0999dea37d516785a3ebcfbf3 Mon Sep 17 00:00:00 2001 From: Jared Duke Date: Wed, 17 Sep 2014 07:30:55 -0700 Subject: [PATCH 140/196] Use VC11 build for DB generation --- test/regression/db.zip | Bin 1091443 -> 1018078 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/regression/db.zip b/test/regression/db.zip index d942fe75a0f2efb8ebe4ddb556d0b722d2545d82..6c4f82bb09b8f8895762adbc9f3cec39f313933e 100644 GIT binary patch delta 81987 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Ξ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 z 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⁡atorONWVqKc6ado`VJtJgk>~yq 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 SqVzpeqRQs)G6 Date: Wed, 17 Sep 2014 08:49:28 -0700 Subject: [PATCH 141/196] Use Linux/GCC build for DB generation --- test/regression/db.zip | Bin 1018078 -> 1091452 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/regression/db.zip b/test/regression/db.zip index 6c4f82bb09b8f8895762adbc9f3cec39f313933e..265548832663f10766a7a555da0fab219be88dfe 100644 GIT binary patch delta 144498 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 A6aWAK delta 78191 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 Date: Sat, 20 Sep 2014 10:23:21 -0700 Subject: [PATCH 142/196] Use strict inequality when validating BMesh uvloop access Change the inequality to a strict inequality when validating BMesh uvloop access during face conversion. --- code/BlenderBMesh.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/BlenderBMesh.cpp b/code/BlenderBMesh.cpp index ed1de0b40..4dbf1d104 100644 --- a/code/BlenderBMesh.cpp +++ b/code/BlenderBMesh.cpp @@ -150,7 +150,7 @@ void BlenderBMeshConverter::ConvertPolyToFaces( const MPoly& poly ) // UVs are optional, so only convert when present. if ( BMesh->mloopuv.size() ) { - if ( (poly.loopstart + poly.totloop ) >= static_cast( BMesh->mloopuv.size() ) ) + if ( (poly.loopstart + poly.totloop ) > static_cast( BMesh->mloopuv.size() ) ) { ThrowException( "BMesh uv loop array has incorrect size" ); } From b359deb7fdc348b2d8fd56f3e7e5d6c3d3156ed4 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sun, 21 Sep 2014 20:37:36 +0200 Subject: [PATCH 143/196] update: - add assert test in obj-import - fix material token in Obj. Signed-off-by: Kim Kulling --- code/ObjFileImporter.cpp | 11 ++++++----- code/ObjFileMtlImporter.cpp | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index 874dda707..b44ca4f05 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -62,7 +62,7 @@ static const aiImporterDesc desc = { static const unsigned int ObjMinSize = 16; -namespace Assimp { +namespace Assimp { using namespace std; @@ -284,8 +284,9 @@ aiMesh *ObjFileImporter::createTopology( const ObjFile::Model* pModel, const Obj aiMesh* pMesh = new aiMesh; for (size_t index = 0; index < pObjMesh->m_Faces.size(); index++) { - ObjFile::Face* const inp = pObjMesh->m_Faces[ index ]; - + ObjFile::Face *const inp = pObjMesh->m_Faces[ index ]; + ai_assert( NULL != inp ); + if (inp->m_PrimitiveType == aiPrimitiveType_LINE) { pMesh->mNumFaces += inp->m_pVertices->size() - 1; pMesh->mPrimitiveTypes |= aiPrimitiveType_LINE; @@ -302,7 +303,7 @@ aiMesh *ObjFileImporter::createTopology( const ObjFile::Model* pModel, const Obj } } - unsigned int uiIdxCount = 0u; + unsigned int uiIdxCount( 0u ); if ( pMesh->mNumFaces > 0 ) { pMesh->mFaces = new aiFace[ pMesh->mNumFaces ]; @@ -311,7 +312,7 @@ aiMesh *ObjFileImporter::createTopology( const ObjFile::Model* pModel, const Obj pMesh->mMaterialIndex = pObjMesh->m_uiMaterialIndex; } - unsigned int outIndex = 0; + unsigned int outIndex( 0 ); // Copy all data from all stored meshes for (size_t index = 0; index < pObjMesh->m_Faces.size(); index++) diff --git a/code/ObjFileMtlImporter.cpp b/code/ObjFileMtlImporter.cpp index e494fa515..e09a16f2f 100644 --- a/code/ObjFileMtlImporter.cpp +++ b/code/ObjFileMtlImporter.cpp @@ -50,9 +50,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { // Material specific token -static const std::string DiffuseTexture = "map_kd"; -static const std::string AmbientTexture = "map_ka"; -static const std::string SpecularTexture = "map_ks"; +static const std::string DiffuseTexture = "map_Kd"; +static const std::string AmbientTexture = "map_Ka"; +static const std::string SpecularTexture = "map_Ks"; static const std::string OpacityTexture = "map_d"; static const std::string EmmissiveTexture = "map_emissive"; static const std::string BumpTexture1 = "map_bump"; From 775b26e614bdc680739bd9ed6a623ff1ffad2b35 Mon Sep 17 00:00:00 2001 From: abma Date: Tue, 23 Sep 2014 00:42:32 +0200 Subject: [PATCH 144/196] use std:: namespace for most cmath functions: http://en.cppreference.com/w/cpp/header/cmath --- code/BlenderTessellator.cpp | 4 +- code/ColladaLoader.cpp | 2 +- code/ComputeUVMappingProcess.cpp | 6 +-- code/FBXConverter.cpp | 10 ++--- code/FindInvalidDataProcess.cpp | 2 +- code/FixNormalsStep.cpp | 4 +- code/GenVertexNormalsProcess.cpp | 2 +- code/IFCBoolean.cpp | 10 ++--- code/IFCCurve.cpp | 24 +++++------ code/IFCGeometry.cpp | 8 ++-- code/IFCOpenings.cpp | 74 ++++++++++++++++---------------- code/IFCProfile.cpp | 2 +- code/IFCUtil.cpp | 2 +- code/IFCUtil.h | 2 +- code/IRRLoader.cpp | 6 +-- code/LWOBLoader.cpp | 2 +- code/LWOLoader.cpp | 2 +- code/LWOMaterial.cpp | 2 +- code/MD3FileData.h | 6 +-- code/MD5Parser.h | 2 +- code/PolyTools.h | 12 +++--- code/SkeletonMeshBuilder.cpp | 2 +- code/StandardShapes.cpp | 28 ++++++------ code/TextureTransform.h | 14 +++--- code/TriangulateProcess.cpp | 4 +- code/fast_atof.h | 2 +- include/assimp/color4.inl | 2 +- include/assimp/matrix3x3.inl | 6 +-- include/assimp/matrix4x4.inl | 33 ++++++-------- include/assimp/quaternion.inl | 36 ++++++++-------- include/assimp/types.h | 2 +- include/assimp/vector2.inl | 2 +- include/assimp/vector3.inl | 2 +- 33 files changed, 156 insertions(+), 161 deletions(-) diff --git a/code/BlenderTessellator.cpp b/code/BlenderTessellator.cpp index ffe794951..98ccbad6a 100644 --- a/code/BlenderTessellator.cpp +++ b/code/BlenderTessellator.cpp @@ -324,7 +324,7 @@ void BlenderTessellatorP2T::Copy3DVertices( const MLoop* polyLoop, int vertexCou aiMatrix4x4 BlenderTessellatorP2T::GeneratePointTransformMatrix( const Blender::PlaneP2T& plane ) const { aiVector3D sideA( 1.0f, 0.0f, 0.0f ); - if ( fabs( plane.normal * sideA ) > 0.999f ) + if ( std::fabs( plane.normal * sideA ) > 0.999f ) { sideA = aiVector3D( 0.0f, 1.0f, 0.0f ); } @@ -420,7 +420,7 @@ float BlenderTessellatorP2T::FindLargestMatrixElem( const aiMatrix3x3& mtx ) con { for ( int y = 0; y < 3; ++y ) { - result = p2tMax( fabs( mtx[ x ][ y ] ), result ); + result = p2tMax( std::fabs( mtx[ x ][ y ] ), result ); } } diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp index 95c41042a..aa4826fc9 100644 --- a/code/ColladaLoader.cpp +++ b/code/ColladaLoader.cpp @@ -337,7 +337,7 @@ void ColladaLoader::BuildLightsForNode( const ColladaParser& pParser, const Coll { // Need to rely on falloff_exponent. I don't know how to interpret it, so I need to guess .... // epsilon chosen to be 0.1 - out->mAngleOuterCone = AI_DEG_TO_RAD (acos(pow(0.1f,1.f/srcLight->mFalloffExponent))+ + out->mAngleOuterCone = AI_DEG_TO_RAD (std::acos(std::pow(0.1f,1.f/srcLight->mFalloffExponent))+ srcLight->mFalloffAngle); } else { diff --git a/code/ComputeUVMappingProcess.cpp b/code/ComputeUVMappingProcess.cpp index 671371bb5..16b9bbfb0 100644 --- a/code/ComputeUVMappingProcess.cpp +++ b/code/ComputeUVMappingProcess.cpp @@ -207,7 +207,7 @@ void ComputeUVMappingProcess::ComputeSphereMapping(aiMesh* mesh,const aiVector3D for (unsigned int pnt = 0; pnt < mesh->mNumVertices;++pnt) { const aiVector3D diff = (mesh->mVertices[pnt]-center).Normalize(); out[pnt] = aiVector3D((atan2 (diff.z, diff.y) + AI_MATH_PI_F ) / AI_MATH_TWO_PI_F, - (asin (diff.x) + AI_MATH_HALF_PI_F) / AI_MATH_PI_F, 0.f); + (std::asin (diff.x) + AI_MATH_HALF_PI_F) / AI_MATH_PI_F, 0.f); } } else if (axis * base_axis_y >= angle_epsilon) { @@ -215,7 +215,7 @@ void ComputeUVMappingProcess::ComputeSphereMapping(aiMesh* mesh,const aiVector3D for (unsigned int pnt = 0; pnt < mesh->mNumVertices;++pnt) { const aiVector3D diff = (mesh->mVertices[pnt]-center).Normalize(); out[pnt] = aiVector3D((atan2 (diff.x, diff.z) + AI_MATH_PI_F ) / AI_MATH_TWO_PI_F, - (asin (diff.y) + AI_MATH_HALF_PI_F) / AI_MATH_PI_F, 0.f); + (std::asin (diff.y) + AI_MATH_HALF_PI_F) / AI_MATH_PI_F, 0.f); } } else if (axis * base_axis_z >= angle_epsilon) { @@ -223,7 +223,7 @@ void ComputeUVMappingProcess::ComputeSphereMapping(aiMesh* mesh,const aiVector3D for (unsigned int pnt = 0; pnt < mesh->mNumVertices;++pnt) { const aiVector3D diff = (mesh->mVertices[pnt]-center).Normalize(); out[pnt] = aiVector3D((atan2 (diff.y, diff.x) + AI_MATH_PI_F ) / AI_MATH_TWO_PI_F, - (asin (diff.z) + AI_MATH_HALF_PI_F) / AI_MATH_PI_F, 0.f); + (std::asin (diff.z) + AI_MATH_HALF_PI_F) / AI_MATH_PI_F, 0.f); } } // slower code path in case the mapping axis is not one of the coordinate system axes diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 137f7cbed..9ad6a2f16 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -497,15 +497,15 @@ private: bool is_id[3] = { true, true, true }; aiMatrix4x4 temp[3]; - if(fabs(rotation.z) > angle_epsilon) { + if(std::fabs(rotation.z) > angle_epsilon) { aiMatrix4x4::RotationZ(AI_DEG_TO_RAD(rotation.z),temp[2]); is_id[2] = false; } - if(fabs(rotation.y) > angle_epsilon) { + if(std::fabs(rotation.y) > angle_epsilon) { aiMatrix4x4::RotationY(AI_DEG_TO_RAD(rotation.y),temp[1]); is_id[1] = false; } - if(fabs(rotation.x) > angle_epsilon) { + if(std::fabs(rotation.x) > angle_epsilon) { aiMatrix4x4::RotationX(AI_DEG_TO_RAD(rotation.x),temp[0]); is_id[0] = false; } @@ -674,7 +674,7 @@ private: } const aiVector3D& Scaling = PropertyGet(props,"Lcl Scaling",ok); - if(ok && fabs(Scaling.SquareLength()-1.0f) > zero_epsilon) { + if(ok && std::fabs(Scaling.SquareLength()-1.0f) > zero_epsilon) { aiMatrix4x4::Scaling(Scaling,chain[TransformationComp_Scaling]); } @@ -684,7 +684,7 @@ private: } const aiVector3D& GeometricScaling = PropertyGet(props, "GeometricScaling", ok); - if (ok && fabs(GeometricScaling.SquareLength() - 1.0f) > zero_epsilon) { + if (ok && std::fabs(GeometricScaling.SquareLength() - 1.0f) > zero_epsilon) { aiMatrix4x4::Scaling(GeometricScaling, chain[TransformationComp_GeometricScaling]); } diff --git a/code/FindInvalidDataProcess.cpp b/code/FindInvalidDataProcess.cpp index 28f805bd1..45a8798d6 100644 --- a/code/FindInvalidDataProcess.cpp +++ b/code/FindInvalidDataProcess.cpp @@ -221,7 +221,7 @@ AI_FORCE_INLINE bool EpsilonCompare(const T& n, const T& s, float epsilon); // ------------------------------------------------------------------------------------------------ AI_FORCE_INLINE bool EpsilonCompare(float n, float s, float epsilon) { - return fabs(n-s)>epsilon; + return std::fabs(n-s)>epsilon; } // ------------------------------------------------------------------------------------------------ diff --git a/code/FixNormalsStep.cpp b/code/FixNormalsStep.cpp index 67f753e2c..19e5dece3 100644 --- a/code/FixNormalsStep.cpp +++ b/code/FixNormalsStep.cpp @@ -149,8 +149,8 @@ bool FixInfacingNormalsProcess::ProcessMesh( aiMesh* pcMesh, unsigned int index) if (fDelta1_z < 0.05f * sqrtf( fDelta1_y * fDelta1_x ))return false; // now compare the volumes of the bounding boxes - if (::fabsf(fDelta0_x * fDelta1_yz) < - ::fabsf(fDelta1_x * fDelta1_y * fDelta1_z)) + if (std::fabs(fDelta0_x * fDelta1_yz) < + std::fabs(fDelta1_x * fDelta1_y * fDelta1_z)) { if (!DefaultLogger::isNullLogger()) { diff --git a/code/GenVertexNormalsProcess.cpp b/code/GenVertexNormalsProcess.cpp index 77ef20ac5..2784d82ff 100644 --- a/code/GenVertexNormalsProcess.cpp +++ b/code/GenVertexNormalsProcess.cpp @@ -204,7 +204,7 @@ bool GenVertexNormalsProcess::GenMeshVertexNormals (aiMesh* pMesh, unsigned int // Slower code path if a smooth angle is set. There are many ways to achieve // the effect, this one is the most straightforward one. else { - const float fLimit = ::cos(configMaxAngle); + const float fLimit = std::cos(configMaxAngle); for (unsigned int i = 0; i < pMesh->mNumVertices;++i) { // Get all vertices that share this one ... vertexFinder->FindPositions( pMesh->mVertices[i] , posEpsilon, verticesFound); diff --git a/code/IFCBoolean.cpp b/code/IFCBoolean.cpp index 7d3840710..731deca9f 100644 --- a/code/IFCBoolean.cpp +++ b/code/IFCBoolean.cpp @@ -69,8 +69,8 @@ Intersect IntersectSegmentPlane(const IfcVector3& p,const IfcVector3& n, const I const IfcVector3 pdelta = e0 - p, seg = e1-e0; const IfcFloat dotOne = n*seg, dotTwo = -(n*pdelta); - if (fabs(dotOne) < 1e-6) { - return fabs(dotTwo) < 1e-6f ? Intersect_LiesOnPlane : Intersect_No; + if (std::fabs(dotOne) < 1e-6) { + return std::fabs(dotTwo) < 1e-6f ? Intersect_LiesOnPlane : Intersect_No; } const IfcFloat t = dotTwo/dotOne; @@ -210,7 +210,7 @@ bool IntersectsBoundaryProfile( const IfcVector3& e0, const IfcVector3& e1, cons // segment-segment intersection // solve b0 + b*s = e0 + e*t for (s,t) const IfcFloat det = (-b.x * e.y + e.x * b.y); - if(fabs(det) < 1e-6) { + if(std::fabs(det) < 1e-6) { // no solutions (parallel lines) continue; } @@ -234,7 +234,7 @@ bool IntersectsBoundaryProfile( const IfcVector3& e0, const IfcVector3& e1, cons if (t >= -epsilon && (t <= 1.0+epsilon || half_open) && s >= -epsilon && s <= 1.0) { if (e0_hits_border && !*e0_hits_border) { - *e0_hits_border = fabs(t) < 1e-5f; + *e0_hits_border = std::fabs(t) < 1e-5f; } const IfcVector3& p = e0 + e*t; @@ -419,7 +419,7 @@ void ProcessPolygonalBoundedBooleanHalfSpaceDifference(const IfcPolygonalBounded #ifdef ASSIMP_BUILD_DEBUG if (isect == Intersect_Yes) { - const IfcFloat f = fabs((isectpos - p)*n); + const IfcFloat f = std::fabs((isectpos - p)*n); ai_assert(f < 1e-5); } #endif diff --git a/code/IFCCurve.cpp b/code/IFCCurve.cpp index 511b69a2c..c25ee68eb 100644 --- a/code/IFCCurve.cpp +++ b/code/IFCCurve.cpp @@ -88,10 +88,10 @@ public: a *= conv.angle_scale; b *= conv.angle_scale; - a = fmod(a,static_cast( AI_MATH_TWO_PI )); - b = fmod(b,static_cast( AI_MATH_TWO_PI )); + a = std::fmod(a,static_cast( AI_MATH_TWO_PI )); + b = std::fmod(b,static_cast( AI_MATH_TWO_PI )); const IfcFloat setting = static_cast( AI_MATH_PI * conv.settings.conicSamplingAngle / 180.0 ); - return static_cast( ceil(abs( b-a)) / setting); + return static_cast( std::ceil(abs( b-a)) / setting); } // -------------------------------------------------- @@ -124,8 +124,8 @@ public: // -------------------------------------------------- IfcVector3 Eval(IfcFloat u) const { u = -conv.angle_scale * u; - return location + static_cast(entity.Radius)*(static_cast(::cos(u))*p[0] + - static_cast(::sin(u))*p[1]); + return location + static_cast(entity.Radius)*(static_cast(std::cos(u))*p[0] + + static_cast(std::sin(u))*p[1]); } private: @@ -153,8 +153,8 @@ public: // -------------------------------------------------- IfcVector3 Eval(IfcFloat u) const { u = -conv.angle_scale * u; - return location + static_cast(entity.SemiAxis1)*static_cast(::cos(u))*p[0] + - static_cast(entity.SemiAxis2)*static_cast(::sin(u))*p[1]; + return location + static_cast(entity.SemiAxis1)*static_cast(std::cos(u))*p[0] + + static_cast(entity.SemiAxis2)*static_cast(std::sin(u))*p[1]; } private: @@ -486,7 +486,7 @@ public: IfcVector3 Eval(IfcFloat p) const { ai_assert(InRange(p)); - const size_t b = static_cast(floor(p)); + const size_t b = static_cast(std::floor(p)); if (b == points.size()-1) { return points.back(); } @@ -498,7 +498,7 @@ public: // -------------------------------------------------- size_t EstimateSampleCount(IfcFloat a, IfcFloat b) const { ai_assert(InRange(a) && InRange(b)); - return static_cast( ceil(b) - floor(a) ); + return static_cast( std::ceil(b) - std::floor(a) ); } // -------------------------------------------------- @@ -558,7 +558,7 @@ bool Curve :: InRange(IfcFloat u) const if (IsClosed()) { return true; //ai_assert(range.first != std::numeric_limits::infinity() && range.second != std::numeric_limits::infinity()); - //u = range.first + fmod(u-range.first,range.second-range.first); + //u = range.first + std::fmod(u-range.first,range.second-range.first); } const IfcFloat epsilon = 1e-5; return u - range.first > -epsilon && range.second - u > -epsilon; @@ -606,12 +606,12 @@ IfcFloat RecursiveSearch(const Curve* cv, const IfcVector3& val, IfcFloat a, Ifc } ai_assert(min_diff[0] != inf && min_diff[1] != inf); - if ( fabs(a-min_point[0]) < threshold || recurse >= max_recurse) { + if ( std::fabs(a-min_point[0]) < threshold || recurse >= max_recurse) { return min_point[0]; } // fix for closed curves to take their wrap-over into account - if (cv->IsClosed() && fabs(min_point[0]-min_point[1]) > cv->GetParametricRangeDelta()*0.5 ) { + if (cv->IsClosed() && std::fabs(min_point[0]-min_point[1]) > cv->GetParametricRangeDelta()*0.5 ) { const Curve::ParamRange& range = cv->GetParametricRange(); const IfcFloat wrapdiff = (cv->Eval(range.first)-val).SquareLength(); diff --git a/code/IFCGeometry.cpp b/code/IFCGeometry.cpp index 210370d90..cb918a47e 100644 --- a/code/IFCGeometry.cpp +++ b/code/IFCGeometry.cpp @@ -250,17 +250,17 @@ void ProcessRevolvedAreaSolid(const IfcRevolvedAreaSolid& solid, TempMesh& resul bool has_area = solid.SweptArea->ProfileType == "AREA" && size>2; const IfcFloat max_angle = solid.Angle*conv.angle_scale; - if(fabs(max_angle) < 1e-3) { + if(std::fabs(max_angle) < 1e-3) { if(has_area) { result = meshout; } return; } - const unsigned int cnt_segments = std::max(2u,static_cast(16 * fabs(max_angle)/AI_MATH_HALF_PI_F)); + const unsigned int cnt_segments = std::max(2u,static_cast(16 * std::fabs(max_angle)/AI_MATH_HALF_PI_F)); const IfcFloat delta = max_angle/cnt_segments; - has_area = has_area && fabs(max_angle) < AI_MATH_TWO_PI_F*0.99; + has_area = has_area && std::fabs(max_angle) < AI_MATH_TWO_PI_F*0.99; result.verts.reserve(size*((cnt_segments+1)*4+(has_area?2:0))); result.vertcnt.reserve(size*cnt_segments+2); @@ -480,7 +480,7 @@ IfcMatrix3 DerivePlaneCoordinateSpace(const TempMesh& curmesh, bool& ok, IfcVect for (i = 0; !done && i < s-2; done || ++i) { for (j = i+1; j < s-1; ++j) { nor = -((out[i]-any_point)^(out[j]-any_point)); - if(fabs(nor.Length()) > 1e-8f) { + if(std::fabs(nor.Length()) > 1e-8f) { done = true; break; } diff --git a/code/IFCOpenings.cpp b/code/IFCOpenings.cpp index 0af90eb5b..6b2f06d59 100644 --- a/code/IFCOpenings.cpp +++ b/code/IFCOpenings.cpp @@ -303,20 +303,20 @@ void InsertWindowContours(const ContourVector& contours, const IfcVector2& v = contour[n]; bool hit = false; - if (fabs(v.x-bb.first.x)= ibb.first.y) || - (fabs(bb.first.x - ibb.second.x) < epsilon && ibb.first.y <= bb.second.y && ibb.second.y >= bb.first.y) || - (fabs(bb.second.y - ibb.first.y) < epsilon && bb.first.x <= ibb.second.x && bb.second.x >= ibb.first.x) || - (fabs(bb.first.y - ibb.second.y) < epsilon && ibb.first.x <= bb.second.x && ibb.second.x >= bb.first.x); + return (std::fabs(bb.second.x - ibb.first.x) < epsilon && bb.first.y <= ibb.second.y && bb.second.y >= ibb.first.y) || + (std::fabs(bb.first.x - ibb.second.x) < epsilon && ibb.first.y <= bb.second.y && ibb.second.y >= bb.first.y) || + (std::fabs(bb.second.y - ibb.first.y) < epsilon && bb.first.x <= ibb.second.x && bb.second.x >= ibb.first.x) || + (std::fabs(bb.first.y - ibb.second.y) < epsilon && ibb.first.x <= bb.second.x && ibb.second.x >= bb.first.x); } // ------------------------------------------------------------------------------------------------ @@ -615,11 +615,11 @@ bool IntersectingLineSegments(const IfcVector2& n0, const IfcVector2& n1, static const IfcFloat inf = std::numeric_limits::infinity(); - if (!(n0_to_m0.SquareLength() < e*e || fabs(n0_to_m0 * n0_to_n1) / (n0_to_m0.Length() * n0_to_n1.Length()) > 1-1e-5 )) { + if (!(n0_to_m0.SquareLength() < e*e || std::fabs(n0_to_m0 * n0_to_n1) / (n0_to_m0.Length() * n0_to_n1.Length()) > 1-1e-5 )) { return false; } - if (!(n1_to_m1.SquareLength() < e*e || fabs(n1_to_m1 * n0_to_n1) / (n1_to_m1.Length() * n0_to_n1.Length()) > 1-1e-5 )) { + if (!(n1_to_m1.SquareLength() < e*e || std::fabs(n1_to_m1 * n0_to_n1) / (n1_to_m1.Length() * n0_to_n1.Length()) > 1-1e-5 )) { return false; } @@ -631,14 +631,14 @@ bool IntersectingLineSegments(const IfcVector2& n0, const IfcVector2& n1, // the higher absolute difference is big enough as to avoid // divisions by zero, the case 0/0 ~ infinity is detected and // handled separately. - if(fabs(n0_to_n1.x) > fabs(n0_to_n1.y)) { + if(std::fabs(n0_to_n1.x) > std::fabs(n0_to_n1.y)) { s0 = n0_to_m0.x / n0_to_n1.x; s1 = n0_to_m1.x / n0_to_n1.x; - if (fabs(s0) == inf && fabs(n0_to_m0.x) < smalle) { + if (std::fabs(s0) == inf && std::fabs(n0_to_m0.x) < smalle) { s0 = 0.; } - if (fabs(s1) == inf && fabs(n0_to_m1.x) < smalle) { + if (std::fabs(s1) == inf && std::fabs(n0_to_m1.x) < smalle) { s1 = 0.; } } @@ -646,10 +646,10 @@ bool IntersectingLineSegments(const IfcVector2& n0, const IfcVector2& n1, s0 = n0_to_m0.y / n0_to_n1.y; s1 = n0_to_m1.y / n0_to_n1.y; - if (fabs(s0) == inf && fabs(n0_to_m0.y) < smalle) { + if (std::fabs(s0) == inf && std::fabs(n0_to_m0.y) < smalle) { s0 = 0.; } - if (fabs(s1) == inf && fabs(n0_to_m1.y) < smalle) { + if (std::fabs(s1) == inf && std::fabs(n0_to_m1.y) < smalle) { s1 = 0.; } } @@ -664,7 +664,7 @@ bool IntersectingLineSegments(const IfcVector2& n0, const IfcVector2& n1, s0 = std::min(1.0,s0); s1 = std::min(1.0,s1); - if (fabs(s1-s0) < e) { + if (std::fabs(s1-s0) < e) { return false; } @@ -755,7 +755,7 @@ void FindAdjacentContours(ContourVector::iterator current, const ContourVector& AI_FORCE_INLINE bool LikelyBorder(const IfcVector2& vdelta) { const IfcFloat dot_point_epsilon = static_cast(1e-5); - return fabs(vdelta.x * vdelta.y) < dot_point_epsilon; + return std::fabs(vdelta.x * vdelta.y) < dot_point_epsilon; } // ------------------------------------------------------------------------------------------------ @@ -812,9 +812,9 @@ void FindBorderContours(ContourVector::iterator current) // ------------------------------------------------------------------------------------------------ AI_FORCE_INLINE bool LikelyDiagonal(IfcVector2 vdelta) { - vdelta.x = fabs(vdelta.x); - vdelta.y = fabs(vdelta.y); - return (fabs(vdelta.x-vdelta.y) < 0.8 * std::max(vdelta.x, vdelta.y)); + vdelta.x = std::fabs(vdelta.x); + vdelta.y = std::fabs(vdelta.y); + return (std::fabs(vdelta.x-vdelta.y) < 0.8 * std::max(vdelta.x, vdelta.y)); } // ------------------------------------------------------------------------------------------------ @@ -926,7 +926,7 @@ size_t CloseWindows(ContourVector& contours, /* debug code to check for unwanted diagonal lines in window contours if (cit != cbegin) { const IfcVector2& vdelta = proj_point - last_proj; - if (fabs(vdelta.x-vdelta.y) < 0.5 * std::max(vdelta.x, vdelta.y)) { + if (std::fabs(vdelta.x-vdelta.y) < 0.5 * std::max(vdelta.x, vdelta.y)) { //continue; } } */ @@ -1065,7 +1065,7 @@ IfcMatrix4 ProjectOntoPlane(std::vector& out_contour, const TempMesh } #ifdef ASSIMP_BUILD_DEBUG const IfcFloat det = m.Determinant(); - ai_assert(fabs(det-1) < 1e-5); + ai_assert(std::fabs(det-1) < 1e-5); #endif IfcFloat zcoord = 0; @@ -1085,7 +1085,7 @@ IfcMatrix4 ProjectOntoPlane(std::vector& out_contour, const TempMesh // XXX this should be guarded, but we somehow need to pick a suitable // epsilon // if(coord != -1.0f) { - // assert(fabs(coord - vv.z) < 1e-3f); + // assert(std::fabs(coord - vv.z) < 1e-3f); // } zcoord += vv.z; vmin = std::min(vv, vmin); @@ -1125,7 +1125,7 @@ IfcMatrix4 ProjectOntoPlane(std::vector& out_contour, const TempMesh const IfcVector3& vv = m * x; out_contour2.push_back(IfcVector2(vv.x,vv.y)); - ai_assert(fabs(vv.z) < vmax.z + 1e-8); + ai_assert(std::fabs(vv.z) < vmax.z + 1e-8); } for(size_t i = 0; i < out_contour.size(); ++i) { @@ -1188,9 +1188,9 @@ bool GenerateOpenings(std::vector& openings, bool is_2d_source = false; if (opening.profileMesh2D && norm_extrusion_dir.SquareLength() > 0) { - if(fabs(norm_extrusion_dir * wall_extrusion_axis_norm) < 0.1) { + if(std::fabs(norm_extrusion_dir * wall_extrusion_axis_norm) < 0.1) { // horizontal extrusion - if (fabs(norm_extrusion_dir * nor) > 0.9) { + if (std::fabs(norm_extrusion_dir * nor) > 0.9) { profile_data = opening.profileMesh2D.get(); is_2d_source = true; } @@ -1200,7 +1200,7 @@ bool GenerateOpenings(std::vector& openings, } else { // vertical extrusion - if (fabs(norm_extrusion_dir * nor) > 0.9) { + if (std::fabs(norm_extrusion_dir * nor) > 0.9) { continue; } continue; @@ -1289,7 +1289,7 @@ bool GenerateOpenings(std::vector& openings, ai_assert(!is_2d_source); const IfcVector2 area = vpmax-vpmin; const IfcVector2 area2 = vpmax2-vpmin2; - if (temp_contour.size() <= 2 || fabs(area2.x * area2.y) > fabs(area.x * area.y)) { + if (temp_contour.size() <= 2 || std::fabs(area2.x * area2.y) > std::fabs(area.x * area.y)) { temp_contour.swap(temp_contour2); vpmax = vpmax2; @@ -1301,7 +1301,7 @@ bool GenerateOpenings(std::vector& openings, } // TODO: This epsilon may be too large - const IfcFloat epsilon = fabs(dmax-dmin) * 0.0001; + const IfcFloat epsilon = std::fabs(dmax-dmin) * 0.0001; if (!is_2d_source && check_intersection && (0 < dmin-epsilon || 0 > dmax+epsilon)) { continue; } @@ -1310,7 +1310,7 @@ bool GenerateOpenings(std::vector& openings, // Skip over very small openings - these are likely projection errors // (i.e. they don't belong to this side of the wall) - if(fabs(vpmax.x - vpmin.x) * fabs(vpmax.y - vpmin.y) < static_cast(1e-10)) { + if(std::fabs(vpmax.x - vpmin.x) * std::fabs(vpmax.y - vpmin.y) < static_cast(1e-10)) { continue; } std::vector joined_openings(1, &opening); @@ -1480,7 +1480,7 @@ bool TryAddOpenings_Poly2Tri(const std::vector& openings,const std: // XXX this should be guarded, but we somehow need to pick a suitable // epsilon // if(coord != -1.0f) { - // assert(fabs(coord - vv.z) < 1e-3f); + // assert(std::fabs(coord - vv.z) < 1e-3f); // } coord = vv.z; @@ -1515,7 +1515,7 @@ bool TryAddOpenings_Poly2Tri(const std::vector& openings,const std: BOOST_FOREACH(const TempOpening& t,openings) { const IfcVector3& outernor = nors[c++]; const IfcFloat dot = nor * outernor; - if (fabs(dot)<1.f-1e-6f) { + if (std::fabs(dot)<1.f-1e-6f) { continue; } @@ -1529,7 +1529,7 @@ bool TryAddOpenings_Poly2Tri(const std::vector& openings,const std: BOOST_FOREACH(const IfcVector3& xx, t.profileMesh->verts) { IfcVector3 vv = m * xx, vv_extr = m * (xx + t.extrusionDir); - const bool is_extruded_side = fabs(vv.z - coord) > fabs(vv_extr.z - coord); + const bool is_extruded_side = std::fabs(vv.z - coord) > std::fabs(vv_extr.z - coord); if (first) { first = false; if (dot > 0.f) { diff --git a/code/IFCProfile.cpp b/code/IFCProfile.cpp index 84f5c3194..495852be4 100644 --- a/code/IFCProfile.cpp +++ b/code/IFCProfile.cpp @@ -124,7 +124,7 @@ void ProcessParametrizedProfile(const IfcParameterizedProfileDef& def, TempMesh& IfcFloat angle = 0.f; for(size_t i = 0; i < segments; ++i, angle += delta) { - meshout.verts.push_back( IfcVector3( cos(angle)*radius, sin(angle)*radius, 0.f )); + meshout.verts.push_back( IfcVector3( std::cos(angle)*radius, std::sin(angle)*radius, 0.f )); } meshout.vertcnt.push_back(segments); diff --git a/code/IFCUtil.cpp b/code/IFCUtil.cpp index 86ff27ddd..97358257c 100644 --- a/code/IFCUtil.cpp +++ b/code/IFCUtil.cpp @@ -278,7 +278,7 @@ void TempMesh::RemoveAdjacentDuplicates() // continue; // } - // const IfcFloat d = (d0/sqrt(l0))*(d1/sqrt(l1)); + // const IfcFloat d = (d0/std::sqrt(l0))*(d1/std::sqrt(l1)); // if ( d >= 1.f-dotepsilon ) { // v1 = v0; diff --git a/code/IFCUtil.h b/code/IFCUtil.h index f233d4256..20826f121 100644 --- a/code/IFCUtil.h +++ b/code/IFCUtil.h @@ -220,7 +220,7 @@ struct FuzzyVectorCompare { FuzzyVectorCompare(IfcFloat epsilon) : epsilon(epsilon) {} bool operator()(const IfcVector3& a, const IfcVector3& b) { - return fabs((a-b).SquareLength()) < epsilon; + return std::fabs((a-b).SquareLength()) < epsilon; } const IfcFloat epsilon; diff --git a/code/IRRLoader.cpp b/code/IRRLoader.cpp index eab7d3eee..36ee9cfcc 100644 --- a/code/IRRLoader.cpp +++ b/code/IRRLoader.cpp @@ -470,7 +470,7 @@ void IRRImporter::ComputeAnimations(Node* root, aiNode* real, std::vectormPositionKeys[i]; const float dt = (i * in.speed * 0.001f ); - const float u = dt - floor(dt); - const int idx = (int)floor(dt) % size; + const float u = dt - std::floor(dt); + const int idx = (int)std::floor(dt) % size; // get the 4 current points to evaluate the spline const aiVector3D& p0 = in.splineKeys[ ClampSpline( idx - 1, size ) ].mValue; diff --git a/code/LWOBLoader.cpp b/code/LWOBLoader.cpp index f8d4c36a8..cdbd9695f 100644 --- a/code/LWOBLoader.cpp +++ b/code/LWOBLoader.cpp @@ -321,7 +321,7 @@ void LWOImporter::LoadLWOBSurface(unsigned int size) case AI_LWO_SMAN: { AI_LWO_VALIDATE_CHUNK_LENGTH(head.length,SMAN,4); - surf.mMaximumSmoothAngle = fabs( GetF4() ); + surf.mMaximumSmoothAngle = std::fabs( GetF4() ); break; } // glossiness diff --git a/code/LWOLoader.cpp b/code/LWOLoader.cpp index 347cd9130..14a9f261f 100644 --- a/code/LWOLoader.cpp +++ b/code/LWOLoader.cpp @@ -503,7 +503,7 @@ void LWOImporter::ComputeNormals(aiMesh* mesh, const std::vector& // Generate vertex normals. We have O(logn) for the binary lookup, which we need // for n elements, thus the EXPECTED complexity is O(nlogn) if (surface.mMaximumSmoothAngle < 3.f && !configSpeedFlag) { - const float fLimit = cos(surface.mMaximumSmoothAngle); + const float fLimit = std::cos(surface.mMaximumSmoothAngle); for( begin = mesh->mFaces, it = smoothingGroups.begin(); begin != end; ++begin, ++it) { const aiFace& face = *begin; diff --git a/code/LWOMaterial.cpp b/code/LWOMaterial.cpp index cdeb6cabd..0e8c5661c 100644 --- a/code/LWOMaterial.cpp +++ b/code/LWOMaterial.cpp @@ -285,7 +285,7 @@ void LWOImporter::ConvertMaterial(const LWO::Surface& surf,aiMaterial* pcMat) { float fGloss; if (mIsLWO2) { - fGloss = pow( surf.mGlossiness*10.0f+2.0f, 2.0f); + fGloss = std::pow( surf.mGlossiness*10.0f+2.0f, 2.0f); } else { diff --git a/code/MD3FileData.h b/code/MD3FileData.h index 8261315ca..b89110030 100644 --- a/code/MD3FileData.h +++ b/code/MD3FileData.h @@ -263,9 +263,9 @@ inline void LatLngNormalToVec3(uint16_t p_iNormal, float* p_afOut) lat *= 3.141926f/128.0f; lng *= 3.141926f/128.0f; - p_afOut[0] = cosf(lat) * sinf(lng); - p_afOut[1] = sinf(lat) * sinf(lng); - p_afOut[2] = cosf(lng); + p_afOut[0] = std::cos(lat) * std::sin(lng); + p_afOut[1] = std::sin(lat) * std::sin(lng); + p_afOut[2] = std::cos(lng); return; } diff --git a/code/MD5Parser.h b/code/MD5Parser.h index b55ce1889..844a783bb 100644 --- a/code/MD5Parser.h +++ b/code/MD5Parser.h @@ -259,7 +259,7 @@ inline void ConvertQuaternion (const aiVector3D& in, aiQuaternion& out) { if (t < 0.0f) out.w = 0.0f; - else out.w = sqrt (t); + else out.w = std::sqrt (t); } // --------------------------------------------------------------------------- diff --git a/code/PolyTools.h b/code/PolyTools.h index 3a2089a56..8fbf9c4d9 100644 --- a/code/PolyTools.h +++ b/code/PolyTools.h @@ -118,9 +118,9 @@ inline bool IsCCW(T* in, size_t npoints) { ((-in[i+2].y + in[i+1].y) * (-in[i+2].y + in[i+1].y)); - b = sqrt(bb); - c = sqrt(cc); - theta = acos((bb + cc - aa) / (2 * b * c)); + b = std::sqrt(bb); + c = std::sqrt(cc); + theta = std::acos((bb + cc - aa) / (2 * b * c)); if (OnLeftSideOfLine2D(in[i],in[i+2],in[i+1])) { // if (convex(in[i].x, in[i].y, @@ -146,9 +146,9 @@ inline bool IsCCW(T* in, size_t npoints) { cc = ((in[1].x - in[0].x) * (in[1].x - in[0].x)) + ((-in[1].y + in[0].y) * (-in[1].y + in[0].y)); - b = sqrt(bb); - c = sqrt(cc); - theta = acos((bb + cc - aa) / (2 * b * c)); + b = std::sqrt(bb); + c = std::sqrt(cc); + theta = std::acos((bb + cc - aa) / (2 * b * c)); //if (convex(in[npoints-2].x, in[npoints-2].y, // in[0].x, in[0].y, diff --git a/code/SkeletonMeshBuilder.cpp b/code/SkeletonMeshBuilder.cpp index 7e477cac0..bca9792fd 100644 --- a/code/SkeletonMeshBuilder.cpp +++ b/code/SkeletonMeshBuilder.cpp @@ -101,7 +101,7 @@ void SkeletonMeshBuilder::CreateGeometry( const aiNode* pNode) aiVector3D up = aiVector3D( childpos).Normalize(); aiVector3D orth( 1.0f, 0.0f, 0.0f); - if( fabs( orth * up) > 0.99f) + if( std::fabs( orth * up) > 0.99f) orth.Set( 0.0f, 1.0f, 0.0f); aiVector3D front = (up ^ orth).Normalize(); diff --git a/code/StandardShapes.cpp b/code/StandardShapes.cpp index 2563c858e..7b42abd78 100644 --- a/code/StandardShapes.cpp +++ b/code/StandardShapes.cpp @@ -192,7 +192,7 @@ unsigned int StandardShapes::MakeIcosahedron(std::vector& positions) positions.reserve(positions.size()+60); const float t = (1.f + 2.236067977f)/2.f; - const float s = sqrt(1.f + t*t); + const float s = std::sqrt(1.f + t*t); const aiVector3D v0 = aiVector3D(t,1.f, 0.f)/s; const aiVector3D v1 = aiVector3D(-t,1.f, 0.f)/s; @@ -242,8 +242,8 @@ unsigned int StandardShapes::MakeDodecahedron(std::vector& positions positions.reserve(positions.size()+108); const float a = 1.f / 1.7320508f; - const float b = sqrt((3.f-2.23606797f)/6.f); - const float c = sqrt((3.f+2.23606797f)/6.f); + const float b = std::sqrt((3.f-2.23606797f)/6.f); + const float c = std::sqrt((3.f+2.23606797f)/6.f); const aiVector3D v0 = aiVector3D(a,a,a); const aiVector3D v1 = aiVector3D(a,a,-a); @@ -390,8 +390,8 @@ void StandardShapes::MakeCone(float height,float radius1, size_t old = positions.size(); // No negative radii - radius1 = ::fabs(radius1); - radius2 = ::fabs(radius2); + radius1 = std::fabs(radius1); + radius2 = std::fabs(radius2); float halfHeight = height / 2; @@ -415,8 +415,8 @@ void StandardShapes::MakeCone(float height,float radius1, const float angle_delta = (float)AI_MATH_TWO_PI / tess; const float angle_max = (float)AI_MATH_TWO_PI; - float s = 1.f; // cos(angle == 0); - float t = 0.f; // sin(angle == 0); + float s = 1.f; // std::cos(angle == 0); + float t = 0.f; // std::sin(angle == 0); for (float angle = 0.f; angle < angle_max; ) { @@ -424,8 +424,8 @@ void StandardShapes::MakeCone(float height,float radius1, const aiVector3D v2 = aiVector3D (s * radius2, halfHeight, t * radius2 ); const float next = angle + angle_delta; - float s2 = ::cos(next); - float t2 = ::sin(next); + float s2 = std::cos(next); + float t2 = std::sin(next); const aiVector3D v3 = aiVector3D (s2 * radius2, halfHeight, t2 * radius2 ); const aiVector3D v4 = aiVector3D (s2 * radius1, -halfHeight, t2 * radius1 ); @@ -476,7 +476,7 @@ void StandardShapes::MakeCircle(float radius, unsigned int tess, if (tess < 3 || !radius) return; - radius = ::fabs(radius); + radius = std::fabs(radius); // We will need 3 vertices per segment positions.reserve(positions.size()+tess*3); @@ -484,15 +484,15 @@ void StandardShapes::MakeCircle(float radius, unsigned int tess, const float angle_delta = (float)AI_MATH_TWO_PI / tess; const float angle_max = (float)AI_MATH_TWO_PI; - float s = 1.f; // cos(angle == 0); - float t = 0.f; // sin(angle == 0); + float s = 1.f; // std::cos(angle == 0); + float t = 0.f; // std::sin(angle == 0); for (float angle = 0.f; angle < angle_max; ) { positions.push_back(aiVector3D(s * radius,0.f,t * radius)); angle += angle_delta; - s = ::cos(angle); - t = ::sin(angle); + s = std::cos(angle); + t = std::sin(angle); positions.push_back(aiVector3D(s * radius,0.f,t * radius)); positions.push_back(aiVector3D(0.f,0.f,0.f)); diff --git a/code/TextureTransform.h b/code/TextureTransform.h index 977860524..2da237cf5 100644 --- a/code/TextureTransform.h +++ b/code/TextureTransform.h @@ -116,19 +116,19 @@ struct STransformVecInfo : public aiUVTransform // We use a small epsilon here const static float epsilon = 0.05f; - if (fabs( mTranslation.x - other.mTranslation.x ) > epsilon || - fabs( mTranslation.y - other.mTranslation.y ) > epsilon) + if (std::fabs( mTranslation.x - other.mTranslation.x ) > epsilon || + std::fabs( mTranslation.y - other.mTranslation.y ) > epsilon) { return false; } - if (fabs( mScaling.x - other.mScaling.x ) > epsilon || - fabs( mScaling.y - other.mScaling.y ) > epsilon) + if (std::fabs( mScaling.x - other.mScaling.x ) > epsilon || + std::fabs( mScaling.y - other.mScaling.y ) > epsilon) { return false; } - if (fabs( mRotation - other.mRotation) > epsilon) + if (std::fabs( mRotation - other.mRotation) > epsilon) { return false; } @@ -168,8 +168,8 @@ struct STransformVecInfo : public aiUVTransform if (mRotation) { aiMatrix3x3 mRot; - mRot.a1 = mRot.b2 = cos(mRotation); - mRot.a2 = mRot.b1 = sin(mRotation); + mRot.a1 = mRot.b2 = std::cos(mRotation); + mRot.a2 = mRot.b1 = std::sin(mRotation); mRot.a2 = -mRot.a2; mOut *= mRot; } diff --git a/code/TriangulateProcess.cpp b/code/TriangulateProcess.cpp index 15c74277c..f34bcb3c5 100644 --- a/code/TriangulateProcess.cpp +++ b/code/TriangulateProcess.cpp @@ -241,7 +241,7 @@ bool TriangulateProcess::TriangulateMesh( aiMesh* pMesh) diag.Normalize(); right.Normalize(); - const float angle = acos(left*diag) + acos(right*diag); + const float angle = std::acos(left*diag) + std::acos(right*diag); if (angle > AI_MATH_PI_F) { // this is the concave point start_vertex = i; @@ -486,7 +486,7 @@ bool TriangulateProcess::TriangulateMesh( aiMesh* pMesh) unsigned int* i = f->mIndices; // drop dumb 0-area triangles - if (fabs(GetArea2D(temp_verts[i[0]],temp_verts[i[1]],temp_verts[i[2]])) < 1e-5f) { + if (std::fabs(GetArea2D(temp_verts[i[0]],temp_verts[i[1]],temp_verts[i[2]])) < 1e-5f) { DefaultLogger::get()->debug("Dropping triangle with area 0"); --curOut; diff --git a/code/fast_atof.h b/code/fast_atof.h index 13312fcd8..bc6c96d1a 100644 --- a/code/fast_atof.h +++ b/code/fast_atof.h @@ -312,7 +312,7 @@ inline const char* fast_atoreal_move( const char* c, Real& out, bool check_comma if (einv) { exp = -exp; } - f *= pow(static_cast(10.0), exp); + f *= std::pow(static_cast(10.0), exp); } if (inv) { diff --git a/include/assimp/color4.inl b/include/assimp/color4.inl index ac70d7b09..2c83872d4 100644 --- a/include/assimp/color4.inl +++ b/include/assimp/color4.inl @@ -175,7 +175,7 @@ template inline bool aiColor4t :: IsBlack() const { // The alpha component doesn't care here. black is black. static const TReal epsilon = 10e-3f; - return fabs( r ) < epsilon && fabs( g ) < epsilon && fabs( b ) < epsilon; + return std::fabs( r ) < epsilon && std::fabs( g ) < epsilon && std::fabs( b ) < epsilon; } #endif // __cplusplus diff --git a/include/assimp/matrix3x3.inl b/include/assimp/matrix3x3.inl index b6caef5d1..e8a34f9af 100644 --- a/include/assimp/matrix3x3.inl +++ b/include/assimp/matrix3x3.inl @@ -200,8 +200,8 @@ inline aiMatrix3x3t& aiMatrix3x3t::Inverse() template inline aiMatrix3x3t& aiMatrix3x3t::RotationZ(TReal a, aiMatrix3x3t& out) { - out.a1 = out.b2 = ::cos(a); - out.b1 = ::sin(a); + out.a1 = out.b2 = std::cos(a); + out.b1 = std::sin(a); out.a2 = - out.b1; out.a3 = out.b3 = out.c1 = out.c2 = 0.f; @@ -215,7 +215,7 @@ inline aiMatrix3x3t& aiMatrix3x3t::RotationZ(TReal a, aiMatrix3x3t template inline aiMatrix3x3t& aiMatrix3x3t::Rotation( TReal a, const aiVector3t& axis, aiMatrix3x3t& out) { - TReal c = cos( a), s = sin( a), t = 1 - c; + TReal c = std::cos( a), s = std::sin( a), t = 1 - c; TReal x = axis.x, y = axis.y, z = axis.z; // Many thanks to MathWorld and Wikipedia diff --git a/include/assimp/matrix4x4.inl b/include/assimp/matrix4x4.inl index 8cde4773c..4cae3afa7 100644 --- a/include/assimp/matrix4x4.inl +++ b/include/assimp/matrix4x4.inl @@ -53,12 +53,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include - -#ifdef __cplusplus -# include -#else -# include -#endif +#include // ---------------------------------------------------------------------------------------- template @@ -379,12 +374,12 @@ inline aiMatrix4x4t& aiMatrix4x4t::FromEulerAnglesXYZ(TReal x, TRe { aiMatrix4x4t& _this = *this; - TReal cr = cos( x ); - TReal sr = sin( x ); - TReal cp = cos( y ); - TReal sp = sin( y ); - TReal cy = cos( z ); - TReal sy = sin( z ); + TReal cr = std::cos( x ); + TReal sr = std::sin( x ); + TReal cp = std::cos( y ); + TReal sp = std::sin( y ); + TReal cy = std::cos( z ); + TReal sy = std::sin( z ); _this.a1 = cp*cy ; _this.a2 = cp*sy; @@ -439,8 +434,8 @@ inline aiMatrix4x4t& aiMatrix4x4t::RotationX(TReal a, aiMatrix4x4t | 0 sin(A) cos(A) 0 | | 0 0 0 1 | */ out = aiMatrix4x4t(); - out.b2 = out.c3 = cos(a); - out.b3 = -(out.c2 = sin(a)); + out.b2 = out.c3 = std::cos(a); + out.b3 = -(out.c2 = std::sin(a)); return out; } @@ -455,8 +450,8 @@ inline aiMatrix4x4t& aiMatrix4x4t::RotationY(TReal a, aiMatrix4x4t | 0 0 0 1 | */ out = aiMatrix4x4t(); - out.a1 = out.c3 = cos(a); - out.c1 = -(out.a3 = sin(a)); + out.a1 = out.c3 = std::cos(a); + out.c1 = -(out.a3 = std::sin(a)); return out; } @@ -470,8 +465,8 @@ inline aiMatrix4x4t& aiMatrix4x4t::RotationZ(TReal a, aiMatrix4x4t | 0 0 1 0 | | 0 0 0 1 | */ out = aiMatrix4x4t(); - out.a1 = out.b2 = cos(a); - out.a2 = -(out.b1 = sin(a)); + out.a1 = out.b2 = std::cos(a); + out.a2 = -(out.b1 = std::sin(a)); return out; } @@ -480,7 +475,7 @@ inline aiMatrix4x4t& aiMatrix4x4t::RotationZ(TReal a, aiMatrix4x4t template inline aiMatrix4x4t& aiMatrix4x4t::Rotation( TReal a, const aiVector3t& axis, aiMatrix4x4t& out) { - TReal c = cos( a), s = sin( a), t = 1 - c; + TReal c = std::cos( a), s = std::sin( a), t = 1 - c; TReal x = axis.x, y = axis.y, z = axis.z; // Many thanks to MathWorld and Wikipedia diff --git a/include/assimp/quaternion.inl b/include/assimp/quaternion.inl index fb07a4b3e..cf1223910 100644 --- a/include/assimp/quaternion.inl +++ b/include/assimp/quaternion.inl @@ -84,7 +84,7 @@ inline aiQuaterniont::aiQuaterniont( const aiMatrix3x3t &pRotMatri // large enough if( t > static_cast(0)) { - TReal s = sqrt(1 + t) * static_cast(2.0); + TReal s = std::sqrt(1 + t) * static_cast(2.0); x = (pRotMatrix.c2 - pRotMatrix.b3) / s; y = (pRotMatrix.a3 - pRotMatrix.c1) / s; z = (pRotMatrix.b1 - pRotMatrix.a2) / s; @@ -93,7 +93,7 @@ inline aiQuaterniont::aiQuaterniont( const aiMatrix3x3t &pRotMatri else if( pRotMatrix.a1 > pRotMatrix.b2 && pRotMatrix.a1 > pRotMatrix.c3 ) { // Column 0: - TReal s = sqrt( static_cast(1.0) + pRotMatrix.a1 - pRotMatrix.b2 - pRotMatrix.c3) * static_cast(2.0); + TReal s = std::sqrt( static_cast(1.0) + pRotMatrix.a1 - pRotMatrix.b2 - pRotMatrix.c3) * static_cast(2.0); x = static_cast(0.25) * s; y = (pRotMatrix.b1 + pRotMatrix.a2) / s; z = (pRotMatrix.a3 + pRotMatrix.c1) / s; @@ -102,7 +102,7 @@ inline aiQuaterniont::aiQuaterniont( const aiMatrix3x3t &pRotMatri else if( pRotMatrix.b2 > pRotMatrix.c3) { // Column 1: - TReal s = sqrt( static_cast(1.0) + pRotMatrix.b2 - pRotMatrix.a1 - pRotMatrix.c3) * static_cast(2.0); + TReal s = std::sqrt( static_cast(1.0) + pRotMatrix.b2 - pRotMatrix.a1 - pRotMatrix.c3) * static_cast(2.0); x = (pRotMatrix.b1 + pRotMatrix.a2) / s; y = static_cast(0.25) * s; z = (pRotMatrix.c2 + pRotMatrix.b3) / s; @@ -110,7 +110,7 @@ inline aiQuaterniont::aiQuaterniont( const aiMatrix3x3t &pRotMatri } else { // Column 2: - TReal s = sqrt( static_cast(1.0) + pRotMatrix.c3 - pRotMatrix.a1 - pRotMatrix.b2) * static_cast(2.0); + TReal s = std::sqrt( static_cast(1.0) + pRotMatrix.c3 - pRotMatrix.a1 - pRotMatrix.b2) * static_cast(2.0); x = (pRotMatrix.a3 + pRotMatrix.c1) / s; y = (pRotMatrix.c2 + pRotMatrix.b3) / s; z = static_cast(0.25) * s; @@ -123,12 +123,12 @@ inline aiQuaterniont::aiQuaterniont( const aiMatrix3x3t &pRotMatri template inline aiQuaterniont::aiQuaterniont( TReal fPitch, TReal fYaw, TReal fRoll ) { - const TReal fSinPitch(sin(fPitch*static_cast(0.5))); - const TReal fCosPitch(cos(fPitch*static_cast(0.5))); - const TReal fSinYaw(sin(fYaw*static_cast(0.5))); - const TReal fCosYaw(cos(fYaw*static_cast(0.5))); - const TReal fSinRoll(sin(fRoll*static_cast(0.5))); - const TReal fCosRoll(cos(fRoll*static_cast(0.5))); + const TReal fSinPitch(std::sin(fPitch*static_cast(0.5))); + const TReal fCosPitch(std::cos(fPitch*static_cast(0.5))); + const TReal fSinYaw(std::sin(fYaw*static_cast(0.5))); + const TReal fCosYaw(std::cos(fYaw*static_cast(0.5))); + const TReal fSinRoll(std::sin(fRoll*static_cast(0.5))); + const TReal fCosRoll(std::cos(fRoll*static_cast(0.5))); const TReal fCosPitchCosYaw(fCosPitch*fCosYaw); const TReal fSinPitchSinYaw(fSinPitch*fSinYaw); x = fSinRoll * fCosPitchCosYaw - fCosRoll * fSinPitchSinYaw; @@ -163,8 +163,8 @@ inline aiQuaterniont::aiQuaterniont( aiVector3t axis, TReal angle) { axis.Normalize(); - const TReal sin_a = sin( angle / 2 ); - const TReal cos_a = cos( angle / 2 ); + const TReal sin_a = std::sin( angle / 2 ); + const TReal cos_a = std::cos( angle / 2 ); x = axis.x * sin_a; y = axis.y * sin_a; z = axis.z * sin_a; @@ -184,7 +184,7 @@ inline aiQuaterniont::aiQuaterniont( aiVector3t normalized) if (t < static_cast(0.0)) { w = static_cast(0.0); } - else w = sqrt (t); + else w = std::sqrt (t); } // --------------------------------------------------------------------------- @@ -214,10 +214,10 @@ inline void aiQuaterniont::Interpolate( aiQuaterniont& pOut, const aiQuat { // Standard case (slerp) TReal omega, sinom; - omega = acos( cosom); // extract theta from dot product's cos theta - sinom = sin( omega); - sclp = sin( (static_cast(1.0) - pFactor) * omega) / sinom; - sclq = sin( pFactor * omega) / sinom; + omega = std::acos( cosom); // extract theta from dot product's cos theta + sinom = std::sin( omega); + sclp = std::sin( (static_cast(1.0) - pFactor) * omega) / sinom; + sclq = std::sin( pFactor * omega) / sinom; } else { // Very close, do linear interp (because it's faster) @@ -236,7 +236,7 @@ template inline aiQuaterniont& aiQuaterniont::Normalize() { // compute the magnitude and divide through it - const TReal mag = sqrt(x*x + y*y + z*z + w*w); + const TReal mag = std::sqrt(x*x + y*y + z*z + w*w); if (mag) { const TReal invMag = static_cast(1.0)/mag; diff --git a/include/assimp/types.h b/include/assimp/types.h index db1025820..83767ad46 100644 --- a/include/assimp/types.h +++ b/include/assimp/types.h @@ -217,7 +217,7 @@ struct aiColor3D /** Check whether a color is black */ bool IsBlack() const { static const float epsilon = 10e-3f; - return fabs( r ) < epsilon && fabs( g ) < epsilon && fabs( b ) < epsilon; + return std::fabs( r ) < epsilon && std::fabs( g ) < epsilon && std::fabs( b ) < epsilon; } #endif // !__cplusplus diff --git a/include/assimp/vector2.inl b/include/assimp/vector2.inl index e357a5e7a..f6cedea1d 100644 --- a/include/assimp/vector2.inl +++ b/include/assimp/vector2.inl @@ -71,7 +71,7 @@ TReal aiVector2t::SquareLength() const { // ------------------------------------------------------------------------------------------------ template TReal aiVector2t::Length() const { - return ::sqrt( SquareLength()); + return std::sqrt( SquareLength()); } // ------------------------------------------------------------------------------------------------ diff --git a/include/assimp/vector3.inl b/include/assimp/vector3.inl index f69bea9a6..7ba92f6d0 100644 --- a/include/assimp/vector3.inl +++ b/include/assimp/vector3.inl @@ -92,7 +92,7 @@ AI_FORCE_INLINE TReal aiVector3t::SquareLength() const { // ------------------------------------------------------------------------------------------------ template AI_FORCE_INLINE TReal aiVector3t::Length() const { - return ::sqrt( SquareLength()); + return std::sqrt( SquareLength()); } // ------------------------------------------------------------------------------------------------ template From a5afbcf29c8f11951814dd7ae07ae6a726ca1daf Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 23 Sep 2014 23:34:05 +0200 Subject: [PATCH 145/196] refactoring: remove duplicate code. Signed-off-by: Kim Kulling --- code/ObjFileMtlImporter.cpp | 5 ++-- code/ObjFileParser.cpp | 29 ++++++++++++---------- code/ObjTools.h | 48 +++++++++++-------------------------- code/ParsingUtils.h | 2 +- 4 files changed, 34 insertions(+), 50 deletions(-) diff --git a/code/ObjFileMtlImporter.cpp b/code/ObjFileMtlImporter.cpp index e09a16f2f..74466f2ba 100644 --- a/code/ObjFileMtlImporter.cpp +++ b/code/ObjFileMtlImporter.cpp @@ -46,6 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ObjTools.h" #include "ObjFileData.h" #include "fast_atof.h" +#include "ParsingUtils.h" namespace Assimp { @@ -228,7 +229,7 @@ void ObjFileMtlImporter::getColorRGBA( aiColor3D *pColor ) pColor->r = r; // we have to check if color is default 0 with only one token - if( !isNewLine( *m_DataIt ) ) { + if( !IsLineEnd( *m_DataIt ) ) { m_DataIt = getFloat( m_DataIt, m_DataItEnd, g ); m_DataIt = getFloat( m_DataIt, m_DataItEnd, b ); } @@ -257,7 +258,7 @@ void ObjFileMtlImporter::getFloatValue( float &value ) void ObjFileMtlImporter::createMaterial() { std::string line( "" ); - while ( !isNewLine( *m_DataIt ) ) { + while( !IsLineEnd( *m_DataIt ) ) { line += *m_DataIt; ++m_DataIt; } diff --git a/code/ObjFileParser.cpp b/code/ObjFileParser.cpp index 6e73f0bf4..34bb01e0a 100644 --- a/code/ObjFileParser.cpp +++ b/code/ObjFileParser.cpp @@ -186,12 +186,12 @@ void ObjFileParser::copyNextWord(char *pBuffer, size_t length) { size_t index = 0; m_DataIt = getNextWord(m_DataIt, m_DataItEnd); - while ( m_DataIt != m_DataItEnd && !isSeparator(*m_DataIt) ) - { + while( m_DataIt != m_DataItEnd && !IsSpaceOrNewLine( *m_DataIt ) ) { pBuffer[index] = *m_DataIt; index++; - if (index == length-1) - break; + if( index == length - 1 ) { + break; + } ++m_DataIt; } @@ -345,7 +345,7 @@ void ObjFileParser::getFace(aiPrimitiveType type) } iPos++; } - else if ( isSeparator(*pPtr) ) + else if( IsSpaceOrNewLine( *pPtr ) ) { iPos = 0; } @@ -463,8 +463,9 @@ void ObjFileParser::getMaterialDesc() return; char *pStart = &(*m_DataIt); - while ( m_DataIt != m_DataItEnd && !isSeparator(*m_DataIt) ) - ++m_DataIt; + while( m_DataIt != m_DataItEnd && !IsSpaceOrNewLine( *m_DataIt ) ) { + ++m_DataIt; + } // Get name std::string strName(pStart, &(*m_DataIt)); @@ -518,12 +519,14 @@ void ObjFileParser::getMaterialLib() { // Translate tuple m_DataIt = getNextToken(m_DataIt, m_DataItEnd); - if (m_DataIt == m_DataItEnd) - return; + if( m_DataIt == m_DataItEnd ) { + return; + } char *pStart = &(*m_DataIt); - while (m_DataIt != m_DataItEnd && !isNewLine(*m_DataIt)) - m_DataIt++; + while( m_DataIt != m_DataItEnd && !IsLineEnd( *m_DataIt ) ) { + ++m_DataIt; + } // Check for existence const std::string strMatName(pStart, &(*m_DataIt)); @@ -557,7 +560,7 @@ void ObjFileParser::getNewMaterial() char *pStart = &(*m_DataIt); std::string strMat( pStart, *m_DataIt ); - while( m_DataIt != m_DataItEnd && isSeparator( *m_DataIt ) ) { + while( m_DataIt != m_DataItEnd && IsSpaceOrNewLine( *m_DataIt ) ) { ++m_DataIt; } std::map::iterator it = m_pModel->m_MaterialMap.find( strMat ); @@ -662,7 +665,7 @@ void ObjFileParser::getObjectName() return; } char *pStart = &(*m_DataIt); - while( m_DataIt != m_DataItEnd && !isSeparator( *m_DataIt ) ) { + while( m_DataIt != m_DataItEnd && !IsSpaceOrNewLine( *m_DataIt ) ) { ++m_DataIt; } diff --git a/code/ObjTools.h b/code/ObjTools.h index 047c9a4cd..a785d41a4 100644 --- a/code/ObjTools.h +++ b/code/ObjTools.h @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define OBJ_TOOLS_H_INC #include "fast_atof.h" +#include "ParsingUtils.h" namespace Assimp { @@ -68,28 +69,6 @@ inline bool isEndOfBuffer( char_t it, char_t end ) return ( it == end ); } -/** @brief Returns true, if token is a space on any supported platform -* @param token Token to search in -* @return true, if token is a space -*/ -inline bool isSeparator( char token ) -{ - return ( token == ' ' || - token == '\n' || - token == '\f' || - token == '\r' || - token == '\t' ); -} - -/** @brief Returns true, fi token id a new line marking token. - * @param token Token to search in - * @return true, if token is a newline token. - */ -inline bool isNewLine( char token ) -{ - return ( token == '\n' || token == '\f' || token == '\r' ); -} - /** @brief Returns next word separated by a space * @param pBuffer Pointer to data buffer * @param pEnd Pointer to end of buffer @@ -100,7 +79,7 @@ inline Char_T getNextWord( Char_T pBuffer, Char_T pEnd ) { while ( !isEndOfBuffer( pBuffer, pEnd ) ) { - if ( !isSeparator( *pBuffer ) || isNewLine( *pBuffer ) ) + if( !IsSpaceOrNewLine( *pBuffer ) || IsLineEnd( *pBuffer ) ) break; pBuffer++; } @@ -117,7 +96,7 @@ inline Char_T getNextToken( Char_T pBuffer, Char_T pEnd ) { while ( !isEndOfBuffer( pBuffer, pEnd ) ) { - if ( isSeparator( *pBuffer ) ) + if( IsSpaceOrNewLine( *pBuffer ) ) break; pBuffer++; } @@ -127,14 +106,14 @@ inline Char_T getNextToken( Char_T pBuffer, Char_T pEnd ) /** @brief Skips a line * @param it Iterator set to current position * @param end Iterator set to end of scratch buffer for readout - * @param uiLine Current linenumber in format + * @param uiLine Current line number in format * @return Current-iterator with new position */ template -inline char_t skipLine( char_t it, char_t end, unsigned int &uiLine ) -{ - while ( !isEndOfBuffer( it, end ) && !isNewLine( *it ) ) - ++it; +inline char_t skipLine( char_t it, char_t end, unsigned int &uiLine ) { + while( !isEndOfBuffer( it, end ) && !IsLineEnd( *it ) ) { + ++it; + } if ( it != end ) { ++it; @@ -157,15 +136,16 @@ template inline char_t getName( char_t it, char_t end, std::string &name ) { name = ""; - if ( isEndOfBuffer( it, end ) ) - return end; + if( isEndOfBuffer( it, end ) ) { + return end; + } char *pStart = &( *it ); - while ( !isEndOfBuffer( it, end ) && !isNewLine( *it ) ) { + while( !isEndOfBuffer( it, end ) && !IsLineEnd( *it ) ) { ++it; } - while(isEndOfBuffer( it, end ) || isNewLine( *it ) || isSeparator(*it)) { + while( isEndOfBuffer( it, end ) || IsLineEnd( *it ) || IsSpaceOrNewLine( *it ) ) { --it; } ++it; @@ -196,7 +176,7 @@ inline char_t CopyNextWord( char_t it, char_t end, char *pBuffer, size_t length { size_t index = 0; it = getNextWord( it, end ); - while ( !isSeparator( *it ) && !isEndOfBuffer( it, end ) ) + while( !IsSpaceOrNewLine( *it ) && !isEndOfBuffer( it, end ) ) { pBuffer[index] = *it ; index++; diff --git a/code/ParsingUtils.h b/code/ParsingUtils.h index 1ed8ee923..25495fd51 100644 --- a/code/ParsingUtils.h +++ b/code/ParsingUtils.h @@ -98,7 +98,7 @@ AI_FORCE_INLINE bool IsSpace( char_t in) template AI_FORCE_INLINE bool IsLineEnd( char_t in) { - return (in == (char_t)'\r' || in == (char_t)'\n' || in == (char_t)'\0'); + return (in==(char_t)'\r'||in==(char_t)'\n'||in==(char_t)'\0'||in==(char_t)'\f'); } // --------------------------------------------------------------------------------- From 397989e1699fe1607d20a8e3acc53381a5c172ff Mon Sep 17 00:00:00 2001 From: Gargaj Date: Fri, 26 Sep 2014 01:29:23 +0200 Subject: [PATCH 146/196] Null-terminate string In theory it shouldn't be necessary since the length is specified but there are parts like https://github.com/assimp/assimp/blob/master/code/MaterialSystem.cpp#L74 that depend on it. --- code/AssbinLoader.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/code/AssbinLoader.cpp b/code/AssbinLoader.cpp index 65299f577..bb73e10b3 100644 --- a/code/AssbinLoader.cpp +++ b/code/AssbinLoader.cpp @@ -138,6 +138,7 @@ aiString Read(IOStream * stream) aiString s; stream->Read(&s.length,4,1); stream->Read(s.data,s.length,1); + s.data[s.length] = 0; return s; } From 9b3a88b2a5be670be1c32e82b0f47e7252bb9eed Mon Sep 17 00:00:00 2001 From: OgreTransporter Date: Sat, 27 Sep 2014 21:04:57 +0200 Subject: [PATCH 147/196] New boost versions --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e32afb166..717184691 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -111,7 +111,7 @@ IF ( ASSIMP_ENABLE_BOOST_WORKAROUND ) MESSAGE( STATUS "Building a non-boost version of Assimp." ) ELSE ( ASSIMP_ENABLE_BOOST_WORKAROUND ) SET( Boost_DETAILED_FAILURE_MSG ON ) - SET( Boost_ADDITIONAL_VERSIONS "1.47" "1.47.0" "1.48.0" "1.48" "1.49" "1.49.0" "1.50" "1.50.0" "1.51" "1.51.0" "1.52.0" "1.53.0" "1.54.0" "1.55" ) + SET( Boost_ADDITIONAL_VERSIONS "1.47" "1.47.0" "1.48.0" "1.48" "1.49" "1.49.0" "1.50" "1.50.0" "1.51" "1.51.0" "1.52.0" "1.53.0" "1.54.0" "1.55" "1.55.0" "1.56" "1.56.0" "1.57" "1.57.0" ) FIND_PACKAGE( Boost ) IF ( NOT Boost_FOUND ) MESSAGE( FATAL_ERROR From 7224476ee10f7264a03b6cea308a22b57c47c4a8 Mon Sep 17 00:00:00 2001 From: Filip Wasil Date: Tue, 7 Oct 2014 16:23:56 +0200 Subject: [PATCH 148/196] Android JNI asset extraction support (API 9+) Signed-off-by: Filip Wasil --- CMakeLists.txt | 2 + CREDITS | 3 + code/CMakeLists.txt | 10 + code/DefaultIOStream.h | 3 + include/assimp/config.h | 8 + .../port/AndroidJNI/AndroidJNIIOSystem.h | 92 ++++++++++ port/AndroidJNI/AndroidJNIIOSystem.cpp | 173 ++++++++++++++++++ port/AndroidJNI/CMakeLists.txt | 6 + port/AndroidJNI/README.txt | 27 +++ 9 files changed, 324 insertions(+) create mode 100644 include/assimp/port/AndroidJNI/AndroidJNIIOSystem.h create mode 100644 port/AndroidJNI/AndroidJNIIOSystem.cpp create mode 100644 port/AndroidJNI/CMakeLists.txt create mode 100644 port/AndroidJNI/README.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 717184691..97d4b68bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,8 @@ set(LIBASSIMP-DEV_COMPONENT "libassimp${ASSIMP_VERSION_MAJOR}.${ASSIMP_VERSION_M set(CPACK_COMPONENTS_ALL assimp-bin ${LIBASSIMP_COMPONENT} ${LIBASSIMP-DEV_COMPONENT} assimp-dev) set(ASSIMP_LIBRARY_SUFFIX "" CACHE STRING "Suffix to append to library names") +option(ASSIMP_ANDROID_JNIIOSYSTEM "Android JNI IOSystem support is active" OFF) + if((CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) AND NOT CMAKE_COMPILER_IS_MINGW) add_definitions(-fPIC) # this is a very important switch and some libraries seem now to have it.... # hide all not-exported symbols diff --git a/CREDITS b/CREDITS index 5d45a9e92..2e7485fb7 100644 --- a/CREDITS +++ b/CREDITS @@ -148,3 +148,6 @@ Bugfixes for uv-tanget calculation. - Jonne Nauha Ogre Binary format support + +- Filip Wasil, Tieto Poland Sp. z o.o. +Android JNI asset extraction support diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index c11a9b42a..f636fc535 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -725,6 +725,13 @@ ADD_LIBRARY( assimp ${assimp_src} ) SET_PROPERTY(TARGET assimp PROPERTY DEBUG_POSTFIX ${ASSIMP_DEBUG_POSTFIX}) TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES}) + +if(ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM) + set(ASSIMP_ANDROID_JNIIOSYSTEM_PATH port/AndroidJNI/) + add_subdirectory(../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH} ../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}) + target_link_libraries(assimp android_jniiosystem) +endif(ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM) + SET_TARGET_PROPERTIES( assimp PROPERTIES VERSION ${ASSIMP_VERSION} SOVERSION ${ASSIMP_SOVERSION} # use full version @@ -751,6 +758,9 @@ INSTALL( TARGETS assimp COMPONENT ${LIBASSIMP_COMPONENT}) INSTALL( FILES ${PUBLIC_HEADERS} DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}/assimp COMPONENT assimp-dev) INSTALL( FILES ${COMPILER_HEADERS} DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}/assimp/Compiler COMPONENT assimp-dev) +if (ASSIMP_ANDROID_JNIIOSYSTEM) + INSTALL( FILES assimp/${ANDROID_JNI_PATH}/AndroidJNIIOSystem.h DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}/assimp/${ANDROID_JNI_PATH} COMPONENT assimp-dev) +endif(ASSIMP_ANDROID_JNIIOSYSTEM) if(MSVC AND ASSIMP_INSTALL_PDB) install(FILES ${Assimp_BINARY_DIR}/code/Debug/assimp${ASSIMP_DEBUG_POSTFIX}.pdb diff --git a/code/DefaultIOStream.h b/code/DefaultIOStream.h index da1eed0b8..6ddf94c23 100644 --- a/code/DefaultIOStream.h +++ b/code/DefaultIOStream.h @@ -56,6 +56,9 @@ namespace Assimp { class DefaultIOStream : public IOStream { friend class DefaultIOSystem; +#if __ANDROID__ and __ANDROID_API__ > 9 and defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) + friend class AndroidJNIIOSystem; +#endif //__ANDROID__ and __ANDROID_API__ > 9 and defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) protected: DefaultIOStream (); diff --git a/include/assimp/config.h b/include/assimp/config.h index 6bd31aada..56ef8f3b5 100644 --- a/include/assimp/config.h +++ b/include/assimp/config.h @@ -841,6 +841,14 @@ enum aiComponent */ #define AI_CONFIG_IMPORT_IFC_SKIP_SPACE_REPRESENTATIONS "IMPORT_IFC_SKIP_SPACE_REPRESENTATIONS" + /** @brief Specifies whether the Android JNI asset extraction is supported. + * + * Turn on this option if you want to manage assets in native + * Android application without having to keep the internal directory and asset + * manager pointer. + */ + #define AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT "AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT" + // --------------------------------------------------------------------------- /** @brief Specifies whether the IFC loader skips over diff --git a/include/assimp/port/AndroidJNI/AndroidJNIIOSystem.h b/include/assimp/port/AndroidJNI/AndroidJNIIOSystem.h new file mode 100644 index 000000000..ad6940253 --- /dev/null +++ b/include/assimp/port/AndroidJNI/AndroidJNIIOSystem.h @@ -0,0 +1,92 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2012, assimp team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file Android implementation of IOSystem using the standard C file functions. + * Aimed to ease the acces to android assets */ + +#if __ANDROID__ and __ANDROID_API__ > 9 and defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) +#ifndef AI_ANDROIDJNIIOSYSTEM_H_INC +#define AI_ANDROIDJNIIOSYSTEM_H_INC + +#include "../code/DefaultIOSystem.h" +#include +#include +#include + +namespace Assimp { + +// --------------------------------------------------------------------------- +/** Android extension to DefaultIOSystem using the standard C file functions */ +class AndroidJNIIOSystem : public DefaultIOSystem +{ +public: + + /** Initialize android activity data */ + std::string mApkWorkspacePath; + AAssetManager* mApkAssetManager; + + /** Constructor. */ + AndroidJNIIOSystem(ANativeActivity* activity); + + /** Destructor. */ + ~AndroidJNIIOSystem(); + + // ------------------------------------------------------------------- + /** Tests for the existence of a file at the given path. */ + bool Exists( const char* pFile) const; + + // ------------------------------------------------------------------- + /** Opens a file at the given path, with given mode */ + IOStream* Open( const char* strFile, const char* strMode); + + // ------------------------------------------------------------------------------------------------ + // Inits Android extractor + void AndroidActivityInit(ANativeActivity* activity); + + // ------------------------------------------------------------------------------------------------ + // Extracts android asset + bool AndroidExtractAsset(std::string name); + +}; + +} //!ns Assimp + +#endif //AI_ANDROIDJNIIOSYSTEM_H_INC +#endif //__ANDROID__ and __ANDROID_API__ > 9 and defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) diff --git a/port/AndroidJNI/AndroidJNIIOSystem.cpp b/port/AndroidJNI/AndroidJNIIOSystem.cpp new file mode 100644 index 000000000..4e8f19187 --- /dev/null +++ b/port/AndroidJNI/AndroidJNIIOSystem.cpp @@ -0,0 +1,173 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2012, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +/** @file Android extension of DefaultIOSystem using the standard C file functions */ + + +#include +#if __ANDROID__ and __ANDROID_API__ > 9 and defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) + +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace Assimp; + +// ------------------------------------------------------------------------------------------------ +// Constructor. +AndroidJNIIOSystem::AndroidJNIIOSystem(ANativeActivity* activity) +{ + AndroidActivityInit(activity); +} + +// ------------------------------------------------------------------------------------------------ +// Destructor. +AndroidJNIIOSystem::~AndroidJNIIOSystem() +{ + // nothing to do here +} + +// ------------------------------------------------------------------------------------------------ +// Tests for the existence of a file at the given path. +bool AndroidJNIIOSystem::Exists( const char* pFile) const +{ + AAsset* asset = AAssetManager_open(mApkAssetManager, pFile, + AASSET_MODE_UNKNOWN); + FILE* file = ::fopen( (mApkWorkspacePath + getOsSeparator() + std::string(pFile)).c_str(), "rb"); + + if (!asset && !file) + { + __android_log_print(ANDROID_LOG_ERROR, "Assimp", "Asset manager can not find: %s", pFile); + return false; + } + + __android_log_print(ANDROID_LOG_ERROR, "Assimp", "Asset exists"); + if (file) + ::fclose( file); + return true; +} + +// ------------------------------------------------------------------------------------------------ +// Inits Android extractor +void AndroidJNIIOSystem::AndroidActivityInit(ANativeActivity* activity) +{ + mApkWorkspacePath = activity->internalDataPath; + mApkAssetManager = activity->assetManager; +} + +// ------------------------------------------------------------------------------------------------ +// Extracts android asset +bool AndroidJNIIOSystem::AndroidExtractAsset(std::string name) +{ + std::string newPath = mApkWorkspacePath + getOsSeparator() + name; + + DefaultIOSystem io; + + // Do not extract if extracted already + if ( io.Exists(newPath.c_str()) ) { + __android_log_print(ANDROID_LOG_DEFAULT, "Assimp", "Asset already extracted"); + return true; + } + // Open file + AAsset* asset = AAssetManager_open(mApkAssetManager, name.c_str(), + AASSET_MODE_UNKNOWN); + std::string assetContent; + + if (asset != NULL) { + // Find size + off_t assetSize = AAsset_getLength(asset); + + // Prepare input buffer + assetContent.resize(assetSize); + + // Store input buffer + AAsset_read(asset, &assetContent[0], assetSize); + + // Close + AAsset_close(asset); + + // Prepare output buffer + std::ofstream assetExtracted(newPath.c_str(), + std::ios::out | std::ios::binary); + if (!assetExtracted) { + __android_log_print(ANDROID_LOG_ERROR, "assimp", + "Can not open output file"); + } + + // Write output buffer into a file + assetExtracted.write(assetContent.c_str(), strlen(assetContent.c_str())); + assetExtracted.close(); + + __android_log_print(ANDROID_LOG_DEFAULT, "Assimp", "Asset extracted"); + } else { + __android_log_print(ANDROID_LOG_ERROR, "assimp", "Asset not found: %s", name.c_str()); + return false; + } + return true; +} + +// ------------------------------------------------------------------------------------------------ +// Open a new file with a given path. +IOStream* AndroidJNIIOSystem::Open( const char* strFile, const char* strMode) +{ + ai_assert(NULL != strFile); + ai_assert(NULL != strMode); + + std::string fullPath(mApkWorkspacePath + getOsSeparator() + std::string(strFile)); + if (Exists(strFile)) + AndroidExtractAsset(std::string(strFile)); + + FILE* file = ::fopen( fullPath.c_str(), strMode); + + if( NULL == file) + return NULL; + + __android_log_print(ANDROID_LOG_ERROR, "assimp", "AndroidIOSystem: file %s opened", fullPath.c_str()); + return new DefaultIOStream(file, fullPath); +} + +#undef PATHLIMIT +#endif // __ANDROID__ and __ANDROID_API__ > 9 and defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) diff --git a/port/AndroidJNI/CMakeLists.txt b/port/AndroidJNI/CMakeLists.txt new file mode 100644 index 000000000..ddc718850 --- /dev/null +++ b/port/AndroidJNI/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 2.8) + +include_directories(./) +include_directories(./../../) +add_library(android_jniiosystem STATIC AndroidJNIIOSystem.cpp) +TARGET_LINK_LIBRARIES(android_jniiosystem android log) diff --git a/port/AndroidJNI/README.txt b/port/AndroidJNI/README.txt new file mode 100644 index 000000000..337772025 --- /dev/null +++ b/port/AndroidJNI/README.txt @@ -0,0 +1,27 @@ +--- Description --- + +This module provides a facade to io stream access to files +behind android asset manager within Android native application. +- It is built as a static library +- It requires Android NDK with android API > 9 support. + +--- Building --- + +To use this module please provide following cmake defines: + +-DASSIMP_ANDROID_JNIIOSYSTEM=ON +-DCMAKE_TOOLCHAIN_FILE=$SOME_PATH/android.toolchain.cmake + +"SOME_PATH" is a path to your cmake android toolchain script. + +--- Code --- + +#include + +... + +Assimp::Importer* importer = new Assimp::Importer(); +Assimp::AndroidJNIIOSystem* ioSystem = new Assimp::AndroidJNIIOSystem(app->activity); +importer->SetIOHandler(ioSystem); + +... From 88f6e8213be58b721581dd2f615c5212b4af4581 Mon Sep 17 00:00:00 2001 From: Filip Wasil Date: Tue, 7 Oct 2014 17:05:14 +0200 Subject: [PATCH 149/196] Android JNI asset extraction support (API 9+) - installation fixes Signed-off-by: Filip Wasil --- code/CMakeLists.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index f636fc535..4f651c7c5 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -727,8 +727,8 @@ SET_PROPERTY(TARGET assimp PROPERTY DEBUG_POSTFIX ${ASSIMP_DEBUG_POSTFIX}) TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES}) if(ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM) - set(ASSIMP_ANDROID_JNIIOSYSTEM_PATH port/AndroidJNI/) - add_subdirectory(../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH} ../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}) + set(ASSIMP_ANDROID_JNIIOSYSTEM_PATH port/AndroidJNI) + add_subdirectory(../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}/ ../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}/) target_link_libraries(assimp android_jniiosystem) endif(ANDROID AND ASSIMP_ANDROID_JNIIOSYSTEM) @@ -759,7 +759,9 @@ INSTALL( TARGETS assimp INSTALL( FILES ${PUBLIC_HEADERS} DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}/assimp COMPONENT assimp-dev) INSTALL( FILES ${COMPILER_HEADERS} DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}/assimp/Compiler COMPONENT assimp-dev) if (ASSIMP_ANDROID_JNIIOSYSTEM) - INSTALL( FILES assimp/${ANDROID_JNI_PATH}/AndroidJNIIOSystem.h DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR}/assimp/${ANDROID_JNI_PATH} COMPONENT assimp-dev) + INSTALL(FILES ${HEADER_PATH}/../${ASSIMP_ANDROID_JNIIOSYSTEM_PATH}/AndroidJNIIOSystem.h + DESTINATION ${ASSIMP_INCLUDE_INSTALL_DIR} + COMPONENT assimp-dev) endif(ASSIMP_ANDROID_JNIIOSYSTEM) if(MSVC AND ASSIMP_INSTALL_PDB) From 487c9449d2c66714fb814ec99cd78af564f173d3 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 10 Oct 2014 15:59:42 +0200 Subject: [PATCH 150/196] bugfix: search for token checks for the given tokenlist against the lowercased info coming from the asset file. So we also have to used a lowercased token. Thanks to Robinson for the report. Signed-off-by: Kim Kulling --- code/FBXImporter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/FBXImporter.cpp b/code/FBXImporter.cpp index dfbe5dbd0..9ecea6365 100644 --- a/code/FBXImporter.cpp +++ b/code/FBXImporter.cpp @@ -105,7 +105,7 @@ bool FBXImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool else if ((!extension.length() || checkSig) && pIOHandler) { // at least ascii FBX files usually have a 'FBX' somewhere in their head - const char* tokens[] = {"FBX"}; + const char* tokens[] = {"fbx"}; return SearchFileHeaderForToken(pIOHandler,pFile,tokens,1); } return false; From a1a1bf77a8925a4c26282b01cfebf6cf61317fc6 Mon Sep 17 00:00:00 2001 From: Jared Duke Date: Fri, 10 Oct 2014 14:16:42 -0700 Subject: [PATCH 151/196] Temporarily disable Blender BMesh conversion Disable BMesh conversion while associated unresolved issues receive due attention. Referencing #400, #373, #318 #315 and #132. --- code/BlenderLoader.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/BlenderLoader.cpp b/code/BlenderLoader.cpp index 562d3729b..dc88ab840 100644 --- a/code/BlenderLoader.cpp +++ b/code/BlenderLoader.cpp @@ -659,11 +659,15 @@ void BlenderImporter::ConvertMesh(const Scene& /*in*/, const Object* /*obj*/, co ConversionData& conv_data, TempArray& temp ) { + // TODO: Resolve various problems with BMesh triangluation before re-enabling. + // See issues #400, #373, #318 #315 and #132. +#if defined(TODO_FIX_BMESH_CONVERSION) BlenderBMeshConverter BMeshConverter( mesh ); if ( BMeshConverter.ContainsBMesh( ) ) { mesh = BMeshConverter.TriangulateBMesh( ); } +#endif typedef std::pair MyPair; if ((!mesh->totface && !mesh->totloop) || !mesh->totvert) { From 060f3c33d9966dc55901e4d039ca30f6bff85de0 Mon Sep 17 00:00:00 2001 From: Timothy Gu Date: Tue, 14 Oct 2014 22:28:14 -0700 Subject: [PATCH 152/196] CMakeList: Support setting Libs.private --- CMakeLists.txt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 97d4b68bc..b1c1f26e5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,10 +90,6 @@ ELSE ( ASSIMP_BUILD_STATIC_LIB ) option ( BUILD_SHARED_LIBS "Build a shared version of the library" ON ) ENDIF ( ASSIMP_BUILD_STATIC_LIB ) -# Generate a pkg-config .pc for the Assimp library. -CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/assimp.pc.in" "${PROJECT_BINARY_DIR}/assimp.pc" @ONLY ) -INSTALL( FILES "${PROJECT_BINARY_DIR}/assimp.pc" DESTINATION ${ASSIMP_LIB_INSTALL_DIR}/pkgconfig/ COMPONENT ${LIBASSIMP-DEV_COMPONENT}) - # Only generate this target if no higher-level project already has IF (NOT TARGET uninstall) # add make uninstall capability @@ -136,6 +132,10 @@ option ( ASSIMP_NO_EXPORT OFF ) +if( CMAKE_COMPILER_IS_GNUCXX ) + set(LIBSTDC++_LIBRARIES -lstdc++) +endif( CMAKE_COMPILER_IS_GNUCXX ) + # Search for external dependencies, and build them from source if not found # Search for zlib find_package(ZLIB) @@ -151,6 +151,7 @@ if( NOT ZLIB_FOUND ) set(ZLIB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/contrib/zlib ${CMAKE_CURRENT_BINARY_DIR}/contrib/zlib) else(NOT ZLIB_FOUND) ADD_DEFINITIONS(-DASSIMP_BUILD_NO_OWN_ZLIB) + set(ZLIB_LIBRARIES_LINKED -lz) endif(NOT ZLIB_FOUND) INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) @@ -228,6 +229,10 @@ IF(MSVC) ) ENDIF(MSVC) +# Generate a pkg-config .pc for the Assimp library. +CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/assimp.pc.in" "${PROJECT_BINARY_DIR}/assimp.pc" @ONLY ) +INSTALL( FILES "${PROJECT_BINARY_DIR}/assimp.pc" DESTINATION ${ASSIMP_LIB_INSTALL_DIR}/pkgconfig/ COMPONENT ${LIBASSIMP-DEV_COMPONENT}) + if(CMAKE_CPACK_COMMAND AND UNIX AND ASSIMP_OPT_BUILD_PACKAGES) # Packing information set(CPACK_PACKAGE_NAME "assimp{ASSIMP_VERSION_MAJOR}") From 8656a351340937ba6a51ba12197f5ae54b9a8ed7 Mon Sep 17 00:00:00 2001 From: Timothy Gu Date: Tue, 14 Oct 2014 22:29:08 -0700 Subject: [PATCH 153/196] assimp.pc.in: Add static libs to Libs.private --- assimp.pc.in | 1 + 1 file changed, 1 insertion(+) diff --git a/assimp.pc.in b/assimp.pc.in index 1d3d9956c..ecb7074d3 100644 --- a/assimp.pc.in +++ b/assimp.pc.in @@ -7,4 +7,5 @@ Name: @CMAKE_PROJECT_NAME@ Description: Import various well-known 3D model formats in an uniform manner. Version: @PROJECT_VERSION@ Libs: -L${libdir} -lassimp@ASSIMP_LIBRARY_SUFFIX@ +Libs.private: @LIBSTDC++_LIBRARIES@ @ZLIB_LIBRARIES_LINKED@ Cflags: -I${includedir} From 43dbd6d873ab9c77bf53f80d78e41a882e67708f Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 22 Oct 2014 21:37:25 +0200 Subject: [PATCH 154/196] update: add some files to .gitignore. Signed-off-by: Kim Kulling --- .gitignore | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.gitignore b/.gitignore index 4ddf06e63..f4940f273 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,18 @@ test/results # Python __pycache__ +*.log +*.vcxproj +*.filters +*.tlog +Assimp.sdf +test/gtest/tmp/gtest-gitupdate.cmake +test/gtest/tmp/gtest-gitclone.cmake +test/gtest/tmp/gtest-cfgcmd.txt.in +test/gtest/tmp/gtest-cfgcmd.txt +test/gtest/src/gtest-stamp/gtest-download.cmake +test/gtest/src/gtest-stamp/gtest-configure.cmake +test/gtest/src/gtest-stamp/gtest-build.cmake +test/gtest/src/gtest-stamp/Debug/gtest-patch +*.cache +test/gtest/src/gtest-stamp/Debug/gtest-build From cee583db06aadbc4686111416df83e259cb935e6 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 22 Oct 2014 23:05:25 +0200 Subject: [PATCH 155/196] bugfix: fix compiler warning: converting double to float. Signed-off-by: Kim Kulling --- code/FBXParser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/FBXParser.cpp b/code/FBXParser.cpp index 24b12ccbf..7559a380d 100644 --- a/code/FBXParser.cpp +++ b/code/FBXParser.cpp @@ -376,7 +376,7 @@ float ParseTokenAsFloat(const Token& t, const char*& err_out) return SafeParse(data+1, t.end()); } else { - return SafeParse(data+1, t.end()); + return static_cast( SafeParse(data+1, t.end()) ); } } From 94f61300c24539d36e64a129285882916304fa87 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Thu, 23 Oct 2014 21:02:43 +0200 Subject: [PATCH 156/196] bugfix: - remove and comment some gcc compiler warnings for not used vaiables. --- test/unit/utNoBoostTest.cpp | 1 + test/unit/utRemoveComponent.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/test/unit/utNoBoostTest.cpp b/test/unit/utNoBoostTest.cpp index 76b96129b..170d95a83 100644 --- a/test/unit/utNoBoostTest.cpp +++ b/test/unit/utNoBoostTest.cpp @@ -40,6 +40,7 @@ TEST(NoBoostTest, Tuple) { bool b = second.get<3>(); EXPECT_FALSE(b); + // check empty tuple, ignore compile warning boost::tuple<> third; // FIXME: Explicit conversion not really required yet diff --git a/test/unit/utRemoveComponent.cpp b/test/unit/utRemoveComponent.cpp index 8537badec..e00f752a5 100644 --- a/test/unit/utRemoveComponent.cpp +++ b/test/unit/utRemoveComponent.cpp @@ -68,6 +68,8 @@ void RemoveVCProcessTest::SetUp() // so we don't need a virtual destructor char check[sizeof(aiMaterial) == sizeof(aiMaterial) ? 10 : -1]; check[0] = 0; + // to remove compiler warning + EXPECT_TRUE( check ); } // ------------------------------------------------------------------------------------------------ From c7b6b5ea2fb13d8f50f1e41bf8767ea65cc904c8 Mon Sep 17 00:00:00 2001 From: Jared Duke Date: Tue, 18 Nov 2014 16:56:46 -0800 Subject: [PATCH 157/196] Support lowercase 'ns' and 'ni' obj material tokens Previously, the obj material parser would interpret all key tokens starting with 'n' as 'newmtl' tokens. However, there are other tokens that can start with 'n', namely 'ns' and 'ni' for material properties. Make the parser robust to such cases, despite their canonical forms being uppercase. Resolves #410. --- code/ObjFileMtlImporter.cpp | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/code/ObjFileMtlImporter.cpp b/code/ObjFileMtlImporter.cpp index 74466f2ba..56229b7b0 100644 --- a/code/ObjFileMtlImporter.cpp +++ b/code/ObjFileMtlImporter.cpp @@ -166,25 +166,27 @@ void ObjFileMtlImporter::load() } break; - case 'N': // Shineness + case 'N': + case 'n': { ++m_DataIt; - switch(*m_DataIt) + switch(*m_DataIt) { - case 's': + case 's': // Specular exponent ++m_DataIt; getFloatValue(m_pModel->m_pCurrentMaterial->shineness); break; - case 'i': //Index Of refraction + case 'i': // Index Of refraction ++m_DataIt; getFloatValue(m_pModel->m_pCurrentMaterial->ior); break; + case 'e': // New material + createMaterial(); + break; } m_DataIt = skipLine( m_DataIt, m_DataItEnd, m_uiLine ); - break; } break; - case 'm': // Texture case 'b': // quick'n'dirty - for 'bump' sections @@ -194,13 +196,6 @@ void ObjFileMtlImporter::load() } break; - case 'n': // New material name - { - createMaterial(); - m_DataIt = skipLine( m_DataIt, m_DataItEnd, m_uiLine ); - } - break; - case 'i': // Illumination model { m_DataIt = getNextToken(m_DataIt, m_DataItEnd); From 543bd5c0d0ce26ebbc3e30547b0cfad26ac1f04a Mon Sep 17 00:00:00 2001 From: Johannes Ebersold Date: Wed, 19 Nov 2014 13:51:22 +0100 Subject: [PATCH 158/196] ColladaParser::ReadPrimitives: rename "a" to currentPrimitive --- code/ColladaParser.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index dffb04c3d..693588810 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -2105,7 +2105,7 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer pMesh->mFaceSize.reserve( numPrimitives); pMesh->mFacePosIndices.reserve( indices.size() / numOffsets); - for( size_t a = 0; a < numPrimitives; a++) + for (size_t currentPrimitive = 0; currentPrimitive < numPrimitives; currentPrimitive++) { // determine number of points for this primitive size_t numPoints = 0; @@ -2118,7 +2118,7 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer numPoints = 3; break; case Prim_Polylist: - numPoints = pVCount[a]; + numPoints = pVCount[currentPrimitive]; break; case Prim_TriFans: case Prim_Polygon: From 70d2c8571bb75359a1e5da2520be09fe675ccb61 Mon Sep 17 00:00:00 2001 From: Johannes Ebersold Date: Wed, 19 Nov 2014 14:04:49 +0100 Subject: [PATCH 159/196] ColladaParser::ReadPrimitives: get rid of "idx" iterator. We will be adding non-sequential access to the indices vector in one of the upcoming commits. --- code/ColladaParser.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index 693588810..4a6737d9d 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -2093,10 +2093,6 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer acc->mData = &ResolveLibraryReference( mDataLibrary, acc->mSource); } - - // now assemble vertex data according to those indices - std::vector::const_iterator idx = indices.begin(); - // For continued primitives, the given count does not come all in one

    , but only one primitive per

    size_t numPrimitives = pNumPrimitives; if( pPrimType == Prim_TriFans || pPrimType == Prim_Polygon) @@ -2140,7 +2136,7 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer ai_assert( numOffsets < 20 && perVertexOffset < 20); size_t vindex[20]; for( size_t offsets = 0; offsets < numOffsets; ++offsets) - vindex[offsets] = *idx++; + vindex[offsets] = indices[currentPrimitive * numOffsets * numPoints + b * numOffsets + offsets]; // extract per-vertex channels using the global per-vertex offset for( std::vector::iterator it = pMesh->mPerVertexData.begin(); it != pMesh->mPerVertexData.end(); ++it) From 4ef244f67231a0d220ea64c8ad355d361d7a1776 Mon Sep 17 00:00:00 2001 From: Johannes Ebersold Date: Wed, 19 Nov 2014 14:10:16 +0100 Subject: [PATCH 160/196] Extract function ColladaParser::CopyPrimitive --- code/ColladaParser.cpp | 39 ++++++++++++++++++++++++--------------- code/ColladaParser.h | 5 +++++ 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index 4a6737d9d..780da154d 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -2132,21 +2132,7 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer // gather that number of vertices for( size_t b = 0; b < numPoints; b++) { - // read all indices for this vertex. Yes, in a hacky local array - ai_assert( numOffsets < 20 && perVertexOffset < 20); - size_t vindex[20]; - for( size_t offsets = 0; offsets < numOffsets; ++offsets) - vindex[offsets] = indices[currentPrimitive * numOffsets * numPoints + b * numOffsets + offsets]; - - // extract per-vertex channels using the global per-vertex offset - for( std::vector::iterator it = pMesh->mPerVertexData.begin(); it != pMesh->mPerVertexData.end(); ++it) - ExtractDataObjectFromChannel( *it, vindex[perVertexOffset], pMesh); - // and extract per-index channels using there specified offset - for( std::vector::iterator it = pPerIndexChannels.begin(); it != pPerIndexChannels.end(); ++it) - ExtractDataObjectFromChannel( *it, vindex[it->mOffset], pMesh); - - // store the vertex-data index for later assignment of bone vertex weights - pMesh->mFacePosIndices.push_back( vindex[perVertexOffset]); + CopyPrimitive(b, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); } } @@ -2155,6 +2141,29 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer TestClosing( "p"); } +void ColladaParser::CopyPrimitive(size_t currentVertex, size_t numOffsets, size_t numPoints, size_t perVertexOffset, Mesh* pMesh, std::vector& pPerIndexChannels, size_t currentPrimitive, const std::vector& indices){ + // don't overrun the boundaries of the index list + size_t maxIndexRequested = currentPrimitive * numOffsets * numPoints + (currentVertex + 1) * numOffsets - 1; + ai_assert(maxIndexRequested < indices.size()); + + // read all indices for this vertex. Yes, in a hacky local array + ai_assert(numOffsets < 20 && perVertexOffset < 20); + size_t vindex[20]; + + for (size_t offsets = 0; offsets < numOffsets; ++offsets) + vindex[offsets] = indices[currentPrimitive * numOffsets * numPoints + currentVertex * numOffsets + offsets]; + + // extract per-vertex channels using the global per-vertex offset + for (std::vector::iterator it = pMesh->mPerVertexData.begin(); it != pMesh->mPerVertexData.end(); ++it) + ExtractDataObjectFromChannel(*it, vindex[perVertexOffset], pMesh); + // and extract per-index channels using there specified offset + for (std::vector::iterator it = pPerIndexChannels.begin(); it != pPerIndexChannels.end(); ++it) + ExtractDataObjectFromChannel(*it, vindex[it->mOffset], pMesh); + + // store the vertex-data index for later assignment of bone vertex weights + pMesh->mFacePosIndices.push_back(vindex[perVertexOffset]); +} + // ------------------------------------------------------------------------------------------------ // Extracts a single object from an input channel and stores it in the appropriate mesh data array void ColladaParser::ExtractDataObjectFromChannel( const InputChannel& pInput, size_t pLocalIndex, Mesh* pMesh) diff --git a/code/ColladaParser.h b/code/ColladaParser.h index c19a5e100..b93cf9145 100644 --- a/code/ColladaParser.h +++ b/code/ColladaParser.h @@ -180,6 +180,11 @@ protected: void ReadPrimitives( Collada::Mesh* pMesh, std::vector& pPerIndexChannels, size_t pNumPrimitives, const std::vector& pVCount, Collada::PrimitiveType pPrimType); + /** Copies the data for a single primitive into the mesh, based on the InputChannels */ + void CopyPrimitive(size_t currentVertex, size_t numOffsets, size_t numPoints, size_t perVertexOffset, + Collada::Mesh* pMesh, std::vector& pPerIndexChannels, + size_t currentPrimitive, const std::vector& indices); + /** Extracts a single object from an input channel and stores it in the appropriate mesh data array */ void ExtractDataObjectFromChannel( const Collada::InputChannel& pInput, size_t pLocalIndex, Collada::Mesh* pMesh); From 7c4bf383d7cfd75f6bdb4bd7e7e618a5dd4501be Mon Sep 17 00:00:00 2001 From: Johannes Ebersold Date: Wed, 19 Nov 2014 14:16:10 +0100 Subject: [PATCH 161/196] Move vertex copy operation into switch statement. We will be adding special handling for Tristrips in an upcoming commit, which unfortunately doesn't map to a common copy loop as it is. --- code/ColladaParser.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index 780da154d..d92e5fc51 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -2109,16 +2109,24 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer { case Prim_Lines: numPoints = 2; + for (size_t currentVertex = 0; currentVertex < numPoints; currentVertex++) + CopyPrimitive(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); break; case Prim_Triangles: numPoints = 3; + for (size_t currentVertex = 0; currentVertex < numPoints; currentVertex++) + CopyPrimitive(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); break; case Prim_Polylist: numPoints = pVCount[currentPrimitive]; + for (size_t currentVertex = 0; currentVertex < numPoints; currentVertex++) + CopyPrimitive(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); break; case Prim_TriFans: case Prim_Polygon: numPoints = indices.size() / numOffsets; + for (size_t currentVertex = 0; currentVertex < numPoints; currentVertex++) + CopyPrimitive(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); break; default: // LineStrip and TriStrip not supported due to expected index unmangling @@ -2128,12 +2136,6 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer // store the face size to later reconstruct the face from pMesh->mFaceSize.push_back( numPoints); - - // gather that number of vertices - for( size_t b = 0; b < numPoints; b++) - { - CopyPrimitive(b, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); - } } From 0f40dcca7eca46e4e4c69acc75b3c80d5f91b9dd Mon Sep 17 00:00:00 2001 From: Johannes Ebersold Date: Wed, 19 Nov 2014 14:26:54 +0100 Subject: [PATCH 162/196] Add calculation for nuber of Primitives for TriStrips --- code/ColladaParser.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index d92e5fc51..2cdebef21 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -2097,6 +2097,11 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer size_t numPrimitives = pNumPrimitives; if( pPrimType == Prim_TriFans || pPrimType == Prim_Polygon) numPrimitives = 1; + // For continued primitives, the given count is actually the number of

    's inside the parent tag + if ( pPrimType == Prim_TriStrips){ + size_t numberOfVertices = indices.size() / numOffsets; + numPrimitives = numberOfVertices - 2; + } pMesh->mFaceSize.reserve( numPrimitives); pMesh->mFacePosIndices.reserve( indices.size() / numOffsets); From 593484829b6c57c0b8c24a21ec91bed28d23e4aa Mon Sep 17 00:00:00 2001 From: Johannes Ebersold Date: Wed, 19 Nov 2014 14:30:18 +0100 Subject: [PATCH 163/196] Add Function ColladaParser::ReadPrimTriStrips. This does the index mangling for reading tristrips. --- code/ColladaParser.cpp | 20 +++++++++++++++++++- code/ColladaParser.h | 4 ++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index 2cdebef21..5268255eb 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -2122,6 +2122,10 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer for (size_t currentVertex = 0; currentVertex < numPoints; currentVertex++) CopyPrimitive(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); break; + case Prim_TriStrips: + numPoints = 3; + ReadPrimTriStrips(numOffsets, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + break; case Prim_Polylist: numPoints = pVCount[currentPrimitive]; for (size_t currentVertex = 0; currentVertex < numPoints; currentVertex++) @@ -2134,7 +2138,7 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer CopyPrimitive(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); break; default: - // LineStrip and TriStrip not supported due to expected index unmangling + // LineStrip is not supported due to expected index unmangling ThrowException( "Unsupported primitive type."); break; } @@ -2171,6 +2175,20 @@ void ColladaParser::CopyPrimitive(size_t currentVertex, size_t numOffsets, size_ pMesh->mFacePosIndices.push_back(vindex[perVertexOffset]); } +void ColladaParser::ReadPrimTriStrips(size_t numOffsets, size_t perVertexOffset, Mesh* pMesh, std::vector& pPerIndexChannels, size_t currentPrimitive, const std::vector& indices){ + if (currentPrimitive % 2 != 0){ + //odd tristrip triangles need their indices mangled, to preserve winding direction + CopyPrimitive(1, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + CopyPrimitive(0, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + CopyPrimitive(2, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + } + else {//for non tristrips or even tristrip triangles + CopyPrimitive(0, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + CopyPrimitive(1, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + CopyPrimitive(2, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + } +} + // ------------------------------------------------------------------------------------------------ // Extracts a single object from an input channel and stores it in the appropriate mesh data array void ColladaParser::ExtractDataObjectFromChannel( const InputChannel& pInput, size_t pLocalIndex, Mesh* pMesh) diff --git a/code/ColladaParser.h b/code/ColladaParser.h index b93cf9145..9f0963345 100644 --- a/code/ColladaParser.h +++ b/code/ColladaParser.h @@ -185,6 +185,10 @@ protected: Collada::Mesh* pMesh, std::vector& pPerIndexChannels, size_t currentPrimitive, const std::vector& indices); + /** Reads one triangle of a tristrip into the mesh */ + void ReadPrimTriStrips(size_t numOffsets, size_t perVertexOffset, Collada::Mesh* pMesh, + std::vector& pPerIndexChannels, size_t currentPrimitive, const std::vector& indices); + /** Extracts a single object from an input channel and stores it in the appropriate mesh data array */ void ExtractDataObjectFromChannel( const Collada::InputChannel& pInput, size_t pLocalIndex, Collada::Mesh* pMesh); From 72f67ea0cdb4d55c48eea7a9b1bd39527671fae0 Mon Sep 17 00:00:00 2001 From: Johannes Ebersold Date: Wed, 19 Nov 2014 14:32:01 +0100 Subject: [PATCH 164/196] Whitespace changes --- code/ColladaParser.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index 5268255eb..b6fd73dfa 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -1868,7 +1868,7 @@ void ColladaParser::ReadIndexData( Mesh* pMesh) int attrCount = GetAttribute( "count"); size_t numPrimitives = (size_t) mReader->getAttributeValueAsInt( attrCount); - // material subgroup + // material subgroup int attrMaterial = TestAttribute( "material"); SubMesh subgroup; if( attrMaterial > -1) @@ -2113,12 +2113,12 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer switch( pPrimType) { case Prim_Lines: - numPoints = 2; + numPoints = 2; for (size_t currentVertex = 0; currentVertex < numPoints; currentVertex++) CopyPrimitive(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); break; - case Prim_Triangles: - numPoints = 3; + case Prim_Triangles: + numPoints = 3; for (size_t currentVertex = 0; currentVertex < numPoints; currentVertex++) CopyPrimitive(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); break; @@ -2133,7 +2133,7 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer break; case Prim_TriFans: case Prim_Polygon: - numPoints = indices.size() / numOffsets; + numPoints = indices.size() / numOffsets; for (size_t currentVertex = 0; currentVertex < numPoints; currentVertex++) CopyPrimitive(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); break; @@ -2147,7 +2147,6 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer pMesh->mFaceSize.push_back( numPoints); } - // if I ever get my hands on that guy who invented this steaming pile of indirection... TestClosing( "p"); } From e568c2df9dbfe82355d5d61642be7b7a96e1cb89 Mon Sep 17 00:00:00 2001 From: Johannes Ebersold Date: Wed, 19 Nov 2014 14:38:03 +0100 Subject: [PATCH 165/196] ColladaParser::ReadIndexData: don't rely on the specified number of primitives. Especially TriStrips don't specify triangle count upfront, so one needs to sum up the count of triangles read from all

    tags in a tristrip collection. --- code/ColladaParser.cpp | 18 ++++++++++++++---- code/ColladaParser.h | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index b6fd73dfa..b199ccc52 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -1867,14 +1867,15 @@ void ColladaParser::ReadIndexData( Mesh* pMesh) // read primitive count from the attribute int attrCount = GetAttribute( "count"); size_t numPrimitives = (size_t) mReader->getAttributeValueAsInt( attrCount); + // some mesh types (e.g. tristrips) don't specify primitive count upfront, + // so we need to sum up the actual number of primitives while we read the

    -tags + size_t actualPrimitives = 0; // material subgroup int attrMaterial = TestAttribute( "material"); SubMesh subgroup; if( attrMaterial > -1) subgroup.mMaterial = mReader->getAttributeValue( attrMaterial); - subgroup.mNumFaces = numPrimitives; - pMesh->mSubMeshes.push_back( subgroup); // distinguish between polys and triangles std::string elementName = mReader->getNodeName(); @@ -1933,7 +1934,7 @@ void ColladaParser::ReadIndexData( Mesh* pMesh) if( !mReader->isEmptyElement()) { // now here the actual fun starts - these are the indices to construct the mesh data from - ReadPrimitives( pMesh, perIndexData, numPrimitives, vcount, primType); + actualPrimitives += ReadPrimitives(pMesh, perIndexData, numPrimitives, vcount, primType); } } else { @@ -1948,6 +1949,14 @@ void ColladaParser::ReadIndexData( Mesh* pMesh) break; } } + + // small sanity check + if (primType != Prim_TriFans && primType != Prim_TriStrips) + ai_assert(actualPrimitives == numPrimitives); + + // only when we're done reading all

    tags (and thus know the final vertex count) can we commit the submesh + subgroup.mNumFaces = actualPrimitives; + pMesh->mSubMeshes.push_back(subgroup); } // ------------------------------------------------------------------------------------------------ @@ -1995,7 +2004,7 @@ void ColladaParser::ReadInputChannel( std::vector& poChannels) // ------------------------------------------------------------------------------------------------ // Reads a

    primitive index list and assembles the mesh data into the given mesh -void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPerIndexChannels, +size_t ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPerIndexChannels, size_t pNumPrimitives, const std::vector& pVCount, PrimitiveType pPrimType) { // determine number of indices coming per vertex @@ -2149,6 +2158,7 @@ void ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pPer // if I ever get my hands on that guy who invented this steaming pile of indirection... TestClosing( "p"); + return numPrimitives; } void ColladaParser::CopyPrimitive(size_t currentVertex, size_t numOffsets, size_t numPoints, size_t perVertexOffset, Mesh* pMesh, std::vector& pPerIndexChannels, size_t currentPrimitive, const std::vector& indices){ diff --git a/code/ColladaParser.h b/code/ColladaParser.h index 9f0963345..931f16ca0 100644 --- a/code/ColladaParser.h +++ b/code/ColladaParser.h @@ -177,7 +177,7 @@ protected: void ReadInputChannel( std::vector& poChannels); /** Reads a

    primitive index list and assembles the mesh data into the given mesh */ - void ReadPrimitives( Collada::Mesh* pMesh, std::vector& pPerIndexChannels, + size_t ReadPrimitives( Collada::Mesh* pMesh, std::vector& pPerIndexChannels, size_t pNumPrimitives, const std::vector& pVCount, Collada::PrimitiveType pPrimType); /** Copies the data for a single primitive into the mesh, based on the InputChannels */ From 13a157ea6650ec29223d8361e0bd4ed0100cdd54 Mon Sep 17 00:00:00 2001 From: Wolfgang Herget Date: Thu, 20 Nov 2014 13:10:15 +0100 Subject: [PATCH 166/196] For Polylists, manually compute the start offset outside CopyPrimitive. --- code/ColladaParser.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index b199ccc52..eb40d9d31 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -2115,6 +2115,7 @@ size_t ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pP pMesh->mFaceSize.reserve( numPrimitives); pMesh->mFacePosIndices.reserve( indices.size() / numOffsets); + size_t polylistStartVertex = 0; for (size_t currentPrimitive = 0; currentPrimitive < numPrimitives; currentPrimitive++) { // determine number of points for this primitive @@ -2138,7 +2139,8 @@ size_t ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pP case Prim_Polylist: numPoints = pVCount[currentPrimitive]; for (size_t currentVertex = 0; currentVertex < numPoints; currentVertex++) - CopyPrimitive(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + CopyPrimitive(polylistStartVertex + currentVertex, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, 0, indices); + polylistStartVertex += numPoints; break; case Prim_TriFans: case Prim_Polygon: From ca3ce4703d229ea394033e96b0295ef651b4349b Mon Sep 17 00:00:00 2001 From: Wolfgang Herget Date: Thu, 20 Nov 2014 13:12:09 +0100 Subject: [PATCH 167/196] Rename ColladaParser::CopyPrimitive to ::CopyVertex. That's a bit closer to what the function actually does. --- code/ColladaParser.cpp | 22 +++++++++++----------- code/ColladaParser.h | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index eb40d9d31..3d63168b8 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -2125,12 +2125,12 @@ size_t ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pP case Prim_Lines: numPoints = 2; for (size_t currentVertex = 0; currentVertex < numPoints; currentVertex++) - CopyPrimitive(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + CopyVertex(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); break; case Prim_Triangles: numPoints = 3; for (size_t currentVertex = 0; currentVertex < numPoints; currentVertex++) - CopyPrimitive(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + CopyVertex(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); break; case Prim_TriStrips: numPoints = 3; @@ -2139,14 +2139,14 @@ size_t ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pP case Prim_Polylist: numPoints = pVCount[currentPrimitive]; for (size_t currentVertex = 0; currentVertex < numPoints; currentVertex++) - CopyPrimitive(polylistStartVertex + currentVertex, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, 0, indices); + CopyVertex(polylistStartVertex + currentVertex, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, 0, indices); polylistStartVertex += numPoints; break; case Prim_TriFans: case Prim_Polygon: numPoints = indices.size() / numOffsets; for (size_t currentVertex = 0; currentVertex < numPoints; currentVertex++) - CopyPrimitive(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + CopyVertex(currentVertex, numOffsets, numPoints, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); break; default: // LineStrip is not supported due to expected index unmangling @@ -2163,7 +2163,7 @@ size_t ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pP return numPrimitives; } -void ColladaParser::CopyPrimitive(size_t currentVertex, size_t numOffsets, size_t numPoints, size_t perVertexOffset, Mesh* pMesh, std::vector& pPerIndexChannels, size_t currentPrimitive, const std::vector& indices){ +void ColladaParser::CopyVertex(size_t currentVertex, size_t numOffsets, size_t numPoints, size_t perVertexOffset, Mesh* pMesh, std::vector& pPerIndexChannels, size_t currentPrimitive, const std::vector& indices){ // don't overrun the boundaries of the index list size_t maxIndexRequested = currentPrimitive * numOffsets * numPoints + (currentVertex + 1) * numOffsets - 1; ai_assert(maxIndexRequested < indices.size()); @@ -2189,14 +2189,14 @@ void ColladaParser::CopyPrimitive(size_t currentVertex, size_t numOffsets, size_ void ColladaParser::ReadPrimTriStrips(size_t numOffsets, size_t perVertexOffset, Mesh* pMesh, std::vector& pPerIndexChannels, size_t currentPrimitive, const std::vector& indices){ if (currentPrimitive % 2 != 0){ //odd tristrip triangles need their indices mangled, to preserve winding direction - CopyPrimitive(1, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); - CopyPrimitive(0, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); - CopyPrimitive(2, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + CopyVertex(1, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + CopyVertex(0, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + CopyVertex(2, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); } else {//for non tristrips or even tristrip triangles - CopyPrimitive(0, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); - CopyPrimitive(1, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); - CopyPrimitive(2, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + CopyVertex(0, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + CopyVertex(1, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); + CopyVertex(2, numOffsets, 1, perVertexOffset, pMesh, pPerIndexChannels, currentPrimitive, indices); } } diff --git a/code/ColladaParser.h b/code/ColladaParser.h index 931f16ca0..561ff05b3 100644 --- a/code/ColladaParser.h +++ b/code/ColladaParser.h @@ -181,7 +181,7 @@ protected: size_t pNumPrimitives, const std::vector& pVCount, Collada::PrimitiveType pPrimType); /** Copies the data for a single primitive into the mesh, based on the InputChannels */ - void CopyPrimitive(size_t currentVertex, size_t numOffsets, size_t numPoints, size_t perVertexOffset, + void CopyVertex(size_t currentVertex, size_t numOffsets, size_t numPoints, size_t perVertexOffset, Collada::Mesh* pMesh, std::vector& pPerIndexChannels, size_t currentPrimitive, const std::vector& indices); From 8dead93504362b4b975d69bf1741a5e1356f98dd Mon Sep 17 00:00:00 2001 From: Wolfgang Herget Date: Thu, 20 Nov 2014 16:42:41 +0100 Subject: [PATCH 168/196] ColladaParser: don't arbitrarily limit number of per-vertex attributes. --- code/ColladaParser.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index 3d63168b8..dc44d826f 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -2168,9 +2168,9 @@ void ColladaParser::CopyVertex(size_t currentVertex, size_t numOffsets, size_t n size_t maxIndexRequested = currentPrimitive * numOffsets * numPoints + (currentVertex + 1) * numOffsets - 1; ai_assert(maxIndexRequested < indices.size()); - // read all indices for this vertex. Yes, in a hacky local array - ai_assert(numOffsets < 20 && perVertexOffset < 20); - size_t vindex[20]; + // copy the indices pertaining to this vertex + std::vector vindex; + vindex.reserve(numOffsets); for (size_t offsets = 0; offsets < numOffsets; ++offsets) vindex[offsets] = indices[currentPrimitive * numOffsets * numPoints + currentVertex * numOffsets + offsets]; From c08a5581ddabac0a78fb02d81c4ed4e549775ef6 Mon Sep 17 00:00:00 2001 From: Wolfgang Herget Date: Thu, 20 Nov 2014 17:53:06 +0100 Subject: [PATCH 169/196] ColladaParser::CopyVertex: don't make a local copy of the vertex' indices. Instead, we address the relevant indices in the main vector directly by adding the input offsets to the per-vertex base offset. --- code/ColladaParser.cpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index dc44d826f..9e68c9332 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -2164,26 +2164,22 @@ size_t ColladaParser::ReadPrimitives( Mesh* pMesh, std::vector& pP } void ColladaParser::CopyVertex(size_t currentVertex, size_t numOffsets, size_t numPoints, size_t perVertexOffset, Mesh* pMesh, std::vector& pPerIndexChannels, size_t currentPrimitive, const std::vector& indices){ + // calculate the base offset of the vertex whose attributes we ant to copy + size_t baseOffset = currentPrimitive * numOffsets * numPoints + currentVertex * numOffsets; + // don't overrun the boundaries of the index list - size_t maxIndexRequested = currentPrimitive * numOffsets * numPoints + (currentVertex + 1) * numOffsets - 1; + size_t maxIndexRequested = baseOffset + numOffsets - 1; ai_assert(maxIndexRequested < indices.size()); - // copy the indices pertaining to this vertex - std::vector vindex; - vindex.reserve(numOffsets); - - for (size_t offsets = 0; offsets < numOffsets; ++offsets) - vindex[offsets] = indices[currentPrimitive * numOffsets * numPoints + currentVertex * numOffsets + offsets]; - // extract per-vertex channels using the global per-vertex offset for (std::vector::iterator it = pMesh->mPerVertexData.begin(); it != pMesh->mPerVertexData.end(); ++it) - ExtractDataObjectFromChannel(*it, vindex[perVertexOffset], pMesh); + ExtractDataObjectFromChannel(*it, indices[baseOffset + perVertexOffset], pMesh); // and extract per-index channels using there specified offset for (std::vector::iterator it = pPerIndexChannels.begin(); it != pPerIndexChannels.end(); ++it) - ExtractDataObjectFromChannel(*it, vindex[it->mOffset], pMesh); + ExtractDataObjectFromChannel(*it, indices[baseOffset + it->mOffset], pMesh); // store the vertex-data index for later assignment of bone vertex weights - pMesh->mFacePosIndices.push_back(vindex[perVertexOffset]); + pMesh->mFacePosIndices.push_back(indices[baseOffset + perVertexOffset]); } void ColladaParser::ReadPrimTriStrips(size_t numOffsets, size_t perVertexOffset, Mesh* pMesh, std::vector& pPerIndexChannels, size_t currentPrimitive, const std::vector& indices){ From f12a0a3b1c1321b2ea0e15e848d00d30980afce8 Mon Sep 17 00:00:00 2001 From: Oliver Nagy Date: Sat, 22 Nov 2014 16:24:32 +1100 Subject: [PATCH 170/196] Replaced 'xrange' by 'range' to maintain Python 3.x compatibility. --- port/PyAssimp/pyassimp/core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/port/PyAssimp/pyassimp/core.py b/port/PyAssimp/pyassimp/core.py index e51e8f5a8..8a1e6249b 100644 --- a/port/PyAssimp/pyassimp/core.py +++ b/port/PyAssimp/pyassimp/core.py @@ -50,7 +50,7 @@ def make_tuple(ai_obj, type = None): # It is faster and more correct to have an init function for each assimp class def _init_face(aiFace): - aiFace.indices = [aiFace.mIndices[i] for i in xrange(aiFace.mNumIndices)] + aiFace.indices = [aiFace.mIndices[i] for i in range(aiFace.mNumIndices)] assimp_struct_inits = { structs.Face : _init_face } From fc039ee0e27dc7ff1325466b67552f406f4ea45e Mon Sep 17 00:00:00 2001 From: Oliver Nagy Date: Sun, 23 Nov 2014 15:23:31 +1100 Subject: [PATCH 171/196] pyassimp/quicktest is now Python 3 compatible. --- port/PyAssimp/scripts/quicktest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/port/PyAssimp/scripts/quicktest.py b/port/PyAssimp/scripts/quicktest.py index 7e8caa3b2..4f45b2984 100755 --- a/port/PyAssimp/scripts/quicktest.py +++ b/port/PyAssimp/scripts/quicktest.py @@ -33,7 +33,7 @@ def run_tests(): ok += 1 except errors.AssimpError as error: # assimp error is fine, this is a controlled case - print error + print(error) err += 1 except Exception: print("Error encountered while loading <%s>"%os.path.join(root,afile)) From 3721b19a6137bb839482016afb8ded5d33056fe1 Mon Sep 17 00:00:00 2001 From: Oliver Nagy Date: Sun, 23 Nov 2014 15:24:17 +1100 Subject: [PATCH 172/196] pyassimp/quicktest now runs without installing pyassimp first. --- port/PyAssimp/pyassimp/core.py | 2 +- port/PyAssimp/scripts/quicktest.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/port/PyAssimp/pyassimp/core.py b/port/PyAssimp/pyassimp/core.py index 8a1e6249b..b5b0441ce 100644 --- a/port/PyAssimp/pyassimp/core.py +++ b/port/PyAssimp/pyassimp/core.py @@ -177,7 +177,7 @@ def _init(self, target = None, parent = None): "and quads. Try to load your mesh with" " a post-processing to triangulate your" " faces.") - sys.exit(1) + raise e else: # starts with 'm' but not iterable diff --git a/port/PyAssimp/scripts/quicktest.py b/port/PyAssimp/scripts/quicktest.py index 4f45b2984..1133c4689 100755 --- a/port/PyAssimp/scripts/quicktest.py +++ b/port/PyAssimp/scripts/quicktest.py @@ -9,8 +9,12 @@ data structures in detail. It just verifies whether basic loading and querying of 3d models using pyassimp works. """ +import os +import sys + +# Make the development (ie. GIT repo) version of PyAssimp available for import. +sys.path.insert(0, '..') -import sys,os import sample from pyassimp import errors From 1e9f3a802d556a7d3b63c04a25a0f5c1b31a7cc2 Mon Sep 17 00:00:00 2001 From: Oliver Nagy Date: Sun, 23 Nov 2014 15:31:35 +1100 Subject: [PATCH 173/196] PEP8 and updated docu strings. --- port/PyAssimp/scripts/quicktest.py | 31 +++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/port/PyAssimp/scripts/quicktest.py b/port/PyAssimp/scripts/quicktest.py index 1133c4689..cbeccb4ab 100755 --- a/port/PyAssimp/scripts/quicktest.py +++ b/port/PyAssimp/scripts/quicktest.py @@ -18,35 +18,36 @@ sys.path.insert(0, '..') import sample from pyassimp import errors -# paths to be walkd recursively -basepaths = [os.path.join('..','..','..','test','models'), os.path.join('..','..','..','test','models-nonbsd')] +# Paths to model files. +basepaths = [os.path.join('..', '..', '..', 'test', 'models'), + os.path.join('..', '..', '..', 'test', 'models-nonbsd')] + +# Valid extensions for 3D model files. +extensions = ['.3ds', '.x', '.lwo', '.obj', '.md5mesh', '.dxf', '.ply', '.stl', + '.dae', '.md5anim', '.lws', '.irrmesh', '.nff', '.off', '.blend'] -# file extensions to be considered -extensions = ['.3ds','.x','.lwo','.obj','.md5mesh','.dxf','.ply','.stl','.dae','.md5anim','.lws','.irrmesh','.nff','.off','.blend'] def run_tests(): - ok,err = 0,0 + ok, err = 0, 0 for path in basepaths: print("Looking for models in %s..." % path) for root, dirs, files in os.walk(path): for afile in files: - base,ext = os.path.splitext(afile) + base, ext = os.path.splitext(afile) if ext in extensions: try: - sample.main(os.path.join(root,afile)) + sample.main(os.path.join(root, afile)) ok += 1 except errors.AssimpError as error: - # assimp error is fine, this is a controlled case + # Assimp error is fine; this is a controlled case. print(error) err += 1 except Exception: - print("Error encountered while loading <%s>"%os.path.join(root,afile)) - print('** Loaded %s models, got controlled errors for %s files' % (ok,err)) + print("Error encountered while loading <%s>" + % os.path.join(root, afile)) + print('** Loaded %s models, got controlled errors for %s files' + % (ok, err)) if __name__ == '__main__': - run_tests() - - - - + run_tests() From 5c6921e2ea624c5b84b9bfee8842fae4acde0bf2 Mon Sep 17 00:00:00 2001 From: xantares Date: Thu, 27 Nov 2014 08:58:29 +0100 Subject: [PATCH 174/196] remove useless ASSIMP_BUILD_STATIC_LIB option BUILD_SHARED_LIBS must be used instead --- CMakeLists.txt | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b1c1f26e5..96614201c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -78,17 +78,11 @@ SET( ASSIMP_INCLUDE_INSTALL_DIR "include" CACHE PATH "Path the header files are installed to." ) SET( ASSIMP_BIN_INSTALL_DIR "bin" CACHE PATH "Path the tool executables are installed to." ) -option (ASSIMP_BUILD_STATIC_LIB "Build a static (.a) version of the library" OFF) SET(ASSIMP_DEBUG_POSTFIX "d" CACHE STRING "Debug Postfitx for lib, samples and tools") -# Allow the user to build a static library +# Allow the user to build a shared or static library option ( BUILD_SHARED_LIBS "Build a shared version of the library" ON ) -IF ( ASSIMP_BUILD_STATIC_LIB ) - option ( BUILD_SHARED_LIBS "Build a shared version of the library" OFF ) -ELSE ( ASSIMP_BUILD_STATIC_LIB ) - option ( BUILD_SHARED_LIBS "Build a shared version of the library" ON ) -ENDIF ( ASSIMP_BUILD_STATIC_LIB ) # Only generate this target if no higher-level project already has IF (NOT TARGET uninstall) From d13b51b467e2a246084760208b9540ae32aa18f5 Mon Sep 17 00:00:00 2001 From: xantares Date: Thu, 27 Nov 2014 09:27:46 +0100 Subject: [PATCH 175/196] Update build.sh --- port/iOS/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/port/iOS/build.sh b/port/iOS/build.sh index 96ee5c4ae..195728f2f 100755 --- a/port/iOS/build.sh +++ b/port/iOS/build.sh @@ -50,7 +50,7 @@ build_arch() rm CMakeCache.txt - cmake -G 'Unix Makefiles' -DCMAKE_TOOLCHAIN_FILE=./port/iOS/IPHONEOS_$(echo $1 | tr '[:lower:]' '[:upper:]')_TOOLCHAIN.cmake -DENABLE_BOOST_WORKAROUND=ON -DASSIMP_BUILD_STATIC_LIB=ON + cmake -G 'Unix Makefiles' -DCMAKE_TOOLCHAIN_FILE=./port/iOS/IPHONEOS_$(echo $1 | tr '[:lower:]' '[:upper:]')_TOOLCHAIN.cmake -DENABLE_BOOST_WORKAROUND=ON -DBUILD_SHARED_LIBS=OFF echo "[!] Building $1 library" From 4050f42ef17a7ebd8e8ad36b550a046a6cd0cb10 Mon Sep 17 00:00:00 2001 From: sth519 Date: Thu, 27 Nov 2014 14:37:46 +0100 Subject: [PATCH 176/196] Default to latest installed iOS SDK by default The iOS 7.1 SDK isn't available anymore in the current version of Xcode, so the script doesn't work without modification. By setting IOS_SDK_VERSION to an empty value, the script will default to a symlink* which always points to the latest installed SDK. * /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk --- port/iOS/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/port/iOS/build.sh b/port/iOS/build.sh index 96ee5c4ae..8d0031d58 100755 --- a/port/iOS/build.sh +++ b/port/iOS/build.sh @@ -6,7 +6,7 @@ BUILD_DIR="./lib/iOS" -IOS_SDK_VERSION=7.1 +IOS_SDK_VERSION= IOS_SDK_TARGET=6.0 #(iPhoneOS iPhoneSimulator) -- determined from arch IOS_SDK_DEVICE= From 26ac1e2c725a033768015b4c9097fa93c639a36f Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 29 Nov 2014 11:35:48 +0100 Subject: [PATCH 177/196] update gitignore file. Signed-off-by: Kim Kulling --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index f4940f273..55995220d 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,7 @@ test/gtest/src/gtest-stamp/gtest-build.cmake test/gtest/src/gtest-stamp/Debug/gtest-patch *.cache test/gtest/src/gtest-stamp/Debug/gtest-build +*.suo +*.lib +test/gtest/src/gtest-stamp/Debug/ +tools/assimp_view/assimp_viewer.vcxproj.user From 098ddd3a95c347f28ea4f69317054a73242adb8a Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 29 Nov 2014 11:56:39 +0100 Subject: [PATCH 178/196] make copy constructor and a assignment operator private to avoid misuse of helper class scope guard Signed-off-by: Kim Kulling --- code/BaseImporter.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/BaseImporter.h b/code/BaseImporter.h index 775add800..23dc88523 100644 --- a/code/BaseImporter.h +++ b/code/BaseImporter.h @@ -90,6 +90,10 @@ struct ScopeGuard } private: + // no copying allowed. + ScopeGuard( const ScopeGuard & ); + ScopeGuard &operator = ( const ScopeGuard & ); + T* obj; bool mdismiss; }; From 1f13158b31856af95d124d34bfec3d8925e076e9 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sat, 29 Nov 2014 12:12:32 +0100 Subject: [PATCH 179/196] fix vs2013 compiler warnings and add missing doxygen tags. Signed-off-by: Kim Kulling --- code/DefaultIOStream.h | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/code/DefaultIOStream.h b/code/DefaultIOStream.h index 6ddf94c23..3ab0669be 100644 --- a/code/DefaultIOStream.h +++ b/code/DefaultIOStream.h @@ -56,55 +56,59 @@ namespace Assimp { class DefaultIOStream : public IOStream { friend class DefaultIOSystem; -#if __ANDROID__ and __ANDROID_API__ > 9 and defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) - friend class AndroidJNIIOSystem; -#endif //__ANDROID__ and __ANDROID_API__ > 9 and defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) +#if __ANDROID__ +#if __ANDROID_API__ > 9 +#if defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) + friend class AndroidJNIIOSystem; +#endif // defined(AI_CONFIG_ANDROID_JNI_ASSIMP_MANAGER_SUPPORT) +#endif // __ANDROID_API__ > 9 +#endif // __ANDROID__ protected: - DefaultIOStream (); - DefaultIOStream (FILE* pFile, const std::string &strFilename); + DefaultIOStream(); + DefaultIOStream(FILE* pFile, const std::string &strFilename); public: /** Destructor public to allow simple deletion to close the file. */ ~DefaultIOStream (); // ------------------------------------------------------------------- - // Read from stream + /// Read from stream size_t Read(void* pvBuffer, size_t pSize, size_t pCount); // ------------------------------------------------------------------- - // Write to stream + /// Write to stream size_t Write(const void* pvBuffer, size_t pSize, size_t pCount); // ------------------------------------------------------------------- - // Seek specific position + /// Seek specific position aiReturn Seek(size_t pOffset, aiOrigin pOrigin); // ------------------------------------------------------------------- - // Get current seek position + /// Get current seek position size_t Tell() const; // ------------------------------------------------------------------- - // Get size of file + /// Get size of file size_t FileSize() const; // ------------------------------------------------------------------- - // Flush file contents + /// Flush file contents void Flush(); private: - //! File datastructure, using clib + // File datastructure, using clib FILE* mFile; - //! Filename + // Filename std::string mFilename; - //! Cached file size + // Cached file size mutable size_t cachedSize; }; From 926b7e98cc0abb09b5519cab840025aca92b82cc Mon Sep 17 00:00:00 2001 From: Wolfgang Herget Date: Mon, 1 Dec 2014 18:08:21 +0100 Subject: [PATCH 180/196] Tristripped version of cube.dae generated using openscenegraph. Command line used: OSG_OPTIMIZER="TRISTRIP_GEOMETRY" osgconv cube.dae cube_tristrips.dae --- test/models/Collada/cube_tristrips.dae | 167 +++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 test/models/Collada/cube_tristrips.dae diff --git a/test/models/Collada/cube_tristrips.dae b/test/models/Collada/cube_tristrips.dae new file mode 100644 index 000000000..83909045a --- /dev/null +++ b/test/models/Collada/cube_tristrips.dae @@ -0,0 +1,167 @@ + + + + + 2014-12-01T18:05:27Z + 2014-12-01T18:05:27Z + + Z_UP + + + + + + 1 0 0 90 + + 0.838671 0.205746 -0.504282 -427.749 0 0.925901 0.377766 333.855 0.544639 -0.316822 0.776526 655.017 0 0 0 1 + + + + 1 0 0 -500 0 1 0 1000 0 0 1 400 0 0 0 1 + + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + 0.838671 0.205746 -0.504282 -427.749 0 0.925901 0.377766 333.855 0.544639 -0.316822 0.776526 655.017 0 0 0 1 + + + + 1 0 0 3 0 1 0 4 0 0 1 10 0 0 0 1 + + + + + + + + + + + + 37.8493 + 1 + 1 + 1000 + + + + + + + + + 37.8501 + 1 + 1 + 1000 + + + + + + + + + + + 1 1 1 + 1 + 0 + 0 + + + + + + + + 1 1 1 + 1 + 0 + 0 + + + + + + + + + -50 50 50 -50 50 50 -50 50 50 50 50 50 50 50 50 50 50 50 -50 -50 50 -50 -50 50 -50 -50 50 50 -50 50 50 -50 50 50 -50 50 -50 50 -50 -50 50 -50 -50 50 -50 50 50 -50 50 50 -50 50 50 -50 -50 -50 -50 -50 -50 -50 -50 -50 -50 50 -50 -50 50 -50 -50 50 -50 -50 + + + + + + + + + + 0 0 1 0 1 0 -1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 -1 0 -1 0 0 0 0 1 0 -1 0 1 0 0 0 1 0 -1 0 0 0 0 -1 0 1 0 1 0 0 0 0 -1 0 -1 0 -1 0 0 0 0 -1 0 -1 0 1 0 0 0 0 -1 + + + + + + + + + + + + + + +

    6 6 9 9 0 0 3 3

    +

    12 12 1 1 15 15 4 4

    +

    14 14 17 17 20 20 23 23

    +

    5 5 11 11 16 16 22 22

    +

    13 13 19 19 2 2 8 8

    +

    21 21 10 10 18 18 7 7

    + + + + + + + + + + + + + + + + 0 0 0 1 + + + 0 0 0 1 + + + 0.137255 0.403922 0.870588 1 + + + 0.5 0.5 0.5 1 + + + 16 + + + + + + + + + + From 7a31a68cfc79911e0901078fb38d86130d71a554 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 1 Dec 2014 20:34:15 +0100 Subject: [PATCH 181/196] adapt c-api to get ImporterDesc for a given loader ( see https://github.com/assimp/assimp/issues/412 ). Signed-off-by: Kim Kulling --- code/Assimp.cpp | 25 ++++++++++++++++++++++++- code/BaseImporter.h | 1 + include/assimp/cimport.h | 2 +- include/assimp/importerdesc.h | 2 ++ test/CMakeLists.txt | 3 ++- 5 files changed, 30 insertions(+), 3 deletions(-) diff --git a/code/Assimp.cpp b/code/Assimp.cpp index b11951854..89b62d110 100644 --- a/code/Assimp.cpp +++ b/code/Assimp.cpp @@ -47,6 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "GenericProperty.h" #include "CInterfaceIOWrapper.h" +#include "../include/assimp/importerdesc.h" #include "Importer.h" // ------------------------------------------------------------------------------------------------ @@ -84,7 +85,11 @@ namespace Assimp /** Verbose logging active or not? */ static aiBool gVerboseLogging = false; -} + + /** will return all registered importers. */ + void GetImporterInstanceList(std::vector< BaseImporter* >& out); + +} // namespace assimp #ifndef ASSIMP_BUILD_SINGLETHREADED @@ -606,4 +611,22 @@ ASSIMP_API void aiIdentityMatrix4( *mat = aiMatrix4x4(); } +// ------------------------------------------------------------------------------------------------ +ASSIMP_API C_STRUCT const aiImporterDesc* aiGetImporterDesc( const char *extension ) { + if( NULL == extension ) { + return NULL; + } + const aiImporterDesc *desc( NULL ); + std::vector< BaseImporter* > out; + GetImporterInstanceList( out ); + for( size_t i = 0; i < out.size(); ++i ) { + if( 0 == strncmp( out[ i ]->GetInfo()->mFileExtensions, extension, strlen( extension ) ) ) { + desc = out[ i ]->GetInfo(); + break; + } + } + return desc; +} + +// ------------------------------------------------------------------------------------------------ diff --git a/code/BaseImporter.h b/code/BaseImporter.h index 23dc88523..c12ff256e 100644 --- a/code/BaseImporter.h +++ b/code/BaseImporter.h @@ -91,6 +91,7 @@ struct ScopeGuard private: // no copying allowed. + ScopeGuard(); ScopeGuard( const ScopeGuard & ); ScopeGuard &operator = ( const ScopeGuard & ); diff --git a/include/assimp/cimport.h b/include/assimp/cimport.h index adc27502b..9080c16b6 100644 --- a/include/assimp/cimport.h +++ b/include/assimp/cimport.h @@ -247,7 +247,7 @@ ASSIMP_API C_STRUCT aiLogStream aiGetPredefinedLogStream( * Attaching a log stream can slightly reduce Assimp's overall import * performance. Multiple log-streams can be attached. * @param stream Describes the new log stream. - * @note To ensure proepr destruction of the logging system, you need to manually + * @note To ensure proper destruction of the logging system, you need to manually * call aiDetachLogStream() on every single log stream you attach. * Alternatively (for the lazy folks) #aiDetachAllLogStreams is provided. */ diff --git a/include/assimp/importerdesc.h b/include/assimp/importerdesc.h index 32b0013ae..2f888b5aa 100644 --- a/include/assimp/importerdesc.h +++ b/include/assimp/importerdesc.h @@ -133,4 +133,6 @@ struct aiImporterDesc const char* mFileExtensions; }; +ASSIMP_API C_STRUCT const aiImporterDesc* aiGetImporterDesc( const char *extension ); + #endif diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index d9407634d..8c03192ac 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -16,7 +16,8 @@ SOURCE_GROUP( unit FILES ) SET( TEST_SRCS - unit/utFastAtof.cpp + unit/AssimpAPITest.cpp + unit/utFastAtof.cpp unit/utFindDegenerates.cpp unit/utFindInvalidData.cpp unit/utFixInfacingNormals.cpp From 951431db9422e3da1079d97f8aaefe5c03b8b6fd Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 1 Dec 2014 21:27:48 +0100 Subject: [PATCH 182/196] add missing documentation. Signed-off-by: Kim Kulling --- include/assimp/importerdesc.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/assimp/importerdesc.h b/include/assimp/importerdesc.h index 2f888b5aa..5cc9ef302 100644 --- a/include/assimp/importerdesc.h +++ b/include/assimp/importerdesc.h @@ -133,6 +133,12 @@ struct aiImporterDesc const char* mFileExtensions; }; +/** \brief Returns the Importer description for a given extension. + +Will return a NULL-pointer if no assigned importer desc. was found for the given extension + \param extension [in] The extension to look for + \return A pointer showing to the ImporterDesc, \see aiImporterDesc. +*/ ASSIMP_API C_STRUCT const aiImporterDesc* aiGetImporterDesc( const char *extension ); #endif From 15e017500766ee52364740736b9921fdd8207108 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Mon, 1 Dec 2014 23:35:57 +0100 Subject: [PATCH 183/196] fix compiler warning. Signed-off-by: Kim Kulling --- test/unit/utFastAtof.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/utFastAtof.cpp b/test/unit/utFastAtof.cpp index f32478b55..4dfbe0d6a 100644 --- a/test/unit/utFastAtof.cpp +++ b/test/unit/utFastAtof.cpp @@ -22,7 +22,7 @@ protected: template static void RunTest(AtofFunc atof_func) { - const Real kEps = 1e-5; + const Real kEps = 1e-5f; #define TEST_CASE(NUM) EXPECT_NEAR(static_cast(NUM), atof_func(#NUM), kEps) #define TEST_CASE_NAN(NUM) EXPECT_TRUE(IsNan(atof_func(#NUM))) From 96661ae4cda3099d80282c06ee2ed7e27e49928d Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 2 Dec 2014 08:51:20 +0100 Subject: [PATCH 184/196] fix the build --- test/CMakeLists.txt | 56 ++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8c03192ac..ffcedcd3a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -16,40 +16,40 @@ SOURCE_GROUP( unit FILES ) SET( TEST_SRCS - unit/AssimpAPITest.cpp +# unit/AssimpAPITest.cpp unit/utFastAtof.cpp - unit/utFindDegenerates.cpp - unit/utFindInvalidData.cpp - unit/utFixInfacingNormals.cpp - unit/utGenNormals.cpp - unit/utImporter.cpp - unit/utImproveCacheLocality.cpp - unit/utJoinVertices.cpp - unit/utLimitBoneWeights.cpp - unit/utMaterialSystem.cpp - unit/utPretransformVertices.cpp - unit/utRemoveComments.cpp - unit/utRemoveComponent.cpp - unit/utRemoveRedundantMaterials.cpp - unit/utScenePreprocessor.cpp - unit/utSharedPPData.cpp - unit/utSortByPType.cpp - unit/utSplitLargeMeshes.cpp - unit/utTargetAnimation.cpp - unit/utTextureTransform.cpp - unit/utTriangulate.cpp - unit/utVertexTriangleAdjacency.cpp - unit/utNoBoostTest.cpp + unit/utFindDegenerates.cpp + unit/utFindInvalidData.cpp + unit/utFixInfacingNormals.cpp + unit/utGenNormals.cpp + unit/utImporter.cpp + unit/utImproveCacheLocality.cpp + unit/utJoinVertices.cpp + unit/utLimitBoneWeights.cpp + unit/utMaterialSystem.cpp + unit/utPretransformVertices.cpp + unit/utRemoveComments.cpp + unit/utRemoveComponent.cpp + unit/utRemoveRedundantMaterials.cpp + unit/utScenePreprocessor.cpp + unit/utSharedPPData.cpp + unit/utSortByPType.cpp + unit/utSplitLargeMeshes.cpp + unit/utTargetAnimation.cpp + unit/utTextureTransform.cpp + unit/utTriangulate.cpp + unit/utVertexTriangleAdjacency.cpp + unit/utNoBoostTest.cpp ) SOURCE_GROUP( tests FILES ${TEST_SRCS} ) add_executable( unit - unit/CCompilerTest.c - unit/Main.cpp - unit/UnitTestPCH.cpp - unit/UnitTestPCH.h - ${TEST_SRCS} + unit/CCompilerTest.c + unit/Main.cpp + unit/UnitTestPCH.cpp + unit/UnitTestPCH.h + ${TEST_SRCS} ) SET_PROPERTY( TARGET assimp PROPERTY DEBUG_POSTFIX ${ASSIMP_DEBUG_POSTFIX} ) From 6c7b623d1bbb47f07b3dc39780fff6b8bf28ca06 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 3 Dec 2014 21:23:27 +0100 Subject: [PATCH 185/196] add missing unittest, Signed-off-by: Kim Kulling --- test/CMakeLists.txt | 2 +- test/unit/AssimpAPITest.cpp | 57 +++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 test/unit/AssimpAPITest.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ffcedcd3a..5eb1f1b90 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -16,7 +16,7 @@ SOURCE_GROUP( unit FILES ) SET( TEST_SRCS -# unit/AssimpAPITest.cpp + unit/AssimpAPITest.cpp unit/utFastAtof.cpp unit/utFindDegenerates.cpp unit/utFindInvalidData.cpp diff --git a/test/unit/AssimpAPITest.cpp b/test/unit/AssimpAPITest.cpp new file mode 100644 index 000000000..21837ffda --- /dev/null +++ b/test/unit/AssimpAPITest.cpp @@ -0,0 +1,57 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2014, assimp team + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" +#include + +using namespace Assimp; + +class AssimpAPITest : public ::testing::Test { + +}; + +TEST_F( AssimpAPITest, aiGetImporterDescTest ) { + const aiImporterDesc *desc( NULL ); + desc = aiGetImporterDesc( NULL ); + EXPECT_EQ( NULL, desc ); + + desc = aiGetImporterDesc( "obj" ); + EXPECT_TRUE( NULL != desc ); +} From 4550279629013100ddfec918d323e716d0de484a Mon Sep 17 00:00:00 2001 From: Andreas Henne Date: Fri, 5 Dec 2014 17:25:18 +0100 Subject: [PATCH 186/196] Added binary ply exporter. --- code/Exporter.cpp | 4 ++ code/PlyExporter.cpp | 103 ++++++++++++++++++++++++++++++++++++++++--- code/PlyExporter.h | 5 ++- 3 files changed, 105 insertions(+), 7 deletions(-) diff --git a/code/Exporter.cpp b/code/Exporter.cpp index 846e5f8bb..72b4bffbf 100644 --- a/code/Exporter.cpp +++ b/code/Exporter.cpp @@ -78,6 +78,7 @@ void ExportSceneObj(const char*,IOSystem*, const aiScene*); void ExportSceneSTL(const char*,IOSystem*, const aiScene*); void ExportSceneSTLBinary(const char*,IOSystem*, const aiScene*); void ExportScenePly(const char*,IOSystem*, const aiScene*); +void ExportScenePlyBinary(const char*, IOSystem*, const aiScene*); void ExportScene3DS(const char*, IOSystem*, const aiScene*); void ExportSceneAssbin(const char*, IOSystem*, const aiScene*); void ExportSceneAssxml(const char*, IOSystem*, const aiScene*); @@ -113,6 +114,9 @@ Exporter::ExportFormatEntry gExporters[] = Exporter::ExportFormatEntry( "ply", "Stanford Polygon Library", "ply" , &ExportScenePly, aiProcess_PreTransformVertices ), + Exporter::ExportFormatEntry("plyb", "Stanford Polygon Library Binary", "ply", &ExportScenePlyBinary, + aiProcess_PreTransformVertices + ), #endif #ifndef ASSIMP_BUILD_NO_3DS_EXPORTER diff --git a/code/PlyExporter.cpp b/code/PlyExporter.cpp index e78cfd964..6ddefdb17 100644 --- a/code/PlyExporter.cpp +++ b/code/PlyExporter.cpp @@ -56,7 +56,7 @@ void ExportScenePly(const char* pFile,IOSystem* pIOSystem, const aiScene* pScene PlyExporter exporter(pFile, pScene); // we're still here - export successfully completed. Write the file. - boost::scoped_ptr outfile (pIOSystem->Open(pFile,"wt")); + boost::scoped_ptr outfile (pIOSystem->Open(pFile,"wt")); if(outfile == NULL) { throw DeadlyExportError("could not open output .ply file: " + std::string(pFile)); } @@ -64,6 +64,20 @@ void ExportScenePly(const char* pFile,IOSystem* pIOSystem, const aiScene* pScene outfile->Write( exporter.mOutput.str().c_str(), static_cast(exporter.mOutput.tellp()),1); } +void ExportScenePlyBinary(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene) +{ + // invoke the exporter + PlyExporter exporter(pFile, pScene, true); + + // we're still here - export successfully completed. Write the file. + boost::scoped_ptr outfile(pIOSystem->Open(pFile, "wb")); + if (outfile == NULL) { + throw DeadlyExportError("could not open output .ply file: " + std::string(pFile)); + } + + outfile->Write(exporter.mOutput.str().c_str(), static_cast(exporter.mOutput.tellp()), 1); +} + } // end of namespace Assimp #define PLY_EXPORT_HAS_NORMALS 0x1 @@ -72,7 +86,7 @@ void ExportScenePly(const char* pFile,IOSystem* pIOSystem, const aiScene* pScene #define PLY_EXPORT_HAS_COLORS (PLY_EXPORT_HAS_TEXCOORDS << AI_MAX_NUMBER_OF_TEXTURECOORDS) // ------------------------------------------------------------------------------------------------ -PlyExporter :: PlyExporter(const char* _filename, const aiScene* pScene) +PlyExporter::PlyExporter(const char* _filename, const aiScene* pScene, bool binary) : filename(_filename) , pScene(pScene) , endl("\n") @@ -102,7 +116,18 @@ PlyExporter :: PlyExporter(const char* _filename, const aiScene* pScene) } mOutput << "ply" << endl; - mOutput << "format ascii 1.0" << endl; + if (binary) + { +#if (defined AI_BUILD_BIG_ENDIAN) + mOutput << "format binary_big_endian 1.0" << endl; +#else + mOutput << "format binary_little_endian 1.0" << endl; +#endif + } + else + { + mOutput << "format ascii 1.0" << endl; + } mOutput << "comment Created by Open Asset Import Library - http://assimp.sf.net (v" << aiGetVersionMajor() << '.' << aiGetVersionMinor() << '.' << aiGetVersionRevision() << ")" << endl; @@ -160,13 +185,19 @@ PlyExporter :: PlyExporter(const char* _filename, const aiScene* pScene) mOutput << "element face " << faces << endl; mOutput << "property list uint uint vertex_index" << endl; - mOutput << "end_header" << endl; + mOutput << "end_header" << endl; for (unsigned int i = 0; i < pScene->mNumMeshes; ++i) { - WriteMeshVerts(pScene->mMeshes[i],components); + if (binary) + WriteMeshVertsBinary(pScene->mMeshes[i], components); + else + WriteMeshVerts(pScene->mMeshes[i], components); } for (unsigned int i = 0, ofs = 0; i < pScene->mNumMeshes; ++i) { - WriteMeshIndices(pScene->mMeshes[i],ofs); + if (binary) + WriteMeshIndicesBinary(pScene->mMeshes[i], ofs); + else + WriteMeshIndices(pScene->mMeshes[i], ofs); ofs += pScene->mMeshes[i]->mNumVertices; } } @@ -236,6 +267,54 @@ void PlyExporter :: WriteMeshVerts(const aiMesh* m, unsigned int components) } } +// ------------------------------------------------------------------------------------------------ +void PlyExporter::WriteMeshVertsBinary(const aiMesh* m, unsigned int components) +{ + aiVector3D defaultNormal(0, 0, 0); + aiVector2D defaultUV(-1, -1); + aiColor4D defaultColor(-1, -1, -1, -1); + for (unsigned int i = 0; i < m->mNumVertices; ++i) { + mOutput.write(reinterpret_cast(&m->mVertices[i].x), 12); + if (components & PLY_EXPORT_HAS_NORMALS) { + if (m->HasNormals()) { + mOutput.write(reinterpret_cast(&m->mNormals[i].x), 12); + } + else { + mOutput.write(reinterpret_cast(&defaultNormal.x), 12); + } + } + + for (unsigned int n = PLY_EXPORT_HAS_TEXCOORDS, c = 0; (components & n) && c != AI_MAX_NUMBER_OF_TEXTURECOORDS; n <<= 1, ++c) { + if (m->HasTextureCoords(c)) { + mOutput.write(reinterpret_cast(&m->mTextureCoords[c][i].x), 6); + } + else { + mOutput.write(reinterpret_cast(&defaultUV.x), 6); + } + } + + for (unsigned int n = PLY_EXPORT_HAS_COLORS, c = 0; (components & n) && c != AI_MAX_NUMBER_OF_COLOR_SETS; n <<= 1, ++c) { + if (m->HasVertexColors(c)) { + mOutput.write(reinterpret_cast(&m->mColors[c][i].r), 16); + } + else { + mOutput.write(reinterpret_cast(&defaultColor.r), 16); + } + } + + if (components & PLY_EXPORT_HAS_TANGENTS_BITANGENTS) { + if (m->HasTangentsAndBitangents()) { + mOutput.write(reinterpret_cast(&m->mTangents[i].x), 12); + mOutput.write(reinterpret_cast(&m->mBitangents[i].x), 12); + } + else { + mOutput.write(reinterpret_cast(&defaultNormal.x), 12); + mOutput.write(reinterpret_cast(&defaultNormal.x), 12); + } + } + } +} + // ------------------------------------------------------------------------------------------------ void PlyExporter :: WriteMeshIndices(const aiMesh* m, unsigned int offset) { @@ -248,4 +327,16 @@ void PlyExporter :: WriteMeshIndices(const aiMesh* m, unsigned int offset) } } +void PlyExporter::WriteMeshIndicesBinary(const aiMesh* m, unsigned int offset) +{ + for (unsigned int i = 0; i < m->mNumFaces; ++i) { + const aiFace& f = m->mFaces[i]; + mOutput.write(reinterpret_cast(&f.mNumIndices), 4); + for (unsigned int c = 0; c < f.mNumIndices; ++c) { + unsigned int index = f.mIndices[c] + offset; + mOutput.write(reinterpret_cast(&index), 4); + } + } +} + #endif diff --git a/code/PlyExporter.h b/code/PlyExporter.h index a0a0e9091..522821b1a 100644 --- a/code/PlyExporter.h +++ b/code/PlyExporter.h @@ -59,7 +59,7 @@ class PlyExporter { public: /// Constructor for a specific scene to export - PlyExporter(const char* filename, const aiScene* pScene); + PlyExporter(const char* filename, const aiScene* pScene, bool binary = false); public: @@ -71,6 +71,9 @@ private: void WriteMeshVerts(const aiMesh* m, unsigned int components); void WriteMeshIndices(const aiMesh* m, unsigned int ofs); + void WriteMeshVertsBinary(const aiMesh* m, unsigned int components); + void WriteMeshIndicesBinary(const aiMesh* m, unsigned int offset); + private: const std::string filename; From 33f9745b627c2dce59e0fa92eef746b0975efdd1 Mon Sep 17 00:00:00 2001 From: Andreas Henne Date: Fri, 5 Dec 2014 19:40:09 +0100 Subject: [PATCH 187/196] Formatting changes. --- code/Exporter.cpp | 4 ++-- code/PlyExporter.cpp | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/Exporter.cpp b/code/Exporter.cpp index 72b4bffbf..9cc96e452 100644 --- a/code/Exporter.cpp +++ b/code/Exporter.cpp @@ -114,8 +114,8 @@ Exporter::ExportFormatEntry gExporters[] = Exporter::ExportFormatEntry( "ply", "Stanford Polygon Library", "ply" , &ExportScenePly, aiProcess_PreTransformVertices ), - Exporter::ExportFormatEntry("plyb", "Stanford Polygon Library Binary", "ply", &ExportScenePlyBinary, - aiProcess_PreTransformVertices + Exporter::ExportFormatEntry( "plyb", "Stanford Polygon Library Binary", "ply", &ExportScenePlyBinary, + aiProcess_PreTransformVertices ), #endif diff --git a/code/PlyExporter.cpp b/code/PlyExporter.cpp index 6ddefdb17..bab523f23 100644 --- a/code/PlyExporter.cpp +++ b/code/PlyExporter.cpp @@ -56,7 +56,7 @@ void ExportScenePly(const char* pFile,IOSystem* pIOSystem, const aiScene* pScene PlyExporter exporter(pFile, pScene); // we're still here - export successfully completed. Write the file. - boost::scoped_ptr outfile (pIOSystem->Open(pFile,"wt")); + boost::scoped_ptr outfile (pIOSystem->Open(pFile,"wt")); if(outfile == NULL) { throw DeadlyExportError("could not open output .ply file: " + std::string(pFile)); } @@ -67,7 +67,7 @@ void ExportScenePly(const char* pFile,IOSystem* pIOSystem, const aiScene* pScene void ExportScenePlyBinary(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene) { // invoke the exporter - PlyExporter exporter(pFile, pScene, true); + PlyExporter exporter(pFile, pScene, true); // we're still here - export successfully completed. Write the file. boost::scoped_ptr outfile(pIOSystem->Open(pFile, "wb")); @@ -185,7 +185,7 @@ PlyExporter::PlyExporter(const char* _filename, const aiScene* pScene, bool bina mOutput << "element face " << faces << endl; mOutput << "property list uint uint vertex_index" << endl; - mOutput << "end_header" << endl; + mOutput << "end_header" << endl; for (unsigned int i = 0; i < pScene->mNumMeshes; ++i) { if (binary) @@ -203,7 +203,7 @@ PlyExporter::PlyExporter(const char* _filename, const aiScene* pScene, bool bina } // ------------------------------------------------------------------------------------------------ -void PlyExporter :: WriteMeshVerts(const aiMesh* m, unsigned int components) +void PlyExporter::WriteMeshVerts(const aiMesh* m, unsigned int components) { for (unsigned int i = 0; i < m->mNumVertices; ++i) { mOutput << @@ -316,7 +316,7 @@ void PlyExporter::WriteMeshVertsBinary(const aiMesh* m, unsigned int components) } // ------------------------------------------------------------------------------------------------ -void PlyExporter :: WriteMeshIndices(const aiMesh* m, unsigned int offset) +void PlyExporter::WriteMeshIndices(const aiMesh* m, unsigned int offset) { for (unsigned int i = 0; i < m->mNumFaces; ++i) { const aiFace& f = m->mFaces[i]; From 6829af0dd69b955f0a6416bf5847f617a35eb607 Mon Sep 17 00:00:00 2001 From: enkore Date: Sat, 6 Dec 2014 15:52:26 +0100 Subject: [PATCH 188/196] Fix broken ant build --- port/jassimp/jassimp/src/jassimp/JaiDebug.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/port/jassimp/jassimp/src/jassimp/JaiDebug.java b/port/jassimp/jassimp/src/jassimp/JaiDebug.java index 0f91ce662..f74a8967b 100644 --- a/port/jassimp/jassimp/src/jassimp/JaiDebug.java +++ b/port/jassimp/jassimp/src/jassimp/JaiDebug.java @@ -67,7 +67,7 @@ public final class JaiDebug { return; } - for (int i = 0; i < mesh.getNumVertives(); i++) { + for (int i = 0; i < mesh.getNumVertices(); i++) { System.out.println("[" + mesh.getPositionX(i) + ", " + mesh.getPositionY(i) + ", " + @@ -119,7 +119,7 @@ public final class JaiDebug { return; } - for (int i = 0; i < mesh.getNumVertives(); i++) { + for (int i = 0; i < mesh.getNumVertices(); i++) { System.out.println("[" + mesh.getColorR(i, colorset) + ", " + mesh.getColorG(i, colorset) + ", " + @@ -142,7 +142,7 @@ public final class JaiDebug { return; } - for (int i = 0; i < mesh.getNumVertives(); i++) { + for (int i = 0; i < mesh.getNumVertices(); i++) { int numComponents = mesh.getNumUVComponents(coords); System.out.print("[" + mesh.getTexCoordU(i, coords)); From 6b4cbeea4031d10284926bbc22cb7a0541e6efa2 Mon Sep 17 00:00:00 2001 From: enkore Date: Sat, 6 Dec 2014 15:52:44 +0100 Subject: [PATCH 189/196] Fix outright compiler error in jassimp.cpp --- port/jassimp/jassimp-native/src/jassimp.cpp | 4 +++- port/jassimp/jassimp-native/src/jassimp.h | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/port/jassimp/jassimp-native/src/jassimp.cpp b/port/jassimp/jassimp-native/src/jassimp.cpp index ae64ad191..db803f106 100644 --- a/port/jassimp/jassimp-native/src/jassimp.cpp +++ b/port/jassimp/jassimp-native/src/jassimp.cpp @@ -1379,6 +1379,7 @@ JNIEXPORT jobject JNICALL Java_jassimp_Jassimp_aiImportFile goto end; error: + { jclass exception = env->FindClass("java/io/IOException"); if (NULL == exception) @@ -1390,6 +1391,7 @@ error: env->ThrowNew(exception, aiGetErrorString()); lprintf("problem detected\n"); + } end: /* @@ -1405,4 +1407,4 @@ end: lprintf("return from native\n"); return jScene; -} \ No newline at end of file +} diff --git a/port/jassimp/jassimp-native/src/jassimp.h b/port/jassimp/jassimp-native/src/jassimp.h index 4eaec5541..6f90bb3b6 100644 --- a/port/jassimp/jassimp-native/src/jassimp.h +++ b/port/jassimp/jassimp-native/src/jassimp.h @@ -7,8 +7,6 @@ #ifdef __cplusplus extern "C" { #endif -/* Inaccessible static: BUILTIN */ -/* Inaccessible static: s_wrapperProvider */ /* * Class: jassimp_Jassimp * Method: getErrorString From fdf78fc13b1865337ecc968d776a7530d92f40ab Mon Sep 17 00:00:00 2001 From: enkore Date: Sat, 6 Dec 2014 15:53:56 +0100 Subject: [PATCH 190/196] README: Add a few lines on how to compile jassimp-native --- port/jassimp/README | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/port/jassimp/README b/port/jassimp/README index be78db404..1ce9acc2b 100644 --- a/port/jassimp/README +++ b/port/jassimp/README @@ -15,7 +15,12 @@ application examples using this wrapper How To Build ------------ - I) native library + I) native library, for example by issuing this command in jassimp-native/src: + + $ gcc jassimp.cpp -I/usr/lib/jvm/default/include/ \ + -I/usr/lib/jvm/default/include/linux -lassimp -shared -fPIC -o libjassimp.so + + libjassimp.so is required at runtime and must be located in java.library.path. II) Java binding The java library is built using ant. Executing "ant" in the port/jassimp From da93f5eb78854e2d2deb400edff365bc931542c2 Mon Sep 17 00:00:00 2001 From: sth Date: Wed, 10 Dec 2014 19:37:18 +0100 Subject: [PATCH 191/196] Update README.md for the iOS port Just a small update to reflect the current state of the iOS port. --- port/iOS/README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/port/iOS/README.md b/port/iOS/README.md index 836c40d16..ca5632a1f 100644 --- a/port/iOS/README.md +++ b/port/iOS/README.md @@ -1,4 +1,4 @@ -# assimp for iOS-SDK 7.1 +# assimp for iOS (deployment target 6.0+, 32/64bit) Builds assimp libraries for several iOS CPU architectures at once, and outputs a fat binary from the result. @@ -28,3 +28,12 @@ Supported architectures/devices: - ARMv7 - ARMv7-s - ARM64 + +### Building with older iOS SDK versions +The script should work out of the box for the iOS 8.x SDKs and probably newer releases as well. +If you are using SDK version 7.x or older, you need to specify the exact SDK version inside **build.sh**, for example: +``` +IOS_SDK_VERSION=7.1 +``` +### Optimization +By default, no compiler optimizations are specified inside the build script. For an optimized build, add the corresponding flags to the CFLAGS definition inside **build.sh**. From ab7754ab2a912d3b6b777cc6b1506b476cc70411 Mon Sep 17 00:00:00 2001 From: Andreas Henne Date: Thu, 11 Dec 2014 23:05:09 +0100 Subject: [PATCH 192/196] Code style changes. --- code/Exporter.cpp | 2 +- code/PlyExporter.cpp | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/code/Exporter.cpp b/code/Exporter.cpp index 9cc96e452..238430fa6 100644 --- a/code/Exporter.cpp +++ b/code/Exporter.cpp @@ -114,7 +114,7 @@ Exporter::ExportFormatEntry gExporters[] = Exporter::ExportFormatEntry( "ply", "Stanford Polygon Library", "ply" , &ExportScenePly, aiProcess_PreTransformVertices ), - Exporter::ExportFormatEntry( "plyb", "Stanford Polygon Library Binary", "ply", &ExportScenePlyBinary, + Exporter::ExportFormatEntry( "plyb", "Stanford Polygon Library (binary)", "ply", &ExportScenePlyBinary, aiProcess_PreTransformVertices ), #endif diff --git a/code/PlyExporter.cpp b/code/PlyExporter.cpp index bab523f23..a214d1371 100644 --- a/code/PlyExporter.cpp +++ b/code/PlyExporter.cpp @@ -116,16 +116,14 @@ PlyExporter::PlyExporter(const char* _filename, const aiScene* pScene, bool bina } mOutput << "ply" << endl; - if (binary) - { + if (binary) { #if (defined AI_BUILD_BIG_ENDIAN) mOutput << "format binary_big_endian 1.0" << endl; #else mOutput << "format binary_little_endian 1.0" << endl; #endif } - else - { + else { mOutput << "format ascii 1.0" << endl; } mOutput << "comment Created by Open Asset Import Library - http://assimp.sf.net (v" @@ -188,16 +186,20 @@ PlyExporter::PlyExporter(const char* _filename, const aiScene* pScene, bool bina mOutput << "end_header" << endl; for (unsigned int i = 0; i < pScene->mNumMeshes; ++i) { - if (binary) + if (binary) { WriteMeshVertsBinary(pScene->mMeshes[i], components); - else + } + else { WriteMeshVerts(pScene->mMeshes[i], components); + } } for (unsigned int i = 0, ofs = 0; i < pScene->mNumMeshes; ++i) { - if (binary) + if (binary) { WriteMeshIndicesBinary(pScene->mMeshes[i], ofs); - else + } + else { WriteMeshIndices(pScene->mMeshes[i], ofs); + } ofs += pScene->mMeshes[i]->mNumVertices; } } @@ -205,6 +207,8 @@ PlyExporter::PlyExporter(const char* _filename, const aiScene* pScene, bool bina // ------------------------------------------------------------------------------------------------ void PlyExporter::WriteMeshVerts(const aiMesh* m, unsigned int components) { + // If a component (for instance normal vectors) is present in at least one mesh in the scene, + // then default values are written for meshes that do not contain this component. for (unsigned int i = 0; i < m->mNumVertices; ++i) { mOutput << m->mVertices[i].x << " " << @@ -270,6 +274,8 @@ void PlyExporter::WriteMeshVerts(const aiMesh* m, unsigned int components) // ------------------------------------------------------------------------------------------------ void PlyExporter::WriteMeshVertsBinary(const aiMesh* m, unsigned int components) { + // If a component (for instance normal vectors) is present in at least one mesh in the scene, + // then default values are written for meshes that do not contain this component. aiVector3D defaultNormal(0, 0, 0); aiVector2D defaultUV(-1, -1); aiColor4D defaultColor(-1, -1, -1, -1); From b6cc8d6da99cb975fd61da7de061d2e179040ec8 Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Fri, 12 Dec 2014 02:43:15 +0100 Subject: [PATCH 193/196] Add link to AssimpPascal headers See https://github.com/ev1313/Pascal-Assimp-Headers --- port/AssimpPascal/Readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 port/AssimpPascal/Readme.md diff --git a/port/AssimpPascal/Readme.md b/port/AssimpPascal/Readme.md new file mode 100644 index 000000000..9dfc652b8 --- /dev/null +++ b/port/AssimpPascal/Readme.md @@ -0,0 +1 @@ +See the [AssimpPascal headers here](https://github.com/ev1313/Pascal-Assimp-Headers) (by Tim Blume / ev1313). From 7694561121cb1b2503c909d37c77633939968050 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 16 Dec 2014 22:34:24 +0100 Subject: [PATCH 194/196] remove dead code from main CMakeLists.txt. Signed-off-by: Kim Kulling --- CMakeLists.txt | 254 ++++++++++++++++++++++++------------------------- 1 file changed, 124 insertions(+), 130 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 96614201c..401b4229a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,27 +13,27 @@ set(ASSIMP_PACKAGE_VERSION "0" CACHE STRING "the package-specific version used f # Get the current working branch execute_process( - COMMAND git rev-parse --abbrev-ref HEAD - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - OUTPUT_VARIABLE GIT_BRANCH - OUTPUT_STRIP_TRAILING_WHITESPACE + COMMAND git rev-parse --abbrev-ref HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_BRANCH + OUTPUT_STRIP_TRAILING_WHITESPACE ) # Get the latest abbreviated commit hash of the working branch execute_process( - COMMAND git log -1 --format=%h - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - OUTPUT_VARIABLE GIT_COMMIT_HASH - OUTPUT_STRIP_TRAILING_WHITESPACE + COMMAND git log -1 --format=%h + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_COMMIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE ) if(NOT GIT_COMMIT_HASH) - set(GIT_COMMIT_HASH 0) + set(GIT_COMMIT_HASH 0) endif(NOT GIT_COMMIT_HASH) configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/revision.h.in - ${CMAKE_CURRENT_BINARY_DIR}/revision.h + ${CMAKE_CURRENT_SOURCE_DIR}/revision.h.in + ${CMAKE_CURRENT_BINARY_DIR}/revision.h ) include_directories(${CMAKE_CURRENT_BINARY_DIR}) @@ -48,13 +48,13 @@ set(ASSIMP_LIBRARY_SUFFIX "" CACHE STRING "Suffix to append to library names") option(ASSIMP_ANDROID_JNIIOSYSTEM "Android JNI IOSystem support is active" OFF) if((CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) AND NOT CMAKE_COMPILER_IS_MINGW) - add_definitions(-fPIC) # this is a very important switch and some libraries seem now to have it.... - # hide all not-exported symbols - add_definitions( -fvisibility=hidden -Wall ) + add_definitions(-fPIC) # this is a very important switch and some libraries seem now to have it.... + # hide all not-exported symbols + add_definitions( -fvisibility=hidden -Wall ) elseif(MSVC) - # enable multi-core compilation with MSVC - add_definitions(/MP) -endif() + # enable multi-core compilation with MSVC + add_definitions(/MP) + endif() INCLUDE (FindPkgConfig) INCLUDE_DIRECTORIES( include ) @@ -66,18 +66,18 @@ INCLUDE (PrecompiledHeader) # source tree. During an out-of-source build, however, do not litter this # directory, since that is probably what the user wanted to avoid. IF ( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR ) - SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_HOME_DIRECTORY}/lib" ) - SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_HOME_DIRECTORY}/lib" ) - SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_HOME_DIRECTORY}/bin" ) + SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_HOME_DIRECTORY}/lib" ) + SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_HOME_DIRECTORY}/lib" ) + SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_HOME_DIRECTORY}/bin" ) ENDIF ( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR ) # Cache these to allow the user to override them manually. SET( ASSIMP_LIB_INSTALL_DIR "lib" CACHE PATH - "Path the built library files are installed to." ) + "Path the built library files are installed to." ) SET( ASSIMP_INCLUDE_INSTALL_DIR "include" CACHE PATH - "Path the header files are installed to." ) + "Path the header files are installed to." ) SET( ASSIMP_BIN_INSTALL_DIR "bin" CACHE PATH - "Path the tool executables are installed to." ) + "Path the tool executables are installed to." ) SET(ASSIMP_DEBUG_POSTFIX "d" CACHE STRING "Debug Postfitx for lib, samples and tools") @@ -86,34 +86,34 @@ option ( BUILD_SHARED_LIBS "Build a shared version of the library" ON ) # Only generate this target if no higher-level project already has IF (NOT TARGET uninstall) - # add make uninstall capability - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake-modules/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) - add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") + # add make uninstall capability + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake-modules/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) + add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") ENDIF() # Globally enable Boost resp. the Boost workaround – it is also needed by the # tools which include the Assimp headers. option ( ASSIMP_ENABLE_BOOST_WORKAROUND - "If a simple implementation of the used Boost functions is used. Slightly reduces functionality, but enables builds without Boost available." - ON + "If a simple implementation of the used Boost functions is used. Slightly reduces functionality, but enables builds without Boost available." + ON ) IF ( ASSIMP_ENABLE_BOOST_WORKAROUND ) - INCLUDE_DIRECTORIES( code/BoostWorkaround ) - ADD_DEFINITIONS( -DASSIMP_BUILD_BOOST_WORKAROUND ) - MESSAGE( STATUS "Building a non-boost version of Assimp." ) + INCLUDE_DIRECTORIES( code/BoostWorkaround ) + ADD_DEFINITIONS( -DASSIMP_BUILD_BOOST_WORKAROUND ) + MESSAGE( STATUS "Building a non-boost version of Assimp." ) ELSE ( ASSIMP_ENABLE_BOOST_WORKAROUND ) - SET( Boost_DETAILED_FAILURE_MSG ON ) - SET( Boost_ADDITIONAL_VERSIONS "1.47" "1.47.0" "1.48.0" "1.48" "1.49" "1.49.0" "1.50" "1.50.0" "1.51" "1.51.0" "1.52.0" "1.53.0" "1.54.0" "1.55" "1.55.0" "1.56" "1.56.0" "1.57" "1.57.0" ) - FIND_PACKAGE( Boost ) - IF ( NOT Boost_FOUND ) - MESSAGE( FATAL_ERROR - "Boost libraries (http://www.boost.org/) not found. " - "You can build a non-boost version of Assimp with slightly reduced " + SET( Boost_DETAILED_FAILURE_MSG ON ) + SET( Boost_ADDITIONAL_VERSIONS "1.47" "1.47.0" "1.48.0" "1.48" "1.49" "1.49.0" "1.50" "1.50.0" "1.51" "1.51.0" "1.52.0" "1.53.0" "1.54.0" "1.55" "1.55.0" "1.56" "1.56.0" "1.57" "1.57.0" ) + FIND_PACKAGE( Boost ) + IF ( NOT Boost_FOUND ) + MESSAGE( FATAL_ERROR + "Boost libraries (http://www.boost.org/) not found. " + "You can build a non-boost version of Assimp with slightly reduced " "functionality by specifying -DASSIMP_ENABLE_BOOST_WORKAROUND=ON." - ) - ENDIF ( NOT Boost_FOUND ) + ) + ENDIF ( NOT Boost_FOUND ) - INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIRS} ) + INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIRS} ) ENDIF ( ASSIMP_ENABLE_BOOST_WORKAROUND ) # cmake configuration files @@ -122,8 +122,8 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/assimp-config-version.cmake.in" "${C install(FILES "${CMAKE_CURRENT_BINARY_DIR}/assimp-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/assimp-config-version.cmake" DESTINATION "${ASSIMP_LIB_INSTALL_DIR}/cmake/assimp-${ASSIMP_VERSION_MAJOR}.${ASSIMP_VERSION_MINOR}" COMPONENT ${LIBASSIMP-DEV_COMPONENT}) option ( ASSIMP_NO_EXPORT - "Disable Assimp's export functionality." - OFF + "Disable Assimp's export functionality." + OFF ) if( CMAKE_COMPILER_IS_GNUCXX ) @@ -134,93 +134,88 @@ endif( CMAKE_COMPILER_IS_GNUCXX ) # Search for zlib find_package(ZLIB) if( NOT ZLIB_FOUND ) - message(STATUS "compiling zlib from souces") - include(CheckIncludeFile) - include(CheckTypeSize) - include(CheckFunctionExists) - # compile from sources - add_subdirectory(contrib/zlib) - set(ZLIB_FOUND 1) - set(ZLIB_LIBRARIES zlibstatic) - set(ZLIB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/contrib/zlib ${CMAKE_CURRENT_BINARY_DIR}/contrib/zlib) + message(STATUS "compiling zlib from souces") + include(CheckIncludeFile) + include(CheckTypeSize) + include(CheckFunctionExists) + # compile from sources + add_subdirectory(contrib/zlib) + set(ZLIB_FOUND 1) + set(ZLIB_LIBRARIES zlibstatic) + set(ZLIB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/contrib/zlib ${CMAKE_CURRENT_BINARY_DIR}/contrib/zlib) else(NOT ZLIB_FOUND) - ADD_DEFINITIONS(-DASSIMP_BUILD_NO_OWN_ZLIB) - set(ZLIB_LIBRARIES_LINKED -lz) + ADD_DEFINITIONS(-DASSIMP_BUILD_NO_OWN_ZLIB) + set(ZLIB_LIBRARIES_LINKED -lz) endif(NOT ZLIB_FOUND) INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) # Search for unzip if (PKG_CONFIG_FOUND) - PKG_CHECK_MODULES(UNZIP minizip) + PKG_CHECK_MODULES(UNZIP minizip) endif (PKG_CONFIG_FOUND) IF ( ASSIMP_NO_EXPORT ) - ADD_DEFINITIONS( -DASSIMP_BUILD_NO_EXPORT) - MESSAGE( STATUS "Build an import-only version of Assimp." ) + ADD_DEFINITIONS( -DASSIMP_BUILD_NO_EXPORT) + MESSAGE( STATUS "Build an import-only version of Assimp." ) ENDIF( ASSIMP_NO_EXPORT ) -# if(CMAKE_CL_64) -# set(ASSIMP_BUILD_ARCHITECTURE "amd64") -# else(CMAKE_CL_64) -# set(ASSIMP_BUILD_ARCHITECTURE "x86") -# endif(CMAKE_CL_64) SET ( ASSIMP_BUILD_ARCHITECTURE "" CACHE STRING - "describe the current architecture." + "describe the current architecture." ) IF ( ASSIMP_BUILD_ARCHITECTURE STREQUAL "") ELSE ( ASSIMP_BUILD_ARCHITECTURE STREQUAL "") - ADD_DEFINITIONS ( -D'ASSIMP_BUILD_ARCHITECTURE="${ASSIMP_BUILD_ARCHITECTURE}"' ) + ADD_DEFINITIONS ( -D'ASSIMP_BUILD_ARCHITECTURE="${ASSIMP_BUILD_ARCHITECTURE}"' ) ENDIF ( ASSIMP_BUILD_ARCHITECTURE STREQUAL "") # ${CMAKE_GENERATOR} SET ( ASSIMP_BUILD_COMPILER "" CACHE STRING - "describe the current compiler." + "describe the current compiler." ) IF ( ASSIMP_BUILD_COMPILER STREQUAL "") ELSE ( ASSIMP_BUILD_COMPILER STREQUAL "") - ADD_DEFINITIONS ( -D'ASSIMP_BUILD_COMPILER="${ASSIMP_BUILD_COMPILER}"' ) + ADD_DEFINITIONS ( -D'ASSIMP_BUILD_COMPILER="${ASSIMP_BUILD_COMPILER}"' ) ENDIF ( ASSIMP_BUILD_COMPILER STREQUAL "") MARK_AS_ADVANCED ( ASSIMP_BUILD_ARCHITECTURE ASSIMP_BUILD_COMPILER ) ADD_SUBDIRECTORY( code/ ) option ( ASSIMP_BUILD_ASSIMP_TOOLS - "If the supplementary tools for Assimp are built in addition to the library." - ON + "If the supplementary tools for Assimp are built in addition to the library." + ON ) IF ( ASSIMP_BUILD_ASSIMP_TOOLS ) - IF ( WIN32 ) - ADD_SUBDIRECTORY( tools/assimp_view/ ) - ENDIF ( WIN32 ) - ADD_SUBDIRECTORY( tools/assimp_cmd/ ) + IF ( WIN32 ) + ADD_SUBDIRECTORY( tools/assimp_view/ ) + ENDIF ( WIN32 ) + ADD_SUBDIRECTORY( tools/assimp_cmd/ ) ENDIF ( ASSIMP_BUILD_ASSIMP_TOOLS ) option ( ASSIMP_BUILD_SAMPLES - "If the official samples are built as well (needs Glut)." - OFF + "If the official samples are built as well (needs Glut)." + OFF ) IF ( ASSIMP_BUILD_SAMPLES) - IF ( WIN32 ) - ADD_SUBDIRECTORY( samples/SimpleTexturedOpenGL/ ) - ENDIF ( WIN32 ) - ADD_SUBDIRECTORY( samples/SimpleOpenGL/ ) + IF ( WIN32 ) + ADD_SUBDIRECTORY( samples/SimpleTexturedOpenGL/ ) + ENDIF ( WIN32 ) + ADD_SUBDIRECTORY( samples/SimpleOpenGL/ ) ENDIF ( ASSIMP_BUILD_SAMPLES ) option ( ASSIMP_BUILD_TESTS - "If the test suite for Assimp is built in addition to the library." - ON + "If the test suite for Assimp is built in addition to the library." + ON ) - + IF ( ASSIMP_BUILD_TESTS ) - ADD_SUBDIRECTORY( test/ ) + ADD_SUBDIRECTORY( test/ ) ENDIF ( ASSIMP_BUILD_TESTS ) IF(MSVC) - option ( ASSIMP_INSTALL_PDB - "Install MSVC debug files." - ON - ) + option ( ASSIMP_INSTALL_PDB + "Install MSVC debug files." + ON + ) ENDIF(MSVC) # Generate a pkg-config .pc for the Assimp library. @@ -228,51 +223,50 @@ CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/assimp.pc.in" "${PROJECT_BINARY_DIR}/assi INSTALL( FILES "${PROJECT_BINARY_DIR}/assimp.pc" DESTINATION ${ASSIMP_LIB_INSTALL_DIR}/pkgconfig/ COMPONENT ${LIBASSIMP-DEV_COMPONENT}) if(CMAKE_CPACK_COMMAND AND UNIX AND ASSIMP_OPT_BUILD_PACKAGES) - # Packing information - set(CPACK_PACKAGE_NAME "assimp{ASSIMP_VERSION_MAJOR}") - set(CPACK_PACKAGE_CONTACT "" CACHE STRING "Package maintainer and PGP signer.") - set(CPACK_PACKAGE_VENDOR "http://assimp.sourceforge.net/") - set(CPACK_PACKAGE_DISPLAY_NAME "Assimp ${ASSIMP_VERSION}") - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY " - Open Asset Import Library ${ASSIMP_VERSION}") - set(CPACK_PACKAGE_VERSION "${ASSIMP_VERSION}.${ASSIMP_PACKAGE_VERSION}" ) - set(CPACK_PACKAGE_VERSION_MAJOR "${ASSIMP_VERSION_MAJOR}") - set(CPACK_PACKAGE_VERSION_MINOR "${ASSIMP_VERSION_MINOR}") - set(CPACK_PACKAGE_VERSION_PATCH "${ASSIMP_VERSION_PATCH}") - set(CPACK_PACKAGE_INSTALL_DIRECTORY "assimp${ASSIMP_VERSION_MAJOR}.${ASSIMP_VERSION_MINOR}") - #set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/description") - set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") + # Packing information + set(CPACK_PACKAGE_NAME "assimp{ASSIMP_VERSION_MAJOR}") + set(CPACK_PACKAGE_CONTACT "" CACHE STRING "Package maintainer and PGP signer.") + set(CPACK_PACKAGE_VENDOR "http://assimp.sourceforge.net/") + set(CPACK_PACKAGE_DISPLAY_NAME "Assimp ${ASSIMP_VERSION}") + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY " - Open Asset Import Library ${ASSIMP_VERSION}") + set(CPACK_PACKAGE_VERSION "${ASSIMP_VERSION}.${ASSIMP_PACKAGE_VERSION}" ) + set(CPACK_PACKAGE_VERSION_MAJOR "${ASSIMP_VERSION_MAJOR}") + set(CPACK_PACKAGE_VERSION_MINOR "${ASSIMP_VERSION_MINOR}") + set(CPACK_PACKAGE_VERSION_PATCH "${ASSIMP_VERSION_PATCH}") + set(CPACK_PACKAGE_INSTALL_DIRECTORY "assimp${ASSIMP_VERSION_MAJOR}.${ASSIMP_VERSION_MINOR}") + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") - string(TOUPPER ${LIBASSIMP_COMPONENT} "LIBASSIMP_COMPONENT_UPPER") - string(TOUPPER ${LIBASSIMP-DEV_COMPONENT} "LIBASSIMP-DEV_COMPONENT_UPPER") + string(TOUPPER ${LIBASSIMP_COMPONENT} "LIBASSIMP_COMPONENT_UPPER") + string(TOUPPER ${LIBASSIMP-DEV_COMPONENT} "LIBASSIMP-DEV_COMPONENT_UPPER") - set(CPACK_COMPONENT_ASSIMP-BIN_DISPLAY_NAME "tools") - set(CPACK_COMPONENT_ASSIMP-BIN_DEPENDS "${LIBASSIMP_COMPONENT}" ) - set(CPACK_COMPONENT_${LIBASSIMP_COMPONENT_UPPER}_DISPLAY_NAME "libraries") - set(CPACK_COMPONENT_${LIBASSIMP-DEV_COMPONENT_UPPER}_DISPLAY_NAME "common headers and installs") - set(CPACK_COMPONENT_${LIBASSIMP-DEV_COMPONENT_UPPER}_DEPENDS $ "{LIBASSIMP_COMPONENT}" ) - set(CPACK_COMPONENT_ASSIMP-DEV_DISPLAY_NAME "${CPACK_COMPONENT_${LIBASSIMP-DEV_COMPONENT}_DISPLAY_NAME}" ) - set(CPACK_COMPONENT_ASSIMP-DEV_DEPENDS "${LIBASSIMP-DEV_COMPONENT}" ) - set(CPACK_DEBIAN_BUILD_DEPENDS debhelper cmake libboost-dev libboost-thread-dev libboost-math-dev zlib1g-dev pkg-config) + set(CPACK_COMPONENT_ASSIMP-BIN_DISPLAY_NAME "tools") + set(CPACK_COMPONENT_ASSIMP-BIN_DEPENDS "${LIBASSIMP_COMPONENT}" ) + set(CPACK_COMPONENT_${LIBASSIMP_COMPONENT_UPPER}_DISPLAY_NAME "libraries") + set(CPACK_COMPONENT_${LIBASSIMP-DEV_COMPONENT_UPPER}_DISPLAY_NAME "common headers and installs") + set(CPACK_COMPONENT_${LIBASSIMP-DEV_COMPONENT_UPPER}_DEPENDS $ "{LIBASSIMP_COMPONENT}" ) + set(CPACK_COMPONENT_ASSIMP-DEV_DISPLAY_NAME "${CPACK_COMPONENT_${LIBASSIMP-DEV_COMPONENT}_DISPLAY_NAME}" ) + set(CPACK_COMPONENT_ASSIMP-DEV_DEPENDS "${LIBASSIMP-DEV_COMPONENT}" ) + set(CPACK_DEBIAN_BUILD_DEPENDS debhelper cmake libboost-dev libboost-thread-dev libboost-math-dev zlib1g-dev pkg-config) - # debian - set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") - set(CPACK_DEBIAN_CMAKE_OPTIONS "-DBUILD_ASSIMP_SAMPLES:BOOL=${ASSIMP_BUILD_SAMPLES}") - set(CPACK_DEBIAN_PACKAGE_SECTION "libs" ) - set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_COMPONENTS_ALL}") - set(CPACK_DEBIAN_PACKAGE_SUGGESTS) - set(CPACK_DEBIAN_PACKAGE_NAME "assimp") - set(CPACK_DEBIAN_PACKAGE_REMOVE_SOURCE_FILES contrib/cppunit-1.12.1 contrib/cppunit_note.txt contrib/zlib workspaces test doc obj samples packaging) - set(CPACK_DEBIAN_PACKAGE_SOURCE_COPY svn export --force) - set(CPACK_DEBIAN_CHANGELOG) - execute_process(COMMAND lsb_release -is - OUTPUT_VARIABLE _lsb_distribution OUTPUT_STRIP_TRAILING_WHITESPACE - RESULT_VARIABLE _lsb_release_failed) - set(CPACK_DEBIAN_DISTRIBUTION_NAME ${_lsb_distribution} CACHE STRING "Name of the distrubiton") - string(TOLOWER ${CPACK_DEBIAN_DISTRIBUTION_NAME} CPACK_DEBIAN_DISTRIBUTION_NAME) - if( ${CPACK_DEBIAN_DISTRIBUTION_NAME} STREQUAL "ubuntu" ) - set(CPACK_DEBIAN_DISTRIBUTION_RELEASES lucid maverick natty oneiric precise CACHE STRING "Release code-names of the distrubiton release") - endif() - set(DPUT_HOST "" CACHE STRING "PPA repository to upload the debian sources") - include(CPack) - include(DebSourcePPA) + # debian + set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") + set(CPACK_DEBIAN_CMAKE_OPTIONS "-DBUILD_ASSIMP_SAMPLES:BOOL=${ASSIMP_BUILD_SAMPLES}") + set(CPACK_DEBIAN_PACKAGE_SECTION "libs" ) + set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_COMPONENTS_ALL}") + set(CPACK_DEBIAN_PACKAGE_SUGGESTS) + set(CPACK_DEBIAN_PACKAGE_NAME "assimp") + set(CPACK_DEBIAN_PACKAGE_REMOVE_SOURCE_FILES contrib/cppunit-1.12.1 contrib/cppunit_note.txt contrib/zlib workspaces test doc obj samples packaging) + set(CPACK_DEBIAN_PACKAGE_SOURCE_COPY svn export --force) + set(CPACK_DEBIAN_CHANGELOG) + execute_process(COMMAND lsb_release -is + OUTPUT_VARIABLE _lsb_distribution OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE _lsb_release_failed) + set(CPACK_DEBIAN_DISTRIBUTION_NAME ${_lsb_distribution} CACHE STRING "Name of the distrubiton") + string(TOLOWER ${CPACK_DEBIAN_DISTRIBUTION_NAME} CPACK_DEBIAN_DISTRIBUTION_NAME) + if( ${CPACK_DEBIAN_DISTRIBUTION_NAME} STREQUAL "ubuntu" ) + set(CPACK_DEBIAN_DISTRIBUTION_RELEASES lucid maverick natty oneiric precise CACHE STRING "Release code-names of the distrubiton release") + endif() + set(DPUT_HOST "" CACHE STRING "PPA repository to upload the debian sources") + include(CPack) + include(DebSourcePPA) endif() From b1221ade6452c09d131477a425f300d334dc5cbe Mon Sep 17 00:00:00 2001 From: abma Date: Tue, 16 Dec 2014 23:41:10 +0100 Subject: [PATCH 195/196] fix some errors/warnings found by static code analyzer --- code/3DSHelper.h | 2 +- code/ASEParser.cpp | 4 ++-- code/B3DImporter.cpp | 2 +- code/FindInstancesProcess.cpp | 3 +-- code/LWSLoader.cpp | 6 +++--- code/PlyParser.cpp | 2 +- code/Q3BSPFileImporter.cpp | 2 +- 7 files changed, 10 insertions(+), 11 deletions(-) diff --git a/code/3DSHelper.h b/code/3DSHelper.h index adf1a2ff4..28b31c2b6 100644 --- a/code/3DSHelper.h +++ b/code/3DSHelper.h @@ -468,7 +468,7 @@ struct aiFloatKey {return mTime < o.mTime;} bool operator > (const aiFloatKey& o) const - {return mTime < o.mTime;} + {return mTime > o.mTime;} #endif }; diff --git a/code/ASEParser.cpp b/code/ASEParser.cpp index b1bee0461..cba206d72 100644 --- a/code/ASEParser.cpp +++ b/code/ASEParser.cpp @@ -1525,7 +1525,7 @@ void Parser::ParseLV3MeshWeightsBlock(ASE::Mesh& mesh) continue; } // Number of bones - if (TokenMatch(filePtr,"MESH_NUMBONE" ,11)) + if (TokenMatch(filePtr,"MESH_NUMBONE" ,12)) { ParseLV4MeshLong(iNumBones); continue; @@ -1559,7 +1559,7 @@ void Parser::ParseLV4MeshBones(unsigned int iNumBones,ASE::Mesh& mesh) ++filePtr; // Mesh bone with name ... - if (TokenMatch(filePtr,"MESH_BONE_NAME" ,16)) + if (TokenMatch(filePtr,"MESH_BONE_NAME" ,14)) { // parse an index ... if(SkipSpaces(&filePtr)) diff --git a/code/B3DImporter.cpp b/code/B3DImporter.cpp index 53c744d54..20e4cff94 100644 --- a/code/B3DImporter.cpp +++ b/code/B3DImporter.cpp @@ -548,7 +548,7 @@ aiNode *B3DImporter::ReadNODE( aiNode *parent ){ void B3DImporter::ReadBB3D( aiScene *scene ){ _textures.clear(); - _materials.size(); + _materials.clear(); _vertices.clear(); _meshes.clear(); diff --git a/code/FindInstancesProcess.cpp b/code/FindInstancesProcess.cpp index 278f01115..3b8578142 100644 --- a/code/FindInstancesProcess.cpp +++ b/code/FindInstancesProcess.cpp @@ -85,8 +85,7 @@ bool CompareBones(const aiMesh* orig, const aiMesh* inst) aiBone* oha = inst->mBones[i]; if (aha->mNumWeights != oha->mNumWeights || - aha->mOffsetMatrix != oha->mOffsetMatrix || - aha->mNumWeights != oha->mNumWeights) { + aha->mOffsetMatrix != oha->mOffsetMatrix) { return false; } diff --git a/code/LWSLoader.cpp b/code/LWSLoader.cpp index 0ff3f9e10..bfd4b395c 100644 --- a/code/LWSLoader.cpp +++ b/code/LWSLoader.cpp @@ -464,7 +464,7 @@ std::string LWSImporter::FindLWOFile(const std::string& in) std::string tmp; if (in.length() > 3 && in[1] == ':'&& in[2] != '\\' && in[2] != '/') { - tmp = in[0] + (":\\" + in.substr(2)); + tmp = in[0] + (std::string(":\\") + in.substr(2)); } else tmp = in; @@ -480,12 +480,12 @@ std::string LWSImporter::FindLWOFile(const std::string& in) // \Scenes\\<*>.lws // where is optional. - std::string test = ".." + (io->getOsSeparator() + tmp); + std::string test = std::string("..") + (io->getOsSeparator() + tmp); if (io->Exists(test)) { return test; } - test = ".." + (io->getOsSeparator() + test); + test = std::string("..") + (io->getOsSeparator() + test); if (io->Exists(test)) { return test; } diff --git a/code/PlyParser.cpp b/code/PlyParser.cpp index 67f5b0bc8..6687ca9ed 100644 --- a/code/PlyParser.cpp +++ b/code/PlyParser.cpp @@ -182,7 +182,7 @@ PLY::ESemantic PLY::Property::ParseSemantic(const char* pCur,const char** pCurOu { eOut = PLY::EST_Opacity; } - else if (TokenMatch(pCur,"specular_power",6)) + else if (TokenMatch(pCur,"specular_power",14)) { eOut = PLY::EST_PhongPower; } diff --git a/code/Q3BSPFileImporter.cpp b/code/Q3BSPFileImporter.cpp index c7b829843..2c87d2a82 100644 --- a/code/Q3BSPFileImporter.cpp +++ b/code/Q3BSPFileImporter.cpp @@ -630,7 +630,7 @@ aiFace *Q3BSPFileImporter::getNextFace( aiMesh *pMesh, unsigned int &rFaceIdx ) bool Q3BSPFileImporter::importTextureFromArchive( const Q3BSP::Q3BSPModel *pModel, Q3BSP::Q3BSPZipArchive *pArchive, aiScene*, aiMaterial *pMatHelper, int textureId ) { - if ( NULL == pArchive || NULL == pArchive || NULL == pMatHelper ) { + if ( NULL == pArchive || NULL == pMatHelper ) { return false; } From ce01b413b133d9cc3375442fafa0cc76e5b0e79b Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Tue, 23 Dec 2014 18:36:39 +0100 Subject: [PATCH 196/196] add build matrix to support win32-build via cross compiler for windows platform. Signed-off-by: Kim Kulling --- .travis.yml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9c6422058..4ec4c7697 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,10 +2,15 @@ before_install: - sudo apt-get install cmake python3 env: - - TRAVIS_NO_EXPORT=YES - - TRAVIS_NO_EXPORT=NO - - TRAVIS_STATIC_BUILD=ON - - TRAVIS_STATIC_BUILD=OFF + matrix: + - LINUX=1 TRAVIS_NO_EXPORT=YES + - LINUX=1 TRAVIS_NO_EXPORT=NO + - LINUX=1 TRAVIS_STATIC_BUILD=ON + - LINUX=1 TRAVIS_STATIC_BUILD=OFF + - WINDOWS=1 TRAVIS_NO_EXPORT=YES + - WINDOWS=1 TRAVIS_NO_EXPORT=NO + - WINDOWS=1 TRAVIS_STATIC_BUILD=ON + - WINDOWS=1 TRAVIS_STATIC_BUILD=OFF language: cpp @@ -13,6 +18,9 @@ compiler: - gcc - clang +install: + - if [ $WINDOWS ]; then travis_retry sudo apt-get install -q -y gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64; fi + script: - cmake -G "Unix Makefiles" -DASSIMP_ENABLE_BOOST_WORKAROUND=YES -DASSIMP_NO_EXPORT=$TRAVIS_NO_EXPORT -STATIC_BUILD=$TRAVIS_STATIC_BUILD - make