From 4f815ae2daeca0dac2808ce30bcc7665f962229e Mon Sep 17 00:00:00 2001 From: Modestas Vainius Date: Sun, 4 Oct 2009 10:30:41 +0300 Subject: [PATCH] Import cmake 2.8.0-r2 --- CMakeCPack.cmake | 26 +- CMakeCPackOptions.cmake.in | 15 +- CMakeLists.txt | 229 +- CTestConfig.cmake | 11 + CTestCustom.cmake.in | 8 +- ChangeLog.manual | 676 +- ChangeLog.txt | 21041 ++++++++++++++-- CompileFlags.cmake | 19 +- Copyright.txt | 82 +- DartConfig.cmake | 11 + DartLocal.conf.in | 0 Docs/cmake-mode.el | 100 +- Docs/cmake-syntax.vim | 8 +- Modules/AddFileDependencies.cmake | 13 + Modules/BundleUtilities.cmake | 90 +- Modules/CMake.cmake | 13 + Modules/CMakeASM-ATTInformation.cmake | 18 +- Modules/CMakeASMInformation.cmake | 14 + Modules/CMakeASM_MASMInformation.cmake | 14 + Modules/CMakeAddNewLanguage.txt | 0 Modules/CMakeBackwardCompatibilityC.cmake | 13 + Modules/CMakeBackwardCompatibilityCXX.cmake | 14 + Modules/CMakeBorlandFindMake.cmake | 14 + Modules/CMakeBuildSettings.cmake.in | 40 +- Modules/CMakeCCompiler.cmake.in | 5 + Modules/CMakeCCompilerId.c.in | 10 +- Modules/CMakeCInformation.cmake | 19 + Modules/CMakeCXXCompiler.cmake.in | 6 + Modules/CMakeCXXCompilerId.cpp.in | 10 +- Modules/CMakeCXXInformation.cmake | 18 + Modules/CMakeCommonLanguageInclude.cmake | 13 + Modules/CMakeDependentOption.cmake | 14 + Modules/CMakeDetermineASM-ATTCompiler.cmake | 14 + Modules/CMakeDetermineASMCompiler.cmake | 24 +- Modules/CMakeDetermineASM_MASMCompiler.cmake | 14 + Modules/CMakeDetermineCCompiler.cmake | 16 + Modules/CMakeDetermineCXXCompiler.cmake | 13 + Modules/CMakeDetermineCompilerABI.cmake | 31 + Modules/CMakeDetermineCompilerId.cmake | 13 + Modules/CMakeDetermineFortranCompiler.cmake | 50 +- Modules/CMakeDetermineJavaCompiler.cmake | 13 + Modules/CMakeDetermineRCCompiler.cmake | 13 + Modules/CMakeDetermineSystem.cmake | 13 + Modules/CMakeDetermineVSServicePack.cmake | 95 + Modules/CMakeExportBuildSettings.cmake | 32 +- Modules/CMakeFindBinUtils.cmake | 12 + Modules/CMakeFindCodeBlocks.cmake | 23 + Modules/CMakeFindEclipseCDT4.cmake | 97 + Modules/CMakeFindFrameworks.cmake | 13 + Modules/CMakeFindKDevelop3.cmake | 23 + Modules/CMakeFindWMake.cmake | 14 + Modules/CMakeFindXCode.cmake | 14 + Modules/CMakeForceCompiler.cmake | 13 + Modules/CMakeFortranCompiler.cmake.in | 5 + Modules/CMakeFortranCompilerABI.F | 3 + Modules/CMakeFortranCompilerId.F.in | 106 + Modules/CMakeFortranCompilerId.F90.in | 84 - Modules/CMakeFortranInformation.cmake | 18 + Modules/CMakeGenericSystem.cmake | 17 + Modules/CMakeImportBuildSettings.cmake | 262 +- Modules/CMakeJavaInformation.cmake | 14 + Modules/CMakeLists.txt | 12 - Modules/CMakeMSYSFindMake.cmake | 14 + Modules/CMakeMinGWFindMake.cmake | 14 + Modules/CMakeNMakeFindMake.cmake | 15 + Modules/CMakeParseImplicitLinkInfo.cmake | 87 + Modules/CMakePrintSystemInformation.cmake | 13 + Modules/CMakeRCCompiler.cmake.in | 0 Modules/CMakeRCInformation.cmake | 14 + Modules/CMakeSystemSpecificInformation.cmake | 55 +- Modules/CMakeTestASM-ATTCompiler.cmake | 13 + Modules/CMakeTestASMCompiler.cmake | 13 + Modules/CMakeTestASM_MASMCompiler.cmake | 13 + Modules/CMakeTestCCompiler.cmake | 20 +- Modules/CMakeTestCXXCompiler.cmake | 18 + Modules/CMakeTestForFreeVC.cxx | 0 Modules/CMakeTestFortranCompiler.cmake | 77 +- Modules/CMakeTestJavaCompiler.cmake | 13 + Modules/CMakeTestRCCompiler.cmake | 13 + Modules/CMakeUnixFindMake.cmake | 14 + Modules/CMakeVS10FindMake.cmake | 52 + Modules/CMakeVS6BackwardCompatibility.cmake | 13 + Modules/CMakeVS6FindMake.cmake | 14 + Modules/CMakeVS71FindMake.cmake | 14 + Modules/CMakeVS7BackwardCompatibility.cmake | 13 + Modules/CMakeVS7FindMake.cmake | 14 + Modules/CMakeVS8FindMake.cmake | 29 +- Modules/CMakeVS9FindMake.cmake | 35 +- Modules/COPYING-CMAKE-SCRIPTS | 22 - Modules/CPack.cmake | 23 +- Modules/CPackDeb.cmake | 13 + Modules/CPackRPM.cmake | 126 +- Modules/CPackZIP.cmake | 14 + Modules/CTest.cmake | 92 +- Modules/CTestScriptMode.cmake | 24 + Modules/CTestTargets.cmake | 16 + Modules/CheckCCompilerFlag.cmake | 39 +- Modules/CheckCSourceCompiles.cmake | 42 +- Modules/CheckCSourceRuns.cmake | 24 +- Modules/CheckCXXCompilerFlag.cmake | 35 +- Modules/CheckCXXSourceCompiles.cmake | 43 +- Modules/CheckCXXSourceRuns.cmake | 24 +- Modules/CheckFortranFunctionExists.cmake | 13 + Modules/CheckFunctionExists.cmake | 13 + Modules/CheckIncludeFile.cmake | 14 + Modules/CheckIncludeFileCXX.cmake | 14 + Modules/CheckIncludeFiles.cmake | 13 + Modules/CheckLibraryExists.cmake | 13 + Modules/CheckSizeOf.cmake | 14 + Modules/CheckStructHasMember.cmake | 12 + Modules/CheckSymbolExists.cmake | 13 + Modules/CheckTypeSize.cmake | 13 + Modules/CheckVariableExists.cmake | 13 + Modules/Compiler/GNU-C.cmake | 1 + Modules/Compiler/GNU-CXX.cmake | 1 + Modules/Compiler/GNU-Fortran.cmake | 1 + Modules/Compiler/HP-C.cmake | 1 + Modules/Compiler/HP-CXX.cmake | 1 + Modules/Compiler/HP-Fortran.cmake | 1 + Modules/Compiler/Intel-C.cmake | 10 + Modules/Compiler/Intel-CXX.cmake | 10 + Modules/Compiler/Intel-Fortran.cmake | 7 + Modules/Compiler/MIPSpro-C.cmake | 1 + Modules/Compiler/MIPSpro-CXX.cmake | 1 + Modules/Compiler/MIPSpro-Fortran.cmake | 1 + Modules/Compiler/PGI-C.cmake | 1 + Modules/Compiler/PGI-CXX.cmake | 1 + Modules/Compiler/PGI-Fortran.cmake | 1 + Modules/Compiler/SunPro-C.cmake | 26 + Modules/Compiler/SunPro-CXX.cmake | 32 + Modules/Compiler/SunPro-Fortran.cmake | 16 + Modules/Compiler/VisualAge-C.cmake | 1 + Modules/Compiler/VisualAge-CXX.cmake | 1 + Modules/Compiler/VisualAge-Fortran.cmake | 1 + Modules/Compiler/XL-C.cmake | 14 + Modules/Compiler/XL-CXX.cmake | 12 + Modules/Compiler/XL-Fortran.cmake | 7 + Modules/Dart.cmake | 14 + Modules/DartConfiguration.tcl.in | 12 +- Modules/Documentation.cmake | 13 + Modules/DummyCXXFile.cxx | 0 Modules/ExternalProject.cmake | 952 + Modules/FLTKCompatibility.cmake | 14 + Modules/FeatureSummary.cmake | 28 +- Modules/FindALSA.cmake | 46 + Modules/FindASPELL.cmake | 16 +- Modules/FindAVIFile.cmake | 17 +- Modules/FindBISON.cmake | 154 + Modules/FindBLAS.cmake | 16 +- Modules/FindBZip2.cmake | 16 +- Modules/FindBoost.cmake | 67 +- Modules/FindBullet.cmake | 83 + Modules/FindCABLE.cmake | 13 + Modules/FindCUDA.cmake | 1225 + Modules/FindCUDA/make2cmake.cmake | 80 + Modules/FindCUDA/parse_cubin.cmake | 113 + Modules/FindCUDA/run_nvcc.cmake | 266 + Modules/FindCURL.cmake | 13 + Modules/FindCVS.cmake | 13 + Modules/FindCoin3D.cmake | 14 +- Modules/FindCups.cmake | 16 +- Modules/FindCurses.cmake | 13 + Modules/FindCxxTest.cmake | 88 +- Modules/FindCygwin.cmake | 13 + Modules/FindDCMTK.cmake | 14 + Modules/FindDart.cmake | 13 + Modules/FindDevIL.cmake | 41 +- Modules/FindDoxygen.cmake | 13 + Modules/FindEXPAT.cmake | 13 + Modules/FindFLEX.cmake | 141 + Modules/FindFLTK.cmake | 15 +- Modules/FindFLTK2.cmake | 13 + Modules/FindFreetype.cmake | 13 + Modules/FindGCCXML.cmake | 14 + Modules/FindGDAL.cmake | 14 + Modules/FindGIF.cmake | 13 + Modules/FindGLU.cmake | 12 + Modules/FindGLUT.cmake | 13 + Modules/FindGTK.cmake | 13 + Modules/FindGTK2.cmake | 546 + Modules/FindGTest.cmake | 155 + Modules/FindGettext.cmake | 13 +- Modules/FindGnuTLS.cmake | 65 + Modules/FindGnuplot.cmake | 13 + Modules/FindHDF5.cmake | 322 + Modules/FindHSPELL.cmake | 16 +- Modules/FindHTMLHelp.cmake | 13 + Modules/FindITK.cmake | 12 + Modules/FindImageMagick.cmake | 16 +- Modules/FindJNI.cmake | 94 +- Modules/FindJPEG.cmake | 13 + Modules/FindJasper.cmake | 16 +- Modules/FindJava.cmake | 14 + Modules/FindKDE3.cmake | 14 + Modules/FindKDE4.cmake | 14 + Modules/FindLAPACK.cmake | 16 +- Modules/FindLATEX.cmake | 13 + Modules/FindLibXml2.cmake | 16 +- Modules/FindLibXslt.cmake | 16 +- Modules/FindLua50.cmake | 12 + Modules/FindLua51.cmake | 12 + Modules/FindMFC.cmake | 13 + Modules/FindMPEG.cmake | 13 + Modules/FindMPEG2.cmake | 19 +- Modules/FindMPI.cmake | 37 +- Modules/FindMatlab.cmake | 12 + Modules/FindMotif.cmake | 15 +- Modules/FindOpenAL.cmake | 13 + Modules/FindOpenGL.cmake | 23 + Modules/FindOpenMP.cmake | 18 +- Modules/FindOpenSSL.cmake | 16 +- Modules/FindOpenSceneGraph.cmake | 70 +- Modules/FindOpenThreads.cmake | 13 + Modules/FindPHP4.cmake | 13 + Modules/FindPNG.cmake | 53 +- Modules/FindPackageHandleStandardArgs.cmake | 13 + Modules/FindPackageMessage.cmake | 13 + Modules/FindPerl.cmake | 13 + Modules/FindPerlLibs.cmake | 249 +- Modules/FindPhysFS.cmake | 13 + Modules/FindPike.cmake | 13 + Modules/FindPkgConfig.cmake | 12 + Modules/FindProducer.cmake | 13 + Modules/FindProtobuf.cmake | 121 + Modules/FindPythonInterp.cmake | 13 + Modules/FindPythonLibs.cmake | 54 +- Modules/FindQt.cmake | 12 + Modules/FindQt3.cmake | 13 + Modules/FindQt4.cmake | 161 +- Modules/FindQuickTime.cmake | 13 + Modules/FindRTI.cmake | 20 +- Modules/FindRuby.cmake | 245 +- Modules/FindSDL.cmake | 35 +- Modules/FindSDL_image.cmake | 13 + Modules/FindSDL_mixer.cmake | 13 + Modules/FindSDL_net.cmake | 12 + Modules/FindSDL_sound.cmake | 12 + Modules/FindSDL_ttf.cmake | 13 + Modules/FindSWIG.cmake | 13 + Modules/FindSelfPackers.cmake | 13 + Modules/FindSquish.cmake | 13 + Modules/FindSubversion.cmake | 35 +- Modules/FindTCL.cmake | 13 + Modules/FindTIFF.cmake | 13 + Modules/FindTclStub.cmake | 13 + Modules/FindTclsh.cmake | 13 + Modules/FindThreads.cmake | 56 +- Modules/FindUnixCommands.cmake | 13 + Modules/FindVTK.cmake | 14 + Modules/FindWget.cmake | 13 + Modules/FindWish.cmake | 14 + Modules/FindX11.cmake | 14 +- Modules/FindXMLRPC.cmake | 13 + Modules/FindZLIB.cmake | 12 + Modules/Findosg.cmake | 13 + Modules/FindosgAnimation.cmake | 13 + Modules/FindosgDB.cmake | 13 + Modules/FindosgFX.cmake | 13 + Modules/FindosgGA.cmake | 13 + Modules/FindosgIntrospection.cmake | 13 + Modules/FindosgManipulator.cmake | 13 + Modules/FindosgParticle.cmake | 13 + Modules/FindosgProducer.cmake | 13 + Modules/FindosgShadow.cmake | 13 + Modules/FindosgSim.cmake | 13 + Modules/FindosgTerrain.cmake | 13 + Modules/FindosgText.cmake | 13 + Modules/FindosgUtil.cmake | 13 + Modules/FindosgViewer.cmake | 13 + Modules/FindosgVolume.cmake | 13 + Modules/FindosgWidget.cmake | 13 + Modules/Findosg_functions.cmake | 14 + Modules/FindwxWidgets.cmake | 39 +- Modules/FindwxWindows.cmake | 13 + Modules/FortranCInterface.cmake | 472 +- Modules/FortranCInterface.h.in | 9 - Modules/FortranCInterface/CMakeLists.txt | 90 + Modules/FortranCInterface/Detect.cmake | 180 + Modules/FortranCInterface/Input.cmake.in | 3 + Modules/FortranCInterface/Macro.h.in | 4 + Modules/FortranCInterface/Output.cmake.in | 33 + .../FortranCInterface/Verify/CMakeLists.txt | 32 + Modules/FortranCInterface/Verify/VerifyC.c | 5 + .../FortranCInterface/Verify/VerifyCXX.cxx | 4 + .../FortranCInterface/Verify/VerifyFortran.f | 3 + Modules/FortranCInterface/Verify/main.c | 16 + Modules/FortranCInterface/call_mod.f90 | 6 + Modules/FortranCInterface/call_sub.f | 4 + Modules/FortranCInterface/main.F | 6 + Modules/FortranCInterface/my_module.f90 | 8 + Modules/FortranCInterface/my_module_.c | 2 + Modules/FortranCInterface/my_sub.f | 2 + Modules/FortranCInterface/mymodule.f90 | 8 + Modules/FortranCInterface/mymodule_.c | 2 + Modules/FortranCInterface/mysub.f | 2 + Modules/FortranCInterface/symbol.c.in | 4 + Modules/GetPrerequisites.cmake | 342 +- Modules/ITKCompatibility.cmake | 14 + Modules/InstallRequiredSystemLibraries.cmake | 13 + Modules/KDE3Macros.cmake | 14 + Modules/MacroAddFileDependencies.cmake | 30 +- Modules/NSIS.InstallOptions.ini.in | 0 Modules/NSIS.template.in | 49 +- Modules/Platform/AIX-VisualAge-C.cmake | 1 + Modules/Platform/AIX-VisualAge-CXX.cmake | 1 + Modules/Platform/AIX-VisualAge-Fortran.cmake | 1 - Modules/Platform/AIX-XL-C.cmake | 4 + Modules/Platform/AIX-XL-CXX.cmake | 4 + Modules/Platform/AIX-XL-Fortran.cmake | 4 + Modules/Platform/AIX.cmake | 31 - Modules/Platform/CMakeLists.txt | 3 - Modules/Platform/CYGWIN-g77.cmake | 0 Modules/Platform/CYGWIN.cmake | 1 + Modules/Platform/Darwin-GNU-C.cmake | 2 + Modules/Platform/Darwin-GNU-CXX.cmake | 2 + Modules/Platform/Darwin-GNU.cmake | 18 + Modules/Platform/Darwin-VisualAge-C.cmake | 1 + Modules/Platform/Darwin-VisualAge-CXX.cmake | 1 + .../{Darwin-xlc.cmake => Darwin-XL-C.cmake} | 1 - Modules/Platform/Darwin-XL-CXX.cmake | 5 + Modules/Platform/Darwin.cmake | 139 +- Modules/Platform/Generic.cmake | 0 Modules/Platform/HP-UX.cmake | 13 + Modules/Platform/Haiku.cmake | 5 + Modules/Platform/Linux-Intel-C.cmake | 16 +- Modules/Platform/Linux-Intel-CXX.cmake | 20 +- Modules/Platform/Linux-Intel-Fortran.cmake | 16 +- Modules/Platform/Linux-Intel.cmake | 11 + Modules/Platform/Linux-SunPro-C.cmake | 21 - Modules/Platform/Linux-SunPro-CXX.cmake | 22 +- Modules/Platform/Linux-SunPro-Fortran.cmake | 14 - Modules/Platform/Linux-VisualAge-C.cmake | 3 +- Modules/Platform/Linux-VisualAge-CXX.cmake | 1 + .../Platform/Linux-VisualAge-Fortran.cmake | 4 +- Modules/Platform/Linux-XL-C.cmake | 3 + Modules/Platform/Linux-XL-CXX.cmake | 5 + Modules/Platform/Linux-XL-Fortran.cmake | 3 + Modules/Platform/Linux-icpc.cmake | 23 - Modules/Platform/Linux-ifort.cmake | 14 - Modules/Platform/OpenBSD.cmake | 3 +- Modules/Platform/OpenVMS.cmake | 8 + Modules/Platform/SunOS-SunPro-Fortran.cmake | 5 - Modules/Platform/SunOS.cmake | 50 - Modules/Platform/UnixPaths.cmake | 0 Modules/Platform/Windows-Intel.cmake | 17 + Modules/Platform/Windows-NMcl.cmake | 4 + Modules/Platform/Windows-bcc32.cmake | 2 +- Modules/Platform/Windows-cl.cmake | 21 +- Modules/Platform/Windows-cl.cmake.in | 0 Modules/Platform/Windows-df.cmake | 0 Modules/Platform/Windows-g++.cmake | 0 Modules/Platform/Windows-g77.cmake | 0 Modules/Platform/Windows-gcc.cmake | 0 Modules/Platform/Windows-icl.cmake | 19 +- Modules/Platform/Windows-ifort.cmake | 13 +- Modules/Platform/Windows-wcl386.cmake | 0 Modules/Platform/WindowsPaths.cmake | 0 Modules/Platform/g77.cmake | 0 Modules/Platform/kFreeBSD.cmake | 0 Modules/Platform/xlf.cmake | 1 - Modules/RepositoryInfo.txt.in | 3 + Modules/SelectLibraryConfigurations.cmake | 82 + Modules/SquishTestScript.cmake | 15 +- Modules/SystemInformation.cmake | 14 + Modules/TestBigEndian.cmake | 13 + Modules/TestCXXAcceptsFlag.cmake | 13 + Modules/TestForANSIForScope.cmake | 13 + Modules/TestForANSIStreamHeaders.cmake | 14 + Modules/TestForSSTREAM.cmake | 14 + Modules/TestForSSTREAM.cxx | 0 Modules/TestForSTDNamespace.cmake | 14 + Modules/UseEcos.cmake | 13 + Modules/UsePkgConfig.cmake | 18 +- Modules/UseQt4.cmake | 19 +- Modules/UseSWIG.cmake | 13 + Modules/UseVTK40.cmake | 19 +- Modules/UseVTKBuildSettings40.cmake | 13 + Modules/UseVTKConfig40.cmake | 13 + Modules/Use_wxWindows.cmake | 16 +- Modules/UsewxWidgets.cmake | 22 +- Modules/VTKCompatibility.cmake | 14 + Modules/ecos_clean.cmake | 14 + Modules/kde3uic.cmake | 13 + Modules/readme.txt | 9 +- Readme.txt | 12 +- Source/CMakeLists.txt | 81 +- Source/CPack/OSXLauncherScript.scpt | Bin 0 -> 3102 bytes Source/CPack/OSXScriptLauncher.cxx | 23 +- Source/CPack/bills-comments.txt | 0 Source/CPack/cmCPackBundleGenerator.cxx | 149 +- Source/CPack/cmCPackBundleGenerator.h | 23 +- Source/CPack/cmCPackComponentGroup.cxx | 23 +- Source/CPack/cmCPackComponentGroup.h | 23 +- Source/CPack/cmCPackConfigure.h.in | 23 +- Source/CPack/cmCPackCygwinBinaryGenerator.cxx | 23 +- Source/CPack/cmCPackCygwinBinaryGenerator.h | 23 +- Source/CPack/cmCPackCygwinSourceGenerator.cxx | 23 +- Source/CPack/cmCPackCygwinSourceGenerator.h | 23 +- Source/CPack/cmCPackDebGenerator.cxx | 23 +- Source/CPack/cmCPackDebGenerator.h | 23 +- Source/CPack/cmCPackDragNDropGenerator.cxx | 377 +- Source/CPack/cmCPackDragNDropGenerator.h | 27 +- Source/CPack/cmCPackGenerator.cxx | 41 +- Source/CPack/cmCPackGenerator.h | 23 +- Source/CPack/cmCPackGeneratorFactory.cxx | 23 +- Source/CPack/cmCPackGeneratorFactory.h | 23 +- Source/CPack/cmCPackLog.cxx | 23 +- Source/CPack/cmCPackLog.h | 23 +- Source/CPack/cmCPackNSISGenerator.cxx | 23 +- Source/CPack/cmCPackNSISGenerator.h | 23 +- Source/CPack/cmCPackOSXX11Generator.cxx | 23 +- Source/CPack/cmCPackOSXX11Generator.h | 23 +- Source/CPack/cmCPackPackageMakerGenerator.cxx | 23 +- Source/CPack/cmCPackPackageMakerGenerator.h | 23 +- Source/CPack/cmCPackRPMGenerator.cxx | 23 +- Source/CPack/cmCPackRPMGenerator.h | 23 +- Source/CPack/cmCPackSTGZGenerator.cxx | 23 +- Source/CPack/cmCPackSTGZGenerator.h | 23 +- Source/CPack/cmCPackTGZGenerator.cxx | 23 +- Source/CPack/cmCPackTGZGenerator.h | 23 +- Source/CPack/cmCPackTarBZip2Generator.cxx | 23 +- Source/CPack/cmCPackTarBZip2Generator.h | 23 +- Source/CPack/cmCPackTarCompressGenerator.cxx | 23 +- Source/CPack/cmCPackTarCompressGenerator.h | 23 +- Source/CPack/cmCPackZIPGenerator.cxx | 23 +- Source/CPack/cmCPackZIPGenerator.h | 23 +- Source/CPack/cpack.cxx | 32 +- Source/CTest/cmCTestBZR.cxx | 520 + Source/CTest/cmCTestBZR.h | 55 + Source/CTest/cmCTestBatchTestHandler.cxx | 143 + Source/CTest/cmCTestBatchTestHandler.h | 41 + Source/CTest/cmCTestBuildAndTestHandler.cxx | 38 +- Source/CTest/cmCTestBuildAndTestHandler.h | 23 +- Source/CTest/cmCTestBuildCommand.cxx | 57 +- Source/CTest/cmCTestBuildCommand.h | 49 +- Source/CTest/cmCTestBuildHandler.cxx | 337 +- Source/CTest/cmCTestBuildHandler.h | 44 +- Source/CTest/cmCTestCVS.cxx | 319 + Source/CTest/cmCTestCVS.h | 51 + Source/CTest/cmCTestCommand.h | 23 +- Source/CTest/cmCTestConfigureCommand.cxx | 60 +- Source/CTest/cmCTestConfigureCommand.h | 47 +- Source/CTest/cmCTestConfigureHandler.cxx | 34 +- Source/CTest/cmCTestConfigureHandler.h | 23 +- Source/CTest/cmCTestCoverageCommand.cxx | 69 +- Source/CTest/cmCTestCoverageCommand.h | 49 +- Source/CTest/cmCTestCoverageHandler.cxx | 365 +- Source/CTest/cmCTestCoverageHandler.h | 50 +- .../cmCTestEmptyBinaryDirectoryCommand.cxx | 23 +- .../cmCTestEmptyBinaryDirectoryCommand.h | 23 +- Source/CTest/cmCTestGIT.cxx | 411 + Source/CTest/cmCTestGIT.h | 47 + Source/CTest/cmCTestGenericHandler.cxx | 39 +- Source/CTest/cmCTestGenericHandler.h | 31 +- Source/CTest/cmCTestGlobalVC.cxx | 127 + Source/CTest/cmCTestGlobalVC.h | 67 + Source/CTest/cmCTestHG.cxx | 338 + Source/CTest/cmCTestHG.h | 47 + Source/CTest/cmCTestHandlerCommand.cxx | 150 +- Source/CTest/cmCTestHandlerCommand.h | 45 +- Source/CTest/cmCTestLaunch.cxx | 712 + Source/CTest/cmCTestLaunch.h | 104 + Source/CTest/cmCTestMemCheckCommand.cxx | 23 +- Source/CTest/cmCTestMemCheckCommand.h | 47 +- Source/CTest/cmCTestMemCheckHandler.cxx | 113 +- Source/CTest/cmCTestMemCheckHandler.h | 34 +- Source/CTest/cmCTestMultiProcessHandler.cxx | 424 + Source/CTest/cmCTestMultiProcessHandler.h | 102 + .../CTest/cmCTestReadCustomFilesCommand.cxx | 23 +- Source/CTest/cmCTestReadCustomFilesCommand.h | 23 +- Source/CTest/cmCTestRunScriptCommand.cxx | 52 +- Source/CTest/cmCTestRunScriptCommand.h | 30 +- Source/CTest/cmCTestRunTest.cxx | 503 + Source/CTest/cmCTestRunTest.h | 100 + Source/CTest/cmCTestSVN.cxx | 442 + Source/CTest/cmCTestSVN.h | 66 + Source/CTest/cmCTestScriptHandler.cxx | 156 +- Source/CTest/cmCTestScriptHandler.h | 35 +- Source/CTest/cmCTestSleepCommand.cxx | 23 +- Source/CTest/cmCTestSleepCommand.h | 23 +- Source/CTest/cmCTestStartCommand.cxx | 23 +- Source/CTest/cmCTestStartCommand.h | 23 +- Source/CTest/cmCTestSubmitCommand.cxx | 171 +- Source/CTest/cmCTestSubmitCommand.h | 66 +- Source/CTest/cmCTestSubmitHandler.cxx | 283 +- Source/CTest/cmCTestSubmitHandler.h | 38 +- Source/CTest/cmCTestTestCommand.cxx | 41 +- Source/CTest/cmCTestTestCommand.h | 42 +- Source/CTest/cmCTestTestHandler.cxx | 935 +- Source/CTest/cmCTestTestHandler.h | 99 +- Source/CTest/cmCTestUpdateCommand.cxx | 35 +- Source/CTest/cmCTestUpdateCommand.h | 31 +- Source/CTest/cmCTestUpdateHandler.cxx | 1144 +- Source/CTest/cmCTestUpdateHandler.h | 36 +- Source/CTest/cmCTestVC.cxx | 235 + Source/CTest/cmCTestVC.h | 129 + Source/CTest/cmProcess.cxx | 264 + Source/CTest/cmProcess.h | 82 + Source/CursesDialog/CMakeLists.txt | 11 + Source/CursesDialog/ccmake.cxx | 23 +- Source/CursesDialog/cmCursesBoolWidget.cxx | 23 +- Source/CursesDialog/cmCursesBoolWidget.h | 23 +- .../cmCursesCacheEntryComposite.cxx | 23 +- .../cmCursesCacheEntryComposite.h | 23 +- Source/CursesDialog/cmCursesDummyWidget.cxx | 23 +- Source/CursesDialog/cmCursesDummyWidget.h | 23 +- .../CursesDialog/cmCursesFilePathWidget.cxx | 23 +- Source/CursesDialog/cmCursesFilePathWidget.h | 23 +- Source/CursesDialog/cmCursesForm.cxx | 23 +- Source/CursesDialog/cmCursesForm.h | 23 +- Source/CursesDialog/cmCursesLabelWidget.cxx | 23 +- Source/CursesDialog/cmCursesLabelWidget.h | 23 +- .../CursesDialog/cmCursesLongMessageForm.cxx | 26 +- Source/CursesDialog/cmCursesLongMessageForm.h | 23 +- Source/CursesDialog/cmCursesMainForm.cxx | 46 +- Source/CursesDialog/cmCursesMainForm.h | 23 +- Source/CursesDialog/cmCursesPathWidget.cxx | 23 +- Source/CursesDialog/cmCursesPathWidget.h | 23 +- .../CursesDialog/cmCursesStandardIncludes.h | 23 +- Source/CursesDialog/cmCursesStringWidget.cxx | 23 +- Source/CursesDialog/cmCursesStringWidget.h | 23 +- Source/CursesDialog/cmCursesWidget.cxx | 23 +- Source/CursesDialog/cmCursesWidget.h | 23 +- Source/CursesDialog/form/CMakeLists.txt | 11 + Source/CursesDialog/form/cmFormConfigure.h.in | 23 +- Source/FLTKDialog/CMakeLists.txt | 20 - Source/FLTKDialog/CMakeSetupGUI.fl | 116 - .../CMakeSetupGUIImplementation.cxx | 844 - .../FLTKDialog/CMakeSetupGUIImplementation.h | 85 - Source/FLTKDialog/FLTKDialog.cxx | 44 - Source/FLTKDialog/FLTKDialog.dsp | 116 - Source/FLTKDialog/FLTKPropertyItemRow.cxx | 387 - Source/FLTKDialog/FLTKPropertyItemRow.h | 83 - Source/FLTKDialog/FLTKPropertyList.cxx | 184 - Source/FLTKDialog/FLTKPropertyList.h | 143 - Source/MFCDialog/.cvsignore | 1 - Source/MFCDialog/CMakeCommandLineInfo.cpp | 142 - Source/MFCDialog/CMakeCommandLineInfo.h | 70 - Source/MFCDialog/CMakeGenDialog.cpp | 122 - Source/MFCDialog/CMakeGenDialog.h | 70 - Source/MFCDialog/CMakeLists.txt | 109 - Source/MFCDialog/CMakeSetup.cpp | 158 - Source/MFCDialog/CMakeSetup.h | 65 - Source/MFCDialog/CMakeSetup.rc | 246 - Source/MFCDialog/CMakeSetupDialog.cpp | 1552 -- Source/MFCDialog/CMakeSetupDialog.h | 152 - Source/MFCDialog/CMakeSetupManifest.xml | 10 - Source/MFCDialog/MakeHelp.cpp | 43 - Source/MFCDialog/MakeHelp.h | 62 - Source/MFCDialog/PathDialog.cpp | 377 - Source/MFCDialog/PathDialog.h | 90 - Source/MFCDialog/PropertyList.cpp | 847 - Source/MFCDialog/PropertyList.h | 179 - Source/MFCDialog/StdAfx.cpp | 8 - Source/MFCDialog/StdAfx.h | 45 - Source/MFCDialog/res/CMakeSetupDialog.ico | Bin 24542 -> 0 bytes Source/MFCDialog/res/CMakeSetupDialog.rc2 | 13 - Source/MFCDialog/resource.h | 48 - Source/QtDialog/AddCacheEntry.cxx | 23 +- Source/QtDialog/AddCacheEntry.h | 23 +- Source/QtDialog/CMakeFirstConfigure.cxx | 244 - Source/QtDialog/CMakeFirstConfigure.h | 48 - Source/QtDialog/CMakeFirstConfigure.ui | 606 - .../CMakeIngestOSXBundleLibraries.cmake | 0 Source/QtDialog/CMakeLists.txt | 16 +- Source/QtDialog/CMakeSetup.cxx | 34 +- Source/QtDialog/CMakeSetup.icns | Bin 33452 -> 138205 bytes Source/QtDialog/CMakeSetupDialog.cxx | 145 +- Source/QtDialog/CMakeSetupDialog.h | 25 +- Source/QtDialog/QCMake.cxx | 44 +- Source/QtDialog/QCMake.h | 24 +- Source/QtDialog/QCMakeCacheView.cxx | 150 +- Source/QtDialog/QCMakeCacheView.h | 48 +- Source/QtDialog/QCMakeWidgets.cxx | 23 +- Source/QtDialog/QCMakeWidgets.h | 44 +- Source/QtDialog/QMacInstallDialog.cxx | 0 Source/QtDialog/QMacInstallDialog.h | 0 Source/QtDialog/QtDialogCPack.cmake.in | 1 + Source/QtDialog/README | 0 Source/WXDialog/CMakeIcon.xpm | 276 - Source/WXDialog/CMakeLists.txt | 87 - Source/WXDialog/CMakeSetup.cpp | 123 - Source/WXDialog/CMakeSetup.h | 92 - Source/WXDialog/CMakeSetup.pjd | 3514 --- Source/WXDialog/CMakeSetup.rc | 12 - Source/WXDialog/CMakeSetupFrame.cpp | 1778 -- Source/WXDialog/CMakeSetupFrame.h | 360 - Source/WXDialog/CommandLineInfo.cpp | 191 - Source/WXDialog/CommandLineInfo.h | 67 - Source/WXDialog/NGDialog.exe.manifest | 22 - Source/WXDialog/NGDialog.ico | Bin 24542 -> 0 bytes Source/WXDialog/PropertyList.cpp | 856 - Source/WXDialog/PropertyList.h | 339 - Source/WXDialog/about.html | 21 - Source/WXDialog/aboutdlg.cpp | 210 - Source/WXDialog/aboutdlg.h | 117 - Source/WXDialog/app_resources.cpp | 86 - Source/WXDialog/app_resources.h | 60 - Source/WXDialog/bin/FindUPX.cmake | 18 - Source/WXDialog/bin/FindwxW.cmake | 438 - Source/WXDialog/bin/FindwxWin.cmake | 469 - Source/WXDialog/bin/UsewxW.cmake | 80 - Source/WXDialog/changelog.txt | 22 - Source/WXDialog/cmake_icon.gif | Bin 892 -> 0 bytes Source/WXDialog/cmake_icon.xpm | 276 - Source/WXDialog/cmake_logo.xpm | 50 - Source/WXDialog/cmakesetup.done.xml | 2 - Source/WXDialog/cmakesetup.xml | 104 - Source/WXDialog/config.h | 43 - Source/WXDialog/optionsdlg.cpp | 199 - Source/WXDialog/optionsdlg.h | 125 - Source/WXDialog/progressdlg.cpp | 177 - Source/WXDialog/progressdlg.h | 139 - Source/cmAddCustomCommandCommand.cxx | 23 +- Source/cmAddCustomCommandCommand.h | 23 +- Source/cmAddCustomTargetCommand.cxx | 23 +- Source/cmAddCustomTargetCommand.h | 23 +- Source/cmAddDefinitionsCommand.cxx | 23 +- Source/cmAddDefinitionsCommand.h | 23 +- Source/cmAddDependenciesCommand.cxx | 23 +- Source/cmAddDependenciesCommand.h | 23 +- Source/cmAddExecutableCommand.cxx | 23 +- Source/cmAddExecutableCommand.h | 26 +- Source/cmAddLibraryCommand.cxx | 23 +- Source/cmAddLibraryCommand.h | 26 +- Source/cmAddSubDirectoryCommand.cxx | 23 +- Source/cmAddSubDirectoryCommand.h | 23 +- Source/cmAddTestCommand.cxx | 158 +- Source/cmAddTestCommand.h | 60 +- Source/cmAuxSourceDirectoryCommand.cxx | 23 +- Source/cmAuxSourceDirectoryCommand.h | 23 +- Source/cmBootstrapCommands.cxx | 25 +- Source/cmBreakCommand.cxx | 23 +- Source/cmBreakCommand.h | 23 +- Source/cmBuildCommand.cxx | 23 +- Source/cmBuildCommand.h | 23 +- Source/cmBuildNameCommand.cxx | 23 +- Source/cmBuildNameCommand.h | 23 +- Source/cmCMakeMinimumRequired.cxx | 37 +- Source/cmCMakeMinimumRequired.h | 23 +- Source/cmCMakePolicyCommand.cxx | 23 +- Source/cmCMakePolicyCommand.h | 26 +- Source/cmCPluginAPI.cxx | 23 +- Source/cmCPluginAPI.h | 23 +- Source/cmCTest.cxx | 508 +- Source/cmCTest.h | 151 +- Source/cmCacheManager.cxx | 588 +- Source/cmCacheManager.h | 50 +- Source/cmCallVisualStudioMacro.cxx | 23 +- Source/cmCallVisualStudioMacro.h | 23 +- Source/cmCommand.h | 28 +- Source/cmCommandArgumentLexer.cxx | 46 +- Source/cmCommandArgumentLexer.h | 23 +- Source/cmCommandArgumentLexer.in.l | 23 +- Source/cmCommandArgumentParser.cxx | 46 +- Source/cmCommandArgumentParser.y | 23 +- Source/cmCommandArgumentParserHelper.cxx | 23 +- Source/cmCommandArgumentParserHelper.h | 23 +- Source/cmCommandArgumentParserTokens.h | 23 +- Source/cmCommandArgumentsHelper.cxx | 23 +- Source/cmCommandArgumentsHelper.h | 23 +- Source/cmCommands.cxx | 25 +- Source/cmCommands.h | 23 +- Source/cmComputeComponentGraph.cxx | 23 +- Source/cmComputeComponentGraph.h | 23 +- Source/cmComputeLinkDepends.cxx | 156 +- Source/cmComputeLinkDepends.h | 28 +- Source/cmComputeLinkInformation.cxx | 228 +- Source/cmComputeLinkInformation.h | 29 +- Source/cmComputeTargetDepends.cxx | 43 +- Source/cmComputeTargetDepends.h | 24 +- Source/cmConfigure.cmake.h.in | 28 +- Source/cmConfigureFileCommand.cxx | 76 +- Source/cmConfigureFileCommand.h | 43 +- Source/cmCoreTryCompile.cxx | 47 +- Source/cmCoreTryCompile.h | 23 +- Source/cmCreateTestSourceList.cxx | 23 +- Source/cmCreateTestSourceList.h | 23 +- Source/cmCustomCommand.cxx | 23 +- Source/cmCustomCommand.h | 23 +- Source/cmData.h | 23 +- Source/cmDefinePropertyCommand.cxx | 29 +- Source/cmDefinePropertyCommand.h | 29 +- Source/cmDefinitions.cxx | 162 + Source/cmDefinitions.h | 83 + Source/cmDepends.cxx | 63 +- Source/cmDepends.h | 36 +- Source/cmDependsC.cxx | 58 +- Source/cmDependsC.h | 27 +- Source/cmDependsFortran.cxx | 23 +- Source/cmDependsFortran.h | 23 +- Source/cmDependsFortranLexer.cxx | 48 +- Source/cmDependsFortranLexer.h | 23 +- Source/cmDependsFortranLexer.in.l | 24 +- Source/cmDependsFortranParser.cxx | 538 +- Source/cmDependsFortranParser.h | 23 +- Source/cmDependsFortranParser.y | 76 +- Source/cmDependsFortranParserTokens.h | 29 +- Source/cmDependsJava.cxx | 26 +- Source/cmDependsJava.h | 26 +- Source/cmDependsJavaLexer.cxx | 23 +- Source/cmDependsJavaLexer.h | 23 +- Source/cmDependsJavaLexer.in.l | 23 +- Source/cmDependsJavaParser.cxx | 23 +- Source/cmDependsJavaParser.y | 23 +- Source/cmDependsJavaParserHelper.cxx | 33 +- Source/cmDependsJavaParserHelper.h | 54 +- Source/cmDocumentVariables.cxx | 263 +- Source/cmDocumentVariables.h | 23 +- Source/cmDocumentation.cxx | 58 +- Source/cmDocumentation.h | 23 +- Source/cmDocumentationFormatter.cxx | 23 +- Source/cmDocumentationFormatter.h | 23 +- Source/cmDocumentationFormatterDocbook.cxx | 23 +- Source/cmDocumentationFormatterDocbook.h | 23 +- Source/cmDocumentationFormatterHTML.cxx | 29 +- Source/cmDocumentationFormatterHTML.h | 23 +- Source/cmDocumentationFormatterMan.cxx | 23 +- Source/cmDocumentationFormatterMan.h | 23 +- Source/cmDocumentationFormatterText.cxx | 25 +- Source/cmDocumentationFormatterText.h | 23 +- Source/cmDocumentationFormatterUsage.cxx | 23 +- Source/cmDocumentationFormatterUsage.h | 23 +- Source/cmDocumentationSection.cxx | 23 +- Source/cmDocumentationSection.h | 23 +- Source/cmDumpDocumentation.cxx | 23 +- Source/cmDynamicLoader.cxx | 23 +- Source/cmDynamicLoader.h | 23 +- Source/cmELF.cxx | 23 +- Source/cmELF.h | 23 +- Source/cmElseCommand.cxx | 23 +- Source/cmElseCommand.h | 23 +- Source/cmElseIfCommand.cxx | 23 +- Source/cmElseIfCommand.h | 23 +- Source/cmEnableLanguageCommand.cxx | 23 +- Source/cmEnableLanguageCommand.h | 25 +- Source/cmEnableTestingCommand.cxx | 23 +- Source/cmEnableTestingCommand.h | 23 +- Source/cmEndForEachCommand.cxx | 23 +- Source/cmEndForEachCommand.h | 23 +- Source/cmEndFunctionCommand.cxx | 23 +- Source/cmEndFunctionCommand.h | 23 +- Source/cmEndIfCommand.cxx | 23 +- Source/cmEndIfCommand.h | 23 +- Source/cmEndMacroCommand.cxx | 23 +- Source/cmEndMacroCommand.h | 23 +- Source/cmEndWhileCommand.cxx | 23 +- Source/cmEndWhileCommand.h | 23 +- Source/cmExecProgramCommand.cxx | 23 +- Source/cmExecProgramCommand.h | 23 +- Source/cmExecuteProcessCommand.cxx | 27 +- Source/cmExecuteProcessCommand.h | 23 +- Source/cmExecutionStatus.h | 23 +- Source/cmExportBuildFileGenerator.cxx | 23 +- Source/cmExportBuildFileGenerator.h | 23 +- Source/cmExportCommand.cxx | 187 +- Source/cmExportCommand.h | 45 +- Source/cmExportFileGenerator.cxx | 75 +- Source/cmExportFileGenerator.h | 26 +- Source/cmExportInstallFileGenerator.cxx | 23 +- Source/cmExportInstallFileGenerator.h | 23 +- Source/cmExportLibraryDependencies.cxx | 23 +- Source/cmExportLibraryDependencies.h | 24 +- Source/cmExprLexer.cxx | 23 +- Source/cmExprLexer.h | 23 +- Source/cmExprLexer.in.l | 23 +- Source/cmExprParser.cxx | 23 +- Source/cmExprParser.y | 23 +- Source/cmExprParserHelper.cxx | 23 +- Source/cmExprParserHelper.h | 23 +- Source/cmExternalMakefileProjectGenerator.cxx | 24 +- Source/cmExternalMakefileProjectGenerator.h | 23 +- Source/cmExtraCodeBlocksGenerator.cxx | 336 +- Source/cmExtraCodeBlocksGenerator.h | 29 +- Source/cmExtraEclipseCDT4Generator.cxx | 298 +- Source/cmExtraEclipseCDT4Generator.h | 36 +- Source/cmFLTKWrapUICommand.cxx | 23 +- Source/cmFLTKWrapUICommand.h | 24 +- Source/cmFileCommand.cxx | 1715 +- Source/cmFileCommand.h | 93 +- Source/cmFileTimeComparison.cxx | 23 +- Source/cmFileTimeComparison.h | 23 +- Source/cmFindBase.cxx | 23 +- Source/cmFindBase.h | 23 +- Source/cmFindCommon.cxx | 37 +- Source/cmFindCommon.h | 23 +- Source/cmFindFileCommand.cxx | 25 +- Source/cmFindFileCommand.h | 23 +- Source/cmFindLibraryCommand.cxx | 23 +- Source/cmFindLibraryCommand.h | 23 +- Source/cmFindPackageCommand.cxx | 248 +- Source/cmFindPackageCommand.h | 28 +- Source/cmFindPathCommand.cxx | 23 +- Source/cmFindPathCommand.h | 23 +- Source/cmFindProgramCommand.cxx | 23 +- Source/cmFindProgramCommand.h | 23 +- Source/cmForEachCommand.cxx | 75 +- Source/cmForEachCommand.h | 40 +- Source/cmFunctionBlocker.h | 23 +- Source/cmFunctionCommand.cxx | 23 +- Source/cmFunctionCommand.h | 25 +- Source/cmGeneratedFileStream.cxx | 81 +- Source/cmGeneratedFileStream.h | 23 +- Source/cmGeneratorExpression.cxx | 191 + Source/cmGeneratorExpression.h | 50 + Source/cmGetCMakePropertyCommand.cxx | 23 +- Source/cmGetCMakePropertyCommand.h | 23 +- Source/cmGetDirectoryPropertyCommand.cxx | 23 +- Source/cmGetDirectoryPropertyCommand.h | 50 +- Source/cmGetFilenameComponentCommand.cxx | 61 +- Source/cmGetFilenameComponentCommand.h | 23 +- Source/cmGetPropertyCommand.cxx | 69 +- Source/cmGetPropertyCommand.h | 26 +- Source/cmGetSourceFilePropertyCommand.cxx | 23 +- Source/cmGetSourceFilePropertyCommand.h | 23 +- Source/cmGetTargetPropertyCommand.cxx | 23 +- Source/cmGetTargetPropertyCommand.h | 23 +- Source/cmGetTestPropertyCommand.cxx | 23 +- Source/cmGetTestPropertyCommand.h | 23 +- Source/cmGlobalBorlandMakefileGenerator.cxx | 23 +- Source/cmGlobalBorlandMakefileGenerator.h | 23 +- Source/cmGlobalGenerator.cxx | 221 +- Source/cmGlobalGenerator.h | 83 +- Source/cmGlobalKdevelopGenerator.cxx | 30 +- Source/cmGlobalKdevelopGenerator.h | 25 +- Source/cmGlobalMSYSMakefileGenerator.cxx | 23 +- Source/cmGlobalMSYSMakefileGenerator.h | 23 +- Source/cmGlobalMinGWMakefileGenerator.cxx | 23 +- Source/cmGlobalMinGWMakefileGenerator.h | 23 +- Source/cmGlobalNMakeMakefileGenerator.cxx | 23 +- Source/cmGlobalNMakeMakefileGenerator.h | 23 +- Source/cmGlobalUnixMakefileGenerator3.cxx | 225 +- Source/cmGlobalUnixMakefileGenerator3.h | 49 +- Source/cmGlobalVisualStudio10Generator.cxx | 154 + Source/cmGlobalVisualStudio10Generator.h | 74 + Source/cmGlobalVisualStudio6Generator.cxx | 245 +- Source/cmGlobalVisualStudio6Generator.h | 28 +- Source/cmGlobalVisualStudio71Generator.cxx | 55 +- Source/cmGlobalVisualStudio71Generator.h | 26 +- Source/cmGlobalVisualStudio7Generator.cxx | 173 +- Source/cmGlobalVisualStudio7Generator.h | 49 +- Source/cmGlobalVisualStudio8Generator.cxx | 68 +- Source/cmGlobalVisualStudio8Generator.h | 28 +- .../cmGlobalVisualStudio8Win64Generator.cxx | 23 +- Source/cmGlobalVisualStudio8Win64Generator.h | 23 +- Source/cmGlobalVisualStudio9Generator.cxx | 23 +- Source/cmGlobalVisualStudio9Generator.h | 25 +- .../cmGlobalVisualStudio9Win64Generator.cxx | 23 +- Source/cmGlobalVisualStudio9Win64Generator.h | 23 +- Source/cmGlobalVisualStudioGenerator.cxx | 114 +- Source/cmGlobalVisualStudioGenerator.h | 43 +- Source/cmGlobalWatcomWMakeGenerator.cxx | 23 +- Source/cmGlobalWatcomWMakeGenerator.h | 23 +- Source/cmGlobalXCode21Generator.cxx | 47 - Source/cmGlobalXCode21Generator.h | 41 - Source/cmGlobalXCodeGenerator.cxx | 697 +- Source/cmGlobalXCodeGenerator.h | 58 +- Source/cmGraphAdjacencyList.h | 23 +- Source/cmHexFileConverter.cxx | 25 +- Source/cmHexFileConverter.h | 23 +- Source/cmIDEFlagTable.h | 40 + Source/cmIDEOptions.cxx | 173 + Source/cmIDEOptions.h | 59 + Source/cmIfCommand.cxx | 373 +- Source/cmIfCommand.h | 115 +- Source/cmIncludeCommand.cxx | 23 +- Source/cmIncludeCommand.h | 23 +- Source/cmIncludeDirectoryCommand.cxx | 25 +- Source/cmIncludeDirectoryCommand.h | 23 +- Source/cmIncludeExternalMSProjectCommand.cxx | 57 +- Source/cmIncludeExternalMSProjectCommand.h | 23 +- Source/cmIncludeRegularExpressionCommand.cxx | 23 +- Source/cmIncludeRegularExpressionCommand.h | 23 +- Source/cmInstallCommand.cxx | 171 +- Source/cmInstallCommand.h | 25 +- Source/cmInstallCommandArguments.cxx | 23 +- Source/cmInstallCommandArguments.h | 23 +- Source/cmInstallDirectoryGenerator.cxx | 32 +- Source/cmInstallDirectoryGenerator.h | 28 +- Source/cmInstallExportGenerator.cxx | 27 +- Source/cmInstallExportGenerator.h | 23 +- Source/cmInstallFilesCommand.cxx | 23 +- Source/cmInstallFilesCommand.h | 24 +- Source/cmInstallFilesGenerator.cxx | 26 +- Source/cmInstallFilesGenerator.h | 24 +- Source/cmInstallGenerator.cxx | 152 +- Source/cmInstallGenerator.h | 71 +- Source/cmInstallProgramsCommand.cxx | 23 +- Source/cmInstallProgramsCommand.h | 25 +- Source/cmInstallScriptGenerator.cxx | 23 +- Source/cmInstallScriptGenerator.h | 23 +- Source/cmInstallTargetGenerator.cxx | 100 +- Source/cmInstallTargetGenerator.h | 32 +- Source/cmInstallTargetsCommand.cxx | 23 +- Source/cmInstallTargetsCommand.h | 23 +- Source/cmLinkDirectoriesCommand.cxx | 23 +- Source/cmLinkDirectoriesCommand.h | 23 +- Source/cmLinkLibrariesCommand.cxx | 23 +- Source/cmLinkLibrariesCommand.h | 23 +- Source/cmListCommand.cxx | 23 +- Source/cmListCommand.h | 27 +- Source/cmListFileCache.cxx | 23 +- Source/cmListFileCache.h | 23 +- Source/cmListFileLexer.c | 25 +- Source/cmListFileLexer.h | 23 +- Source/cmListFileLexer.in.l | 23 +- Source/cmLoadCacheCommand.cxx | 23 +- Source/cmLoadCacheCommand.h | 23 +- Source/cmLoadCommandCommand.cxx | 25 +- Source/cmLoadCommandCommand.h | 23 +- Source/cmLocalGenerator.cxx | 402 +- Source/cmLocalGenerator.h | 47 +- Source/cmLocalUnixMakefileGenerator3.cxx | 259 +- Source/cmLocalUnixMakefileGenerator3.h | 58 +- Source/cmLocalVisualStudio10Generator.cxx | 119 + Source/cmLocalVisualStudio10Generator.h | 41 + Source/cmLocalVisualStudio6Generator.cxx | 219 +- Source/cmLocalVisualStudio6Generator.h | 36 +- Source/cmLocalVisualStudio7Generator.cxx | 738 +- Source/cmLocalVisualStudio7Generator.h | 72 +- Source/cmLocalVisualStudioGenerator.cxx | 53 +- Source/cmLocalVisualStudioGenerator.h | 35 +- Source/cmLocalXCodeGenerator.cxx | 23 +- Source/cmLocalXCodeGenerator.h | 23 +- Source/cmMacroCommand.cxx | 23 +- Source/cmMacroCommand.h | 25 +- Source/cmMakeDepend.cxx | 23 +- Source/cmMakeDepend.h | 23 +- Source/cmMakeDirectoryCommand.cxx | 23 +- Source/cmMakeDirectoryCommand.h | 23 +- Source/cmMakefile.cxx | 434 +- Source/cmMakefile.h | 53 +- .../cmMakefileExecutableTargetGenerator.cxx | 105 +- Source/cmMakefileExecutableTargetGenerator.h | 23 +- Source/cmMakefileLibraryTargetGenerator.cxx | 273 +- Source/cmMakefileLibraryTargetGenerator.h | 23 +- Source/cmMakefileTargetGenerator.cxx | 285 +- Source/cmMakefileTargetGenerator.h | 41 +- Source/cmMakefileUtilityTargetGenerator.cxx | 27 +- Source/cmMakefileUtilityTargetGenerator.h | 23 +- Source/cmMarkAsAdvancedCommand.cxx | 23 +- Source/cmMarkAsAdvancedCommand.h | 23 +- Source/cmMathCommand.cxx | 23 +- Source/cmMathCommand.h | 23 +- Source/cmMessageCommand.cxx | 68 +- Source/cmMessageCommand.h | 53 +- Source/cmObject.h | 23 +- Source/cmOptionCommand.cxx | 31 +- Source/cmOptionCommand.h | 23 +- Source/cmOrderDirectories.cxx | 82 +- Source/cmOrderDirectories.h | 26 +- Source/cmOutputRequiredFilesCommand.cxx | 23 +- Source/cmOutputRequiredFilesCommand.h | 23 +- Source/cmPolicies.cxx | 82 +- Source/cmPolicies.h | 27 +- Source/cmProcessTools.cxx | 88 + Source/cmProcessTools.h | 81 + Source/cmProjectCommand.cxx | 27 +- Source/cmProjectCommand.h | 23 +- Source/cmProperty.cxx | 23 +- Source/cmProperty.h | 25 +- Source/cmPropertyDefinition.cxx | 23 +- Source/cmPropertyDefinition.h | 23 +- Source/cmPropertyDefinitionMap.cxx | 26 +- Source/cmPropertyDefinitionMap.h | 23 +- Source/cmPropertyMap.cxx | 23 +- Source/cmPropertyMap.h | 23 +- Source/cmQTWrapCPPCommand.cxx | 23 +- Source/cmQTWrapCPPCommand.h | 23 +- Source/cmQTWrapUICommand.cxx | 23 +- Source/cmQTWrapUICommand.h | 23 +- Source/cmRemoveCommand.cxx | 23 +- Source/cmRemoveCommand.h | 23 +- Source/cmRemoveDefinitionsCommand.cxx | 23 +- Source/cmRemoveDefinitionsCommand.h | 23 +- Source/cmReturnCommand.cxx | 23 +- Source/cmReturnCommand.h | 23 +- Source/cmScriptGenerator.cxx | 227 + Source/cmScriptGenerator.h | 94 + Source/cmSeparateArgumentsCommand.cxx | 117 +- Source/cmSeparateArgumentsCommand.h | 41 +- Source/cmSetCommand.cxx | 33 +- Source/cmSetCommand.h | 38 +- Source/cmSetDirectoryPropertiesCommand.cxx | 23 +- Source/cmSetDirectoryPropertiesCommand.h | 25 +- Source/cmSetPropertyCommand.cxx | 136 +- Source/cmSetPropertyCommand.h | 29 +- Source/cmSetSourceFilesPropertiesCommand.cxx | 23 +- Source/cmSetSourceFilesPropertiesCommand.h | 23 +- Source/cmSetTargetPropertiesCommand.cxx | 23 +- Source/cmSetTargetPropertiesCommand.h | 30 +- Source/cmSetTestsPropertiesCommand.cxx | 50 +- Source/cmSetTestsPropertiesCommand.h | 33 +- Source/cmSiteNameCommand.cxx | 23 +- Source/cmSiteNameCommand.h | 23 +- Source/cmSourceFile.cxx | 33 +- Source/cmSourceFile.h | 23 +- Source/cmSourceFileLocation.cxx | 23 +- Source/cmSourceFileLocation.h | 23 +- Source/cmSourceGroup.cxx | 39 +- Source/cmSourceGroup.h | 33 +- Source/cmSourceGroupCommand.cxx | 23 +- Source/cmSourceGroupCommand.h | 23 +- Source/cmStandardIncludes.h | 51 +- Source/cmStandardLexer.h | 23 +- Source/cmStringCommand.cxx | 25 +- Source/cmStringCommand.h | 23 +- Source/cmSubdirCommand.cxx | 23 +- Source/cmSubdirCommand.h | 26 +- Source/cmSubdirDependsCommand.cxx | 23 +- Source/cmSubdirDependsCommand.h | 23 +- Source/cmSystemTools.cxx | 316 +- Source/cmSystemTools.h | 65 +- Source/cmTarget.cxx | 1500 +- Source/cmTarget.h | 208 +- Source/cmTargetLinkLibrariesCommand.cxx | 23 +- Source/cmTargetLinkLibrariesCommand.h | 57 +- Source/cmTest.cxx | 88 +- Source/cmTest.h | 55 +- Source/cmTestGenerator.cxx | 168 + Source/cmTestGenerator.h | 43 + Source/cmTryCompileCommand.cxx | 23 +- Source/cmTryCompileCommand.h | 23 +- Source/cmTryRunCommand.cxx | 23 +- Source/cmTryRunCommand.h | 25 +- Source/cmUnsetCommand.cxx | 23 +- Source/cmUnsetCommand.h | 23 +- Source/cmUseMangledMesaCommand.cxx | 23 +- Source/cmUseMangledMesaCommand.h | 23 +- Source/cmUtilitySourceCommand.cxx | 25 +- Source/cmUtilitySourceCommand.h | 23 +- Source/cmVS10CLFlagTable.h | 258 + Source/cmVS10LibFlagTable.h | 102 + Source/cmVS10LinkFlagTable.h | 302 + Source/cmVariableRequiresCommand.cxx | 23 +- Source/cmVariableRequiresCommand.h | 23 +- Source/cmVariableWatch.cxx | 23 +- Source/cmVariableWatch.h | 23 +- Source/cmVariableWatchCommand.cxx | 23 +- Source/cmVariableWatchCommand.h | 27 +- Source/cmVersion.cxx | 49 +- Source/cmVersion.h | 35 +- Source/cmVersionConfig.h.in | 15 + Source/cmVersionMacros.h | 35 + Source/cmVisualStudio10TargetGenerator.cxx | 1292 + Source/cmVisualStudio10TargetGenerator.h | 91 + Source/cmVisualStudioGeneratorOptions.cxx | 302 + Source/cmVisualStudioGeneratorOptions.h | 73 + Source/cmWhileCommand.cxx | 56 +- Source/cmWhileCommand.h | 23 +- Source/cmWin32ProcessExecution.cxx | 23 +- Source/cmWin32ProcessExecution.h | 23 +- Source/cmWriteFileCommand.cxx | 23 +- Source/cmWriteFileCommand.h | 23 +- Source/cmXCode21Object.cxx | 23 +- Source/cmXCode21Object.h | 23 +- Source/cmXCodeObject.cxx | 23 +- Source/cmXCodeObject.h | 23 +- Source/cmXMLParser.cxx | 55 +- Source/cmXMLParser.h | 29 +- Source/cmXMLSafe.cxx | 97 + Source/cmXMLSafe.h | 44 + Source/cmake.cxx | 271 +- Source/cmake.h | 31 +- Source/cmakemain.cxx | 125 +- Source/cmaketest.h.in | 23 +- Source/cmakewizard.cxx | 23 +- Source/cmakewizard.h | 23 +- Source/cmakexbuild.cxx | 23 +- Source/cmparseMSBuildXML.py | 304 + Source/cmw9xcom.cxx | 23 +- Source/ctest.cxx | 55 +- Source/kwsys/Base64.c | 20 +- Source/kwsys/Base64.h.in | 52 +- Source/kwsys/CMakeLists.txt | 122 +- Source/kwsys/CPU.h.in | 20 +- Source/kwsys/CTestConfig.cmake | 11 + Source/kwsys/CommandLineArguments.cxx | 28 +- Source/kwsys/CommandLineArguments.hxx.in | 20 +- Source/kwsys/Configure.h.in | 30 +- Source/kwsys/Configure.hxx.in | 42 +- Source/kwsys/Copyright.txt | 46 +- Source/kwsys/DateStamp.h.in | 20 +- Source/kwsys/Directory.cxx | 20 +- Source/kwsys/Directory.hxx.in | 20 +- Source/kwsys/DynamicLoader.cxx | 20 +- Source/kwsys/DynamicLoader.hxx.in | 20 +- Source/kwsys/EncodeExecutable.c | 20 +- Source/kwsys/FundamentalType.h.in | 61 +- Source/kwsys/Glob.cxx | 36 +- Source/kwsys/Glob.hxx.in | 23 +- Source/kwsys/IOStream.cxx | 20 +- Source/kwsys/IOStream.hxx.in | 20 +- Source/kwsys/MD5.c | 38 +- Source/kwsys/MD5.h.in | 60 +- Source/kwsys/Process.h.in | 228 +- Source/kwsys/ProcessFwd9x.c | 20 +- Source/kwsys/ProcessUNIX.c | 422 +- Source/kwsys/ProcessWin32.c | 30 +- Source/kwsys/Registry.cxx | 20 +- Source/kwsys/Registry.hxx.in | 20 +- Source/kwsys/RegularExpression.cxx | 41 +- Source/kwsys/RegularExpression.hxx.in | 44 +- Source/kwsys/SharedForward.h.in | 248 +- Source/kwsys/String.c | 32 +- Source/kwsys/String.h.in | 32 +- Source/kwsys/String.hxx.in | 20 +- Source/kwsys/System.c | 297 +- Source/kwsys/System.h.in | 104 +- Source/kwsys/SystemInformation.cxx | 325 +- Source/kwsys/SystemInformation.hxx.in | 24 +- Source/kwsys/SystemTools.cxx | 288 +- Source/kwsys/SystemTools.hxx.in | 47 +- Source/kwsys/Terminal.c | 21 +- Source/kwsys/Terminal.h.in | 128 +- Source/kwsys/auto_ptr.hxx.in | 20 +- Source/kwsys/hash_fun.hxx.in | 20 +- Source/kwsys/hash_map.hxx.in | 20 +- Source/kwsys/hash_set.hxx.in | 20 +- Source/kwsys/hashtable.hxx.in | 28 +- Source/kwsys/kwsysDateStamp.cmake | 17 +- Source/kwsys/kwsysDateStamp.py | 22 + Source/kwsys/kwsysHeaderDump.pl | 18 +- Source/kwsys/kwsysPlatformTests.cmake | 11 + Source/kwsys/kwsysPlatformTestsC.c | 11 + Source/kwsys/kwsysPlatformTestsCXX.cxx | 30 + Source/kwsys/kwsysPrivate.h | 22 +- Source/kwsys/kwsys_cstddef.hxx.in | 20 +- Source/kwsys/kwsys_ios_fstream.h.in | 20 +- Source/kwsys/kwsys_ios_iosfwd.h.in | 20 +- Source/kwsys/kwsys_ios_iostream.h.in | 20 +- Source/kwsys/kwsys_ios_sstream.h.in | 20 +- Source/kwsys/kwsys_stl.hxx.in | 20 +- Source/kwsys/kwsys_stl_string.hxx.in | 20 +- Source/kwsys/testAutoPtr.cxx | 29 +- Source/kwsys/testCommandLineArguments.cxx | 20 +- Source/kwsys/testCommandLineArguments1.cxx | 20 +- Source/kwsys/testDynamicLoader.cxx | 20 +- Source/kwsys/testDynload.c | 11 + Source/kwsys/testEncode.c | 26 +- Source/kwsys/testFail.c | 11 + Source/kwsys/testHashSTL.cxx | 20 +- Source/kwsys/testIOS.cxx | 48 +- Source/kwsys/testProcess.c | 22 +- Source/kwsys/testRegistry.cxx | 21 +- Source/kwsys/testSharedForward.c.in | 36 + Source/kwsys/testSystemInformation.cxx | 51 +- Source/kwsys/testSystemTools.cxx | 20 +- Source/kwsys/testSystemTools.h.in | 20 +- Source/kwsys/testTerminal.c | 20 +- Templates/CMakeLists.txt | 6 - Templates/EXEWinHeader.dsptemplate | 16 +- Templates/UtilityHeader.dsptemplate | 4 - Tests/BuildDepends/CMakeLists.txt | 0 Tests/BuildDepends/Project/CMakeLists.txt | 0 Tests/BuildDepends/Project/bar.cxx | 0 Tests/BundleGeneratorTest/BundleIcon.icns | Bin 33478 -> 33452 bytes Tests/BundleGeneratorTest/CMakeLists.txt | 13 +- .../BundleGeneratorTest/CustomVolumeIcon.icns | Bin 0 -> 37827 bytes Tests/CMakeBuildTest.cmake.in | 59 + Tests/CMakeLists.txt | 488 +- Tests/CMakeTests/CMakeLists.txt | 28 +- Tests/CMakeTests/CheckCMakeTest.cmake | 30 + Tests/CMakeTests/CheckSourceTreeTest.cmake.in | 182 + Tests/CMakeTests/ConfigureFile-BadArg.cmake | 1 + Tests/CMakeTests/ConfigureFile-DirInput.cmake | 1 + .../CMakeTests/ConfigureFile-DirOutput.cmake | 5 + Tests/CMakeTests/ConfigureFile-Relative.cmake | 4 + Tests/CMakeTests/ConfigureFileTest.cmake.in | 16 + Tests/CMakeTests/File-Copy-BadArg.cmake | 1 + Tests/CMakeTests/File-Copy-BadPerm.cmake | 1 + Tests/CMakeTests/File-Copy-BadRegex.cmake | 1 + Tests/CMakeTests/File-Copy-EarlyArg.cmake | 1 + Tests/CMakeTests/File-Copy-LateArg.cmake | 1 + Tests/CMakeTests/File-Copy-NoDest.cmake | 1 + Tests/CMakeTests/File-Copy-NoFile.cmake | 1 + Tests/CMakeTests/FileTest.cmake.in | 25 + .../CMakeTests/GetPrerequisitesTest.cmake.in | 1 - .../CMakeTests/ImplicitLinkInfoTest.cmake.in | 355 + Tests/CMakeTests/MessageTest.cmake.in | 30 + Tests/CMakeTests/MessageTestScript.cmake | 4 + Tests/CMakeTests/ModuleNoticesTest.cmake.in | 46 + .../CMakeTests/SeparateArgumentsTest.cmake.in | 25 + Tests/CMakeTests/VariableWatchTest.cmake.in | 9 + Tests/CMakeTests/VersionTest.cmake.in | 9 + Tests/CPackComponents/CMakeLists.txt | 37 +- Tests/CPackComponents/Issue 7470.html | 9 + .../CTestTestScriptMode.cmake.in | 14 + Tests/CTestTest2/test.cmake.in | 5 + Tests/CTestTest3/test.cmake.in | 4 +- Tests/CTestTestCrash/CMakeLists.txt | 19 + Tests/CTestTestCrash/CTestConfig.cmake | 7 + Tests/CTestTestCrash/crash.cxx | 6 + Tests/CTestTestCrash/test.cmake.in | 34 + Tests/CTestTestFailure/CMakeLists.txt | 19 + Tests/CTestTestFailure/CTestConfig.cmake | 7 + Tests/CTestTestFailure/badCode.cxx | 4 + Tests/CTestTestFailure/testNoBuild.cmake.in | 33 + Tests/CTestTestFailure/testNoExe.cmake.in | 31 + Tests/CTestTestParallel/CMakeLists.txt | 23 + Tests/CTestTestParallel/CTestConfig.cmake | 7 + Tests/CTestTestParallel/lockFile.c | 20 + Tests/CTestTestParallel/test.cmake.in | 32 + Tests/CTestTestTimeout/CMakeLists.txt | 18 + Tests/CTestTestTimeout/CTestConfig.cmake | 7 + Tests/CTestTestTimeout/test.cmake.in | 32 + Tests/CTestTestTimeout/timeout.c | 15 + Tests/CTestUpdateBZR.cmake.in | 146 + Tests/CTestUpdateCVS.cmake.in | 47 +- Tests/CTestUpdateCommon.cmake | 34 +- Tests/CTestUpdateGIT.cmake.in | 181 + Tests/CTestUpdateHG.cmake.in | 163 + Tests/CTestUpdateSVN.cmake.in | 27 +- Tests/Complex/CMakeLists.txt | 10 +- Tests/Complex/Executable/A.cxx | 0 Tests/Complex/Executable/CMakeLists.txt | 9 +- Tests/Complex/Executable/Included.cmake | 0 .../Executable/Sub1/NameConflictTest.c | 0 .../Executable/Sub2/NameConflictTest.c | 0 Tests/Complex/Executable/complex.file.cxx | 0 Tests/Complex/Executable/testcflags.c | 0 Tests/Complex/Library/CMakeLists.txt | 6 +- Tests/Complex/Library/moduleFile.c | 0 Tests/Complex/Library/moduleFile.h | 0 Tests/ComplexOneConfig/CMakeLists.txt | 10 +- Tests/ComplexOneConfig/Executable/A.cxx | 0 .../Executable/CMakeLists.txt | 9 +- .../Executable/Included.cmake | 0 .../Executable/Sub1/NameConflictTest.c | 0 .../Executable/Sub2/NameConflictTest.c | 0 .../Executable/complex.file.cxx | 0 .../ComplexOneConfig/Executable/testcflags.c | 0 Tests/ComplexOneConfig/Library/CMakeLists.txt | 6 +- Tests/ComplexOneConfig/Library/moduleFile.c | 0 Tests/ComplexOneConfig/Library/moduleFile.h | 0 Tests/ComplexRelativePaths/CMakeLists.txt | 10 +- Tests/ComplexRelativePaths/Executable/A.cxx | 0 .../Executable/CMakeLists.txt | 9 +- .../Executable/Included.cmake | 0 .../Executable/Sub1/NameConflictTest.c | 0 .../Executable/Sub2/NameConflictTest.c | 0 .../Executable/complex.file.cxx | 0 .../Executable/testcflags.c | 0 .../Library/CMakeLists.txt | 6 +- .../ComplexRelativePaths/Library/moduleFile.c | 0 .../ComplexRelativePaths/Library/moduleFile.h | 0 Tests/CustComDepend/CMakeLists.txt | 0 Tests/CustComDepend/bar.h | 0 Tests/CustComDepend/foo.cxx | 0 Tests/CustomCommand/CMakeLists.txt | 29 +- .../GeneratedHeader/CMakeLists.txt | 0 .../CMakeLists.txt | 0 .../customTarget.c | 0 .../working.c.in | 0 Tests/Dependency/CMakeLists.txt | 2 - Tests/Dependency/Case2/CMakeLists.txt | 7 +- Tests/Dependency/Case2/foo1c.c | 2 + Tests/Dependency/Case2/foo2c.c | 2 + Tests/Dependency/Case2/foo3b.c | 3 +- Tests/Dependency/Case2/foo3c.c | 1 + Tests/Dependency/Case4/CMakeLists.txt | 4 - Tests/DocTest/CMakeLists.txt | 0 Tests/DocTest/DocTest.cxx | 0 Tests/EnforceConfig.cmake.in | 29 + Tests/Environment/CMakeLists.txt | 26 + Tests/Environment/main.cxx | 16 + Tests/ExportImport/CMakeLists.txt | 31 +- Tests/ExportImport/Export/CMakeLists.txt | 48 +- Tests/ExportImport/Export/testLib5.c | 7 + Tests/ExportImport/Export/testLib6.cxx | 6 + Tests/ExportImport/Export/testLib6c.c | 5 + Tests/ExportImport/Export/testLibCycleA1.c | 2 + Tests/ExportImport/Export/testLibCycleA2.c | 2 + Tests/ExportImport/Export/testLibCycleA3.c | 2 + Tests/ExportImport/Export/testLibCycleB1.c | 2 + Tests/ExportImport/Export/testLibCycleB2.c | 2 + Tests/ExportImport/Export/testLibCycleB3.c | 1 + Tests/ExportImport/Import/A/CMakeLists.txt | 18 +- Tests/ExportImport/Import/A/imp_testExe1.c | 4 + Tests/ExportImport/Import/CMakeLists.txt | 9 +- Tests/ExportImport/InitialCache.cmake.in | 14 + Tests/ExternalProject/CMakeLists.txt | 356 + Tests/ExternalProject/Step1.tar | Bin 0 -> 5632 bytes Tests/ExternalProject/Step1.tgz | Bin 0 -> 791 bytes Tests/ExternalProject/Step1NoDir.tar | Bin 0 -> 5120 bytes Tests/ExternalProject/Step1NoDir.tgz | Bin 0 -> 770 bytes Tests/ExternalProject/Step1Patch.cmake | 25 + Tests/ExternalProject/TryCheckout.cmake | 54 + Tests/ExternalProject/cvsrepo.tgz | Bin 0 -> 1317 bytes Tests/ExternalProject/svnrepo.tgz | Bin 0 -> 3673 bytes Tests/FindModulesExecuteAll/CMakeLists.txt | 2 +- Tests/FindPackageTest/CMakeLists.txt | 13 + Tests/FindPackageTest/Exporter/CMakeLists.txt | 12 + .../CMakeTestExportPackageConfig.cmake.in | 1 + ...akeTestExportPackageConfigVersion.cmake.in | 6 + Tests/FindPackageTest/Exporter/dummy.c | 1 + Tests/Fortran/CMakeLists.txt | 97 +- Tests/Fortran/foo.c | 11 - Tests/Fortran/foo.f | 0 Tests/Fortran/hello.f | 0 Tests/Fortran/mainc.c | 5 + Tests/Fortran/maincxx.c | 6 + Tests/Fortran/myc.c | 12 + Tests/Fortran/mycxx.cxx | 6 + Tests/Fortran/mysub.f | 1 + Tests/FunctionTest/CMakeLists.txt | 37 +- Tests/FunctionTest/SubDirScope/CMakeLists.txt | 18 +- Tests/FunctionTest/Util.cmake | 0 Tests/JCTest/CMakeLists.txt | 9 + Tests/JCTest/TestTime.cxx | 12 + Tests/Java/A.java | 0 Tests/Java/CMakeLists.txt | 0 Tests/Java/HelloWorld.java | 0 Tests/LibName/CMakeLists.txt | 0 Tests/LibName/bar.c | 0 Tests/LibName/foo.c | 0 Tests/LibName/foobar.c | 0 Tests/LinkLanguage/CMakeLists.txt | 10 + Tests/LinkLanguage/LinkLanguage.c | 6 + Tests/LinkLanguage/foo.cxx | 6 + .../LoadCommand/CMakeCommands/CMakeLists.txt | 2 - Tests/LoadCommand/LoadedCommand.cxx.in | 0 .../CMakeCommands/CMakeLists.txt | 2 - .../LoadCommandOneConfig/LoadedCommand.cxx.in | 0 Tests/MacroTest/CMakeLists.txt | 2 - Tests/MakeClean/CMakeLists.txt | 7 - Tests/ModuleDefinition/CMakeLists.txt | 22 + Tests/ModuleDefinition/example_dll.c | 1 + Tests/ModuleDefinition/example_dll.def | 2 + Tests/ModuleDefinition/example_dll_2.c | 1 + Tests/ModuleDefinition/example_dll_2.def | 2 + Tests/ModuleDefinition/example_exe.c | 14 + Tests/ModuleDefinition/example_exe.def | 2 + Tests/ModuleDefinition/example_mod_1.c | 21 + Tests/NewlineArgs/CMakeLists.txt | 0 Tests/NewlineArgs/cxxonly.cxx | 0 Tests/NewlineArgs/libcxx1.cxx | 0 Tests/NewlineArgs/libcxx1.h | 0 Tests/NewlineArgs/libcxx2.h.in | 0 Tests/OutOfSource/CMakeLists.txt | 0 .../OutOfSourceSubdir/CMakeLists.txt | 4 +- .../OutOfSource/OutOfSourceSubdir/simple.cxx | 0 .../OutOfSourceSubdir/simple.cxx.in | 0 .../OutOfSource/OutOfSourceSubdir/testlib.cxx | 0 Tests/OutOfSource/OutOfSourceSubdir/testlib.h | 0 Tests/OutOfSource/SubDir/CMakeLists.txt | 0 Tests/OutOfSource/testdp.h.in | 0 Tests/Plugin/CMakeLists.txt | 7 +- Tests/Policy0002/A/CMakeLists.txt | 1 + Tests/Policy0002/CMakeLists.txt | 5 + Tests/Policy0002/policy0002.c | 4 + Tests/PreOrder/CMakeLists.txt | 0 Tests/PreOrder/Library/CMakeLists.txt | 0 Tests/PreOrder/simple.cxx | 0 Tests/PrecompiledHeader/CMakeLists.txt | 5 +- Tests/Preprocess/CMakeLists.txt | 20 +- Tests/Properties/CMakeLists.txt | 30 + Tests/Properties/SubDir/properties3.cxx | 0 Tests/Properties/properties.h.in | 0 Tests/Properties/properties2.h | 0 Tests/ReturnTest/CMakeLists.txt | 2 - Tests/ReturnTest/returnTest.c | 0 Tests/ReturnTest/subdir/CMakeLists.txt | 0 Tests/RuntimePath/CMakeLists.txt | 4 - Tests/SameName/CMakeLists.txt | 0 Tests/SameName/Exe1/CMakeLists.txt | 0 Tests/SameName/Exe1/conly.c | 0 Tests/SameName/Lib1/CMakeLists.txt | 0 Tests/SetLang/CMakeLists.txt | 0 Tests/SetLang/bar.c | 0 Tests/SetLang/foo.c | 0 Tests/Simple/simpleWe.cpp | 0 Tests/SimpleInstall/CMakeLists.txt | 9 +- Tests/SimpleInstallS2/CMakeLists.txt | 9 +- Tests/SourceGroups/CMakeLists.txt | 9 +- Tests/SourceGroups/README.txt | 1 + Tests/StringFileTest/CMakeLists.txt | 43 +- Tests/StringFileTest/test.bin | Bin 0 -> 5 bytes Tests/SubDir/CMakeLists.txt | 0 Tests/SubDir/Examples/CMakeLists.txt | 0 Tests/SubDir/Examples/example1/CMakeLists.txt | 0 Tests/SubDir/Examples/example1/example1.cxx | 0 Tests/SubDir/Examples/example2/CMakeLists.txt | 0 Tests/SubDir/Examples/example2/example2.cxx | 0 Tests/SubDir/Executable/CMakeLists.txt | 0 Tests/SubDir/Executable/test.cxx | 0 .../Another Subdir/pair+int.int.c | 0 .../Another Subdir/pair_int.int.c | 0 Tests/SubDirSpaces/Another Subdir/secondone.c | 0 .../Another Subdir/testfromsubdir.c | 0 Tests/SubDirSpaces/CMakeLists.txt | 0 .../Executable Sources/CMakeLists.txt | 0 .../SubDirSpaces/Executable Sources/test.cxx | 0 Tests/SubDirSpaces/Executable/CMakeLists.txt | 0 Tests/SubDirSpaces/Executable/test.cxx | 0 .../SubDirSpaces/Some Examples/CMakeLists.txt | 0 .../Some Examples/example1/CMakeLists.txt | 0 .../Some Examples/example1/example1.cxx | 0 .../Some Examples/example2/CMakeLists.txt | 0 .../Some Examples/example2/example2.cxx | 0 .../Some(x86) Sources/CMakeLists.txt | 0 Tests/SubDirSpaces/Some(x86) Sources/test.c | 0 .../SubDirSpaces/ThirdSubDir/pair+int.int1.c | 0 .../SubDirSpaces/ThirdSubDir/pair_int.int1.c | 0 .../ThirdSubDir/pair_p_int.int1.c | 0 .../ThirdSubDir/testfromauxsubdir.c | 0 Tests/SubDirSpaces/ThirdSubDir/thirdone.c | 0 .../vcl_algorithm+vcl_pair+double.foo.c | 0 .../vcl_algorithm_vcl_pair_double.foo.c | 0 Tests/SubProject/CMakeLists.txt | 0 Tests/SubProject/bar.cxx | 0 Tests/SubProject/car.cxx | 0 Tests/SubProject/foo/CMakeLists.txt | 0 Tests/SubProject/foo/foo.cxx | 0 Tests/SystemInformation/DumpInformation.cxx | 6 +- Tests/SystemInformation/DumpInformation.h.in | 2 +- Tests/SystemInformation/SystemInformation.in | 8 + Tests/TargetName/CMakeLists.txt | 0 Tests/TargetName/executables/CMakeLists.txt | 0 Tests/TargetName/executables/hello_world.c | 0 Tests/TargetName/scripts/CMakeLists.txt | 0 Tests/Testing/CMakeLists.txt | 37 +- Tests/Testing/Sub/Sub2/CMakeLists.txt | 2 +- Tests/Testing/driver.cmake | 40 + Tests/Testing/pcShared.c | 5 + Tests/Testing/pcShared.h | 16 + Tests/Testing/pcStatic.c | 4 + Tests/Testing/perconfig.c | 8 + Tests/TryCompile/CMakeLists.txt | 16 + Tests/TryCompile/Inner/CMakeLists.txt | 15 + Tests/TryCompile/Inner/innerexe.c | 2 + Tests/TryCompile/Inner/innerlib.c | 1 + Tests/TryCompile/exit_success.c | 0 Tests/TryCompile/exit_with_error.c | 0 Tests/TryCompile/fail.c | 0 Tests/TryCompile/pass.c | 0 Tests/Tutorial/Step1/CMakeLists.txt | 0 Tests/Tutorial/Step1/TutorialConfig.h.in | 0 Tests/Tutorial/Step1/tutorial.cxx | 0 Tests/Tutorial/Step2/CMakeLists.txt | 0 .../Step2/MathFunctions/CMakeLists.txt | 0 .../Step2/MathFunctions/MathFunctions.h | 0 Tests/Tutorial/Step2/MathFunctions/mysqrt.cxx | 0 Tests/Tutorial/Step2/TutorialConfig.h.in | 0 Tests/Tutorial/Step2/tutorial.cxx | 0 Tests/Tutorial/Step3/CMakeLists.txt | 0 .../Step3/MathFunctions/CMakeLists.txt | 0 .../Step3/MathFunctions/MathFunctions.h | 0 Tests/Tutorial/Step3/MathFunctions/mysqrt.cxx | 0 Tests/Tutorial/Step3/TutorialConfig.h.in | 0 Tests/Tutorial/Step3/tutorial.cxx | 0 Tests/Tutorial/Step4/CMakeLists.txt | 0 .../Step4/MathFunctions/CMakeLists.txt | 0 .../Step4/MathFunctions/MathFunctions.h | 0 Tests/Tutorial/Step4/MathFunctions/mysqrt.cxx | 0 Tests/Tutorial/Step4/TutorialConfig.h.in | 0 Tests/Tutorial/Step4/tutorial.cxx | 0 Tests/Tutorial/Step5/CMakeLists.txt | 0 .../Step5/MathFunctions/CMakeLists.txt | 0 .../Step5/MathFunctions/MakeTable.cxx | 2 +- .../Step5/MathFunctions/MathFunctions.h | 0 Tests/Tutorial/Step5/MathFunctions/mysqrt.cxx | 0 Tests/Tutorial/Step5/TutorialConfig.h.in | 0 Tests/Tutorial/Step5/tutorial.cxx | 0 .../Step6/MathFunctions/CMakeLists.txt | 0 .../Step6/MathFunctions/MakeTable.cxx | 2 +- .../Step6/MathFunctions/MathFunctions.h | 0 Tests/Tutorial/Step6/MathFunctions/mysqrt.cxx | 0 Tests/Tutorial/Step6/TutorialConfig.h.in | 0 Tests/Tutorial/Step6/tutorial.cxx | 0 .../Step7/MathFunctions/CMakeLists.txt | 0 .../Step7/MathFunctions/MakeTable.cxx | 2 +- .../Step7/MathFunctions/MathFunctions.h | 0 Tests/Tutorial/Step7/MathFunctions/mysqrt.cxx | 0 Tests/Tutorial/Step7/TutorialConfig.h.in | 0 Tests/Tutorial/Step7/tutorial.cxx | 0 Tests/UseWX/CMakeLists.txt | 8 - Tests/UseWX/WX.cxx | 82 - Tests/VSExternalInclude/CMakeLists.txt | 14 +- Tests/VSExternalInclude/Lib1/CMakeLists.txt | 0 Tests/VSExternalInclude/Lib1/lib1.cpp | 0 Tests/VSExternalInclude/Lib1/lib1.h | 0 Tests/VSExternalInclude/Lib2/CMakeLists.txt | 0 Tests/VSExternalInclude/Lib2/lib2.cpp | 0 Tests/VSExternalInclude/Lib2/lib2.h | 0 Tests/VSExternalInclude/main.cpp | 0 Tests/Wrapping/fakefluid.cxx | 0 Tests/Wrapping/qtnoqtmain.cxx | 0 Tests/X11/HelloWorldX11.cxx | 0 Tests/test_clean.cmake.in | 2 + Utilities/CMakeLists.txt | 25 + Utilities/Doxygen/CMakeLists.txt | 12 + Utilities/Doxygen/doxyfile.in | 1 - Utilities/KWStyle/CMake.kws.xml.in | 0 Utilities/KWStyle/CMakeLists.txt | 12 + Utilities/KWStyle/CMakeMoreChecks.kws.xml.in | 0 Utilities/KWStyle/CMakeOverwrite.txt | 0 Utilities/KWStyle/Headers/CMakeHeader.h | 23 +- Utilities/Release/CMakeInstall.bmp | Bin Utilities/Release/CMakeLogo.ico | Bin Utilities/Release/Cygwin/CMakeLists.txt | 0 Utilities/Release/Cygwin/README.cygwin.in | 0 Utilities/Release/README | 6 +- Utilities/Release/create-cmake-release.cmake | 24 +- Utilities/Release/dash2win64_release.cmake | 17 + Utilities/Release/dashsun1_release.cmake | 0 Utilities/Release/ferrari_sgi64_release.cmake | 17 + Utilities/Release/ferrari_sgi_release.cmake | 12 + Utilities/Release/hythloth_release.cmake | 0 Utilities/Release/magrathea_release.cmake | 2 + Utilities/Release/release_cmake.cmake | 25 +- Utilities/Release/release_cmake.sh.in | 29 +- Utilities/Release/upload_release.cmake | 2 +- Utilities/Release/v20n17_aix_release.cmake | 22 + Utilities/Release/vogon_cygwin.cmake | 1 + Utilities/Release/vogon_release.cmake | 4 +- Utilities/Release/vogon_release_qt.cmake | 16 + Utilities/cmThirdParty.h.in | 25 +- Utilities/cm_curl.h | 23 +- Utilities/cm_expat.h | 23 +- Utilities/cm_xmlrpc.h | 28 +- Utilities/cm_zlib.h | 23 +- Utilities/cmcompress/CMakeLists.txt | 2 + Utilities/cmcompress/Copyright.txt | 34 + Utilities/cmcurl/CMakeLists.txt | 42 +- Utilities/cmcurl/{curl.copyright => COPYING} | 6 +- Utilities/cmcurl/Platforms/WindowsCache.cmake | 0 Utilities/cmcurl/curl/curl.h | 2 +- Utilities/cmcurl/select.c | 2 +- Utilities/cmcurl/setup.h | 6 +- Utilities/cmexpat/CMakeLists.txt | 1 + Utilities/cmtar/CMakeLists.txt | 2 + Utilities/cmtar/append.c | 4 +- Utilities/cmtar/decode.c | 4 +- Utilities/cmtar/extract.c | 10 +- Utilities/cmtar/libtar.c | 4 +- Utilities/cmtar/util.c | 4 +- Utilities/cmtar/wrapper.c | 2 +- .../cmxmlrpc/CMake/TryCompileFromSource.cmake | 46 - Utilities/cmxmlrpc/CMakeLists.txt | 128 - Utilities/cmxmlrpc/XmlRpcCpp.cpp | 391 - Utilities/cmxmlrpc/XmlRpcCpp.h | 428 - Utilities/cmxmlrpc/bool.h | 18 - Utilities/cmxmlrpc/casprintf.c | 35 - Utilities/cmxmlrpc/casprintf.h | 19 - Utilities/cmxmlrpc/inline.h | 19 - Utilities/cmxmlrpc/linklist.h | 193 - Utilities/cmxmlrpc/mallocvar.h | 80 - Utilities/cmxmlrpc/synch_client.c | 68 - Utilities/cmxmlrpc/transport_config.h | 5 - Utilities/cmxmlrpc/win32_pthreads.c | 109 - Utilities/cmxmlrpc/xmlrpc.h | 784 - Utilities/cmxmlrpc/xmlrpc_amconfig.h.in | 37 - Utilities/cmxmlrpc/xmlrpc_array.c | 206 - Utilities/cmxmlrpc/xmlrpc_authcookie.c | 71 - Utilities/cmxmlrpc/xmlrpc_base64.c | 262 - Utilities/cmxmlrpc/xmlrpc_cgi.c | 295 - Utilities/cmxmlrpc/xmlrpc_cgi.h | 81 - Utilities/cmxmlrpc/xmlrpc_client.c | 977 - Utilities/cmxmlrpc/xmlrpc_client.h | 261 - Utilities/cmxmlrpc/xmlrpc_client_int.h | 102 - Utilities/cmxmlrpc/xmlrpc_config.h.in | 88 - Utilities/cmxmlrpc/xmlrpc_curl_transport.c | 759 - Utilities/cmxmlrpc/xmlrpc_curl_transport.h | 8 - Utilities/cmxmlrpc/xmlrpc_data.c | 1334 - Utilities/cmxmlrpc/xmlrpc_expat.c | 390 - Utilities/cmxmlrpc/xmlrpc_int.h | 112 - Utilities/cmxmlrpc/xmlrpc_libxml2.c | 406 - Utilities/cmxmlrpc/xmlrpc_parse.c | 767 - Utilities/cmxmlrpc/xmlrpc_pthreads.h | 74 - Utilities/cmxmlrpc/xmlrpc_registry.c | 819 - Utilities/cmxmlrpc/xmlrpc_serialize.c | 620 - Utilities/cmxmlrpc/xmlrpc_server.h | 179 - Utilities/cmxmlrpc/xmlrpc_server_abyss.c | 799 - Utilities/cmxmlrpc/xmlrpc_server_abyss.h | 182 - Utilities/cmxmlrpc/xmlrpc_server_abyss_int.h | 79 - Utilities/cmxmlrpc/xmlrpc_struct.c | 608 - Utilities/cmxmlrpc/xmlrpc_strutil.c | 75 - Utilities/cmxmlrpc/xmlrpc_support.c | 367 - Utilities/cmxmlrpc/xmlrpc_transport.c | 142 - Utilities/cmxmlrpc/xmlrpc_transport.h | 129 - Utilities/cmxmlrpc/xmlrpc_utf8.c | 372 - Utilities/cmxmlrpc/xmlrpc_xmlparser.h | 82 - Utilities/cmzlib/CMakeLists.txt | 2 + Utilities/cmzlib/Copyright.txt | 23 + Utilities/cmzlib/zconf.h | 2 +- Utilities/cmzlib/zutil.h | 2 +- bootstrap | 287 +- configure | 4 +- 1589 files changed, 63359 insertions(+), 53061 deletions(-) mode change 100755 => 100644 CMakeCPack.cmake mode change 100755 => 100644 CMakeCPackOptions.cmake.in mode change 100755 => 100644 ChangeLog.manual mode change 100755 => 100644 CompileFlags.cmake mode change 100755 => 100644 DartLocal.conf.in mode change 100755 => 100644 Modules/CMake.cmake mode change 100755 => 100644 Modules/CMakeAddNewLanguage.txt mode change 100755 => 100644 Modules/CMakeBorlandFindMake.cmake mode change 100755 => 100644 Modules/CMakeCInformation.cmake mode change 100755 => 100644 Modules/CMakeCXXInformation.cmake mode change 100755 => 100644 Modules/CMakeCommonLanguageInclude.cmake mode change 100755 => 100644 Modules/CMakeDetermineFortranCompiler.cmake mode change 100755 => 100644 Modules/CMakeDetermineRCCompiler.cmake create mode 100644 Modules/CMakeDetermineVSServicePack.cmake create mode 100644 Modules/CMakeFindCodeBlocks.cmake create mode 100644 Modules/CMakeFindEclipseCDT4.cmake create mode 100644 Modules/CMakeFindKDevelop3.cmake mode change 100755 => 100644 Modules/CMakeFindWMake.cmake mode change 100755 => 100644 Modules/CMakeFindXCode.cmake mode change 100755 => 100644 Modules/CMakeFortranCompiler.cmake.in create mode 100644 Modules/CMakeFortranCompilerABI.F create mode 100644 Modules/CMakeFortranCompilerId.F.in delete mode 100644 Modules/CMakeFortranCompilerId.F90.in mode change 100755 => 100644 Modules/CMakeFortranInformation.cmake mode change 100755 => 100644 Modules/CMakeGenericSystem.cmake mode change 100755 => 100644 Modules/CMakeJavaInformation.cmake delete mode 100644 Modules/CMakeLists.txt mode change 100755 => 100644 Modules/CMakeMSYSFindMake.cmake mode change 100755 => 100644 Modules/CMakeMinGWFindMake.cmake mode change 100755 => 100644 Modules/CMakeNMakeFindMake.cmake create mode 100644 Modules/CMakeParseImplicitLinkInfo.cmake mode change 100755 => 100644 Modules/CMakeRCCompiler.cmake.in mode change 100755 => 100644 Modules/CMakeRCInformation.cmake mode change 100755 => 100644 Modules/CMakeTestCCompiler.cmake mode change 100755 => 100644 Modules/CMakeTestCXXCompiler.cmake mode change 100755 => 100644 Modules/CMakeTestForFreeVC.cxx mode change 100755 => 100644 Modules/CMakeTestFortranCompiler.cmake mode change 100755 => 100644 Modules/CMakeTestJavaCompiler.cmake mode change 100755 => 100644 Modules/CMakeTestRCCompiler.cmake mode change 100755 => 100644 Modules/CMakeUnixFindMake.cmake create mode 100644 Modules/CMakeVS10FindMake.cmake mode change 100755 => 100644 Modules/CMakeVS6BackwardCompatibility.cmake mode change 100755 => 100644 Modules/CMakeVS6FindMake.cmake mode change 100755 => 100644 Modules/CMakeVS7BackwardCompatibility.cmake mode change 100755 => 100644 Modules/CMakeVS7FindMake.cmake mode change 100755 => 100644 Modules/CMakeVS8FindMake.cmake mode change 100755 => 100644 Modules/CMakeVS9FindMake.cmake delete mode 100644 Modules/COPYING-CMAKE-SCRIPTS create mode 100644 Modules/CTestScriptMode.cmake mode change 100755 => 100644 Modules/CheckCSourceCompiles.cmake mode change 100755 => 100644 Modules/CheckCSourceRuns.cmake mode change 100755 => 100644 Modules/CheckCXXSourceCompiles.cmake mode change 100755 => 100644 Modules/CheckCXXSourceRuns.cmake mode change 100755 => 100644 Modules/CheckSymbolExists.cmake create mode 100644 Modules/Compiler/GNU-C.cmake create mode 100644 Modules/Compiler/GNU-CXX.cmake create mode 100644 Modules/Compiler/GNU-Fortran.cmake create mode 100644 Modules/Compiler/HP-C.cmake create mode 100644 Modules/Compiler/HP-CXX.cmake create mode 100644 Modules/Compiler/HP-Fortran.cmake create mode 100644 Modules/Compiler/Intel-C.cmake create mode 100644 Modules/Compiler/Intel-CXX.cmake create mode 100644 Modules/Compiler/Intel-Fortran.cmake create mode 100644 Modules/Compiler/MIPSpro-C.cmake create mode 100644 Modules/Compiler/MIPSpro-CXX.cmake create mode 100644 Modules/Compiler/MIPSpro-Fortran.cmake create mode 100644 Modules/Compiler/PGI-C.cmake create mode 100644 Modules/Compiler/PGI-CXX.cmake create mode 100644 Modules/Compiler/PGI-Fortran.cmake create mode 100644 Modules/Compiler/SunPro-C.cmake create mode 100644 Modules/Compiler/SunPro-CXX.cmake create mode 100644 Modules/Compiler/SunPro-Fortran.cmake create mode 100644 Modules/Compiler/VisualAge-C.cmake create mode 100644 Modules/Compiler/VisualAge-CXX.cmake create mode 100644 Modules/Compiler/VisualAge-Fortran.cmake create mode 100644 Modules/Compiler/XL-C.cmake create mode 100644 Modules/Compiler/XL-CXX.cmake create mode 100644 Modules/Compiler/XL-Fortran.cmake mode change 100755 => 100644 Modules/DummyCXXFile.cxx create mode 100644 Modules/ExternalProject.cmake create mode 100644 Modules/FindALSA.cmake create mode 100644 Modules/FindBISON.cmake create mode 100644 Modules/FindBullet.cmake create mode 100644 Modules/FindCUDA.cmake create mode 100755 Modules/FindCUDA/make2cmake.cmake create mode 100644 Modules/FindCUDA/parse_cubin.cmake create mode 100755 Modules/FindCUDA/run_nvcc.cmake mode change 100755 => 100644 Modules/FindDCMTK.cmake create mode 100644 Modules/FindFLEX.cmake mode change 100755 => 100644 Modules/FindFLTK2.cmake create mode 100644 Modules/FindGTK2.cmake create mode 100644 Modules/FindGTest.cmake create mode 100644 Modules/FindGnuTLS.cmake create mode 100644 Modules/FindHDF5.cmake mode change 100755 => 100644 Modules/FindMatlab.cmake mode change 100755 => 100644 Modules/FindMotif.cmake mode change 100755 => 100644 Modules/FindOpenAL.cmake mode change 100755 => 100644 Modules/FindOpenMP.cmake mode change 100755 => 100644 Modules/FindPhysFS.cmake mode change 100755 => 100644 Modules/FindPkgConfig.cmake create mode 100755 Modules/FindProtobuf.cmake mode change 100755 => 100644 Modules/FindQt3.cmake mode change 100755 => 100644 Modules/FindSDL_image.cmake mode change 100755 => 100644 Modules/FindSDL_mixer.cmake mode change 100755 => 100644 Modules/FindSDL_net.cmake mode change 100755 => 100644 Modules/FindSDL_sound.cmake mode change 100755 => 100644 Modules/FindSDL_ttf.cmake mode change 100755 => 100644 Modules/FindwxWidgets.cmake mode change 100755 => 100644 Modules/FortranCInterface.cmake delete mode 100644 Modules/FortranCInterface.h.in create mode 100644 Modules/FortranCInterface/CMakeLists.txt create mode 100644 Modules/FortranCInterface/Detect.cmake create mode 100644 Modules/FortranCInterface/Input.cmake.in create mode 100644 Modules/FortranCInterface/Macro.h.in create mode 100644 Modules/FortranCInterface/Output.cmake.in create mode 100644 Modules/FortranCInterface/Verify/CMakeLists.txt create mode 100644 Modules/FortranCInterface/Verify/VerifyC.c create mode 100644 Modules/FortranCInterface/Verify/VerifyCXX.cxx create mode 100644 Modules/FortranCInterface/Verify/VerifyFortran.f create mode 100644 Modules/FortranCInterface/Verify/main.c create mode 100644 Modules/FortranCInterface/call_mod.f90 create mode 100644 Modules/FortranCInterface/call_sub.f create mode 100644 Modules/FortranCInterface/main.F create mode 100644 Modules/FortranCInterface/my_module.f90 create mode 100644 Modules/FortranCInterface/my_module_.c create mode 100644 Modules/FortranCInterface/my_sub.f create mode 100644 Modules/FortranCInterface/mymodule.f90 create mode 100644 Modules/FortranCInterface/mymodule_.c create mode 100644 Modules/FortranCInterface/mysub.f create mode 100644 Modules/FortranCInterface/symbol.c.in mode change 100755 => 100644 Modules/ITKCompatibility.cmake mode change 100755 => 100644 Modules/NSIS.InstallOptions.ini.in mode change 100755 => 100644 Modules/NSIS.template.in create mode 100644 Modules/Platform/AIX-VisualAge-C.cmake create mode 100644 Modules/Platform/AIX-VisualAge-CXX.cmake delete mode 100755 Modules/Platform/AIX-VisualAge-Fortran.cmake create mode 100644 Modules/Platform/AIX-XL-C.cmake create mode 100644 Modules/Platform/AIX-XL-CXX.cmake create mode 100644 Modules/Platform/AIX-XL-Fortran.cmake delete mode 100644 Modules/Platform/CMakeLists.txt mode change 100755 => 100644 Modules/Platform/CYGWIN-g77.cmake create mode 100644 Modules/Platform/Darwin-GNU-C.cmake create mode 100644 Modules/Platform/Darwin-GNU-CXX.cmake create mode 100644 Modules/Platform/Darwin-GNU.cmake create mode 100644 Modules/Platform/Darwin-VisualAge-C.cmake create mode 100644 Modules/Platform/Darwin-VisualAge-CXX.cmake rename Modules/Platform/{Darwin-xlc.cmake => Darwin-XL-C.cmake} (76%) create mode 100644 Modules/Platform/Darwin-XL-CXX.cmake mode change 100755 => 100644 Modules/Platform/Generic.cmake mode change 100755 => 100644 Modules/Platform/Haiku.cmake mode change 100755 => 100644 Modules/Platform/Linux-Intel-C.cmake mode change 100755 => 100644 Modules/Platform/Linux-Intel-CXX.cmake mode change 100755 => 100644 Modules/Platform/Linux-Intel-Fortran.cmake create mode 100644 Modules/Platform/Linux-Intel.cmake create mode 100644 Modules/Platform/Linux-VisualAge-CXX.cmake create mode 100644 Modules/Platform/Linux-XL-C.cmake create mode 100644 Modules/Platform/Linux-XL-CXX.cmake create mode 100644 Modules/Platform/Linux-XL-Fortran.cmake delete mode 100755 Modules/Platform/Linux-icpc.cmake delete mode 100755 Modules/Platform/Linux-ifort.cmake create mode 100644 Modules/Platform/OpenVMS.cmake delete mode 100644 Modules/Platform/SunOS-SunPro-Fortran.cmake mode change 100755 => 100644 Modules/Platform/UnixPaths.cmake create mode 100755 Modules/Platform/Windows-Intel.cmake create mode 100644 Modules/Platform/Windows-NMcl.cmake mode change 100755 => 100644 Modules/Platform/Windows-cl.cmake.in mode change 100755 => 100644 Modules/Platform/Windows-df.cmake mode change 100755 => 100644 Modules/Platform/Windows-g++.cmake mode change 100755 => 100644 Modules/Platform/Windows-g77.cmake mode change 100755 => 100644 Modules/Platform/Windows-gcc.cmake mode change 100755 => 100644 Modules/Platform/Windows-icl.cmake mode change 100755 => 100644 Modules/Platform/Windows-ifort.cmake mode change 100755 => 100644 Modules/Platform/Windows-wcl386.cmake mode change 100755 => 100644 Modules/Platform/WindowsPaths.cmake mode change 100755 => 100644 Modules/Platform/g77.cmake mode change 100755 => 100644 Modules/Platform/kFreeBSD.cmake delete mode 100755 Modules/Platform/xlf.cmake create mode 100644 Modules/RepositoryInfo.txt.in create mode 100644 Modules/SelectLibraryConfigurations.cmake mode change 100755 => 100644 Modules/SystemInformation.cmake mode change 100755 => 100644 Modules/TestCXXAcceptsFlag.cmake mode change 100755 => 100644 Modules/TestForSSTREAM.cmake mode change 100755 => 100644 Modules/TestForSSTREAM.cxx mode change 100755 => 100644 Modules/UseQt4.cmake mode change 100755 => 100644 Modules/UsewxWidgets.cmake create mode 100644 Source/CPack/OSXLauncherScript.scpt mode change 100755 => 100644 Source/CPack/bills-comments.txt mode change 100755 => 100644 Source/CPack/cmCPackConfigure.h.in mode change 100755 => 100644 Source/CPack/cmCPackCygwinBinaryGenerator.cxx mode change 100755 => 100644 Source/CPack/cmCPackCygwinBinaryGenerator.h mode change 100755 => 100644 Source/CPack/cmCPackCygwinSourceGenerator.cxx mode change 100755 => 100644 Source/CPack/cmCPackCygwinSourceGenerator.h mode change 100755 => 100644 Source/CPack/cmCPackGenerator.cxx mode change 100755 => 100644 Source/CPack/cmCPackGenerator.h mode change 100755 => 100644 Source/CPack/cmCPackGeneratorFactory.cxx mode change 100755 => 100644 Source/CPack/cmCPackGeneratorFactory.h create mode 100644 Source/CTest/cmCTestBZR.cxx create mode 100644 Source/CTest/cmCTestBZR.h create mode 100644 Source/CTest/cmCTestBatchTestHandler.cxx create mode 100644 Source/CTest/cmCTestBatchTestHandler.h mode change 100755 => 100644 Source/CTest/cmCTestBuildCommand.cxx mode change 100755 => 100644 Source/CTest/cmCTestBuildCommand.h mode change 100755 => 100644 Source/CTest/cmCTestBuildHandler.cxx mode change 100755 => 100644 Source/CTest/cmCTestBuildHandler.h create mode 100644 Source/CTest/cmCTestCVS.cxx create mode 100644 Source/CTest/cmCTestCVS.h mode change 100755 => 100644 Source/CTest/cmCTestCommand.h mode change 100755 => 100644 Source/CTest/cmCTestConfigureCommand.cxx mode change 100755 => 100644 Source/CTest/cmCTestConfigureCommand.h mode change 100755 => 100644 Source/CTest/cmCTestConfigureHandler.cxx mode change 100755 => 100644 Source/CTest/cmCTestConfigureHandler.h mode change 100755 => 100644 Source/CTest/cmCTestCoverageHandler.cxx mode change 100755 => 100644 Source/CTest/cmCTestCoverageHandler.h mode change 100755 => 100644 Source/CTest/cmCTestEmptyBinaryDirectoryCommand.cxx mode change 100755 => 100644 Source/CTest/cmCTestEmptyBinaryDirectoryCommand.h create mode 100644 Source/CTest/cmCTestGIT.cxx create mode 100644 Source/CTest/cmCTestGIT.h create mode 100644 Source/CTest/cmCTestGlobalVC.cxx create mode 100644 Source/CTest/cmCTestGlobalVC.h create mode 100644 Source/CTest/cmCTestHG.cxx create mode 100644 Source/CTest/cmCTestHG.h create mode 100644 Source/CTest/cmCTestLaunch.cxx create mode 100644 Source/CTest/cmCTestLaunch.h create mode 100644 Source/CTest/cmCTestMultiProcessHandler.cxx create mode 100644 Source/CTest/cmCTestMultiProcessHandler.h mode change 100755 => 100644 Source/CTest/cmCTestReadCustomFilesCommand.cxx mode change 100755 => 100644 Source/CTest/cmCTestReadCustomFilesCommand.h mode change 100755 => 100644 Source/CTest/cmCTestRunScriptCommand.cxx mode change 100755 => 100644 Source/CTest/cmCTestRunScriptCommand.h create mode 100644 Source/CTest/cmCTestRunTest.cxx create mode 100644 Source/CTest/cmCTestRunTest.h create mode 100644 Source/CTest/cmCTestSVN.cxx create mode 100644 Source/CTest/cmCTestSVN.h mode change 100755 => 100644 Source/CTest/cmCTestScriptHandler.cxx mode change 100755 => 100644 Source/CTest/cmCTestScriptHandler.h mode change 100755 => 100644 Source/CTest/cmCTestSleepCommand.cxx mode change 100755 => 100644 Source/CTest/cmCTestSleepCommand.h mode change 100755 => 100644 Source/CTest/cmCTestStartCommand.cxx mode change 100755 => 100644 Source/CTest/cmCTestStartCommand.h mode change 100755 => 100644 Source/CTest/cmCTestTestHandler.cxx mode change 100755 => 100644 Source/CTest/cmCTestTestHandler.h mode change 100755 => 100644 Source/CTest/cmCTestUpdateCommand.cxx mode change 100755 => 100644 Source/CTest/cmCTestUpdateCommand.h mode change 100755 => 100644 Source/CTest/cmCTestUpdateHandler.cxx mode change 100755 => 100644 Source/CTest/cmCTestUpdateHandler.h create mode 100644 Source/CTest/cmCTestVC.cxx create mode 100644 Source/CTest/cmCTestVC.h create mode 100644 Source/CTest/cmProcess.cxx create mode 100644 Source/CTest/cmProcess.h delete mode 100644 Source/FLTKDialog/CMakeLists.txt delete mode 100644 Source/FLTKDialog/CMakeSetupGUI.fl delete mode 100644 Source/FLTKDialog/CMakeSetupGUIImplementation.cxx delete mode 100644 Source/FLTKDialog/CMakeSetupGUIImplementation.h delete mode 100644 Source/FLTKDialog/FLTKDialog.cxx delete mode 100644 Source/FLTKDialog/FLTKDialog.dsp delete mode 100644 Source/FLTKDialog/FLTKPropertyItemRow.cxx delete mode 100644 Source/FLTKDialog/FLTKPropertyItemRow.h delete mode 100644 Source/FLTKDialog/FLTKPropertyList.cxx delete mode 100644 Source/FLTKDialog/FLTKPropertyList.h delete mode 100644 Source/MFCDialog/.cvsignore delete mode 100644 Source/MFCDialog/CMakeCommandLineInfo.cpp delete mode 100644 Source/MFCDialog/CMakeCommandLineInfo.h delete mode 100755 Source/MFCDialog/CMakeGenDialog.cpp delete mode 100755 Source/MFCDialog/CMakeGenDialog.h delete mode 100644 Source/MFCDialog/CMakeLists.txt delete mode 100644 Source/MFCDialog/CMakeSetup.cpp delete mode 100644 Source/MFCDialog/CMakeSetup.h delete mode 100644 Source/MFCDialog/CMakeSetup.rc delete mode 100644 Source/MFCDialog/CMakeSetupDialog.cpp delete mode 100644 Source/MFCDialog/CMakeSetupDialog.h delete mode 100644 Source/MFCDialog/CMakeSetupManifest.xml delete mode 100644 Source/MFCDialog/MakeHelp.cpp delete mode 100644 Source/MFCDialog/MakeHelp.h delete mode 100644 Source/MFCDialog/PathDialog.cpp delete mode 100644 Source/MFCDialog/PathDialog.h delete mode 100644 Source/MFCDialog/PropertyList.cpp delete mode 100644 Source/MFCDialog/PropertyList.h delete mode 100644 Source/MFCDialog/StdAfx.cpp delete mode 100644 Source/MFCDialog/StdAfx.h delete mode 100644 Source/MFCDialog/res/CMakeSetupDialog.ico delete mode 100644 Source/MFCDialog/res/CMakeSetupDialog.rc2 delete mode 100644 Source/MFCDialog/resource.h delete mode 100644 Source/QtDialog/CMakeFirstConfigure.cxx delete mode 100644 Source/QtDialog/CMakeFirstConfigure.h delete mode 100644 Source/QtDialog/CMakeFirstConfigure.ui mode change 100755 => 100644 Source/QtDialog/CMakeIngestOSXBundleLibraries.cmake mode change 100755 => 100644 Source/QtDialog/QMacInstallDialog.cxx mode change 100755 => 100644 Source/QtDialog/QMacInstallDialog.h mode change 100755 => 100644 Source/QtDialog/QtDialogCPack.cmake.in mode change 100755 => 100644 Source/QtDialog/README delete mode 100644 Source/WXDialog/CMakeIcon.xpm delete mode 100644 Source/WXDialog/CMakeLists.txt delete mode 100644 Source/WXDialog/CMakeSetup.cpp delete mode 100644 Source/WXDialog/CMakeSetup.h delete mode 100644 Source/WXDialog/CMakeSetup.pjd delete mode 100644 Source/WXDialog/CMakeSetup.rc delete mode 100644 Source/WXDialog/CMakeSetupFrame.cpp delete mode 100644 Source/WXDialog/CMakeSetupFrame.h delete mode 100644 Source/WXDialog/CommandLineInfo.cpp delete mode 100644 Source/WXDialog/CommandLineInfo.h delete mode 100644 Source/WXDialog/NGDialog.exe.manifest delete mode 100644 Source/WXDialog/NGDialog.ico delete mode 100644 Source/WXDialog/PropertyList.cpp delete mode 100644 Source/WXDialog/PropertyList.h delete mode 100644 Source/WXDialog/about.html delete mode 100644 Source/WXDialog/aboutdlg.cpp delete mode 100644 Source/WXDialog/aboutdlg.h delete mode 100644 Source/WXDialog/app_resources.cpp delete mode 100644 Source/WXDialog/app_resources.h delete mode 100644 Source/WXDialog/bin/FindUPX.cmake delete mode 100644 Source/WXDialog/bin/FindwxW.cmake delete mode 100644 Source/WXDialog/bin/FindwxWin.cmake delete mode 100644 Source/WXDialog/bin/UsewxW.cmake delete mode 100644 Source/WXDialog/changelog.txt delete mode 100644 Source/WXDialog/cmake_icon.gif delete mode 100644 Source/WXDialog/cmake_icon.xpm delete mode 100644 Source/WXDialog/cmake_logo.xpm delete mode 100644 Source/WXDialog/cmakesetup.done.xml delete mode 100644 Source/WXDialog/cmakesetup.xml delete mode 100644 Source/WXDialog/config.h delete mode 100644 Source/WXDialog/optionsdlg.cpp delete mode 100644 Source/WXDialog/optionsdlg.h delete mode 100644 Source/WXDialog/progressdlg.cpp delete mode 100644 Source/WXDialog/progressdlg.h mode change 100755 => 100644 Source/cmBreakCommand.cxx mode change 100755 => 100644 Source/cmBreakCommand.h mode change 100755 => 100644 Source/cmCMakePolicyCommand.cxx mode change 100755 => 100644 Source/cmCMakePolicyCommand.h mode change 100755 => 100644 Source/cmDefinePropertyCommand.cxx mode change 100755 => 100644 Source/cmDefinePropertyCommand.h create mode 100644 Source/cmDefinitions.cxx create mode 100644 Source/cmDefinitions.h mode change 100755 => 100644 Source/cmDocumentVariables.cxx mode change 100755 => 100644 Source/cmDocumentVariables.h mode change 100755 => 100644 Source/cmDocumentationSection.cxx mode change 100755 => 100644 Source/cmDocumentationSection.h mode change 100755 => 100644 Source/cmElseIfCommand.cxx mode change 100755 => 100644 Source/cmElseIfCommand.h mode change 100755 => 100644 Source/cmEndFunctionCommand.cxx mode change 100755 => 100644 Source/cmEndFunctionCommand.h mode change 100755 => 100644 Source/cmEndMacroCommand.cxx mode change 100755 => 100644 Source/cmEndMacroCommand.h mode change 100755 => 100644 Source/cmExecutionStatus.h mode change 100755 => 100644 Source/cmFindBase.cxx mode change 100755 => 100644 Source/cmFindBase.h mode change 100755 => 100644 Source/cmFunctionCommand.cxx mode change 100755 => 100644 Source/cmFunctionCommand.h create mode 100644 Source/cmGeneratorExpression.cxx create mode 100644 Source/cmGeneratorExpression.h mode change 100755 => 100644 Source/cmGetPropertyCommand.cxx mode change 100755 => 100644 Source/cmGetPropertyCommand.h create mode 100755 Source/cmGlobalVisualStudio10Generator.cxx create mode 100755 Source/cmGlobalVisualStudio10Generator.h mode change 100755 => 100644 Source/cmGlobalVisualStudio9Generator.cxx mode change 100755 => 100644 Source/cmGlobalVisualStudio9Generator.h mode change 100755 => 100644 Source/cmGlobalVisualStudio9Win64Generator.cxx mode change 100755 => 100644 Source/cmGlobalVisualStudio9Win64Generator.h mode change 100755 => 100644 Source/cmGlobalVisualStudioGenerator.cxx delete mode 100644 Source/cmGlobalXCode21Generator.cxx delete mode 100644 Source/cmGlobalXCode21Generator.h create mode 100644 Source/cmIDEFlagTable.h create mode 100644 Source/cmIDEOptions.cxx create mode 100644 Source/cmIDEOptions.h create mode 100755 Source/cmLocalVisualStudio10Generator.cxx create mode 100755 Source/cmLocalVisualStudio10Generator.h mode change 100755 => 100644 Source/cmLocalVisualStudioGenerator.cxx mode change 100755 => 100644 Source/cmPolicies.cxx mode change 100755 => 100644 Source/cmPolicies.h create mode 100644 Source/cmProcessTools.cxx create mode 100644 Source/cmProcessTools.h mode change 100755 => 100644 Source/cmProperty.cxx mode change 100755 => 100644 Source/cmProperty.h mode change 100755 => 100644 Source/cmPropertyDefinition.cxx mode change 100755 => 100644 Source/cmPropertyDefinition.h mode change 100755 => 100644 Source/cmPropertyDefinitionMap.cxx mode change 100755 => 100644 Source/cmPropertyDefinitionMap.h mode change 100755 => 100644 Source/cmPropertyMap.cxx mode change 100755 => 100644 Source/cmPropertyMap.h mode change 100755 => 100644 Source/cmReturnCommand.cxx mode change 100755 => 100644 Source/cmReturnCommand.h create mode 100644 Source/cmScriptGenerator.cxx create mode 100644 Source/cmScriptGenerator.h create mode 100644 Source/cmTestGenerator.cxx create mode 100644 Source/cmTestGenerator.h create mode 100755 Source/cmVS10CLFlagTable.h create mode 100755 Source/cmVS10LibFlagTable.h create mode 100755 Source/cmVS10LinkFlagTable.h create mode 100644 Source/cmVersionConfig.h.in create mode 100644 Source/cmVersionMacros.h create mode 100755 Source/cmVisualStudio10TargetGenerator.cxx create mode 100755 Source/cmVisualStudio10TargetGenerator.h create mode 100755 Source/cmVisualStudioGeneratorOptions.cxx create mode 100755 Source/cmVisualStudioGeneratorOptions.h create mode 100644 Source/cmXMLSafe.cxx create mode 100644 Source/cmXMLSafe.h mode change 100755 => 100644 Source/cmakexbuild.cxx create mode 100755 Source/cmparseMSBuildXML.py mode change 100755 => 100644 Source/kwsys/SystemInformation.cxx mode change 100755 => 100644 Source/kwsys/SystemInformation.hxx.in create mode 100644 Source/kwsys/testSharedForward.c.in mode change 100755 => 100644 Source/kwsys/testSystemInformation.cxx delete mode 100644 Templates/CMakeLists.txt mode change 100755 => 100644 Tests/BuildDepends/CMakeLists.txt mode change 100755 => 100644 Tests/BuildDepends/Project/CMakeLists.txt mode change 100755 => 100644 Tests/BuildDepends/Project/bar.cxx create mode 100644 Tests/BundleGeneratorTest/CustomVolumeIcon.icns create mode 100644 Tests/CMakeBuildTest.cmake.in mode change 100755 => 100644 Tests/CMakeLists.txt create mode 100644 Tests/CMakeTests/CheckCMakeTest.cmake create mode 100644 Tests/CMakeTests/CheckSourceTreeTest.cmake.in create mode 100644 Tests/CMakeTests/ConfigureFile-BadArg.cmake create mode 100644 Tests/CMakeTests/ConfigureFile-DirInput.cmake create mode 100644 Tests/CMakeTests/ConfigureFile-DirOutput.cmake create mode 100644 Tests/CMakeTests/ConfigureFile-Relative.cmake create mode 100644 Tests/CMakeTests/ConfigureFileTest.cmake.in create mode 100644 Tests/CMakeTests/File-Copy-BadArg.cmake create mode 100644 Tests/CMakeTests/File-Copy-BadPerm.cmake create mode 100644 Tests/CMakeTests/File-Copy-BadRegex.cmake create mode 100644 Tests/CMakeTests/File-Copy-EarlyArg.cmake create mode 100644 Tests/CMakeTests/File-Copy-LateArg.cmake create mode 100644 Tests/CMakeTests/File-Copy-NoDest.cmake create mode 100644 Tests/CMakeTests/File-Copy-NoFile.cmake create mode 100644 Tests/CMakeTests/FileTest.cmake.in create mode 100644 Tests/CMakeTests/ImplicitLinkInfoTest.cmake.in create mode 100644 Tests/CMakeTests/MessageTest.cmake.in create mode 100644 Tests/CMakeTests/MessageTestScript.cmake create mode 100644 Tests/CMakeTests/ModuleNoticesTest.cmake.in create mode 100644 Tests/CMakeTests/SeparateArgumentsTest.cmake.in create mode 100644 Tests/CMakeTests/VersionTest.cmake.in create mode 100644 Tests/CPackComponents/Issue 7470.html create mode 100644 Tests/CTestScriptMode/CTestTestScriptMode.cmake.in create mode 100644 Tests/CTestTestCrash/CMakeLists.txt create mode 100644 Tests/CTestTestCrash/CTestConfig.cmake create mode 100644 Tests/CTestTestCrash/crash.cxx create mode 100644 Tests/CTestTestCrash/test.cmake.in create mode 100644 Tests/CTestTestFailure/CMakeLists.txt create mode 100644 Tests/CTestTestFailure/CTestConfig.cmake create mode 100644 Tests/CTestTestFailure/badCode.cxx create mode 100644 Tests/CTestTestFailure/testNoBuild.cmake.in create mode 100644 Tests/CTestTestFailure/testNoExe.cmake.in create mode 100644 Tests/CTestTestParallel/CMakeLists.txt create mode 100644 Tests/CTestTestParallel/CTestConfig.cmake create mode 100644 Tests/CTestTestParallel/lockFile.c create mode 100644 Tests/CTestTestParallel/test.cmake.in create mode 100644 Tests/CTestTestTimeout/CMakeLists.txt create mode 100644 Tests/CTestTestTimeout/CTestConfig.cmake create mode 100644 Tests/CTestTestTimeout/test.cmake.in create mode 100644 Tests/CTestTestTimeout/timeout.c create mode 100644 Tests/CTestUpdateBZR.cmake.in create mode 100644 Tests/CTestUpdateGIT.cmake.in create mode 100644 Tests/CTestUpdateHG.cmake.in mode change 100755 => 100644 Tests/Complex/Executable/A.cxx mode change 100755 => 100644 Tests/Complex/Executable/Included.cmake mode change 100755 => 100644 Tests/Complex/Executable/Sub1/NameConflictTest.c mode change 100755 => 100644 Tests/Complex/Executable/Sub2/NameConflictTest.c mode change 100755 => 100644 Tests/Complex/Executable/complex.file.cxx mode change 100755 => 100644 Tests/Complex/Executable/testcflags.c mode change 100755 => 100644 Tests/Complex/Library/moduleFile.c mode change 100755 => 100644 Tests/Complex/Library/moduleFile.h mode change 100755 => 100644 Tests/ComplexOneConfig/Executable/A.cxx mode change 100755 => 100644 Tests/ComplexOneConfig/Executable/Included.cmake mode change 100755 => 100644 Tests/ComplexOneConfig/Executable/Sub1/NameConflictTest.c mode change 100755 => 100644 Tests/ComplexOneConfig/Executable/Sub2/NameConflictTest.c mode change 100755 => 100644 Tests/ComplexOneConfig/Executable/complex.file.cxx mode change 100755 => 100644 Tests/ComplexOneConfig/Executable/testcflags.c mode change 100755 => 100644 Tests/ComplexOneConfig/Library/moduleFile.c mode change 100755 => 100644 Tests/ComplexOneConfig/Library/moduleFile.h mode change 100755 => 100644 Tests/ComplexRelativePaths/Executable/A.cxx mode change 100755 => 100644 Tests/ComplexRelativePaths/Executable/Included.cmake mode change 100755 => 100644 Tests/ComplexRelativePaths/Executable/Sub1/NameConflictTest.c mode change 100755 => 100644 Tests/ComplexRelativePaths/Executable/Sub2/NameConflictTest.c mode change 100755 => 100644 Tests/ComplexRelativePaths/Executable/complex.file.cxx mode change 100755 => 100644 Tests/ComplexRelativePaths/Executable/testcflags.c mode change 100755 => 100644 Tests/ComplexRelativePaths/Library/moduleFile.c mode change 100755 => 100644 Tests/ComplexRelativePaths/Library/moduleFile.h mode change 100755 => 100644 Tests/CustComDepend/CMakeLists.txt mode change 100755 => 100644 Tests/CustComDepend/bar.h mode change 100755 => 100644 Tests/CustComDepend/foo.cxx mode change 100755 => 100644 Tests/CustomCommand/GeneratedHeader/CMakeLists.txt mode change 100755 => 100644 Tests/CustomCommandWorkingDirectory/CMakeLists.txt mode change 100755 => 100644 Tests/CustomCommandWorkingDirectory/customTarget.c mode change 100755 => 100644 Tests/CustomCommandWorkingDirectory/working.c.in create mode 100644 Tests/Dependency/Case2/foo1c.c create mode 100644 Tests/Dependency/Case2/foo2c.c create mode 100644 Tests/Dependency/Case2/foo3c.c mode change 100755 => 100644 Tests/DocTest/CMakeLists.txt mode change 100755 => 100644 Tests/DocTest/DocTest.cxx create mode 100644 Tests/EnforceConfig.cmake.in create mode 100644 Tests/Environment/CMakeLists.txt create mode 100644 Tests/Environment/main.cxx create mode 100644 Tests/ExportImport/Export/testLib5.c create mode 100644 Tests/ExportImport/Export/testLib6.cxx create mode 100644 Tests/ExportImport/Export/testLib6c.c create mode 100644 Tests/ExportImport/Export/testLibCycleA1.c create mode 100644 Tests/ExportImport/Export/testLibCycleA2.c create mode 100644 Tests/ExportImport/Export/testLibCycleA3.c create mode 100644 Tests/ExportImport/Export/testLibCycleB1.c create mode 100644 Tests/ExportImport/Export/testLibCycleB2.c create mode 100644 Tests/ExportImport/Export/testLibCycleB3.c create mode 100644 Tests/ExportImport/InitialCache.cmake.in create mode 100644 Tests/ExternalProject/CMakeLists.txt create mode 100644 Tests/ExternalProject/Step1.tar create mode 100644 Tests/ExternalProject/Step1.tgz create mode 100644 Tests/ExternalProject/Step1NoDir.tar create mode 100644 Tests/ExternalProject/Step1NoDir.tgz create mode 100644 Tests/ExternalProject/Step1Patch.cmake create mode 100644 Tests/ExternalProject/TryCheckout.cmake create mode 100644 Tests/ExternalProject/cvsrepo.tgz create mode 100644 Tests/ExternalProject/svnrepo.tgz create mode 100644 Tests/FindPackageTest/Exporter/CMakeLists.txt create mode 100644 Tests/FindPackageTest/Exporter/CMakeTestExportPackageConfig.cmake.in create mode 100644 Tests/FindPackageTest/Exporter/CMakeTestExportPackageConfigVersion.cmake.in create mode 100644 Tests/FindPackageTest/Exporter/dummy.c mode change 100755 => 100644 Tests/Fortran/CMakeLists.txt delete mode 100755 Tests/Fortran/foo.c mode change 100755 => 100644 Tests/Fortran/foo.f mode change 100755 => 100644 Tests/Fortran/hello.f create mode 100644 Tests/Fortran/mainc.c create mode 100644 Tests/Fortran/maincxx.c create mode 100644 Tests/Fortran/myc.c create mode 100644 Tests/Fortran/mycxx.cxx mode change 100755 => 100644 Tests/Fortran/mysub.f mode change 100755 => 100644 Tests/FunctionTest/CMakeLists.txt mode change 100755 => 100644 Tests/FunctionTest/Util.cmake create mode 100644 Tests/JCTest/CMakeLists.txt create mode 100644 Tests/JCTest/TestTime.cxx mode change 100755 => 100644 Tests/Java/A.java mode change 100755 => 100644 Tests/Java/CMakeLists.txt mode change 100755 => 100644 Tests/Java/HelloWorld.java mode change 100755 => 100644 Tests/LibName/CMakeLists.txt mode change 100755 => 100644 Tests/LibName/bar.c mode change 100755 => 100644 Tests/LibName/foo.c mode change 100755 => 100644 Tests/LibName/foobar.c create mode 100644 Tests/LinkLanguage/CMakeLists.txt create mode 100644 Tests/LinkLanguage/LinkLanguage.c create mode 100644 Tests/LinkLanguage/foo.cxx mode change 100755 => 100644 Tests/LoadCommand/LoadedCommand.cxx.in mode change 100755 => 100644 Tests/LoadCommandOneConfig/LoadedCommand.cxx.in create mode 100644 Tests/ModuleDefinition/CMakeLists.txt create mode 100644 Tests/ModuleDefinition/example_dll.c create mode 100644 Tests/ModuleDefinition/example_dll.def create mode 100644 Tests/ModuleDefinition/example_dll_2.c create mode 100644 Tests/ModuleDefinition/example_dll_2.def create mode 100644 Tests/ModuleDefinition/example_exe.c create mode 100644 Tests/ModuleDefinition/example_exe.def create mode 100644 Tests/ModuleDefinition/example_mod_1.c mode change 100755 => 100644 Tests/NewlineArgs/CMakeLists.txt mode change 100755 => 100644 Tests/NewlineArgs/cxxonly.cxx mode change 100755 => 100644 Tests/NewlineArgs/libcxx1.cxx mode change 100755 => 100644 Tests/NewlineArgs/libcxx1.h mode change 100755 => 100644 Tests/NewlineArgs/libcxx2.h.in mode change 100755 => 100644 Tests/OutOfSource/CMakeLists.txt mode change 100755 => 100644 Tests/OutOfSource/OutOfSourceSubdir/CMakeLists.txt mode change 100755 => 100644 Tests/OutOfSource/OutOfSourceSubdir/simple.cxx mode change 100755 => 100644 Tests/OutOfSource/OutOfSourceSubdir/simple.cxx.in mode change 100755 => 100644 Tests/OutOfSource/OutOfSourceSubdir/testlib.cxx mode change 100755 => 100644 Tests/OutOfSource/OutOfSourceSubdir/testlib.h mode change 100755 => 100644 Tests/OutOfSource/SubDir/CMakeLists.txt mode change 100755 => 100644 Tests/OutOfSource/testdp.h.in create mode 100644 Tests/Policy0002/A/CMakeLists.txt create mode 100644 Tests/Policy0002/CMakeLists.txt create mode 100644 Tests/Policy0002/policy0002.c mode change 100755 => 100644 Tests/PreOrder/CMakeLists.txt mode change 100755 => 100644 Tests/PreOrder/Library/CMakeLists.txt mode change 100755 => 100644 Tests/PreOrder/simple.cxx mode change 100755 => 100644 Tests/Properties/CMakeLists.txt mode change 100755 => 100644 Tests/Properties/SubDir/properties3.cxx mode change 100755 => 100644 Tests/Properties/properties.h.in mode change 100755 => 100644 Tests/Properties/properties2.h mode change 100755 => 100644 Tests/ReturnTest/CMakeLists.txt mode change 100755 => 100644 Tests/ReturnTest/returnTest.c mode change 100755 => 100644 Tests/ReturnTest/subdir/CMakeLists.txt mode change 100755 => 100644 Tests/SameName/CMakeLists.txt mode change 100755 => 100644 Tests/SameName/Exe1/CMakeLists.txt mode change 100755 => 100644 Tests/SameName/Exe1/conly.c mode change 100755 => 100644 Tests/SameName/Lib1/CMakeLists.txt mode change 100755 => 100644 Tests/SetLang/CMakeLists.txt mode change 100755 => 100644 Tests/SetLang/bar.c mode change 100755 => 100644 Tests/SetLang/foo.c mode change 100755 => 100644 Tests/Simple/simpleWe.cpp create mode 100755 Tests/SourceGroups/README.txt create mode 100644 Tests/StringFileTest/test.bin mode change 100755 => 100644 Tests/SubDir/CMakeLists.txt mode change 100755 => 100644 Tests/SubDir/Examples/CMakeLists.txt mode change 100755 => 100644 Tests/SubDir/Examples/example1/CMakeLists.txt mode change 100755 => 100644 Tests/SubDir/Examples/example1/example1.cxx mode change 100755 => 100644 Tests/SubDir/Examples/example2/CMakeLists.txt mode change 100755 => 100644 Tests/SubDir/Examples/example2/example2.cxx mode change 100755 => 100644 Tests/SubDir/Executable/CMakeLists.txt mode change 100755 => 100644 Tests/SubDir/Executable/test.cxx mode change 100755 => 100644 Tests/SubDirSpaces/Another Subdir/pair+int.int.c mode change 100755 => 100644 Tests/SubDirSpaces/Another Subdir/pair_int.int.c mode change 100755 => 100644 Tests/SubDirSpaces/Another Subdir/secondone.c mode change 100755 => 100644 Tests/SubDirSpaces/Another Subdir/testfromsubdir.c mode change 100755 => 100644 Tests/SubDirSpaces/CMakeLists.txt mode change 100755 => 100644 Tests/SubDirSpaces/Executable Sources/CMakeLists.txt mode change 100755 => 100644 Tests/SubDirSpaces/Executable Sources/test.cxx mode change 100755 => 100644 Tests/SubDirSpaces/Executable/CMakeLists.txt mode change 100755 => 100644 Tests/SubDirSpaces/Executable/test.cxx mode change 100755 => 100644 Tests/SubDirSpaces/Some Examples/CMakeLists.txt mode change 100755 => 100644 Tests/SubDirSpaces/Some Examples/example1/CMakeLists.txt mode change 100755 => 100644 Tests/SubDirSpaces/Some Examples/example1/example1.cxx mode change 100755 => 100644 Tests/SubDirSpaces/Some Examples/example2/CMakeLists.txt mode change 100755 => 100644 Tests/SubDirSpaces/Some Examples/example2/example2.cxx mode change 100755 => 100644 Tests/SubDirSpaces/Some(x86) Sources/CMakeLists.txt mode change 100755 => 100644 Tests/SubDirSpaces/Some(x86) Sources/test.c mode change 100755 => 100644 Tests/SubDirSpaces/ThirdSubDir/pair+int.int1.c mode change 100755 => 100644 Tests/SubDirSpaces/ThirdSubDir/pair_int.int1.c mode change 100755 => 100644 Tests/SubDirSpaces/ThirdSubDir/pair_p_int.int1.c mode change 100755 => 100644 Tests/SubDirSpaces/ThirdSubDir/testfromauxsubdir.c mode change 100755 => 100644 Tests/SubDirSpaces/ThirdSubDir/thirdone.c mode change 100755 => 100644 Tests/SubDirSpaces/vcl_algorithm+vcl_pair+double.foo.c mode change 100755 => 100644 Tests/SubDirSpaces/vcl_algorithm_vcl_pair_double.foo.c mode change 100755 => 100644 Tests/SubProject/CMakeLists.txt mode change 100755 => 100644 Tests/SubProject/bar.cxx mode change 100755 => 100644 Tests/SubProject/car.cxx mode change 100755 => 100644 Tests/SubProject/foo/CMakeLists.txt mode change 100755 => 100644 Tests/SubProject/foo/foo.cxx mode change 100755 => 100644 Tests/TargetName/CMakeLists.txt mode change 100755 => 100644 Tests/TargetName/executables/CMakeLists.txt mode change 100755 => 100644 Tests/TargetName/executables/hello_world.c mode change 100755 => 100644 Tests/TargetName/scripts/CMakeLists.txt create mode 100644 Tests/Testing/driver.cmake create mode 100644 Tests/Testing/pcShared.c create mode 100644 Tests/Testing/pcShared.h create mode 100644 Tests/Testing/pcStatic.c create mode 100644 Tests/Testing/perconfig.c mode change 100755 => 100644 Tests/TryCompile/CMakeLists.txt create mode 100644 Tests/TryCompile/Inner/CMakeLists.txt create mode 100644 Tests/TryCompile/Inner/innerexe.c create mode 100644 Tests/TryCompile/Inner/innerlib.c mode change 100755 => 100644 Tests/TryCompile/exit_success.c mode change 100755 => 100644 Tests/TryCompile/exit_with_error.c mode change 100755 => 100644 Tests/TryCompile/fail.c mode change 100755 => 100644 Tests/TryCompile/pass.c mode change 100755 => 100644 Tests/Tutorial/Step1/CMakeLists.txt mode change 100755 => 100644 Tests/Tutorial/Step1/TutorialConfig.h.in mode change 100755 => 100644 Tests/Tutorial/Step1/tutorial.cxx mode change 100755 => 100644 Tests/Tutorial/Step2/CMakeLists.txt mode change 100755 => 100644 Tests/Tutorial/Step2/MathFunctions/CMakeLists.txt mode change 100755 => 100644 Tests/Tutorial/Step2/MathFunctions/MathFunctions.h mode change 100755 => 100644 Tests/Tutorial/Step2/MathFunctions/mysqrt.cxx mode change 100755 => 100644 Tests/Tutorial/Step2/TutorialConfig.h.in mode change 100755 => 100644 Tests/Tutorial/Step2/tutorial.cxx mode change 100755 => 100644 Tests/Tutorial/Step3/CMakeLists.txt mode change 100755 => 100644 Tests/Tutorial/Step3/MathFunctions/CMakeLists.txt mode change 100755 => 100644 Tests/Tutorial/Step3/MathFunctions/MathFunctions.h mode change 100755 => 100644 Tests/Tutorial/Step3/MathFunctions/mysqrt.cxx mode change 100755 => 100644 Tests/Tutorial/Step3/TutorialConfig.h.in mode change 100755 => 100644 Tests/Tutorial/Step3/tutorial.cxx mode change 100755 => 100644 Tests/Tutorial/Step4/CMakeLists.txt mode change 100755 => 100644 Tests/Tutorial/Step4/MathFunctions/CMakeLists.txt mode change 100755 => 100644 Tests/Tutorial/Step4/MathFunctions/MathFunctions.h mode change 100755 => 100644 Tests/Tutorial/Step4/MathFunctions/mysqrt.cxx mode change 100755 => 100644 Tests/Tutorial/Step4/TutorialConfig.h.in mode change 100755 => 100644 Tests/Tutorial/Step4/tutorial.cxx mode change 100755 => 100644 Tests/Tutorial/Step5/CMakeLists.txt mode change 100755 => 100644 Tests/Tutorial/Step5/MathFunctions/CMakeLists.txt mode change 100755 => 100644 Tests/Tutorial/Step5/MathFunctions/MakeTable.cxx mode change 100755 => 100644 Tests/Tutorial/Step5/MathFunctions/MathFunctions.h mode change 100755 => 100644 Tests/Tutorial/Step5/MathFunctions/mysqrt.cxx mode change 100755 => 100644 Tests/Tutorial/Step5/TutorialConfig.h.in mode change 100755 => 100644 Tests/Tutorial/Step5/tutorial.cxx mode change 100755 => 100644 Tests/Tutorial/Step6/MathFunctions/CMakeLists.txt mode change 100755 => 100644 Tests/Tutorial/Step6/MathFunctions/MakeTable.cxx mode change 100755 => 100644 Tests/Tutorial/Step6/MathFunctions/MathFunctions.h mode change 100755 => 100644 Tests/Tutorial/Step6/MathFunctions/mysqrt.cxx mode change 100755 => 100644 Tests/Tutorial/Step6/TutorialConfig.h.in mode change 100755 => 100644 Tests/Tutorial/Step6/tutorial.cxx mode change 100755 => 100644 Tests/Tutorial/Step7/MathFunctions/CMakeLists.txt mode change 100755 => 100644 Tests/Tutorial/Step7/MathFunctions/MakeTable.cxx mode change 100755 => 100644 Tests/Tutorial/Step7/MathFunctions/MathFunctions.h mode change 100755 => 100644 Tests/Tutorial/Step7/MathFunctions/mysqrt.cxx mode change 100755 => 100644 Tests/Tutorial/Step7/TutorialConfig.h.in mode change 100755 => 100644 Tests/Tutorial/Step7/tutorial.cxx delete mode 100644 Tests/UseWX/CMakeLists.txt delete mode 100644 Tests/UseWX/WX.cxx mode change 100755 => 100644 Tests/VSExternalInclude/CMakeLists.txt mode change 100755 => 100644 Tests/VSExternalInclude/Lib1/CMakeLists.txt mode change 100755 => 100644 Tests/VSExternalInclude/Lib1/lib1.cpp mode change 100755 => 100644 Tests/VSExternalInclude/Lib1/lib1.h mode change 100755 => 100644 Tests/VSExternalInclude/Lib2/CMakeLists.txt mode change 100755 => 100644 Tests/VSExternalInclude/Lib2/lib2.cpp mode change 100755 => 100644 Tests/VSExternalInclude/Lib2/lib2.h mode change 100755 => 100644 Tests/VSExternalInclude/main.cpp mode change 100755 => 100644 Tests/Wrapping/fakefluid.cxx mode change 100755 => 100644 Tests/Wrapping/qtnoqtmain.cxx mode change 100755 => 100644 Tests/X11/HelloWorldX11.cxx create mode 100644 Tests/test_clean.cmake.in mode change 100755 => 100644 Utilities/KWStyle/CMake.kws.xml.in mode change 100755 => 100644 Utilities/KWStyle/CMakeLists.txt mode change 100755 => 100644 Utilities/KWStyle/CMakeMoreChecks.kws.xml.in mode change 100755 => 100644 Utilities/KWStyle/CMakeOverwrite.txt mode change 100755 => 100644 Utilities/KWStyle/Headers/CMakeHeader.h mode change 100755 => 100644 Utilities/Release/CMakeInstall.bmp mode change 100755 => 100644 Utilities/Release/CMakeLogo.ico mode change 100755 => 100644 Utilities/Release/Cygwin/CMakeLists.txt mode change 100755 => 100644 Utilities/Release/Cygwin/README.cygwin.in mode change 100755 => 100644 Utilities/Release/README create mode 100644 Utilities/Release/dash2win64_release.cmake mode change 100755 => 100644 Utilities/Release/dashsun1_release.cmake create mode 100644 Utilities/Release/ferrari_sgi64_release.cmake create mode 100644 Utilities/Release/ferrari_sgi_release.cmake mode change 100755 => 100644 Utilities/Release/hythloth_release.cmake mode change 100755 => 100644 Utilities/Release/release_cmake.cmake create mode 100644 Utilities/Release/v20n17_aix_release.cmake mode change 100755 => 100644 Utilities/Release/vogon_cygwin.cmake mode change 100755 => 100644 Utilities/Release/vogon_release.cmake create mode 100644 Utilities/Release/vogon_release_qt.cmake create mode 100755 Utilities/cmcompress/Copyright.txt rename Utilities/cmcurl/{curl.copyright => COPYING} (84%) mode change 100755 => 100644 Utilities/cmcurl/Platforms/WindowsCache.cmake delete mode 100644 Utilities/cmxmlrpc/CMake/TryCompileFromSource.cmake delete mode 100644 Utilities/cmxmlrpc/CMakeLists.txt delete mode 100644 Utilities/cmxmlrpc/XmlRpcCpp.cpp delete mode 100644 Utilities/cmxmlrpc/XmlRpcCpp.h delete mode 100644 Utilities/cmxmlrpc/bool.h delete mode 100644 Utilities/cmxmlrpc/casprintf.c delete mode 100644 Utilities/cmxmlrpc/casprintf.h delete mode 100644 Utilities/cmxmlrpc/inline.h delete mode 100644 Utilities/cmxmlrpc/linklist.h delete mode 100644 Utilities/cmxmlrpc/mallocvar.h delete mode 100644 Utilities/cmxmlrpc/synch_client.c delete mode 100644 Utilities/cmxmlrpc/transport_config.h delete mode 100644 Utilities/cmxmlrpc/win32_pthreads.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc.h delete mode 100644 Utilities/cmxmlrpc/xmlrpc_amconfig.h.in delete mode 100644 Utilities/cmxmlrpc/xmlrpc_array.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_authcookie.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_base64.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_cgi.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_cgi.h delete mode 100644 Utilities/cmxmlrpc/xmlrpc_client.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_client.h delete mode 100644 Utilities/cmxmlrpc/xmlrpc_client_int.h delete mode 100644 Utilities/cmxmlrpc/xmlrpc_config.h.in delete mode 100644 Utilities/cmxmlrpc/xmlrpc_curl_transport.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_curl_transport.h delete mode 100644 Utilities/cmxmlrpc/xmlrpc_data.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_expat.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_int.h delete mode 100644 Utilities/cmxmlrpc/xmlrpc_libxml2.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_parse.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_pthreads.h delete mode 100644 Utilities/cmxmlrpc/xmlrpc_registry.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_serialize.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_server.h delete mode 100644 Utilities/cmxmlrpc/xmlrpc_server_abyss.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_server_abyss.h delete mode 100644 Utilities/cmxmlrpc/xmlrpc_server_abyss_int.h delete mode 100644 Utilities/cmxmlrpc/xmlrpc_struct.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_strutil.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_support.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_transport.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_transport.h delete mode 100644 Utilities/cmxmlrpc/xmlrpc_utf8.c delete mode 100644 Utilities/cmxmlrpc/xmlrpc_xmlparser.h create mode 100644 Utilities/cmzlib/Copyright.txt diff --git a/CMakeCPack.cmake b/CMakeCPack.cmake old mode 100755 new mode 100644 index ec4cb9964..613bb9f03 --- a/CMakeCPack.cmake +++ b/CMakeCPack.cmake @@ -1,7 +1,18 @@ +#============================================================================= +# CMake - Cross Platform Makefile Generator +# Copyright 2000-2009 Kitware, Inc., Insight Software Consortium +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + # If the cmake version includes cpack, use it IF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") IF(EXISTS "${CMAKE_ROOT}/Modules/InstallRequiredSystemLibraries.cmake") - SET(CMAKE_INSTALL_MFC_LIBRARIES 1) OPTION(CMAKE_INSTALL_DEBUG_LIBRARIES "Install Microsoft runtime debug libraries with CMake." FALSE) MARK_AS_ADVANCED(CMAKE_INSTALL_DEBUG_LIBRARIES) @@ -18,18 +29,13 @@ IF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt") SET(CPACK_PACKAGE_VERSION_MAJOR "${CMake_VERSION_MAJOR}") SET(CPACK_PACKAGE_VERSION_MINOR "${CMake_VERSION_MINOR}") -# if version date is set then use that as the patch - IF(CMake_VERSION_DATE) - SET(CPACK_PACKAGE_VERSION_PATCH "${CMake_VERSION_DATE}") - ELSE(CMake_VERSION_DATE) - SET(CPACK_PACKAGE_VERSION_PATCH "${CMake_VERSION_PATCH}") - ENDIF(CMake_VERSION_DATE) + SET(CPACK_PACKAGE_VERSION_PATCH "${CMake_VERSION_PATCH}") SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}") SET(CPACK_SOURCE_PACKAGE_FILE_NAME - "cmake-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") + "cmake-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}.${CMake_VERSION_PATCH}") IF(CMake_VERSION_RC) SET(CPACK_SOURCE_PACKAGE_FILE_NAME - "${CPACK_SOURCE_PACKAGE_FILE_NAME}-RC-${CMake_VERSION_RC}") + "${CPACK_SOURCE_PACKAGE_FILE_NAME}-rc${CMake_VERSION_RC}") ENDIF(CMake_VERSION_RC) IF(NOT DEFINED CPACK_SYSTEM_NAME) # make sure package is not Cygwin-unknown, for Cygwin just @@ -82,7 +88,7 @@ IF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") SET(CPACK_PACKAGE_NAME cmake) # setup the name of the package for cygwin cmake-2.4.3 SET(CPACK_PACKAGE_FILE_NAME - "${CPACK_PACKAGE_NAME}-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") + "${CPACK_PACKAGE_NAME}-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}.${CMake_VERSION_PATCH}") # the source has the same name as the binary SET(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}) # Create a cygwin version number in case there are changes for cygwin diff --git a/CMakeCPackOptions.cmake.in b/CMakeCPackOptions.cmake.in old mode 100755 new mode 100644 index 3bcdb0234..a94fa7223 --- a/CMakeCPackOptions.cmake.in +++ b/CMakeCPackOptions.cmake.in @@ -18,21 +18,20 @@ if(CPACK_GENERATOR MATCHES "NSIS") "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/ctest.html" "CTest Help" "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-modules.html" "CMake Modules Help" "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-commands.html" "CMake Commands Help" - "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/CMakeSetup.html" "CMakeSetup Help" "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cpack.html" "CPack Help" "http://www.cmake.org" "CMake Web Site" ) - # tell cpack the executables you want in the start menu as links - SET(CPACK_PACKAGE_EXECUTABLES "CMakeSetup" "CMakeSetup(deprecated)" ) - # tell cpack to create a desktop link to CMakeSetup - SET(CPACK_CREATE_DESKTOP_LINKS "CMakeSetup") - SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\CMakeSetup.exe") + # Use the icond from cmake-gui for add-remove programs + SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\cmake-gui.exe") + SET(CPACK_NSIS_DISPLAY_NAME "CMake @CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@ a cross-platform, open-source build system") - SET(CPACK_NSIS_HELP_LINK "http:\\\\www.cmake.org") - SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\www.kitware.com") + SET(CPACK_NSIS_PACKAGE_NAME "CMake @CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@") + SET(CPACK_NSIS_HELP_LINK "http://www.cmake.org") + SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.kitware.com") SET(CPACK_NSIS_CONTACT @CPACK_PACKAGE_CONTACT@) SET(CPACK_NSIS_MODIFY_PATH ON) endif(CPACK_GENERATOR MATCHES "NSIS") + # include the cpack options for qt dialog if they exisit # they might not if qt was not enabled for the build INCLUDE("@QT_DIALOG_CPACK_OPTIONS_FILE@" OPTIONAL) diff --git a/CMakeLists.txt b/CMakeLists.txt index b1cde8923..bdedb6508 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,71 +1,75 @@ +#============================================================================= +# CMake - Cross Platform Makefile Generator +# Copyright 2000-2009 Kitware, Inc., Insight Software Consortium +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +CMAKE_MINIMUM_REQUIRED(VERSION 2.4.5 FATAL_ERROR) PROJECT(CMake) -CMAKE_MINIMUM_REQUIRED(VERSION 2.4 FATAL_ERROR) IF(COMMAND CMAKE_POLICY) CMAKE_POLICY(SET CMP0003 NEW) ENDIF(COMMAND CMAKE_POLICY) MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY) +# Allow empty endif() and such with CMake 2.4. +SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS 1) +IF(NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.4) + # Since the built CMake will install itself instead of the + # generating CMake, tell it that the install rules were generated + # by CMake 2.4. + INSTALL(CODE "SET(CMAKE_INSTALL_SELF_2_4 1)") +ENDIF() #----------------------------------------------------------------------- # a macro to deal with system libraries, implemented as a macro # simply to improve readability of the main script #----------------------------------------------------------------------- MACRO(CMAKE_HANDLE_SYSTEM_LIBRARIES) - # Third party libraries must be something that can be found. - IF(EXISTS ${CMAKE_ROOT}/Modules/FindXMLRPC.cmake) - SET(CMAKE_ALLOW_SYSTEM_LIBRARIES 1) - ELSE(EXISTS ${CMAKE_ROOT}/Modules/FindXMLRPC.cmake) - SET(CMAKE_ALLOW_SYSTEM_LIBRARIES 0) - ENDIF(EXISTS ${CMAKE_ROOT}/Modules/FindXMLRPC.cmake) - - IF(CMAKE_ALLOW_SYSTEM_LIBRARIES) - # Options have dependencies. - INCLUDE(CMakeDependentOption) - - # Allow the user to enable/disable all system utility library options - # by setting CMAKE_USE_SYSTEM_LIBRARIES on the command line. - IF(DEFINED CMAKE_USE_SYSTEM_LIBRARIES) - SET(CMAKE_USE_SYSTEM_LIBRARIES_USER 1) - ENDIF(DEFINED CMAKE_USE_SYSTEM_LIBRARIES) - IF(CMAKE_USE_SYSTEM_LIBRARIES) - SET(CMAKE_USE_SYSTEM_LIBRARIES ON) - ELSE(CMAKE_USE_SYSTEM_LIBRARIES) - SET(CMAKE_USE_SYSTEM_LIBRARIES OFF) - ENDIF(CMAKE_USE_SYSTEM_LIBRARIES) - IF(CMAKE_USE_SYSTEM_LIBRARIES_USER) - SET(CMAKE_USE_SYSTEM_CURL "${CMAKE_USE_SYSTEM_LIBRARIES}" - CACHE BOOL "Use system-installed curl" FORCE) - SET(CMAKE_USE_SYSTEM_EXPAT "${CMAKE_USE_SYSTEM_LIBRARIES}" - CACHE BOOL "Use system-installed expat" FORCE) - SET(CMAKE_USE_SYSTEM_XMLRPC "${CMAKE_USE_SYSTEM_LIBRARIES}" - CACHE BOOL "Use system-installed xmlrpc" FORCE) - SET(CMAKE_USE_SYSTEM_ZLIB "${CMAKE_USE_SYSTEM_LIBRARIES}" - CACHE BOOL "Use system-installed zlib" FORCE) - ENDIF(CMAKE_USE_SYSTEM_LIBRARIES_USER) - - # Optionally use system utility libraries. - OPTION(CMAKE_USE_SYSTEM_CURL "Use system-installed curl" - ${CMAKE_USE_SYSTEM_LIBRARIES}) - OPTION(CMAKE_USE_SYSTEM_XMLRPC "Use system-installed xmlrpc" - ${CMAKE_USE_SYSTEM_LIBRARIES}) - CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_EXPAT "Use system-installed expat" - ${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CMAKE_USE_SYSTEM_XMLRPC" ON) - CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_ZLIB "Use system-installed zlib" - ${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CMAKE_USE_SYSTEM_CURL" ON) - - # There is currently no option for system tar because the upstream - # libtar does not have our modifications to allow reentrant - # object-oriented use of the library. - # OPTION(CMAKE_USE_SYSTEM_TAR "Use system-installed tar" OFF) - ELSE(CMAKE_ALLOW_SYSTEM_LIBRARIES) - SET(CMAKE_USE_SYSTEM_CURL 0) - SET(CMAKE_USE_SYSTEM_EXPAT 0) - SET(CMAKE_USE_SYSTEM_XMLRPC 0) - SET(CMAKE_USE_SYSTEM_ZLIB 0) - ENDIF(CMAKE_ALLOW_SYSTEM_LIBRARIES) - + # Options have dependencies. + INCLUDE(CMakeDependentOption) + + # Optionally use system xmlrpc. We no longer build or use it by default. + OPTION(CTEST_USE_XMLRPC "Enable xmlrpc submission method in CTest." OFF) + MARK_AS_ADVANCED(CTEST_USE_XMLRPC) + + # Allow the user to enable/disable all system utility library options + # by setting CMAKE_USE_SYSTEM_LIBRARIES on the command line. + IF(DEFINED CMAKE_USE_SYSTEM_LIBRARIES) + SET(CMAKE_USE_SYSTEM_LIBRARIES_USER 1) + ENDIF(DEFINED CMAKE_USE_SYSTEM_LIBRARIES) + IF(CMAKE_USE_SYSTEM_LIBRARIES) + SET(CMAKE_USE_SYSTEM_LIBRARIES ON) + ELSE(CMAKE_USE_SYSTEM_LIBRARIES) + SET(CMAKE_USE_SYSTEM_LIBRARIES OFF) + ENDIF(CMAKE_USE_SYSTEM_LIBRARIES) + IF(CMAKE_USE_SYSTEM_LIBRARIES_USER) + SET(CMAKE_USE_SYSTEM_CURL "${CMAKE_USE_SYSTEM_LIBRARIES}" + CACHE BOOL "Use system-installed curl" FORCE) + SET(CMAKE_USE_SYSTEM_EXPAT "${CMAKE_USE_SYSTEM_LIBRARIES}" + CACHE BOOL "Use system-installed expat" FORCE) + SET(CMAKE_USE_SYSTEM_ZLIB "${CMAKE_USE_SYSTEM_LIBRARIES}" + CACHE BOOL "Use system-installed zlib" FORCE) + ENDIF(CMAKE_USE_SYSTEM_LIBRARIES_USER) + + # Optionally use system utility libraries. + CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_CURL "Use system-installed curl" + ${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CTEST_USE_XMLRPC" ON) + CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_EXPAT "Use system-installed expat" + ${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CTEST_USE_XMLRPC" ON) + CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_ZLIB "Use system-installed zlib" + ${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CMAKE_USE_SYSTEM_CURL" ON) + + # There is currently no option for system tar because the upstream + # libtar does not have our modifications to allow reentrant + # object-oriented use of the library. + # OPTION(CMAKE_USE_SYSTEM_TAR "Use system-installed tar" OFF) # Mention to the user what system libraries are being used. FOREACH(util CURL EXPAT XMLRPC ZLIB) @@ -83,54 +87,11 @@ ENDMACRO(CMAKE_HANDLE_SYSTEM_LIBRARIES) -#----------------------------------------------------------------------- -# a macro to check for MFC and setup to build the MFC Dialog -# simply to improve readability of the main script -#----------------------------------------------------------------------- -MACRO(CMAKE_TEST_FOR_MFC) - SET(CMAKE_BUILD_ON_VISUAL_STUDIO 0) - IF(WIN32 AND NOT UNIX AND NOT BORLAND AND NOT MINGW ) - SET(CMAKE_BUILD_ON_VISUAL_STUDIO 1) - ENDIF(WIN32 AND NOT UNIX AND NOT BORLAND AND NOT MINGW ) - - IF(CMAKE_BUILD_ON_VISUAL_STUDIO) - IF("CMake_HAVE_MFC" MATCHES "^CMake_HAVE_MFC$") - SET(CHECK_INCLUDE_FILE_VAR "afxwin.h") - CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CheckIncludeFile.cxx.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx) - MESSAGE(STATUS "Looking for MFC") - TRY_COMPILE(CMake_HAVE_MFC - ${CMAKE_BINARY_DIR} - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx - CMAKE_FLAGS - -DCMAKE_MFC_FLAG:STRING=2 - -DCOMPILE_DEFINITIONS:STRING=-D_AFXDLL - OUTPUT_VARIABLE OUTPUT) - IF(CMake_HAVE_MFC) - MESSAGE(STATUS "Looking for MFC - found") - SET(CMake_HAVE_MFC 1 CACHE INTERNAL "Have MFC?") - FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log - "Determining if MFC exists passed with the following output:\n" - "${OUTPUT}\n\n") - ELSE(CMake_HAVE_MFC) - MESSAGE(STATUS "Looking for MFC - not found") - SET(CMake_HAVE_MFC 0 CACHE INTERNAL "Have MFC?") - FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log - "Determining if MFC exists failed with the following output:\n" - "${OUTPUT}\n\n") - ENDIF(CMake_HAVE_MFC) - ENDIF("CMake_HAVE_MFC" MATCHES "^CMake_HAVE_MFC$") - - IF(CMake_HAVE_MFC) - OPTION(BUILD_MFCDialog "Whether to build the CMakeSetup MFC dialog." ON) - ELSE(CMake_HAVE_MFC) - SET(BUILD_MFCDialog 0) - ENDIF(CMake_HAVE_MFC) - ELSE(CMAKE_BUILD_ON_VISUAL_STUDIO) - SET(BUILD_MFCDialog 0) - ENDIF(CMAKE_BUILD_ON_VISUAL_STUDIO) -ENDMACRO(CMAKE_TEST_FOR_MFC) +SET(CMAKE_BUILD_ON_VISUAL_STUDIO 0) +IF(WIN32 AND NOT UNIX AND NOT BORLAND AND NOT MINGW ) + SET(CMAKE_BUILD_ON_VISUAL_STUDIO 1) +ENDIF(WIN32 AND NOT UNIX AND NOT BORLAND AND NOT MINGW ) #----------------------------------------------------------------------- @@ -220,6 +181,7 @@ MACRO (CMAKE_BUILD_UTILITIES) SET(KWSYS_USE_Process 1) SET(KWSYS_USE_CommandLineArguments 1) SET(KWSYS_HEADER_ROOT ${CMake_BINARY_DIR}/Source) + SET(KWSYS_INSTALL_DOC_DIR "${CMake_DOC_DEST}") SUBDIRS(Source/kwsys) #--------------------------------------------------------------------- @@ -227,8 +189,8 @@ MACRO (CMAKE_BUILD_UTILITIES) # Everything in the tree should be able to include files from the # Utilities directory. INCLUDE_DIRECTORIES( - ${CMake_SOURCE_DIR}/Utilities ${CMake_BINARY_DIR}/Utilities + ${CMake_SOURCE_DIR}/Utilities ) # check for the use of system libraries versus builtin ones @@ -266,7 +228,10 @@ MACRO (CMAKE_BUILD_UTILITIES) SET(CURL_SPECIAL_ZLIB_H ${CMAKE_ZLIB_HEADER}) SET(CURL_SPECIAL_LIBZ_INCLUDES ${CMAKE_ZLIB_INCLUDES}) SET(CURL_SPECIAL_LIBZ ${CMAKE_ZLIB_LIBRARIES}) - ADD_DEFINITIONS(-DCURL_STATICLIB) + OPTION(CMAKE_BUILD_CURL_SHARED "Should curl be built shared" FALSE) + IF(NOT CMAKE_BUILD_CURL_SHARED) + ADD_DEFINITIONS(-DCURL_STATICLIB) + ENDIF(NOT CMAKE_BUILD_CURL_SHARED) SET(CMAKE_CURL_INCLUDES) SET(CMAKE_CURL_LIBRARIES cmcurl) SUBDIRS(Utilities/cmcurl) @@ -306,19 +271,15 @@ MACRO (CMAKE_BUILD_UTILITIES) #--------------------------------------------------------------------- # Build XMLRPC library for CMake and CTest. - IF(CMAKE_USE_SYSTEM_XMLRPC) + IF(CTEST_USE_XMLRPC) FIND_PACKAGE(XMLRPC QUIET REQUIRED libwww-client) IF(NOT XMLRPC_FOUND) MESSAGE(FATAL_ERROR - "CMAKE_USE_SYSTEM_XMLRPC is ON but a xmlrpc is not found!") + "CTEST_USE_XMLRPC is ON but xmlrpc is not found!") ENDIF(NOT XMLRPC_FOUND) SET(CMAKE_XMLRPC_INCLUDES ${XMLRPC_INCLUDE_DIRS}) SET(CMAKE_XMLRPC_LIBRARIES ${XMLRPC_LIBRARIES}) - ELSE(CMAKE_USE_SYSTEM_XMLRPC) - SET(CMAKE_XMLRPC_INCLUDES) - SET(CMAKE_XMLRPC_LIBRARIES cmXMLRPC) - SUBDIRS(Utilities/cmxmlrpc) - ENDIF(CMAKE_USE_SYSTEM_XMLRPC) + ENDIF(CTEST_USE_XMLRPC) #--------------------------------------------------------------------- # Use curses? @@ -352,14 +313,15 @@ ENDMACRO (CMAKE_BUILD_UTILITIES) #----------------------------------------------------------------------- # The CMake version number. SET(CMake_VERSION_MAJOR 2) -SET(CMake_VERSION_MINOR 6) -SET(CMake_VERSION_PATCH 4) -#SET(CMake_VERSION_RC 6) -# CVS versions are odd, if this is an odd minor version -# then set the CMake_VERSION_DATE variable +SET(CMake_VERSION_MINOR 8) +SET(CMake_VERSION_PATCH 0) +SET(CMake_VERSION_RC 2) + +# We use odd minor numbers for development versions. +# Use a date for the development patch level. IF("${CMake_VERSION_MINOR}" MATCHES "[13579]$") INCLUDE(${CMake_SOURCE_DIR}/Source/kwsys/kwsysDateStamp.cmake) - SET(CMake_VERSION_DATE + SET(CMake_VERSION_PATCH "${KWSYS_DATE_STAMP_YEAR}${KWSYS_DATE_STAMP_MONTH}${KWSYS_DATE_STAMP_DAY}" ) ENDIF("${CMake_VERSION_MINOR}" MATCHES "[13579]$") @@ -390,6 +352,8 @@ SET(CMAKE_DOC_DIR "/doc/cmake-${CMake_VERSION}" CACHE STRING SET(CMAKE_MAN_DIR "/man" CACHE STRING "Install location for man pages (relative to prefix).") MARK_AS_ADVANCED(CMAKE_DATA_DIR CMAKE_DOC_DIR CMAKE_MAN_DIR) +STRING(REGEX REPLACE "^/" "" CMake_DATA_DEST "${CMAKE_DATA_DIR}") +STRING(REGEX REPLACE "^/" "" CMake_DOC_DEST "${CMAKE_DOC_DIR}") # include special compile flags for some compilers INCLUDE(CompileFlags.cmake) @@ -419,10 +383,6 @@ IF(BUILD_QtDialog) IF(APPLE) SET(CMAKE_BUNDLE_NAME "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}-${CMake_VERSION_PATCH}") - IF(CMake_VERSION_DATE) - SET(CMAKE_BUNDLE_NAME - "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}-${CMake_VERSION_DATE}") - ENDIF(CMake_VERSION_DATE) SET(CMAKE_BUNDLE_LOCATION "${CMAKE_INSTALL_PREFIX}") # make sure CMAKE_INSTALL_PREFIX ends in / STRING(LENGTH "${CMAKE_INSTALL_PREFIX}" LEN) @@ -442,26 +402,22 @@ IF(BUILD_QtDialog) ENDIF(BUILD_QtDialog) -# The same might be true on other systems for other libraries if -# CMAKE_USE_SYSTEM_XMLRPC or other variables like this are enabled. +# The same might be true on other systems for other libraries. # Then only enable RPATH if we have are building at least with cmake 2.4, # since this one has much better RPATH features than cmake 2.2. # The executables are then built with the RPATH for the libraries outside # the build tree, which is both the build and the install RPATH. IF (UNIX) IF( CMAKE_USE_SYSTEM_CURL OR CMAKE_USE_SYSTEM_ZLIB - OR CMAKE_USE_SYSTEM_EXPAT OR CMAKE_USE_SYSTEM_XMLRPC OR CURSES_NEED_RPATH OR QT_NEED_RPATH) + OR CMAKE_USE_SYSTEM_EXPAT OR CTEST_USE_XMLRPC OR CURSES_NEED_RPATH OR QT_NEED_RPATH) SET(CMAKE_SKIP_RPATH OFF CACHE INTERNAL "CMake built with RPATH.") SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) ENDIF(CMAKE_USE_SYSTEM_CURL OR CMAKE_USE_SYSTEM_ZLIB - OR CMAKE_USE_SYSTEM_EXPAT OR CMAKE_USE_SYSTEM_XMLRPC OR CURSES_NEED_RPATH OR QT_NEED_RPATH) + OR CMAKE_USE_SYSTEM_EXPAT OR CTEST_USE_XMLRPC OR CURSES_NEED_RPATH OR QT_NEED_RPATH) ENDIF (UNIX) -# should we build the MFC dialog? (a macro defined in this file) -CMAKE_TEST_FOR_MFC() - # add the uninstall support CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" @@ -486,8 +442,6 @@ MARK_AS_ADVANCED(CMAKE_STRICT) # build the remaining subdirectories SUBDIRS(Source) -SUBDIRS(Modules) -SUBDIRS(Templates) SUBDIRS(Utilities) SUBDIRS(Tests) @@ -495,6 +449,23 @@ SUBDIRS(Tests) ADD_TEST(SystemInformationNew "${CMAKE_CMAKE_COMMAND}" --system-information -G "${CMAKE_TEST_GENERATOR}" ) +# Install license file as it requires. +INSTALL(FILES Copyright.txt DESTINATION ${CMake_DOC_DEST}) + +# Install script directories. +INSTALL( + DIRECTORY Modules Templates + DESTINATION "${CMake_DATA_DEST}" + FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ + DIRECTORY_PERMISSIONS OWNER_READ OWNER_EXECUTE OWNER_WRITE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE + PATTERN "*.sh.in" PERMISSIONS OWNER_READ OWNER_EXECUTE OWNER_WRITE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE + PATTERN "CVS" EXCLUDE + ) + #----------------------------------------------------------------------- # End of the main section of the CMakeLists file #----------------------------------------------------------------------- diff --git a/CTestConfig.cmake b/CTestConfig.cmake index e94e4b0d7..8553b4b48 100644 --- a/CTestConfig.cmake +++ b/CTestConfig.cmake @@ -1,3 +1,14 @@ +#============================================================================= +# CMake - Cross Platform Makefile Generator +# Copyright 2000-2009 Kitware, Inc., Insight Software Consortium +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= set(CTEST_PROJECT_NAME "CMake") set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT") diff --git a/CTestCustom.cmake.in b/CTestCustom.cmake.in index 1b18ece96..a9d4d75d3 100644 --- a/CTestCustom.cmake.in +++ b/CTestCustom.cmake.in @@ -12,17 +12,19 @@ SET(CTEST_CUSTOM_WARNING_EXCEPTION "not sorted slower link editing will result" "stl_deque.h:479" "Utilities.cmzlib." - "Utilities.cmxmlrpc." "Source.CTest.Curl" - "Utilities.cmcurl" "Source.CursesDialog.form" + "Utilities.cmcurl" + "Utilities.cmexpat." + "Utilities.cmtar" + "/usr/include.*warning.*shadowed declaration is here" "/usr/bin/ld.*warning.*-..*directory.name.*bin.*does not exist" "Redeclaration of .send..... with a different storage class specifier" - "Utilities.cmexpat." "is not used for resolving any symbol" "Clock skew detected" "remark\\(1209" "stl_deque.h:1051" + "(Lexer|Parser).*warning.*conversion.*may (alter its value|change the sign)" "Parser.cxx.*warning.*2111-D.*statement is unreachable" "CMakeSetupManifest.xml.*manifest authoring warning.*Unrecognized Element" ) diff --git a/ChangeLog.manual b/ChangeLog.manual old mode 100755 new mode 100644 index da70ce05e..114270629 --- a/ChangeLog.manual +++ b/ChangeLog.manual @@ -1,582 +1,94 @@ -Changes in CMake 2.6.4 RC 6 -- Use $ var in CPack.cmake, and not @var@ -- Add more missing OSXX11 CPack files - -Changes in CMake 2.6.4 RC 5 -- Add missing file for OSXX11 CPack generator -- cmake-gui fix path length in the binary directory's combo box - -Changes in CMake 2.6.4 RC 4 -- Better document Verbatim in custom commands -- Fix #8843 ctest system information was not always correct on linux -- Fix transitive linking of imported libraries - -Changes in CMake 2.6.4 RC 3 -- Documentation fix for #8815 -- Fix CDash only submit with ctest_submit -- various fixes for FindQt4.cmake -- cmake-gui block checkable flag for item during configure/generate. -- put qt version in about for cmake-gui - -Changes in CMake 2.6.4 RC 2 -- Fix issues in FindBoost #8576 #8734 -- Fix -D issues with VS 6 -- Fix scope issue with CMAKE_CURRENT_LIST_FILE and macros -- Eclipse make VERBOSE off in makfiles #7585, and use built-in includes -- Codeblocks auto header finding -- Fix crash in include_directories #8704 -- Some documentation fixes to commands and classes. -- Do not warn if LIBPATH is not set for nmake - -Changes in CMake 2.6.4 RC 1 -- Add some better documentation about RPATH variables -- No longer mark header files as HEADER_FILE_ONLY automatically, - this gets rid of the ugly red marks in Visual Stuido -- Fix man-page preformatted text paragraphing -- Teach file(REMOVE) how to use relative paths -- Gracefully handle broken version symlinks -- Fix ASM source file extension default list -- Pass shared library export symbol in DEFINES -- Enforce unique binary directories -- Fix cmake-mode.el indentation cursor motion -- Simplify reverse cmLocalGenerator::Convert -- More robust decision to suppress implicit include dirs -- Fix Fortran implicit dependency include path (and test it) -- Clarify docs of old *_OUTPUT_PATH vars -- Fix svn update logic for modified files -- Add get_filename_component(... REALPATH) -- Work around broken GetLongPathName case - -Changes in CMake 2.6.3 RC 17 - 15 -- Fix Xcode rebuild issue with static libraries and add a test. - -Changes in CMake 2.6.3 RC 15 -- Fix Xcode rebuild issue with static libraries - -Changes in CMake 2.6.3 RC 14 -- Take cmake-gui out of beta for windows installer - -Changes in CMake 2.6.3 RC 13 -- Fix cmake can not find cmake when run on windows from PATH -- Fix #8378 FILEPATH cache UNC paths in list removed extra / -- Update FindBoost to reflect #8378 fix -- More FindQt4 fixes - -Changes in CMake 2.6.3 RC 12 -- Fix bug #8465 MACOSX_BUNDLE triggers re-configuration after build -- Add support for building with Qts ActiveX - -Changes in CMake 2.6.3 RC 11 -- Fix old-style install to prefix top -- Fix Docs for relative paths in link_directories -- Fix OS X dylib version flags for more linkers -- Add some extra search paths for Haiku -- Fix FindDoxygen not respecting QUIET and REQUIRED -- Fix FindGDAL, FindLua50 FindLua51 FindMPEG2 -- add FindOpenSceneGraph.cmake -- Fixes for FindOSG -- Fix FindQt4 find .moc files if there are spaces between # and include#8433. -- Change haiku to use dlopen functions and not BEOS stuff - -Changes in CMake 2.6.3 RC 10 -- Fix issue #7470. Allow spaces in the path names for CPack NSIS. -- Fix crash with set properties and empty values -- Enforce matching cmake_policy push/pop scope in scripts -- Document find_package refind -- add unset command -- add/fix many osg modules -- Fixes for FindBoost.cmake -- Fixes for FindDoxygen.cmake -- Fixes for FindFLTK.cmake -- Fix endif in FindKDE4.cmake -- Fix HEADER_FILE_ONLY with VS and midl files #7845 -- Add #7833 changes to support OSXX11 file associations -- Fix target ordering in VS IDE solution files -- Fix LOCATION property for Mac App Bundle targets -- Better diagnosis of mismatching logical blocks -- Improve scoping of policies (see cmake_policy and CMP0011) - -Changes in CMake 2.6.3 RC 9 -- Fix borland 55 build -- Pop a function scope even on error -- Provide variable CMAKE_VERSION - -Changes in CMake 2.6.3 RC 8 -- CMAKE_VERBOSE_MAKEFILE fix for KDevelop3 -- FindGettext.cmake fix #8122 -- FindPythonInterp.cmake find python 2.6 on windows -- cmake_minimum_required forward compatibility -- Fix (#7289) in cmDocumentationFormatterDocbook.cxx -- Fix #8203: codeblocks + mingw quoting issue -- Clean per-config export files during install -- Bug fixes for Eclipse CDT4 generator -- find_package refind when previously found file is removed -- Support '-' in target names for VS6 -- Fix component-name test on installation -- Warn when build directory is too long -- Fix set cache FORCE and -D command line to work together -- Enable LOCATION property for imported targets -- Allow cmake-gui to be built by cmake 2.4 -- Fix installation from read-only source file -- Fix for rc and vs6 -D flags -- Create DEBUG_CONFIGURATIONS global property - -Changes in CMake 2.6.3 RC 7 -- Add both 32/64-bit Program Files as windows paths -- Fix potential crash with ctest and log being null - -Changes in CMake 2.6.3 RC 6 -- Fix project(foo NONE) enable c later bug on OSX -- Fix Haiku default paths -- RPM Update generator to handle optional dependencies using Requires -- Fix FindCurses for Haiku -- Look for doxygen in more places -- Look for different expat names on windows -- FindLibxml2 use FindPkgConfig.cmake instead of UsePkgConfig.cmake, -- Add translations support to FindQt4.cmake -- FindWxWidgets Fixed placement of initial wxWidgets_FOUND=TRUE -- Fix GetPrerequisites.cmake to work with 0 libs -- Add support for Squish -- Make bundle startup optional in bundle generator -- Fix runtime search path ordering with symlinks (fix from RC4) -- Fix escaping of empty custom command argument on Windows -- Teach find_package more config file locations -- Fix scope of find_package definitions in find-modules -- Teach find_package to push/pop policies for version files - -Changes in CMake 2.6.3 RC 5 -- add EXCLUDE, INCLUDE to ctest_test command in ctest -S scripts -- Set CMAKE_SYSTEM in ctest -S scripts by reading CMakeDetermineSystem -- Fix for GetLibraryNamesInternal called on imported target issue on osx -- Add FortranCInterface.cmake module to discover Fortran/C interfaces -- Fix Fortran compiler specified with -D issue -- Add support for the MS masm and masm64 assemblers, works with nmake/make -- Improvments to FindQt4.cmake -- InstallRequiredSystemLibraries fix for win64 -- Fix flags for Sun Fortran, and g77 -- Fix imported library issue with OSX -- Fix -D and CACHE FORCE issue -- Have kwsys submit dashboards to cdash.org - -Changes in CMake 2.6.3 RC 4 -- Fix for SccProvider in visual studio -- fix for missing package_source target -- FindQt4 QT_PHONON_MODULE_DEPENDS fixes -- Fixes for GetPrerequisites.cmake system libraries on Mac and UNIX -- Merge in kwsys Haiku DynaimcLoader change -Changes in CMake 2.6.3 RC 3 -- Merge in CMakeLists.txt curl Haiku change -Changes in CMake 2.6.3 RC 2 -- Merge in more Haiku changes -Changes in CMake 2.6.3 RC 1 -- Better reporting when nmake compiler environment is not correct -- Fix bug #5936 set locale when running cvs and svn -- Teach find_library to find OpenBSD-style libs (issue #3470). -- Fix lib/ to lib/64/ search path conversion -- Fix CPack DESTDIR issue -- Support longer command lines with windows nmake and make -- Fix bug with color check for dependency scanning -- Use new link info during dependency scanning -- Fix find_* search order with path suffixes -- Fix install with multiple configurations and makefiles. -- Improve find_package interface for recursive find modules. -- Fix build issues with older visual studio versions -- Fix Xcode release builds -- Put custom target sources in Xcode projects -- Fix return value from cmake -E time commands -- Fix documentation for cmake --debug-trycompile -- Add Haiku support -- Fix bug, allow enable_language to be called for C after CXX -- Add FindCoin3D.cmake -- Fix bug in FindGLUT.cmake -- Better find of perl in FindPerlLibs.cmake -- FindQt4 Fix #7784, Fix #7433 -- FindQt4 refind qt when qmake changes -- Fix to find wxWidgets_LIB_DIR for windows platform more generally. -- Find ttkstup in FindTclStub.cmake -- Skip a command if its arguments fail to parse -- Fix convenience rule working directory -- Add support for source code control and visual stuido -- Add parenthetical expressions to if -- Fix Rc command with -D options and nmake -- Fix NSIS detection on windows 2000 -- Display an error message in ccmake when there are errors - -CMake 2.6.2 released - -Changes in CMake 2.6.2 RC 6 -- Fix bug#7669 cpack did not work when sym-linked after install - -Changes in CMake 2.6.2 RC 5 -- Add beta BundleUtilities.cmake file -- CPackRPM 7435 fixes to add optional post-install -- Fix Bug #7456, FindBoost versioned find not working -- Fix FindCurses to be able to work without ncurses.h -- FindQt4 fix bug #7433, add a bit more documentation and add ability - to specify extra flags to lupdate. - -Changes in CMake 2.6.2 RC 4 -- Fix bug #7359 make llvm-gcc work, by explicitely excluding - "llvm-" from _CMAKE_TOOLCHAIN_PREFIX -- Fix bug 7046: OS X Framework support: extensionless headers were - being ignored when specified as public headers -- Fix documentation in CheckCCompilerFlag.cmake -- Add better version support to find_package command -- Fix Xcode debug not working -- Add VERSION compare to if command -- Make FindThreads sete THREADS_FOUND -- Deb cpack generator sets Installed-Size for the package -- Do not add an empty /D"" at the end of VS 6 .dsp compile lines -- Recognize /MAP in VS 7 and greater -- Add new policy CMP0009 - GLOB_RECURSE should not follow symlinks by default - -Changes in CMake 2.6.2 RC 3 -- Fix bug, and remove extra closing > in visual fortran projects. -- Fix bug in ctest -C where it was sometimes ignored. -- Fix crash with exec_process when cmake is being debugged on windows -- Fix unsetting of global properties - -Changes in CMake 2.6.2 RC 2 -- allow tool chains to limit object path length -- add info.plist to frameworks -- better preservation of user link lines -- add a get command for cmake policies -- support for imported libraries of unknown type -- support link interface in target_link_libraries -- Do not hang when select lies -- .m compiled with gcc and g++ on mac -- Fix issue when application bundle dir is removed cmake - needs to re-run automatically -- Report an error when configure has one error -- Fix bug where -E commands stole command line options -- Fix infinite recursion bug with try-compile and change of compilers -- Fix delete and backspace in ccmake -- Fix coverage not to follow symlinks -- Add more possible languages for NSIS in cpack -- FindQt4.cmake fix bug #7433, add documentation that - directories also can be specified to update the translation files. -- Add standard arg handling to FindPHP4.cmake -- Add X11R6 to search path for FindOpenGL -- update cmake-syntax.vim to have more keywords -- BUG: fix #7477, set VERBOSE=1 in the kdevelop setting for - the environment, not together with the make executable -- UsePkgConfig.cmake - clean up, add a status message in case - pkgconfig didn't find the package, sync with kde -- FindX11 look in more places -- FindTIFF look for more names -- FindQt3, make sure qt4 is not found and some style stuff -- FindPNG add more names of linpng (sync with the KDE version) -- FindKDE3/KDE4 sanity checks on qt versions found -- FindLibXMl2 also search for xmllint, which comes with libxml2 - (sync with FindLibXml2.cmake from KDE) -- Fix sizeof, and other compiler INFO string checks with - GNU linker's --gc-sections -- Fix bogus dependency on executable targets when a linked library - happended to match the name of an executable target -- Improve readability of circular depends error -- Fix crash on circular target dependencies -- find_package now knows about lib64 paths -- Fix gentoo elf security issue with RPATH and RUNPATH - -Changes in CMake 2.6.2 RC 1 -- Fix abort in eclipse generator with empty EXECUTABLE_OUTPUT_PATH -- Fix FindKDE3.cmake syntax error -- Fix custom command output by relative path not always working -- Fix bug, Do not convert RPATH entries to full path. -- Allow for "$ORIGIN" into the RPATH> -- Allow for static libraries with lots of objects using archive append -- Fix documentation for FindImageMagick.cmake -- Fix link error with MS compiler and comdef -- Fix crash when attempting to load the RPATH out of a non-ELF file -- Add --trace option to cmake allowing for the tracing of a cmake run -- Fix for issue #4971 where the case of the drive letter component of - the filenames might be different when analyzing gcov output. -- Add warning level W0 to visual studio -- Add support for OSX library version flags - -Changes in CMake 2.6.1 RC 16 -- Fix for bug 7427, preinstall target name hard coded -- Fix issue #7088 - do not emit error messages when attempts to run - Visual Studio macros fail. You can still get the error output - as messages if you want using --debug-output from the cmake command line. -- Fix InstallRequiredSystemLibraries.cmake to work with win64 - -Changes in CMake 2.6.1 RC 15 -- Fix bug 7426 FindJPEG module causes error when setting JPEG_LIBRARY to blank -- Fix bug 7414 PackageMaker generator crashes when given components - with circular dependencies -- Fix source files to not add extra /, and look for extensions for - all enabled languages. -- Change link line to preserve input given to target_link_libraries even - if a shared library is repeated. -- Fix for bug 7421, fortran did not get arch flags on the mac -- For CMP0008 do not depend on the files that are not there, which - makes the Xcode generator delete executables after they are built. -- Work around Boost 1.36.0 bug fix on Darwin by setting the mangled - compiler name to -xgccVERSION -- Updated FindImageMagick to: - - Find newer additions such as animate, compare, etc. - - Find development api: Magick++, MagickCore, MagickWand - - Use FindPackageHandleStandardArgs to output standard messages. - -Changes in CMake 2.6.1 RC 14 -- Change dashboard submission to go directly to CDash. -- Add policy CMP0008- Full-path libraries must be a valid library file name - -Changes in CMake 2.6.1 RC 12 -- More find locations for FindJNI. -- Fix bug with source files ending in .l and .l.cpp, causing cmake - to think they were the same file in some cases. -- Fix issue with .lib being seen as .obj with VS due to a full path - to a library given without the file extension. This only worked - with the VS generator, but some projects had worked around it with - if statements. It now issues a warning, but should link. -- Update cpack stuff for beta OSX bundle generator for CPack -- CheckFortranFunctionExists.cmake now calls the function. -- FindBLAS.cmake, FindLAPACK.cmake modules were redesigned so - now you have three new variables BLA_VENDOR (you can specify the VENDOR), - BLA_STATIC (gets the static version of libs), BLA_F95 - (gets the fortran 95 interface). BLA_VENDOR can be specified as - an environment variable. Intel mkls libs need FindThreads to - be found correctly so you will need to enable the C/CXX -- FindMPI: Use the HINTS feature of find_library to find the right - libraries for MPI, and act a bit more intelligently when MPI cannot be found. -- Improved support for finding wxWidgets in MinGW environment. -- CMAKE[_SYSTEM]_(LIBRARY|PROGRAM|INCLUDE|PREFIX)_PATH variables - moved CMAKE_CROSSCOMPILING from "Variables that modify behaviour" to - "variables that Provide Information" -- handle HTML documentation for single items better: no warning about - ComputeSectionLinkPrefix, don't create an index for only one item. -- Better error messages in CPackBundleGenerator - -Changes in CMake 2.6.1 RC 11 -- Fix curl build issue with Xcode 3.1 -Changes in CMake 2.6.1 RC 10 -- Add a fix for bug # 7340, CMAKE_USER_MAKE_RULES_OVERRIDE was - not able to support a try-compile in cmake 2.6 -- Remove bad test for bug # 7316 -Changes in CMake 2.6.1 RC 9 -- Fix bug # 7316 Xcode double escaped define strings -- FindBoost can now find the upcoming Boost 1.36 -Changes in CMake 2.6.1 RC 8 -- Fix build problem with missing cpack file - -Changes in CMake 2.6.1 RC 7 -- More fixes for CPack components functionality -- Fixes for Xcode generater #7277 #7044, do not compile foo.txt. - Rebuild application bundles when a library changes. Set the project - location for Xcode 3.1 -- Do not automatically add EXECUTABLE_OUTPUT_PATH to cache. -- New tree view in cmake-gui -- FindBoost.cmake, find boost as installed by the BoostPro/Boost Consulting - installers on Windows. And cleanup FindBoost module, fixing several small - bugs and providing better diagnostic information when things go wrong. -- Fix FindwxWidgets.cmake to find richtext library -- Fix FindQt4.cmake with empty qconfig.pri files. Fixes #7287. -- Fix add/remove program version string again... -- Fix column width in cmake-gui - -Changes in CMake 2.6.1 RC 6 -- Fix DEFINITIONS property to be compatible with 2.4 -- Fix escaping of $ for visual studio -- FindGettext.cmake fix bug #7230: don't ignore first parameter if it's not ALL -Changes in CMake 2.6.1 RC 5 -- Add support for component based packages in cpack. -- Fix FindBLAS.cmake if no fortran compiler is found -- Fix FindFLTK.cmake to pass new module test -- Fix FindKDE3.cmake to not add flags if kde3 is not found -- Fix FindMatlab.cmake, FindOpenSSL.cmake, FindQt3.cmake, - FindSWIG.cmake, to only error if it is required -- Fix FindwxWidgets.cmake to work on msys -- Add a beta OSX bundle generator for CPack -- Fix bug in cmake --build-and-test where cmake output was lost -- Fix ctest handling of CDash dart measurement support -- Add a group view to cmake-gui -- Fix nmake/make with visual studio compiler to handle long link lines -- Fix FLTK_WRAP_UI to better notice when mistakes are made with the target name -- Fix spelling error EnableFiberSafeOptimizations - -Changes in CMake 2.6.1 RC 4 -- Change to find_*, a new HINTS keyword was added to avoid the - need for NO_DEFAULT_PATH, and a repeated call to find_* -- Update all NO_DEFAULT_PATH usage in Modules/Find* -- Fix for cpack self extracting .sh files to work with more shells -- FindQt4 now finds dependencies for some qt modules -- ctest cpu information fixes for cygwin and linux -- Recognize more color terminals for color output -- Remove SKIP_RULE_DEPENDS from custom command because CMake - now can detect when a cutom command actually changes and only - re-run the rule then. This fixes the problem of custom commands - re-running every time a file is added to a target. -- Fix for very slow find_path on OSX because of framework searchs -- Fix for bug 6364, extra help targets when there are subdirectories - of the top level. -- Fix for Xcode generator to not eat some flags by mistake. -- Add end of file checking for close if, foreach, macro, functions - etc enabled. - -Changes in CMake 2.6.1 RC 3 -- FindQt4 - Find qt debug libraries on windows with d postfix. -- Find 64 bit windows registry stuff with 32 bit cmake -- Give a message if rpath is changed during install -- rpath changer during install understands symlinks now -- If a source file is not found and is a full path cmake complains. - -Changes in CMake 2.6.1 RC 2 - -- FindQt4 - report an error when trying to use MSVC with Qt built by mingw. -- FindQt4 - make Qt not found if the QtCore library can't be found. -- UseQt4 - only add flags for modles that are used -- Log file and LC_ALL fix for FindSubversion -- Make MacOSXBundleInfo.plist.in a configured file again -- Fix makefile generator targets to depend on full path link libraries -- Allow CMakeImportBuildSettings to not match tools if - CMAKE_OVERRIDE_COMPILER_MISMATCH is set -- Fix incorrect extension extraction in gcc cross compiler check -- Add support for Portand Fortran -- Fix list command with empty list values -- Add support for setting compiler and toolchain in qt cmake-gui -- Fix Bug 7011, FindQt4 was slow on a mac, find_path should not glob in / -- Fix install directories for cygwin package of CMake - -Changes in CMake 2.6.1 RC 1 -- Add a way to modify depend scanning with the property: - IMPLICIT_DEPENDS_INCLUDE_TRANSFORM -- Add a way for custom commands to skip depending on the rule.make file -- Fix ENABLE_LANGUAGE(ASM-ATT OPTIONAL) to work -- Fix gcov in ctest in French or other non-English runs -- Fix help for ctest commands to be lower case -- Find QtCLucene on Qt/Mac binary -- Fix for build on ARM -- Fix for docbook to add newlines -- Fix -Wno-dev to not eat path to source tree -- Fix bug in NSIS CPack where CPACK_NSIS_MODIFY_PATH did modify the path -- Fix FindBoost version variable names to correct bug in Boost version -- Fix Add/Remove program name for CMake install on windows -- Fix bug 0006988 coverage not reported on dashboards -- Fix bug 0006990 CMake crashes with bad input to set_source_files_properties -- Fix bug in FindCurses where you could not run cmake twice -- Fix 64 bit cmake creation of Xcode projects -- Add --help-policy to --help - -Changes in CMake 2.6.0 -- Fix links in generated documentation -- Fix for FindQt and some mac frameworks -- Fix for ctest to report more than 2 gigs system memory on windows -- Fix CTest build name for vs 9, and fix memory size on windows -Changes in CMake 2.6.0 RC 10 -- Do not duplicate .so libraries on the link line -- Add more system library paths to sun builds -- Add BETA support for Intel Fortran IDE files in visual studio -- Fix FindCurses to work if ncurses is the only option -- Fix shell escapes on some systems -- Remove check for file write as input to cmake, as it is no longer needed -- Make check_type_size automatically check for headers that it uses -- Remove minimum required from FindBoost.cmake -- Fix FindSDL so that it can be run more than once -- Fix find required for VTK package -- Allow for CMAKE_OSX_SYSROOT to work with single architecture -- Add context information when a source file cannot be found. -- Report the directory-level context even if no list file - is currently being processed. - -Changes in CMake 2.6.0 RC 9 - -- Fix for fortran mod:: support -- Fix bug in install command with BUNDLE DESTINATION -- Make mac install symlinks check for errors -- Fix for CMP0007, to not warn about empty lists -- Preserve static libraries when linked multiple times -- Use c compiler path to find asm compiler -- Allow RC compiler to not get all COMPILE_FLAGS -- Complete overhaul for FindBoost.cmake -- Minor fixes for FindMPI.cmake -- Fix for list command and empty list elements CMP0007 -- Fix for VS6 and sub-groups -- Fix bug 6440, and make sure _INIT flags do not overright cache values -- Do not report CMP0003 for anything other than -l -- Fix crash in fortran depend scanning, bug 6855 -- Fix timeout values for cmake's own tests -- Better message in compiler ABI detect -- Fixes for cpack x11 packages on leopard -- Changes to cpack options names -- Fixes for FindMPI on 64 bit MS MPI -- Fix for -isystem for wxWidgets -- Some fixes for chrpath during installation -- Fix compatibility with CMake 2.4 for installation of MACOSX_BUNDLE (CMP0006) -- Do not use debug postfix when building frameworks on the Mac -- Fix exception handling off/on issue with visual studio IDE generators -- Fix to be native path style -- Fix leak in cpack -- Some Qt GUI style changes - -Changes in CMake 2.6.0 RC 8 - -- Fix sun make very poor performance -- Fix includes for automoc in FindQt4 - -Changes in CMake 2.6.0 RC 7 - -- Fix for chrpath on sun with gcc -- Fix FindJNI on unix with HKEY issue bug 6688 -- Change install location on mac for cmake-gui -- Fix for bugs 6730 and 6720 in FindQt4 configured headers in binary dir -- Add VS9 support to InstallRequiredSystemLibraries.cmake -- Fix some bugs in framework support -- Have make edit_cache work with cmake-gui and eclipse generator -- Fix find_* to not mistakenly construct network paths on windows -- Several bug fixes in cmake-gui Qt program. - -Changes in CMake 2.6.0 RC 6 - -- Added ChangeLog.manual -- Allow CMakeImportBuildSettings force compiler to be optional -- Change cpack deb packager to detect the architecture -- Fix FindCurses to be backwards compatible with cache variable CURSES_LIBRARY -- Add version variables to FindQt4.cmake -- Fix CPack Deb generator to not hard code /usr -- Better default size for cmake-gui help dialog -- Fix problem where incorrect path was used for cmake.exe when - used to do incremental linking on windows nmake or make -- Fix build with system libraries on -- Add color output in kdevelop -- Create non-verbose makefiles in kdevelop -- Fix some missing flags for vs IDE flag map -- Fix MacOSX install symlink crash problem -- Fix turning of Dev warnings with gui's -- Fix backwards compatibility issue with FindMPI.cmake -- Fix for bug 6605, add -L path for optimized in debug sometimes for - backwards compatibility -- Allow for CMP0000 to be set before any warnings happen -- Do not use FAT32 hack in VS 2005 and 2008 unless on a FAT32 disk, - causes try-compiles to be 3 times slower if FAT hack is present. -- Fixes to debian cpack -- Can now check if a proprty is SET or not -- Fix for generate with vs 2005 and vista not being able to create stamp file -- set_property with an empty value unsets that property now -- Fix FindQt4 on windows with some \ style paths - -Changes in CMake 2.6.0 - -- Documentation for all variables -- Automatic reload of projects in visual stuido 7 and greater - when cmake is re-run. -- Direct CDash submit support -- Bullseye coverage support -- Use full paths for linking to libraries on all platforms. No longer - separate into -L and -l. -- Enhance the install command -- export command and ability to have imported targets -- CPack support for rpm and deb -- Cross compile support -- New Qt GUI -- Introduction of the cmake_policy command -- Much better Fortran support -- Mac OSX Framework creation support -- Project generators for Eclipse and CodeBlocks -- Beta support for asm in makefiles -- Enhanced find_package() command with support for project-installed - FooConfig.cmake files -- New CMAKE_PREFIX_PATH environment variable to specify user search dirs - for find_xxx() -- Lots of bug fixes \ No newline at end of file +Changes in CMake 2.8.0 RC 2 +- Fix FindQt4 so that QtHelp depends on QtNetwork +- Add missing copyright notice to CMake.cmake module +- Add alternative _UTILITY targets to all VS solutions +- FindGTest.cmake some bugfixes, also added public function for closer integration btwn GoogleTest & CTest, contributed by Dan Blezek. +- Eliminate ExternalProject's use of CMAKE_CFG_INTDIR subdir for Makefile generators. It was causing problems with parallel make -j invocations. Keep it for multi-configuration build systems so that Debug and Release stamp files remain separate. +- Fix for bug #9611, some more paths for OpenJDK. +- Fix get_filename_component() registry view with wow64 +- Fix warnings in CMake source code. +- Fix module definition file reference for VS6 NMake +- Fix for bug #9611 do not hard code archs for search paths of java, look at the machine type. +- Fix bug#9619 add a link to module maintainers page in readme.txt for Modules +- Add cmake-help-command function to emacs-mode +- Add initial XL C compiler flags for safer builds +- Split XL compiler information files +- Fix default install prefix on Haiku +- Fix use of module .def files for MS tools +- Add StringProperty options includeing /def: for VS 10 flag table +- Convert copyright to OSI BSD and clean up licenses +- ENH: Added ctest test coverage for a test timeout +- CTest honors test timeouts again. +- Remove ctest_submit from CTestTestParallel +- Fix shared library creation flag for XL on Linux +- Fix BUG: 0009612: --output-on-failure option doesn't work with + the new parallel CTest handler +- Removed support for cutil library and header file. +- Fixed CUDA_PROPAGATE_HOST_FLAGS, added path for Mac SDK. +- Make sure LINK_FLAGS are seen by generator, fix for part of bug#9613 +- Fix issue #9412 - remove RPATH from files copied by + BundleUtilities.cmake on Linux. Thank +- Fix support for OLD behavior of policy CMP0002 +- Fix issue #8818 - escape quotes in the license file when using the + DragNDrop cpack genera +- Fix .vfproj file version for Intel Fortran 10.1 +- Use BeAPI for per-user package registry on Haiku +- Correct comments and use ASM${ASM_DIALECT} env. var instead of ASM + env. var to initialize +- Fix bug #9529. +- Fix Windows GUI implib and image version in VS 6 +- Convert newlines from CRLF to LF +- Oops. Last commit did not create subdir before doing a touch on a + file in it. So it fails of a type that is expected to have a + location... +- Policies 14 and 15 will be first released in 2.8.0 +- Document full version number with policy default +- Simplify bootstrap script source dir detection +- Documentation fixes, new CUDA_PROPAGATE_HOST_FLAGS, changed output + directory. + +Changes in CMake 2.8.0 RC 1 + +- Qt based GUI cmake-gui is now the default GUI, MFC CMakeSetup is no + longer included in CMake. ccmake is still supported. +- cmake-gui supports multi-state values options. +- CMake now has cmake --build command that can build any CMake generated + project from the command line. +- Visual Studio 2010 beta support has been added. +- KDevelop generator now has color output for builds. +- CTest supports running tests in parallel with a -j N option. +- A new CTest CTEST_USE_LAUNCHERS option can be used to get better + dashboard error reports with make based tools. +- CTest has support for sub-projects and labels which can interact + with CDash. +- CTest now supports Git, Mercurial, and Bazaar. +- It is now possible to use DESTDIR in CPack for any CMake based projects + giving more flexibility on the final path names. +- The CPack Deb generator now computes the arch instead of hard coding it. +- Fortran/C mixed language projects made much easier. CMake now + automatically can compute the run time libraries for a compiler. In + addition, a new FortranCInterface module can determine the correct + name mangling needed to mix C and Fortran. +- Intel compiler support added to OSX, and support for embedded + manifests in the windows intel compiler was added. +- Depend scanning is now much faster with makefiles. +- Many FindQt4 improvements to stay working with current Qt releases +- FindMPI has improvements for windows. +- FindBoost has been updated to work with the most recent boost releases. +- New External Project Module. The 'ExternalProject_Add' function + creates a custom target to drive download, update/patch, configure, + build, install and test steps of an external project. +- xmlrpc dependancy has been removed +- CMAKE_OSX_DEPLOYMENT_TARGET cache variable has been created to set the + deployment OS for a build on OSX. +- Several new policies were added: + CMP0012 + The if() command can recognize named boolean constants. + CMP0013 + Duplicate binary directories are not allowed. + CMP0014 + Input directories must have CMakeLists.txt. + CMP0015 + The set() CACHE mode and option() command make the cache value + visible. +- Lots of bug fixes. diff --git a/ChangeLog.txt b/ChangeLog.txt index 1623ada0a..81b90e0c6 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,3 +1,18818 @@ +2009-09-23 14:13 zach.mullen + + * Tests/CMakeLists.txt: Uncommented the dependency of + CTestTestNoExe on CTestTestNoBuild so that it will work in + parallel now. + +2009-09-23 14:10 king + + * Source/cmGlobalXCodeGenerator.cxx: Add Xcode SYMROOT setting for + custom targets + + Xcode 1.5 writes helper scripts at the projectDirPath location + for targets that do not set SYMROOT. We now add SYMROOT to + custom targets so that all targets set it. This prevents Xcode + 1.5 from touching the source directory now that we always set + projectDirPath. + + See issue #8481. + +2009-09-23 14:07 zach.mullen + + * Tests/CTestTestParallel/lockFile.c: Make portable c for Parallel + test + +2009-09-23 14:01 alex + + * Source/: cmDepends.cxx, cmDepends.h, cmDependsC.cxx, + cmDependsC.h, cmDependsJava.cxx, cmDependsJava.h, + cmLocalUnixMakefileGenerator3.cxx, + cmLocalUnixMakefileGenerator3.h: Major optimization of C/C++ + dependency scanning. + + Now only the dependencies for the file where the dependencies + actually may have changed are rescanned, before that this was + done for all source files even if only one source file had + changed. This reduces e.g. on my machine the time for scanning + the dependencies of kdelibs/khtml/ when only one file + (khtml_global.cpp) has changed from around 7.5 seconds to 1.2 + seconds. + + The tests succeed, it does what I expected it to do on kdelibs, + and Brad also reviewed the patch, so I think it should be ok. + + Alex + +2009-09-23 13:09 clinton + + * Source/QtDialog/: CMakeSetupDialog.cxx, QCMakeCacheView.cxx, + QCMakeCacheView.h: fix compile warnings + +2009-09-23 12:46 hoffman + + * Utilities/Release/: magrathea_release.cmake, release_cmake.cmake: + Handle older cvs clients that do not allow for the password to be + in the CVSROOT. + +2009-09-23 12:45 hoffman + + * Tests/CMakeLists.txt: Add nightly builds for linux windows and + mac. + +2009-09-23 11:38 zach.mullen + + * Tests/: CMakeLists.txt, CTestTestParallel/CMakeLists.txt, + CTestTestParallel/lockFile.c, CTestTestParallel/lockFile.cxx: Set + new ctest tests to always run, whether CTEST_TEST_CTEST is + enabled or not. Changed parallel test to be portable. + +2009-09-23 10:45 king + + * Source/kwsys/SystemTools.cxx: Fix KWSys SystemTools build on + cygwin with -mwin32 + + Commit "Optimize KWSys SystemTools::FileExists on Windows" + accidentally added "#undef _WIN32" when including on + cygwin, which breaks builds using the -mwin32 flag. This commit + removes that line and fixes the real error it was intended to + avoid. + +2009-09-23 09:00 zach.mullen + + * Tests/CTestTestParallel/test.cmake.in: CTestTestParallel now + submits to public dashboard for easier debugging + +2009-09-23 08:48 king + + * Source/cmDocumentVariables.cxx, + Source/cmGlobalXCodeGenerator.cxx, + Source/cmGlobalXCodeGenerator.h, + Tests/SystemInformation/SystemInformation.in: Teach Xcode + generator to set XCODE_VERSION + + We set the variable 'XCODE_VERSION' in the CMake language to the + Xcode version string (e.g. "3.1.2"). Platform config files may + use it later. + +2009-09-23 01:01 bigler + + * Modules/FindCUDA.cmake: Updated formatting of documentation plus + a little reorganization. + +2009-09-23 00:50 bigler + + * Modules/FindCUDA/run_nvcc.cmake: Added a command to make the + output directory. This is to fix the XCode build that uses a + different output directory than other systems, and rather than + try to match that we'll just make it. + +2009-09-23 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-22 18:44 clinton + + * Modules/FindQt4.cmake: add support for finding + qcollectiongenerator executable. fixes #9248. + +2009-09-22 18:29 clinton + + * Source/QtDialog/: CMakeSetup.cxx, CMakeSetupDialog.cxx: fix issue + 9346. add binary directory to window title to make it easier to + deal with multiple cmake-gui instances + +2009-09-22 17:08 hoffman + + * Utilities/Release/dash2win64_release.cmake: new windows build + machine for cmake + +2009-09-22 17:07 hoffman + + * Utilities/Release/vogon_cygwin.cmake: disable svn + +2009-09-22 16:28 clinton + + * Modules/FindQt4.cmake: Add support for Qt configured with custom + qtlibinfix (see issue 9571). Also fix CMP 15 warnings. + +2009-09-22 16:18 king + + * Source/: cmGlobalXCodeGenerator.cxx, cmGlobalXCodeGenerator.h: + Fix Xcode project references to the source tree + + Xcode project source file references need to always be relative + to the top of the source tree in order for SCM and debug symbols + to work right. We must even allow the relative paths to cross + outside of the top source or build directories. + + For subdirectory project() command Xcode projects we use the + source directory containing the project() command as the top. + Relative paths are generated accordingly for each subproject. + + See issue #8481. + +2009-09-22 16:16 king + + * Source/: cmLocalGenerator.cxx, cmLocalGenerator.h: Optionally + force conversion to relative path + + In cmLocalGenerator::ConvertToRelativePath we normally convert to + relative path only if the local and remote paths both lie inside + the source tree or both lie inside the build tree. This commit + adds an optional 'force' argument to allow conversion even when + this rule is violated. + +2009-09-22 16:12 hoffman + + * bootstrap: Make sure KWSYS_DO_NOT_CLEAN_PUTENV is defined at + bootstrap time for cmake in the bootstrap script. + +2009-09-22 16:02 king + + * Modules/CMakeDetermineCompilerABI.cmake: Skip implicit link info + for multiple OS X archs + + Implicit link information contains architecture-specific + libraries and directories. The link information cannot be + explicitly specified safely when CMAKE_OSX_ARCHITECTURES contains + more than one architecture. + + As a result, we currently cannot support mixed-language + C++/Fortran targets and OS X universal binaries simultaneously. + In order to avoid conflicts for simple C/C++ cases, we now simply + skip detection of implicit link information in this case. + +2009-09-22 15:58 hoffman + + * Source/kwsys/: CMakeLists.txt, Configure.hxx.in: Can not use + cmakedefine in kwsys because bootstrap of cmake does not support + it. + +2009-09-22 14:56 hoffman + + * Source/kwsys/: Configure.hxx.in, SystemTools.cxx: Put a flag in + that will stop system tools from deleting system environment + memory on exit, as it can cause gcov to crash the programs. + +2009-09-22 14:40 alex + + * Source/: cmGlobalUnixMakefileGenerator3.cxx, + cmLocalUnixMakefileGenerator3.cxx: Rescan dependencies also if + CMakeDirectoryInformation.cmake has changed. + + If CMakeDirectoryInformation.cmake is newer than depend.internal + the include directories may have changed, so dependencies need to + be scanned again. Ok by Brad. + + Alex + +2009-09-22 13:02 king + + * Source/kwsys/: SystemTools.cxx, SystemTools.hxx.in: Optimize + KWSys SystemTools::FileExists on Windows + + We optimize this method by using the GetFileAttributesExA native + Windows API to check for file existence when possible. For real + Windows builds we always use it. For Cygwin we use + cygwin_conv_to_win32_path to get a native Windows path if + possible and otherwise fall back to 'access'. + + Cygwin-to-Windows path conversion and cache by Wojciech Migda. + See issue #8826. + +2009-09-22 12:05 zach.mullen + + * Tests/: CMakeLists.txt, CTestTestParallel/CMakeLists.txt, + CTestTestParallel/CTestConfig.cmake, + CTestTestParallel/lockFile.cxx, CTestTestParallel/test.cmake.in: + Added tests for ctest parallel options (PARALLEL_LEVEL, + PROCESSORS, RUN_SERIAL) + +2009-09-22 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-21 23:42 lowman + + * Modules/FindBoost.cmake: Make Boost easier to find + +2009-09-21 23:07 clinton + + * Modules/FindQt4.cmake: Fix issue 9581. Qt 4.5+ needs + gobject-2.0. + +2009-09-21 22:38 lowman + + * Modules/: FindCxxTest.cmake, FindGTK2.cmake, + FindOpenSceneGraph.cmake, FindProtobuf.cmake: Add a blank line to + my contributed find modules to prevent copyright info from + showing up in CMake docs + +2009-09-21 22:21 lowman + + * Modules/FindBoost.cmake: Fix Bug #9158: FindBoost.cmake does not + work properly with nmake and icl + +2009-09-21 17:22 hoffman + + * Utilities/Release/release_cmake.sh.in: Use ctest -j to speed up + tests for release builds. + +2009-09-21 17:19 hoffman + + * Utilities/Release/release_cmake.cmake: Do not require a cvs login + for checkout. + +2009-09-21 15:29 zach.mullen + + * Source/CTest/cmCTestBatchTestHandler.cxx: More SLURM + experimentation (ctest batch mode) + +2009-09-21 15:26 hoffman + + * Tests/CMakeLists.txt: For the complex tests since they link to + the CMake library make sure that they are built with the type of + build. + +2009-09-21 14:58 zach.mullen + + * Source/CTest/cmCTestBatchTestHandler.cxx: Fixed a slurm batch + argument identifier. + +2009-09-21 14:21 zach.mullen + + * Source/CTest/: cmCTestBatchTestHandler.cxx, + cmCTestBatchTestHandler.h: Need to quote args when generating + batch scripts from ctest + +2009-09-21 13:40 zach.mullen + + * Source/CTest/cmCTestBuildHandler.cxx, Tests/CMakeLists.txt: + Re-enabled failing tests; fixed ctest_build output to be + consistent in the error condition across different make programs + so that these tests would pass. + +2009-09-21 13:18 hoffman + + * Source/cmGlobalXCodeGenerator.cxx: Fix Bug #8332, add support for + .pch files for Xcode. + +2009-09-21 13:15 hoffman + + * Source/cmGlobalXCodeGenerator.cxx: Fix Bug #8928, add support for + .xib files for Xcode. + +2009-09-21 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-20 23:55 lowman + + * Modules/FindProtobuf.cmake: Fix glitch where we were accidently + unsetting CMAKE_FIND_LIBRARY_PREFIXES + +2009-09-20 21:15 lowman + + * Modules/FindProtobuf.cmake: Forgot to mark Protobuf cache + variables as advanced + +2009-09-20 20:20 lowman + + * Modules/FindALSA.cmake: [NEW Module] FindAlsa audio library + (Advanced Linux Sound Architecture) + +2009-09-20 20:12 lowman + + * Modules/FindProtobuf.cmake: [NEW Module] Find and use Google's + Protocol Buffers library & compiler + +2009-09-20 11:33 lowman + + * Modules/FindBoost.cmake: Fix boost library detection with Sun + Studio compiler (Issue #9153) + +2009-09-20 09:42 hoffman + + * Tests/CMakeLists.txt: Disable test as it fails on every system. + +2009-09-20 08:03 lowman + + * Modules/FindThreads.cmake: Improve readability + +2009-09-20 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-19 13:02 alex + + * Source/cmDepends.cxx: Minor optimization in dependency checking. + + When reading the depend.internal file, check only once for every + depender whether it exists, instead of repeatedly in a loop for + each dependee. Within that function it can only change of the + depender is removed. This is taken care of. This reduces the + number of access() calls in kdelibs/khtml from 180000 to 90000 + (i.e. 50%), and reduces the time for that (without the actual + scanning) from 0.3 s to 0.21 s on my system. + + Alex + +2009-09-19 12:00 king + + * Source/: CMakeLists.txt, cmGlobalXCode21Generator.cxx, + cmGlobalXCode21Generator.h, cmGlobalXCodeGenerator.cxx, + cmGlobalXCodeGenerator.h: Remove cmGlobalXCode21Generator + subclass + + This subclass of cmGlobalXCodeGenerator only provided two virtual + method overrides, and it made construction of the Xcode generator + instance complicated. This commit removes it and replaces the + virtual methods with tests of the Xcode version. The change + removes duplicate code. + +2009-09-19 10:14 king + + * Modules/CMakeCCompiler.cmake.in, + Modules/CMakeCXXCompiler.cmake.in, + Modules/Platform/Darwin-GNU-C.cmake, + Modules/Platform/Darwin-GNU-CXX.cmake, + Modules/Platform/Darwin-GNU.cmake, Modules/Platform/Darwin.cmake, + Source/cmLocalGenerator.cxx: Fix check for -isysroot on OS X + + Previously we checked for this flag by parsing the version number + of GCC out of 'gcc --version', but this is not reliable because + the format can vary greatly. Now we run 'gcc -v --help' and look + for '-isysroot' in the list of options. + + We also now store the result on a per-language basis in the + per-compiler info file "CMakeCompiler.cmake". This is + necessary to make it accessible from try-compile projects so that + they generate correctly. + +2009-09-19 04:33 alex + + * Modules/Compiler/: Intel-C.cmake, Intel-CXX.cmake: The + preprocessing and assembly rules also need the , + otherwise different reults are created. + + Alex + +2009-09-19 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-18 15:16 hoffman + + * Source/cmLocalGenerator.cxx: Only do the OSX arch stuff on OSX. + +2009-09-18 15:01 zach.mullen + + * Tests/CMakeLists.txt: Disabling CTestTestNoBuild pending + investigation of odd g++ output issues. + +2009-09-18 14:22 hoffman + + * Modules/Platform/Darwin.cmake, Source/cmLocalGenerator.cxx: Add + detection of gcc versions that do not support isysroot option and + do not use it for them. + +2009-09-18 14:02 zach.mullen + + * Tests/CMakeLists.txt: Apparently, on FarAway the presence of + errors during ctest_build does not cause the calling ctest to + return an error condition. + +2009-09-18 13:34 zach.mullen + + * Tests/CMakeLists.txt: Cosmetic change to test CMakeLists + +2009-09-18 12:56 david.cole + + * Modules/ExternalProject.cmake: Better error message tells user + possible ways to resolve the error. + +2009-09-18 12:16 zach.mullen + + * Tests/: CMakeLists.txt, CTestTestCrash/CMakeLists.txt, + CTestTestCrash/CTestConfig.cmake, CTestTestCrash/crash.cxx, + CTestTestCrash/test.cmake.in, CTestTestFailure/CMakeLists.txt, + CTestTestFailure/CTestConfig.cmake, CTestTestFailure/badCode.cxx, + CTestTestFailure/testNoBuild.cmake.in, + CTestTestFailure/testNoExe.cmake.in: Added test coverage for + ctest. Covers WILL_FAIL condition, tests that do not build, + tests that segfault, and test executable not found (bad command), + as well as some pass and fail regular expressions. + +2009-09-18 10:28 hoffman + + * Source/cmGlobalXCodeGenerator.cxx: Fix the build for version 2.5 + of Xcode. + +2009-09-18 09:49 king + + * Tests/TryCompile/CMakeLists.txt: Fix CHECK_(C|CXX)_COMPILER_FLAG + macro test + + The flag "-_this_is_not_a_flag_" was not rejected by GCC 4.0 on + older Mac OS X. We now use "---_this_is_not_a_flag_" instead, + which will hopefully be rejected by all compilers. + +2009-09-18 09:49 king + + * Modules/: CheckCCompilerFlag.cmake, CheckCXXCompilerFlag.cmake: + Fix CHECK_(C|CXX)_COMPILER_FLAG for XL and SunPro + + These compilers warn and return 0 for unrecognized flags. We fix + the compiler flag check macros by looking for a warning in the + output. We also update the regex for GNU on older Macs. See + issue #9516. + +2009-09-18 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-17 17:16 king + + * Modules/: CheckCCompilerFlag.cmake, CheckCXXCompilerFlag.cmake: + Fix CHECK_(C|CXX)_COMPILER_FLAG for HP + + This compiler warns and returns 0 for unrecognized flags. We fix + the compiler flag check macros by looking for a warning in the + output. See issue #9516. + +2009-09-17 16:09 hoffman + + * Source/cmLocalGenerator.cxx: Fix case where no archs are found on + older macs. + +2009-09-17 15:33 king + + * Tests/TryCompile/CMakeLists.txt: Test CHECK_(C|CXX)_COMPILER_FLAG + macros + + This teaches the TryCompile test to check that the compiler flag + check macros correctly reject a bad flag. See issue #9516. + +2009-09-17 15:32 king + + * Modules/: CheckCCompilerFlag.cmake, CheckCXXCompilerFlag.cmake: + Fix CHECK_(C|CXX)_COMPILER_FLAG for GNU and MSVC + + These compilers warn and return 0 for unrecognized flags. We fix + the compiler flag check macros by looking for a warning in the + output. See issue #9516. + +2009-09-17 15:29 king + + * Modules/: CheckCSourceCompiles.cmake, + CheckCXXSourceCompiles.cmake: Add FAIL_REGEX to + CHECK_(C|CXX)_SOURCE_COMPILES + + This teaches the CHECK_C_SOURCE_COMPILES and + CHECK_CXX_SOURCE_COMPILES macros to recognize a FAIL_REGEX + option. If they see the regular expression in the output of the + test compilation, the check fails. + +2009-09-17 15:28 king + + * Modules/: CheckCCompilerFlag.cmake, CheckCSourceCompiles.cmake, + CheckCSourceRuns.cmake, CheckCXXCompilerFlag.cmake, + CheckCXXSourceCompiles.cmake, CheckCXXSourceRuns.cmake: Cleanup + generic compiler check macro documentation + + This commit improves formatting and style of the documentation + for the general-purpose compiler check macros: + + CHECK_C_COMPILER_FLAG + CHECK_C_SOURCE_COMPILES + CHECK_C_SOURCE_RUNS + CHECK_CXX_COMPILER_FLAG + CHECK_CXX_SOURCE_COMPILES + CHECK_CXX_SOURCE_RUNS + + This sytle is more consistent with CMake command documentation. + It also looks nicer in the generated documentation text files. + +2009-09-17 13:08 alex + + * Modules/CMakeFindEclipseCDT4.cmake: The check for include dirs + and builtin macros also works with the Intel compiler + + Alex + +2009-09-17 11:52 hoffman + + * Modules/Platform/Darwin.cmake, Source/cmGlobalXCodeGenerator.cxx, + Source/cmLocalGenerator.cxx: Fix for bug #9466. Change the + implementation of OSX arch lists. If no ARCHs are specified by + the user then no flags are set. We no longer use + CMAKE_OSX_ARCHITECTURES_DEFAULT. + +2009-09-17 09:18 hoffman + + * Source/cmLocalVisualStudio7Generator.cxx: Bug #9430, recognize + the FR flag + +2009-09-17 08:42 king + + * Source/: cmMakefileExecutableTargetGenerator.cxx, + cmMakefileLibraryTargetGenerator.cxx, + cmMakefileTargetGenerator.cxx: Do not call CollapseFullPath for + PDB file names + + Some vendor tools convert PDB file names given on the command + line to lower-case before creating the file. When CMake places a + mixed-case PDB file name into the build system, the file does not + exist the first time and it is written with mixed case. After + the first build though the native tool has created a lower-case + version of the file. If CMake does CollapseFullPath again, the + file exists so the actual-case lookup gets the lower-case name. + This causes the build files to change so the project rebuilds. + + The solution is to avoid calling CollapseFullPath for files + generated by the build. In the case of PDB files we already + construct them from paths that have been collapsed, so we can + just skip the call altogether. See issue #9350. + +2009-09-17 08:25 king + + * Source/cmMakefile.cxx: Remove old check for duplicate + subdirectories + + In cmMakefile::AddSubDirectory we were checking for addition of + the same source directory multiple times. However, the check + code was incorrect because it compared pointers instetad of + pointed-to strings. Since the check was written, a better check + was added right after it to enforce unique binary directories (in + which case duplicate sources are fine). This commit simply + removes the old-style check code. + +2009-09-17 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-16 21:02 hoffman + + * Source/cmake.cxx: Fix typo in name + +2009-09-16 18:01 alex + + * Source/: cmExtraEclipseCDT4Generator.h, + cmExtraEclipseCDT4Generator.cxx, + cmLocalUnixMakefileGenerator3.cxx, + cmLocalUnixMakefileGenerator3.h: Major improvement of the + generated targets in Eclipse. + + Before this change all targets were displayed in the top level + directory of the project. Now the targets are displayed in the + correct directory. The targets "clean" and "all" are now created + in every subdirectory. Also now the targets for just compiling + one file, preprocessing one file, assembling one file are are + created for Eclipse. Additionally all targets get a prefix now + in eclipse, so that they are sorted in a way which makes sense + (global targets first, then executable and libraries, then object + files, then preprocessed, then assembly). Also this prefix gives + the user a hint what the target is, i.e. whether it's a library + or an executable or something else. + + Alex + +2009-09-16 15:09 king + + * Tests/CMakeTests/: CMakeLists.txt, ConfigureFile-BadArg.cmake, + ConfigureFile-DirInput.cmake, ConfigureFile-DirOutput.cmake, + ConfigureFile-Relative.cmake, ConfigureFileTest.cmake.in: Create + CMake.ConfigureFile test for configure_file + + This test checks that configure_file() handles input and output + file arguments as documented. + +2009-09-16 15:09 king + + * Source/: cmConfigureFileCommand.cxx, cmConfigureFileCommand.h: + Teach configure_file to handle directory names + + This commit teaches configure_file how to handle directories for + input and output. It is an error if the input is a directory. + If the output is a directory we put the configured copy of the + input file in it with the same name. See issue #9537. + +2009-09-16 15:09 king + + * Source/: cmConfigureFileCommand.cxx, cmConfigureFileCommand.h: + Teach configure_file to handle relative paths + + The configure_file() command now converts relative output paths + to full paths using the current binary directory. Input relative + paths were already converted using the current source directory, + but this behavior was not previously documented. + +2009-09-16 15:09 king + + * Source/: cmConfigureFileCommand.cxx, cmConfigureFileCommand.h: + Fix typo in cmConfigureFileCommand ivar name + + Rename 'OuputFile' to 'OutputFile'. + +2009-09-16 15:09 king + + * Tests/CMakeTests/: CheckCMakeTest.cmake, FileTest.cmake.in: + Factor out CMake.File test result check for re-use + + The CMake.File test runs several scripts through "cmake -P" and + checks the output and result against known good values. This + commit factors out the checking code into a separate + CMakeCheckTest module. The module may be used by new tests. + +2009-09-16 14:37 alex + + * Source/cmExtraEclipseCDT4Generator.cxx, + Modules/CMakeFindEclipseCDT4.cmake: Put compiler defined macros + into eclipse project files + + Now gcc is queried also for the builtin definitions, and they are + then added to the .cproject file. This should make the + preprocessor highlighting in eclipse work better (#9272) Patch + mostly from Miguel. + + Alex + +2009-09-16 14:20 hoffman + + * Modules/FindJNI.cmake: Bug #09476, add more search paths for jni. + +2009-09-16 12:40 hoffman + + * Modules/UsePkgConfig.cmake: Fix for bug#9553, print a warning if + pkg-config is not found. + +2009-09-16 12:33 king + + * Modules/Platform/: Linux-VisualAge-CXX.cmake, Linux-XL-CXX.cmake: + Fix XL C++ compiler flags on Linux + + In Platform/Linux.cmake we add GNU flags as default for the + platform which breaks non-GNU compilers. Later we should + refactor these flag files to put compiler-specific flags only in + files loaded for each compiler. Until then this commit fixes the + XL C++ compiler flags on Linux by erasing the GNU flags. See + issue #9469. + +2009-09-16 11:49 hoffman + + * Source/CTest/cmCTestRunTest.cxx: Fix uninitialized errors. + +2009-09-16 11:44 king + + * Source/cmLocalVisualStudio7Generator.cxx: Generate proper Intel + Fortran project version + + The Intel Visual Fortran compiler plugin for MS Visual Studio may + be one of several versions of the Intel compiler. This commit + teaches CMake to detect the plugin version and set the version + number in .vfproj files. See issue #9169. + +2009-09-16 11:44 king + + * Source/: cmGlobalVisualStudio10Generator.h, + cmGlobalVisualStudio6Generator.h, + cmGlobalVisualStudio71Generator.h, + cmGlobalVisualStudio7Generator.h, + cmGlobalVisualStudio8Generator.h, + cmGlobalVisualStudio9Generator.h, + cmGlobalVisualStudioGenerator.cxx, + cmGlobalVisualStudioGenerator.h: Create VS generator + GetRegistryBase method + + This method returns the registry key + + HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\ + + A protected GetIDEVersion method retrieves the version-specific + part of the key name. + +2009-09-16 09:52 king + + * Tests/FunctionTest/CMakeLists.txt: Test add_subdirectory inside + function + + This commit teaches the FunctionTest to check variable scope + behavior when a subdirectory is added inside a function call. + Any PARENT_SCOPE sets in the subdirectory should affect only the + function scope which called add_subdirectory and not its parent + scope. + +2009-09-16 09:51 king + + * Source/cmMakefile.cxx: Initialize directory scope with closure of + parent + + The commit "Improve dynamic variable scope implementation" + optimized function scopes using an efficient parent scope + pointer. However, the parent scope used to initialize a new + directory might not exist later (like add_subdirectory called + inside a function of the parent scope). This caused CMake to + crash when following the dangling pointer to the original parent + scope. + + We fix the problem in this commit by always computing the closure + of the parent scope at directory initialization time so that no + parent scope pointer is needed. See issue #9538. + +2009-09-16 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-15 02:38 bigler + + * Modules/: FindCUDA.cmake, FindCUDA/make2cmake.cmake, + FindCUDA/parse_cubin.cmake, FindCUDA/run_nvcc.cmake: Initial + version of FindCUDA script. Still needs documentation + formatting. + +2009-09-15 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-14 22:16 hoffman + + * Source/cmake.cxx: Fix for bug #8969, pick a better default + version for VS, and make it easier to add new versions of VS to + look for. + +2009-09-14 20:54 hoffman + + * Source/cmDocumentationFormatterHTML.cxx: Fix for bug# 5373, + include CMake verison in generated docs. + +2009-09-14 15:53 alex + + * Modules/FindPNG.cmake: fix #9152: find ZLIB quietly if PNG is + searched QUIETLY + + Alex + +2009-09-14 15:20 hoffman + + * Source/cmGlobalXCodeGenerator.cxx: Bug #8356, add support for + image types in Xcode files. + +2009-09-14 14:59 hoffman + + * Source/cmGlobalXCodeGenerator.cxx: Fix for bug #8807, add support + for CMAKE_EXE_LINKER_FLAGS_(config) to Xcode generator. + +2009-09-14 13:45 hoffman + + * Source/: cmake.cxx, kwsys/Glob.cxx, kwsys/Glob.hxx.in: Fix for + Bug #9190, -U did not work on case insensitive file systems + because of call to glob convert to regex that expected to work + with files. + +2009-09-14 13:42 hoffman + + * Source/cmIfCommand.h: Clarify documentation for if. + +2009-09-14 11:23 zach.mullen + + * Source/CTest/: cmCTestBatchTestHandler.cxx, cmCTestRunTest.cxx: + Removed fork-and-continue option from ctest generated batch + script entries + +2009-09-14 10:31 hoffman + + * Source/: cmDependsJavaParserHelper.cxx, + cmDependsJavaParserHelper.h: Fix open solaris build issue with + concept checking that breaks std vector for a class of itself. + Bug #9523. + +2009-09-14 09:34 hoffman + + * Modules/FindPythonLibs.cmake: Change FindPythonLibs to use the + standard _DIR instead of _PATH but stay backwards compatible + +2009-09-14 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-13 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-12 10:20 king + + * Source/CTest/cmProcess.cxx: Avoid shadowing std::vector member + + The cmProcess::Buffer class derives from std::vector. We were + using local variable 'data' in the GetLine method but this name + shadowed a member of vector with GNU. This renames it to 'text'. + +2009-09-12 06:25 alex + + * Modules/FindRuby.cmake: major improvement of FindRuby.cmake + + -now supports specifying minimum required version -now supports + ruby 1.8 and 1.9 -uses find_package_handle_standard_args() now + -fix #6212 and using a lot of ideas from the file attached there + + Alex + +2009-09-12 04:38 alex + + * Modules/FindRuby.cmake: use HINTS instead of PATHS and also look + for libruby-static.a (which is built by default) + + Alex + +2009-09-12 02:15 alex + + * Modules/CMakeASM-ATTInformation.cmake: Don't pass *.S files to + the assembler, they must go through gcc, because they must be + preprocessed + + Alex + +2009-09-12 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-11 17:15 hoffman + + * Source/CTest/cmCTestHandlerCommand.cxx: Fix for bug#9442, ctest + crash if CTEST_SOURCE_DIRECTORY was not set. + +2009-09-11 16:39 king + + * Tests/CMakeLists.txt: Test that CTest can handle missing newlines + + We create test 'CTest.NoNewline' to print output with no newline. + This tests CTest's ability to handle a missing newline. + +2009-09-11 16:20 king + + * Source/CTest/cmProcess.cxx: Fix new CTest output handling for no + newline + + When we clear the buffer for an output pipe after returning the + last partial line (without a newline) we need to set the partial + line range to empty. Otherwise the buffer object is left in an + inconsistent state. + +2009-09-11 13:34 hoffman + + * Source/: cmCTest.cxx, cmCTest.h, ctest.cxx, + CTest/cmCTestTestHandler.cxx: Add label summary times to ctest + default output. Also, remove parallel time output. Add flag to + disable label summary. + +2009-09-11 12:26 king + + * Source/CTest/: cmCTestMultiProcessHandler.cxx, + cmCTestRunTest.cxx, cmCTestRunTest.h, cmProcess.cxx, cmProcess.h: + Rewrite CTest child output handling + + This commit fixes cmCTestRunTest and cmProcess to more + efficiently handle child output. We now use the buffer for each + child output pipe to hold at most a partial line plus one new + block of data at a time. All complete lines are scanned + in-place, and then only the partial line at the end of the buffer + is moved back to the beginning before appending new data. + + We also simplify the cmProcess interface by making + GetNextOutputLine the only method that needs to be called while + the process is running. This simplifies cmCTestRunTest so that + CheckOutput can be called until it returns false when the process + is done. + +2009-09-11 10:09 king + + * Source/CTest/: cmCTestMultiProcessHandler.cxx, + cmCTestRunTest.cxx, cmCTestRunTest.h: Initialize cmCTestRunTest + instances robustly + + All instances of this class need a cmCTestTestHandler, so we now + require one to construct it. The instance also provides the + cmCTest instance too. + +2009-09-11 10:04 king + + * Source/: cmCacheManager.cxx, cmCacheManager.h, cmake.cxx: Remove + barely-used cmCacheManager::AddCacheEntry + + The commit "Remove barely-used cmMakefile::AddCacheDefinition" + removed all but one use of the cmCacheManager method 'bool' + overload. This commit removes the other use and the entire + method, thus reducing code duplication. + +2009-09-11 10:03 king + + * Source/cmOptionCommand.cxx: Fix option() interpretation of + non-boolean values + + The commit "Remove barely-used cmMakefile::AddCacheDefinition" + broke option() calls that pass a non-boolean default value. We + restore the old behavior by always coercing the value to 'ON' or + 'OFF'. + +2009-09-11 08:17 king + + * Source/: CPack/cpack.cxx, CTest/cmCTestBuildHandler.cxx, + CursesDialog/cmCursesMainForm.cxx, cmCMakeMinimumRequired.cxx, + cmExecuteProcessCommand.cxx, cmFileCommand.cxx, + cmFindPackageCommand.cxx, cmPolicies.cxx, cmSetCommand.cxx, + cmSystemTools.cxx, cmUtilitySourceCommand.cxx: Add parentheses + around '&&' between '||' for gcc + + The GNU compiler warns about possible operator precedence + mistakes and asks for explicit parentheses (-Wparentheses). We + add the parentheses to silence the warning. This also fixes one + real logic error in the find_package() implementation by + correcting expression evaluation order. + +2009-09-11 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-10 16:59 king + + * Source/: cmMakefile.cxx, cmMakefile.h, cmOptionCommand.cxx, + cmPolicies.cxx, cmPolicies.h, cmSetCommand.cxx, cmSetCommand.h: + Create CMake Policy CMP0015 to fix set(CACHE) + + The set(CACHE) and option() commands should always expose the + cache value. Previously we failed to expose the value when it + was already set if a local variable definition hid it. When set + to NEW, this policy tells the commands to always remove the local + variable definition to expose the cache value. See issue #9008. + +2009-09-10 16:59 king + + * Source/: cmMakefile.cxx, cmMakefile.h, cmOptionCommand.cxx: + Remove barely-used cmMakefile::AddCacheDefinition + + The boolean overload of this method was used only to implement + option(). We re-implement option() in terms of the main method + and removes the now-unused signature. This removes some + duplicate code that had already fallen behind on changes (it was + not removing the local definition instead of setting it). + +2009-09-10 13:49 alex + + * Source/: cmExtraEclipseCDT4Generator.cxx, + cmExtraEclipseCDT4Generator.h: sync target generation with the + CodeBlocks generator + + Basically the code is now a copy of the one from the CodeBlocks + generator, maybe this could move into a common helper function + somewhere: -only insert GLOBAL targets from the toplevel + directory -don't insert the edit_cache target if it calls ccmake, + since this doesn't work in the output tab of Eclipse -add the + /fast targets + + Alex + +2009-09-10 13:44 alex + + * Source/cmExtraCodeBlocksGenerator.cxx: As in the Eclipse + generator: don't insert the edit_cache target if it is ccmake, + since this doesn't work in the output tab of the IDE + +2009-09-10 11:18 zach.mullen + + * Source/CTest/: cmCTestBatchTestHandler.cxx, + cmCTestBatchTestHandler.h: Added some ctest batch capabilities + +2009-09-10 11:16 zach.mullen + + * Source/: CMakeLists.txt, CTest/cmCTestMultiProcessHandler.cxx, + CTest/cmCTestMultiProcessHandler.h, CTest/cmCTestRunTest.cxx, + CTest/cmCTestTestHandler.cxx, CTest/cmCTestTestHandler.h: BUG: + Fixed segfault and bad reporting if a ctest executable could not + be found. Also added some batch testing code that is not yet + complete. + +2009-09-10 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-09 16:39 king + + * Tests/Fortran/CMakeLists.txt: Enable C and C++ first in Fortran + test + + CMake now looks for a Fortran compiler matching any C or C++ + compiler already enabled. We test this by enabling C and C++ + first in the Fortran test, which is what user projects will + likely do. + +2009-09-09 16:39 king + + * Modules/CMakeDetermineFortranCompiler.cmake: Bias Fortran + compiler search with C/C++ compilers + + When CMAKE_Fortran_COMPILER and ENV{FC} are not defined CMake + searches for an available Fortran compiler. This commit teaches + the search code to look for compiler executables next to the C + and C++ compilers if they are already found. Furthermore, we + bias the compiler executable name preference order based on the + vendor of the C and C++ compilers, which increases the chance of + finding a compatible compiler by default. + +2009-09-09 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-08 17:28 david.cole + + * Modules/ExternalProject.cmake: Missed another CMAKE_CFG_INTDIR + reference in the previously previous commit. + +2009-09-08 17:10 zach.mullen + + * Source/CTest/: cmCTestMultiProcessHandler.cxx, + cmCTestMultiProcessHandler.h, cmCTestTestHandler.cxx: ENH: ctest + now writes time cost data to a file after a test set is run, and + uses these time costs to schedule the processes the next time + ctest is run in that build tree. + +2009-09-08 16:11 david.cole + + * Modules/ExternalProject.cmake: Missed a CMAKE_CFG_INTDIR + reference in the previous commit. + +2009-09-08 15:55 king + + * Modules/: CMakeBuildSettings.cmake.in, + CMakeExportBuildSettings.cmake, CMakeImportBuildSettings.cmake, + UseVTK40.cmake: Drop old CMake "build settings" export/import + + The CMakeExportBuildSettings and CMakeImportBuildSettings modules + used to export compiler paths and flags from one project and + import them into another. The import process would force the + settings on the including project. + + Forcing settings helped long ago when compiler ABIs changed + frequently but is now just a nuisance. We've deemed the behavior + harmful so this commit simply removes it. The modules and macros + now error out if included or called from a project that requires + CMake 2.8 or higher. + +2009-09-08 15:37 david.cole + + * Modules/ExternalProject.cmake, + Tests/ExternalProject/CMakeLists.txt: Use more + verbose/descriptive names for the "public API" functions in the + ExternalProject.cmake module. Follow the cmake function naming + convention, using a ModuleFileName_ prefix. Locate stamp files + under a CMAKE_CFG_INTDIR subdir of the stamp dir so that debug + and release builds have separate stamp files for Visual Studio + builds. If no CMAKE_GENERATOR argument is given to + ExternalProject_Add, default to using the parent project's cmake + generator. + +2009-09-08 14:48 zach.mullen + + * Source/CTest/: cmCTestMultiProcessHandler.cxx, cmProcess.cxx: + BUG: Fixed extraneous newlines from ctest process output + +2009-09-08 13:39 zach.mullen + + * Source/: CTest/cmCTestMultiProcessHandler.cxx, + cmSetTestsPropertiesCommand.h, + CTest/cmCTestMultiProcessHandler.h, CTest/cmCTestTestHandler.cxx, + CTest/cmCTestTestHandler.h: ENH: Replaced the EXPENSIVE test + property with a COST test property taking a floating point value. + Tests are now started in descending order of their cost, which + defaults to 0 if none is specified. + +2009-09-08 10:16 zach.mullen + + * Source/CTest/: cmCTestRunTest.cxx, cmProcess.cxx, cmProcess.h: + BUG: Fixed issue where ctest would hang if a process terminated + with output in its buffers but no newline + +2009-09-08 09:12 zach.mullen + + * Source/CTest/cmCTestRunTest.h: Fixed warning + +2009-09-08 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-07 10:26 zach.mullen + + * Source/: CTest/cmCTestMultiProcessHandler.cxx, + CTest/cmCTestMultiProcessHandler.h, CTest/cmCTestRunTest.cxx, + CTest/cmCTestTestHandler.cxx, CTest/cmCTestTestHandler.h, + cmSetTestsPropertiesCommand.h: ENH: Added ctest test options + PROCESSORS and RUN_SERIAL. These allow specification of resource + allocation for given tests running with the ctest -j N option. + RUN_SERIAL ensures that a given test does not run in parallel + with any other test. Also forced appending of "..." to the + longest test name in ctest. + +2009-09-07 10:12 king + + * Source/cmVisualStudio10TargetGenerator.cxx, + Source/cmVisualStudio10TargetGenerator.h, Tests/CMakeLists.txt: + Put custom commands in topological order for VS 10 + + Visual Studio 10 uses MSBuild to drive the build. Custom + commands appear in MSBuild files inside CustomBuild elements, + which appear inside ItemGroup elements. The Outputs and + AdditionalInputs elements of each CustomBuild element are + evaluated according to timestamps on disk. + + MSBuild does not use inputs/outputs to order CustomBuild steps + within a single ItemGroup or across multiple ItemGroup elements. + Instead we must put only unrelated CustomBuild elements in a + single ItemGroup and order the item groups from top to bottom + using a topological order of the custom command dependency graph. + + This fixes CustomCommand and ExternalProject test failures, so we + remove the expectation of these failures. + +2009-09-07 10:11 king + + * Source/: cmTarget.cxx, cmTarget.h: Save source dependencies from + custom command trace + + In each target we trace dependencies among custom commands to + pull in all source files and build rules necessary to complete + the target. This commit teaches cmTarget to save the + inter-source dependencies found during its analysis. Later this + can be used by generators that need to topologically order custom + command rules. + +2009-09-07 10:11 king + + * Source/: cmLocalVisualStudio10Generator.cxx, + cmLocalVisualStudioGenerator.cxx, cmLocalVisualStudioGenerator.h, + cmVisualStudio10TargetGenerator.cxx: Do Windows command line + escapes for VS 10 too + + Until now the VS 10 generator did no Windows command-line + escaping and just did XML escapes. This commit teaches the + generator to use the same command-line escape addition code used + by other generators. The script construction method + cmLocalVisualStudioGenerator::ConstructScript need not do XML + escapes. Each VS generator version adds the XML escapes + necessary for that version. + +2009-09-07 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-06 13:24 alex + + * Source/cmFileCommand.cxx: Try to fix the failing new + StringFileTest on HP-UX + + It seems that while(i=file.get(), file) iterates one character + too much on HP-UX, let's see whether while(file.get(c)) works, at + least this is given as example on + http://h30097.www3.hp.com/cplus/ifstream_3c__std.htm + + Alex + +2009-09-06 10:26 alex + + * Tests/StringFileTest/: CMakeLists.txt, test.bin: Add a test for + FILE(READ ... HEX) together with a tiny binary file. + + Alex + +2009-09-06 09:49 alex + + * Source/cmFileCommand.cxx: fix #9316: when converting binary data + to hex, also print the leading 0's + + Alex + +2009-09-06 05:43 alex + + * Source/cmExtraCodeBlocksGenerator.cxx: Improve the algorithm + which skips targets so they are not added to the codeblocks GUI. + + -add all global targets from CMAKE_BINARY_DIR to the menu, but + not from the subdirs -add all utility targets to the menu, except + the Nightly/Experimental/Continuous-"sub"targets as e. + + Alex + +2009-09-06 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-05 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-04 18:19 david.cole + + * Modules/FindMPI.cmake: Oops. Close strings with double quotes. + Where they're supposed to be. + +2009-09-04 18:02 david.cole + + * Modules/FindMPI.cmake: Add MPICH2 and Microsoft HPC paths, add + paths to find mpiexec. Now it works better automatically on + Windows. Thanks to Dave Partyka for developing the patch. + +2009-09-04 17:01 hoffman + + * Source/CTest/cmCTestScriptHandler.cxx: Fix memory and process + leak in ctest_run_script. + +2009-09-04 16:43 clinton + + * Source/QtDialog/: CMakeSetupDialog.cxx, CMakeSetupDialog.h: fix + focus fighting between search field and cache value editors + +2009-09-04 14:00 david.cole + + * Source/CTest/cmCTestSubmitHandler.cxx: Increase curl submit + timeout. A submit will timeout if there are 120 seconds of very + little activity. 30 seconds was too short. + +2009-09-04 13:50 zach.mullen + + * Source/CTest/: cmCTestRunTest.cxx, cmProcess.cxx, cmProcess.h: + Fixed ctest output processing. Should now display output as it + occurs, as well as be able to consume multiple lines if they + exist within the timeout. + +2009-09-04 13:24 hoffman + + * Source/CTest/: cmCTestRunScriptCommand.cxx, + cmCTestRunScriptCommand.h, cmCTestScriptHandler.cxx, + cmCTestScriptHandler.h: Change run_ctest_script in ctest to not + stop processing when there is an error in the script being run. + Also, add a RETURN_VALUE option so that you can find out if the + script failed + +2009-09-04 12:39 king + + * Source/cmTarget.cxx: Cleanup source file dependency tracing logic + + In cmTarget we trace the dependencies of source files in the + target to bring in all custom commands needed to generate them. + We clean up the implementation to use simpler logic and better + method names. The new approach is based on the observation that + a source file is actually an input (dependency) of the rule that + it runs (compiler or custom) even in the case that it is + generated (another .rule file has the rule to generate it). + +2009-09-04 12:39 king + + * Source/: cmTarget.cxx, cmTarget.h: Cleanup cmTarget source file + list representation + + This teaches cmTarget to use a set of cmSourceFile pointers to + guarantee unique insertion of source files in a target. The + order of insertion is still preserved in the SourceFiles vector. + +2009-09-04 12:38 king + + * Source/cmake.cxx: Simplify VS CMake re-run check + + When CMake is invoked by the VS IDE re-run rule we compute + whether or not CMake really needs to re-run based on some + timestamp helper files. Previously we assumed that if the main + generate.stamp file exists then VS has correctly detected that + the file is out of date. However, this assumption is too + aggressive and re-runs CMake unnecessarily sometimes. + + This commit removes the assumption and always checks timestamps + itself. The change breaks the explicit user re-run request + (R-click -> Compile) but only in cases when the build system is + already up to date. + +2009-09-04 12:37 king + + * Source/: cmGlobalVisualStudio8Generator.cxx, + cmGlobalVisualStudio8Generator.h: Simplify VS generator + ZERO_CHECK dependency + + The VS generators use a ZERO_CHECK target on which all other + targets depend to check whether CMake needs to re-run. This + commit simplifies the addition of a dependency on the target to + all other targets. + + We also move addition of dependencies to the beginning of the + Generate step. This allows the dependency on ZERO_CHECK to be + included in the global inter-target dependency analysis. + +2009-09-04 11:23 zach.mullen + + * Source/CTest/cmProcess.cxx: Fixed output as-it-happens issue. + Now displays output as it receives each newline. + +2009-09-04 10:16 zach.mullen + + * Source/CTest/: cmCTestMultiProcessHandler.cxx, + cmCTestMultiProcessHandler.h, cmCTestTestHandler.cxx, + cmProcess.cxx: Added the test property EXPENSIVE, which denotes + that the given test(s) should be started prior to tests that are + not marked as such. Also fixed test dependencies, and a few + uninitialized variables in cmProcess. + +2009-09-04 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-03 17:01 hoffman + + * CMakeCPackOptions.cmake.in, CMakeLists.txt, + Source/CMakeLists.txt, Source/cmDocumentVariables.cxx, + Source/cmake.cxx: Remove CMakeSetup. Long live cmake-gui, start + building Qt now. + +2009-09-03 15:58 martink + + * Source/cmSubdirCommand.h: some white space fixes for the book + +2009-09-03 15:50 zach.mullen + + * Source/CTest/cmProcess.cxx: Fixed 2 unused variable warnings + +2009-09-03 15:33 zach.mullen + + * Source/CTest/: cmCTestMultiProcessHandler.cxx, + cmCTestRunTest.cxx, cmCTestRunTest.h, cmProcess.cxx, cmProcess.h: + Allowed tests to pull more than one line of output in their + quantum. Fixed uninitialized variables in the case that the test + process could not start. + +2009-09-03 15:29 martink + + * Modules/CPack.cmake, Modules/FeatureSummary.cmake, + Source/cmAddExecutableCommand.h, Source/cmAddLibraryCommand.h, + Source/cmDefinePropertyCommand.h, Source/cmDocumentVariables.cxx, + Source/cmEnableLanguageCommand.h, Source/cmFindCommon.cxx, + Source/cmListCommand.h, Source/cmSetCommand.h, + Source/cmSetDirectoryPropertiesCommand.h, + Source/cmSubdirCommand.h, Source/cmTryRunCommand.h: some white + space fixes for the book + +2009-09-03 12:11 david.cole + + * Modules/ExternalProject.cmake, + Tests/ExternalProject/CMakeLists.txt: Add test step to + ExternalProject builds. Rename SVN_TAG to SVN_REVISION since it + is a more accurate name. + +2009-09-03 11:14 zach.mullen + + * Source/: CTest/cmCTestMultiProcessHandler.cxx, + CTest/cmCTestTestCommand.h, CTest/cmCTestTestHandler.cxx, + CTest/cmCTestTestHandler.h, cmSetTestsPropertiesCommand.h: Fixed + warnings + +2009-09-03 11:10 king + + * Source/kwsys/RegularExpression.hxx.in: COMP: Silence useless + Borland inlining warning + + KWSys tries not to force anything on source files that include + its headers, but Borland warning 8027 leaves us no choice when we + want to have inline function definitions. This commit disables + the warning for the RegularExpression header and any file that + includes it. + +2009-09-03 10:47 zach.mullen + + * Source/cmSetTestsPropertiesCommand.h, + Source/CTest/cmCTestMemCheckCommand.h, + Source/CTest/cmCTestMultiProcessHandler.cxx, + Source/CTest/cmCTestRunTest.cxx, + Source/CTest/cmCTestTestHandler.cxx, + Source/CTest/cmCTestTestHandler.h, + Tests/CTestTest3/test.cmake.in: ENH: Added PARALLEL_LEVEL option + for ctest_memcheck(). Added PROCESSORS option to + set_tests_properties (implementation to come). + +2009-09-03 08:27 king + + * Source/: cmLocalGenerator.cxx, cmPolicies.cxx, cmPolicies.h: + Create CMP0014 to require CMakeLists.txt files + + Until now CMake accidentally accepted add_subdirectory() and + subdirs() calls referring to directories that do not contain a + CMakeLists.txt file. We introduce CMake Policy CMP0014 to make + this case an error. + +2009-09-03 08:26 king + + * Source/: cmLocalGenerator.cxx, cmLocalGenerator.h: Factor + cmLocalGenerator::Configure input file read + + This method tells the cmMakefile to read the input CMakeLists.txt + file. We factor out the call into a ReadInputFile method so it + can be extended without polluting the Configure method. + +2009-09-03 08:26 king + + * Source/: cmLocalGenerator.cxx, cmLocalGenerator.h: Factor + cmLocalGenerator::Configure object max path + + Much of the code in this method was dedicated to computing + ObjectMaxPath after configuring the directory. We move this last + step into its own ComputeObjectMaxPath method for better + organization. + +2009-09-03 08:26 king + + * Source/cmLocalGenerator.cxx: Manage current local generator with + automatic var + + The cmLocalGenerator::Configure method sets its cmLocalGenerator + instance as the global generator's current local generator during + configuration. This commit refactors management of the current + local generator to use an automatic variable. This will allow + early returns from the method. + +2009-09-03 08:26 king + + * Source/cmPolicies.cxx: Fix typo in REQUIRED_ALWAYS policy error + message + +2009-09-03 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-02 16:32 zach.mullen + + * Source/CTest/cmCTestMultiProcessHandler.cxx: STYLE: line length + +2009-09-02 16:07 king + + * Source/: cmLocalVisualStudio6Generator.cxx, + cmLocalVisualStudio7Generator.cxx: Silence VS generator for + missing CMakeLists.txt + + CMake Makefile generators silently ignore missing CMakeLists.txt + files and just treat the source directory as if it had an empty + input file. This will be addressed with a new CMake Policy, but + for now we make the VS generator consistent with the Makefile + generator behavior. The VS generator will need to handle the OLD + behavior of the policy anyway. + +2009-09-02 16:06 king + + * Source/cmGlobalGenerator.cxx: Speed up graph traversal for + project->targets map + + The cmGlobalGenerator::AddTargetDepends method traces the + dependencies of targets recursively to collect the complete set + of targets needed for a given project (for VS .sln files). This + commit teaches the method to avoid tracing its dependencies more + than once. Otherwise the code does an all-paths walk needlessly. + +2009-09-02 12:35 zach.mullen + + * Source/CTest/: cmCTestTestCommand.cxx, cmCTestTestCommand.h, + cmCTestTestHandler.cxx: ENH: Added PARALLEL_LEVEL option to + ctest_test() command. + +2009-09-02 10:08 zach.mullen + + * Modules/CTest.cmake, Modules/DartConfiguration.tcl.in, + Source/cmCTest.cxx, Source/CTest/cmCTestMultiProcessHandler.cxx, + Source/CTest/cmCTestMultiProcessHandler.h, + Source/CTest/cmCTestRunTest.cxx, Source/CTest/cmCTestRunTest.h, + Source/CTest/cmCTestTestHandler.h, Source/cmCTest.h: Fixed ctest + output where max test index is not the same width as the total + number of tests. Also some preliminary changes for batching + ctest jobs + +2009-09-02 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-09-01 17:23 david.cole + + * Source/CTest/cmCTestSubmitHandler.cxx: Add curl timeout options + to the SubmitUsingHTTP method. They were only in the + SubmitUsingFTP method. + +2009-09-01 16:33 hoffman + + * Modules/Platform/: Windows-icl.cmake, Windows-ifort.cmake: Add + support for embeded manifests for Intel C/C++/Fortran compilers + +2009-09-01 16:23 hoffman + + * Modules/Platform/Windows-Intel.cmake: Add a module to determine + if the intel linker supports manifest creation + +2009-09-01 15:41 king + + * Tests/CTestUpdateGIT.cmake.in: Make CTest.UpdateGIT robust to + user git config + + Part of this test does "git pull" on a dirty work tree. We need + to make sure that 'branch.master.rebase' is false for the test + repository. Otherwise if it is true in the user configuration + then pull will refuse to rebase and the test will fail. + +2009-09-01 15:21 clinton + + * Modules/FindQt4.cmake: use -o flag instead of > for qdbuscpp2xml + +2009-09-01 15:08 hoffman + + * Source/cmake.cxx: Use the MANIFEST flag for non incremental + linking as well. + +2009-09-01 14:33 hoffman + + * Modules/Platform/Windows-cl.cmake, Source/cmake.cxx: Move + /MANIFEST flag into -E vs_link. This is so it can be used by the + intel compilers without having to specifiy it in the intel + compiler files + +2009-09-01 14:10 hoffman + + * Source/cmake.cxx: Handle embeded manifests with ifort. + +2009-09-01 14:05 king + + * Tests/FindPackageTest/: CMakeLists.txt, Exporter/CMakeLists.txt, + Exporter/CMakeTestExportPackageConfig.cmake.in, + Exporter/CMakeTestExportPackageConfigVersion.cmake.in, + Exporter/dummy.c: Test the user package registry + + We teach the FindPackageTest to build a sample project that + stores its build tree in the user package registry using + export(PACKAGE), and then find it with find_package. + +2009-09-01 14:04 king + + * Source/: cmExportCommand.cxx, cmExportCommand.h: Teach + export(PACKAGE) to fill the package registry + + We define the export(PACKAGE) command mode to store the location + of the build tree in the user package registry. This will help + find_package locate the package in the build tree. It simplies + user workflow for manually building a series of dependent + projects. + +2009-09-01 14:04 king + + * Source/: cmFindPackageCommand.cxx, cmFindPackageCommand.h: Teach + find_package to search a "package registry" + + A common user workflow is to build a series of dependent projects + in order. Each project locates its dependencies with + find_package. We introduce a "user package registry" to help + find_package locate packages built in non-standard search + locations. + + The registry explicitly stores locations of build trees providing + instances of a given package. There is no defined order among + the locations specified. These locations should provide package + configuration files (-config.cmake) and package version + files (-config-version.cmake) so that find_package will + recognize the packages and test version numbers. + +2009-09-01 13:55 king + + * Modules/: Compiler/Intel-C.cmake, Compiler/Intel-CXX.cmake, + Compiler/Intel-Fortran.cmake, Compiler/Intel.cmake, + Platform/Linux-Intel-C.cmake, Platform/Linux-Intel-CXX.cmake, + Platform/Linux-Intel-Fortran.cmake, Platform/Linux-Intel.cmake: + Use Intel for Linux flags only on Linux + + The commit "Split Intel compiler information files" moved some + Linux specific flags into the platform-independent Intel compiler + info files. This moves them back. + +2009-09-01 13:03 king + + * Modules/FortranCInterface/Verify/CMakeLists.txt: Fix + FortranCInterface_VERIFY for non-C++ case + + The verification program entry point (main) is defined in a C + source file, so the C compiler should be used to link when only + Fortran and C are involved. The C++ compiler should still be + used when the CXX option is enabled. + +2009-09-01 11:58 zach.mullen + + * Source/CTest/cmCTestRunTest.cxx: ENH: Improved test reporting + output + +2009-09-01 10:38 king + + * Tests/ExportImport/: Export/CMakeLists.txt, + Export/testLibCycleA1.c, Export/testLibCycleA2.c, + Export/testLibCycleA3.c, Export/testLibCycleB1.c, + Export/testLibCycleB2.c, Export/testLibCycleB3.c, + Import/A/CMakeLists.txt, Import/A/imp_testExe1.c: Test link + multiplicity export/import + + We test that LINK_INTERFACE_MULTIPLICITY propagates through + export() and install(EXPORT) into dependent projects. A simple + cycle of two archives that need to be scanned three times ensures + that the importing project uses the multiplicity correctly. + +2009-09-01 10:38 king + + * Tests/Dependency/Case2/: CMakeLists.txt, foo1c.c, foo2c.c, + foo3b.c, foo3c.c: Test link multiplicity + + This tests the LINK_INTERFACE_MULTIPLICITY property for a cycle + of three static libraries that must be scanned three times to + link properly. + +2009-09-01 10:37 king + + * Source/: cmComputeLinkDepends.cxx, cmComputeLinkDepends.h, + cmExportFileGenerator.cxx, cmTarget.cxx, cmTarget.h: Define + 'multiplicity' for cyclic dependencies + + We create target property "LINK_INTERFACE_MULTIPLICITY" and a + per-config version "LINK_INTERFACE_MULTIPLICITY_". It + sets the number of times a linker should scan through a mutually + dependent group of static libraries. The largest value of this + property on any target in the group is used. This will help + projects link even for extreme cases of cyclic inter-target + dependencies. + +2009-09-01 08:52 king + + * Modules/FortranCInterface.cmake: Make FortranCInterface_VERIFY + verbose on failure + + We enable verbose build output in the try_compile of the simple + project. This makes valuable information available in the case + of failure. + +2009-09-01 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-31 18:18 wdicharry + + * Modules/FindHDF5.cmake: Fixed link order dependence in FindHDF5 + module for static link. + +2009-08-31 13:25 king + + * bootstrap: Test KWSYS_IOS_HAVE_BINARY during bootstrap + + We need to do this KWSys configuration test in the CMake + bootstrap script to create a proper cmsys/Configure.hxx file. + This fixes the bootstrap script which was broken by the addition + of the test to KWSys. + +2009-08-31 13:00 king + + * Source/kwsys/: CMakeLists.txt, Configure.hxx.in, + kwsysPlatformTestsCXX.cxx, testIOS.cxx: Define kwsys_ios_binary + macro for std::ios::binary + + The 'binary' openmode does not exist on all compilers. We define + macro _ios_binary, where is the KWSys namespace, + to refer to std::ios::binary if it exists and 0 otherwise. + Sample usage: + + kwsys_ios::ifstream fin(fn, kwsys_ios::ios::in | + kwsys_ios_binary); + +2009-08-31 11:32 zach.mullen + + * Source/CTest/cmCTestMemCheckCommand.h: Fixed ctest_memcheck docs + (http://www.cmake.org/Bug/view.php?id=9242) + +2009-08-31 10:32 wdicharry + + * Modules/FindHDF5.cmake: In FindHDF5, added C library names to CXX + search libraries. + +2009-08-31 10:28 zach.mullen + + * Source/CTest/cmCTestTestHandler.cxx: Fixed Dart time recording + for ctest + +2009-08-31 09:50 zach.mullen + + * Source/CTest/: cmCTestMultiProcessHandler.h, cmCTestRunTest.cxx, + cmCTestRunTest.h, cmCTestTestHandler.cxx: Fixed conversion + warning on 64 bit machines + +2009-08-31 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-30 10:57 zach.mullen + + * Source/CTest/cmCTestRunTest.cxx: Fixed line length issue + +2009-08-30 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-29 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-28 15:08 zach.mullen + + * Source/CTest/: cmCTestMemCheckHandler.cxx, + cmCTestMemCheckHandler.h, cmCTestMultiProcessHandler.cxx, + cmCTestRunTest.cxx, cmCTestRunTest.h, cmCTestTestHandler.cxx, + cmCTestTestHandler.h: MemCheck should now work again in ctest + +2009-08-28 11:40 zach.mullen + + * Source/CTest/cmCTestRunTest.cxx: Replaced std::stringstream with + cmOStringStream + +2009-08-28 11:08 zach.mullen + + * Source/CTest/cmCTestMemCheckHandler.cxx, + Source/CTest/cmCTestMultiProcessHandler.cxx, + Source/CTest/cmCTestMultiProcessHandler.h, + Source/CTest/cmCTestRunTest.cxx, Source/CTest/cmCTestRunTest.h, + Source/CTest/cmCTestTestHandler.cxx, + Source/CTest/cmCTestTestHandler.h, Tests/CMakeLists.txt: Added + ctest -N test. Fixed ctest working directory bug. MemCheck fix + coming soon... + +2009-08-28 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-27 10:37 zach.mullen + + * Source/: CTest/cmCTestGenericHandler.cxx, + CTest/cmCTestMultiProcessHandler.cxx, + CTest/cmCTestMultiProcessHandler.h, CTest/cmCTestRunTest.cxx, + CTest/cmCTestRunTest.h, CTest/cmCTestTestHandler.cxx, + CTest/cmCTestTestHandler.h, cmCTest.cxx, cmCTest.h, ctest.cxx: + Fixed ctest -N segfault issue. Further refactored ctest. + Enabled failover for ctest + +2009-08-27 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-26 12:09 zach.mullen + + * Source/: CTest/cmCTestMultiProcessHandler.cxx, + CTest/cmCTestMultiProcessHandler.h, CTest/cmCTestRunTest.cxx, + cmCTest.cxx, cmCTest.h, CTest/cmCTestRunTest.h, + CTest/cmCTestTestHandler.cxx, CTest/cmCTestTestHandler.h: ENH: + refactored ctest. All testing is now parallel. If no -j option + is specified, defaults to a MP level of 1 (non parallel) + +2009-08-26 06:52 david.cole + + * Modules/ExternalProject.cmake: Add missing argument to + _ep_write_downloadfile_script. + +2009-08-26 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-25 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-24 13:24 wdicharry + + * Modules/FindHDF5.cmake: Fixed HDF5 Find module error that caused + no list to be passed into remove duplicates when HDF5 is not + found. + +2009-08-24 13:15 king + + * Source/: cmComputeLinkInformation.cxx, + cmComputeLinkInformation.h: Factor implicit link info addition + into methods + + In cmComputeLinkInformation::Compute we add implicit link + information from languages other than the linker language to the + end of the link line. This factors out that code into separate + methods to improve readability and organization. + +2009-08-24 13:07 king + + * Tests/Fortran/CMakeLists.txt: Enforce FortranCInterface_VERIFY in + Fortran test + + This removes the QUIET option from FortranCInterface_VERIFY in + the Fortran test to really test the detected interface + everywhere. + +2009-08-24 12:04 wdicharry + + * Modules/: SelectLibraryConfigurations.cmake, FindHDF5.cmake: Add + HDF5 find module and select_library_configurations module. + +2009-08-24 09:54 king + + * Source/: cmComputeTargetDepends.cxx, cmComputeTargetDepends.h, + cmake.cxx: Create GLOBAL_DEPENDS_NO_CYCLES property + + This global property disallows cycles in the inter-target + dependency graph even among STATIC libraries. See issue #9444. + +2009-08-24 08:49 king + + * Modules/FortranCInterface.cmake, + Modules/FortranCInterface/Detect.cmake, + Modules/FortranCInterface/Verify/CMakeLists.txt, + Modules/FortranCInterface/Verify/VerifyC.c, + Modules/FortranCInterface/Verify/VerifyCXX.cxx, + Modules/FortranCInterface/Verify/VerifyFortran.f, + Modules/FortranCInterface/Verify/main.c, + Tests/Fortran/CMakeLists.txt: Create FortranCInterface_VERIFY + function + + This function builds a simple test project using a combination of + Fortran and C (and optionally C++) to verify that the compilers + are compatible. The idea is to help projects report very early + to users that the compilers specified cannot mix languages. + +2009-08-24 08:49 king + + * Modules/: FortranCInterface.cmake, + FortranCInterface/Detect.cmake: Teach FortranCInterface to load + outside results + + We split the main detection logic into a Detect.cmake support + module and load it only when detection results are not already + available. This allows results computed by the main project to + be used in try-compile projects without recomputing them. The + call to try_compile() need only to pass + FortranCInterface_BINARY_DIR through the CMAKE_FLAGS option. + +2009-08-24 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-23 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-22 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-21 10:32 king + + * Modules/: Compiler/SunPro-C.cmake, Compiler/SunPro-CXX.cmake, + Compiler/SunPro-Fortran.cmake, Platform/Linux-SunPro-C.cmake, + Platform/Linux-SunPro-CXX.cmake, + Platform/Linux-SunPro-Fortran.cmake, + Platform/SunOS-SunPro-Fortran.cmake, Platform/SunOS.cmake: Split + SunPro compiler information files + + This moves platform-independent SunPro compiler flags into + separate "Compiler/SunPro-.cmake" modules. + Platform-specific flags are left untouched. + +2009-08-21 09:54 king + + * Modules/: Compiler/Intel-C.cmake, Compiler/Intel-CXX.cmake, + Compiler/Intel-Fortran.cmake, Compiler/Intel.cmake, + Platform/Linux-Intel-C.cmake, Platform/Linux-Intel-CXX.cmake, + Platform/Linux-Intel-Fortran.cmake: Split Intel compiler + information files + + This moves platform-independent Intel compiler flags into + separate "Compiler/Intel-.cmake" modules. + Platform-specific flags are left untouched. + +2009-08-21 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-20 16:21 king + + * Modules/FortranCInterface.cmake: Teach FortranCInterface to + verify languages + + This module requires both C and Fortran to be enabled, so + error-out if they are not. + +2009-08-20 16:21 king + + * Source/cmDocumentVariables.cxx: Document + CMAKE__COMPILER_LOADED variable + +2009-08-20 09:46 zach.mullen + + * Source/CTest/cmCTestRunTest.cxx: Fixed line length over 80 + +2009-08-20 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-19 22:28 lowman + + * Modules/FindBoost.cmake: Add Boost 1.39 & 1.40. Move + ${Boost_INCLUDE_DIR}/lib to front of library search. + +2009-08-19 12:19 david.cole + + * Modules/: DownloadFile.cmake, ExternalProject.cmake, + UntarFile.cmake: Remove DownloadFile.cmake and UntarFile.cmake + from the Modules directory. Put functionality directly into + ExternalProject.cmake itself so that these modules do not end up + in the upcoming release of CMake. + +2009-08-19 09:24 zach.mullen + + * Source/: cmCTest.cxx, CTest/cmCTestTestHandler.cxx, + CTest/cmCTestTestHandler.h: Fixed overwriting of a previous + change set + +2009-08-19 08:58 zach.mullen + + * Source/: CMakeLists.txt, cmCTest.cxx, cmCTest.h, + CTest/cmCTestRunTest.cxx, CTest/cmCTestRunTest.h, + CTest/cmCTestTestHandler.cxx, CTest/cmCTestTestHandler.h: ENH: + Refactored CTest test execution code into an object + +2009-08-19 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-18 14:03 hoffman + + * Source/CTest/cmCTestTestHandler.cxx: Add test times to log file + as well as the stdout. + +2009-08-18 13:34 hoffman + + * Source/CTest/: cmCTestTestHandler.cxx, cmCTestTestHandler.h: If + labels are found on the tests, then print a time summary for all + the tests run with each label. + +2009-08-18 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-17 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-16 23:07 lowman + + * Modules/FindBullet.cmake: Find module for the Bullet physics + engine + +2009-08-16 22:12 lowman + + * Modules/FindGTest.cmake: A find module for the Google C++ Testing + Framework + +2009-08-16 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-15 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-14 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-13 00:11 lowman + + * Modules/: FindBISON.cmake, FindFLEX.cmake: Checking in the + FindFLEX.cmake & FindBISON.cmake attached to Issue #4018 after + some minor improvements + + * Improved examples * Switched to FindPackageHandleStandardArgs * + Cleaned up indentation * Sanitized else()/endif() blocks + +2009-08-13 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-12 22:40 lowman + + * Modules/FindDevIL.cmake: Fixes Issue #8994 + +2009-08-12 22:25 lowman + + * Modules/FindGnuTLS.cmake: Find module for GnuTLS, the GNU + Transport Layer Security library (Issue #9228) + +2009-08-12 21:58 lowman + + * Modules/FindOpenSceneGraph.cmake: Improved error output and + documentation + + * Fixed errant output when version number not found * Improved + error output when REQUIRED is passed * Improved docs and example + +2009-08-12 09:09 king + + * Modules/Platform/Windows-bcc32.cmake: Quote the target name for + Borland tlib tool + + The Borland librarian tool "tlib" requires that the output target + name be quoted if it contains the character '-' (and perhaps a + few others). This commit restores the use of the TARGET_QUOTED + rule variable replacement for this purpose. Otherwise no static + library can have a '-' in its name. + + This problem was exposed by the 'Testing' test when it builds the + pcStatic library with the '-dbg' suffix. + +2009-08-12 08:06 king + + * Source/CTest/cmCTestSVN.cxx: Fix classification of externals in + svn status + + CTest runs 'svn status' to identify modified and conflicting + files in the working directory. This commit fixes the + interpretation of the 'X' status, which corresponds to svn + eXternals. This status should be ignored rather than treated as + a local modification. + +2009-08-12 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-11 22:02 hoffman + + * Source/CTest/: cmCTestMultiProcessHandler.cxx, + cmCTestTestHandler.cxx, cmProcess.h: Output total time when using + -j N + +2009-08-11 22:01 hoffman + + * Tests/CTestUpdateCommon.cmake: Output command that failed, if it + fails. + +2009-08-11 16:25 hoffman + + * Source/CTest/cmCTestCVS.cxx: Fix failing test on release build + for VS 10 cmSystemTools::GetLineFromStream crashes if the stream + is not open in that case. + +2009-08-11 09:55 king + + * Tests/Testing/: CMakeLists.txt, driver.cmake, pcShared.c, + pcShared.h, pcStatic.c, perconfig.c: Test add_test() generator + expressions + + This teaches the 'testing' test to try generator expressions in + arguments to add_test(NAME). This test case mimics a common + use-case of passing executables to test driver scripts. We + excercise the syntax for per-configuration target file names. + +2009-08-11 09:54 king + + * Source/CMakeLists.txt, Source/cmAddTestCommand.h, + Source/cmGeneratorExpression.cxx, Source/cmGeneratorExpression.h, + Source/cmTestGenerator.cxx, bootstrap: Introduce "generator + expressions" to add_test() + + This introduces a new syntax called "generator expressions" to + the test COMMAND option of the add_test(NAME) command mode. + These expressions have a syntax like $ and + are evaluated during build system generation. This syntax allows + per-configuration target output files to be referenced in test + commands and arguments. + +2009-08-11 09:07 king + + * Source/: cmTarget.cxx, cmTarget.h: Create cmTarget DLL query + methods + + We creates methods IsDLLPlatform() and HasImportLibrary(). The + former returns true on Windows. The latter returns whether the + target has a DLL import library. It is true on Windows for + shared libraries and executables with exports. + +2009-08-11 09:07 king + + * Source/: cmMakefile.cxx, cmTest.cxx, cmTest.h: Record backtrace + for every add_test command + + We teach cmTest to hold a backtrace for the add_test command that + created it. This will be used later to report context for errors + at generate time. + +2009-08-11 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-10 14:32 clinton + + * Source/QtDialog/QCMake.cxx: ENH: Patch from Alexander Neundorf + to remove "KDevelop3" from list of generators. "KDevelop3 - Unix + Makefiles" should be used instead. + +2009-08-10 13:25 clinton + + * Source/QtDialog/: QCMakeCacheView.cxx, QCMakeCacheView.h: ENH: + Allow edit on single click. Fixes #9393. Also fix row heights + to be consistent. + +2009-08-10 09:07 king + + * Source/cmTestGenerator.cxx: Cleanup test property script code + generation + + We teach cmTestGenerator::GenerateScriptConfigs to use the + general cmLocalGenerator::EscapeForCMake method to write escaped + test property values into test scripts. This eliminates the + previous hand-coded escaping implementation. + +2009-08-10 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-09 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-08 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-07 10:13 king + + * Modules/: CMakeCCompilerId.c.in, CMakeCXXCompilerId.cpp.in, + CMakeFortranCompilerId.F.in, Compiler/VisualAge-C.cmake, + Compiler/VisualAge-CXX.cmake, Compiler/VisualAge-Fortran.cmake, + Compiler/XL-C.cmake, Compiler/XL-CXX.cmake, + Compiler/XL-Fortran.cmake, Platform/Linux-VisualAge-C.cmake, + Platform/Linux-VisualAge-Fortran.cmake, + Platform/Linux-XL-C.cmake, Platform/Linux-XL-Fortran.cmake: Teach + compiler id about VisualAge -> XL rebranding + + IBM rebranded its VisualAge compiler to XL starting at version + 8.0. We use the compiler id "XL" for newer versions and + "VisualAge" for older versions. We now also recognize the "z/OS" + compiler, which is distinct from XL. + +2009-08-07 10:12 king + + * Modules/: Compiler/VisualAge-Fortran.cmake, + Platform/AIX-VisualAge-Fortran.cmake, + Platform/Linux-VisualAge-Fortran.cmake, Platform/xlf.cmake: Move + flag to Compiler/VisualAge-Fortran module + + The CMAKE_Fortran_DEFINE_FLAG value applies to the IBM Fortran + compilers on all platforms. This moves the setting to the + platform-independent compiler information file. + +2009-08-07 09:56 king + + * Modules/Platform/OpenBSD.cmake: Use NetBSD to initialize OpenBSD + configuration + + We teach Modules/Platform/OpenBSD.cmake to load NetBSD first + since the platforms are so similar. This enables RPATH support + on OpenBSD. + +2009-08-07 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-06 19:01 partyd + + * Source/kwsys/SystemTools.cxx: COMP: attempt to fix more 'hidden + by' warnings. + +2009-08-06 07:53 king + + * Modules/FortranCInterface/CMakeLists.txt: Teach FortranCInterface + about g77 mangling + + The old GNU g77 Fortran compiler uses the suffix '__' for symbols + containing an underscore in their name. + +2009-08-06 07:53 king + + * Modules/FortranCInterface/CMakeLists.txt: Sort FortranCInterface + global mangling symbols + + This just cleans up the list ordering so more entries can be + added while keeping everything organized. + +2009-08-06 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-05 17:07 king + + * Modules/FortranCInterface/: CMakeLists.txt, my_module_.c, + mymodule_.c: Cleanup FortranCInterface for PGI and GCC 4.2 + + This documents the purpose of the extra my_module_.c and + mymodule.c source files, and sorts the symbols. + +2009-08-05 16:55 hoffman + + * Modules/FortranCInterface/: CMakeLists.txt, my_module_.c, + mymodule_.c: Teach FortranC interface for Intel, PGI, and gcc 4.2 + +2009-08-05 15:39 david.cole + + * Modules/AddExternalProject.cmake: Remove + AddExternalProject.cmake. ExternalProject.cmake + supercedes/replaces it. + +2009-08-05 14:59 david.cole + + * Modules/: BundleUtilities.cmake, GetPrerequisites.cmake: Overhaul + GetPrerequisites and BundleUtilities: make fixup_bundle do + something useful on Windows and Linux. + + Formerly, fixup_bundle was useful only on the Mac for making + standalone bundle applications that could be drag-n-drop moved to + anyplace in the file system. fixup_bundle is not just for the Mac + any more. It will now analyze executable files on Windows and + Linux, too, and copy necessary non-system dlls to the same folder + that the executable is in. This should work with dlls that you + build as part of your build and also with 3rd-party dlls as long + as you give fixup_bundle the right list of directories to search + for those dlls. Many thanks to Clinton Stimpson for his help in + ironing out the details involved in making this work. + +2009-08-05 13:40 king + + * Modules/FortranCInterface.cmake, Modules/FortranCInterface.h.in, + Modules/FortranCInterface/CMakeLists.txt, + Modules/FortranCInterface/Input.cmake.in, + Modules/FortranCInterface/Macro.h.in, + Modules/FortranCInterface/Output.cmake.in, + Modules/FortranCInterface/call_mod.f90, + Modules/FortranCInterface/call_sub.f, + Modules/FortranCInterface/main.F, + Modules/FortranCInterface/my_module.f90, + Modules/FortranCInterface/my_sub.f, + Modules/FortranCInterface/mymodule.f90, + Modules/FortranCInterface/mysub.f, + Modules/FortranCInterface/symbol.c.in, + Tests/Fortran/CMakeLists.txt, Tests/Fortran/myc.c: Rewrite + FortranCInterface module + + This is a new FortranCInterface.cmake module to replace the + previous prototype. All module support files lie in a + FortranCInterface directory next to it. + + This module uses a new approach to detect Fortran symbol + mangling. We build a single test project which defines symbols + in a Fortran library (one per object-file) and calls them from a + Fortran executable. The executable links to a C library which + defines symbols encoding all known manglings (one per + object-file). The C library falls back to the Fortran library + for symbols it cannot provide. Therefore the executable will + always link, but prefers the C-implemented symbols when they + match. These symbols store string literals of the form + INFO:symbol[] so we can parse them out of the executable. + + This module also provides a simpler interface. It always detects + the mangling as soon as it is included. A single macro is + provided to generate mangling macros and optionally pre-mangled + symbols. + +2009-08-05 10:45 hoffman + + * Source/cmVisualStudio10TargetGenerator.cxx: Allow for static + libraries to depend on other targets so that the MSBuild runs + build things in the correct order + +2009-08-05 10:14 king + + * Source/CMakeLists.txt, Tests/CMakeLists.txt, + Utilities/Doxygen/doxyfile.in: Remove WXDialog source code + + The QtDialog is our supported cross-platform GUI, so the WXDialog + source is no longer needed. + +2009-08-05 10:13 king + + * Source/CMakeLists.txt: Remove FLTKDialog source code + + The QtDialog is our supported cross-platform GUI, so the + FLTKDialog source is no longer needed. + +2009-08-05 09:56 king + + * Source/cmFindPackageCommand.cxx: Fix find_package for cmake-gui + registry entry + + The find_package commands looks at the "WhereBuild" registry + entries created by CMakeSetup and cmake-gui hoping that the + project was recently built. CMakeSetup created + WhereBuild1..WhereBuild10 but cmake-gui creates + WhereBuild0-WhereBuild9. + + This fixes find_package to look at WhereBuild0 so that the most + recently configured project can be found. It is important in the + case that the package to be found was the last one configured in + cmake-gui but the current project that is finding it is + configured from the command line. + +2009-08-05 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-04 15:41 martink + + * Source/cmLocalGenerator.cxx: ENH: minor cleanup of test + +2009-08-04 14:37 king + + * Source/cmCoreTryCompile.cxx, Source/cmGlobalGenerator.cxx, + Source/cmGlobalGenerator.h, Source/cmMakefile.cxx, + Source/cmMakefile.h, Tests/TryCompile/CMakeLists.txt, + Tests/TryCompile/Inner/CMakeLists.txt, + Tests/TryCompile/Inner/innerexe.c, + Tests/TryCompile/Inner/innerlib.c: No /fast targets in + try_compile project mode + + The try_compile command builds the cmTryCompileExec executable + using the cmTryCompileExec/fast target with Makefile generators + in order to save time since dependencies are not needed. + However, in project mode the command builds an entire source tree + that may have dependencies. Therefore we can use the /fast + target approach only in one-source mode. + +2009-08-04 14:06 king + + * Tests/Fortran/: CMakeLists.txt, foo.c, foo.cxx, mainc.c, + maincxx.c, myc.c, mycxx.cxx: Test C, C++, Fortran interface + combinations + + Previously the Fortran test created a single executable + containing C, C++, and Fortran sources. This commit divides the + executable into three libraries corresponding to each language, + and two executables testing Fortran/C only and Fortran/C/C++ + together. The result tests more combinations of using the + languages together, and that language requirements propagate + through linking. + +2009-08-04 13:16 martink + + * Source/cmTest.cxx: ENH: change to CDASH + +2009-08-04 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-03 13:37 king + + * Source/cmGlobalGenerator.cxx, Source/cmGlobalGenerator.h, + Tests/TryCompile/Inner/CMakeLists.txt: Fix recursive try_compile + calls + + When building an entire source tree with try_compile instead of + just a single source file, it is possible that the CMakeLists.txt + file in the try-compiled project invokes try_compile. This + commit fixes propagation of language-initialization results from + the outer-most project into any number of try-compile levels. + +2009-08-03 13:37 king + + * Tests/TryCompile/: CMakeLists.txt, Inner/CMakeLists.txt: Test + try_compile project mode + + The try_compile command project mode builds an entire source tree + instead of one source file. It uses an existing CMakeLists.txt + file in the given source tree instead of generating one. This + commit creates a test for the mode in the TryCompile test. + +2009-08-03 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-02 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-08-01 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-07-31 16:11 alex + + * Source/cmake.cxx: DOCS: fix typo (#9231) + + Alex + +2009-07-31 09:19 king + + * Source/CTest/cmCTestScriptHandler.cxx: Set current directory + variables in CTest scripts + + The commit "Fix get_filename_component ABSOLUTE mode" broke the + code + + get_filename_component(cwd . ABSOLUTE) + + because CTest scripts did not make + cmMakefile::GetCurrentDirectory() available. This commit fixes + the problem by setting the proper information on CTest script + instances of cmMakefile. + + This also makes CMAKE_CURRENT_SOURCE_DIR and + CMAKE_CURRENT_BINARY_DIR available to CTest scripts. They are + set to the working directory at script startup. + +2009-07-31 08:27 king + + * CMakeLists.txt, Source/QtDialog/CMakeLists.txt: Fix installation + when built by CMake 2.4 + + CMake 2.4 generates old-style cmake_install.cmake code including + calls to the file(INSTALL) command with the COMPONENTS argument. + We need to set CMAKE_INSTALL_SELF_2_4 for the whole install tree + to prevent the command from complaining in this special case. + Previously this was needed only in the QtDialog directory, but + now it is needed in the entire tree. + +2009-07-31 06:22 alex + + * Source/: cmFunctionCommand.h, cmMacroCommand.h: DOCS: fix typo + (see #9308) + + Alex + +2009-07-31 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: KWSys Nightly Date Stamp + +2009-07-30 13:46 king + + * Modules/: CMakeFortranCompiler.cmake.in, + CMakeTestFortranCompiler.cmake: Pass Fortran90 test result to + try-compile + + This stores CMAKE_Fortran_COMPILER_SUPPORTS_F90 in the Fortran + compiler information file CMakeFiles/CMakeFortranCompiler.cmake + instead of in CMakeCache.txt. This file makes the result + available to try-compile projects. + +2009-07-30 10:59 king + + * Modules/CMakeCXXCompiler.cmake.in, + Source/cmDocumentVariables.cxx, Source/cmTarget.cxx: Do not + always propagate linker language preference + + The commit "Consider link dependencies for link language" taught + CMake to propagate linker language preference from languages + compiled into libraries linked by a target. It turns out this + should only be done for some languages, such as C++, because + normally the language of the program entry point (main) should be + used. + + We introduce variable CMAKE__LINKER_PREFERENCE_PROPAGATES + to tell CMake whether a language should propagate its linker + preference across targets. Currently it is true only for C++. + +2009-07-30 10:59 king + + * Source/cmTarget.cxx: Refactor target linker language selection + + This factors the decision logic out of + cmTarget::ComputeLinkClosure into dedicated class + cmTargetSelectLinker. We replace several local variables with a + single object instance, and organize code into methods. + +2009-07-30 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-29 16:40 king + + * Source/: cmGlobalXCodeGenerator.cxx, cmGlobalXCodeGenerator.h: + Separate Xcode flag escaping code from defines + + Generalize the core Xcode generator preprocessor flag escaping + code to be useful for escaping all flags. + +2009-07-29 16:39 king + + * Source/cmGlobalXCodeGenerator.cxx: Re-order + cmGlobalXCodeGenerator implementation + + This defines class + cmGlobalXCodeGenerator::BuildObjectListOrString early in the + source file so it can be used in more places. + +2009-07-29 16:38 king + + * Tests/CMakeTests/ImplicitLinkInfoTest.cmake.in: Check PGI linker + lines in ImplicitLinkInfo test + + This adds sample linker invocation lines for the PGI compiler on + Linux. + +2009-07-29 16:38 king + + * Modules/Compiler/: PGI-C.cmake, PGI-CXX.cmake, PGI-Fortran.cmake: + Set CMAKE__VERBOSE_FLAG variables for PGI + + We set the variables to contain "-v", the verbose front-end + output option for PGI compilers. This enables detection of + implicit link libraries and directories for these compilers. + +2009-07-29 16:07 king + + * Tests/CMakeTests/ImplicitLinkInfoTest.cmake.in: Check Intel + linker lines in ImplicitLinkInfo test + + This adds sample linker invocation lines for the Intel compiler + on Linux. In particular, this exercises the case when "ld" + appears without a full path. + +2009-07-29 16:07 king + + * Modules/Compiler/: Intel-C.cmake, Intel-CXX.cmake, + Intel-Fortran.cmake: Set CMAKE__VERBOSE_FLAG variables for + Intel + + We set the variables to contain "-v", the verbose front-end + output option for Intel compilers. This enables detection of + implicit link libraries and directories for these compilers. + +2009-07-29 16:07 king + + * Modules/CMakeParseImplicitLinkInfo.cmake: Recognize linker + commands without paths + + This teaches the implicit link line parsing code to recognize + link lines that do not have a full path to the linker executable. + At least one version of the Intel compiler on Linux invokes the + linker as just "ld" instead of "/usr/bin/ld". + +2009-07-29 11:29 king + + * Source/: CMakeLists.txt, cmIDEOptions.cxx, cmIDEOptions.h, + cmVisualStudioGeneratorOptions.cxx, + cmVisualStudioGeneratorOptions.h: ENH: Separate option mapping + from VS generators + + Split cmVisualStudioGeneratorOptions core functionality out into + a base class cmIDEOptions. It will be useful for other + generators. + +2009-07-29 11:28 king + + * Source/: CMakeLists.txt, cmGlobalVisualStudio7Generator.cxx, + cmGlobalVisualStudio7Generator.h, + cmGlobalVisualStudio8Generator.cxx, + cmGlobalVisualStudio8Generator.h, cmIDEFlagTable.h, + cmLocalVisualStudio7Generator.h, + cmVisualStudioGeneratorOptions.h: ENH: Separate VS flag table + type + + Move the cmVS7FlagTable type out of the VS generators and rename + it to cmIDEFlagTable. It will be useful for other generators. + +2009-07-29 08:39 king + + * Tests/Properties/CMakeLists.txt: Test cache entry property + "STRINGS" + + The STRINGS property tells cmake-gui to create a drop-down + selection list. This teaches the Properties test to set and + verify its value. + +2009-07-29 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-28 14:30 hoffman + + * Source/: cmLocalVisualStudio7Generator.cxx, + cmLocalVisualStudio7Generator.h: ENH: remove code duplication and + use cmVisualStudioGeneratorOptions for all versions of vs 7 and + greater. + +2009-07-28 10:46 king + + * Source/: CPack/cmCPackGenerator.cxx, + CTest/cmCTestScriptHandler.cxx, CTest/cmCTestTestHandler.cxx, + cmCTest.cxx, cmake.cxx: BUG: Do not double-initialize local + generators + + All global generator CreateLocalGenerator methods automatically + initialize the local generator instances with SetGlobalGenerator. + In several places we were calling SetGlobalGenerator again after + receiving the return value from CreateLocalGenerator. The + double-initializations leaked the resources allocated by the + first call to SetGlobalGenerator. This fix removes the + unnecessary calls. + +2009-07-28 08:36 king + + * Source/cmComputeLinkInformation.cxx: BUG: Do not filter + non-library implicit link items + + We list implicit link items of languages linked into a target but + filter them by the implicit libraries known to be passed by the + main linker language. Implicit link flags like "-z..." should + not be filtered out because they are not libraries. + +2009-07-28 08:36 king + + * Modules/CMakeParseImplicitLinkInfo.cmake, + Tests/CMakeTests/ImplicitLinkInfoTest.cmake.in: BUG: Parse + implicit link editor -z*extract options + + The Sun Fortran compiler passes -zallextract and -zdefaultextract + to the linker so that all objects from one of its archives are + included in the link. This teaches the implicit options parser + to recognize the flags. We need to pass them explicitly on C++ + link lines when Fortran code is linked. + +2009-07-28 08:08 king + + * Source/cmComputeLinkInformation.cxx: BUG: Always pass linker + flags untouched + + In cmComputeLinkInformation we recognize link options that look + like library file names, but pass flags starting in '-' through + untouched. This fixes the ordering of the check to recognize '-' + flags first in case the rest of the option looks like a library + file name, as in the case of "-l:libfoo.a". + +2009-07-28 08:07 king + + * Source/cmComputeLinkInformation.cxx: BUG: Do not recognize ':' in + a library name + + In cmComputeLinkInformation we construct regular expressions to + recognize library file names. This fixes the expressions to not + allow a colon (':') in the file name so that "-l:libfoo.a" is + left alone. + +2009-07-28 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-27 16:45 king + + * Source/kwsys/: CMakeLists.txt, kwsysPlatformTestsCXX.cxx: BUG: + Enable large files only if works + + Some AIX/gcc version combinations the header breaks when + large file support is enabled. See this GCC issue for details: + + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20366 + + We work around the problem by enhancing the configuration check + for large file support to include when available. This + will cause LFS to be disabled when the above problem occurs. + +2009-07-27 14:17 hoffman + + * Source/CTest/cmCTestTestHandler.cxx: ENH: add test times and a + total time to the output of command line ctest + +2009-07-27 12:43 king + + * Tests/Fortran/: CMakeLists.txt, foo.c, foo.cxx: ENH: Test Fortran + and C++ in one executable + + This extends the Fortran-to-C interface test to add a C++ source + file. The executable can only link with the C++ linker and with + the proper Fortran runtime libraries. These libraries should be + detected by CMake automatically, so this tests verifies the + detection functionality. + +2009-07-27 12:43 king + + * Tests/Fortran/CMakeLists.txt: ENH: Remove EXTRA_FORTRAN_C_LIBS + Fortran test hack + + This hack was created to help the Fortran test executables link + to the implicit C libraries added by BullsEye. Now that implicit + libraries from all languages are detected and included + automatically the hack is no longer needed. + +2009-07-27 12:43 king + + * Source/: cmComputeLinkInformation.cxx, + cmComputeLinkInformation.h, cmOrderDirectories.cxx, + cmOrderDirectories.h: ENH: Link runtime libraries of all + languages + + This adds implicit libraries and search directories for languages + linked into a target other than the linker language to its link + line. For example, when linking an executable containing both + C++ and Fortran code the C++ linker is used but we need to add + the Fortran libraries. + + The variables + + CMAKE__IMPLICIT_LINK_LIBRARIES + CMAKE__IMPLICIT_LINK_DIRECTORIES + + contain the implicit libraries and directories for each language. + Entries for the linker language are known to be implicit in the + generated link line. Entries for other languages that do not + appear in the known implicit set are listed explicitly at the end + of the link line. + +2009-07-27 12:35 king + + * Tests/SystemInformation/DumpInformation.cxx: ENH: Report CMake + logs in SystemInformation test + + This teaches the SystemInformation test to report the CMake log + files CMakeOutput.log and CMakeError.log from the CMake build + tree and from the SystemInformation test build tree. These logs + may help diagnose dashboard problems remotely. + +2009-07-27 12:04 david.cole + + * Tests/CMakeTests/: CMakeLists.txt, CheckSourceTreeTest.cmake.in: + ENH: Make the CheckSourceTree test emit a warning (but pass + instead of fail) when there is an in-source build on a dashboard + machine. + +2009-07-27 11:56 king + + * Tests/Fortran/mysub.f: ENH: Require language libs in Fortran/C + test + + This extends the Fortran/C interface test to require that the + executable link to the fortran language runtime libraries. We + must verify that the proper linker is chosen. + +2009-07-27 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-26 01:01 partyd + + * Source/kwsys/SystemTools.cxx: ENH: try and see if using + string.append instead of += will make valgrind not complaing that + JoinPath is leaking. + +2009-07-26 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-25 13:32 david.cole + + * Tests/CMakeTests/CheckSourceTreeTest.cmake.in: ENH: Improvements + to the new CheckSourceTree test: ignore Thumbs.db and .DS_Store + files. Force all output to stderr by not using STATUS with + message. Better error text. + +2009-07-25 08:11 king + + * Tests/CMakeTests/ImplicitLinkInfoTest.cmake.in: BUG: Further + avoid ImplicitLinkInfo case change + + The commit "Avoid case change in ImplicitLinkInfo test" did not + change all of the paths to mingw, so some case change still + occurs. This changes more of them. + +2009-07-25 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-24 18:30 david.cole + + * Tests/CMakeLists.txt: BUG: One last attempt for today to get the + new CheckSourceTree test running on dashboards driven by CMake + 2.4... Good night now. + +2009-07-24 17:33 king + + * CMakeLists.txt: ENH: Allow empty endif() and such with CMake 2.4 + + This allows us to use empty endif() and similar block terminators + when building with CMake 2.4. It is allowed by default with 2.6 + already. + +2009-07-24 17:28 david.cole + + * Tests/CMakeTests/CMakeLists.txt: BUG: Close endif statements with + same string as if so that it still configures with CMake 2.4. One + more time. Encore, encore. + +2009-07-24 17:12 david.cole + + * Tests/CMakeTests/CheckSourceTreeTest.cmake.in: BUG: Improve + CheckSourceTree test so that it ignores 'U ' output from cvs + update. Also: improve failure logic for dashboard runs and + developer runs. + +2009-07-24 16:57 king + + * Tests/CMakeTests/VariableWatchTest.cmake.in: BUG: Teach + VariableWatch test to check results + + Previously this test was only a smoke test for manual + verification. This teaches the test to actually check that the + variable watch succeeds. + +2009-07-24 16:53 king + + * Source/cmVariableWatchCommand.h: BUG: Keep variable_watch() + commands in memory + + The "Keep only FinalPass commands in memory" commit caused + instances of this command to be deleted after the InitialPass. + Even though the variable_watch command does not have a final + pass, it does need to stay alive because it owns the callback + information. + +2009-07-24 16:31 david.cole + + * Tests/CMakeLists.txt: BUG: Close endif statements with same + string as if so that it still configures with CMake 2.4 -- also + check for existence of FindCVS.cmake before doing + find_package(CVS QUIET) also for CMake 2.4 sake... + +2009-07-24 16:15 david.cole + + * Tests/CMakeLists.txt: BUG: Oops. Left chunk of junk at the bottom + of the main Tests CMakeLists.txt file with the last commit... + Sorry. + +2009-07-24 15:58 david.cole + + * Source/cmGlobalXCodeGenerator.cxx, Tests/CMakeLists.txt, + Tests/CMakeTests/CMakeLists.txt, + Tests/CMakeTests/CheckSourceTreeTest.cmake.in: BUG: Additional + fix necessary for issue #8481 so that Xcode builds do not write + files into the source tree. Also add a test that runs last to + check for local modifications in CMake_SOURCE_DIR based on + whether 'cvs -q -n up -dP' output is empty. Test fails on + dashboard runs when there are local modifications. Test passes on + non-dashboard runs with local modifications so that CMake + developers may have mods when running the test locally. + +2009-07-24 13:31 king + + * Source/: cmCommand.h, cmConfigureFileCommand.h, + cmExportLibraryDependencies.h, cmFLTKWrapUICommand.h, + cmInstallFilesCommand.h, cmInstallProgramsCommand.h, + cmLoadCommandCommand.cxx, cmMakefile.cxx: ENH: Keep only + FinalPass commands in memory + + In cmMakefile we save all invoked commands so that FinalPass can + be called on them later. Most commands have no final pass, so we + should keep only the few that do. + +2009-07-24 13:17 king + + * CMakeLists.txt, Modules/CMakeLists.txt, + Modules/Platform/CMakeLists.txt, Templates/CMakeLists.txt: ENH: + Install all Modules and Templates + + This removes the file-wise installation rules for Modules and + Templates and instead installs the whole directories. This + approach is much less error-prone. The old approach was left + from before CMake had the install(DIRECTORY) command. + +2009-07-24 12:55 king + + * Modules/CMakeLists.txt: BUG: Install new fortran compiler id + source. + + The extension of the id source file was changed from .F90 to .F + so this fixes the install rule. + +2009-07-24 12:15 malaterre + + * Source/kwsys/SharedForward.h.in: COMP: Fix compilation of VTK on + debian/sparc (sparc is a CPU not an OS) + +2009-07-24 07:34 king + + * Tests/CMakeTests/ImplicitLinkInfoTest.cmake.in: BUG: Avoid case + change in ImplicitLinkInfo test + + Since "get_filename_component(... ABSOLUTE)" retrieves the actual + case for existing paths on windows, we need to use an obscure + path for mingw. Otherwise the test can fail just because the + case of the paths changes. + +2009-07-24 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-23 16:19 king + + * Modules/CMakeDetermineCompilerABI.cmake: BUG: Skip implicit link + information on Xcode + + Xcode adds extra link directories that point at the build tree, + so detection of implicit link directories is not reliable. Since + Fortran is not supported in Xcode we will not need implicit link + information yet anyway. + +2009-07-23 10:07 king + + * Tests/CMakeTests/: CMakeLists.txt, ImplicitLinkInfoTest.cmake.in: + ENH: Create ImplicitLinkInfo test + + This tests the internal CMakeParseImplicitLinkInfo.cmake module + to ensure that implicit link information is extracted correctly. + The test contains many manually verified examples from a variety + of systems. + +2009-07-23 10:07 king + + * Modules/CMakeCCompiler.cmake.in, + Modules/CMakeCXXCompiler.cmake.in, + Modules/CMakeDetermineCompilerABI.cmake, + Modules/CMakeFortranCompiler.cmake.in, + Modules/CMakeParseImplicitLinkInfo.cmake, + Modules/Compiler/GNU-C.cmake, Modules/Compiler/GNU-CXX.cmake, + Modules/Compiler/GNU-Fortran.cmake, Modules/Compiler/HP-C.cmake, + Modules/Compiler/HP-CXX.cmake, Modules/Compiler/HP-Fortran.cmake, + Modules/Compiler/MIPSpro-C.cmake, + Modules/Compiler/MIPSpro-CXX.cmake, + Modules/Compiler/MIPSpro-Fortran.cmake, + Modules/Compiler/SunPro-C.cmake, + Modules/Compiler/SunPro-CXX.cmake, + Modules/Compiler/SunPro-Fortran.cmake, + Modules/Compiler/VisualAge-C.cmake, + Modules/Compiler/VisualAge-CXX.cmake, + Modules/Compiler/VisualAge-Fortran.cmake, + Source/cmDocumentVariables.cxx, + Tests/SystemInformation/SystemInformation.in: ENH: Implicit link + info for C, CXX, and Fortran + + This teaches CMake to detect implicit link information for C, + C++, and Fortran compilers. We detect the implicit linker search + directories and implicit linker options for UNIX-like + environments using verbose output from compiler front-ends. We + store results in new variables called + + CMAKE__IMPLICIT_LINK_LIBRARIES + CMAKE__IMPLICIT_LINK_DIRECTORIES + + The implicit libraries can contain linker flags as well as + library names. + +2009-07-23 10:06 king + + * Modules/: CMakeCInformation.cmake, CMakeCXXInformation.cmake, + CMakeFortranInformation.cmake: ENH: Load platform-independent + per-compiler files + + This teaches the language configuration modules to load + per-compiler information for each language using the compiler id + but no system name. They look for modules named + "Compiler/-.cmake". Such modules may specify compiler + flags that do not depend on the platform. + +2009-07-23 08:10 king + + * Source/cmGetFilenameComponentCommand.cxx: BUG: Fix + get_filename_component ABSOLUTE mode + + This teaches the command to recognize full windows paths when + built on UNIX. CollapseFullPath knows when the input path is + relative better than FileIsFullPath because the latter is only + meant for paths from the host platform. + +2009-07-23 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-22 14:22 king + + * bootstrap, Source/CMakeLists.txt, Source/cmDefinitions.cxx, + Source/cmDefinitions.h, Source/cmMakefile.cxx, + Source/cmMakefile.h: ENH: Improve dynamic variable scope + implementation + + Previously each new variable scope (subdirectory or function + call) in the CMake language created a complete copy of the + key->value definition map. This avoids the copy using transitive + lookups up the scope stack. Results of queries answered by + parents are stored locally to maintain locality of reference. + + The class cmDefinitions replaces cmMakefile::DefinitionsMap, and + is aware of its enclosing scope. Each scope stores only the + definitions set (or unset!) inside it relative to the enclosing + scope. + +2009-07-22 13:42 king + + * Tests/FunctionTest/SubDirScope/CMakeLists.txt: ENH: Improve + strictness of Function test + + The command "set(... PARENT_SCOPE)" should never affect the + calling scope. This improves the Function test to check that + such calls in a subdirectory scope affect the parent but not the + child. + +2009-07-22 12:06 david.cole + + * Source/cmCTest.cxx: BUG: Fix typo pointed out by Monsieur + Francois Bertel. Merci, Francois. + +2009-07-22 11:14 david.cole + + * Source/cmGlobalXCodeGenerator.cxx: BUG: Fix issue #8481 - + generate Xcode projects such that breakpoints may be used from + the Xcode debugger without adjusting any settings within the + Xcode GUI first... Thanks to Doug Gregor for the patch. + +2009-07-22 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-21 12:45 martink + + * Modules/FindPNG.cmake: ENH: just converted case to lower for the + book + +2009-07-21 11:58 king + + * Source/cmLocalUnixMakefileGenerator3.cxx: BUG: Disable color + makefile inside try-compile + + Generated makefiles for try-compile projects should never use + color output. On MSYS the color escapes end up in the + try-compile output text because there is no way to identify + whether the output is going to a color-capable terminal. Instead + we should just always skip color for try-compile projects. + +2009-07-21 10:56 king + + * Tests/SystemInformation/DumpInformation.h.in: BUG: Fix + SystemInformation dump output + + When this test was renamed from DumpInformation to + SystemInformation the configured header that points the dump + executable to the directory containing information files was + broken. No information has been dumped by this test for 2 years! + This fixes it. + +2009-07-21 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-20 12:08 david.cole + + * CMakeCPackOptions.cmake.in: BUG: Add CPACK_NSIS_PACKAGE_NAME to + the list of CPack variables that CMake overrides. We use the same + value as the CPack-provided default, but do it here such that + configuring with an older CMake will still give us this new + variable. Necessary so that the CMake release process works with + the new variable: CMake is configured with a previous CMake, but + packaged with the freshly built CPack. (This fix is necessary + because the fix for issue #8682 caused the side effect of having + an empty CPACK_NSIS_PACKAGE_NAME for the CMake nightly package.) + +2009-07-20 10:58 hoffman + + * Tests/CMakeLists.txt: ENH: set expected failure for tests + +2009-07-20 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-19 13:40 hoffman + + * Source/CTest/cmCTestTestHandler.cxx: ENH: fix warning + +2009-07-19 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-18 01:05 lowman + + * Modules/FindSDL.cmake: BUG: Fix include path detection with + SDLDIR env var (issue #9086). Also removed some superfluous + search paths. + +2009-07-18 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-17 23:51 lowman + + * Modules/FindPerlLibs.cmake: ENH: Also add ARCHLIB/CORE to include + search paths so perl.h can be found on non-standard install + prefixes + +2009-07-17 23:31 lowman + + * Modules/FindPerlLibs.cmake: ENH: Improve detection of + perl.h/libperl, issue #7898 + +2009-07-17 16:15 hoffman + + * Source/CTest/cmCTestTestHandler.cxx: ENH: fix warning + +2009-07-17 14:51 clinton + + * Source/QtDialog/CMakeSetupDialog.cxx: ENH: Edit button label for + new changes dialog. + +2009-07-17 14:38 clinton + + * Source/QtDialog/: CMakeSetupDialog.cxx, CMakeSetupDialog.h, + QCMakeCacheView.cxx, QCMakeCacheView.h: + ENH: Add a "Show my changes" to the Tools menu. Changes + by the user are recorded and when requested, it shows -D + arguments for commandline or contents for a cache file. + +2009-07-17 10:06 hoffman + + * Source/CTest/cmCTestTestHandler.cxx: ENH: compute the max test + name width based on the length of the tests + +2009-07-17 10:05 hoffman + + * Source/: cmGlobalGenerator.h, cmGlobalVisualStudioGenerator.h, + cmLocalGenerator.cxx, cmMakefile.cxx: ENH: make sure GUIDs for + filters are cached + +2009-07-17 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-16 18:53 clinton + + * Modules/FindQt4.cmake: BUG: fix relative paths from different + drives on Windows + +2009-07-16 11:48 david.cole + + * Modules/: CPack.cmake, NSIS.template.in: BUG: Re-fix issue #8682. + Use new variable CPACK_NSIS_PACKAGE_NAME in appropriate places + rather than CPACK_NSIS_DISPLAY_NAME. CPACK_NSIS_DISPLAY_NAME is + the Add/Remove control panel's description string for the + installed package. Using it as the "Name" of the NSIS installer + package made the CMake installer itself use really long strings + in the installer GUI. This fix still allows for the original + intent of the first fix for #8682 -- the ability to separate the + installer name from the default install directory, but it uses a + new/different variable to achieve the separation. + +2009-07-16 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-15 12:43 hoffman + + * Modules/Platform/Windows-cl.cmake: ENH: remove debug message + +2009-07-15 12:18 hoffman + + * Modules/Platform/Windows-cl.cmake: ENH: do not use + /INCREMENTAL:YES with VS 10 compiler + +2009-07-15 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-14 19:34 clinton + + * Source/QtDialog/CMakeSetup.cxx: + BUG: Don't let Qt suppress error dialogs. Add call to + SetErrorMode(0); See #9258. + +2009-07-14 16:06 hoffman + + * Source/cmIncludeExternalMSProjectCommand.cxx: ENH: fix vsexternal + test on vs 71 + +2009-07-14 15:17 king + + * Modules/: CMakeCCompilerId.c.in, CMakeCXXCompilerId.cpp.in, + CMakeFortranCompilerId.F.in: ENH: Check _SGI_COMPILER_VERSION for + compiler id + + Some SGI compilers define _SGI_COMPILER_VERSION in addition to + the old _COMPILER_VERSION preprocessor symbol. It is more + distinctive, so we should check it in case the old one is ever + removed. + +2009-07-14 15:16 king + + * Modules/CMakeFortranCompilerId.F.in: BUG: Avoid SGI preprocessor + bug for Fortran Id + + The SGI preprocessor /usr/lib/cpp produces bad output on this + code: + + #if 1 + A + #elif 1 + B + #else + C + #endif + + Both 'A' and 'C' appear in the output! We work around the + problem by using '#elif 1' instead of '#else'. + + This fixes detection of the SGI Fortran compiler id in -o32 mode. + +2009-07-14 14:44 alex + + * Modules/MacroAddFileDependencies.cmake: STYLE: add documentation + for MACRO_ADD_FILE_DEPENDENCIES() + + Alex + +2009-07-14 14:16 hoffman + + * Source/cmGlobalVisualStudio6Generator.cxx, + Source/cmGlobalVisualStudio6Generator.h, + Source/cmGlobalVisualStudio71Generator.cxx, + Source/cmGlobalVisualStudio71Generator.h, + Source/cmGlobalVisualStudio7Generator.cxx, + Source/cmGlobalVisualStudio7Generator.h, + Source/cmGlobalVisualStudioGenerator.cxx, + Source/cmGlobalVisualStudioGenerator.h, + Source/cmIncludeExternalMSProjectCommand.cxx, + Source/cmLocalGenerator.cxx, + Source/cmLocalVisualStudio10Generator.cxx, + Source/cmLocalVisualStudio6Generator.cxx, + Source/cmLocalVisualStudio7Generator.cxx, + Source/cmVisualStudio10TargetGenerator.cxx, + Tests/VSExternalInclude/CMakeLists.txt: ENH: remove + INCLUDE_EXTERNAL_MSPROJECT name hack, and use target properties + instead, fix VXExternalInclude test for VS10 + +2009-07-14 10:15 king + + * Source/cmSeparateArgumentsCommand.cxx, + Source/cmSeparateArgumentsCommand.h, + Tests/CMakeTests/CMakeLists.txt, + Tests/CMakeTests/SeparateArgumentsTest.cmake.in: ENH: Teach + separate_arguments() to parse commands + + This adds UNIX_COMMAND and WINDOWS_COMMAND modes to the command. + These modes parse unix- and windows-style command lines. + +2009-07-14 10:14 king + + * Source/: cmComputeLinkInformation.cxx, + cmComputeLinkInformation.h: STYLE: Factor + cmComputeLinkInformation constructor + + This factors some code out of the constructor into a new method + cmComputeLinkInformation::LoadImplicitLinkInfo for readability. + +2009-07-14 10:14 king + + * Source/: cmOrderDirectories.cxx, cmOrderDirectories.h: STYLE: + Factor CollectOriginalDirectories code + + This factors code out of + cmOrderDirectories::CollectOriginalDirectories into + cmOrderDirectories::AddOriginalDirectories. Later a new call + will be added, and this is more readable anyway. + +2009-07-14 08:38 king + + * Tests/ExportImport/: CMakeLists.txt, InitialCache.cmake.in: COMP: + Shorten ExportImport test command lines + + The ExportImport test drives its Export and Import projects using + the same compiler and flags. This converts the ctest + --build-and-test command lines to use an initial cache file + instead of passing all settings on the command line. + + We need a shorter command line to pass through VS 6 on Win98. + This approach reduces duplicate code anyway. + +2009-07-14 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-13 17:35 king + + * Source/kwsys/System.c: BUG: Parse escapes in single-quoted unix + arguments + + This fixes KWSys's unix-style command-line parsing to interpret + backslash escapes inside single-quoted strings. + +2009-07-13 17:08 king + + * Source/cmSystemTools.cxx: COMP: Include for 'free' on + QNX + +2009-07-13 16:58 hoffman + + * Source/cmLocalVisualStudio10Generator.cxx, + Source/cmLocalVisualStudio10Generator.h, + Source/cmLocalVisualStudio7Generator.h, + Source/cmVisualStudio10TargetGenerator.cxx, + Source/cmVisualStudio10TargetGenerator.h, + Source/cmVisualStudioGeneratorOptions.cxx, + Tests/PrecompiledHeader/CMakeLists.txt, + Tests/Preprocess/CMakeLists.txt, + Tests/VSExternalInclude/CMakeLists.txt: ENH: almost all tests + passing in vs 10, commit fixes preprocess and starts vs external + project + +2009-07-13 16:46 king + + * Source/cmSystemTools.cxx: COMP: Include for 'free' + +2009-07-13 16:22 king + + * Source/: cmSystemTools.cxx, cmSystemTools.h: ENH: Add + cmSystemTools::ParseUnixCommandLine + + This method is a C++ wrapper around the KWSys System library + function to parse unix-style command lines. + +2009-07-13 16:22 king + + * Source/kwsys/: ProcessUNIX.c, System.c, System.h.in: ENH: Provide + unix-sytle command line parsing + + Add System_Parse_CommandForUnix to the KWSys System interface as + a utility to parse a unix-style command line. Move the existing + implementation out of ProcessUNIX. Add a flags argument reserved + for future use in providing additional behavior. + +2009-07-13 11:24 king + + * Modules/: CMakeFortranCompilerABI.F, + CMakeTestFortranCompiler.cmake: ENH: Create Fortran ABI detection + framework + + This invokes CMakeDetermineCompilerABI.cmake for Fortran at the + same place it is already done for C and CXX. + +2009-07-13 10:46 king + + * Modules/ExternalProject.cmake: ENH: Check tarball filename in + ep_add + + This teaches the ExternalProject module to check the download URL + file name. If it is not a tarball (.tar, .tgz, .tar.gz) it is an + error because UntarFile does not yet understand other archive + formats. + +2009-07-13 10:46 king + + * Modules/UntarFile.cmake: BUG: Teach UntarFile to delete dir on + error + + When tarball extraction fails we should still cleanup the + temporary extraction directory. Otherwise the next attempt will + create a new directory and the first one will never be removed. + +2009-07-13 10:40 king + + * Modules/Platform/Linux-SunPro-CXX.cmake: BUG: Fix rpath-link flag + for SunPro C++ on Linux + + This teaches Modules/Platform/Linux-SunPro-CXX.cmake the + -rpath-link flag. The SunPro C++ compiler does not have a '-Wl,' + option, so we just pass the flag directly. + + This problem was exposed by the ExportImport test now that it + links an executable through the C++ compiler with the -rpath-link + flag. + +2009-07-13 09:20 king + + * Tests/ExportImport/Export/: CMakeLists.txt, testLib6.c, + testLib6c.c: COMP: Fix ExportImport testLib6 on VS6 + + The compiler does not support multiple source files differing + only by extension in one target. This renames the C source file + in the test. + +2009-07-13 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-12 14:52 alex + + * Tests/CMakeLists.txt: BUG: disable the test for now, will make it + work correctly later + + Alex + +2009-07-12 04:51 alex + + * Source/CTest/cmCTestScriptHandler.cxx, Tests/CMakeLists.txt, + Modules/CTestScriptMode.cmake, + Tests/CTestScriptMode/CTestTestScriptMode.cmake.in: STYLE: don't + load CMakeDetermineSystem and CMakeSystemSpecific directly from + cmCTestScriptHandler, but have it load the new script + CTestScriptMode.cmake -> that makes it more flexible, also add a + simple test that the system name has been determined correctly + + Alex + +2009-07-12 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-11 16:30 alex + + * Source/CTest/: cmCTestScriptHandler.cxx, cmCTestScriptHandler.h: + STYLE: move the code for writing the initial cache into its own + separate function, makes the long ProcessHandler() a little bit + shorter + + Alex + +2009-07-11 16:27 alex + + * Source/CTest/: cmCTestScriptHandler.cxx, cmCTestScriptHandler.h: + STYLE: rename InitCache to InitialCache, since it contains the + contents for the initial cache and is not e.g. a flag which shows + whether the cache should be initialized + + Alex + +2009-07-11 10:12 king + + * Source/: cmExportFileGenerator.cxx, cmTarget.cxx: ENH: Export and + import link interface languages + + Now that languages are part of the link interface of a target we + need to export/import the information. A new + IMPORTED_LINK_INTERFACE_LANGUAGES property and per-config + IMPORTED_LINK_INTERFACE_LANGUAGES_ property specify the + information for imported targets. The export() and + install(EXPORT) commands automatically set the properties. + +2009-07-11 10:10 king + + * Tests/ExportImport/: CMakeLists.txt, Export/CMakeLists.txt, + Export/testLib6.c, Export/testLib6.cxx, Import/CMakeLists.txt, + Import/A/CMakeLists.txt, Import/A/imp_testExe1.c: ENH: Test + export/import of link interface languages + + This extends the ExportImport test. The Export project creates a + C++ static library and exports it. Then the Import project links + the library into a C executable. On most platforms the + executable will link only if the C++ linker is chosen correctly. + +2009-07-11 00:05 hoffman + + * Source/cmLocalGenerator.h, Source/cmMakefile.cxx, + Source/cmSourceGroup.cxx, Source/cmSourceGroup.h, + Source/cmVisualStudio10TargetGenerator.cxx, + Source/cmVisualStudio10TargetGenerator.h, + Tests/SourceGroups/CMakeLists.txt, Tests/SourceGroups/README.txt: + ENH: add group support and fix borland error + +2009-07-11 00:01 kwrobot + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-10 16:51 king + + * Source/: cmGlobalGenerator.h, cmGlobalXCodeGenerator.cxx, + cmGlobalXCodeGenerator.h: BUG: Fix Xcode linker language + + Xcode does not seem to support direct requests for using the + linker for a particular language. It always infers the linker + using the languages in the source files. When no user source + files compile with target's linker language we add one to help + Xcode pick the linker. + + A typical use case is when a C executable links to a C++ archive. + The executable has no C++ source files but we need to use the + C++ linker. + +2009-07-10 13:53 king + + * Source/cmTarget.cxx: ENH: Update LINKER_LANGUAGE and HAS_CXX docs + + This updates the documentation of these properties to account for + the new automatic linker language computation. + +2009-07-10 13:53 king + + * Tests/: CMakeLists.txt, LinkLanguage/CMakeLists.txt, + LinkLanguage/LinkLanguage.c, LinkLanguage/foo.cxx: ENH: Test + transitive link languages + + This test creates a C executable that links to a C++ static + library. On most platforms the executable will not link unless + the C++ linker is chosen correctly. + +2009-07-10 13:53 king + + * Source/: cmTarget.cxx, cmTarget.h: ENH: Consider link + dependencies for link language + + This teaches cmTarget to account for the languages compiled into + link dependencies when determining the linker language for its + target. + + We list the languages compiled into a static archive in its link + interface. Any target linking to it knows that the runtime + libraries for the static archive's languages must be available at + link time. For now this affects only the linker language + selection, but later it will allow CMake to automatically list + the language runtime libraries. + +2009-07-10 13:08 king + + * Source/CTest/cmCTestHG.cxx: COMP: Fix cmCTestHG for old HP + compiler + + The compiler does not have a fully compliant std::string. + +2009-07-10 12:26 hoffman + + * Source/cmVisualStudio10TargetGenerator.cxx: ENH: change so rules + show up in GUI, must be windows path + +2009-07-10 11:07 king + + * Modules/CTest.cmake, Source/CMakeLists.txt, + Source/CTest/cmCTestHG.cxx, Source/CTest/cmCTestHG.h, + Source/CTest/cmCTestUpdateCommand.cxx, + Source/CTest/cmCTestUpdateHandler.cxx, + Source/CTest/cmCTestUpdateHandler.h, Tests/CMakeLists.txt, + Tests/CTestUpdateHG.cmake.in: ENH: Teach CTest to handle + Mercurial repositories + + This creates cmCTestHG to drive CTest Update handling on hg-based + work trees. Currently we always update to the head of the remote + tracking branch (hg pull), so the nightly start time is ignored + for Nightly builds. A later change will address this. + + See issue #7879. Patch from Emmanuel Christophe. I modified the + patch slightly for code style, to finish up some parsing details, + and to fix the test. + +2009-07-10 11:07 king + + * Source/cmProcessTools.h: ENH: New OutputParser::Process() + signature + + This overload accepts a null-terminated string instead of + requiring a length. It is useful to pass some fake process + output before and after the real process output. + +2009-07-10 09:53 david.cole + + * CTestCustom.cmake.in: COMP: Mask out shadowed declaration + warnings that always follow already masked Utilities/cmtar + warnings. + +2009-07-10 09:12 hoffman + + * Modules/CMakeVS10FindMake.cmake, Source/cmCTest.cxx, + Source/cmGlobalVisualStudio10Generator.cxx, + Source/cmGlobalVisualStudio10Generator.h, + Source/cmGlobalVisualStudio71Generator.cxx, + Source/cmGlobalVisualStudio7Generator.cxx, + Source/cmGlobalVisualStudio7Generator.h, + Source/cmGlobalVisualStudioGenerator.cxx, + Source/cmLocalVisualStudio10Generator.cxx, + Source/cmLocalVisualStudio7Generator.cxx, + Source/cmLocalVisualStudio7Generator.h, + Source/cmLocalVisualStudioGenerator.cxx, + Source/cmLocalVisualStudioGenerator.h, Source/cmTarget.cxx, + Source/cmVisualStudio10TargetGenerator.cxx, + Source/cmVisualStudio10TargetGenerator.h, + Tests/Complex/Library/CMakeLists.txt, + Tests/ComplexOneConfig/Library/CMakeLists.txt, + Tests/ComplexRelativePaths/Library/CMakeLists.txt: ENH: only 5 + failing tests for VS 10 + +2009-07-10 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-09 14:15 king + + * Source/kwsys/SharedForward.h.in: COMP: More KWSys SharedForward + pointer const-ness + + This adds another cast to avoid pointer conversion warnings. + Unfortunately C does not recognize implicit conversions that add + cv-qualifiers as well as C++ does. + +2009-07-09 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-08 16:18 david.cole + + * Source/kwsys/MD5.c: COMP: Eliminate "conversion may change sign + of result" warnings by using size_t where appropriate. (Missed + one warning with last commit: add a cast to md5_word_t.) + +2009-07-08 16:15 david.cole + + * Source/kwsys/MD5.c: COMP: Eliminate "conversion may change sign + of result" warnings by using size_t where appropriate. + +2009-07-08 15:09 king + + * Source/kwsys/SharedForward.h.in: COMP: Fix KWSys SharedForward + sign conversion + + This uses size_t where necessary to avoid size_t/int conversion + warnings. + +2009-07-08 15:09 king + + * Source/kwsys/SharedForward.h.in: COMP: Fix KWSys SharedForward + pointer const-ness + + This adds const-ness and casts where necessary to avoid pointer + conversion warnings. + +2009-07-08 14:43 david.cole + + * CTestCustom.cmake.in: COMP: Suppress warnings from the + Utilities/cmtar code in dashboard results. + +2009-07-08 14:33 king + + * Source/: cmDocumentVariables.cxx, cmTarget.cxx: BUG: Use link + language for target name computation + + The commit "Do not compute link language for LOCATION" was wrong. + The variables + + CMAKE_STATIC_LIBRARY_PREFIX_Java + CMAKE_STATIC_LIBRARY_SUFFIX_Java + + are used for building Java .jar files. This commit re-enables + the feature and documents the variables: + + CMAKE_EXECUTABLE_SUFFIX_ + CMAKE_IMPORT_LIBRARY_PREFIX_ + CMAKE_IMPORT_LIBRARY_SUFFIX_ + CMAKE_SHARED_LIBRARY_PREFIX_ + CMAKE_SHARED_LIBRARY_SUFFIX_ + CMAKE_SHARED_MODULE_PREFIX_ + CMAKE_SHARED_MODULE_SUFFIX_ + CMAKE_STATIC_LIBRARY_PREFIX_ + CMAKE_STATIC_LIBRARY_SUFFIX_ + + Instead of making separate, repetitive entries for the _ + variable documentation, we just mention the per-language name in + the text of the platform-wide variable documentation. Internally + we keep undocumented definitions of these properties to satisfy + CMAKE_STRICT mode. + +2009-07-08 13:03 king + + * Source/: cmComputeLinkInformation.cxx, + cmGlobalXCodeGenerator.cxx, cmLocalVisualStudio7Generator.cxx, + cmMakefileExecutableTargetGenerator.cxx, + cmMakefileLibraryTargetGenerator.cxx, cmTarget.cxx, cmTarget.h, + cmVisualStudio10TargetGenerator.cxx: ENH: Pass config to + cmTarget::GetLinkerLanguage + + This passes the build configuration to most GetLinkerLanguage + calls. In the future the linker language will account for + targets linked in each configuration. + +2009-07-08 13:03 king + + * Source/: cmComputeLinkInformation.cxx, + cmGlobalUnixMakefileGenerator3.cxx, cmInstallTargetGenerator.cxx, + cmLocalUnixMakefileGenerator3.cxx, + cmMakefileExecutableTargetGenerator.cxx, + cmMakefileLibraryTargetGenerator.cxx, cmTarget.cxx, cmTarget.h: + ENH: Pass config to cmTarget RPATH install methods + + This passes the build configuration to cmTarget methods + IsChrpathUsed and NeedRelinkBeforeInstall. Later these methods + will use the value. + +2009-07-08 13:03 king + + * Source/cmGlobalXCodeGenerator.cxx: ENH: Use fixed header file + type mapping for Xcode + + This simplifies computation of the lastKnownFileType attribute + for header files in Xcode projects. We now use a fixed mapping + from header file extension to attribute value. The value is just + a hint to the Xcode editor, so computing the target linker + language is overkill. + +2009-07-08 13:03 king + + * Source/: cmDocumentVariables.cxx, cmTarget.cxx: ENH: Do not + compute link language for LOCATION + + The LOCATION property requires the full file name of a target to + be computed. Previously we computed the linker language for a + target to look up variables such as + CMAKE_SHARED_LIBRARY_SUFFIX_. This led to locating all the + source files immediately instead of delaying the search to + generation time. In the future even more computation will be + needed to get the linker language, so it is better to avoid it. + + The _ versions of these variables are undocumented, not set + in any platform file we provide, and do not produce hits in + google. This change just removes the unused feature outright. + +2009-07-08 12:04 king + + * Source/: cmComputeLinkDepends.cxx, cmTarget.cxx, cmTarget.h: ENH: + Introduce cmTarget::LinkImplementation API + + The new method centralizes loops that process raw + OriginalLinkLibraries to extract the link implementation + (libraries linked into the target) for each configuration. + Results are computed on demand and then cached. This simplifies + link interface computation because the default case trivially + copies the link implementation. + +2009-07-08 11:41 king + + * Tests/: Complex/CMakeLists.txt, ComplexOneConfig/CMakeLists.txt, + ComplexRelativePaths/CMakeLists.txt, + Complex/Executable/CMakeLists.txt, + ComplexOneConfig/Executable/CMakeLists.txt, + ComplexRelativePaths/Executable/CMakeLists.txt, + CustomCommand/CMakeLists.txt, Dependency/CMakeLists.txt, + Dependency/Case4/CMakeLists.txt, + ExportImport/Export/CMakeLists.txt, + ExportImport/Import/CMakeLists.txt, FunctionTest/CMakeLists.txt, + LoadCommand/CMakeCommands/CMakeLists.txt, + LoadCommandOneConfig/CMakeCommands/CMakeLists.txt, + MacroTest/CMakeLists.txt, MakeClean/CMakeLists.txt, + Plugin/CMakeLists.txt, Preprocess/CMakeLists.txt, + ReturnTest/CMakeLists.txt, RuntimePath/CMakeLists.txt, + SourceGroups/CMakeLists.txt: ENH: Remove CMAKE_ANSI_CFLAGS from + tests + + As of CMake 2.6 this variable is not defined, and the ANSI flags + for the HP compiler are simply hard-coded in the default C flags. + +2009-07-08 09:14 king + + * Modules/CMakeDetermineCCompiler.cmake: ENH: Identify HP C + compiler + + This compiler does not enable ANSI mode by default. When + identifying the C compiler we try passing -Aa in case it is the + HP compiler. + +2009-07-08 08:31 king + + * Source/: cmTarget.cxx, cmTarget.h: COMP: Pimplize cmTarget + ImportInfo and OutputInfo + + These member structures are accessed only in the cmTarget + implementation so they do not need to be defined in the header. + This cleanup also aids Visual Studio 6 in compiling them. + +2009-07-08 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-07 14:02 alex + + * Source/cmExtraCodeBlocksGenerator.cxx: ENH: get the build type + specific location + + Alex + +2009-07-07 11:30 king + + * Source/cmTarget.cxx: BUG: Do not recompute link interfaces + + The config-to-interface map in cmTarget should use + case-insensitive configuration names. The change avoids + repeating work if the given configuration has a different case + than one already computed. + +2009-07-07 10:57 king + + * Source/cmTarget.cxx: BUG: Fix CMP0003 wrong-config link dir + support + + This fixes a dumb logic error introduced by the centralization of + link interface computation. It prevented link directories from + alternate configurations from getting listed by the OLD behavior + of CMP0003 for targets linked as transitive dependencies. + +2009-07-07 10:56 king + + * Source/cmTarget.h: STYLE: Fix comment on cmTarget::LinkInterface + + The comment had a typo and was longer than necessary. + +2009-07-07 09:45 king + + * Source/: cmComputeLinkDepends.cxx, cmExportFileGenerator.cxx, + cmTarget.cxx, cmTarget.h: ENH: Simplify cmTarget link interface + storage + + This makes the LinkInterface struct a member of cmTarget, + pimplizes the config-to-interface map, and stores interface + instances by value. + +2009-07-07 07:44 king + + * Source/: cmComputeLinkInformation.cxx, + cmGlobalXCodeGenerator.cxx, cmLocalGenerator.cxx, + cmLocalVisualStudio6Generator.cxx, + cmLocalVisualStudio7Generator.cxx, + cmMakefileExecutableTargetGenerator.cxx, + cmMakefileLibraryTargetGenerator.cxx, cmTarget.cxx, cmTarget.h, + cmVisualStudio10TargetGenerator.cxx: ENH: Simpler + cmTarget::GetLinkerLanguage signature + + This method previously required the global generator to be + passed, but that was left from before cmTarget had its Makefile + member. Now the global generator can be retrieved automatically, + so we can drop the method argument. + +2009-07-07 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-06 16:25 king + + * Source/: cmComputeLinkDepends.cxx, cmComputeLinkDepends.h, + cmExportFileGenerator.cxx, cmExportFileGenerator.h, cmTarget.cxx, + cmTarget.h: ENH: Centralize default link interface computation + + When LINK_INTERFACE_LIBRARIES is not set we use the link + implementation to implicitly define the link interface. These + changes centralize the decision so that all linkable targets + internally have a link interface. + +2009-07-06 16:24 king + + * Source/: cmComputeLinkDepends.cxx, cmComputeLinkDepends.h, + cmTarget.cxx, cmTarget.h: ENH: Move CMP0004 check into cmTarget + + This moves code implementing policy CMP0004 into + cmTarget::CheckCMP0004. The implementation is slightly simpler + and can be re-used outside of cmComputeLinkDepends. + +2009-07-06 16:24 king + + * Source/: cmTarget.cxx, cmTarget.h: ENH: Exception safe link + interface computation + + This fixes cmTarget::GetLinkInterface to compute and return the + link interface in an exception-safe manner. We manage the link + interface returned by cmTarget::ComputeLinkInterface using + auto_ptr. + +2009-07-06 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-05 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-04 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-03 10:34 king + + * Source/: cmMakefileExecutableTargetGenerator.cxx, + cmMakefileLibraryTargetGenerator.cxx, + cmMakefileTargetGenerator.cxx: ENH: Pass config to + cmTarget::GetDirectory() + + This teaches the makefile generators to always pass the + configuration name to the cmTarget::GetDirectory method. Later + this will allow per-configuration target output directories, and + it cleans up use of the current API. + +2009-07-03 10:33 king + + * Source/: cmTarget.cxx, cmTarget.h: ENH: Refactor target output + dir computation + + This creates cmTarget::GetOutputInfo to compute, cache, and + lookup target output directory information on a per-configuration + basis. It avoids re-computing the information every time it is + needed. + +2009-07-03 10:33 king + + * Source/cmLocalVisualStudio6Generator.cxx, + Source/cmLocalVisualStudio7Generator.cxx, + Templates/UtilityHeader.dsptemplate: BUG: Avoid + cmTarget::GetDirectory for utilities + + Since utility targets have no main output files like executables + or libraries, they do not define an output directory. This + removes a call to cmTarget::GetDirectory from + cmLocalVisualStudio{6,7}Generator for such targets. + +2009-07-03 10:33 king + + * Source/: cmLocalVisualStudio6Generator.cxx, + cmLocalVisualStudio7Generator.cxx: STYLE: Replace large if() with + named boolean + + In cmLocalVisualStudio{6,7}Generator this replaces a large if() + test with a re-usable result stored in a boolean variable named + accordingly. + +2009-07-03 08:41 king + + * Source/: cmMakefileExecutableTargetGenerator.cxx, + cmMakefileLibraryTargetGenerator.cxx, + cmMakefileTargetGenerator.cxx, cmMakefileTargetGenerator.h: ENH: + Create cmMakefileTargetGenerator::ConfigName + + This member stores the build configuration for which Makefiles + are being generated. It saves repeated lookup of the equivalent + member from cmLocalUnixMakefileGenerator3, making code shorter + and more readable. + +2009-07-03 08:40 king + + * Source/: cmInstallTargetGenerator.cxx, + cmInstallTargetGenerator.h: ENH: Cleanup per-config target + install generation + + This cleans up cmInstallTargetGenerator's code that computes the + build tree location of a target under each configuration. + +2009-07-03 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-02 17:38 david.cole + + * Modules/ExternalProject.cmake: BUG: Allow arbitrary text in + values for some keywords. (And avoid warning that the arbitrary + text is an unknown keyword.) + +2009-07-02 16:13 king + + * Source/CTest/cmCTestTestHandler.cxx: ENH: Reports "Passed" for + WILL_FAIL tests + + Previously tests marked with WILL_FAIL have been reported by + CTest as + + ...............***Failed - supposed to fail + + when they correctly failed. Now we just report ".....Passed" + because there is no reason to draw attention to something that + works as expected. + +2009-07-02 14:14 king + + * Source/: cmGlobalXCodeGenerator.cxx, cmGlobalXCodeGenerator.h: + BUG: Do not generate "global" Xcode config + + Xcode 2.0 and below supported only one configuration, but 2.1 and + above support multiple configurations. In projects for the + latter version we have been generating a "global" set of + buildSettings for each target in addition to the + per-configuration settings. These global settings are not used + by Xcode 2.1 and above, so we should not generate them. + +2009-07-02 14:13 king + + * Source/: cmGlobalXCodeGenerator.cxx, cmGlobalXCodeGenerator.h: + ENH: Simplify Xcode CreateBuildSettings method + + The cmGlobalXCodeGenerator::CreateBuildSettings had the three + arguments productName, productType, and fileType that returned + information used by only one of the call sites. This change + refactors that information into separate methods named + accordingly. + +2009-07-02 14:13 king + + * Source/cmGlobalXCodeGenerator.cxx: ENH: Use logical target names + in Xcode projects + + Previously we named Xcode targets using the output file name from + one of the configurations. This is not very friendly, especially + because it changes with CMAKE_BUILD_TYPE. Instead we should use + the original logical target names for the Xcode target names. + This is also consistent with the way the other IDE generators + work. + +2009-07-02 13:17 david.cole + + * Modules/ExternalProject.cmake: BUG: cmd_set logic was missing + from update and patch steps. Fix it so that UPDATE_COMMAND "" + means "no update step even though this is a CVS/SVN + repository..." + +2009-07-02 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-07-01 14:29 king + + * Tests/CMakeLists.txt: BUG: Skip CTest.Update* for cygwin tools on + Windows + + These tests cannot run with cygwin tools unless testing cygwin + CTest. The version control tools do not understand all Windows + paths. + +2009-07-01 13:48 david.cole + + * Tests/ExternalProject/CMakeLists.txt: BUG: Exclude svn portions + of ExternalProject test when: svn client version is less than 1.2 + or cygwin/non-cygwin mismatch detected -- avoids ExternalProject + test failures on dash5 and dash22-cygwin. Also, non-code change: + allow cvslock through Windows firewall to prevent ExternalProject + test failure on dash1vista32. + +2009-07-01 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-30 09:10 king + + * Source/cmVS10CLFlagTable.h: STYLE: Fix line-too-long style + violation. + +2009-06-30 09:05 king + + * Source/cmDocumentVariables.cxx: BUG: Fix documentation of + CMAKE_CFG_INTDIR + + The documentation of this variable was out-dated and misleading. + See issue #9219. + +2009-06-30 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-29 14:27 alex + + * Source/cmExtraCodeBlocksGenerator.cxx: COMP: don't use + vector::at(), this doesn't seem to exist everyhwere + (http://www.cdash.org/CDash/viewBuildError.php?buildid=366375) + + Alex + +2009-06-29 13:02 king + + * Source/: cmGlobalXCode21Generator.cxx, + cmGlobalXCodeGenerator.cxx, cmGlobalXCodeGenerator.h: ENH: + Generate native Xcode 3.0 and 3.1 projects + + CMake previously generated Xcode project files labeled as + 2.4-compatible by recent versions of Xcode (3.0 and 3.1). It is + better to generate native Xcode 3.0 and 3.1 projects. In + particular, this can improve build times by using the "Build + independent targets in parallel" feature. + + Patch from Doug Gregor. See issue #9216. + +2009-06-29 10:46 david.cole + + * Tests/ExternalProject/CMakeLists.txt: BUG: Avoid running the cvs + portions of the ExternalProject test on non-cygwin builds that + are using cygwin cvs.exe. + +2009-06-29 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-28 09:46 hoffman + + * Source/cmVisualStudio10TargetGenerator.h: ENH: add rest of lib + check + +2009-06-28 08:59 hoffman + + * Source/cmVisualStudio10TargetGenerator.cxx: ENH: fix line length + +2009-06-28 08:06 alex + + * Source/cmConfigureFileCommand.h: STYLE: document #cmakedefine01 + (see #9189 , there's also a test for it in Tests/Complex/ ) + + Alex + +2009-06-28 08:05 alex + + * Source/cmDocumentationFormatterText.cxx: STYLE: don't print the + section name "SingleItem" if the documentation for just a single + item is printed + + Alex + +2009-06-28 05:59 alex + + * Modules/CMakeFindEclipseCDT4.cmake: BUG: recognize system include + paths also when the languages are set to something different from + "C", by resetting them to "C" (#9122) + + Alex + +2009-06-28 04:58 alex + + * Source/cmExtraCodeBlocksGenerator.cxx: ENH: create a "Virtual + Folder" in CodeBlocks, which contains all the cmake files of the + project, i.e. there is now a "CMake Files" folder additionally to + the "Sources", "Headers" and "Others" folders which already + existed. Patch by Daniel Teske. + + Alex + +2009-06-28 04:30 alex + + * Source/cmExtraCodeBlocksGenerator.cxx: ENH: also support nmake + and msvc for use with CodeBlocks under Windows, patch by Daniel + Teske + + Alex + +2009-06-28 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-27 11:17 alex + + * Source/cmDocumentVariables.cxx: STYLE: document + CMAKE_SKIP_INSTALL_ALL_DEPENDENCY variable + + Alex + +2009-06-27 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-26 13:00 david.cole + + * Tests/ExternalProject/: CMakeLists.txt, svnrepo.tgz: BUG: + Downgrade svn repository to be created with an svn 1.2 + installation (rather than 1.4) so that it works (hopefully) with + more svn clients in the wild. Change time stamps of test projects + in CMakeLists.txt to reflect times available in newly created + repository. Add UPDATE_COMMAND "" for checkouts that are + tag-based or date-stamp-based to avoid unnecessary update steps. + +2009-06-26 11:50 hoffman + + * Source/: cmGlobalVisualStudio10Generator.h, cmVS10CLFlagTable.h, + cmVS10LibFlagTable.h, cmVS10LinkFlagTable.h, + cmVisualStudio10TargetGenerator.cxx, cmparseMSBuildXML.py: ENH: + fix line length issues + +2009-06-26 11:32 david.cole + + * Tests/ExternalProject/CMakeLists.txt: ENH: Do not unzip the local + repositories unless CVS and SVN executables are available. Add + 'configure' step to the repository extraction 'projects' to print + the version number of CVS and SVN in the dashboard test/build + output. + +2009-06-26 10:18 hoffman + + * CMakeCPackOptions.cmake.in, + Source/QtDialog/QtDialogCPack.cmake.in: ENH: do not create a + desktop link for CMakeSetup + +2009-06-26 10:00 hoffman + + * Utilities/KWStyle/CMake.kws.xml.in: ENH: 80 is fine, i guess not + +2009-06-26 09:59 hoffman + + * Utilities/KWStyle/CMake.kws.xml.in: ENH: 80 is fine + +2009-06-26 09:55 david.cole + + * Tests/ExternalProject/CMakeLists.txt: ENH: Revise the + ExternalProject test to use local CVS and SVN repositories to + avoid network activity. Also: stop building KWStyle and kwsys as + part of this test to reduce the amount of time spent running the + test. Instead, build TutorialStep1 as retrieved from the new + local repositories with various tags, date stamps and revision + numbers. + +2009-06-26 00:07 hoffman + + * Source/cmVisualStudio10TargetGenerator.cxx: ENH: remove debug + print + +2009-06-26 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-25 22:53 hoffman + + * Source/: cmVisualStudio10TargetGenerator.cxx, + cmVisualStudio10TargetGenerator.h: ENH: add obj file support and + remove a warning + +2009-06-25 16:41 hoffman + + * CompileFlags.cmake, Modules/CMakeVS10FindMake.cmake, + Source/CMakeLists.txt, Source/cmGlobalGenerator.cxx, + Source/cmGlobalVisualStudio10Generator.cxx, + Source/cmGlobalVisualStudio10Generator.h, + Source/cmGlobalVisualStudio71Generator.cxx, + Source/cmListFileLexer.c, Source/cmLocalGenerator.h, + Source/cmLocalVisualStudio10Generator.cxx, + Source/cmLocalVisualStudio10Generator.h, + Source/cmLocalVisualStudio7Generator.h, + Source/cmLocalVisualStudioGenerator.h, Source/cmMakefile.cxx, + Source/cmVS10CLFlagTable.h, Source/cmVS10LibFlagTable.h, + Source/cmVS10LinkFlagTable.h, + Source/cmVisualStudio10TargetGenerator.cxx, + Source/cmVisualStudio10TargetGenerator.h, + Source/cmVisualStudioGeneratorOptions.cxx, + Source/cmVisualStudioGeneratorOptions.h, Source/cmake.cxx, + Source/cmparseMSBuildXML.py, Source/kwsys/ProcessWin32.c: ENH: + first pass at VS 10, can bootstrap CMake, but many tests still + fail + +2009-06-25 16:39 hoffman + + * Source/CTest/cmCTestScriptHandler.cxx: ENH: add reminder comment + +2009-06-25 16:38 hoffman + + * Source/CTest/cmCTestSubmitHandler.cxx: ENH: set an upload speed + limit for ctest + +2009-06-25 12:03 david.cole + + * Tests/ExternalProject/: cvsrepo.tgz, svnrepo.tgz: ENH: Add *.tgz + files of cvs and svn repositories containing the TutorialStep1 + project to test cvs and svn capabilities of ExternalProject + without requiring network activity. + +2009-06-25 10:51 king + + * Tests/CMakeLists.txt: BUG: Fix CTest.UpdateBZR tests to run in + parallel + + The UpdateBZR and UpdateBZR.CLocale tests should run in different + directories so that they can be executed in parallel. + +2009-06-25 09:58 king + + * Source/: cmGlobalUnixMakefileGenerator3.cxx, + cmGlobalUnixMakefileGenerator3.h, + cmLocalUnixMakefileGenerator3.cxx, + cmLocalUnixMakefileGenerator3.h, cmMakefileTargetGenerator.cxx, + cmMakefileTargetGenerator.h: ENH: Cleanup make progress rule + generation code + + This cleans up the Makefile generator's progress rule code. + Instead of keeping every cmMakefileTargetGenerator instance alive + to generate progress, we keep only the information necessary in a + single table. This approach keeps most of the code in + cmGlobalUnixMakefileGenerator3, thus simplifying its public + interface. + +2009-06-25 09:43 king + + * Source/cmLocalUnixMakefileGenerator3.cxx: STYLE: Remove unused + variable + +2009-06-25 08:45 king + + * Modules/: CMakeDetermineFortranCompiler.cmake, + CMakeFortranCompilerId.F.in, CMakeFortranCompilerId.F90.in: ENH: + Identify Fortran compilers with fixed format + + This enhances the Fortran compiler id detection by using a source + that can compile either as free or fixed format. As long as the + compiler knows it should preprocess the source file (.F) the + identification can work. Even free-format compilers may try + fixed-format parsing if the user specifies certain flags, so we + must support both. + +2009-06-25 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-24 16:50 clinton + + * Source/QtDialog/CMakeSetupDialog.cxx: + ENH: Save/restore splitter sizes. Fixes #9070. + +2009-06-24 15:09 king + + * Source/: cmSystemTools.cxx, cmSystemTools.h: ENH: Remove unused + cmSystemTools::RemoveEscapes + + The RemoveEscapes method is no longer used anywhere. All uses of + it have been replaced by a real lexer. We can remove the method. + +2009-06-24 15:03 king + + * Modules/ExternalProject.cmake, + Tests/ExternalProject/CMakeLists.txt: ENH: New + ExternalProject.cmake module interface + + This creates new module ExternalProject.cmake to replace the + prototype AddExternalProject.cmake module. The interface is more + refined, more flexible, and better documented than the prototype. + + This also converts the ExternalProject test to use the new + module. The old module will be removed (it was never in a CMake + release) after projects using it have been converted to the new + module. + +2009-06-24 14:48 king + + * Tests/CMakeLists.txt: BUG: Extend timeout of ExternalProject test + + This test requires a long time on slower machines, so we need to + extend its timeout. It is an important test, so it does not fall + under the CMAKE_RUN_LONG_TESTS option. In the future we should + try to shorten the test by building simpler external projects. + +2009-06-24 13:24 king + + * Source/cmTargetLinkLibrariesCommand.h: ENH: Mention cycles in + target_link_libraries docs + + This documents CMake's support for cycles in the dependency graph + of STATIC libraries. + +2009-06-24 09:36 king + + * Source/: cmMakefile.cxx, cmSourceFile.cxx, cmTarget.cxx: ENH: + Clarify COMPILE_DEFINITIONS separator in docs + + The COMPILE_DEFINITIONS properties are semicolon-separated lists. + Make this clear in the documentation. See issue #9199. + +2009-06-24 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-23 16:40 hoffman + + * Modules/FindBoost.cmake: ENH: boost lib is often found under the + boost include dir + +2009-06-23 16:31 hoffman + + * Modules/FindBoost.cmake: ENH: add additional place to look for + boost so it works out of the box on windows + +2009-06-23 12:58 martink + + * Tests/Tutorial/: Step5/MathFunctions/MakeTable.cxx, + Step6/MathFunctions/MakeTable.cxx, + Step7/MathFunctions/MakeTable.cxx: ENH: fix spelling mistake + +2009-06-23 09:06 king + + * Source/CTest/cmCTestCVS.cxx: BUG: Fix CVS update parsing for + TortoiseCVS + + The TortoiseCVS version of cvs.exe includes the '.exe' in cvs + update messages for files removed from the repository. This + change accounts for it in the regular expressions that match such + lines. Now removed files are properly reported by ctest_update() + when using TortoiseCVS. + +2009-06-23 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-22 16:25 king + + * Tests/: CMakeLists.txt, CTestUpdateCVS.cmake.in: ENH: Auto-enable + CTest.UpdateCVS test on Windows + + The test needs to create a cvs repository with 'cvs init', but + the CVSNT client on Windows needs 'cvs init -n' to avoid + administrator access. Previously we required users to explicitly + enable CTEST_TEST_UPDATE_CVS to activate the test on Windows. + + This teaches the test to use the '-n' option when necessary. Now + we can enable the test in all cases except when trying to use a + cygwin cvs.exe without cygwin paths. + +2009-06-22 14:19 king + + * Source/kwsys/Configure.h.in: COMP: Quiet aggressive Borland + warnings in KWSys + + This disables Borland warning 8027 while compiling KWSys source + files. It provides no useful information. + +2009-06-22 14:19 king + + * Source/kwsys/SystemTools.cxx: COMP: Remove useless variable + assignment + + This removes an assignment whose result is never used, thus + quieting a warning from Borland. + +2009-06-22 10:02 hoffman + + * Modules/CMakeTestCCompiler.cmake: BUG: remove warning in test of + compiler so -Werror does not fail + +2009-06-22 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-21 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-20 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-19 17:09 king + + * Modules/Platform/HP-UX.cmake: BUG: Look in arch-specific HPUX + implicit link dirs + + On HP-UX machines some system libraries appear in + architecture-specific implicit linker search paths. We need to + add these paths to our system library search path. However, at + the time we construct the search path we do not know the target + architecture. + + A full solution requires re-organizing platform configuration + files so that the target architecture can be known when needed. + Until that happens we can avoid the problem by searching in both + 32-bit and 64-bit implicit link directories. By telling CMake + that they are implicit directories the generated link lines will + never pass the paths, leaving the linker free to find the library + of the proper architecture even if the find_library call finds + the wrong one. + +2009-06-19 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-18 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-17 14:18 king + + * Source/cmPolicies.cxx: ENH: Improve CMP0012 doc and message + formatting + + This fixes the CMP0012 description to have a one-line summary in + the 'brief' section and the rest of the explanation in the 'full' + section. It makes the warning message shorter and improves + formatting of the policy documentation, especially in the HTML + pages. The convention is already used by all other policies. + +2009-06-17 14:18 king + + * Source/cmIfCommand.cxx: ENH: Improve format of if() command + messages + + Errors and warnings from the if() command always display the + argument list given to the command followed by an explanation of + the problem. This moves the argument list into a pre-formatted + block and follows it with a paragraph-form explanation. The + result looks cleaner. + +2009-06-17 13:40 king + + * Source/: cmMakefile.cxx, cmMakefile.h, cmPolicies.cxx, + cmPolicies.h: ENH: Create CMP0013 to disallow duplicate dirs + + In CMake 2.6.3 and below we silently accepted duplicate build + directories whose build files would then conflict. At first this + was considured purely a bug that confused beginners but would not + be used in a real project. In CMake 2.6.4 we explicitly made it + an error. + + However, some real projects took advantage of this as a "feature" + and got lucky that the subtle build errors it can cause did not + occur. Therefore we need a policy to deal with the case more + gracefully. See issue #9173. + +2009-06-17 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-16 11:57 king + + * Source/cmLocalVisualStudio6Generator.cxx: BUG: Create an exe's + implib output dir for VS 6 + + VS 6 forgets to create the output directory for an executable's + import library in case the exe dllexport-s symbols. We work + around this VS bug by creating a pre-link event on the executable + target to make the directory. + +2009-06-16 11:57 king + + * Source/: cmLocalVisualStudio6Generator.cxx, + cmLocalVisualStudio6Generator.h: ENH: Refactor VS 6 build event + generation + + In cmLocalVisualStudio6Generator we generate pre-build, pre-link, + and post-build events into project files. This refactors the + generation code for the three event types into a private + EventWriter class to avoid duplicate code. + +2009-06-16 11:44 king + + * Source/cmLocalVisualStudio7Generator.cxx: ENH: Create exe implib + dir in VS pre-link rule + + This moves creation of an executable's import library directory + in VS projects from the pre-build step to the pre-link step. It + makes sense to create the directory at the last moment. + +2009-06-16 11:44 king + + * Source/: cmLocalVisualStudio7Generator.cxx, + cmLocalVisualStudio7Generator.h, + cmLocalVisualStudioGenerator.cxx, cmLocalVisualStudioGenerator.h: + ENH: Generalize exe implib dir creation for VS + + In VS 7,8,9 executable targets we generate a build event to + create the output directory for the import library in case the + executable marks symbols with dllexport (VS forgets to create + this directory). This generalizes computation of the custom + command line to support future use with other VS versions. + +2009-06-16 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-15 16:12 king + + * Source/: cmDefinePropertyCommand.cxx, cmDefinePropertyCommand.h: + ENH: Simplify docs args for define_property + + This teaches the define_property command signature to accept + multiple arguments after the BRIEF_DOCS and FULL_DOCS keywords. + We append the arguments together, making specification of long + documentation easier. + +2009-06-15 14:22 hoffman + + * Source/CTest/cmCTestBuildAndTestHandler.cxx: STYLE: fix warning + +2009-06-15 13:51 hoffman + + * Source/CTest/cmCTestBuildAndTestHandler.cxx: BUG: fix crash when + running ctest coverage for VTK + +2009-06-15 13:22 hoffman + + * Modules/FindOpenGL.cmake: ENH: add path for 64 bit on old hp + +2009-06-15 13:17 hoffman + + * Modules/Platform/HP-UX.cmake: ENH: put the 64 bit paths first + +2009-06-15 12:39 hoffman + + * Modules/: Platform/HP-UX.cmake, FindOpenGL.cmake: ENH: add more + search paths on HPUX + +2009-06-15 12:33 martink + + * Source/cmPolicies.cxx: COMP: fix line length + +2009-06-15 10:55 king + + * Source/cmLocalVisualStudio7Generator.cxx, + Source/cmLocalVisualStudio7Generator.h, + Tests/Plugin/CMakeLists.txt: BUG: Create an exe's implib output + dir for VS + + If an executable marks symbols with __declspec(dllexport) then VS + creates an import library for it. However, it forgets to create + the directory that will contain the import library if it is + different from the location of the executable. We work around + this VS bug by creating a pre-build event on the executable + target to make the directory. + +2009-06-15 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-14 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-13 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-12 15:44 king + + * Source/kwsys/ProcessUNIX.c: COMP: Do not compile VMS-specific + code on non-VMS + + This helps avoid fixing VMS-specific code for non-VMS compilers + where it isn't needed anyway. + +2009-06-12 15:28 king + + * Source/: cmLocalVisualStudio7Generator.cxx, + cmLocalVisualStudio7Generator.h: ENH: Refactor VS 7,8,9 build + event generation + + In cmLocalVisualStudio7Generator we generate pre-build, pre-link, + and post-build events into project files. This refactors the + generation code for the three event types into a private + EventWriter class to avoid duplicate code. + +2009-06-12 13:33 fbertel + + * Source/kwsys/ProcessUNIX.c: COMP:Fixed warning with gcc 4.3.3: + passing argument 1 of kwsysProcessSetVMSFeature discards + qualifiers from pointer target type. + +2009-06-12 13:25 martink + + * Source/: cmIfCommand.h, cmPolicies.cxx: ENH: clean up some help + text + +2009-06-12 11:10 martink + + * Source/cmIfCommand.cxx: ENH: warning fix + +2009-06-12 11:05 king + + * Source/cmStandardIncludes.h: COMP: Block warnings in Borland + system headers + + In Release builds the Borland compiler warns about code in its + own system headers. This blocks the warnings by disabling them + where the headers are included. + +2009-06-12 10:46 king + + * Source/: cmDependsFortranParser.cxx, cmDependsFortranParser.y, + cmDependsFortranParserTokens.h: ENH: Use KWSys String strcasecmp + to parse Fortran + + This replaces the Fortran dependency parser source's custom + strcasecmp implementation with one from KWSys String. It removes + duplicate code and avoids a Borland warning about inlining + functions with 'while'. + +2009-06-12 10:46 king + + * Source/kwsys/String.c: COMP: Avoid double-initialization in KWSys + String + + The KWSys String implementation of strcasecmp initialized + 'result' immediately before assigning to it. Borland produces a + warning in this case, so this commit removes the extra + initialization. + +2009-06-12 10:46 king + + * Source/: cmDependsFortranLexer.cxx, cmDependsFortranLexer.in.l: + COMP: Remove useless assignment in Fortran lexer + + The generated Fortran dependency scanning lexer includes an + assignment to a local variable that is unused. Borland warns, so + we remove the assignment. + +2009-06-12 10:07 martink + + * Source/: cmIfCommand.cxx, cmIfCommand.h, cmPolicies.cxx, + cmPolicies.h, cmWhileCommand.cxx: ENH: modified the if command to + address bug 9123 some + +2009-06-12 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-11 15:25 hoffman + + * Modules/Platform/OpenVMS.cmake, Source/kwsys/SystemTools.cxx: + ENH: use .exe on vms + +2009-06-11 15:18 king + + * CMakeLists.txt: COMP: We now require CMake 2.4.5 or higher to + build + + We use the CMakeDependentOption module unconditionally, so we + must require a version of CMake new enough to provide it. + +2009-06-11 14:57 king + + * Source/cmComputeLinkInformation.cxx: BUG: Do not create empty + build-tree RPATH + + The fix for issue #9130 appends ':' to the end of the build-tree + RPATH unconditionally. This changes the fix to add ':' only when + the RPATH is not empty so that we do not create a build-tree + RPATH with just ':'. An empty RPATH produces no string at all, + so there is no chance of merging with a symbol name anyway. + +2009-06-11 11:24 king + + * CMakeLists.txt, CTestCustom.cmake.in, + Source/CTest/cmCTestSubmitHandler.cxx, + Utilities/cmThirdParty.h.in, Utilities/cm_xmlrpc.h: ENH: Disable + the xmlrpc drop method by default + + We've chosen to drop our default dependence on xmlrpc. Thus we + disable the corresponding CTest submission method and remove the + sources for building xmlrpc locally. Users can re-enable the + method by setting the CTEST_USE_XMLRPC option to use a + system-installed xmlrpc library. + +2009-06-11 09:04 king + + * CMakeLists.txt, Utilities/cmThirdParty.h.in, Utilities/cm_curl.h: + ENH: Remove option to build cmcurl-7.19.0 + + This version of curl was added experimentally but does not + address the problem we were hoping it fixed (an occasional upload + hang). Importing a new curl can wait until the problem is fully + diagnosed and addressed. + +2009-06-11 09:04 king + + * CMakeLists.txt: ENH: Simplify decision to use system libraries + + Previously we disallowed use of system libraries if + FindXMLRPC.cmake was not available. Now that CMake 2.4 is + required to build, the module is always available. This change + simplifies the logic accordingly. + +2009-06-11 09:03 king + + * Source/cmXMLParser.cxx: COMP: Fix build with system-installed + expat 2.0.1 + + In cmXMLParser::ReportXmlParseError we were accidentally passing + a value of type 'XML_Parser*' to expat methods instead of + 'XML_Parser'. It was not caught because XML_Parser was just + 'void*' in the cmexpat version. Newer system-installed expat + versions catch the error because XML_Parser is now a pointer to a + real type. This correct the type. + +2009-06-11 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-10 14:11 king + + * Source/cmComputeLinkInformation.cxx: BUG: Do not mangle symbols + when editing RPATHs + + In ELF binaries the .dynstr string table is used both for the + RPATH string and for program symbols. If a symbol name happens + to match the end of the build-tree RPATH string the linker is + allowed to merge the symbols. + + We must not allow this when the RPATH string will be replaced + during installation because it will mangle the symbol. Therefore + we always pad the end of the build-tree RPATH with ':' if it will + be replaced. Tools tend not to use ':' at the end of symbol + names, so it is unlikely to conflict. See issue #9130. + +2009-06-10 14:11 king + + * Source/cmDocumentVariables.cxx: ENH: Document variable + CMAKE_NO_BUILTIN_CHRPATH + + This adds documentation for the variable which was previously + missing. See issue #9130. + +2009-06-10 13:39 king + + * bootstrap: BUG: Fix bootstrap for Debian Almquist Shell + + The Debian Almquist Shell (dash) provides minimal POSIX + compliance instead of the power of bash. It converts literal + '\n' to a real newline even in a single-quoted string. This + works around the problem by avoiding the literal. We can no + longer use HEREDOC. + +2009-06-10 13:04 king + + * bootstrap: ENH: Make bootstrap script work on VMS bash + + A few sweeping changes were needed: + + - Avoid use of HEREDOC, which does not seem to work. + - Avoid extra '.' in paths by using '_cmk' and '_tmp' + instead of '.cmk' and '.tmp'. + +2009-06-10 13:04 king + + * Modules/Platform/OpenVMS.cmake, + Source/cmGlobalUnixMakefileGenerator3.cxx: ENH: Enable basic + OpenVMS platform support + + This adds the Modules/Platform/OpenVMS.cmake platform file for + OpenVMS. We just use Unix-like rules to work with the GNV + compiler front-end. + + A problem with process execution currently prevents CMake link + scripts from working, so we avoid using them. + +2009-06-10 13:03 king + + * Source/cmLocalUnixMakefileGenerator3.cxx: ENH: Skip 'SHELL = + /bin/sh' in Makefiles on VMS + + This shell does not exist on VMS, so we leave it out. + +2009-06-10 13:03 king + + * Source/: cmGeneratedFileStream.cxx, + cmLocalUnixMakefileGenerator3.cxx, cmTarget.cxx: ENH: On VMS use + _dir and _tmp, not .dir and .tmp + + The VMS posix path emulation does not handle multiple '.' + characters in file names in all cases. This avoids adding extra + '.'s to file and directory names for target directories and + generated files. + +2009-06-10 13:02 king + + * Source/kwsys/SystemTools.cxx: ENH: Teach KWSys SystemTools about + VMS paths + + This teaches ConvertToUnixSlashes to convert VMS paths into + posix-style paths. We also set the DECC$FILENAME_UNIX_ONLY + feature so the process always sees posix-style paths on disk. + +2009-06-10 13:02 king + + * Source/cmGlobalUnixMakefileGenerator3.cxx: BUG: Avoid std::unique + algorithm on VMS + + The Compaq compiler's std::unique algorithm followed by deletion + of the extra elements seems to crash. For now we'll accept the + duplicate dependencies on this platform. + +2009-06-10 11:49 king + + * Utilities/cmtar/extract.c: COMP: Fix cmtar build on VMS + + The mknod and mkfifo functions are not available on VMS. + +2009-06-10 11:49 king + + * Utilities/cmcurl/setup.h: COMP: Fix cmcurl build on VMS + + This defines IOCTL_3_ARGS in 'cmcurl/setup.h' to teach curl + sources about the three-argument ioctl() on VMS. + +2009-06-10 11:49 king + + * Utilities/cmtar/: append.c, decode.c, extract.c, libtar.c, + util.c, wrapper.c: COMP: Use HAVE_SYS_PARAM_H properly in libtar + + The value is computed by a try-compile for libtar. This teaches + the sources to actually use the result. + +2009-06-10 11:48 king + + * Source/kwsys/ProcessUNIX.c: ENH: Teach KWSys Process basic VMS + support + + This achieves basic process execution on OpenVMS. We use + work-arounds for different fork()/exec() behavior and a lack of + select(). + + VMS emulates fork/exec using setjmp/longjmp to evaluate the child + and parent return cases from fork. Therefore both must be + invoked from the same function. + + Since select() works only for sockets we use the BeOS-style + polling implementation. However, non-blocking reads on empty + pipes cannot be distinguished easily from the last read on a + closed pipe. Therefore we identify end of data by an empty read + after the child terminates. + +2009-06-10 11:46 king + + * Source/kwsys/ProcessUNIX.c: BUG: Fix non-select process impl + without timeout + + This avoids use of an uninitialized value in the KWSys + ProcessUNIX polling implementation when no timeout is given. + +2009-06-10 11:46 king + + * Source/kwsys/CMakeLists.txt, bootstrap, Source/kwsys/String.c, + Source/kwsys/kwsysPrivate.h: COMP: Avoid String.c inclusion by + Compaq templates + + The Compaq compiler (on VMS) includes 'String.c' in source files + that use the stl string while looking for template definitions. + This was the true cause of double-inclusion of the + 'kwsysPrivate.h' header. We work around the problem by + conditionally compiling the entire source file on a condition + only true when really building the source. + +2009-06-10 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-09 15:58 hoffman + + * Source/cmStandardIncludes.h: STYLE: suppress warnings for borland + +2009-06-09 15:44 hoffman + + * Source/kwsys/testAutoPtr.cxx: STYLE: suppress warnings for + borland + +2009-06-09 15:18 hoffman + + * Source/: cmStandardIncludes.h, kwsys/hashtable.hxx.in, + kwsys/testAutoPtr.cxx: STYLE: suppress warnings for borland + +2009-06-09 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-08 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-07 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-06 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-05 14:59 partyd + + * Source/kwsys/hashtable.hxx.in: COMP: Hopefully fix hashmap on + VS6, Thanks Brad K! + +2009-06-05 13:17 hoffman + + * Source/kwsys/SystemTools.cxx: ENH: fix warning on borland + +2009-06-05 12:01 hoffman + + * Source/: cmSystemTools.cxx, cmSystemTools.h, + kwsys/SystemTools.hxx.in, kwsys/SystemTools.cxx: ENH: move PutEnv + to SystemTools + +2009-06-05 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-04 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-03 15:08 king + + * Modules/Platform/HP-UX.cmake, + Source/cmComputeLinkInformation.cxx, + Source/cmDocumentVariables.cxx: BUG: Recognize .so shared + libraries on HP-UX + + HP-UX uses both .sl and .so as extensions for shared libraries. + This teaches CMake to recognize .so shared libraries so they are + treated properly during link dependency analysis. + +2009-06-03 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-02 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-06-01 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-31 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-30 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-29 16:09 alex + + * Modules/CPackRPM.cmake: BUG: fix #9031: newer rpm versions + complain about the "#%" lines + + Alex + +2009-05-29 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-28 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-27 11:33 king + + * Modules/Platform/CYGWIN.cmake, bootstrap: ENH: Auto-import + symbols for cygwin executables + + This enables the --enable-auto-import linker flag on Cygwin when + linking executables. It works with the old gcc 3.x compiler and + is necessary for the new gcc 4.x compiler. See issue #9071. + +2009-05-27 11:14 hoffman + + * Source/CTest/cmCTestMemCheckHandler.cxx: BUG: fix for bug #8153 + add purify suppression file and fix output to not be one big line + +2009-05-27 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-26 09:55 david.cole + + * Modules/: CMakeVS8FindMake.cmake, CMakeVS9FindMake.cmake: BUG: + Rearrange paths to find correct installations of Visual Studio. + Patch devenv.modified_search_order.patch came from issue #7919. + +2009-05-26 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-25 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-24 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-23 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-22 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-21 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-20 09:50 hoffman + + * Source/kwsys/SystemInformation.cxx: ENH: make this work for older + versions of OSX + +2009-05-20 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-19 21:50 hoffman + + * Source/kwsys/SystemInformation.cxx: ENH: revert back because it + does not build on older macs for now + +2009-05-19 16:56 hoffman + + * Source/kwsys/SystemInformation.cxx: ENH: remove warning + +2009-05-19 16:46 hoffman + + * Source/kwsys/SystemInformation.cxx: ENH: make this build on other + machines besides the mac + +2009-05-19 16:35 hoffman + + * Source/kwsys/: SystemInformation.cxx, testSystemInformation.cxx: + ENH: fix system info for mac + +2009-05-19 11:38 clinton + + * Modules/FindQt4.cmake: ENH: Better error message for those who + switch from Qt3 to Qt4 and don't clean their cache file. + +2009-05-19 11:25 hoffman + + * Source/cmCoreTryCompile.cxx: BUG: fix for #0009051 CMake does not + pass CMAKE_OSX_SYSROOT and CMAKE_OSX_DEPLOYMENT_TARGET when + running TRY_COMPILE + +2009-05-19 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-18 15:27 alex + + * Source/cmFindFileCommand.cxx: STYLE: fix docs: it must replace + "find_path" instead of "FIND_PATH" with "find_file", otherwise + the docs talk about find_path() instead of find_file (patch from + Michael Wild, #9047) + + Alex + +2009-05-18 10:34 king + + * Source/CTest/cmCTestBZR.cxx, Tests/CMakeLists.txt: BUG: Parse + more bzr xml output encodings + + The BZR xml output plugin can use some encodings that are not + recognized by expat, which leads to "Error parsing bzr log xml: + unknown encoding". This works around the problem by giving expat + a mapping, and adds a test. Patch from Tom Vercauteren. See + issue #6857. + +2009-05-18 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-17 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-16 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-15 15:39 king + + * Modules/CTest.cmake, Source/CTest/cmCTestSubmitCommand.cxx: ENH: + Remove CTest public.kitware.com drop default + + Previously CTest would drop dashboard submissions at + public.kitware.com on the PublicDashboard project if there was no + configuration. The server no longer supports forwarding to + cdash.org, so there is no point in this default. Furthermore, + there should be no default at all because it could leak + information about proprietary projects that are not configured + correctly. + +2009-05-15 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-14 16:13 king + + * Modules/CTest.cmake, Source/CMakeLists.txt, + Source/CTest/cmCTestBZR.cxx, Source/CTest/cmCTestBZR.h, + Source/CTest/cmCTestUpdateCommand.cxx, + Source/CTest/cmCTestUpdateHandler.cxx, + Source/CTest/cmCTestUpdateHandler.h, Tests/CMakeLists.txt, + Tests/CTestUpdateBZR.cmake.in: ENH: Teach CTest to handle Bazaar + repositories + + This creates cmCTestBZR to drive CTest Update handling on + bzr-based work trees. Currently we always update to the head of + the remote tracking branch (bzr pull), so the nightly start time + is ignored for Nightly builds. A later change will address this. + Patch from Tom Vercauteren. See issue #6857. + +2009-05-14 15:31 alex + + * Modules/CPackRPM.cmake: STYLE: add documentation for CPackRPM + (#9029) + + Alex + +2009-05-14 09:27 king + + * Source/cmDocumentVariables.cxx: ENH: Make + CMAKE__SIZEOF_DATA_PTR public + + The variable was previously documented for internal-use only. + This officially documents it for general use by projects. + +2009-05-14 09:27 king + + * Source/kwsys/kwsysPrivate.h: STYLE: Simplify and document VMS + workarounds + + The kwsysPrivate header double-inclusion check hits a false + positive on VMS for an undetermined reason. This simplifies the + workaround and documents it. + +2009-05-14 09:26 king + + * Source/kwsys/kwsysPrivate.h: STYLE: Remove trailing whitespace + +2009-05-14 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-13 11:08 hoffman + + * Source/: cmForEachCommand.cxx, cmWhileCommand.cxx: BUG: fix for + #9014, FATAL_ERROR not ending loops + +2009-05-13 10:30 king + + * Source/kwsys/SystemTools.cxx: BUG: Fix removal of read-only + directories + + Read-only directories must be given write permission before we + can remove files and subdirectories from them. + +2009-05-13 10:30 king + + * Tests/StringFileTest/CMakeLists.txt: BUG: file(COPY) test should + not make read-only dir + + CMake directory removal code cannot remove content from read-only + directories (a separate bug which will be fixed). Therefore we + should not create them in the StringFileTest. This tweaks the + file(COPY) call to test not giving OWNER_WRITE to files rather + than directories. + +2009-05-13 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-12 15:17 alex + + * Modules/: CMakeEclipseCDT4.cmake, CMakeCodeBlocks.cmake, + CMakeKDevelop3.cmake: STYLE: remove these files now that I added + them with a more consistent name as CMakeFind.cmake + (should have been in the same commit...) + + Alex + +2009-05-12 15:13 alex + + * Modules/CPackRPM.cmake: BUG: apply patch from Eric Noulard, so + cpack works with rpmbuild 4.6.0, #8967 + + Alex + +2009-05-12 15:11 alex + + * Modules/: CMakeFindCodeBlocks.cmake, CMakeFindEclipseCDT4.cmake, + CMakeFindKDevelop3.cmake, CMakeLists.txt, + CMakeSystemSpecificInformation.cmake: STYLE: rename the files + from CMake.cmake to CMakeFind.cmake, so it + is more consistent e.g. with CMakeFindXcode.cmake + + Alex + +2009-05-12 15:06 king + + * Readme.txt: STYLE: Remove trailing whitespace + +2009-05-12 15:03 king + + * cmake.1: BUG: Remove manual man-page from CMake-SourceFile2-b + branch + +2009-05-12 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-11 13:58 king + + * Source/cmCTest.cxx: COMP: Avoid operator precedence warning + + GCC warns that parens should be used for nested and/or operators. + +2009-05-11 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-10 16:07 alex + + * Source/cmSetCommand.cxx: STYLE: cacheStart is used only locally + in the if-branch + + Alex + +2009-05-10 06:01 alex + + * Modules/CTest.cmake: STYLE: first lower-casing the string makes + comparing its contents easier + + Alex + +2009-05-10 06:00 alex + + * Modules/: CMakeCodeBlocks.cmake, CMakeEclipseCDT4.cmake, + CMakeKDevelop3.cmake, CMakeSystemSpecificInformation.cmake: ENH: + move the code which queries gcc for the system include dirs from + CMakeSystemSpecificInformation.cmake into a separate file, + CMakeEclipseCDT4.cmake -if CMAKE_EXTRA_GENERATOR is set, i.e. + either CodeBlocks or KDevelop3 or EclipseCDT4, load a matching + cmake script file, which can do things specific for this + generator - added such files for Eclipse, KDevelop and + CodeBlocks, one thing they all do is they try to find the + respective IDE and store it in the + CMAKE_(KDEVELOP3|CODEBLOCKS|ECLIPSE)_EXECUTABLE variable. This + could be used by cmake-gui to open the project it just generated + with the gui (not sure this is possible with eclipse). + + Alex + +2009-05-10 05:29 alex + + * Source/cmGlobalUnixMakefileGenerator3.cxx: BUG: don't report + changed compiler variables if the path to the compiler differs + only e.g. a double slash somewhere instead only one slash as + directory separator (#8890) + + Alex + +2009-05-10 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-09 17:25 alex + + * Source/cmDocumentVariables.cxx: STYLE: document + CMAKE_INCLUDE_CURRENT_DIR + + Alex + +2009-05-09 08:15 alex + + * Modules/: CMakeVS8FindMake.cmake, CMakeVS9FindMake.cmake: ENH: + when cross compiling, e.g. for WinCE, don't use VCExpress, since + this doesn't support it This is the first patch to add support + for WinCE to cmake (#7919) + + Alex + +2009-05-09 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-08 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-07 18:22 hoffman + + * Source/ctest.cxx: ENH: add docs for command line ctest + +2009-05-07 18:20 hoffman + + * Source/cmCTest.cxx: BUG: 8898 fix date in ctest nightly time + +2009-05-07 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-06 11:21 clinton + + * Modules/FindQt4.cmake: BUG: Fix spaces in file paths for lupdate + command + +2009-05-06 09:42 clinton + + * Modules/: FindQt4.cmake, UseQt4.cmake: + ENH: Add support for QtScriptTools in Qt 4.5. + +2009-05-06 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-05 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-04 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-03 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-02 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-05-01 10:39 king + + * Source/: cmTarget.cxx, cmTarget.h: ENH: Remove cmTarget internal + type arguments + + Internally cmTarget was passing the target type in several name + computation signatures to support computation of both shared and + static library names for one target. We no longer need to + compute both names, so this change simplifies the internals by + using the GetType method and dropping the type from method + signatures. + +2009-05-01 10:39 king + + * Source/: cmMakefileExecutableTargetGenerator.cxx, cmTarget.cxx, + cmTarget.h: ENH: Remove cmTarget::GetExecutableCleanNames + + This method was redundant with GetExecutableNames. + +2009-05-01 10:38 king + + * Source/cmMakefileLibraryTargetGenerator.cxx, + Source/cmSetTargetPropertiesCommand.h, Source/cmTarget.cxx, + Source/cmTarget.h, Tests/Complex/Library/CMakeLists.txt, + Tests/ComplexOneConfig/Library/CMakeLists.txt, + Tests/ComplexRelativePaths/Library/CMakeLists.txt: ENH: Always + imply CLEAN_DIRECT_OUTPUT target prop + + This property was left from before CMake always linked using full + path library names for targets it builds. In order to safely + link with "-lfoo" we needed to avoid having both shared and + static libraries in the build tree for targets that switch on + BUILD_SHARED_LIBS. This meant cleaning both shared and static + names before creating the library, which led to the creation of + CLEAN_DIRECT_OUTPUT to disable the behavior. + + Now that we always link with a full path we do not need to clean + old library names left from an alternate setting of + BUILD_SHARED_LIBS. This change removes the CLEAN_DIRECT_OUTPUT + property and instead uses its behavior always. It removes some + complexity from cmTarget internally. + +2009-05-01 09:45 king + + * Source/cmTarget.cxx, Source/cmTarget.h, + Tests/ExportImport/Export/CMakeLists.txt, + Tests/SimpleInstall/CMakeLists.txt, + Tests/SimpleInstallS2/CMakeLists.txt: ENH: Allow more + specification of target file names + + This creates target properties ARCHIVE_OUTPUT_NAME, + LIBRARY_OUTPUT_NAME, and RUNTIME_OUTPUT_NAME, and + per-configuration equivalent properties + ARCHIVE_OUTPUT_NAME_, LIBRARY_OUTPUT_NAME_, and + RUNTIME_OUTPUT_NAME_. They allow specification of target + output file names on a per-type, per-configuration basis. For + example, a .dll and its .lib import library may have different + base names. + + For consistency and to avoid ambiguity, the old + _OUTPUT_NAME property is now also available as + OUTPUT_NAME_. + + See issue #8920. + +2009-05-01 09:45 king + + * Source/: cmTarget.cxx, cmTarget.h: ENH: Refactor target output + file type computation + + This creates method cmTarget::GetOutputTargetType to compute the + output file type 'ARCHIVE', 'LIBRARY', or 'RUNTIME' from the + platform and target type. It factors out logic from the target + output directory computation code for later re-use. + +2009-05-01 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-30 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-29 15:07 king + + * Modules/UntarFile.cmake: ENH: Teach UntarFile to preserve file + timestamps + + After extracting the tarball in a temporary directory we copy the + tree to the destination directory. The 'cmake -E copy_directory' + command does not preserve file timestamps, so we use file(COPY) + instead. + +2009-04-29 14:50 king + + * Source/cmFileCommand.cxx: COMP: Avoid unused arg warnings in + cmFileCommand + + The default cmFileCopier::ReportCopy implementation is empty, so + we should leave out the argument names. + +2009-04-29 14:20 king + + * Source/CTest/cmCTestCVS.cxx: BUG: Remove '-d )" to rename + a file or directory within a single disk volume. + +2009-04-15 09:57 king + + * Source/: cmGeneratedFileStream.cxx, cmSystemTools.cxx, + cmSystemTools.h: ENH: Move RenameFile to cmSystemTools + + This moves the cmGeneratedFileStream::RenameFile method + implementation into cmSystemTools. It works only within a single + filesystem volume, but is atomic when the operating system + permits. + +2009-04-15 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-14 09:35 king + + * Source/kwsys/: Base64.h.in, Configure.h.in, Configure.hxx.in, + FundamentalType.h.in, MD5.h.in, Process.h.in, String.h.in, + System.h.in, Terminal.h.in: ENH: Skip KWSys name maros in case of + identity + + All KWSys C symbol names begin with the KWSYS_NAMESPACE defined + at configuration time. For ease of editing we write canonical + names with the prefix 'kwsys' and use macros to map them to the + configured prefix at preprocessing time. In the case of + standalone KWSys, the prefix is 'kwsys', so the macros were + previously defined to their own names. + + We now skip defining the macros in the identity case so that the + final symbol names are never themselves macros. This will allow + the symbols to be further transformed behind the scenes to help + linkers in special cases on some platforms. + +2009-04-14 00:50 lowman + + * Modules/CMakeDetermineVSServicePack.cmake: ENH: New function for + determining Visual Studio service pack + +2009-04-14 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-13 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-12 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-11 09:29 hoffman + + * Source/CTest/cmCTestSubmitHandler.cxx: ENH: remove warning and + improve message + +2009-04-11 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-10 13:00 hoffman + + * Source/CTest/cmCTestSubmitHandler.cxx: ENH: remove cerr call + +2009-04-10 12:15 hoffman + + * Modules/DartConfiguration.tcl.in, + Source/CTest/cmCTestSubmitHandler.cxx: ENH: add ability to + control ssl cert checking + +2009-04-10 11:59 hoffman + + * CMakeLists.txt, Utilities/cmcurl/CMakeLists.txt: ENH: allow for + shared build of libcurl and fix build with openssl option (ssl + tested on linux and windows + +2009-04-10 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-09 13:56 king + + * Modules/AddExternalProject.cmake, + Tests/ExternalProject/CMakeLists.txt, + Tests/ExternalProject/Step1Patch.cmake: ENH: Allow lists in + AddExternalProject arguments + + The add_external_project function separates its arguments with + ';' separators, so previously no command line argument could + contain one. When specifying CMAKE_ARGS, some -D argument values + may need to contain a semicolon to form lists in the external + project cache. + + This adds add_external_project argument LIST_SEPARATOR to specify + a list separator string. The separator is replaced by ';' in + arguments to any command created to drive the external project. + For example: + + add_external_project(... + LIST_SEPARATOR :: + CMAKE_ARGS -DSOME_LIST:STRING=A::B::C + ...) + + passes "-DSOME_LIST:STRING=A;B;C" to CMake for the external + project. + +2009-04-09 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-08 16:29 king + + * Source/cmTarget.cxx, Tests/ExportImport/Export/CMakeLists.txt, + Tests/ExportImport/Export/testLib5.c, + Tests/ExportImport/Import/A/CMakeLists.txt, + Tests/ExportImport/Import/A/imp_testExe1.c: ENH: Allow + IMPORTED_IMPLIB w/o IMPORTED_LOCATION + + Linking to a Windows shared library (.dll) requires only its + import library (.lib). This teaches CMake to recognize SHARED + IMPORTED library targets that set only IMPORTED_IMPLIB and not + IMPORTED_LOCATION. + +2009-04-08 16:28 king + + * Source/cmTarget.cxx: BUG: Fix imported target config guess + + When an IMPORTED target provides no generic configuration and no + match for a desired configuration then we choose any available + configuration. This change corrects the choice when the first + listed available configuration does not really have a location. + +2009-04-08 09:22 king + + * Tests/: CTestUpdateCVS.cmake.in, CTestUpdateSVN.cmake.in: ENH: + Teach Update* tests to report local mod step + + The CTest.UpdateCVS/SVN tests report every step with a message. + This adds a message for the local modification step. + +2009-04-08 09:21 king + + * Tests/CTestUpdateCVS.cmake.in: ENH: Make UpdateCVS test robust to + 1s file time res + + CVS clients recognize file modifications only if a file's + timestamp is newer than its CVS/Entries line. This fixes + intermittent failure of the test on filesystems with low + timestamp resolution by delaying before creating a local + modification. + +2009-04-08 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-07 15:32 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Source/cmAddCustomCommandCommand.h, + Source/cmAddCustomTargetCommand.h, + Source/cmComputeLinkDepends.cxx, Source/cmComputeLinkDepends.h, + Source/kwsys/SystemInformation.cxx, + Tests/ExportImport/Import/CMakeLists.txt, + Tests/ExportImport/Import/imp_mod1.c, + Tests/ExportImport/Import/imp_testExe1.c, + Tests/ExportImport/Import/imp_testTransExe1.c, + Tests/ExportImport/Import/A/CMakeLists.txt, + Tests/ExportImport/Import/A/imp_lib1.c, + Tests/ExportImport/Import/A/imp_mod1.c, + Tests/ExportImport/Import/A/imp_testExe1.c: ENH: merge in changes + for RC 4 + +2009-04-07 15:31 david.cole + + * Modules/NSIS.template.in: BUG: Fix issue #8682. Use + CPACK_NSIS_DISPLAY_NAME in appropriate places rather than + CPACK_PACKAGE_INSTALL_DIRECTORY. Clean separation of these two + variables (which have the same value by default) allows an easy + workaround for issue #7881, too. + +2009-04-07 15:13 david.cole + + * Source/cmLocalGenerator.cxx: BUG: Fix invalid array access + discovered during investigation of issue #7832. + +2009-04-07 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-06 14:55 king + + * Source/kwsys/SystemInformation.cxx: BUG: Fix parsing of linux 2.6 + /proc/meminfo format + + Previously KWSys SystemInformation parsed this file assuming a + strict order and set of fields, but the order is not reliable. + This generalizes the implementation to support any order and + extra fields. + +2009-04-06 11:11 hoffman + + * Tests/ExportImport/Import/imp_testTransExe1.c: file + imp_testTransExe1.c was added on branch CMake-2-6 on 2009-04-07 + 19:32:08 +0000 + +2009-04-06 11:11 hoffman + + * Tests/ExportImport/Import/A/imp_testExe1.c: file imp_testExe1.c + was added on branch CMake-2-6 on 2009-04-07 19:32:08 +0000 + +2009-04-06 11:11 hoffman + + * Tests/ExportImport/Import/A/imp_mod1.c: file imp_mod1.c was added + on branch CMake-2-6 on 2009-04-07 19:32:08 +0000 + +2009-04-06 11:11 hoffman + + * Tests/ExportImport/Import/A/imp_lib1.c: file imp_lib1.c was added + on branch CMake-2-6 on 2009-04-07 19:32:08 +0000 + +2009-04-06 11:11 hoffman + + * Tests/ExportImport/Import/A/CMakeLists.txt: file CMakeLists.txt + was added on branch CMake-2-6 on 2009-04-07 19:32:08 +0000 + +2009-04-06 11:11 king + + * Tests/ExportImport/Import/: A/CMakeLists.txt, A/imp_lib1.c, + A/imp_mod1.c, A/imp_testExe1.c, CMakeLists.txt, imp_mod1.c, + imp_testExe1.c, imp_testTransExe1.c: ENH: Test transitive link to + subdir-imported lib + + This tests linking to an imported target that is not visible but + is a transitive dependency of a target that is visible. See + issue #8843. + +2009-04-06 11:10 king + + * Source/: cmComputeLinkDepends.cxx, cmComputeLinkDepends.h: BUG: + Lookup transitive link deps in depender scope + + The transitive link dependencies of a linked target must be + followed in its own scope, not in the scope of the original + target that depends on it. This is necessary since imported + targets do not have global scope. See issue #8843. + +2009-04-06 03:39 malaterre + + * Source/kwsys/testIOS.cxx: BUG: comment out faulty seekp which + make kwsys::*stringstream fails on platform with no + std::*stringstream implementation + +2009-04-06 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-05 06:55 malaterre + + * Source/kwsys/testIOS.cxx: ENH: hopefully seekp is the call making + kwsys::stringstream behaves oddly on sunos + +2009-04-05 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-04 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-03 13:12 david.cole + + * Source/CPack/cmCPackDragNDropGenerator.cxx: BUG: Fix issue #8759 + - add support for setting dmg volume name and compression type by + CPack variables. Also add custom .DS_Store and background image + support. Thanks to Mike Arthur for the patches. + +2009-04-03 11:41 david.cole + + * Source/cmTest.cxx: BUG: Fix documentation deficiency noted in + issue #7885. Thanks to Philip Lowman for the gist of the patch. + +2009-04-03 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-02 06:12 malaterre + + * Source/kwsys/testIOS.cxx: ENH: trying to reproduce issue on sunos + +2009-04-02 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-04-01 10:31 king + + * Source/: cmAddCustomCommandCommand.h, cmAddCustomTargetCommand.h: + ENH: Clarify VERBATIM option documentation + + The previous wording of the VERBATIM option documentation in the + add_custom_command and add_custom_target commands was confusing. + It could be interpreted as the opposite of what the option means + (no escaping instead of escaping). This clarifies the + documentation to explicitly state that it escapes. + +2009-04-01 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-31 16:15 david.cole + + * Modules/FindVTK.cmake: BUG: Fix issue #8804. Add vtk-5.4 lib path + to the FindVTK.cmake module. + +2009-03-31 15:30 hoffman + + * Source/CTest/cmCTestSubmitHandler.cxx: ENH: use 0 not FALSE + +2009-03-31 15:24 hoffman + + * Source/CTest/: cmCTestSubmitHandler.cxx, cmCTestSubmitHandler.h: + ENH: add submit via cp mode + +2009-03-31 13:50 david.cole + + * Tests/CMakeTests/GetPrerequisitesTest.cmake.in: STYLE: White + space only change to see if continuous is working on new + dashboard machine... + +2009-03-31 13:16 david.cole + + * Tests/CMakeTests/GetPrerequisitesTest.cmake.in: STYLE: White + space only change to see if continuous is working on new + dashboard machine... + +2009-03-31 10:28 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/FindQt4.cmake, + Source/cmAddCustomCommandCommand.h, + Source/cmAddCustomTargetCommand.h, + Source/CTest/cmCTestSubmitCommand.cxx, + Source/QtDialog/CMakeSetupDialog.cxx, + Source/QtDialog/QCMakeCacheView.cxx: ENH: next RC + +2009-03-31 10:27 hoffman + + * Utilities/Release/vogon_release.cmake: ENH: use a newer cmake + +2009-03-31 10:13 king + + * Modules/AddExternalProject.cmake: BUG: Fix AddExternalProject + config command id + + This fixes the get_configure_command_id function to not mistake + CONFIGURE_COMMAND values that run "cmake -P" or "cmake -E" for a + CMake project configuration. These values just help run scripts. + +2009-03-31 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-30 16:34 clinton + + * Source/QtDialog/QCMake.cxx: + BUG: Fix inconsistency with lowercase drive letters on Windows. + +2009-03-30 11:38 king + + * Modules/AddExternalProject.cmake: ENH: Simpler AddExternalProject + install step + + This simplifies the implementation with + add_external_project_step. + +2009-03-30 11:38 king + + * Modules/AddExternalProject.cmake: ENH: Simpler AddExternalProject + build step + + This simplifies the implementation with + add_external_project_step. + +2009-03-30 11:38 king + + * Modules/AddExternalProject.cmake: ENH: Simpler AddExternalProject + configure step + + This simplifies the implementation with + add_external_project_step. + +2009-03-30 11:37 king + + * Modules/AddExternalProject.cmake: ENH: Simpler AddExternalProject + patch step + + This simplifies the implementation with + add_external_project_step. + +2009-03-30 11:37 king + + * Modules/AddExternalProject.cmake: ENH: Simpler AddExternalProject + update step + + This simplifies the implementation with + add_external_project_step. + +2009-03-30 11:37 king + + * Modules/AddExternalProject.cmake: ENH: Simpler AddExternalProject + download step + + This simplifies the implementation with + add_external_project_step. + +2009-03-30 11:36 king + + * Modules/AddExternalProject.cmake, + Tests/ExternalProject/CMakeLists.txt: ENH: Generalize + AddExternalProject step creation + + This creates function 'add_external_project_step' to centralize + creation of external project steps. Users may call it to add + custom steps to external project builds. + +2009-03-30 11:35 king + + * Modules/AddExternalProject.cmake: ENH: Factor argument parsing in + AddExternalProject + + The add_external_project function parses its arguments and puts + them in properties of the target it creates. This factors out + implementation of the behavior for use by other functions in the + module. + +2009-03-30 11:35 king + + * Modules/AddExternalProject.cmake: ENH: Teach AddExternalProject a + 'complete' step + + This separates creation of the project completion sentinel file + from the 'install' step to allow more steps to be added in + between later. + +2009-03-30 10:56 clinton + + * Source/QtDialog/CMakeSetupDialog.cxx: + ENH: Add version info to about dialog, including Qt version. + +2009-03-30 08:27 malaterre + + * Source/kwsys/testIOS.cxx: COMP: missing string.h header for + strlen. + +2009-03-30 08:27 king + + * Source/: cmAddCustomCommandCommand.h, cmAddCustomTargetCommand.h: + ENH: Document scope of add_custom_command outputs + + This explicitly states the scope of add_custom_command rules in + the documentation of add_custom_command and add_custom_target. + See issue #8815. + +2009-03-30 04:10 malaterre + + * Source/kwsys/testIOS.cxx: ENH: remote debugging of sunos + +2009-03-30 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-29 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-28 13:02 hoffman + + * Source/cmLocalVisualStudio7Generator.cxx: STYLE: fix line lenght + +2009-03-28 10:23 hoffman + + * Utilities/Release/: vogon_release.cmake, vogon_release_qt.cmake: + ENH: change qt to 4.5 + +2009-03-28 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-27 21:57 hoffman + + * Tests/MacroTest/context.cmake: ENH: add missing file to branch + +2009-03-27 17:11 alex + + * Modules/FindAVIFile.cmake: ENH: mark the two variables as + advanced -remove unnecessary deault search dirs + + Alex + +2009-03-27 12:33 hoffman + + * Source/cmLocalVisualStudio7Generator.cxx: BUG: fix for #8686 add + some more compiler flags + +2009-03-27 11:55 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Modules/CMakeSystemSpecificInformation.cmake, + Modules/CheckCSourceCompiles.cmake, + Modules/CheckCSourceRuns.cmake, + Modules/CheckCXXSourceCompiles.cmake, + Modules/CheckCXXSourceRuns.cmake, Modules/FindBoost.cmake, + Source/cmCommandArgumentParserHelper.cxx, + Source/cmExtraCodeBlocksGenerator.cxx, + Source/cmExtraEclipseCDT4Generator.cxx, + Source/cmExtraEclipseCDT4Generator.h, + Source/cmGlobalNMakeMakefileGenerator.cxx, + Source/cmGlobalUnixMakefileGenerator3.h, + Source/cmIncludeDirectoryCommand.cxx, + Source/cmLocalUnixMakefileGenerator3.cxx, + Source/cmLocalUnixMakefileGenerator3.h, + Source/cmLocalVisualStudio6Generator.cxx, Source/cmMakefile.cxx, + Source/cmProjectCommand.h, Source/cmSourceFile.cxx, + Source/cmStringCommand.h, Source/cmTarget.cxx, + Tests/MacroTest/CMakeLists.txt, Tests/Preprocess/CMakeLists.txt, + Tests/Preprocess/preprocess.c, Tests/Preprocess/preprocess.cxx: + ENH: merge in from main tree to create RC 2 + +2009-03-27 11:18 hoffman + + * Source/cmGlobalNMakeMakefileGenerator.cxx: ENH: LIBPATH is not + required for cl to work + +2009-03-27 10:49 hoffman + + * Utilities/Release/vogon_release.cmake: ENH: fix spaces in path + escape + +2009-03-27 10:37 hoffman + + * Utilities/Release/vogon_release.cmake: ENH: use a different cmake + +2009-03-27 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-26 11:42 clinton + + * Source/QtDialog/QCMakeCacheView.cxx: + BUG: Don't return checkable flag for item when in the middle of + configure/generate. + +2009-03-26 11:04 clinton + + * Modules/FindQt4.cmake: + ENH: Do a recheck of QT_MAC_USE_COCOA when qmake executable + changes. + +2009-03-26 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-25 15:29 clinton + + * Modules/FindQt4.cmake: + ENH: Support OUTPUT_LOCATION property for qm files. Fixes + #8492. + +2009-03-25 10:37 hoffman + + * Tests/MacroTest/context.cmake: file context.cmake was added on + branch CMake-2-6 on 2009-03-28 01:57:34 +0000 + +2009-03-25 10:36 king + + * Source/cmCommandArgumentParserHelper.cxx, + Tests/MacroTest/CMakeLists.txt, Tests/MacroTest/context.cmake: + BUG: Fix CMAKE_CURRENT_LIST_FILE in macros + + The value of CMAKE_CURRENT_LIST_FILE is supposed to be the list + file currently being executed. Before macros were introduced + this was always the context of the argument referencing the + variable. + + Our original implementation of macros replaced the context of + command arguments inside the macro with that of the arguments of + the calling context. This worked recursively, but only worked + when macros had at least one argument. Furthermore, it caused + parsing errors of the arguments to report the wrong location + (calling context instead of line with error). + + The commit "Improve context for errors in macros" fixed the + latter bug by keeping the lexical context of command arguments in + macros. It broke evaluation of CMAKE_CURRENT_LIST_FILE because + the calling context was no longer preserved in the argument + referencing the variable. However, since our list file + processing now maintains the proper value of + CMAKE_CURRENT_LIST_FILE with dynamic scope we no longer need the + context of the argument and can just evaluate the variable + normally. + +2009-03-25 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-24 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-23 15:46 hoffman + + * CMakeLists.txt: ENH: put an rc number other than 0 in + +2009-03-23 14:48 king + + * Source/cmLocalVisualStudio6Generator.cxx, Source/cmMakefile.cxx, + Source/cmSourceFile.cxx, Source/cmTarget.cxx, + Tests/Preprocess/CMakeLists.txt, Tests/Preprocess/preprocess.c, + Tests/Preprocess/preprocess.cxx: ENH: Support preprocessor def + values in VS6 + + The add_definitions() command and COMPILE_DEFINITIONS dir/tgt/src + properties support preprocessor definitions with values. + Previously values were not supported in the VS6 generator even + though the native tool supports them. It is only values with + spaces that VS6 does not support. This enables support and + instead complains only for values with spaces. See issue #8779. + +2009-03-23 14:04 hoffman + + * Tests/: CMakeTests/GetFilenameComponentRealpathTest.cmake.in, + Fortran/include/test_preprocess.h: ENH: add missing files + +2009-03-23 13:58 hoffman + + * CMakeLists.txt, ChangeLog.manual, Docs/cmake-mode.el, + Modules/CMakeASMInformation.cmake, + Modules/Platform/Darwin-icc.cmake, Modules/Platform/Darwin.cmake, + Modules/Platform/UnixPaths.cmake, Source/cmCPluginAPI.cxx, + Source/cmDependsFortran.cxx, Source/cmDependsFortranParser.cxx, + Source/cmDependsFortranParser.y, Source/cmDocumentVariables.cxx, + Source/cmDocumentationFormatterMan.cxx, Source/cmFileCommand.cxx, + Source/cmGetFilenameComponentCommand.cxx, + Source/cmGetFilenameComponentCommand.h, + Source/cmGlobalGenerator.cxx, Source/cmGlobalGenerator.h, + Source/cmGlobalXCodeGenerator.cxx, + Source/cmGlobalXCodeGenerator.h, Source/cmLocalGenerator.cxx, + Source/cmLocalGenerator.h, + Source/cmLocalUnixMakefileGenerator3.cxx, + Source/cmMakeDepend.cxx, Source/cmMakeDepend.h, + Source/cmMakefile.cxx, Source/cmMakefileTargetGenerator.cxx, + Source/cmSourceFile.cxx, Source/cmTarget.cxx, Source/cmake.cxx, + Source/CTest/cmCTestUpdateHandler.cxx, + Source/kwsys/SystemTools.cxx, Source/kwsys/SystemTools.hxx.in, + Tests/CMakeTests/CMakeLists.txt, Tests/Fortran/CMakeLists.txt, + Tests/Fortran/test_preprocess.F90: ENH: check in changes to + branch, most importantly the header file do not compile fix + +2009-03-23 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-22 17:13 lowman + + * Modules/FindGTK2.cmake: ENH: NEW: FindGTK2 module + +2009-03-22 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-21 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-20 23:52 lowman + + * Modules/FindBoost.cmake: BUG: LIST(REMOVE_ITEM...) was being + called on a variable that could be empty. + +2009-03-20 14:19 king + + * Source/CTest/: cmCTestUpdateCommand.h, cmCTestUpdateHandler.cxx: + BUG: Fix return value of ctest_update + + The CTest version control refactoring broke the value returned + for the ctest_update command's RETURN_VALUE argument. The value + is supposed to be the number of files updated, but the + refactoring accidentally made it the number of locally modified + files after the update. + +2009-03-20 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-19 22:48 fbertel + + * Source/kwsys/: SystemInformation.cxx, SystemInformation.hxx.in: + COMP:Fixed warnings with gcc 4.3.2. + +2009-03-19 15:44 clinton + + * Modules/FindQt4.cmake: + BUG: Need to fix find of qtmain library when qmake executable is + changed. + +2009-03-19 11:48 fbertel + + * Source/kwsys/CommandLineArguments.cxx: COMP:Try to fix error on + HP. + +2009-03-19 10:53 king + + * Source/cmTarget.cxx: ENH: Mention CMAKE_* variables in RPATH + properties + + The RPATH target properties are initialized by CMAKE_ + variables at target creation time. This notes the feature in the + property documentation. It is already noted in the variable + documentation. + +2009-03-19 10:03 fbertel + + * Source/kwsys/RegularExpression.hxx.in: COMP:try to fix error on + qnx-V3.3.5-gcc_ntox86. + +2009-03-19 09:20 fbertel + + * Source/kwsys/CommandLineArguments.cxx: COMP:Fixed warnings. + +2009-03-19 09:09 fbertel + + * Source/kwsys/RegularExpression.hxx.in: COMP:Fixed VS 64-bit + warning C4267 line 432 of RegularExpression.cxx + +2009-03-19 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-18 11:01 king + + * Modules/AddExternalProject.cmake: STYLE: Reminder note for + add_external_project work + +2009-03-18 11:00 king + + * Modules/AddExternalProject.cmake, + Tests/ExternalProject/CMakeLists.txt, + Tests/ExternalProject/Step1Patch.cmake: ENH: Add patch step for + add_external_project + + The patch step runs parallel to the update step since it does not + make sense to have both. Configuration of the step requires + specification of a PATCH_COMMAND argument to + add_external_project. + +2009-03-18 11:00 king + + * Modules/AddExternalProject.cmake, + Tests/ExternalProject/CMakeLists.txt: ENH: Improve + add_external_project interface + + This rewrites the keyword/argument parsing and handling in the + AddExternalProject module to use arguments more literally: + + - The strict keyword-value pairing is gone in favor of keywords + with + arbitrary non-keyword values. This avoids requiring users to + escape + spaces and quotes in command lines. + + - Customized step command lines are now specified with a single + keyword _COMMAND instead of putting the arguments in a + separate entry (previously called _ARGS). + + - Build step custom commands now use VERBATIM mode so that + arguments + are correctly escaped on the command line during builds. + +2009-03-18 08:50 fbertel + + * Source/kwsys/SystemTools.cxx: COMP:Fixed warnings. + +2009-03-18 07:57 fbertel + + * Source/kwsys/RegularExpression.cxx: STYLE:Empty commit just add + information about rev 1.15: the reason is that long is 64-bit on + gcc on Linux because it uses the LP64 data model whereas long is + 32-bit on VS 64-bit because it uses the LLP64 model (ref: + http://en.wikipedia.org/wiki/64-bit#64-bit_data_models ) + +2009-03-18 07:32 fbertel + + * Source/kwsys/RegularExpression.cxx: COMP:Fix warning on VS 64bit. + Don't why gcc 4.3.2 didn't catch this one on a 64bit machine with + -Wconversion on. + +2009-03-18 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-17 15:11 king + + * Source/cmLocalGenerator.cxx: BUG: Allow more shell ops in custom + commands + + This extends the set of common shell operators to include "||", + "&&", "1>", and "2>". See issue #6868. + +2009-03-17 15:10 king + + * Source/cmForEachCommand.cxx, Source/cmForEachCommand.h, + Tests/StringFileTest/CMakeLists.txt: ENH: New foreach( IN + ...) mode + + This creates a new mode of the foreach command which allows + precise iteration even over empty elements. This mode may be + safely extended with more keyword arguments in the future. The + cost now is possibly breaking scripts that iterate over a list of + items beginning with 'IN', but there is no other way to extend + the syntax in a readable way. + +2009-03-17 10:48 fbertel + + * Source/kwsys/: Glob.cxx, RegularExpression.cxx, + RegularExpression.hxx.in: COMP:Fixed warnings. + +2009-03-17 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-16 22:28 lowman + + * Modules/FindBoost.cmake: BUG: Eliminates detection of Boost + system library prior to 1.35 (see issue #8734) + +2009-03-16 17:38 fbertel + + * Source/kwsys/ProcessUNIX.c: COMP:Try to fix compile error with + qnx gcc. + +2009-03-16 17:13 fbertel + + * Source/kwsys/ProcessUNIX.c: COMP:Fixed gcc 4.3.2 warning with -O1 + and above: ignoring return value of read'), declared with + attribute warn_unused_result + +2009-03-16 16:55 king + + * Modules/CMakeGenericSystem.cmake, + Source/cmMakefileExecutableTargetGenerator.cxx, + Source/cmMakefileLibraryTargetGenerator.cxx, + Source/cmMakefileTargetGenerator.cxx, + Source/cmMakefileTargetGenerator.h, Source/cmake.cxx, + Tests/Complex/CMakeLists.txt, + Tests/ComplexOneConfig/CMakeLists.txt, + Tests/ComplexRelativePaths/CMakeLists.txt: ENH: Allow projects to + disable per-rule echo lines + + This creates global property RULE_MESSAGES which can be set to + disbale per-rule progress and action reporting. On Windows, + these reports may cause a noticable delay due to the cost of + starting extra processes. This feature will allow scripted + builds to avoid the cost since they do not need detailed + information anyway. This replaces the RULE_PROGRESS property + created earlier as it is more complete. See issue #8726. + +2009-03-16 16:55 king + + * Source/cmMakefileLibraryTargetGenerator.cxx: STYLE: Separate + unrelated logic + + This separates unrelated uses of a library-type switch into + separate switches. An upcoming commit will conditionally enter + one of the switches. + +2009-03-16 16:22 king + + * Modules/CMakeGenericSystem.cmake, + Source/cmMakefileTargetGenerator.cxx, + Source/cmMakefileTargetGenerator.h, Source/cmake.cxx, + Tests/Complex/CMakeLists.txt, + Tests/ComplexOneConfig/CMakeLists.txt, + Tests/ComplexRelativePaths/CMakeLists.txt: ENH: Allow projects to + disable per-rule progress + + This creates global property RULE_PROGRESS which can be set to + disbale per-rule progress reporting. On Windows, progress + reports may cause a noticable delay due to the cost of starting + an extra process. This feature will allow scripted builds to + avoid the cost since they do not need detailed progress anyway. + See issue #8726. + +2009-03-16 16:22 king + + * Source/: cmMakefileTargetGenerator.cxx, + cmMakefileTargetGenerator.h: ENH: Factor out makefile progress + rule commands + + This factors duplicate progress rule code into a common method. + +2009-03-16 15:02 fbertel + + * Source/kwsys/ProcessUNIX.c: COMP:Fixed warnings. + +2009-03-16 14:30 king + + * Source/: cmCPluginAPI.cxx, cmGlobalXCodeGenerator.cxx, + cmGlobalXCodeGenerator.h, cmSourceFile.cxx: BUG: Do not + automatically set HEADER_FILE_ONLY + + Long ago the native build system generators needed + HEADER_FILE_ONLY to be set on header files to stop them from + building. The modern generators correctly handle headers without + the help of this property. This removes automatic setting of the + property so that it can be used reliably as an indicator of + project author intention. It fixes VS IDE project files to show + header files normally instead of excluded (broken by the fix for + issue #7845). + +2009-03-16 14:30 king + + * Source/: cmMakeDepend.cxx, cmMakeDepend.h: ENH: Remove unused + code from cmMakeDepend + + This class is the old-style dependency scanner. It is needed + only to implement the output_required_files command. This change + removes some code not needed for that purpose, including a + reference to the HEADER_FILE_ONLY property. + +2009-03-16 10:51 king + + * Source/cmAddTestCommand.cxx, Source/cmAddTestCommand.h, + Source/cmTest.cxx, Source/cmTest.h, Source/cmTestGenerator.cxx, + Source/cmTestGenerator.h, Tests/Testing/CMakeLists.txt, + Tests/Testing/perconfig.c: ENH: Add NAME mode to ADD_TEST command + + This creates command mode add_test(NAME ...). This signature is + extensible with more keyword arguments later. The main purpose + is to enable automatic replacement of target names with built + target file locations. A side effect of this feature is support + for tests that only run under specific configurations. + +2009-03-16 10:42 king + + * Source/: cmAddTestCommand.cxx, cmTest.cxx, cmTest.h, + cmTestGenerator.cxx: ENH: Refactor storage of test command lines + + We used to separate the command executable from its argument + vector. It is simpler to just store the whole command line in + one vector. + +2009-03-16 10:40 king + + * Source/CMakeLists.txt, Source/cmAddTestCommand.cxx, + Source/cmLocalGenerator.cxx, Source/cmMakefile.cxx, + Source/cmMakefile.h, Source/cmTestGenerator.cxx, + Source/cmTestGenerator.h, bootstrap: ENH: Refactor generation of + CTestTestfile content + + This moves code which generates ADD_TEST and SET_TESTS_PROPERTIES + calls into CTestTestfile.cmake files out of cmLocalGenerator and + into a cmTestGenerator class. This will allow more advanced + generation without cluttering cmLocalGenerator. The + cmTestGenerator class derives from cmScriptGenerator to get + support for per-configuration script generation (not yet + enabled). + +2009-03-16 10:39 king + + * Source/CMakeLists.txt, Source/cmInstallGenerator.cxx, + Source/cmInstallGenerator.h, Source/cmInstallTargetGenerator.cxx, + Source/cmInstallTargetGenerator.h, Source/cmScriptGenerator.cxx, + Source/cmScriptGenerator.h, bootstrap: ENH: Refactor + cmInstallGenerator for re-use + + A new cmScriptGenerator base class factors out the + non-install-specific part of cmInstallGenerator. This will be + useful for other generators that want per-configuration + functionality. + +2009-03-16 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-15 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-14 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-13 17:04 alex + + * Source/cmExtraEclipseCDT4Generator.cxx: ENH: don't enforce + VERBOSE Makefiles, but set the env. var VERBOSE to 1 in when make + is executed from within Eclipse. This way when building from the + command line one can build also in non-verbose mode. + + Alex + +2009-03-13 16:52 alex + + * Modules/CMakeSystemSpecificInformation.cmake, + Source/cmExtraEclipseCDT4Generator.cxx, + Source/cmExtraEclipseCDT4Generator.h: ENH: when using the Eclipse + project generator, run gcc so that it tells us its system include + directories. These are catched in + CMakeSystemSpecificInformation.cmake (only with the Eclipse + generator) and then written by the Eclipse generator in the + Eclipse project file. This way Eclipse can find the standard + headers (#7585) Not sure CMakeSystemSpecificInformation.cmake is + the best place to do this. + + Alex + +2009-03-13 14:58 alex + + * Source/cmStringCommand.h: STYLE: add line breaks to the + documentation for CMAKE_MATCH_(0..9), otherwise one might miss + this information + + Alex + +2009-03-13 10:53 king + + * Source/cmCacheManager.cxx: BUG: Document internal cache property + MODIFIED + + All cmake-defined properties should be documented, even if they + are internal. This fixes the DocTest when CMAKE_STRICT is + enabled. + +2009-03-13 10:53 king + + * Source/: cmCacheManager.cxx, cmCacheManager.h, cmake.cxx: BUG: + Fix cache properties for CMAKE_STRICT build + + All cmPropertyMap instances must have CMakeInstance set. This + teaches cmCacheManager to set it on cache entries. + +2009-03-13 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-12 21:06 lowman + + * Modules/FindBoost.cmake: STYLE: Moved functions/macros to top of + file so main is more readable. + +2009-03-12 19:24 alex + + * Source/cmIncludeDirectoryCommand.cxx: BUG: fix #8704, sometimes + crash if include_directories() is called with a whitespace string + + Alex + +2009-03-12 18:43 alex + + * Source/cmProjectCommand.h: STYLE: document NONE for disabling any + languages, slightly change wording of the rest of the + documentation, so it is more similar to ENABLE_LANGUAGE() (#8718) + + Alex + +2009-03-12 14:54 hoffman + + * Source/CTest/cmCTestSubmitHandler.cxx: ENH: allow for https + submission if ctest is built with a curl that supports it + +2009-03-12 13:11 king + + * Source/cmCacheManager.cxx: COMP: Do not use void returns + + VS 6 does not support the C++ void returns feature. This removes + an accidental use of it. + +2009-03-12 11:19 clinton + + * Source/QtDialog/: QCMake.cxx, QCMake.h, QCMakeCacheView.cxx, + QCMakeCacheView.h, QCMakeWidgets.h: + ENH: Add support for showing combo box for choosing from a list + of strings that a cache property can have. + +2009-03-12 10:52 king + + * Source/: cmCacheManager.cxx, cmSetPropertyCommand.cxx: ENH: + Define STRINGS cache entry property + + This property defines a list of values for a cache entry of type + STRING. A CMake GUI may optionally use a drop-down selection + widget for the entry instead of a generic text entry field. We + do not enforce that the value of the entry match one of the + strings listed. + +2009-03-12 10:49 king + + * Source/: cmCacheManager.cxx, cmCacheManager.h: ENH: Refactor + cache entry writing and reading + + This factors out duplicated code into reusable methods, thus + simplifying writing and reading of cache entry help strings, + keys, values, and properties. + +2009-03-12 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-11 18:13 alex + + * Modules/: CheckCSourceCompiles.cmake, CheckCSourceRuns.cmake, + CheckCXXSourceCompiles.cmake, CheckCXXSourceRuns.cmake: STYLE: + fix documentation: the second short description discarded the + first one, but the first one was the correct one (i.e. the one + which mentioned that CheckC[XX]SourceRuns.cmake also tries to run + the executable) + + Alex + +2009-03-11 13:31 king + + * Source/CTest/cmCTestCoverageHandler.cxx: BUG: Do not produce + empty coverage log files + + This moves the filtering of source files to before the production + of coverage log files in order to avoid producing a + CoverageLog-*.xml file for 100 filtered-out files. The change + greatly reduces the number of submitted coverage files when using + label filters. + +2009-03-11 13:31 king + + * Source/: CTest/cmCTestCoverageHandler.cxx, cmCTest.h: BUG: Do not + carry over file list between coverage + + When performing multiple ctest_coverage() commands in a single + CTest instance we need to clear the list of CoverageLog-*.xml + files for submission. Otherwise if the current coverage run + produces fewer log files than the previous run CTest will attempt + to submit non-existing files. + +2009-03-11 12:03 king + + * Source/CTest/: cmCTestCoverageHandler.cxx, + cmCTestCoverageHandler.h: BUG: Avoid duplicate CTest coverage + submission + + This teaches ctest_coverage() to remove any existing + CoverageLog-*.xml when it creates new coverage results. + Otherwise the next ctest_submit() may submit old coverage log + files which unnecessarily. + +2009-03-11 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-10 17:34 alex + + * Source/cmExtraCodeBlocksGenerator.cxx: ENH: only check for the + existance of a header file if: -the original file is a C/C++ + implementation file -the header file is not already part of the + sources + + Alex + +2009-03-10 11:11 king + + * Source/: cmCacheManager.cxx, cmCacheManager.h, + cmDocumentation.cxx, cmake.cxx: ENH: Document CACHE entry + properties + + This adds a property documentation section for CACHE properties. + We document the ADVANCED, HELPSTRING, TYPE, and VALUE properties. + +2009-03-10 11:10 king + + * Source/cmCacheManager.cxx, Source/cmCacheManager.h, + Source/cmGetPropertyCommand.cxx, Source/cmGetPropertyCommand.h, + Source/cmSetPropertyCommand.cxx, Source/cmSetPropertyCommand.h, + Tests/Properties/CMakeLists.txt: ENH: Teach set/get_property + about CACHE properties + + This adds the CACHE option to set_property and get_property + commands. This allows full control over cache entry information, + so advanced users can tweak their project cache as desired. The + set_property command allows only pre-defined CACHE properties to + be set since others would not persist anyway. + +2009-03-10 11:10 king + + * Source/: cmCacheManager.cxx, cmCacheManager.h, cmProperty.h, + cmPropertyDefinitionMap.cxx: ENH: Use cmPropertyMap for cache + properties + + This re-implements cache entry property storage in cmCacheManager + to use cmPropertyMap so it can share the standard property + implementation. + +2009-03-10 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-09 17:57 king + + * Source/cmGetPropertyCommand.cxx: BUG: Fix get_property result for + bad property + + When a property does not exist we are supposed to return an empty + value. Previously if a property did not exist we just left the + value of the output variable unchanged. This teaches CMake to + remove the definition of the output variable in this case. + +2009-03-09 12:19 king + + * Source/CTest/: cmCTestCoverageHandler.cxx, + cmCTestCoverageHandler.h: ENH: Efficiently filter CTest coverage + by label + + This teaches CTest to process coverage information only for + object files in targets containing labels of interest. This + change also improves loading of global coverage information by + globbing only in each target support directory instead of the + entire build tree. + +2009-03-09 12:19 king + + * Source/: CTest/cmCTestCoverageHandler.cxx, cmGlobalGenerator.cxx, + cmGlobalGenerator.h, CTest/cmCTestCoverageHandler.h: ENH: + Generate a central list of target directories + + This generalizes the previous CMakeFiles/LabelFiles.txt created + at the top of the build tree to a + CMakeFiles/TargetDirectories.txt file. It lists the target + support directories for all targets in the project. Labels can + still be loaded by looking for Labels.txt files in each target + directory. + +2009-03-09 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-08 15:33 alex + + * Source/cmExtraCodeBlocksGenerator.cxx: + ENH: automatically add headers of implementation file to the + codeblocks project file + + Alex + +2009-03-08 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-07 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-06 14:29 david.cole + + * Tests/CMakeTests/GetPrerequisitesTest.cmake.in: STYLE: White + space only change to see if continuous is working on new + dashboard machine... + +2009-03-06 12:06 king + + * Source/: cmMessageCommand.cxx, cmMessageCommand.h: BUG: Fix + message(SEND_ERROR) to continue + + During testing of the new message() signatures I mistakenly + concluded that SEND_ERROR stops processing. The corresponding + commit enforced this wrong behavior. This restores the correct + behavior and fixes the documentation accordingly. + +2009-03-06 10:04 king + + * Source/cmMessageCommand.cxx, Source/cmMessageCommand.h, + Tests/CMakeTests/CMakeLists.txt, + Tests/CMakeTests/MessageTest.cmake.in, + Tests/CMakeTests/MessageTestScript.cmake: ENH: Teach message() + how to display warnings + + This adds message(WARNING) and message(AUTHOR_WARNING) command + modes and fully documents the command behavior in all modes. + +2009-03-06 10:01 king + + * Source/cmDocumentationFormatterMan.cxx: BUG: Fix man-page + preformatted text paragraphing + + Man page preformatted text needs an extra newline after the + ending marker to create a paragraph break. This bug was + introduced by the patch from issue #7797 to place explicit ".nf" + and ".fi" markers around preformatted blocks. + +2009-03-06 09:14 king + + * Source/cmFileCommand.cxx: ENH: Teach file(REMOVE) how to use + relative paths + + This teaches the command to interpret relative paths with respect + to the location of the invoking CMakeLists.txt file. The + convention is already used by most commands and won't change the + behavior in script mode. + +2009-03-06 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-05 15:17 king + + * CMakeCPack.cmake, CMakeLists.txt, bootstrap, + Source/CMakeLists.txt, Source/cmCTest.cxx, + Source/cmCacheManager.cxx, Source/cmConfigure.cmake.h.in, + Source/cmDocumentVariables.cxx, Source/cmLocalGenerator.cxx, + Source/cmStandardIncludes.h, Source/cmVersion.cxx, + Source/cmVersion.h, Source/cmVersionConfig.h.in, + Source/cmVersionMacros.h, Source/cmake.cxx, + Source/CursesDialog/cmCursesLongMessageForm.cxx, + Source/CursesDialog/cmCursesMainForm.cxx, + Source/QtDialog/CMakeSetup.cxx, Tests/CMakeTests/CMakeLists.txt, + Tests/CMakeTests/VersionTest.cmake.in: ENH: Overhaul CMake + version numbering + + This moves the version numbers into an isolated configured header + so that not all of CMake needs to rebuild when the version + changes. + + Previously we had spaces, dashes and/or the word 'patch' randomly + chosen before the patch number. Now we always report version + numbers in the traditional format + "..[-rc]". + + We still use odd minor numbers for development versions. Now we + also use the CCYYMMDD date as the patch number of development + versions, thus allowing tests for exact CMake versions. + +2009-03-05 13:57 king + + * Source/: cmake.cxx, cmake.h: STYLE: Remove unused + cmake::CacheVersionMatches + + This remove the method completely since nothing uses it. + +2009-03-05 10:17 king + + * Source/CTest/: cmCTestCoverageCommand.cxx, + cmCTestCoverageCommand.h: BUG: Initialize ctest_coverage command + ivar + + This initializes the LabelsMentioned ivar in + cmCTestCoverageCommand. + +2009-03-05 10:08 david.cole + + * Modules/CPack.cmake: STYLE: Use $ style variable dereference + instead of @ style. + +2009-03-05 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-04 15:39 king + + * Source/cmake.cxx, Source/cmake.h, Source/cmakemain.cxx, + Tests/CMakeBuildTest.cmake.in: ENH: Cleanup cmake --build + interface. + + This cleans up the 'cmake --build' command-line interface: - + Rename --clean to --clean-first to better describe it. - + Replace --extra-options with a -- separator to simplify passing + of multiple native build tool options. - Document the + options in the main CMake man page description of the + --build option, and shares this with the usage message. - + Require --build to be the first argument when present. - Move + implementation into cmakemain where it belongs. + +2009-03-04 15:38 king + + * Source/: cmGlobalGenerator.cxx, cmGlobalGenerator.h: ENH: Extend + GG::Build method for pre-parsed args + + This adds an argument to the cmGlobalGenerator::Build method to + pass a vector of arguments for the native build tool + programatically. + +2009-03-04 12:30 hoffman + + * Modules/CPack.background.png.in: ENH: add file back bug use cmake + image + +2009-03-04 11:45 king + + * Modules/AddExternalProject.cmake, + Tests/ExternalProject/CMakeLists.txt: ENH: Better recursive make + in AddExternalProject + + This teaches AddExternalProject to run "$(MAKE)" for build and + install steps of CMake-based external projects when using a + Makefile generator. It allows the external project to + participate in a parallel make invoked on the superproject. + +2009-03-04 11:24 hoffman + + * Source/CTest/cmCTestScriptHandler.cxx: BUG: make sure error + condition is reset before loading scripts + +2009-03-04 09:21 king + + * Modules/AddExternalProject.cmake: ENH: Allow empty arguments in + external project API + + This uses the get_property command to simplify property lookup in + the AddExternalProject module. It distinguishes for build and + install argument properties the cases of unset and set to empty. + +2009-03-04 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-03 07:56 hoffman + + * Modules/CPack.background.png.in: ENH: remove unused file + +2009-03-03 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-02 21:09 lowman + + * Modules/FindBoost.cmake: STYLE: Fix documentation bug regarding + Boost__LIBRARY (COMPONENT should be uppercase). + +2009-03-02 20:29 lowman + + * Modules/FindCxxTest.cmake: ENH: Detect perl & python scripts + based on CXXTEST_INCLUDE_DIR (patch from Tyler Roscoe on mailing + list). + +2009-03-02 16:27 king + + * Source/cmXMLSafe.cxx: BUG: Avoid encoding invalid XML chars in + CTest + + CTest encodes test and tool output in XML for dashboard + submission. This fixes the XML encoding implementation to not + encode an invalid character and instead put a human-readable tag + in its place. See issue #8647. + +2009-03-02 16:02 king + + * Source/cmake.cxx: BUG: Gracefully handle broken version symlinks + + This teaches the helper commands 'cmake -E + cmake_symlink_executable' and 'cmake -E cmake_symlink_library' to + remove broken symlinks before creating a symlink and report an + error when the symlink cannot be created. See issue #8654. + +2009-03-02 15:33 king + + * Source/CTest/: cmCTestCoverageCommand.cxx, + cmCTestCoverageCommand.h, cmCTestCoverageHandler.cxx, + cmCTestCoverageHandler.h: ENH: Teach ctest_coverage to filter + with LABELS + + This teaches ctest_coverage() to report only coverage of files + labeled with at least one label given by a new LABELS option. + +2009-03-02 15:33 king + + * Source/CTest/cmCTestCoverageHandler.cxx: BUG: Fix coverage label + reports for Bullseye + + This teaches CTest to report Labels elements in the Coverage.xml + file for Bullseye coverage results. + +2009-03-02 15:32 king + + * Source/CTest/cmCTestCoverageHandler.cxx: BUG: Fix coverage + handler initialization + + This resets coverage handler internal state on initialization so + that multiple coverage runs are independent. + +2009-03-02 09:59 king + + * Source/cmXMLSafe.cxx: BUG: Hack for issue #8647 + +2009-03-02 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-03-01 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-28 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-27 16:28 hoffman + + * Source/CTest/cmCTestTestHandler.cxx: BUG: #8611 add pass fail + reasons into log file + +2009-02-27 13:08 king + + * Modules/CMakeASMInformation.cmake: BUG: Fix ASM source file + extension default list + + This replaces @ASM_DIALECT@ syntax with ${ASM_DIALECT} syntax so + it will be replaced correctly. Patch from Derek Bruening. See + issue #8639. + +2009-02-27 12:59 king + + * Source/cmMakefileTargetGenerator.cxx: BUG: Pass shared library + export symbol in DEFINES + + The _EXPORTS macro defined for object files when built in + a shared library should be put in the make + rule replacement and not . Also, it should honor the + platform variable CMAKE__DEFINE_FLAG. See issue #8107. + +2009-02-27 11:23 king + + * Source/: cmGlobalGenerator.cxx, cmGlobalGenerator.h, + cmMakefile.cxx: ENH: Enforce unique binary directories + + The second argument of add_subdirectory must name a unique binary + directory or the build files will clobber each other. This + enforces uniqueness with an error message. + +2009-02-27 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-26 13:28 king + + * Docs/cmake-mode.el: BUG: Fix cmake-mode.el indentation cursor + motion + + This makes cursor motion in the indent function consistent with + emacs conventions. Patch from Mike Wittman. See issue #8625. + +2009-02-26 09:22 king + + * Source/CTest/: cmCTestUpdateHandler.cxx, cmCTestVC.cxx, + cmCTestVC.h: ENH: Refactor initial checkout into cmCTestVC + + This adds cmCTestVC::InitialCheckout and uses it in + cmCTestUpdateHandler to run the initial checkout command. The + new implementation logs the command in the update log + consistently with the rest of the new update implementation. + +2009-02-26 09:22 king + + * Tests/: CTestUpdateCVS.cmake.in, CTestUpdateCommon.cmake, + CTestUpdateSVN.cmake.in: ENH: Extend CTest.UpdateSVN to test + local mods + + This teaches the test to create local modifications in the work + tree before updating. + +2009-02-26 09:16 king + + * Source/: cmLocalGenerator.cxx, cmLocalGenerator.h: BUG: Use new + include dir suppresson for all gens + + This fixes CMAKE__IMPLICIT_INCLUDE_DIRECTORIES to be used + for all generators instead of just those that construct their own + compiler command lines directly. See issue #8598. + +2009-02-26 08:49 king + + * Source/cmLocalGenerator.cxx: ENH: Simplify reverse + cmLocalGenerator::Convert + + It does not make sense to call the reverse Convert signature (for + remote paths corresponding to CMake-managed directories) with + NONE or FULL since they have no path. Patch from Modestas + Vainius. See issue #7779. + +2009-02-26 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-25 17:17 miguelf + + * Modules/FindwxWidgets.cmake: BUG: Fix copy/paste error in + previous commit that references wrong variable + (wxWidgets_INCLUDE_DIRS instead of wxWidgets_DEFINITIONS). + +2009-02-25 16:29 alex + + * Modules/FindQt4.cmake: ENH: add patch from Debian, which adds + support lrelease-qt4 and lupdate-qt4 + http://patch-tracking.debian.net/patch/series/view/cmake/2.6.3-1/FindQt4_qt4_lupdate_lrelease.diff + + Alex + +2009-02-25 15:45 king + + * Source/CTest/: cmCTestSVN.cxx, cmCTestVC.h: COMP: Fix cmCTestVC + member access for HP compiler + + The HP C++ compiler needs some help to allow access to some + member classes of cmCTestVC. + +2009-02-25 14:42 king + + * Source/CTest/: cmCTestCVS.cxx, cmCTestCVS.h, cmCTestSVN.cxx, + cmCTestSVN.h, cmCTestUpdateHandler.cxx, cmCTestVC.cxx, + cmCTestVC.h: ENH: Rewrite CTest Update implementation + + This adds a new VCS update implementation to the cmCTestVC + hierarchy and removes it from cmCTestUpdateHandler. The new + implementation has the following advantages: + + - Factorized implementation instead of monolithic function + - Logs vcs tool output as it is parsed (less memory, inline + messages) + - Uses one global svn log instead of one log per file + - Reports changes on cvs branches (instead of latest trunk + change) + - Generates simpler Update.xml (only one Directory element per + dir) + + Shared components of the new implementation appear in cmCTestVC + and may be re-used by subclasses for other VCS tools in the + future. + +2009-02-25 11:44 king + + * Modules/Platform/UnixPaths.cmake, Source/cmDocumentVariables.cxx, + Source/cmLocalGenerator.cxx: ENH: Re-enable system include dir + suppression + + This creates variable CMAKE__IMPLICIT_INCLUDE_DIRECTORIES + to specify implicit include directories on a per-language basis. + This replaces the previous platform-wide variable. It is + necessary to avoid explicit specification of -I/usr/include on + some compilers (such as HP aCC) because: + + 1.) It may break ordering among system include directories + defined + internally by the compiler, thus getting wrong system + headers. + 2.) It tells the compiler to treat the system include directory + as a user include directory, enabling warnings in the + headers. + + See issue #8598. + +2009-02-25 09:20 king + + * Source/CTest/cmCTestVC.cxx: COMP: Fix cmCTestVC char[]->string + Borland warning + + The Borland compiler warns about returning a char[] from a + function with return type std::string without an explicit + construction. + +2009-02-25 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-24 17:23 hoffman + + * Source/CTest/: cmCTestMultiProcessHandler.cxx, + cmCTestTestHandler.cxx, cmCTestTestHandler.h: ENH: add a CDash + measured value showing the reason for passed and failed tests + based on regular expressions + +2009-02-24 17:07 king + + * Utilities/CMakeLists.txt: BUG: Fix cmake-gui docs generation PATH + feature + + Automatic addition of the Qt DLL location to PATH can be done + only for generators that use a Windows shell. + +2009-02-24 16:49 miguelf + + * Modules/: FindwxWidgets.cmake, UsewxWidgets.cmake: BUG: Using + PROPERTY COMPILE_DEFINITIONS_DEBUG to support Debug only + preprocessor options (e.g., _DEBUG __WXDEBUG__). + +2009-02-24 15:43 king + + * Source/: cmXMLParser.cxx, cmXMLParser.h: ENH: Added + cmXMLParser::FindAttribute method + + This method will help subclasses look for element attributes in + their StartElement methods. + +2009-02-24 15:43 king + + * Source/: cmXMLParser.cxx, cmXMLParser.h: ENH: Allow cmXMLParser + subclasses to report errors + + This tells cmXMLParser to report error messages through virtual + method cmXMLParser::ReportError so that subclasses can override + the default report. + +2009-02-24 15:43 king + + * Source/CTest/: cmCTestSVN.cxx, cmCTestSVN.h: ENH: Teach + cmCTestSVN to load repo/tree relation + + This teaches cmCTestSVN::NoteNewRevision to save the repository + URL checked out in the work tree, the repository root, and the + path below the root to reach the full URL. + +2009-02-24 15:43 king + + * Source/: cmCTest.cxx, cmCTest.h: ENH: Add cmCTest::DecodeURL + method + + This new method decodes the "percent-encoding" used in URL + syntax. + +2009-02-24 15:37 king + + * Modules/Platform/Darwin-icc.cmake, Modules/Platform/Darwin.cmake, + Source/cmLocalGenerator.cxx, Source/cmLocalGenerator.h, + Source/cmLocalUnixMakefileGenerator3.cxx: BUG: Remove implicit + include dir suppression + + We used to suppress generation of -I/usr/include (and on OSX also + -I/usr/local/include). This behavior seems to cause more trouble + than it's worth, so I'm removing it until someone encounters the + original problem it fixed. See issue #8598. + +2009-02-24 14:32 hoffman + + * Tests/Fortran/include/test_preprocess.h: file test_preprocess.h + was added on branch CMake-2-6 on 2009-03-23 18:04:12 +0000 + +2009-02-24 14:32 king + + * Tests/Fortran/: CMakeLists.txt, test_preprocess.F90, + include/test_preprocess.h: ENH: Test included header in Fortran + preprocessing + + This extends the Fortran preprocessing test to include a header + file through a preprocessor directive. + +2009-02-24 14:32 king + + * Source/cmDependsFortran.cxx: BUG: Fix Fortran implicit dependency + include path + + The previous change to Source/cmDependsFortran.cxx while + refactoring implicit dependency scanning configuration rules + completely broke loading of the include file search path while + scanning Fortran dependencies. This adds the line that should + have been added during the previous change to load the include + path correctly. + +2009-02-24 12:52 king + + * Source/CTest/: cmCTestSVN.cxx, cmCTestSVN.h, + cmCTestUpdateHandler.cxx, cmCTestVC.cxx, cmCTestVC.h: ENH: Factor + out VCS work tree revision checks + + This moves checks of the work tree revision before and after + update from cmCTestUpdateHandler::ProcessHandler into the + cmCTestVC hierarchy. + +2009-02-24 12:50 king + + * Source/CTest/: cmCTestUpdateHandler.cxx, cmCTestVC.cxx, + cmCTestVC.h: ENH: Factor out nightly start time computation + + Move generation of the nightly start time string from + cmCTestUpdateHandler::ProcessHandler into cmCTestVC. + +2009-02-24 12:50 king + + * Source/CTest/: cmCTestSVN.cxx, cmCTestSVN.h, + cmCTestUpdateHandler.cxx, cmCTestVC.cxx, cmCTestVC.h: ENH: Factor + out svn work tree cleanup + + This removes work tree cleanup from cmCTestUpdateHandler and adds + an interface for it in cmCTestVC with an implementation in + cmCTestSVN. + +2009-02-24 12:49 king + + * Source/CTest/: cmCTestVC.cxx, cmCTestVC.h: ENH: Create + cmCTestVC::RunChild and parse helpers + + This method will help VCS tool subclasses run child processes and + log the output while parsing it. + +2009-02-24 11:41 king + + * Source/cmInstallCommand.cxx, Source/cmInstallCommand.h, + Source/cmInstallDirectoryGenerator.cxx, + Source/cmInstallDirectoryGenerator.h, + Tests/SimpleInstall/CMakeLists.txt, + Tests/SimpleInstallS2/CMakeLists.txt: ENH: Add install(DIRECTORY) + option 'OPTIONAL' + + This adds the OPTIONAL option to the install(DIRECTORY) command. + It tells the installation rule that it is not an error if the + source directory does not exist. See issue #8394. + +2009-02-24 11:41 king + + * Source/cmInstallCommand.cxx: ENH: Refactor install(DIRECTORY) + argument parsing + + We previously used several booleans with at most one set to true + at a time to track argument parsing state. This refactors it to + use one enumeration. + +2009-02-24 11:08 king + + * Source/cmProcessTools.h: COMP: cmProcessTools::OutputParser + virtual dtor + + This class has virtual methods and therefore should have a + virtual destructor. + +2009-02-24 10:40 king + + * Source/: CMakeLists.txt, cmProcessTools.cxx, cmProcessTools.h: + ENH: Create cmProcessTools to parse child output + + This class provides a RunProcess method to run a child process + and send its output to an abstract parsing interface. This also + provides a simple line parser and logger implementing the parsing + interface. + +2009-02-24 10:39 king + + * Source/: CMakeLists.txt, CTest/cmCTestCVS.cxx, + CTest/cmCTestCVS.h, CTest/cmCTestSVN.cxx, CTest/cmCTestSVN.h, + CTest/cmCTestUpdateHandler.cxx: ENH: Add cmCTestCVS and + cmCTestSVN + + These cmCTestVC subclasses will implement interaction with CVS + and SVN tools. + +2009-02-24 10:39 king + + * Source/: CMakeLists.txt, CTest/cmCTestVC.cxx, CTest/cmCTestVC.h: + ENH: Create cmCTestVC for VCS interaction + + This creates cmCTestVC, the base for a forthcoming class + hierarchy to interact with version control systems. + +2009-02-24 09:34 david.cole + + * Source/CPack/cmCPackDragNDropGenerator.cxx: STYLE: Fix line + length violation. + +2009-02-24 09:09 king + + * Source/CTest/: cmCTestUpdateHandler.cxx, cmCTestUpdateHandler.h: + ENH: Factor out VCS tool detection + + In cmCTestUpdateHandler, this factors out version control tool + detection from the monolithic + cmCTestUpdateHandler::ProcessHandler to separate methods. This + also places priority on detection of the tool managing the source + tree since using any other tool will cause errors. + +2009-02-24 09:09 king + + * Source/CTest/: cmCTestUpdateHandler.cxx, cmCTestUpdateHandler.h: + ENH: Factor out initial checkout method + + This moves the initial checkout code from the monolithic + cmCTestUpdateHandler::ProcessHandler to a separate method + cmCTestUpdateHandler::InitialCheckout. + +2009-02-24 09:00 king + + * Utilities/CMakeLists.txt: ENH: Help cmake-gui docs generation on + Windows + + We use a custom command to run 'cmake-gui --help...' to generate + the documentation for the application. Since this is a Qt + application, the executable must find the Qt DLLs in order to + run. As a convenience, if QtCore4.dll appears next to qmake.exe, + we put its location in the PATH environment variable when running + the custom command on Windows. + +2009-02-24 00:49 lowman + + * Modules/FindBoost.cmake: BUG: Fix issue #8576 FindBoost + regression finding static libs, impacts MinGW and Intel/Windows + compilers. + +2009-02-24 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-23 16:54 king + + * Tests/CTestUpdateCommon.cmake: BUG: Fix CTest.UpdateCVS/SVN tests + for win slashes + + This fixes the tests to allow windows slashes in reported file + names in the generated Update.xml file. + +2009-02-23 15:59 king + + * Source/CTest/cmCTestUpdateHandler.cxx: ENH: Refactor quoting of + VCS tool command + + Previously we pre-quoted the command line tool path. This avoids + it by quoting the command everywhere it is used, thus preserving + access to the original, unquoted command. + +2009-02-23 15:59 king + + * Tests/CTestUpdateSVN.cmake.in: ENH: Test svn updates with space + in author name + + This enhances the CTest.UpdateSVN test with a space in the test + author name. It will check that author name parsing works + correctly. + +2009-02-23 15:59 king + + * Tests/: CTestUpdateCVS.cmake.in, CTestUpdateCommon.cmake, + CTestUpdateSVN.cmake.in: ENH: Enhance CTest.UpdateCVS/SVN tests + + This adds a source tree subdirectory to the content of the test + projects. It also smoke tests more than one revision worth of + changes. + +2009-02-23 15:58 king + + * Tests/CTestUpdateCommon.cmake: ENH: Better failure output from + CTest.Update* + + This teaches CTestUpdateCommon to report the process exit + condition from failed child processes executed during tests. + +2009-02-23 13:25 david.cole + + * Source/CPack/cmCPackDragNDropGenerator.cxx: ENH: Add license file + presentation to the Drag-N-Drop dmg file CPack generator. Fixes + issue #8442. Thanks to Clinton Stimpson for the patch. + +2009-02-23 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-22 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-21 14:43 hoffman + + * Source/QtDialog/CMakeSetup.cxx: BUG: make sure you can build + cmake without an X server + +2009-02-21 14:38 hoffman + + * Source/QtDialog/CMakeSetup.cxx: BUG: make sure the gui still + runs... + +2009-02-21 14:23 hoffman + + * Source/QtDialog/CMakeSetup.cxx: BUG: make sure an x server is not + required for the build + +2009-02-21 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-20 15:51 king + + * Source/CTest/: cmCTestBuildCommand.h, cmCTestConfigureCommand.h, + cmCTestCoverageCommand.h, cmCTestHandlerCommand.h, + cmCTestMemCheckCommand.h, cmCTestTestCommand.h: ENH: Document + APPEND option in ctest_* commands + + This adds documentation of the APPEND option to the configure, + build, test, memcheck, and coverage commands. The docs leave + specific semantics for the dashboard server to define. + +2009-02-20 15:50 king + + * Source/CTest/: cmCTestBuildCommand.h, cmCTestConfigureCommand.h, + cmCTestCoverageCommand.h, cmCTestMemCheckCommand.h, + cmCTestTestCommand.h, cmCTestUpdateCommand.h: ENH: Improve + ctest_* command documentation + + This corrects the terse documentation and adds detail to the full + documentation of some commands. It also normalizes the layout of + the documentation string endings to make adding lines easier. + +2009-02-20 15:50 king + + * Source/CTest/cmCTestSubmitCommand.h: ENH: More documentation for + ctest_submit command + + This clarifies the terse documentation and lists valid values for + PARTS. + +2009-02-20 14:03 king + + * Source/cmDocumentVariables.cxx: ENH: Clarify docs of old + *_OUTPUT_PATH vars + + This clarifies the documentation of EXECUTABLE_OUTPUT_PATH and + LIBRARY_OUTPUT_PATH to sound less like deprecation. + +2009-02-20 11:10 hoffman + + * CMakeLists.txt, ChangeLog.manual: ENH: final 2.6.3 commit remove + RC and clean changelog a bit + +2009-02-20 10:14 david.cole + + * Source/CPack/: cmCPackDragNDropGenerator.cxx, + cmCPackDragNDropGenerator.h: STYLE: Fix style line-too-long + violations. + +2009-02-20 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-19 16:04 clinton + + * Modules/FindQt4.cmake: + ENH: Support COMPONENTS argument to find_package(). See + bug #8542. + +2009-02-19 16:02 hoffman + + * Tests/BuildDepends/Project/CMakeLists.txt: ENH: merge in fix for + test on older macs + +2009-02-19 15:51 clinton + + * Modules/FindQt4.cmake: + ENH: Support version argument in find_package(). See bug + #8542. + +2009-02-19 15:24 hoffman + + * Tests/BuildDepends/Project/CMakeLists.txt: ENH: make sure + multiple archs are only tested when the work + +2009-02-19 11:53 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Source/cmGlobalXCodeGenerator.cxx, + Tests/BuildDepends/Project/CMakeLists.txt: BUG: fix xcode depend + issue again with a test + +2009-02-19 11:51 hoffman + + * Source/cmGlobalXCodeGenerator.cxx, + Tests/BuildDepends/Project/CMakeLists.txt: BUG: fix xcode depend + issue and add a test for it + +2009-02-19 11:20 david.cole + + * Source/cmGlobalXCodeGenerator.cxx: BUG: Fix issue #8253 - handle + xib file extension in Xcode projects so that double clicking on + xib files opens them up in Interface Builder. Thanks to + baron_roberts for the patch. + +2009-02-19 11:17 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Source/cmGlobalXCodeGenerator.cxx: BUG: fix xcode depend issue + again on branch + +2009-02-19 10:39 david.cole + + * Source/CPack/: cmCPackBundleGenerator.cxx, + cmCPackDragNDropGenerator.cxx, cmCPackDragNDropGenerator.h: BUG: + A little bit more refactoring from BundleGenerator to + DragNDropGenerator. See issue #8556. Thanks for Clinton Stimpson + for the patch. + +2009-02-19 10:31 hoffman + + * Source/cmGlobalXCodeGenerator.cxx: BUG: fix depend bug again for + Xcode + +2009-02-19 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-18 12:40 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Source/cmGlobalXCodeGenerator.cxx: ENH: put in fix for Xcode + rebuild issue on branch + +2009-02-18 12:09 hoffman + + * Source/cmGlobalXCodeGenerator.cxx: BUG: use the top level project + name for the xcode depend helper directory names + +2009-02-18 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-17 16:59 david.cole + + * Modules/Platform/Darwin.cmake: BUG: Allow third component of Mac + OSX sw_vers output to be empty. Mac OSX 10.5 was recently + reinstalled on dashmacmini3 and pointed out the fact that this + expression is faulty when the reported version is simply 10.5 + rather than 10.5.x... for example. This fixes it. + +2009-02-17 11:53 king + + * Source/: cmDependsFortranParser.cxx, cmDependsFortranParser.y: + BUG: Do not use 'char' type as array subscript + + This converts uses of 'char' as an array subscript to 'unsigned + char' to heed the warning from gcc. The subscript must be an + unsigned type to avoid indexing before the beginning of the + array. This change avoids a potential crash if input text + contains a byte value beyond 0x7f. + +2009-02-17 11:37 king + + * Source/CTest/: cmCTestUpdateHandler.cxx, cmCTestUpdateHandler.h: + ENH: Remove generation of unused Update.xml parts + + This removes generation of some Update.xml content that is not + used by any Dart1, Dart2, or CDash servers: - Revisions + elements - Directory attribute of File elements - File + elements within Author elements The content was generated only + because the original Dart1 Tcl client generated it, but the + content was never used. + +2009-02-17 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-16 18:09 hoffman + + * Utilities/CMakeLists.txt: ENH: add missiong install docs for + cmake-gui + +2009-02-16 14:06 hoffman + + * CMakeCPackOptions.cmake.in, CMakeLists.txt, ChangeLog.manual, + Source/QtDialog/CMakeLists.txt, + Source/QtDialog/QtDialogCPack.cmake.in: ENH: merge in a few more + changes for installer on windows and cmake-gui + +2009-02-16 13:56 martink + + * Source/cmIfCommand.h: ENH: fix style + +2009-02-16 11:17 hoffman + + * Source/QtDialog/QtDialogCPack.cmake.in: ENH: change name for + start menu entry + +2009-02-16 10:33 king + + * Modules/readme.txt: STYLE: Note find_package COMPONENTS in + modules doc + + This mentions the COMPONENTS option of find_package in the module + author documentation file "Modules/readme.txt". See issue #8539. + +2009-02-16 10:01 king + + * Source/CTest/cmCTestUpdateHandler.cxx: BUG: Fix svn update logic + for modified files + + The main svn update parsing loop in cmCTestUpdateHandler + previously had a logic error because the variable 'res' was not + reset for each iteration. For a locally modified file it would + report the update info for the previous non-modified file, or + nothing if there was no previous file. This fixes the logic by + setting variable 'res' in both control paths for each iteration. + See issue #8168. + +2009-02-16 10:00 king + + * Source/CTest/cmCTestUpdateHandler.cxx: STYLE: Fix spelling in + cmCTestUpdateHandler + + This renames the variable 'numModiefied' to 'numModified' to fix + its spelling. It also renames 'modifiedOrConflict' to + 'notLocallyModified' to describe its purpose (rather than the + opposite of its purpose). See issue #8168. + +2009-02-16 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-15 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-14 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-13 21:51 hoffman + + * Utilities/CMakeLists.txt, CMakeCPackOptions.cmake.in: ENH: add + cmake gui docs + +2009-02-13 18:52 clinton + + * Modules/FindQt4.cmake: + ENH: Allowing finding a relocated Qt installation which contains + a qt.conf to override the hardcoded paths in qmake. Fixes + #8532. + +2009-02-13 16:29 hoffman + + * CMakeCPackOptions.cmake.in: ENH: deprecate CMakeSetup + +2009-02-13 16:28 hoffman + + * Source/QtDialog/: CMakeLists.txt, QtDialogCPack.cmake.in: ENH: + take cmake-gui out of beta + +2009-02-13 15:49 king + + * Source/kwsys/CMakeLists.txt: ENH: Optionally label KWSys targets + and tests + + This provides an API for parent projects to use to specify values + to be set in the LABELS properties of KWSys libraries, + executables, and tests. + +2009-02-13 15:49 king + + * Source/kwsys/CMakeLists.txt: ENH: Add KWSys header files to + library targets + + This adds the configured KWSys header files to the library + targets that implement their APIs so that they show up in IDE + project files. + +2009-02-13 15:17 king + + * Source/CTest/: cmCTestCoverageHandler.cxx, + cmCTestCoverageHandler.h: ENH: Teach CTest to put labels in + coverage results + + This teaches CTest to include source file labels in coverage + dashboard submissions. The labels for each source are the union + of the LABELS property from the source file and all the targets + in which it is built. + +2009-02-13 15:16 king + + * Source/CTest/cmCTestCoverageHandler.cxx: STYLE: Remove unused + variable + +2009-02-13 11:49 king + + * Source/CTest/cmCTestBuildCommand.cxx: BUG: Fix + CTEST_USE_LAUNCHERS in dashboard scripts + + Since CTest does not currently load configuration settings + computed at CMake Configure time while running dashboard scripts, + the ctest_build command must honor the CTEST_USE_LAUNCHERS option + directly. + +2009-02-13 11:49 king + + * Source/cmCTest.h: STYLE: Add TODO comment about CTest + configuration + + Currently CTest does not load configuration settings computed at + CMake Configure time when running a dashboard script. This adds + a comment describing refactoring that might help resolve the + problem. + +2009-02-13 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-12 13:25 king + + * Source/cmGlobalGenerator.cxx: BUG: Fix logic of LabelFiles.txt + generation + + This fixes a dumb logic error which causes generation of + LabelFiles.txt to try to open the file once for every target with + labels. + +2009-02-12 13:00 king + + * Source/CTest/: cmCTestBuildHandler.cxx, cmCTestLaunch.cxx, + cmCTestLaunch.h: ENH: Report file names relative to source dir + + This teaches cmCTestLaunch to report source files that lie under + the top source directory relative to the top. + +2009-02-12 12:50 martink + + * Source/cmIfCommand.h: ENH: fix documentation and add docs on + parenthetical expressions + +2009-02-12 10:08 hoffman + + * Source/kwsys/SystemInformation.cxx: BUG: #8496 add support for + system info on haiku + +2009-02-12 10:01 king + + * Source/CTest/cmCTestBuildHandler.cxx: BUG: Do not drop build + fragments with same time + + When we collect Build.xml fragments generated by 'ctest + --launch', this lexicographically orders fragments with the same + time stamp on disk instead of incorrectly dropping duplicates. + +2009-02-12 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-11 15:18 king + + * Modules/: CTest.cmake, DartConfiguration.tcl.in: ENH: Create + include(CTest) launcher interface + + This defines a new CTest configuration variable + CTEST_USE_LAUNCHERS. When set to true it puts 'ctest --launch' + in RULE_LAUNCH_* properties and enables the CTest configuration + option 'UseLaunchers'. Currently this works only for Makefile + generators. + +2009-02-11 15:18 king + + * Source/CTest/: cmCTestBuildHandler.cxx, cmCTestBuildHandler.h: + ENH: Teach CTest dashboard builds to use launchers + + This defines a 'UseLaunchers' CTest configuration option. When + enabled, CTest skips log scraping from the Build step output. + Instead it defines the environment variable CTEST_LAUNCH_LOGS to + a log directory during the build. After the build it looks for + error-*.xml and warning-*.xml files containing fragments for + inclusion in Build.xml and submission. + + This is useful in conjuction with 'ctest --launch' and the + RULE_LAUNCH_* properties to get reliable, highly-granular build + failure reports. + +2009-02-11 13:05 hoffman + + * Utilities/Release/: ferrari_sgi64_release.cmake, + release_cmake.sh.in: ENH: add FFLAGS back into release script + +2009-02-11 11:57 king + + * Source/CTest/cmCTestLaunch.cxx: COMP: Do not use modern empty + init list syntax + + cmCTestLaunch first used an empty initializer list to + zero-initialize a buffer, but this is not supported on older + compilers. Instead we avoid the need for initialization + altogether. + +2009-02-11 11:31 king + + * Source/: CMakeLists.txt, ctest.cxx, CTest/cmCTestLaunch.cxx, + CTest/cmCTestLaunch.h: ENH: Create internal 'ctest --launch' tool + + This creates an undocumented 'ctest --launch' mode. It launches + a specified command and optionally records a failure in an xml + fragment. We will optionally use this in CTest's Build stage to + record per-rule build failure information when using Makefile + generators. + +2009-02-11 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-10 18:13 clinton + + * Modules/FindQt4.cmake: + ENH: Change FILEPATH to STRING for a list of libraries. + +2009-02-10 17:28 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/FindBoost.cmake, + Modules/FindQt4.cmake, Source/cmCacheManager.cxx, + Source/cmSystemTools.cxx: ENH: merge in some more fixes for RC 13 + +2009-02-10 17:25 hoffman + + * Source/cmCacheManager.cxx: ENH: fix fix for unc paths + +2009-02-10 16:08 hoffman + + * Source/cmCTest.cxx: ENH: add label global property to ctest + scripts + +2009-02-10 14:24 hoffman + + * Source/: cmCTest.cxx, CTest/cmCTestTestCommand.cxx, + CTest/cmCTestTestCommand.h, CTest/cmCTestTestHandler.cxx, + CTest/cmCTestTestHandler.h: ENH: add the ability to run tests by + labels + +2009-02-10 14:19 hoffman + + * Source/CTest/cmCTestMultiProcessHandler.cxx: BUG: partial fix for + 8056 -W now works with -j + +2009-02-10 12:56 hoffman + + * Modules/FindFLTK.cmake: ENH: change include command + +2009-02-10 08:52 king + + * Source/: cmLocalGenerator.cxx, cmLocalGenerator.h, + cmLocalUnixMakefileGenerator3.cxx: ENH: Add rule substitutions + useful for launchers + + This defines make rule substitutions , , + , and . They will be useful for + RULE_LAUNCH_* property values. + +2009-02-10 08:51 king + + * Modules/CTestTargets.cmake, Source/cmLocalGenerator.cxx, + Source/cmLocalGenerator.h, + Source/cmLocalUnixMakefileGenerator3.cxx, + Source/cmLocalUnixMakefileGenerator3.h, Source/cmMakefile.cxx, + Source/cmMakefileExecutableTargetGenerator.cxx, + Source/cmMakefileLibraryTargetGenerator.cxx, + Source/cmMakefileTargetGenerator.cxx, Source/cmTarget.cxx, + Source/cmake.cxx: ENH: Define RULE_LAUNCH_* properties + + This defines global, directory, and target properties + RULE_LAUNCH_COMPILE, RULE_LAUNCH_LINK, and RULE_LAUNCH_CUSTOM. + Their values specify 'launcher' command lines which are prefixed + to compile, link, and custom build rules by Makefile generators. + +2009-02-10 08:50 king + + * Source/: cmLocalUnixMakefileGenerator3.cxx, + cmLocalUnixMakefileGenerator3.h, + cmMakefileExecutableTargetGenerator.cxx, + cmMakefileLibraryTargetGenerator.cxx, + cmMakefileTargetGenerator.cxx, + cmMakefileUtilityTargetGenerator.cxx: ENH: Give target in which + custom commands build + + This gives the cmTarget instance for which custom command rules + are being generated to + cmLocalUnixMakefileGenerator3::AppendCustomCommands. It will be + useful in the future. + +2009-02-10 08:50 king + + * Source/: cmGlobalGenerator.cxx, cmGlobalGenerator.h, + cmSourceFile.cxx, cmTarget.cxx: ENH: Define target and source + property LABELS + + This creates a new LABELS property for targets and source files. + We write the labels of each target and its source files in + target-specific locations in the build tree for future use. + +2009-02-10 08:50 king + + * Source/: cmTarget.cxx, cmTarget.h: ENH: Define target-specific + support directories + + This creates method cmTarget::GetSupportDirectory to compute a + target-specific support directory in the build tree. It uses the + "CMakeFiles/.dir" convention already used by the Makefile + generators. The method will be useful for any code that needs to + generate per-target information into the build tree for use by + CMake tools that do not run at generate time. + +2009-02-10 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-09 23:05 lowman + + * Modules/FindCxxTest.cmake: STYLE: Clarified example to illustrate + need to call target_link_libraries() in response to Issue #8485. + Changed CMake commands to lowercase. Added licensing info to + copyright + +2009-02-09 22:39 lowman + + * Modules/FindBoost.cmake: BUG: Resolves Issue #8393, Remove + workarounds in FindBoost once UNC-Path bug is fixed + +2009-02-09 22:34 lowman + + * Modules/FindBoost.cmake: STYLE: Improved examples, spelling & + grammar in documentation + +2009-02-09 16:45 alex + + * Source/cmGlobalUnixMakefileGenerator3.h: COMP: remove unused + variable TargetSourceFileCount, it seems it is unused since + version 1.88 of cmGlobalUnixMakefileGenerator3.cxx patch by + Daniel DOT Teske AT Nokia DOT com + + Alex + +2009-02-09 16:45 king + + * Source/kwsys/SystemTools.cxx: BUG: Work around broken + GetLongPathName case + + On Windows the GetLongPathName API function does not work on some + filesystems even if the file exists. In this case we should just + use the original long path name and not the GetShortPathName + result. See issue #8480. + +2009-02-09 16:42 clinton + + * Modules/FindQt4.cmake: + ENH: Support .hpp with automoc. + +2009-02-09 16:36 alex + + * Source/: cmLocalUnixMakefileGenerator3.cxx, + cmLocalUnixMakefileGenerator3.h: STYLE: fix two typos in the + comments, patch from Daniel DOT Teske AT Nokia DOT com, QtCreator + developer + + Alex + +2009-02-09 16:25 chris + + * Modules/FindDevIL.cmake: ENH: Made the documentation for + FindDevIL.cmake cleaner. Changed the XXX_LIBRARYs to + XXX_LIBRARIES. + +2009-02-09 09:23 hoffman + + * Tests/CMakeTests/GetFilenameComponentRealpathTest.cmake.in: file + GetFilenameComponentRealpathTest.cmake.in was added on branch + CMake-2-6 on 2009-03-23 18:04:12 +0000 + +2009-02-09 09:23 king + + * Source/cmGetFilenameComponentCommand.cxx, + Source/cmGetFilenameComponentCommand.h, + Tests/CMakeTests/CMakeLists.txt, + Tests/CMakeTests/GetFilenameComponentRealpathTest.cmake.in: ENH: + Add get_filename_component(... REALPATH) + + This patch from Philip Lowman creates a REALPATH mode in the + get_filename_component command. It is like ABSOLUTE, but will + also resolve symlinks (which ABSOLUTE once did but was broken + long ago). See issue #8423. + +2009-02-09 09:23 king + + * Source/kwsys/: SystemTools.cxx, SystemTools.hxx.in: BUG: Fix + GetRealPath when realpath fails + + This patch from Philip Lowman teaches SystemTools::GetRealPath to + deal with paths that do not exist by dealing with the case that + realpath returns NULL. See issue #8423. + +2009-02-09 08:25 hoffman + + * Source/cmCacheManager.cxx: BUG: fix for 0008378, lists with + FILEPATH and UNC //server/path fail + +2009-02-09 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-08 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-07 12:23 clinton + + * Modules/FindQt4.cmake: + BUG: When detecting if qmake executable is changed, don't error + if path contains regex chars. + +2009-02-07 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-06 16:16 hoffman + + * ChangeLog.manual: ENH: fix comment + +2009-02-06 16:15 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/FindQt4.cmake, + Modules/UseQt4.cmake, Source/cmGlobalUnixMakefileGenerator3.cxx, + Source/cmMakefileExecutableTargetGenerator.cxx, Source/cmake.cxx: + ENH: fix osx bundle re-config issue on branch RC 12 + +2009-02-06 11:49 king + + * Source/cmake.cxx: BUG: Fix OS X FW symlink byproduct dependencies + + When testing whether to re-run CMake, a byproduct may be a + symlink. If so, the existence of the link is important rather + than the link's target. See issue #8465. + +2009-02-06 11:18 king + + * Source/: cmGlobalUnixMakefileGenerator3.cxx, cmake.cxx: BUG: Fix + OS X AppBundle/FW byproducts dependencies + + App Bundle and Framework directories, symlinks, and Info.plist + files we create during generation are byproducts, not outputs. + We should re-run CMake only when they are missing, not when they + are old. See issue #8465. + +2009-02-06 09:08 king + + * Source/: cmXMLSafe.cxx, cmXMLSafe.h: COMP: Avoid parameter/member + shadow in cmXMLSafe + + A cmXMLSafe constructor named its parameter 'str' which shadowed + the name of the 'str' method. This renames the parameter to + avoid the conflict warning. + +2009-02-06 09:03 king + + * Source/cmMakefileExecutableTargetGenerator.cxx: BUG: Do not + re-generate after a AppBundle build + + A previous change accidentally added the MacOS content directory + and Info.plist files created for MACOSX_BUNDLE executables to the + list of CMake input files. This causes CMake to re-generate the + project too often. These items should be added to the list of + CMake output files. + +2009-02-06 08:33 king + + * Source/cmGetFilenameComponentCommand.cxx, + Source/cmGetFilenameComponentCommand.h, + Tests/CMakeTests/CMakeLists.txt, + Tests/CMakeTests/GetFilenameComponentSymlinksTest.cmake.in: BUG: + Alternative fix to bug #8423 + + The patch used to fix this bug used SystemTools::GetRealPath + which works only for existing files. It broke the case of using + the command get_filename_component for a non-existing file. + Also, it changed long-standing behavior in a possibly + incompatible way even for existing files. This reverts the + original fix and instead updates the documentation to be + consistent with the behavior. + +2009-02-06 08:15 king + + * Source/cmCMakePolicyCommand.h: ENH: Clarify cmake_policy(VERSION) + documentation + + The previous documentation could be interpreted as setting + policies newer than the given version to OLD instead of unset. + This clarifies it. + +2009-02-06 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-05 23:01 clinton + + * Modules/: FindQt4.cmake, UseQt4.cmake: + ENH: Add support for building with Qt's ActiveX support on + Windows. + +2009-02-05 17:09 king + + * Source/cmXMLSafe.cxx: COMP: Avoid warning about signed-char + comparison + + On some compilers 'char' is signed and is therefore always equal + to or less than 0x7f. In order to avoid the compiler warning we + perform the comparison with an unsigned char type. + +2009-02-05 16:31 king + + * Source/: CMakeLists.txt, cmCTest.cxx, cmCTest.h, + cmSystemTools.cxx, cmSystemTools.h, cmXMLSafe.cxx, cmXMLSafe.h, + CPack/cmCPackGenerator.cxx, CTest/cmCTestBuildHandler.cxx, + CTest/cmCTestConfigureHandler.cxx, + CTest/cmCTestCoverageHandler.cxx, + CTest/cmCTestMemCheckHandler.cxx, CTest/cmCTestTestHandler.cxx, + CTest/cmCTestUpdateHandler.cxx: ENH: Create cmXMLSafe to help + escapes in XML + + This class provides easy syntax to efficiently insert blocks of + data into XML documents with proper escapes. It replaces the old + cmCTest::MakeXMLSafe and cmSystemTools::MakeXMLSafe methods which + allocated extra memory instead of directly streaming the data. + +2009-02-05 11:04 hoffman + + * Source/CMakeLists.txt: ENH: merge in cmakelist file that uses + drag n drop + +2009-02-05 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-04 22:04 hoffman + + * Source/CPack/: cmCPackDragNDropGenerator.cxx, + cmCPackDragNDropGenerator.h: ENH: add missing files + +2009-02-04 18:24 david.cole + + * Modules/UntarFile.cmake: BUG: Add debug message calls to figure + out ExternalProject test failure on AIX dashboard. + +2009-02-04 17:04 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/FindDoxygen.cmake, + Modules/FindGDAL.cmake, Modules/FindLua50.cmake, + Modules/FindLua51.cmake, Modules/FindMPEG2.cmake, + Modules/FindOpenSceneGraph.cmake, Modules/FindOpenThreads.cmake, + Modules/FindProducer.cmake, Modules/FindQt4.cmake, + Modules/Findosg.cmake, Modules/FindosgAnimation.cmake, + Modules/FindosgDB.cmake, Modules/FindosgFX.cmake, + Modules/FindosgGA.cmake, Modules/FindosgIntrospection.cmake, + Modules/FindosgManipulator.cmake, Modules/FindosgParticle.cmake, + Modules/FindosgProducer.cmake, Modules/FindosgShadow.cmake, + Modules/FindosgSim.cmake, Modules/FindosgTerrain.cmake, + Modules/FindosgText.cmake, Modules/FindosgUtil.cmake, + Modules/FindosgViewer.cmake, Modules/FindosgVolume.cmake, + Modules/FindosgWidget.cmake, Modules/Findosg_functions.cmake, + Modules/Platform/Darwin.cmake, Modules/Platform/Haiku.cmake, + Source/cmInstallFilesCommand.cxx, + Source/cmInstallProgramsCommand.cxx, + Source/cmLinkDirectoriesCommand.h, Source/cmLocalGenerator.cxx, + Source/kwsys/DynamicLoader.cxx, + Source/kwsys/DynamicLoader.hxx.in: ENH: merge in a few more + changes for RC 11 + +2009-02-04 14:34 king + + * Source/CTest/cmCTestBuildHandler.cxx: ENH: Re-order generation of + build summary and xml + + This moves the error/warning count summary printed by + cmCTestBuildHandler to after Build.xml is generated. Later we + will compute the counts during generation of the xml. + +2009-02-04 14:34 king + + * Source/CTest/: cmCTestBuildHandler.cxx, cmCTestBuildHandler.h: + ENH: Refactor Build.xml generation + + This divides cmCTestBuildHandler::GenerateDartBuildOutput into + three methods to generate the header, content, and footer + components of Build.xml files. It will allow the content + generation to be replaced later. + +2009-02-04 12:38 david.cole + + * Source/CTest/cmCTestSubmitHandler.cxx: COMP: Iterator version of + std::set not available with vs6 implementation of STL. Use + explicit iteration to insert individual elements one at a time. + Sigh. + +2009-02-04 11:44 hoffman + + * CMakeLists.txt, CTestConfig.cmake, CTestCustom.cmake.in, + ChangeLog.manual, Modules/CPack.OSXX11.Info.plist.in, + Modules/CPack.RuntimeScript.in, Modules/CPack.cmake, + Modules/FindBoost.cmake, Modules/FindCxxTest.cmake, + Modules/FindDevIL.cmake, Modules/FindDoxygen.cmake, + Modules/FindFLTK.cmake, Modules/FindKDE3.cmake, + Modules/FindKDE4.cmake, Modules/FindOpenMP.cmake, + Modules/FindOpenThreads.cmake, Modules/FindQt4.cmake, + Modules/FindRTI.cmake, Modules/Findosg.cmake, + Modules/FindosgAnimation.cmake, Modules/FindosgDB.cmake, + Modules/FindosgFX.cmake, Modules/FindosgGA.cmake, + Modules/FindosgIntrospection.cmake, + Modules/FindosgManipulator.cmake, Modules/FindosgParticle.cmake, + Modules/FindosgProducer.cmake, Modules/FindosgShadow.cmake, + Modules/FindosgSim.cmake, Modules/FindosgTerrain.cmake, + Modules/FindosgText.cmake, Modules/FindosgUtil.cmake, + Modules/FindosgViewer.cmake, Modules/FindosgVolume.cmake, + Modules/FindosgWidget.cmake, Modules/Findosg_functions.cmake, + Modules/UseQt4.cmake, Source/cmBootstrapCommands.cxx, + Source/cmCMakePolicyCommand.cxx, Source/cmCMakePolicyCommand.h, + Source/cmCoreTryCompile.cxx, + Source/cmExportBuildFileGenerator.cxx, + Source/cmFindPackageCommand.cxx, Source/cmFindPackageCommand.h, + Source/cmForEachCommand.cxx, Source/cmForEachCommand.h, + Source/cmFunctionBlocker.h, Source/cmFunctionCommand.cxx, + Source/cmFunctionCommand.h, + Source/cmGlobalVisualStudio71Generator.cxx, + Source/cmGlobalVisualStudio7Generator.cxx, + Source/cmGlobalVisualStudio7Generator.h, + Source/cmGlobalXCodeGenerator.cxx, Source/cmIfCommand.cxx, + Source/cmIfCommand.h, Source/cmIncludeCommand.cxx, + Source/cmIncludeCommand.h, + Source/cmLocalVisualStudio7Generator.cxx, + Source/cmMacroCommand.cxx, Source/cmMacroCommand.h, + Source/cmMakefile.cxx, Source/cmMakefile.h, + Source/cmPolicies.cxx, Source/cmPolicies.h, Source/cmTarget.cxx, + Source/cmUnsetCommand.cxx, Source/cmUnsetCommand.h, + Source/cmWhileCommand.cxx, Source/cmWhileCommand.h, + Source/CPack/cmCPackBundleGenerator.cxx, + Source/CPack/cmCPackBundleGenerator.h, + Source/CPack/cmCPackGeneratorFactory.cxx, + Source/CPack/cmCPackLog.cxx, + Source/CPack/cmCPackNSISGenerator.cxx, + Source/CPack/cmCPackOSXX11Generator.cxx, Source/CPack/cpack.cxx, + Tests/CMakeLists.txt, Tests/PolicyScope/Bar.cmake, + Tests/PolicyScope/CMakeLists.txt, + Tests/PolicyScope/FindFoo.cmake, Tests/PolicyScope/main.c, + Tests/Unset/CMakeLists.txt, Tests/Unset/unset.c: ENH: merge in + changes to 2.6 RC 10 + +2009-02-04 10:34 king + + * Source/: cmInstallFilesCommand.cxx, cmInstallProgramsCommand.cxx, + cmLocalGenerator.cxx: BUG: Fix old-style install to prefix top + + The old install_files, install_programs, and install_targets + commands used to permit installation to the top of the prefix by + specifying destination '/'. This was broken in 2.6.0 to 2.6.2 by + changes to enforce valid destinations that did not account for + this case. This change fixes the case by converting the install + destination to '.' which is the new-style way to specify the top + of the installation prefix. + +2009-02-04 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-03 11:52 david.cole + + * Source/CTest/: cmCTestSubmitCommand.cxx, cmCTestSubmitCommand.h, + cmCTestSubmitHandler.cxx, cmCTestSubmitHandler.h: ENH: Add FILES + arg to the ctest_submit command. BUG: Propagate the IsCDash + setting properly to the ctest configuration during a submit. + Also, do not propagate TriggerSite for projects submitting to + CDash. No triggers are necessary with CDash. + +2009-02-03 11:27 hoffman + + * Source/kwsys/: DynamicLoader.cxx, DynamicLoader.hxx.in: ENH: fix + dynamic loading on haiku + +2009-02-03 08:38 hoffman + + * Modules/FindKDE3.cmake: BUG: fix potential issue with empty + strings + +2009-02-03 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-02 16:30 hoffman + + * Modules/FindMPEG2.cmake: BUG: include should not have .cmake + +2009-02-02 14:36 king + + * Source/cmMakefileTargetGenerator.cxx: BUG: Fix preprocess and + assembly rule expansion + + The recent change to avoid expanding rule variables in + informational and 'cd' commands broke the logical order in + generation of preprocess and assembly rules. This corrects the + order. + +2009-02-02 14:36 king + + * Source/cmGlobalGenerator.cxx: COMP: Fix rule hash code during + bootstrap + + During bootstrap we do not bother with rule hashing. This + updates the dummy implementation to account for the recent change + in rule hash method signatures. + +2009-02-02 13:28 king + + * Source/cmMakefileTargetGenerator.cxx: BUG: Do not expand rule + variables in info rules + + Previously the makefile generator would expand rule variables + even on its progress and echo commands for object compilation + rules (but not for link rules). This fixes the implementation to + only expand rule variables on user-specified rules. + +2009-02-02 13:28 king + + * Source/: cmGlobalGenerator.cxx, cmGlobalGenerator.h, + cmLocalUnixMakefileGenerator3.cxx, + cmLocalUnixMakefileGenerator3.h, cmMakefileTargetGenerator.cxx: + ENH: Refactor custom command rule hashing + + This simplifies computation of custom command rule hashes to hash + content exactly chosen as the custom commands are generated. + Unfortunately this will change the hashes of existing build trees + from earlier CMake versions, but this is not a big deal. The + change is necessary so that in the future we can make optional + adjustments to custom command lines at generate time without + changing the hashes every time the option is changed. + +2009-02-02 13:27 king + + * Source/: cmMakefile.cxx, cmake.cxx: ENH: More robust property + lookup + + This teaches cmMakefile::GetProperty and cmake::GetProperty + methods to return NULL when the property name is NULL, making + them more robust and consistent with the behavior of + cmTarget::GetProperty. + +2009-02-02 13:24 king + + * Source/CTest/: cmCTestMemCheckHandler.cxx, + cmCTestTestHandler.cxx, cmCTestTestHandler.h: ENH: Put test + labels in MemCheck results + + This refactors generation of element headers and footers + in cmCTestTestHandler and re-uses it in cmCTestMemCheckHandler. + The change removes duplicate code and enables the new + element for MemCheck results. + +2009-02-02 09:42 king + + * Source/cmTargetLinkLibrariesCommand.h: ENH: Clarify + target_link_libraries docs + + The target_link_libraries command supports flags as well as + libraries. This makes the support explicit in the documentation. + +2009-02-02 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-02-01 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-31 13:57 hoffman + + * Modules/FindOpenSceneGraph.cmake: file FindOpenSceneGraph.cmake + was added on branch CMake-2-6 on 2009-02-04 22:04:48 +0000 + +2009-01-31 13:57 lowman + + * Modules/FindOpenSceneGraph.cmake: BUG: Fixes configure error if + you don't specify a version with find_package() + +2009-01-31 01:50 lowman + + * Modules/FindGDAL.cmake: BUG: Fix library detection for GDAL on + most Linux distributions (Issue #7445) + +2009-01-31 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-30 20:09 hoffman + + * Modules/Findosg_functions.cmake: file Findosg_functions.cmake was + added on branch CMake-2-6 on 2009-02-04 16:44:16 +0000 + +2009-01-30 20:09 lowman + + * Modules/: FindOpenSceneGraph.cmake, Findosg.cmake, + Findosg_functions.cmake: ENH: Added FindOpenSceneGraph.cmake + which is intended to wrap any of the existing Findosg* modules + (or even user specified modules in CMAKE_MODULE_PATH) and + aggregate the include dirs & libraries while providing a + COMPONENT frontend and version checking (Fixes Issue #6973). + Also added a note to Findosg.cmake to refer new users to the + module. + +2009-01-30 16:55 lowman + + * Modules/: FindOpenThreads.cmake, Findosg_functions.cmake: ENH: + Added OSG_ROOT as supported env var (it's in the wild already). + Cleaned up FindOpenThreads to support PATH_SUFFIXES. Removed + superfluous WIN32 registry checks which should have been $ENV{} + checks. + +2009-01-30 15:13 lowman + + * Modules/: FindDoxygen.cmake, FindOpenThreads.cmake, + FindProducer.cmake: BUG: Fix other modules not respecting QUIET + and REQUIRED + +2009-01-30 14:33 hoffman + + * Modules/FindosgVolume.cmake: file FindosgVolume.cmake was added + on branch CMake-2-6 on 2009-02-04 16:44:16 +0000 + +2009-01-30 14:33 hoffman + + * Modules/FindosgWidget.cmake: file FindosgWidget.cmake was added + on branch CMake-2-6 on 2009-02-04 16:44:16 +0000 + +2009-01-30 14:33 hoffman + + * Modules/FindosgAnimation.cmake: file FindosgAnimation.cmake was + added on branch CMake-2-6 on 2009-02-04 16:44:13 +0000 + +2009-01-30 14:33 lowman + + * Modules/: Findosg.cmake, FindosgAnimation.cmake, FindosgDB.cmake, + FindosgFX.cmake, FindosgGA.cmake, FindosgIntrospection.cmake, + FindosgManipulator.cmake, FindosgParticle.cmake, + FindosgProducer.cmake, FindosgShadow.cmake, FindosgSim.cmake, + FindosgTerrain.cmake, FindosgText.cmake, FindosgUtil.cmake, + FindosgViewer.cmake, FindosgVolume.cmake, FindosgWidget.cmake: + BUG: The QUIET and REQUIRED find attributes on each Findosg* + module were not being respected. + +2009-01-30 14:29 lowman + + * Modules/Findosg_functions.cmake: ENH: Added a mark_as_advanced() + wrapper function. + +2009-01-30 03:02 lowman + + * Modules/: FindLua50.cmake, FindLua51.cmake: BUG: Fixes detection + of lua libraries installed from FreeBSD ports (Issue #8421) + +2009-01-30 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-29 15:23 david.cole + + * Source/cmCoreTryCompile.cxx: ENH: Emit a little more information + in the error message when the output file is not found during a + core try compile. + +2009-01-29 14:57 david.cole + + * Modules/Platform/Darwin.cmake: BUG: Remove unnecessary double + quotes from SET statements. Hopefully resolves the strange and + difficult to diagnose (or reproduce) test failures on the + dashmacmini2 Continuous dashboard. + +2009-01-29 14:31 hoffman + + * Source/cmake.cxx: BUG: fix for #8418 -E chdir should return fail + of dir does not exist + +2009-01-29 14:14 king + + * Source/cmLinkDirectoriesCommand.h: ENH: Docs for relative paths + in link_directories + + The link_directories command treats relative paths differently + from most CMake commands. This notes the difference in the + documentation. See issue #8377. + +2009-01-29 13:41 king + + * Modules/Platform/Darwin.cmake: BUG: Fix OS X dylib version flags + for more linkers + + Some OS X linkers want a 'dylib_' prefix on the + -compatiblity_version and -current_version flags while others do + not. This passes the flags through gcc instead since it never + wants the prefix and translates the flags for the linker + correctly. + +2009-01-29 13:26 clinton + + * Modules/FindQt4.cmake: + ENH: Also find .moc files if there are spaces between # and + include. Fixes #8433. + +2009-01-29 11:57 hoffman + + * Tests/CMakeTests/GetFilenameComponentSymlinksTest.cmake.in: ENH: + add missing file + +2009-01-29 11:42 hoffman + + * Modules/Platform/Haiku.cmake: BUG: fix for # 8413 add more haiku + searching + +2009-01-29 11:39 hoffman + + * Source/cmGetFilenameComponentCommand.cxx, + Tests/CMakeTests/CMakeLists.txt: BUG: fix for #8423 + +2009-01-29 09:26 hoffman + + * Source/CTest/cmCTestCoverageHandler.cxx: STYLE: fix warning + +2009-01-29 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-28 22:56 lowman + + * Modules/FindDoxygen.cmake: STYLE: Reworded some of the OS-X code + comments + +2009-01-28 16:56 hoffman + + * Source/CTest/cmCTestCoverageHandler.cxx: STYLE: fix warning + +2009-01-28 15:04 clinton + + * Modules/UseQt4.cmake: + ENH: Better way to add framework includes. + +2009-01-28 12:55 hoffman + + * Modules/FindOpenMP.cmake: ENH: clean up status and change order + for more common compilers first + +2009-01-28 12:55 hoffman + + * Modules/FindOpenMP.cmake: file FindOpenMP.cmake was added on + branch CMake-2-6 on 2009-02-04 16:44:02 +0000 + +2009-01-28 12:45 hoffman + + * Modules/FindOpenMP.cmake: ENH: add openmp support + +2009-01-28 06:10 david.cole + + * Modules/Platform/Darwin.cmake: BUG: Fix careless typo that only + caused test failures on clean builds... + +2009-01-28 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-27 15:51 david.cole + + * Modules/Platform/Darwin.cmake: BUG: Try to fix the universal + binary continuous dashboard on dashmacmini2. I am deducing that + the value of CMAKE_OSX_ARCHITECTURES_DEFAULT is responsible for + the failure, although I cannot reproduce it on other builds or + even by running the test via ctest interactively *on* the + continuous dashboard's build... + +2009-01-27 11:50 david.cole + + * Modules/Platform/Darwin.cmake: BUG: Only set + CMAKE_OSX_DEPLOYMENT_TARGET on Mac OSX 10.4 or later. The gcc + that runs on 10.3 and earlier does not understand the compiler + flag it maps to... + +2009-01-27 11:35 david.cole + + * Source/cmCoreTryCompile.cxx: STYLE: Emit filenames in try_compile + error message to get more information from the Continuous + dashboard test that is failing. + +2009-01-27 10:58 king + + * Source/: cmCTest.cxx, cmCTest.h: BUG: Reset file submission list + on test restart + + When running in script mode it is possible to run multiple + separate dashboard submissions in one cmCTest instance. The + recent refactoring of file submission lists into parts failed to + clear the submission lists when starting a new dashboard + (ctest_start or ctest_update). Only the unused old submission + set was cleared. This fixes the refactored version to remove the + old submission set completely and also clear the part-wise lists. + +2009-01-27 10:58 king + + * Source/CTest/cmCTestSubmitHandler.cxx: BUG: Fix CTest submit-only + operation + + We need to initialize cmCTestSubmitHandler on construction to + make sure all parts get enabled by default. The recent fix to + re-enable all parts on initialization broke submit-only + operations because the handler did not initialize on + construction. This also removes duplicate initialization code. + +2009-01-27 10:34 hoffman + + * Utilities/Release/README, + Utilities/Release/create-cmake-release.cmake, + Utilities/Release/release_cmake.cmake, + Utilities/Release/release_cmake.sh.in, Tests/CMakeLists.txt: ENH: + change to use CMAKE_CREATE_VERSION from CMAKE_VERSION as + CMAKE_VERSION is auto-defined now + +2009-01-27 10:30 david.cole + + * Modules/Platform/Darwin.cmake, Source/cmGlobalXCodeGenerator.cxx, + Source/cmLocalGenerator.cxx: BUG: Fix issue #6195. Add + CMAKE_OSX_DEPLOYMENT_TARGET cache variable to specify the target + deployment runtime OS version of the built executables on Mac + OSX. Thanks to Mike Jackson for the patch. + +2009-01-27 10:26 hoffman + + * Source/cmLocalVisualStudio7Generator.cxx: BUG: fix for 7845, idl + files compile even with headerfile only on + +2009-01-27 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-26 10:12 clinton + + * Modules/FindQt4.cmake: + BUG: Fixed recent regression when finding some includes. + +2009-01-26 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-25 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-24 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-23 17:37 clinton + + * Modules/UseQt4.cmake: + ENH: Should have a -F for framework includes on Mac. Fixes + ParaView build with Qt 4.5 on Mac. + +2009-01-23 16:52 clinton + + * Modules/FindQt4.cmake: + ENH: Add convenience for identifying Cocoa based Qt. + +2009-01-23 13:36 david.cole + + * Modules/CPack.cmake: ENH: Turn off CPACK_BINARY_TBZ2 and + CPACK_BINARY_ZIP by default. Strictly speaking, this changes + behavior from cpack 2.6, but now that cpack returns a non-zero + exit code when it encounters an error, and it is an error to try + to use a generator that is not available... It makes sense to + turn these off by default since not everybody has these + generators installed. It is easy for a project to turn these + options back on if they need to: simply set(CPACK_BINARY_TBZ2 ON) + or set(CPACK_BINARY_ZIP ON) before include(CPack) in your + CMakeLists.txt... + +2009-01-23 12:20 hoffman + + * Source/cmPolicies.h: ENH: try to fix vs6 build + +2009-01-23 00:30 lowman + + * Modules/FindFLTK.cmake: ENH: Better support for "fltk-config" + binary, added options so the user doesn't have to have everything + in order for FLTK_FOUND to be true. #7809 + +2009-01-23 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-22 14:23 david.cole + + * Source/CPack/cmCPackBundleGenerator.h: BUG: Forgot to change + parent class in cmCPackTypeMacro when I added + cmCPackDragNDropGenerator. Fix it now that it really matters. + (The BundleGenerator test started failing after the last commit. + This fixes it.) + +2009-01-22 13:56 david.cole + + * Source/CPack/: cmCPackBundleGenerator.cxx, + cmCPackBundleGenerator.h, cmCPackLog.cxx, cpack.cxx: BUG: Fix + issue #8383. Avoid crashing when using the Bundle CPack generator + and CPACK_BUNDLE_NAME is not set. Instead, fail gracefully giving + an informative error message and non-zero exit code. + +2009-01-22 13:18 hoffman + + * Tests/PolicyScope/Bar.cmake: file Bar.cmake was added on branch + CMake-2-6 on 2009-02-04 16:44:18 +0000 + +2009-01-22 13:18 hoffman + + * Tests/PolicyScope/CMakeLists.txt: file CMakeLists.txt was added + on branch CMake-2-6 on 2009-02-04 16:44:18 +0000 + +2009-01-22 13:18 hoffman + + * Tests/PolicyScope/FindFoo.cmake: file FindFoo.cmake was added on + branch CMake-2-6 on 2009-02-04 16:44:19 +0000 + +2009-01-22 13:18 king + + * Source/cmCMakePolicyCommand.h, Source/cmFindPackageCommand.cxx, + Source/cmFindPackageCommand.h, Source/cmIncludeCommand.cxx, + Source/cmIncludeCommand.h, Source/cmMakefile.cxx, + Source/cmMakefile.h, Source/cmPolicies.cxx, Source/cmPolicies.h, + Tests/PolicyScope/Bar.cmake, Tests/PolicyScope/CMakeLists.txt, + Tests/PolicyScope/FindFoo.cmake: ENH: Isolate policy changes in + included scripts + + Isolation of policy changes inside scripts is important for + protecting the including context. This teaches include() and + find_package() to imply a cmake_policy(PUSH) and + cmake_policy(POP) around the scripts they load, with a + NO_POLICY_SCOPE option to disable the behavior. This also + creates CMake Policy CMP0011 to provide compatibility. See issue + #8192. + +2009-01-22 13:16 hoffman + + * Tests/PolicyScope/main.c: file main.c was added on branch + CMake-2-6 on 2009-02-04 16:44:19 +0000 + +2009-01-22 13:16 king + + * Source/cmCMakePolicyCommand.h, Source/cmFunctionCommand.cxx, + Source/cmFunctionCommand.h, Source/cmMacroCommand.cxx, + Source/cmMacroCommand.h, Source/cmMakefile.cxx, + Source/cmMakefile.h, Tests/CMakeLists.txt, + Tests/PolicyScope/CMakeLists.txt, Tests/PolicyScope/main.c: ENH: + Better policies for functions and macros + + This teaches functions and macros to use policies recorded at + creation time when they are invoked. It restores the policies as + a weak policy stack entry so that any policies set by a function + escape to its caller as before. + +2009-01-22 13:16 king + + * Source/cmCMakePolicyCommand.h: ENH: Improve stack discussion in + cmake_policy + + This re-organizes the discussion of the policy stack in + documentation of the cmake_policy() command. The new + organization clearer and easier to extend with new information. + +2009-01-22 13:16 king + + * Source/: cmMakefile.cxx, cmMakefile.h: ENH: Create notion of a + 'weak' policy stack entry + + A 'weak' poilcy stack entry responds normally to queries. + However, setting a policy in a weak entry will recursively set + the policy in the next entry too. This also gives the internal + interface to create a weak entry the option to provide an initial + PolicyMap for it. + +2009-01-22 12:12 hoffman + + * Source/CPack/cmCPackDragNDropGenerator.cxx: file + cmCPackDragNDropGenerator.cxx was added on branch CMake-2-6 on + 2009-02-05 03:04:09 +0000 + +2009-01-22 12:12 hoffman + + * Source/CPack/cmCPackDragNDropGenerator.h: file + cmCPackDragNDropGenerator.h was added on branch CMake-2-6 on + 2009-02-05 03:04:18 +0000 + +2009-01-22 12:12 david.cole + + * Modules/CPack.cmake, Source/CMakeLists.txt, + Source/CPack/cmCPackBundleGenerator.cxx, + Source/CPack/cmCPackBundleGenerator.h, + Source/CPack/cmCPackDragNDropGenerator.cxx, + Source/CPack/cmCPackDragNDropGenerator.h, + Source/CPack/cmCPackGeneratorFactory.cxx, Tests/CMakeLists.txt: + BUG: Fix issue #8402. Add a drag and drop bundle generator to the + Mac build of CPack. Add a test of it in the CPackComponents test. + Thanks to Clinton Stimpson for the patch. + +2009-01-22 10:57 king + + * Source/: cmCMakePolicyCommand.cxx, cmMakefile.cxx, cmMakefile.h: + ENH: Create policy scope barriers + + This creates a barrier mechanism to prevent user code from using + cmake_policy(POP) to pop a scope it didn't push with + cmake_policy(PUSH). + +2009-01-22 10:57 king + + * Source/cmMakefile.h: ENH: Make policy push/pop methods private + + This makes cmMakefile::PushPolicy and cmMakefile::PopPolicy + private so that any outside place that uses them needs to use the + PolicyPushPop helper in an automatic variable. We grant an + exception to cmCMakePolicyCommand so it can implement + cmake_policy(PUSH) and cmake_policy(POP). + +2009-01-22 10:56 king + + * Source/cmFindPackageCommand.cxx: ENH: Refactor find_package + version file scoping + + This converts the variable and policy scope protection + find_package() uses when loading version files to use automatic + variables. + +2009-01-22 10:56 king + + * Source/: cmMakefile.cxx, cmMakefile.h: ENH: Create automatic + policy push/pop helper + + This creates cmMakefile::PolicyPushPop to push and pop policy + scope automatically. It also enforces balanced push/pop pairs + inside the scope it handles. + +2009-01-22 10:56 king + + * Source/: cmMakefile.cxx, cmMakefile.h, cmPolicies.h: ENH: + Refactor policy stack representation + + This defines PolicyMap as a public member of cmPolicies. Its + previous role as a policy stack entry is now called + PolicyStackEntry and represented as a class to which more + information can be added later. + +2009-01-22 10:22 david.cole + + * Tests/CMakeLists.txt: BUG: Avoid trying to package the X11 test + on Windows when there is no NSIS installer available. + +2009-01-22 07:16 david.cole + + * Source/CTest/cmCTestTestHandler.cxx: BUG: Fix issue #8363. Wrap + output with MakeXMLSafe calls so that the generated XML files are + valid, parse-able XML. + +2009-01-22 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-21 23:52 lowman + + * Modules/FindFLTK.cmake: BUG: Fixes detection of FLTK on Gentoo + (Issue #7809) + +2009-01-21 22:43 lowman + + * Modules/FindFLTK.cmake: BUG: Fixes #8376: FindFLTK fails because + include file can be FL/Fl.H and CMake only looks for FL/Fl.h. + Verified: all FLTK header files in 1.1.9 are .H ... how bizarre. + +2009-01-21 17:36 king + + * Source/cmGlobalVisualStudio7Generator.h: BUG: Fix VS IDE solution + files order again + + The previous change to order projects in the VS IDE did not + account for duplicate target names (such as ALL_BUILD and + ZERO_CHECK) among the input set. While we suppress generation of + the duplicate project entries, we need to use a multiset to store + ordered duplicates. + +2009-01-21 17:24 king + + * Source/cmGlobalVisualStudio7Generator.cxx: BUG: Fix ALL_BUILD + ordering enforcement + + The previous change to make ALL_BUILD come first among targets + did not account for comparing the target name against itself. + This led to an invalid ordering of the target set. This change + fixes it. + +2009-01-21 17:06 king + + * Source/cmGlobalVisualStudio7Generator.cxx: ENH: Make ALL_BUILD + always the default project + + This teaches the VS IDE generators to write ALL_BUILD into + solution files first so that it is always the default active + project. Previously it was first only if no target name sorted + lexicographically earlier. See issue #8172. + +2009-01-21 16:39 king + + * Source/: cmGlobalVisualStudio71Generator.cxx, + cmGlobalVisualStudio7Generator.cxx, + cmGlobalVisualStudio7Generator.h: BUG: Fix VS IDE project order + + Our implementation of the feature to pull in dependent targets in + VS solution files for subprojects caused the order of project + files in the solution to be arbitrary (based on pointer value in + the representation). Target ordering in solution files is + important to prevent unnecessary changing of the files and + because the VS IDE selects the first project listed as the + default active target. This change restores lexicographic order + by target name. + +2009-01-21 13:39 david.cole + + * Source/CPack/cmCPackBundleGenerator.cxx, + Source/CPack/cmCPackBundleGenerator.h, + Tests/BundleGeneratorTest/CMakeLists.txt, + Tests/BundleGeneratorTest/CustomVolumeIcon.icns: BUG: Fix issue + #7523: Analyze output of 'hdiutil attach' to get the name of the + volume that was mounted. Eliminates the need to use the + -mountpoint arg of hdiutil which has a silly 90 character limit + on the name of the mount point. Also add a custom volume icon to + the BundleGeneratorTest to cover this code. + +2009-01-21 13:20 david.cole + + * Source/QtDialog/CMakeSetup.icns: ENH: Use the latest + CMake-logo-triangle-high-res.png to improve the look of + CMakeSetup.icns on the Mac. + +2009-01-21 11:54 hoffman + + * Modules/CPack.OSXScriptLauncher.rsrc.in: file + CPack.OSXScriptLauncher.rsrc.in was added on branch CMake-2-6 on + 2009-04-21 20:48:54 +0000 + +2009-01-21 11:54 hoffman + + * Modules/CPack.OSXX11.main.scpt.in: file CPack.OSXX11.main.scpt.in + was added on branch CMake-2-6 on 2009-04-21 18:12:47 +0000 + +2009-01-21 11:54 david.cole + + * Modules/CPack.OSXScriptLauncher.in, + Modules/CPack.OSXScriptLauncher.rsrc.in, + Modules/CPack.OSXX11.Info.plist.in, + Modules/CPack.OSXX11.main.scpt.in, + Modules/CPack.RuntimeScript.in, + Source/CPack/OSXLauncherScript.scpt, + Source/CPack/cmCPackOSXX11Generator.cxx, Tests/CMakeLists.txt, + Tests/X11/CMakeLists.txt: BUG: Fix issue #7833: Add file + extension handling to CPack generated installers for OSXX11 + applications. Also modify the X11 test to build such an installer + on Mac builds that test CPack and have X11 available. Thanks to + Wes Turner for the patch. + +2009-01-21 09:49 king + + * Modules/FindKDE4.cmake: STYLE: Fix if/endif mismatch in FindKDE4 + +2009-01-21 09:49 king + + * Source/: cmFunctionCommand.cxx, cmMacroCommand.cxx: ENH: Enforce + logical blocks in functions/macros + + This teaches function() and macro() to enforce matching logical + blocks inside the recorded bodies. This makes the error message + more specific. + +2009-01-21 09:49 king + + * Source/: cmForEachCommand.cxx, cmFunctionCommand.cxx, + cmIfCommand.cxx, cmMacroCommand.cxx, cmMakefile.cxx, + cmMakefile.h, cmWhileCommand.cxx: ENH: Better handling of + mismatched blocks + + If a logical block terminates with mismatching arguments we + previously failed to remove the function blocker but replayed the + commands anyway, which led to cases in which we failed to report + the mismatch (return shortly after the ending command). The + recent refactoring of function blocker deletion changed this + behavior to produce an error on the ending line by not blocking + the command. Furthermore, the function blocker would stay in + place and complain at the end of every equal-level block of the + same type. + + This teaches CMake to treat the begin/end commands (if/endif, + etc.) as correct and just warns when the arguments mismatch. The + change allows cases in which CMake 2.6.2 silently ignored a + mismatch to run as before but with a warning. + +2009-01-21 09:48 king + + * Source/: cmForEachCommand.cxx, cmForEachCommand.h, + cmFunctionBlocker.h, cmFunctionCommand.cxx, cmFunctionCommand.h, + cmIfCommand.cxx, cmIfCommand.h, cmMacroCommand.cxx, + cmMacroCommand.h, cmMakefile.cxx, cmMakefile.h, + cmWhileCommand.cxx, cmWhileCommand.h: ENH: Better error message + for unclosed blocks + + This centralizes construction of the error message for an + unclosed logical block (if, foreach, etc.). We record the line + at which each block is opened so it can be reported in the error + message. + +2009-01-21 09:48 king + + * Source/: cmMakefile.cxx, cmMakefile.h: ENH: Refactor logical + block enforcement + + This uses a stack of 'barriers' to efficiently divide function + blockers into groups corresponding to each input file. It + simplifies detection of missing block close commands and factors + it out of ReadListFile. + +2009-01-21 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-20 15:49 king + + * Source/: cmExportBuildFileGenerator.cxx, + cmGlobalXCodeGenerator.cxx, cmTarget.cxx: BUG: Fix LOCATION + property for Mac AppBundles + + Previously cmTarget::GetLocation and cmTarget::GetFullPath would + return for Mac AppBundles the top-level bundle directory but + without the .app extension. We worked around this at the call + sites. This fixes the methods and removes the work-arounds. See + issue #8406. + +2009-01-20 14:36 king + + * Source/: cmForEachCommand.cxx, cmForEachCommand.h, + cmIfCommand.cxx, cmIfCommand.h, cmMakefile.cxx, cmMakefile.h, + cmWhileCommand.cxx, cmWhileCommand.h: ENH: Refactor function + blocker deletion + + When a function blocker decides to remove itself we previously + removed it at every return point from the C++ scope in which its + removal is needed. This teaches function blockers to transfer + ownership of themselves from cmMakefile to an automatic variable + for deletion on return. Since this removes blockers before they + replay their commands, we no longer need to avoid running + blockers on their own commands. + +2009-01-20 14:35 king + + * Source/: cmIfCommand.cxx, cmMakefile.cxx, cmMakefile.h: ENH: + Improve response to bad if or elseif + + Previously bad arguments to an if() or elseif() would cause some + subsequent statements in the corresponding block to execute. + This teaches CMake to stop processing commands with a fatal + error. It also provides context to bad elseif() error messages. + +2009-01-20 14:29 david.cole + + * Source/CPack/cmCPackNSISGenerator.cxx, + Tests/CPackComponents/CMakeLists.txt, Tests/CPackComponents/Issue + 7470.html: BUG: Fix for issue #7470. Allow spaces in the path + names of installed files with the NSIS CPack generator and + component-based installs. Add an installed file to the + CPackComponents test: it failed before the fix; now it passes. + +2009-01-20 10:06 hoffman + + * Source/cmSystemTools.cxx: BUG: fix crash with cmd.exe shell and + cmake in the path + +2009-01-20 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-19 22:51 lowman + + * Modules/FindBoost.cmake: BUG: Fix detection of boost libraries + without any compiler encoding (e.g. Gentoo 1.37 system installed + boost). Fixes issue #8404 reported on mailing list. + +2009-01-19 22:28 lowman + + * Modules/FindDoxygen.cmake: BUG: Fixes Issue #8054 and more. + DOXYGEN_DOT_FOUND now exists, errant mark_as_advanced variables + removed, documentation cleaned up and OSX stuff isolated to it's + own section, support added for DOXYGEN_SKIP_DOT, support added to + call FindPackageHandleStandardArgs to avoid output on every CMake + run. + +2009-01-19 21:30 lowman + + * Modules/FindBoost.cmake: BUG: Missing "icpc" as a possible CXX + compiler for Intel C++. Also refactored gcc -dumpversion code + and regex to a function. + +2009-01-19 19:21 lowman + + * Modules/FindBoost.cmake: BUG: Switch FindBoost.cmake to use + CMAKE_COMPILER_IS_GNUCXX (Issue #8398) + +2009-01-19 13:33 lowman + + * Modules/: FindOpenThreads.cmake, Findosg.cmake, + FindosgAnimation.cmake, FindosgDB.cmake, FindosgFX.cmake, + FindosgGA.cmake, FindosgIntrospection.cmake, + FindosgManipulator.cmake, FindosgParticle.cmake, + FindosgProducer.cmake, FindosgShadow.cmake, FindosgSim.cmake, + FindosgTerrain.cmake, FindosgText.cmake, FindosgUtil.cmake, + FindosgViewer.cmake, FindosgVolume.cmake, FindosgWidget.cmake, + Findosg_functions.cmake: BUG: Fixed Issue #7331 Bugs in + Findosg*.cmake. Also added OPENTHREADS_LIBRARIES. + +2009-01-19 05:14 lowman + + * Modules/FindBoost.cmake: BUG: Reverted change made in 1.27, + should be unnecessary (Issue #7508) + +2009-01-19 02:35 lowman + + * Modules/FindBoost.cmake: BUG: Resolve Issue #7508, FindBoost + fails to find boost on SuSE 10.3 + +2009-01-19 02:27 lowman + + * Modules/FindBoost.cmake: ENH: Added 1.38 since it'll be out soon. + More documentation and clarified examples, addressed autolinking + issue on MSVC + +2009-01-19 01:02 lowman + + * Modules/FindBoost.cmake: BUG: Do not check for GCC version + encoding in filenames on Boost libraries prior to 1.35. + Eliminate "lib" prefix except on MSVC. + +2009-01-19 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-18 17:19 lowman + + * Modules/FindBoost.cmake: BUG: Fixed additional issues with + autodetecting compiler tags properly including Issue #6926 + +2009-01-18 16:40 lowman + + * Modules/FindBoost.cmake: BUG: Fixes problem with _boost_ABI_TAG + appending to itself if FindBoost is called more than once (Issue + #7460) + +2009-01-18 15:53 lowman + + * Modules/FindBoost.cmake: STYLE: minor cleanup + +2009-01-18 15:41 lowman + + * Modules/FindBoost.cmake: BUG: Removed some code which was + squashing Boost_LIBRARIES on WIN32 under the auspices of forcing + the user to use autolinking, but it only did this squashing on + the first call to FindBoost. Subsequent calls to FindBoost would + not have Boost_LIBRARIES squashed so this code was doing nothing. + If you link your target_link_libraries() against dynamic boost + libraries it appears from tools like Dependency Walker that the + pragma calls to autolink to the static boost libraries are + ignored. It's therefore too late to make this squash apply to + all calls to FindBoost because that would break users that have + not setup autolinking properly. For now this fix is largely + cosmetic since the original code never worked anyways (see + version 1.5 introduced on 4/22/08). + +2009-01-18 15:17 lowman + + * Modules/FindBoost.cmake: BUG: Fixed documentation bug with + Boost_USE_MULTITHREADED, removed OPTION() call since it would be + useless and confusing after an initial configure. + +2009-01-18 14:40 lowman + + * Modules/FindBoost.cmake: BUG: Fixed superfluous and duplicate + dirs in Boost_LIBRARY_DIR. Employed workaround for Issue #8378. + Resolves Issue #8099 + +2009-01-18 13:03 hoffman + + * Source/: cmCTest.h, cmCTest.cxx, ctest.cxx: BUG: add output on + failure to ctest #8255 + +2009-01-18 12:05 hoffman + + * Source/cmMakefile.cxx: BUG: fix crash with empty properties + +2009-01-18 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-17 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-16 04:07 lowman + + * Modules/FindBoost.cmake: BUG: Fixed issues using FindBoost with + BoostPro packaged releases. Fixed regression for bjam users on + Win32 introduced in 1.4.2.4 (7/13/08). This commit partially or + completely resolves Issues #8173, #8326, #7943, #7725! + +2009-01-16 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-15 16:16 king + + * Source/cmFindPackageCommand.cxx: BUG: Fix find_package docs for + refind feature + + Recently we taught find_package to re-find a package + configuration file if it is given a wrong answer. This fixes the + documentation to reflect the change. + +2009-01-15 14:37 king + + * Source/: cmMakefile.cxx, cmMakefile.h: BUG: Enforce matching + policy PUSH/POP in all files + + The documentation of cmake_policy PUSH and POP states that they + must always match. Previously we enforced this only for the top + scope of each CMakeLists.txt file. This enforces the requirement + for all files. + +2009-01-15 13:24 hoffman + + * Source/CTest/: cmCTestGenericHandler.cxx, + cmCTestSubmitHandler.cxx: ENH: fix part submission to not have + memory of the last part submission + +2009-01-15 10:32 hoffman + + * Source/CTest/: cmCTestTestHandler.cxx, cmCTestTestHandler.h: BUG: + fix for bug #8174 + +2009-01-15 09:17 hoffman + + * CMakeLists.txt, ChangeLog.manual, Source/cmDocumentVariables.cxx, + Source/cmExtraEclipseCDT4Generator.cxx, + Source/cmFunctionCommand.cxx, Source/cmMakefile.cxx, + Source/cmMakefile.h, Tests/FindPackageTest/CMakeLists.txt: ENH: + merge in changes from main tree, fix borland build + +2009-01-15 08:57 king + + * Source/: cmDocumentVariables.cxx, cmMakefile.cxx: ENH: Provide + variable CMAKE_VERSION + + This creates the variable CMAKE_VERSION containing the full + version of cmake in "major.minor.patch" format. It is + particularly useful with the component-wise version comparison + provided by the if() command. + +2009-01-15 08:57 king + + * Source/cmDocumentVariables.cxx: ENH: Document variable + CMAKE_PATCH_VERSION + + This adds documentation of CMAKE_PATCH_VERSION to the generated + variables documentation. + +2009-01-15 02:07 lowman + + * Modules/FindBoost.cmake: BUG: fixed bug #7529: FindBoost fails to + find boost on SuSE 11.0 due to GCC reporting version x.y and not + x.y.z + +2009-01-15 01:22 lowman + + * Modules/FindBoost.cmake: BUG: Fixes bug #8059. Also added + Boost_DEBUG variable for troubleshooting. + +2009-01-15 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-14 15:14 king + + * Source/: cmFunctionCommand.cxx, cmMakefile.h: BUG: Pop a function + scope even on error + + This uses an automatic variable to push and pop variable scope + inside a function call. Previously if the function failed its + scope would not be popped. This approach guarantees a balanced + push/pop. + +2009-01-14 13:48 hoffman + + * Source/CTest/: cmCTestBuildHandler.cxx, cmProcess.cxx: ENH: fix + return value to ctest_build and remove debug print in cmProcess + +2009-01-14 13:01 hoffman + + * Source/CTest/: cmCTestBuildCommand.cxx, cmCTestBuildCommand.h, + cmCTestBuildHandler.cxx, cmCTestBuildHandler.h, cmProcess.cxx: + ENH: allow ctest_build to return error and warning counts + +2009-01-14 09:51 king + + * Source/: cmExtraEclipseCDT4Generator.cxx, + CTest/cmCTestSubmitHandler.cxx: COMP: Fix const set find for + Borland 5.5 + + The Borland 5.5 compiler's STL set does not define correct + signatures for its find() members, leading to build errors. This + works around the problem. + +2009-01-14 09:34 king + + * Tests/FindPackageTest/CMakeLists.txt: ENH: Test find_package + re-find feature + + Recently we taught find_package to re-find a package if its + _DIR result variable was set to a location not + containing the package (instead of reporting an error as before). + This tests the feature. + +2009-01-14 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-13 13:03 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Modules/CMakeGenericSystem.cmake, + Modules/CMakeSystemSpecificInformation.cmake, + Modules/FindGettext.cmake, Modules/FindPythonInterp.cmake, + Source/cmCMakeMinimumRequired.cxx, + Source/cmCMakeMinimumRequired.h, Source/cmComputeLinkDepends.cxx, + Source/cmComputeLinkDepends.h, Source/cmDocumentVariables.cxx, + Source/cmDocumentationFormatterDocbook.cxx, + Source/cmExportFileGenerator.cxx, + Source/cmExportInstallFileGenerator.cxx, + Source/cmExportInstallFileGenerator.h, + Source/cmExtraCodeBlocksGenerator.cxx, + Source/cmExtraEclipseCDT4Generator.cxx, + Source/cmExtraEclipseCDT4Generator.h, Source/cmFileCommand.cxx, + Source/cmFileCommand.h, Source/cmFindPackageCommand.cxx, + Source/cmFindPackageCommand.h, + Source/cmGetTargetPropertyCommand.h, + Source/cmGlobalVisualStudio6Generator.cxx, + Source/cmInstallExportGenerator.cxx, + Source/cmInstallExportGenerator.h, Source/cmInstallGenerator.cxx, + Source/cmInstallTargetGenerator.h, Source/cmLocalGenerator.cxx, + Source/cmLocalGenerator.h, + Source/cmLocalUnixMakefileGenerator3.cxx, + Source/cmLocalVisualStudio6Generator.cxx, + Source/cmLocalVisualStudio7Generator.cxx, + Source/cmSetCommand.cxx, Source/cmTarget.cxx, Source/cmTarget.h, + Source/cmTargetLinkLibrariesCommand.cxx, + Source/cmTargetLinkLibrariesCommand.h, Source/cmake.cxx, + Source/cmake.h, Source/CTest/cmCTestBuildAndTestHandler.cxx, + Source/CTest/cmCTestBuildHandler.cxx, + Source/CTest/cmCTestUpdateHandler.cxx, + Source/QtDialog/CMakeLists.txt, Source/QtDialog/CrossCompiler.ui, + Source/kwsys/SystemTools.cxx, Source/kwsys/SystemTools.hxx.in, + Source/kwsys/testProcess.c, Templates/DLLHeader.dsptemplate, + Templates/EXEHeader.dsptemplate, + Templates/EXEWinHeader.dsptemplate, + Templates/staticLibHeader.dsptemplate, + Tests/CustomCommand/CMakeLists.txt, + Tests/ExportImport/Export/CMakeLists.txt, + Tests/ExportImport/Import/CMakeLists.txt, + Tests/FindPackageTest/CMakeLists.txt, Tests/FindPackageTest/Baz + 1.1/BazConfig.cmake, Tests/FindPackageTest/Baz + 1.1/BazConfigVersion.cmake, Tests/FindPackageTest/Baz + 1.2/CMake/BazConfig.cmake, Tests/FindPackageTest/Baz + 1.2/CMake/BazConfigVersion.cmake, + Tests/FindPackageTest/lib/cmake/zot-4.0/zot-config-version.cmake, + Tests/FindPackageTest/lib/cmake/zot-4.0/zot-config.cmake, + Tests/StringFileTest/CMakeLists.txt: ENH: merge in changes from + CVS to branch for 2.6.3 RC 8 + +2009-01-13 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-12 11:10 king + + * Source/cmCTest.cxx: COMP: Remove unused variable + +2009-01-12 10:38 king + + * Source/CTest/cmCTestSubmitCommand.cxx, + Source/CTest/cmCTestSubmitCommand.h, + Source/CTest/cmCTestSubmitHandler.cxx, + Source/CTest/cmCTestSubmitHandler.h, + Tests/CTestTest2/test.cmake.in: ENH: Teach ctest_submit about + parts + + This adds a PARTS option to the ctest_submit command which tells + it to submit only parts whose names are listed with the option. + +2009-01-12 10:37 king + + * Source/: cmCTest.cxx, cmCTest.h, CTest/cmCTestBuildHandler.cxx, + CTest/cmCTestConfigureHandler.cxx, + CTest/cmCTestCoverageHandler.cxx, + CTest/cmCTestGenericHandler.cxx, CTest/cmCTestGenericHandler.h, + CTest/cmCTestSubmitHandler.cxx, CTest/cmCTestTestHandler.cxx, + CTest/cmCTestUpdateHandler.cxx: ENH: Divide CTest file submission + list by part + + This splits the list of files for CTest to submit into those + belonging to each part. The set is recombined just before + submission. Later this will allow piecewise submissions. + +2009-01-12 10:37 king + + * Source/: cmCTest.cxx, cmCTest.h: ENH: Refactor cmCTest test part + representation + + This introduces the name "part" to denote a portion of the + testing and submission process performed by ctest. We generalize + the boolean indicating whether each part is enabled into a + structure to which more information can be added later. We + provide bi-directional mapping between part id and part names. + +2009-01-12 09:11 king + + * Source/: cmCTest.cxx, cmCTest.h, CTest/cmCTestBuildHandler.cxx, + CTest/cmCTestConfigureHandler.cxx, + CTest/cmCTestCoverageHandler.cxx, + CTest/cmCTestGenericHandler.cxx, CTest/cmCTestGenericHandler.h, + CTest/cmCTestHandlerCommand.cxx, CTest/cmCTestHandlerCommand.h, + CTest/cmCTestMemCheckHandler.cxx, CTest/cmCTestTestHandler.cxx: + ENH: Teach ctest_* to create appending XML files + + This adds an APPEND option to the ctest_* commands which tells + them to put the Append="true" attribute in the Site element of + their XML file. + +2009-01-12 09:10 king + + * Source/CTest/: cmCTestHandlerCommand.cxx, + cmCTestHandlerCommand.h: ENH: Refactor CTest command argument + handling + + The previous approach to handling of arguments to ctest_* + commands worked only for keyword/value arguments with a single + value. This refactors the approach to allow some commands to + define alternative argument forms. + +2009-01-12 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-11 12:18 alex + + * Source/: cmExtraEclipseCDT4Generator.cxx, + cmExtraEclipseCDT4Generator.h: ENH: patch from Miguel, As it is + today the generator creates linked resources to + LIBRARY_OUTPUT_PATH and EXECUTABLE_OUTPUT_PATH if they are not a + subdirectory of the binary dir, so that the IDE can detect the + Binaries (this was addressed previously as a result of a bug + report). + + Reduces code redundancy by encapsulating common behaviour for + LIBRARY_OUTPUT_PATH and EXECUTABLE_OUTPUT_PATH in + AppendLinkedResource. + + Addresses the two new variable names for these locations, + CMAKE_LIBRARY_OUTPUT_DIRECTORY and CMAKE_RUNTIME_OUTPUT_DIRECTORY + respectively. + + Finally, it is addressing a bug in the current code for relative + paths in these variables. If it is a relative path to the binary + dir, the IsSubdirectory call returns false and so it creates the + linked resource. The created linked resource produces an error in + the Eclipse IDE because the IDE expects it to be a full path. The + patch now addresses this by concatenating the binary dir if it is + a relative path. + +2009-01-11 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-10 09:01 alex + + * Source/cmDocumentationFormatterDocbook.cxx: BUG: don't create + empty s (#7289), dblatex didn't like that + + Alex + +2009-01-10 08:46 alex + + * Modules/FindPythonInterp.cmake: ENH: fix #7913: find also python + 2.6 on windows + + Alex + +2009-01-10 08:39 alex + + * Modules/FindGettext.cmake: BUG: fix #8122, _firstPoFile was not + empty because it was no real variable but just a macro argument + -> make it a real variable + + Alex + +2009-01-10 08:16 alex + + * Source/cmDocumentVariables.cxx: STYLE: document + CMAKE_COLOR_MAKEFILE (#7878) + + Alex + +2009-01-10 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-09 20:35 alex + + * Source/cmExtraEclipseCDT4Generator.h: COMP: forgot to commit this + file + + Alex + +2009-01-09 20:26 alex + + * Modules/CMakeSystemSpecificInformation.cmake: STYLE: fix typo + + Alex + +2009-01-09 20:18 alex + + * Modules/CMakeGenericSystem.cmake: STYLE: this is not necessary + anymore for kdevelop, the kdevelop generator now generates the + project so that the environment variable VERBOSE is set to 1 when + make is executed by kdevelop (and additionally this didn't work, + since CMAKE_GENERATOR never matches KDevelop3, this is now in + CMAKE_EXTRA_GENERATOR) + + Alex + +2009-01-09 20:09 alex + + * Source/cmExtraEclipseCDT4Generator.cxx: STYLE: remove debug + output + + Alex + +2009-01-09 19:52 alex + + * Source/cmExtraEclipseCDT4Generator.cxx: BUG: fix #8073: also show + targets created using add_custom_targets() -additionally also + create the target/fast targets for Eclipse -skip preinstall and + install/local, they should be only rarely used + + Alex + +2009-01-09 19:08 alex + + * Source/cmExtraEclipseCDT4Generator.cxx: BUG: remove the call to + EnableInstallTarget(), don't know why it was there. This caused + that always an install target was created which installed + nothing, even if there was no install rule in the project. + + Alex + +2009-01-09 18:58 alex + + * Source/: cmExtraEclipseCDT4Generator.cxx, + cmExtraEclipseCDT4Generator.h: BUG: fix #8105: don't hardcode + "gcc" and "make" but use CMAKE_C_COMPILER and CMAKE_MAKE_PROGRAM + instead + + Alex + +2009-01-09 18:04 alex + + * Source/cmExtraCodeBlocksGenerator.cxx: BUG: fix #8203: codeblocks + + mingw doesn't like the extra quotes around the path to the + makefile if it contains spaces, under Linux it works with spaces + + Alex + +2009-01-09 16:44 king + + * Source/cmCTest.cxx: ENH: Add missing newline to CTest-generated + xml + + The Generator="ctest..." attribute of Site elements in + CTest-generated XML files was missing a newline, causing the next + attribute to appear on the same line. This adds the newline. + +2009-01-09 12:56 hoffman + + * Source/cmCTest.cxx: ENH: fix crash for old style scripts + +2009-01-09 12:32 hoffman + + * Source/cmCTest.h: ENH: fix return type + +2009-01-09 12:05 hoffman + + * Source/: cmCTest.cxx, cmCTest.h, CTest/cmCTestScriptHandler.h: + ENH: add subproject tag property for ctest + +2009-01-09 11:44 king + + * Source/kwsys/testProcess.c: ENH: Extend kwsys.testProcess-4 + timeout + + The test is supposed to terminate quickly when its child crashes, + but that seems to take over 10s on busy systems. This extends + the test's timeout to 30s to help it pass when running on a busy + system. + +2009-01-09 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-08 18:09 alex + + * Source/: cmExtraEclipseCDT4Generator.h, + cmExtraEclipseCDT4Generator.cxx: BUG: apply patch from #8205, + also fixes #8212: escape characters for XML when writing the + eclipse project files + + Alex + +2009-01-08 17:57 alex + + * Source/: cmFindPackageCommand.cxx, cmFindPackageCommand.h: ENH: + when trying to find a FooConfig.cmake file, if in the directory + pointed to by the Foo_DIR variable there is no FooConfig.cmake + file, then instead of abort and complain that the user should set + or clear the Foo_DIR variables, just search for the file and + discard the old Foo_DIR contents + + The tests succeed, ok by Brad. + + Alex + +2009-01-08 04:47 hoffman + + * Modules/FindCxxTest.cmake: file FindCxxTest.cmake was added on + branch CMake-2-6 on 2009-02-04 16:44:01 +0000 + +2009-01-08 04:47 lowman + + * Modules/FindCxxTest.cmake: BUG: Fixed CXXTEST_INCLUDE_DIRS so it + will work properly with NOTFOUND. + + Also eliminated superfluous CXXTEST_FOUND assignment and cleaned + up the code and added additional documentation. Tagged v1.0. + +2009-01-08 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-07 17:28 clinton + + * Source/QtDialog/CrossCompiler.ui: + ENH: Tweak System Name field for cross compiling, so it doesn't + have a file chooser button. + +2009-01-07 14:16 king + + * Source/cmInstallExportGenerator.cxx: ENH: Clean per-config export + files during install + + When installing the main export file the install tree may be + dirty. If out-dated per-config files exist they may break the + newly installed main file which when it globs them. This teaches + the installation script to detect when it is about to replace the + main export file with a different one and cleans out any existing + per-config files. + +2009-01-07 14:16 king + + * Source/: cmFileCommand.cxx, cmFileCommand.h: ENH: Add + undocumented file(DIFFERENT) command + + This new command will be used by generated installation scripts + to determine whether an already-installed export file has + changed. + +2009-01-07 14:16 king + + * Source/: cmExportInstallFileGenerator.cxx, + cmExportInstallFileGenerator.h: ENH: Refactor computation of + import file glob + + New method cmExportInstallFileGenerator::GetConfigImportFileGlob + computes the globbing expression that an installed export file + uses to load its per-configuration support files. + +2009-01-07 10:41 king + + * Source/: cmTest.cxx, CTest/cmCTestTestHandler.cxx, + CTest/cmCTestTestHandler.h: ENH: Teach CTest to submit test + property LABELS + + This teaches CTest to send the test property "LABELS" in Test.xml + dashboard submissions as Label elements inside a Labels element. + +2009-01-07 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-06 15:05 king + + * CTestCustom.cmake.in: COMP: Ignore warning LNK4204 for CMake + dashboard + + This warning appears for libtar.obj, curltest.obj, and + synch_client.obj regularly on CMake dashboard submissions from VS + builds. They seem to occur due to some kind of race condition + for objects in small targets. There is nothing wrong with the + code, so this just suppresses the warnings. + +2009-01-06 14:58 king + + * Source/CTest/cmCTestUpdateHandler.cxx: BUG: Manage LC_MESSAGES + with an object + + This moves management of the LC_MESSAGES environment variable + into an automatic variable. Previously if an error occurred the + original environment value was not restored. This makes the fix + to issue #5936 more robust. + +2009-01-06 14:41 king + + * Source/CTest/cmCTestUpdateHandler.cxx: STYLE: Remove trailing + whitespace + +2009-01-06 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-05 15:00 king + + * Source/: cmGetPropertyCommand.cxx, cmMakefile.cxx, cmMakefile.h, + cmSetPropertyCommand.cxx, cmSetTestsPropertiesCommand.cxx: ENH: + Improve test property speed with a map + + Previously we stored a vector of tests to preserve their order. + Property set/get operations would do a linear search for matching + tests. This uses a map to efficiently look up tests while + keeping the original order with a vector for test file + generation. + +2009-01-05 14:14 king + + * Tests/: CMakeLists.txt, EnforceConfig.cmake, + EnforceConfig.cmake.in: ENH: Re-enable new 'testing' test mode + + This fixes selection of a configuration when none is specified to + find an available configuration of the ctest test-command. + +2009-01-05 14:14 king + + * Source/: cmCTest.cxx, cmCTest.h: BUG: Capture cout and cerr from + internal ctest + + When CTest detects that a test is running its own executable it + optimizes the test by using an internal instance of cmCTest + instead of creating a new process. However, the internal + instance was using cout and cerr directly. This redirects the + output to a string stream to avoid direct display of the internal + test's output. + +2009-01-05 11:05 king + + * Source/: cmFileCommand.cxx, QtDialog/CMakeLists.txt: COMP: Fix + installation of cmake-gui by CMake 2.4 + + When CMake 2.4 generates the build tree for CMake itself it asks + the built CMake to install itself using the rules that 2.4 + generated. Since the install rules use undocumented commands + that are not compatible from 2.4 to 2.6 we need a special case to + avoid failure. This sets a special indicator variable in the + install rules that enables a compatibility hack to support the + old install rule format. + +2009-01-05 11:03 king + + * Source/cmFileCommand.cxx: ENH: Refactor internal file(INSTALL) + arg parsing + + The internal file(INSTALL) command argument parsing used several + booleans with at most one set to true at a time to track argument + parsing state. This refactors it to use one enumeration. + +2009-01-05 09:53 king + + * Source/cmGetTargetPropertyCommand.h: BUG: Remove old + get_target_property docs + + The get_target_property command contained some outdated + documentation of the LOCATION and TYPE properties. This removes + it since they are now documented in the properties list section + of the documentation. + +2009-01-05 09:53 king + + * Source/cmTarget.cxx: ENH: Enable LOCATION property for imported + targets + + Previously we left the LOCATION property undefined for imported + targets since it should no longer be used for non-imported + targets. However, in the case we do not know the name of an + available imported configuration, it is more readable to get the + LOCATION property than LOCATION_ for a bogus + configuration . This enables LOCATION for imported + targets and returns an unspecified available imported + configuration. + +2009-01-05 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-04 04:12 alex + + * Source/cmCMakeMinimumRequired.h: STYLE: changed "one may" into + "it should" to make it stronger + + Alex + +2009-01-04 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-03 15:48 king + + * Source/cmCMakeMinimumRequired.h: ENH: Clarify FATAL_ERROR option + to min-req command + + The FATAL_ERROR to cmake_minimum_required is useful for projects + that require 2.6 to convince CMake 2.4 to error out. This + clarifies its usefulness in the documentation. + +2009-01-03 15:47 king + + * Source/: cmCMakeMinimumRequired.cxx, cmCMakeMinimumRequired.h: + ENH: Ignore unknown cmake_minimum_required args + + When cmake_minimum_required is called with an unknown argument it + should not complain about it if the version specified is in the + future. This allows the proper error to be shown about the + current CMake being too old. + +2009-01-03 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-02 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2009-01-01 12:49 hoffman + + * CMakeLists.txt, ChangeLog.manual, Source/cmCTest.cxx, + Source/cmCommandArgumentLexer.cxx, + Source/cmCommandArgumentLexer.h, + Source/cmCommandArgumentLexer.in.l, + Source/cmCommandArgumentParser.cxx, + Source/cmCommandArgumentParser.y, + Source/cmCommandArgumentParserHelper.cxx, + Source/cmCommandArgumentParserHelper.h, + Source/cmCommandArgumentParserTokens.h: ENH: RC 7 merge fix + missing stuff from RC 6 and fix change log + +2009-01-01 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-31 10:14 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Modules/CMakeASM_MASMInformation.cmake, + Modules/CMakeDetermineASM_MASMCompiler.cmake, + Modules/CMakeTestASM_MASMCompiler.cmake, Modules/CPackRPM.cmake, + Modules/FindCurses.cmake, Modules/FindDoxygen.cmake, + Modules/FindEXPAT.cmake, Modules/FindLibXml2.cmake, + Modules/FindQt4.cmake, Modules/FindSquish.cmake, + Modules/FindwxWidgets.cmake, Modules/GetPrerequisites.cmake, + Modules/SquishRunTestCase.bat, Modules/SquishRunTestCase.sh, + Modules/SquishTestScript.cmake, Modules/Platform/Darwin.cmake, + Modules/Platform/Haiku.cmake, + Modules/Platform/WindowsPaths.cmake, Source/cmFileCommand.h, + Source/cmFindPackageCommand.cxx, Source/cmFindPackageCommand.h, + Source/cmGlobalMSYSMakefileGenerator.cxx, + Source/cmOrderDirectories.cxx, + Source/CPack/cmCPackBundleGenerator.cxx, + Source/QtDialog/CMake.desktop, Source/QtDialog/CMakeLists.txt, + Source/QtDialog/CMakeSetupDialog.cxx, + Source/QtDialog/Compilers.h, Source/QtDialog/Compilers.ui, + Source/QtDialog/CrossCompiler.ui, + Source/QtDialog/FirstConfigure.cxx, + Source/QtDialog/FirstConfigure.h, + Source/QtDialog/QCMakeWidgets.cxx, Source/kwsys/ProcessUNIX.c, + Source/kwsys/System.c, Source/kwsys/SystemInformation.cxx, + Templates/TestDriver.cxx.in: ENH: merge fixes for RC 6 + +2008-12-31 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-30 09:13 david.cole + + * Source/CTest/: cmCTestConfigureCommand.cxx, + cmCTestConfigureCommand.h, cmCTestConfigureHandler.cxx, + cmCTestGenericHandler.cxx: ENH: Add OPTIONS argument to the + ctest_configure command so that you can pass -D arguments to the + cmake configure step from a ctest -S script. Also clarify/correct + some not so helpful error messages. + +2008-12-30 09:11 david.cole + + * Modules/Platform/Darwin.cmake: BUG: Fix install_name_tool problem + on the Mac when a PROJECT(... NONE) is followed by multiple calls + to ENABLE_LANGUAGE. Use find_program to set the + CMAKE_INSTALL_NAME_TOOL variable so it gets saved in the cache as + a full path to the install_name_tool executable rather than a + simple set which eventually goes out of scope. + +2008-12-30 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-29 18:11 hoffman + + * Tests/JCTest/CMakeLists.txt: ENH: make it take longer + +2008-12-29 17:49 hoffman + + * Source/CTest/: cmProcess.cxx, cmProcess.h: ENH: add start end + time for procs + +2008-12-29 17:43 hoffman + + * Tests/JCTest/: CMakeLists.txt, TestTime.cxx: ENH: add test for -j + N ctest stuff + +2008-12-29 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-28 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-27 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-26 15:27 david.cole + + * Source/CTest/cmCTestHandlerCommand.cxx: STYLE: Fix line length + violation. + +2008-12-26 13:28 king + + * Source/cmOrderDirectories.cxx: BUG: Fix same-file check for + directory ordering + + When computing runtime search path ordering a constraint exists + when a file that may be found by the runtime search exists in a + directory other than that containing the desired file. We test + whether a potential conflict is really the same due to a symlink. + Recently the change to cmFindLibraryCommand to load directory + content created a case in which the same-file check would be + incorrectly skipped. This avoids skipping the check. + +2008-12-26 12:06 david.cole + + * Modules/FindDoxygen.cmake: ENH: New location to look for "dot" + +2008-12-26 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-25 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-24 10:10 david.cole + + * Modules/AddExternalProject.cmake, + Tests/ExternalProject/CMakeLists.txt: ENH: Re-work of fix + committed yesterday for the Watcom WMake dashboard. Fix it + properly by using the SYMBOLIC source file property to indicate + to WMake when the sentinel file is not actually written by the + update step. + +2008-12-24 04:31 miguelf + + * Modules/FindwxWidgets.cmake: BUG: Fixed placement of initial + wxWidgets_FOUND=TRUE statement, which allowed some cases to + breakaway from tests without resetting to FALSE (BUG: 8188). + +2008-12-24 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-23 10:01 david.cole + + * Tests/ExternalProject/CMakeLists.txt: BUG: Workaround for Watcom + WMake not handling "always out of date" custom commands to fix + the failing ExternalProject test on the CMake nightly dashboard. + +2008-12-23 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-22 03:00 alex + + * Modules/FindLibXml2.cmake: BUG: use FindPkgConfig.cmake instead + of UsePkgConfig.cmake, sync with KDE svn and fix bug #8290 + + Alex + +2008-12-22 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-21 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-20 00:04 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-19 10:35 david.cole + + * Modules/AddExternalProject.cmake: ENH: Add the update step in + between download and build. Add UPDATE_ARGS and UPDATE_COMMAND + handling. Output a -complete sentinel in synch with the -install + sentinel, but do not list it as an OUTPUT of the custom command. + That breaks the chaining of add_custom_commands between custom + targets, but allows for a file-level dependency expression that + will cause proper incremental rebuilds. When earlier targets + rebuild, subsequent dependent targets will also rebuild. CVS and + SVN update commands are always out-of-date so that they always + run to get the latest source. To suppress that behavior on a + per-external project basis use an explicit empty string for + UPDATE_COMMAND. The source will still be checked out from the + repository prior to the update step by the download step. + +2008-12-19 10:19 hoffman + + * Source/CTest/cmCTestTestHandler.cxx: STYLE: fix shadow warning + +2008-12-19 00:04 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-18 21:59 hoffman + + * Source/CTest/: cmCTestTestHandler.cxx, cmCTestTestHandler.h: BUG: + partial fix for #8056 + +2008-12-18 21:57 hoffman + + * Source/CTest/: cmCTestHandlerCommand.cxx, + cmCTestScriptHandler.cxx: BUG: fix for bug #8224 fix crash + +2008-12-18 21:53 hoffman + + * Modules/FindEXPAT.cmake: BUG: fix for #8298 look for libexpat as + well + +2008-12-18 21:52 hoffman + + * Source/cmFileCommand.h: BUG: fix spelling + +2008-12-18 17:15 king + + * Tests/CMakeLists.txt: BUG: Disable new 'testing' test mode for + now + + The new 'testing' test behavior of actually running the tests + generated by the project still fails when the test script guesses + the Debug configuration but the CMake build tree was only built + Release. The inner ctest needs to find the ctest executable but + is given the wrong configuration. + +2008-12-18 14:56 king + + * Source/: cmBootstrapCommands.cxx, cmCommands.cxx: COMP: Add + set_directory_properties to bootstrap + + We now need this command in the Tests/CMakeLists.txt file. + +2008-12-18 14:26 king + + * Tests/: CMakeLists.txt, EnforceConfig.cmake: BUG: Fix new + 'testing' test for CMake releases + + The recent change of the 'testing' test to actually drive the + tests within it does not work on Windows with released CMakes + 2.6.2 and lower if no configuration is given to ctest with a -C + option. This works around the problem by detecting the case and + changing the empty configuration to Debug. + +2008-12-18 13:36 king + + * Source/kwsys/System.c, Tests/CustomCommand/CMakeLists.txt: BUG: + Fix windows command line escape for empty arg + + On Windows the KWSys System package generates escapes for + command-line arguments. This fix enables quoting of the empty + string as an argument. This also adds a test to pass an empty + argument to a custom command. + +2008-12-18 12:28 king + + * Tests/: CMakeLists.txt, Testing/CMakeLists.txt, + Testing/Sub/Sub2/CMakeLists.txt: ENH: Improve 'testing' test to + actually test + + The 'testing' CMake test builds a project that uses add_test. + This strengthens the test to actually run CTest on the project + build tree after building it. + +2008-12-18 12:27 king + + * Source/CTest/cmCTestBuildAndTestHandler.cxx: ENH: Minor + readability improvement in CTest output + + When ctest --build-and-test runs the --test-command its output + did not quote the arguments of the command being tested making it + difficult to read. This adds the quotes. This also changes the + wording of the failure case to not sound like CTest could not run + the executable when in fact it ran and returned failure. + +2008-12-18 12:27 king + + * Source/cmCTest.cxx: BUG: Fix crash when running internal CTest + + When CTest encounters a test whose executable is the ctest + executable iteslf, it just invokes code inside itself to avoid + starting a new process. This fixes a null-pointer dereference in + the logging code of that case. + +2008-12-18 10:43 david.cole + + * Source/: cmFileCommand.cxx, kwsys/SystemTools.cxx, + kwsys/SystemTools.hxx.in: BUG: Do not copy permissions of files + when making the copy in an install rule. If the source file was + read-only, this prevents the subsequent set of the destination + file's modification time, making the copied file always different + in time-stamp than the original and always installing a new file + with a new time stamp (but the same content) causing unnecessary + downstream incremental rebuilds. As part of this fix, add an + optional copyPermissions parameter to the SystemTools routines + CopyFileIfDifferent, CopyFileAlways, CopyAFile and + CopyADirectory. The copyPermissions parameter defaults to true to + preserve the behavior of these routines for existing callers. + +2008-12-18 10:06 king + + * Source/: cmInstallDirectoryGenerator.h, + cmInstallExportGenerator.h, cmInstallFilesGenerator.h, + cmInstallTargetGenerator.h: STYLE: Remove useless install + generator typedefs + + The cmInstall*Generator classes all derive from + cmInstallGenerator which provides the Indent typedef so they do + not need to provide it + +2008-12-18 09:58 king + + * Source/: cmCommandArgumentLexer.cxx, cmCommandArgumentLexer.in.l: + COMP: Restore fixes to generated lexer + + The command argument lexer was recently regenerated which erased + some fixes that had been applied directly to the output. This + restores the fixes and adds reminder notes in the generation + instructions. + +2008-12-18 09:58 king + + * Source/: cmCommandArgumentParser.cxx, cmCommandArgumentParser.y: + BUG: Move previous parser bugfixes into input file + + The command argument parser code is generated by bison. This + change restores some fixes previously applied to the generated + output that were destroyed by regenerating the parser source. + This time the fixes have been put in the input file so + regenerating the parser will not destroy them again. + +2008-12-18 09:37 clinton + + * Source/QtDialog/CMake.desktop: + ENH: Remove Application category. See #8151. + +2008-12-18 00:04 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-17 09:33 king + + * Source/: cmCommandArgumentLexer.cxx, cmCommandArgumentLexer.in.l: + COMP: Fix unused yyunput warning in lexer + + This adds the "nounput" option to the flex input file so that + yyunput is not generated. The function is static but not used so + some compilers warn. + +2008-12-17 09:24 hoffman + + * Tests/FindPackageTest/Baz 1.1/BazConfig.cmake: file + BazConfig.cmake was added on branch CMake-2-6 on 2009-01-13 + 18:03:55 +0000 + +2008-12-17 09:24 hoffman + + * Tests/FindPackageTest/Baz 1.2/CMake/BazConfig.cmake: file + BazConfig.cmake was added on branch CMake-2-6 on 2009-01-13 + 18:03:56 +0000 + +2008-12-17 09:24 hoffman + + * Tests/FindPackageTest/Baz 1.1/BazConfigVersion.cmake: file + BazConfigVersion.cmake was added on branch CMake-2-6 on + 2009-01-13 18:03:55 +0000 + +2008-12-17 09:24 hoffman + + * Tests/FindPackageTest/Baz 1.2/CMake/BazConfigVersion.cmake: file + BazConfigVersion.cmake was added on branch CMake-2-6 on + 2009-01-13 18:03:56 +0000 + +2008-12-17 09:24 king + + * Source/cmFindPackageCommand.cxx, + Tests/FindPackageTest/CMakeLists.txt, Tests/FindPackageTest/Baz + 1.1/BazConfig.cmake, Tests/FindPackageTest/Baz + 1.1/BazConfigVersion.cmake, Tests/FindPackageTest/Baz + 1.2/CMake/BazConfig.cmake, Tests/FindPackageTest/Baz + 1.2/CMake/BazConfigVersion.cmake: ENH: Teach find_package about + more install dirs + + We now search in + + /*/ + /*/(cmake|CMake) + + when looking for package configuration files. This is useful on + Windows since the Program Files folder is in + CMAKE_SYSTEM_PREFIX_PATH. These paths are the Windows equivalent + to the Apple convention application and framework paths we + already search. See issue #8264. + +2008-12-17 09:23 king + + * Modules/Platform/WindowsPaths.cmake: ENH: Use 32-bit and 64-bit + Program Files folders + + On 64-bit Windows there may be two Program Files folders, one for + 32-bit binaries and one for 64-bit binaries. When we compute + CMAKE_SYSTEM_PREFIX_PATH we should put both folders in the path. + +2008-12-17 08:24 king + + * Source/cmCommandArgumentLexer.cxx, + Source/cmCommandArgumentLexer.h, + Source/cmCommandArgumentLexer.in.l, + Source/cmCommandArgumentParser.cxx, + Source/cmCommandArgumentParser.y, + Source/cmCommandArgumentParserTokens.h, + Tests/StringFileTest/CMakeLists.txt: ENH: Allow most characters + in ENV variable refs + + The $ENV{VAR} syntax permits access to environment variables. + This teaches CMake to recognize most characters in the VAR name + since some environments may have variables with non-C-identifier + characters. + +2008-12-17 00:04 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-16 15:15 clinton + + * Source/QtDialog/QCMakeWidgets.cxx: + ENH: Improve performance with file completion. Fix for #8292. + +2008-12-16 15:00 hoffman + + * Source/QtDialog/Compilers.h: file Compilers.h was added on branch + CMake-2-6 on 2008-12-31 15:14:30 +0000 + +2008-12-16 15:00 hoffman + + * Source/QtDialog/Compilers.ui: file Compilers.ui was added on + branch CMake-2-6 on 2008-12-31 15:14:30 +0000 + +2008-12-16 15:00 hoffman + + * Source/QtDialog/CrossCompiler.ui: file CrossCompiler.ui was added + on branch CMake-2-6 on 2008-12-31 15:14:30 +0000 + +2008-12-16 15:00 hoffman + + * Source/QtDialog/FirstConfigure.cxx: file FirstConfigure.cxx was + added on branch CMake-2-6 on 2008-12-31 15:14:30 +0000 + +2008-12-16 15:00 hoffman + + * Source/QtDialog/FirstConfigure.h: file FirstConfigure.h was added + on branch CMake-2-6 on 2008-12-31 15:14:30 +0000 + +2008-12-16 15:00 clinton + + * Source/QtDialog/: CMakeFirstConfigure.cxx, CMakeFirstConfigure.h, + CMakeFirstConfigure.ui, CMakeLists.txt, CMakeSetupDialog.cxx, + Compilers.h, Compilers.ui, CrossCompiler.ui, FirstConfigure.cxx, + FirstConfigure.h: + ENH: + + For bug #7191. Improvements to the dialog that sets up the first + configure. Fixing the large size of it by breaking it up into a + wizard. Also incorporated suggestions from bug report. + +2008-12-16 09:23 king + + * Source/cmFindPackageCommand.cxx: BUG: find_package must push/pop + policies + + When the find_package command loads a -version.cmake file + to test the package version it must prevent the version file from + affecting policy settings. Therefore the policy settings must be + pushed and popped. + +2008-12-16 09:20 king + + * Source/cmInstallGenerator.cxx: BUG: Fix component-name test on + installation + + Generated cmake_install.cmake script code used MATCHES to compare + component names. This does not support characters considered + special by regular expression syntax in component names. This + change uses STREQUAL instead. See issue #8256. + +2008-12-16 09:15 king + + * Source/: cmLocalGenerator.cxx, cmLocalGenerator.h: ENH: Warn if + build dir is too long for filesystem + + When an object file directory is too deep to place an object file + without exceeding CMAKE_OBJECT_PATH_MAX, this issues a warning. + Previously we silently ignored the problem. See issue #7860. + +2008-12-16 09:14 king + + * Source/: cmLocalGenerator.cxx, cmLocalGenerator.h, + cmLocalUnixMakefileGenerator3.cxx, + cmLocalVisualStudio6Generator.cxx, + cmLocalVisualStudio7Generator.cxx: ENH: Refactor passing of max + length object dir + + When computing the maximum length full path to the build + directory under which object files will be placed, pass the + actual path instead of just its length. This will be useful for + error message generation. + +2008-12-16 09:13 hoffman + + * Tests/FindPackageTest/lib/cmake/zot-4.0/zot-config-version.cmake: + file zot-config-version.cmake was added on branch CMake-2-6 on + 2009-01-13 18:03:56 +0000 + +2008-12-16 09:13 hoffman + + * Tests/FindPackageTest/lib/cmake/zot-4.0/zot-config.cmake: file + zot-config.cmake was added on branch CMake-2-6 on 2009-01-13 + 18:03:56 +0000 + +2008-12-16 09:13 king + + * Tests/FindPackageTest/: CMakeLists.txt, + lib/cmake/zot-4.0/zot-config-version.cmake, + lib/cmake/zot-4.0/zot-config.cmake, + lib/zot-3.1/zot-config-version.cmake, + lib/zot-3.1/zot-config.cmake: ENH: Strengthen FindPackageTest + version check + + The previous change to test finding in lib/cmake/* weakened + the versioned find tests. Since the lib/cmake paths are searched + before lib/* paths the previous change skipped requiring + the command to ignore zot-3.0 when finding zot-3.1. This change + restores that and adds zot-4.0 to test the lib/cmake path. + +2008-12-16 00:04 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-15 18:48 clinton + + * Modules/FindQt4.cmake: + BUG: Fix for #8247. Add QT_TRANSLATIONS_DIR pointing to + the Qt translation files, and docs for it. Also add docs + for QT_BINARY_DIR. + +2008-12-15 17:19 fbertel + + * Source/kwsys/: ProcessUNIX.c, SystemInformation.cxx: COMP:Fixed + warnings. + +2008-12-15 13:30 king + + * Source/: cmDocumentVariables.cxx, cmTarget.cxx: BUG: Fix + _POSTFIX property/variable docs + + The CMAKE__POSTFIX variable and _POSTFIX property + were not documented. This updates the CMAKE_DEBUG_POSTFIX and + DEBUG_POSTFIX documentation to refer to the more general + variable/property. It also clarifies that the variable is used + as the property default only for non-executable targets. See + issue #7868. + +2008-12-14 00:04 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-12 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-11 22:05 lowman + + * Modules/FindCxxTest.cmake: ENH: Added FindCxxTest module to + assist others in using the CxxTest unit testing framework within + CTest + +2008-12-11 15:55 david.cole + + * Tests/ExternalProject/CMakeLists.txt: BUG: One more conditional + in the ExternalProject test to prevent build errors of Tutorial + Step5 on Win98 using Visual Studio 6 when the path length of its + build tree exceeds 72 characters. Crazy, perhaps. But this fixes + the last real dashboard failure of the ExternalProject test. + +2008-12-11 14:35 hoffman + + * Tests/CMakeLists.txt: ENH: remove some verbosity to reduce test + time + +2008-12-11 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-10 11:30 david.cole + + * Tests/ExternalProject/CMakeLists.txt: BUG: Prevent KWStyle + portion of ExternalProject test from configuring, building, + installing and testing on WATCOM dashboards. WATCOM STL support + is still under development. + +2008-12-10 10:50 david.cole + + * Source/: cmGlobalVisualStudio6Generator.cxx, + cmLocalVisualStudio6Generator.cxx: STYLE: Fix line length style + violations. + +2008-12-10 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-09 16:07 david.cole + + * Source/: cmGlobalVisualStudio6Generator.cxx, + cmLocalVisualStudio6Generator.cxx, cmake.cxx: COMP: Fix the + ExternalProject test for Visual Studio 6. Visual Studio 6 *.dsp + files cannot have hyphens in them. Add utility function + GetVS6TargetName to replace hyphens with underscores when + generating *.dsp file names. Use the function everywhere + necessary in the VS6 generators. And, a workaround: VS6 uses + ".\Debug" (for example) as an "$(IntDir)" value - strip any + leading ".\" when processing a --config argument in the cmake + --build handling code. + +2008-12-09 15:31 david.cole + + * Modules/AddExternalProject.cmake: ENH: Default to the same cmake + used for configuring when building and installing. If none + specified default to the cmake used to configure the + outer/aggregating project. + +2008-12-09 14:07 king + + * Source/cmFindPackageCommand.cxx, + Tests/FindPackageTest/CMakeLists.txt, + Tests/FindPackageTest/lib/zot-3.1/zot-config-version.cmake, + Tests/FindPackageTest/lib/zot-3.1/zot-config.cmake: ENH: Add + useful search locations to find_package + + This teaches find_package to search + + /(share|lib)/cmake/*/ + + for package configuration files. Packages that do not already + have files in a /lib/* directory can use this + location to avoid cluttering the lib directory. + +2008-12-09 14:07 king + + * Source/cmFindPackageCommand.cxx: STYLE: Remove old TODO comment + in find_package + + Versioning has been introduced to find_package, so the comment + about it is out of date. + +2008-12-09 10:56 david.cole + + * Templates/TestDriver.cxx.in: COMP: Don't emit old style cast + warning when configured as C++ but still allow being configured + as C. Thanks to Monsieur Francois Bertel for the patch. + +2008-12-09 10:08 king + + * Source/: cmFindPackageCommand.cxx, cmFindPackageCommand.h: ENH: + Preserve _FIND_XXX vars in find_package + + When the find_package command loads a module it sets several + _FIND_XXX variables to communicate information about the + command invocation to the module. This restores the original + state of the variables when the command returns. This behavior + is useful when a find-module recursively calls find_package with + NO_MODULE so that the inner call does not change the values in + the find-module. + +2008-12-09 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-08 17:39 hoffman + + * Modules/FindSquish.cmake: file FindSquish.cmake was added on + branch CMake-2-6 on 2008-12-31 15:14:25 +0000 + +2008-12-08 17:39 hoffman + + * Modules/SquishRunTestCase.bat: file SquishRunTestCase.bat was + added on branch CMake-2-6 on 2008-12-31 15:14:28 +0000 + +2008-12-08 17:39 hoffman + + * Modules/SquishRunTestCase.sh: file SquishRunTestCase.sh was added + on branch CMake-2-6 on 2008-12-31 15:14:29 +0000 + +2008-12-08 17:39 hoffman + + * Modules/SquishTestScript.cmake: file SquishTestScript.cmake was + added on branch CMake-2-6 on 2008-12-31 15:14:29 +0000 + +2008-12-08 17:39 davisb + + * Modules/: FindSquish.cmake, SquishRunTestCase.bat, + SquishRunTestCase.sh, SquishTestScript.cmake: ENH: adding + functionality for finding Squish, adding Squish tests from CMake, + and running Squish tests from ctest + +2008-12-08 14:58 david.cole + + * Modules/AddExternalProject.cmake: BUG: Make sure all directories + used as working directories exist at CMake configure time as well + as having custom commands that create them. Necessary for the + Borland Makefiles generator to generate short path names in the + makefile build rules. Also, make sure all custom commands chain + together properly through the use of the sentinel files. + +2008-12-08 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-07 19:36 hoffman + + * Source/cmLocalVisualStudio6Generator.cxx: STYLE: fix link length + issues + +2008-12-07 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-06 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-05 17:54 david.cole + + * Tests/ExternalProject/CMakeLists.txt: COMP: No-op. White space + only change to trigger a re-run of the ExternalProject test on + the QNX continuous dashboard to pick up the latest KWStyle + changes. + +2008-12-05 17:18 david.cole + + * Tests/ExternalProject/CMakeLists.txt: COMP: No-op. White space + only change to trigger a re-run of the ExternalProject test on + the QNX continuous dashboard to pick up the latest KWStyle + changes. + +2008-12-05 16:46 david.cole + + * Tests/ExternalProject/CMakeLists.txt: COMP: No-op. White space + only change to trigger a re-run of the ExternalProject test on + the QNX continuous dashboard to pick up the latest KWStyle + changes. + +2008-12-05 16:13 david.cole + + * Tests/ExternalProject/CMakeLists.txt: COMP: No-op. White space + only change to trigger a re-run of the ExternalProject test on + the QNX continuous dashboard to pick up the latest KWStyle + changes. + +2008-12-05 15:18 david.cole + + * Modules/AddExternalProject.cmake, + Tests/ExternalProject/CMakeLists.txt: ENH: Make it easier to use + configure/make/make-install as the build steps for an external + project. Add capability of customizing the download step. Add + tests of empty projects. Better comments and error checking in + AddExternalProject.cmake. In tests, use KWStyle from CVSHEAD to + see if QNX continuous can build the latest KWStyle. Make KWStyle + test depend on all previous test external projects so it builds + last to catch other issues before any KWStyle compile errors. + +2008-12-05 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-04 15:30 david.cole + + * Tests/ExternalProject/: CMakeLists.txt, TryCheckout.cmake: ENH: + Use a TryCheckout technique to decide whether or not to attempt + building the projects that depend on a cvs or svn download + method. + +2008-12-04 13:27 david.cole + + * Modules/AddExternalProject.cmake, Modules/DownloadFile.cmake, + Modules/RepositoryInfo.txt.in, Modules/UntarFile.cmake, + Tests/CMakeLists.txt, Tests/ExternalProject/CMakeLists.txt, + Tests/ExternalProject/Step1.tar, Tests/ExternalProject/Step1.tgz, + Tests/ExternalProject/Step1NoDir.tar, + Tests/ExternalProject/Step1NoDir.tgz: ENH: First draft of + add_external_project functionality. Tweaks, dashboard fixing, + more tests and documentation certain to follow as it gets used by + others... + +2008-12-04 10:51 hoffman + + * Source/kwsys/SystemInformation.cxx: BUG: fix cpu info string + +2008-12-04 09:12 hoffman + + * Modules/GetPrerequisites.cmake: BUG: make sure list is not size 0 + before sort + +2008-12-04 09:09 hoffman + + * Source/CPack/cmCPackBundleGenerator.cxx: ENH: allow startup + command to be optional + +2008-12-04 08:57 hoffman + + * Source/cmLocalVisualStudio6Generator.cxx: BUG: fix for bug #8216 + +2008-12-04 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-03 16:13 hoffman + + * Modules/: FindCurses.cmake, Platform/Haiku.cmake: ENH: fix curses + on haiku + +2008-12-03 15:35 hoffman + + * Source/cmLocalVisualStudio6Generator.cxx, + Templates/DLLHeader.dsptemplate, Templates/EXEHeader.dsptemplate, + Templates/EXEWinHeader.dsptemplate, + Templates/staticLibHeader.dsptemplate: BUG: fix for rc and vs6 + +2008-12-03 14:37 hoffman + + * Modules/CPackRPM.cmake: BUG: #7904 add rpm package depend + +2008-12-03 11:21 hoffman + + * Utilities/cmcurl/Testing/curltest.c: ENH: disable ftp test on + branch + +2008-12-03 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-02 21:44 hoffman + + * Tests/Fortran/: foo.c, foo.f, mysub.f: ENH: add missing files + +2008-12-02 16:40 hoffman + + * Utilities/cmcurl/Testing/curltest.c: ENH: disable ftp check + because it is no longer active on public + +2008-12-02 07:07 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Modules/CMakeASM-ATTInformation.cmake, + Modules/CMakeDetermineASM-ATTCompiler.cmake, + Modules/CMakeDetermineASMCompiler.cmake, + Modules/CMakeDetermineFortranCompiler.cmake, + Modules/CMakeTestASM-ATTCompiler.cmake, Modules/CTest.cmake, + Modules/FindQt4.cmake, Modules/FortranCInterface.cmake, + Modules/FortranCInterface.h.in, + Modules/InstallRequiredSystemLibraries.cmake, + Modules/Platform/SunOS-SunPro-Fortran.cmake, + Modules/Platform/Windows-g77.cmake, + Source/cmIncludeExternalMSProjectCommand.h, + Source/cmInstallTargetGenerator.cxx, Source/cmMakefile.cxx, + Source/cmMakefile.h, Source/cmake.cxx, + Source/CTest/cmCTestScriptHandler.cxx, + Source/CTest/cmCTestTestCommand.cxx, + Source/CTest/cmCTestTestCommand.h, + Source/kwsys/CTestConfig.cmake, Templates/TestDriver.cxx.in, + Tests/Fortran/CMakeLists.txt, Utilities/cmcurl/CMakeLists.txt: + ENH: merge in RC 5 + +2008-12-02 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-12-01 14:41 david.cole + + * Source/cmGlobalMSYSMakefileGenerator.cxx: BUG: Do not require + CMAKE_AR in the MSYS Makefiles generator when enabling language + "NONE". + +2008-12-01 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-30 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-29 00:05 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-28 10:50 david.cole + + * Source/cmCTest.h: STYLE: Fix line length style violation. + +2008-11-28 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-27 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-26 16:19 hoffman + + * Utilities/cmcurl/CMakeLists.txt: ENH: fix warning on HPUX + +2008-11-26 15:41 david.cole + + * Source/cmSystemTools.cxx: COMP: Using the proper type for local + variables can eliminate compiler warnings. + +2008-11-26 14:38 david.cole + + * Source/cmCTest.cxx, Source/cmCTest.h, Source/cmSystemTools.cxx, + Source/cmSystemTools.h, + Source/CTest/cmCTestBuildAndTestHandler.cxx, + Source/CTest/cmCTestTestHandler.cxx, + Source/CTest/cmCTestTestHandler.h, Tests/CMakeLists.txt, + Tests/Environment/CMakeLists.txt, Tests/Environment/main.cxx: + ENH: Implement feature request from issue 7885. Allow setting + environment variables on a per-test basis for ctest using + set_test_properties ENVIRONMENT. + +2008-11-26 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-25 16:56 clinton + + * Modules/FindQt4.cmake: + BUG: Revert 1.138. + +2008-11-25 16:50 king + + * Source/cmInstallTargetGenerator.cxx: BUG: Do not map install_name + of imported targets + + When we install a target on Mac, we generate a call to + install_name_tool to fix install_name entries in the target for + shared libraries it links. This change makes the step ignore + entries for imported targets since their install_name will not + change and cmTarget cannot produce a mapping for them. This + fixes the error + + GetLibraryNamesInternal called on imported target: kdelibs + + seen by kde folks. + +2008-11-25 09:52 perera + + * Templates/TestDriver.cxx.in: BUG: the return value of scanf + should not be ignored + +2008-11-25 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-24 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-23 22:07 hoffman + + * Source/kwsys/CTestConfig.cmake: ENH: make it submit to cdash + +2008-11-23 10:49 hoffman + + * Source/cmCTest.cxx, Source/CTest/cmCTestCoverageHandler.cxx, + Source/CTest/cmCTestScriptHandler.cxx, Tests/CMakeLists.txt: ENH: + add more debug stuff to CTestCTest2 so I can figure out redwall + +2008-11-23 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-22 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-21 16:37 hoffman + + * Tests/CMakeLists.txt: ENH: make ctest more verbose so that we can + see failure on redwall + +2008-11-21 16:32 hoffman + + * Source/: cmMakefile.cxx, cmMakefile.h, cmSetCommand.cxx: BUG: fix + issue with -D and cache force + +2008-11-21 16:10 hoffman + + * Tests/: Complex/Executable/CMakeLists.txt, + ComplexOneConfig/Executable/CMakeLists.txt, + ComplexRelativePaths/Executable/CMakeLists.txt: ENH: make this + test pass if new curl is on + +2008-11-21 14:57 hoffman + + * Source/cmIncludeExternalMSProjectCommand.h: BUG: fix for 8123 + documentation issue + +2008-11-21 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-20 14:06 hoffman + + * Tests/: Complex/Executable/CMakeLists.txt, + ComplexOneConfig/Executable/CMakeLists.txt, + ComplexRelativePaths/Executable/CMakeLists.txt: ENH: only link in + curl directories that exist, this will help with vs6 nmake + +2008-11-20 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-19 01:15 hoffman + + * Tests/: Complex/Executable/CMakeLists.txt, + ComplexOneConfig/Executable/CMakeLists.txt, + ComplexRelativePaths/Executable/CMakeLists.txt: ENH: make it work + if new curl is on + +2008-11-19 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-18 09:37 hoffman + + * Tests/: Complex/Executable/CMakeLists.txt, + ComplexOneConfig/Executable/CMakeLists.txt, + ComplexRelativePaths/Executable/CMakeLists.txt: ENH: make it work + if new curl is on + +2008-11-18 09:37 hoffman + + * Tests/CMakeLists.txt: ENH: add gfortran-4 + +2008-11-18 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-17 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-16 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-15 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-14 17:45 hoffman + + * Modules/CMakeDetermineFortranCompiler.cmake: BUG: fix for #8089, + fix rebuild with fortran and -D + +2008-11-14 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-13 17:12 david.cole + + * Modules/InstallRequiredSystemLibraries.cmake: BUG: Because of + Windows registry madness, we could not find the redistributables + directory on Win64 builds... Add a search directory based on + devenv (CMAKE_MAKE_PROGRAM) location so we can find it despite + the madness. + +2008-11-13 16:46 hoffman + + * Modules/FindDevIL.cmake: file FindDevIL.cmake was added on branch + CMake-2-6 on 2009-02-04 16:44:01 +0000 + +2008-11-13 16:46 alex + + * Modules/FindDevIL.cmake: BUG: the modules shipped with cmake + don't need CMAKE_MINIMUM_REQUIRED(VERSION), because the cmake + they are shipped with is always ok. Additionally, if a + Find-module does CMAKE_MINIMUM_REQUIRED(), it changes the + policies as they may be set up by the project. So this shouldn't + be done in a Find-module (or surrounded by policy-push/pop + commands) + + Alex + +2008-11-13 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-12 12:26 chris + + * Modules/FindDevIL.cmake: ENH: Added First revision of + FindDevIL.cmake + +2008-11-12 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-11 16:52 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/GetPrerequisites.cmake, + Modules/UseQt4.cmake, Source/cmGlobalGenerator.cxx, + Source/cmLocalVisualStudio7Generator.cxx, + Source/kwsys/DynamicLoader.hxx.in: ENH: merge in fixes from head + RC 4 + +2008-11-11 14:03 hoffman + + * Tests/Fortran/CMakeLists.txt: ENH: fix gcc sun fortran mix + +2008-11-11 13:58 hoffman + + * Modules/Platform/Windows-g77.cmake: ENH: fix fortran flags on g77 + windows + +2008-11-11 13:58 hoffman + + * Modules/Platform/SunOS-SunPro-Fortran.cmake: ENH: fix fortran + flags on sun + +2008-11-11 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-10 13:42 hoffman + + * Source/cmGlobalGenerator.cxx: BUG: fix package_source target + +2008-11-10 10:53 hoffman + + * Tests/Fortran/CMakeLists.txt: ENH: put a check in for the gnu + sunpro case + +2008-11-10 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-09 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-08 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-07 16:40 hoffman + + * Source/kwsys/DynamicLoader.hxx.in: BUG: fix for bug 8060 Haiku + build + +2008-11-07 15:56 alex + + * Source/CTest/cmCTestScriptHandler.cxx: ENH: load + CMakeDetermineSystem and CMakeSystemSpecificInformation when + executing a ctest script so the search paths are fully set up and + variables like CMAKE_SYSTEM are available. This is useful e.g. + for new-style ctest scripting. (these files are also loaded on + startup by cpack, so now they behave similar). Hmmm, maybe they + should be also loaded by cmake -P ? + + Alex + +2008-11-07 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-06 17:33 hoffman + + * Tests/Fortran/CMakeLists.txt: ENH: make the test pass when + fortran is gnu and c is cl + +2008-11-06 10:54 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Utilities/cmcurl/CMakeLists.txt: ENH: merge in haiku build change + from head, again... + +2008-11-06 09:41 hoffman + + * Tests/Fortran/CMakeLists.txt: ENH: add a way to fix bullseye link + with fortran + +2008-11-06 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-05 18:51 alex + + * Modules/CMakeASM-ATTInformation.cmake: STYLE: add some comment, + so it says at least a bit what it is good for + + Alex + +2008-11-05 17:56 clinton + + * Modules/FindQt4.cmake: + BUG: Fix #7969. Fix moc output files if source dir contains + regex characters. + +2008-11-05 17:27 hoffman + + * Modules/CMakeASM_MASMInformation.cmake: file + CMakeASM_MASMInformation.cmake was added on branch CMake-2-6 on + 2008-12-31 15:14:18 +0000 + +2008-11-05 17:27 hoffman + + * Modules/CMakeDetermineASM_MASMCompiler.cmake: file + CMakeDetermineASM_MASMCompiler.cmake was added on branch + CMake-2-6 on 2008-12-31 15:14:18 +0000 + +2008-11-05 17:27 hoffman + + * Modules/CMakeTestASM_MASMCompiler.cmake: file + CMakeTestASM_MASMCompiler.cmake was added on branch CMake-2-6 on + 2008-12-31 15:14:19 +0000 + +2008-11-05 17:27 alex + + * Modules/: CMakeASM_MASMInformation.cmake, + CMakeDetermineASM-ATTCompiler.cmake, + CMakeDetermineASMCompiler.cmake, + CMakeDetermineASM_MASMCompiler.cmake, + CMakeTestASM-ATTCompiler.cmake, CMakeTestASM_MASMCompiler.cmake: + ENH: add support for the MS masm and masm64 assemblers, works + with nmake, not (yet) with the Visual Studio generators + + Alex + +2008-11-05 16:54 clinton + + * Modules/UseQt4.cmake: + BUG: Fix #7934. phonon doesn't always depend on QtDBus. + +2008-11-05 10:20 hoffman + + * Tests/Fortran/CMakeLists.txt: ENH: only call the fortran c + interface test when compilers match + +2008-11-05 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-04 15:16 hoffman + + * CMakeLists.txt, ChangeLog.manual, Utilities/cmcurl/select.c, + Utilities/cmcurl/CMake/CurlTests.c, Utilities/cmcurl/curl/curl.h, + Utilities/cmtar/util.c, Utilities/cmzlib/zconf.h, + Utilities/cmzlib/zutil.h: ENH: merge in the rest of the haiku + changes + +2008-11-04 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-03 16:23 alex + + * Modules/CTest.cmake: STYLE: mention cdash (not only dart) + + Alex + +2008-11-03 12:15 hoffman + + * Tests/Fortran/CMakeLists.txt: ENH: only allow matching fortran a + c compilers to be used + +2008-11-03 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-02 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-11-01 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-31 16:08 hoffman + + * Tests/Fortran/: CMakeLists.txt: ENH: do not error when sunpro or + mipspro fortran used + +2008-10-31 07:50 hoffman + + * Modules/FortranCInterface.cmake: ENH: fix for intel module on + linux + +2008-10-31 07:50 hoffman + + * Modules/FortranCInterface.cmake: file FortranCInterface.cmake was + added on branch CMake-2-6 on 2008-12-02 12:07:37 +0000 + +2008-10-31 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-30 17:48 hoffman + + * Modules/FortranCInterface.cmake: ENH: better output if module + linkage is not found + +2008-10-30 17:32 hoffman + + * Tests/Fortran/CMakeLists.txt: ENH: add some debug stuff for the + dashboards + +2008-10-30 16:50 hoffman + + * Modules/FortranCInterface.cmake: ENH: fix uppercase version so + defines are not upper as well + +2008-10-30 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-29 19:49 hoffman + + * Modules/FortranCInterface.cmake: ENH: fix check for intel windows + module mangling + +2008-10-29 19:34 hoffman + + * Modules/FortranCInterface.cmake: ENH: fix check for intel windows + module mangling + +2008-10-29 17:40 hoffman + + * Modules/: FortranCInterface.cmake: ENH: add check for intel + windows module mangling + +2008-10-29 17:37 hoffman + + * Modules/FortranCInterface.cmake: ENH: fix upper case + +2008-10-29 12:27 david.cole + + * Tests/: CMakeLists.txt, CPackComponents/CMakeLists.txt: ENH: Use + settings for CPackComponents test to make it fail if the recent + fix of cmCPackGenerator.cxx revision 1.16 ever encounters another + regression. + +2008-10-29 12:24 hoffman + + * Modules/FortranCInterface.cmake: ENH: only check for module + linkage if f90 is available + +2008-10-29 11:50 hoffman + + * Modules/FortranCInterface.cmake: ENH: fix for xlf module linkage + +2008-10-29 10:58 hoffman + + * Modules/FortranCInterface.cmake, Tests/Fortran/CMakeLists.txt, + Tests/Fortran/foo.c, Tests/Fortran/foo.f, Tests/Fortran/mysub.f: + ENH: add test for FortranCInterface + +2008-10-29 10:58 hoffman + + * Tests/Fortran/foo.c: file foo.c was added on branch CMake-2-6 on + 2008-12-03 02:44:25 +0000 + +2008-10-29 10:58 hoffman + + * Tests/Fortran/foo.f: file foo.f was added on branch CMake-2-6 on + 2008-12-03 02:44:25 +0000 + +2008-10-29 10:58 hoffman + + * Tests/Fortran/mysub.f: file mysub.f was added on branch CMake-2-6 + on 2008-12-03 02:44:25 +0000 + +2008-10-29 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-28 19:53 hoffman + + * Modules/FortranCInterface.cmake: ENH: add support for g77 extra _ + at the end of functions that have an _ in the name... + +2008-10-28 00:03 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-27 21:42 hoffman + + * Modules/FortranCInterface.cmake: ENH: add support for module + functions + +2008-10-27 15:31 hoffman + + * Source/cmLocalVisualStudio7Generator.cxx: ENH: make the scc + optional + +2008-10-27 15:23 hoffman + + * Modules/: FortranCInterface.cmake, FortranCInterface.h.in: ENH: + add fortran link discovery module + +2008-10-27 15:23 hoffman + + * Modules/FortranCInterface.h.in: file FortranCInterface.h.in was + added on branch CMake-2-6 on 2008-12-02 12:07:37 +0000 + +2008-10-27 13:51 hoffman + + * Source/cmLocalVisualStudio7Generator.cxx: BUG: fix for 7839 and + 4524 + +2008-10-27 05:23 hoffman + + * Modules/FindRTI.cmake: file FindRTI.cmake was added on branch + CMake-2-6 on 2009-02-04 16:44:12 +0000 + +2008-10-27 05:23 gotthardp + + * Modules/FindRTI.cmake: BUG: Fixed CMAKE_FIND_LIBRARY_PREFIXES + related error on Win32 systems. + +2008-10-25 14:25 gotthardp + + * Modules/FindRTI.cmake: BUG: removed unused CMakeFindFrameworks + include + +2008-10-25 12:20 gotthardp + + * Modules/FindRTI.cmake: ENH: added a module to find M&S HLA RTI + +2008-10-24 23:53 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-24 17:48 clinton + + * Modules/FindQt4.cmake: + BUG: Fix find of assistant on Mac. + +2008-10-24 11:39 david.cole + + * Modules/GetPrerequisites.cmake, Tests/CMakeTests/CMakeLists.txt: + ENH: Activate GetPrerequisites code on Linux. Thanks to Mike + Arthur for finishing it off. + +2008-10-24 11:18 hoffman + + * CMakeLists.txt, ChangeLog.manual, bootstrap, + Modules/CMakeASMInformation.cmake, + Modules/CMakeCInformation.cmake, + Modules/CMakeCXXInformation.cmake, + Modules/CMakeFortranCompilerId.F90.in, + Modules/CMakeFortranInformation.cmake, + Modules/CMakePlatformId.h.in, Modules/CMakeRCInformation.cmake, + Modules/CheckForPthreads.c, Modules/FindBoost.cmake, + Modules/FindGLUT.cmake, Modules/FindMFC.cmake, + Modules/FindPerlLibs.cmake, Modules/FindQt4.cmake, + Modules/FindTclStub.cmake, Modules/FindwxWidgets.cmake, + Modules/Platform/Linux.cmake, Modules/Platform/OpenBSD.cmake, + Modules/Platform/Windows-gcc.cmake, Source/CMakeLists.txt, + Source/cmAddCustomTargetCommand.cxx, + Source/cmAddCustomTargetCommand.h, Source/cmCTest.cxx, + Source/cmCallVisualStudioMacro.cxx, Source/cmCommand.h, + Source/cmComputeLinkInformation.cxx, + Source/cmComputeLinkInformation.h, Source/cmDependsJavaLexer.cxx, + Source/cmDependsJavaLexer.h, Source/cmDocumentation.cxx, + Source/cmDocumentation.h, Source/cmDocumentationFormatter.cxx, + Source/cmDocumentationFormatter.h, + Source/cmDocumentationFormatterDocbook.cxx, + Source/cmDocumentationFormatterDocbook.h, + Source/cmDocumentationFormatterHTML.cxx, + Source/cmDocumentationFormatterHTML.h, + Source/cmDocumentationFormatterMan.cxx, + Source/cmDocumentationFormatterMan.h, + Source/cmEnableLanguageCommand.cxx, Source/cmFindBase.cxx, + Source/cmFindCommon.cxx, Source/cmFindLibraryCommand.cxx, + Source/cmFindPackageCommand.cxx, Source/cmGlobalGenerator.cxx, + Source/cmGlobalGenerator.h, + Source/cmGlobalNMakeMakefileGenerator.cxx, + Source/cmGlobalVisualStudio71Generator.cxx, + Source/cmGlobalVisualStudio7Generator.cxx, + Source/cmGlobalXCodeGenerator.cxx, + Source/cmGlobalXCodeGenerator.h, Source/cmIfCommand.cxx, + Source/cmIfCommand.h, Source/cmInstallCommand.cxx, + Source/cmInstallTargetGenerator.cxx, + Source/cmInstallTargetGenerator.h, Source/cmListFileCache.cxx, + Source/cmListFileCache.h, Source/cmLocalGenerator.cxx, + Source/cmLocalGenerator.h, + Source/cmLocalUnixMakefileGenerator3.cxx, + Source/cmLocalUnixMakefileGenerator3.h, + Source/cmLocalVisualStudio7Generator.cxx, + Source/cmMacroCommand.cxx, Source/cmMakefile.cxx, + Source/cmMakefile.h, + Source/cmMakefileExecutableTargetGenerator.cxx, + Source/cmMakefileLibraryTargetGenerator.cxx, + Source/cmMakefileTargetGenerator.cxx, + Source/cmMakefileTargetGenerator.h, + Source/cmOutputRequiredFilesCommand.cxx, Source/cmPolicies.cxx, + Source/cmPolicies.h, Source/cmSetTargetPropertiesCommand.h, + Source/cmSourceFile.cxx, Source/cmSystemTools.cxx, + Source/cmTarget.cxx, Source/cmWhileCommand.cxx, Source/cmake.cxx, + Source/cmakemain.cxx, Source/CPack/cmCPackBundleGenerator.cxx, + Source/CPack/cmCPackGenerator.cxx, + Source/CPack/cmCPackGenerator.h, + Source/CPack/cmCPackNSISGenerator.cxx, + Source/CPack/cmCPackNSISGenerator.h, + Source/CPack/cmCPackPackageMakerGenerator.cxx, + Source/CTest/cmCTestUpdateHandler.cxx, + Source/CursesDialog/cmCursesMainForm.cxx, + Source/kwsys/DynamicLoader.cxx, + Source/kwsys/DynamicLoader.hxx.in, Source/kwsys/ProcessUNIX.c, + Source/kwsys/SystemInformation.cxx, Source/kwsys/SystemTools.cxx, + Source/kwsys/testDynamicLoader.cxx, Source/kwsys/testProcess.c, + Tests/CMakeLists.txt, Tests/CTestUpdateCVS.cmake.in, + Tests/CTestUpdateCommon.cmake, Tests/CTestUpdateSVN.cmake.in, + Tests/Complex/CMakeLists.txt, Tests/Complex/cmTestConfigure.h.in, + Tests/ComplexOneConfig/CMakeLists.txt, + Tests/ComplexOneConfig/cmTestConfigure.h.in, + Tests/ComplexRelativePaths/CMakeLists.txt, + Tests/ComplexRelativePaths/cmTestConfigure.h.in, + Tests/Complex/Executable/complex.cxx, + Tests/ComplexOneConfig/Executable/complex.cxx, + Tests/ComplexRelativePaths/Executable/complex.cxx, + Tests/CustomCommand/CMakeLists.txt, + Tests/FindPackageTest/CMakeLists.txt, + Tests/FindPackageTest/lib/RecursiveA/recursivea-config.cmake, + Tests/FindPackageTest/lib/zot/zot-config-version.cmake, + Tests/FindPackageTest/lib/zot/zot-config.cmake, + Modules/FindCoin3D.cmake, Modules/Platform/Haiku.cmake, + Tests/FindPackageTest/FindRecursiveA.cmake, + Tests/FindPackageTest/FindRecursiveB.cmake, + Tests/FindPackageTest/FindRecursiveC.cmake: ENH: merge in changes + for 2.6.3 RC 1 + +2008-10-23 23:53 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-22 23:53 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-21 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-20 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-20 13:31 clinton + + * Modules/FindQt4.cmake: + BUG: Fix regression in finding QtAssistant + +2008-10-20 11:50 miguelf + + * Modules/FindwxWidgets.cmake: BUG: Fix to find wxWidgets_LIB_DIR + for windows platform more generally; supports gcc, nmake, + and visual studio in all configurations. + +2008-10-19 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-19 21:14 miguelf + + * Modules/FindwxWidgets.cmake: BUG: Added unicode paths for + wxWidgets_LIB_DIR search and the 2.8.9 suffix for + wxWidgets_ROOT_DIR search. + +2008-10-19 16:16 king + + * Tests/CMakeLists.txt: ENH: Enable cvs update test with CMake + before 2.6 + + When CMake is built by CMake 2.4 or lower the FindCVS module is + not available. In that case we activiate CTest.UpdateCVS by + searching for the cvs command directly. + +2008-10-19 11:53 hoffman + + * Tests/CTestUpdateCVS.cmake.in: file CTestUpdateCVS.cmake.in was + added on branch CMake-2-6 on 2008-10-24 15:18:56 +0000 + +2008-10-19 11:53 hoffman + + * Tests/CTestUpdateCommon.cmake: file CTestUpdateCommon.cmake was + added on branch CMake-2-6 on 2008-10-24 15:18:56 +0000 + +2008-10-19 11:53 hoffman + + * Tests/CTestUpdateSVN.cmake.in: file CTestUpdateSVN.cmake.in was + added on branch CMake-2-6 on 2008-10-24 15:18:56 +0000 + +2008-10-19 11:53 king + + * Tests/: CMakeLists.txt, CTestUpdateCVS.cmake.in, + CTestUpdateCommon.cmake, CTestUpdateSVN.cmake.in: ENH: Test CTest + update logic with VCS tools + + This creates new tests "CTest.UpdateSVN" and "CTest.UpdateCVS". + They test that the Update.xml produced by CTest for a + version-controlled project contains entries for files added, + changed, and removed. + +2008-10-19 10:44 hoffman + + * Source/CTest/cmCTestUpdateHandler.cxx: BUG: use LC_MESSAGES = C + instead of en_EN + +2008-10-18 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-18 12:07 king + + * Source/CTest/cmCTestUpdateHandler.cxx: BUG: Fix recognition of + files deleted from CVS + + The output of "cvs update" contains a line such as one of + + cvs update: `foo.txt' is no longer in the repository + cvs update: foo.txt is no longer in the repository + cvs update: warning: foo.txt is not (any longer) pertinent + + when file "foo.txt" has been removed in the version to which the + update occurs. Previously only the first case would be + recognized. This fixes the regular expression to match all these + cases. + +2008-10-18 10:31 hoffman + + * Tests/CMakeBuildTest.cmake.in: ENH: fix test to work with + in-source testing of CMake + +2008-10-17 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-17 12:52 king + + * Source/kwsys/CMakeLists.txt: BUG: Fix KWSys SystemInformation + dependencies + + The SystemInformation component of KWSys requires Process and + FundamentalType. + +2008-10-17 12:51 king + + * Source/kwsys/CMakeLists.txt: BUG: Enforce KWSys component + dependencies early + + KWSys component dependencies must be enforced before any tests + for enabled components are done. This moves the dependency + enforcement code to be as early as possible. + +2008-10-17 11:29 barre + + * Source/kwsys/: SystemInformation.cxx: ENH: fix for VS6 and Cygwin + +2008-10-16 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-16 19:30 barre + + * Source/kwsys/: SystemInformation.cxx, SystemTools.cxx, + SystemTools.hxx.in: ENH: fix for Vista + +2008-10-16 11:34 barre + + * Source/kwsys/: SystemTools.cxx: ENH: oops + +2008-10-15 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-15 23:24 barre + + * Source/kwsys/: SystemTools.cxx: ENH: fix for Windows Vista + +2008-10-15 18:05 clinton + + * Modules/FindQt4.cmake: + ENH: better way to find uic and moc. + +2008-10-15 16:56 hoffman + + * Tests/CMakeBuildTest.cmake.in: ENH: run the right cmake + +2008-10-15 16:50 hoffman + + * Tests/CMakeBuildTest.cmake.in: ENH: run the right cmake + +2008-10-15 15:13 hoffman + + * Source/cmake.cxx: ENH: fix bootstrap test and warning + +2008-10-15 13:56 hoffman + + * Source/cmGlobalGenerator.cxx, Source/cmGlobalGenerator.h, + Source/cmProjectCommand.cxx, Source/cmake.cxx, Source/cmake.h, + Source/cmakemain.cxx, Tests/CMakeBuildTest.cmake.in, + Tests/CMakeLists.txt: BUG: 4244, add a --build option to cmake + that can build projects configured by CMake + +2008-10-15 10:49 hoffman + + * Modules/CMakeDetermineRCCompiler.cmake: ENH: remove extra set + +2008-10-15 10:40 king + + * Source/: cmLocalUnixMakefileGenerator3.h, + cmMakefileTargetGenerator.cxx: BUG: Fix color check for + dependency scanning + + Generation of color rules for dependency scanning messages did + not account for disabling color at generation time. See issue + #7814. + +2008-10-15 10:21 king + + * Source/cmMakefileTargetGenerator.cxx: ENH: Support object lists + longer than 128K on MSVC + + We use response files to list object files for the MSVC linker. + The linker complains if any response file is greater than 128K, + so we split the object file lists into multiple response files. + +2008-10-15 10:21 king + + * Source/: cmMakefileExecutableTargetGenerator.cxx, + cmMakefileLibraryTargetGenerator.cxx, + cmMakefileTargetGenerator.cxx, cmMakefileTargetGenerator.h: ENH: + Factor out listing of objects on command line + + Previously generation of object file lists for linker and + cleaning command lines was duplicated for library and executable + target generators. This combines the implementations. + +2008-10-15 10:21 king + + * Source/: cmMakefileExecutableTargetGenerator.cxx, + cmMakefileLibraryTargetGenerator.cxx: STYLE: Remove computed but + unused variable. + + An old list of object files for cleaning seems to have been left + behind. This removes it. + +2008-10-15 09:35 david.cole + + * Source/CPack/cmCPackGenerator.cxx: BUG: Use the DESTDIR prefix + when creating the directory in CPack when CPACK_SET_DESTDIR is + ON. Thanks to Petri Hodju for reporting this regression to the + CMake mailing list: + http://www.cmake.org/pipermail/cmake/2008-October/024563.html. + +2008-10-14 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-14 16:07 hoffman + + * Modules/: CMakeASMInformation.cmake, CMakeCInformation.cmake, + CMakeCXXInformation.cmake, CMakeDetermineRCCompiler.cmake, + CMakeFortranInformation.cmake, CMakeRCInformation.cmake, + Platform/Windows-cl.cmake: ENH: fix problem where rc language + recursively included itself because CMAKE_BASE_NAME was used from + c compiler, do the same fix for other uses of CMAKE_BASE_NAME + +2008-10-14 13:56 hoffman + + * Source/cmEnableLanguageCommand.cxx: ENH: revert last change, as + it fails tests + +2008-10-14 11:42 hoffman + + * Modules/Platform/Windows-cl.cmake, + Source/cmGlobalNMakeMakefileGenerator.cxx, + Source/cmEnableLanguageCommand.cxx: ENH: better error message for + mis-configured nmake environment + +2008-10-14 08:43 king + + * Source/cmFindBase.cxx: ENH: Clarify PATH_SUFFIXES documentation + + This clarifies documentation of the find_* commands' + PATH_SUFFIXES option. The option adds paths with the suffixes + but does not remove the paths without the suffixes. + +2008-10-13 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-13 22:12 clinton + + * Modules/FindQt4.cmake: + ENH: When changing the qmake pointed to, re-find all of Qt's + includes, libraries, etc... This makes it much easier to + switch between Qt versions. + +2008-10-13 19:39 clinton + + * Modules/FindQt4.cmake: + BUG: Fix find of dbus dependency in Qt 4.4 + +2008-10-13 09:58 king + + * Source/cmFindBase.cxx: BUG: Fix find_* search order with path + suffixes + + In cmFindBase we were searching all path suffixes appended to all + paths before considering the paths without any suffixes. Instead + we should consider each path with and without suffixes before + moving to the next path. See issue #7783. + +2008-10-12 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-11 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-11 15:35 king + + * Source/cmDocumentation.cxx: COMP: Fix assignment inside condition + +2008-10-11 12:02 king + + * Source/cmListFileCache.h: BUG: Make sure context info is always + initialized + + This adds a missing default constructor to cmListFileContext that + makes sure the line number is initialized to zero. A zero line + number will indicate a generated context. + +2008-10-10 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-10 17:43 david.cole + + * Modules/FindMFC.cmake: BUG: Fix for issue #5193. Base result of + FindMFC.cmake mostly on a TRY_COMPILE result. Gives accurate + answer about whether MFC is available. + +2008-10-10 17:08 david.cole + + * Source/CPack/cmCPackNSISGenerator.cxx: BUG: Fix issue #7800. + Enable CPack to find the NSIS installer on Windows 2000. + +2008-10-10 11:23 king + + * Source/: cmDocumentation.cxx, cmDocumentation.h, + cmDocumentationFormatter.cxx, cmDocumentationFormatter.h, + cmDocumentationFormatterDocbook.cxx, + cmDocumentationFormatterDocbook.h, + cmDocumentationFormatterHTML.cxx, cmDocumentationFormatterHTML.h, + cmDocumentationFormatterMan.cxx, cmDocumentationFormatterMan.h: + ENH: Improve generated documentation formatting + + Applying patch provided in issue #7797. + + Fixes to man-pages: - Character '-' must be espaced as '\-' - + Surround preformatted text with '.nf' and '.fi' to adjust filling + - Give every page a NAME section for indexing by mandb - Pass + the man page filename without extension to .TH in its header + + Also added a title to the HTML header. + +2008-10-10 11:23 king + + * Source/cmDocumentation.cxx: BUG: Fix help type for filenames with + many dots + + The help page type should be determined using only the extension + after the last dot. See issue #7797. + +2008-10-10 11:23 king + + * Source/kwsys/SystemTools.cxx: STYLE: Fix typo in + GetFilenameLastExtension docs + + See issue #7797. + +2008-10-10 10:48 hoffman + + * Source/cmOutputRequiredFilesCommand.cxx: BUG: fix for 5071, + report error if output file can not be opened + +2008-10-10 10:20 hoffman + + * Source/cmakemain.cxx: BUG: fix for 3778, better docs for -E + +2008-10-10 09:36 hoffman + + * Source/CTest/cmCTestUpdateHandler.cxx: ENH: play it safe and + restore the value of LC_MESSAGES + +2008-10-10 09:23 hoffman + + * Source/CTest/cmCTestUpdateHandler.cxx: ENH: make sure LC_MESSAGES + is en_EN so that we can parse the output of svn and cvs + +2008-10-10 08:11 king + + * Source/cmGlobalXCodeGenerator.h: STYLE: Fix line-too-long + +2008-10-09 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-09 17:04 king + + * Modules/FindBoost.cmake: BUG: Avoid boost versions less than + required + + Construction of a list of candidate versions used to produce + search paths now discards versions less than requested by the + user. See issue #7783. + +2008-10-09 15:30 king + + * Source/: cmLocalGenerator.cxx, cmLocalGenerator.h, + cmLocalUnixMakefileGenerator3.cxx, + cmLocalUnixMakefileGenerator3.h, + cmMakefileExecutableTargetGenerator.cxx, + cmMakefileLibraryTargetGenerator.cxx, + cmMakefileTargetGenerator.cxx: ENH: Fix optional use of relative + paths. + + These changes refactor cmLocalGenerator methods Convert and + ConvertToOutputForExisting to support references inside the build + tree using relative paths. After this commit, all tests pass + with Makefile generators when relative paths are enabled by + default. See issue #7779. + +2008-10-09 15:08 king + + * Source/cmLocalUnixMakefileGenerator3.cxx: ENH: Simplify makefile + ref to interactive editor + + The CMAKE_EDIT_COMMAND make variable need not be constructed with + ConvertToOutputForExisting. The CMAKE_COMMAND variable works + fine without it. + +2008-10-09 15:07 king + + * Source/: cmLocalGenerator.cxx, cmMakefileTargetGenerator.cxx: + ENH: Simplify framework -F flag generation + + This removes an unnecessary use of ConvertToOutputForExisting + which is needed only on Windows to consider short-pathing. + +2008-10-09 13:52 king + + * Modules/CMakeRCInformation.cmake: BUG: Pass definitions to rc + with Makefiles + + The build rule to run the resource compiler on Windows with a + Makefiles generator should include the placeholder to add the + definition flags. See issue #7769. + +2008-10-09 13:52 king + + * Source/cmMakefile.cxx: BUG: Finish fix to old DEFINITIONS + property + + The cmMakefile::DefineFlagsOrig ivar was created to help preserve + the old DEFINITIONS property behavior now that definitions are + moved from DefineFlags to the COMPILE_DEFINITIONS directory + property. This fixes propagation of the original value into + subdirectories. + +2008-10-09 13:00 hoffman + + * Source/CTest/cmCTestBuildHandler.cxx: BUG: fix for 5218 Error + message pattern match for VS8 + +2008-10-09 12:49 hoffman + + * Source/CursesDialog/cmCursesMainForm.cxx: BUG: fix for 4026, + display a message if ccmake has errors + +2008-10-09 11:01 king + + * Source/: cmGlobalXCodeGenerator.cxx, cmGlobalXCodeGenerator.h: + ENH: Put custom target sources in Xcode projects + + Source files in custom targets are now placed in the Xcode + project for convenient editing. See issue #5848. + +2008-10-09 11:01 king + + * Source/cmAddCustomTargetCommand.cxx, + Source/cmAddCustomTargetCommand.h, + Tests/CustomCommand/CMakeLists.txt: ENH: Allow custom sources in + custom targets + + This adds a SOURCES option to ADD_CUSTOM_TARGET, enabling users + to specify extra sources for inclusion in the target. Such + sources may not build, but will show up in the IDE project files + for convenient editing. See issue #5848. + +2008-10-09 11:00 king + + * Source/: cmMakefile.cxx, cmMakefile.h: ENH: Return utility target + after creation + + After creating a utility target with AddUtilityCommand, return a + pointer to the cmTarget instance so the caller may further modify + the target as needed. + +2008-10-08 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-08 17:58 alex + + * Source/CTest/cmCTestTestCommand.h: STYLE: lowercase ctest_test() + in the documentation + + Alex + +2008-10-08 14:19 david.cole + + * Source/: CMakeLists.txt, cmCallVisualStudioMacro.cxx: BUG: Fix + issue #7533. Revise fix for issue #7058 to use pragma comment + libs in the source file rather than using TARGET_LINK_LIBRARIES + in CMakeLists.txt because of the complex ifdef logic used in + correct copies of comdef.h. + +2008-10-08 10:56 hoffman + + * Tests/FindPackageTest/FindRecursiveA.cmake: file + FindRecursiveA.cmake was added on branch CMake-2-6 on 2008-10-24 + 15:20:35 +0000 + +2008-10-08 10:56 king + + * Source/cmFindPackageCommand.cxx, + Tests/FindPackageTest/FindRecursiveA.cmake: ENH: Remove implicit + NO_MODULE when recursing + + Recently we taught find_package that the NO_MODULE option is + implied when it is recursively invoked in a find-module. This + behavior may be confusing because two identical calls may enter + different modes depending on context. It also disallows the + possibility that one find-module defers to another find-module by + changing CMAKE_MODULE_PATH and recursively invoking find_package. + This change reverts the feature. + +2008-10-07 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-07 16:46 hoffman + + * Source/cmTarget.cxx: ENH: add missing property definitions + +2008-10-07 16:23 hoffman + + * Source/: cmLocalVisualStudio7Generator.cxx, + cmSetTargetPropertiesCommand.h: BUG: fix for 4524, add support + for target properties to set vs source code control information + +2008-10-07 10:35 clinton + + * Modules/FindQt4.cmake: + ENH: Fix #7784. Fix link of glib when needed. + +2008-10-06 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-06 11:04 king + + * Source/cmLocalUnixMakefileGenerator3.cxx: BUG: Fix convenience + rule working directory + + We generate convenience rules to build object files, preprocessed + outputs, and assembly outputs of source files individually with + make rules. This removes a redundant working directory change + when more than one target builds the same source file. + +2008-10-05 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-04 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-03 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-03 10:41 hoffman + + * Tests/FindPackageTest/lib/zot/zot-config-version.cmake: file + zot-config-version.cmake was added on branch CMake-2-6 on + 2008-10-24 15:19:03 +0000 + +2008-10-03 10:41 hoffman + + * Tests/FindPackageTest/lib/zot/zot-config.cmake: file + zot-config.cmake was added on branch CMake-2-6 on 2008-10-24 + 15:19:06 +0000 + +2008-10-03 10:41 king + + * Source/cmFindPackageCommand.cxx, + Tests/FindPackageTest/lib/zot/zot-config-version.cmake, + Tests/FindPackageTest/lib/zot/zot-config.cmake: ENH: Add + UNSUITABLE result to package version test + + Package version test files may now declare that they are + unsuitable for use with the project testing them. This is + important when the version being tested does not provide a + compatible ABI with the project target environment. + +2008-10-03 10:40 hoffman + + * Tests/FindPackageTest/lib/RecursiveA/recursivea-config.cmake: + file recursivea-config.cmake was added on branch CMake-2-6 on + 2008-10-24 15:19:01 +0000 + +2008-10-03 10:40 hoffman + + * Tests/FindPackageTest/FindRecursiveB.cmake: file + FindRecursiveB.cmake was added on branch CMake-2-6 on 2008-10-24 + 15:20:35 +0000 + +2008-10-03 10:40 hoffman + + * Tests/FindPackageTest/FindRecursiveC.cmake: file + FindRecursiveC.cmake was added on branch CMake-2-6 on 2008-10-24 + 15:20:35 +0000 + +2008-10-03 10:40 king + + * Source/cmFindPackageCommand.cxx, + Tests/FindPackageTest/CMakeLists.txt, + Tests/FindPackageTest/FindRecursiveA.cmake, + Tests/FindPackageTest/FindRecursiveB.cmake, + Tests/FindPackageTest/FindRecursiveC.cmake, + Tests/FindPackageTest/lib/RecursiveA/recursivea-config.cmake: + ENH: Help recursive find_package calls in modules + + These changes teach find_package to behave nicely when invoked + recursively inside a find-module for the same package. The + module will never be recursively loaded again. Version arguments + are automatically forwarded. + +2008-10-03 10:39 king + + * Source/cmFindPackageCommand.cxx: ENH: Warn and ignore EXACT + without version + + If the find_package command is invoked with the EXACT option but + without a version, warn and ignore the option. + +2008-10-03 10:11 king + + * Source/: cmInstallTargetGenerator.cxx, + cmInstallTargetGenerator.h: BUG: Fix config test for target + install rules + + In single-configuration generators a target installation rule + should apply to all configurations for which the INSTALL command + was specified. The configuration in which the target is built + does not matter. + + In multi-configuration generators each installation rule must be + associated with a particular build configuration to install the + proper file. The set of configurations for which rules are + generated is the intersection of the build configurations and + those for which the INSTALL command was specified. + +2008-10-03 08:16 hoffman + + * Source/cmFindCommon.cxx: ENH: undo bad checkin + +2008-10-02 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-02 18:48 alex + + * Source/cmTarget.cxx: STYLE: add documentation for the "TYPE" + target property + + Alex + +2008-10-02 13:49 hoffman + + * Source/cmGlobalXCodeGenerator.cxx: BUG: 7763 fix, OPTIMIZATION + was not set right. Also fix for BUG 7764, put XCODE_ATTRIBUTES_ + last + +2008-10-02 12:11 hoffman + + * Modules/Platform/Windows-gcc.cmake: BUG: fix for 5705, link in + standard libs for mingw + +2008-10-02 09:18 hoffman + + * Source/: cmFindCommon.cxx, CPack/cmCPackBundleGenerator.cxx, + CPack/cmCPackGenerator.cxx, CTest/cmProcess.cxx: STYLE: fix line + length issues + +2008-10-01 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-10-01 16:16 hoffman + + * Source/cmake.cxx: BUG: fix for 6280, -E time was not sending back + return value + +2008-10-01 16:10 hoffman + + * Modules/FindPerlLibs.cmake: ENH: find perl with FindPerl not + find_program, bug: 6243 + +2008-10-01 14:19 hoffman + + * Modules/FindTclStub.cmake: BUG: fix for 7451 + +2008-10-01 13:24 hoffman + + * Modules/: CMakeCInformation.cmake, Platform/Linux.cmake: BUG: fix + for bug 4772, enable_language should now work on linux with + correct flags + +2008-10-01 13:13 hoffman + + * Utilities/Release/: ferrari_sgi64_release.cmake, + ferrari_sgi_release.cmake: ENH: add new sgi release scripts + +2008-10-01 12:46 hoffman + + * Source/CTest/cmCTestUpdateHandler.cxx: BUG: undo fix for 7292 + because a switched file should show up as an odd thing on the + dashbaord + +2008-10-01 12:45 hoffman + + * Source/cmGlobalGenerator.cxx: STYLE: fix hidden variable warning + +2008-10-01 09:50 hoffman + + * Source/: cmGlobalGenerator.cxx, cmGlobalGenerator.h: BUG: fix for + 7738, allow for spaces in the package target path to CPackConfig + files + +2008-10-01 09:04 hoffman + + * Source/: cmCTest.cxx, cmGlobalVisualStudio71Generator.cxx, + cmGlobalVisualStudio7Generator.cxx, cmIfCommand.cxx, + cmInstallCommand.cxx, cmLocalVisualStudio7Generator.cxx, + cmMakefile.cxx, cmake.cxx, CPack/cmCPackBundleGenerator.cxx, + CPack/cmCPackGenerator.cxx, CPack/cmCPackGenerator.h, + CPack/cmCPackNSISGenerator.cxx, CPack/cmCPackNSISGenerator.h, + CPack/cmCPackPackageMakerGenerator.cxx, + CTest/cmCTestTestHandler.cxx: STYLE: fix line length stuff for + KWStyle + +2008-09-30 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-29 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-29 16:09 hoffman + + * Utilities/cm_curl.h: ENH: fix syntax error + +2008-09-29 15:47 hoffman + + * CMakeLists.txt, Utilities/cmThirdParty.h.in, Utilities/cm_curl.h: + ENH: check in ability to build with new curl -f + -DCMAKE_USE_NEW_CURL is set + +2008-09-28 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-27 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-27 08:04 king + + * Source/kwsys/SharedForward.h.in: COMP: Avoid incompatible pointer + warning + + In SharedForward, the call to execvp warned on MinGW because the + signature declared in process.h has an extra const. We use an + explicit cast to convert the pointer type. + +2008-09-26 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-26 20:09 hoffman + + * Modules/FindGLUT.cmake: BUG: fix for 7746 + +2008-09-26 12:08 barre + + * Source/kwsys/SharedForward.h.in: ENH: fix bug where sharedforward + would not work if there was a space in the path (it would but + would interpret the space as the separation between two + arguments, and would therefore pass an extra arg that would throw + some apps off). Thanks to Brad King. + +2008-09-26 08:24 king + + * Source/kwsys/: CMakeLists.txt, testSharedForward.c.in: ENH: Add + test for KWSys SharedForward + + This tests the basic capability of running another executable + from the build tree. + +2008-09-26 08:24 king + + * Source/kwsys/SharedForward.h.in: BUG: Fix SharedForward with + spaces on windows + + The windows execvp function does not re-escape arguments + correctly. Instead we generate the escape sequences before + calling it. + +2008-09-26 08:24 king + + * Source/kwsys/SharedForward.h.in: BUG: Fix SharedForward in-tree + detection + + To detect when the launcher is running from the build tree we now + test if the directory containing it is the same as the build-tree + directory using an inode test instead of string comparison. This + makes it more robust on case-insensitive filesystems and other + quirky situations. + +2008-09-26 08:24 king + + * Source/kwsys/SharedForward.h.in: COMP: Avoid 64-to-32-bit integer + conversion warning + + In SharedForward we are only dealing with command-line-length + strings so we need not worry about integer overflow. + +2008-09-25 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-25 17:02 hoffman + + * Modules/Platform/Windows-gcc.cmake: BUG: fix for 7704 + +2008-09-25 16:52 hoffman + + * Source/cmakemain.cxx: BUG: fix for bug 7733, document that debug + try compile may break the build + +2008-09-25 10:21 hoffman + + * Tests/Unset/CMakeLists.txt: file CMakeLists.txt was added on + branch CMake-2-6 on 2009-02-04 16:44:19 +0000 + +2008-09-25 10:21 king + + * Source/cmCommandArgumentParserHelper.cxx, + Tests/Unset/CMakeLists.txt: ENH: Create $CACHE{VAR} syntax + + This syntax allows reading of cache entries even when variables + of the same name have been defined in the local scope. See issue + #7715. + +2008-09-24 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-24 13:53 hoffman + + * Utilities/Release/README: ENH: add comment about fixing RC + +2008-09-24 13:52 hoffman + + * CMakeLists.txt: ENH: remove RC 2.6.2 is ready + +2008-09-24 10:07 hoffman + + * Source/CPack/: cmCPackGenerator.cxx, cmCPackGenerator.h, + cpack.cxx: STYLE: remove warning from branch + +2008-09-24 10:01 hoffman + + * Source/CPack/cpack.cxx: ENH: missed one + +2008-09-24 09:57 hoffman + + * Source/CPack/: cmCPackGenerator.cxx, cmCPackGenerator.h: STYLE: + fix compiler warning + +2008-09-24 08:51 king + + * Source/: cmCommand.h, cmMakefile.cxx, cmMakefile.h: BUG: Skip a + command if its arguments fail to parse + + If the arguments to a command fail to parse correctly due to a + syntax error, the command should not be invoked. This avoids + problems created by processing of commands with bad arguments. + Even though the build system will not be generated, the command + may affect files on disk that persist across CMake runs. + +2008-09-24 08:51 king + + * Source/cmMacroCommand.cxx: ENH: Improve context for errors in + macros + + We now properly report the source location of command arguments + inside macros instead of using the macro invocation site. No + information is lost because full call-stack information is + already reported. + +2008-09-24 08:51 king + + * Source/: cmCommandArgumentParserHelper.cxx, + cmCommandArgumentParserHelper.h, cmMakefile.cxx, cmPolicies.cxx, + cmPolicies.h: ENH: Improve argument parsing error messages + + Previously error messages produced by parsing of command argument + variable references, such as bad $KEY{VAR} syntax or a bad escape + sequence, did not provide good context information. Errors + parsing arguments inside macro invocations gave no context at + all. Furthermore, some errors such as a missing close curly + "${VAR" would be reported but build files would still be + generated. + + These changes teach CMake to report errors with good context + information for all command argument parsing problems. Policy + CMP0010 is introduced so that existing projects that built + despite such errors will continue to work. + +2008-09-23 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-23 13:34 king + + * Source/cmFindLibraryCommand.cxx: BUG: Fix lib/ to lib/64/ search + path conversion + + Automatic generation of 64-bit library search paths must preserve + trailing slashes. This fixes a failure case exposed by the + recent rewrite of find_library, which assumes trailing slashes + occur on all search paths. + +2008-09-23 12:04 hoffman + + * Source/kwsys/testDynamicLoader.cxx: ENH: one more fix for HAIKU + +2008-09-23 11:32 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Source/CPack/cmCPackGenerator.cxx, + Source/CPack/cmCPackGenerator.h: ENH: merge in changes for RC 6, + fix cpack working from symlink is the only change + +2008-09-23 10:15 hoffman + + * Source/CPack/: cmCPackGenerator.cxx, cmCPackGenerator.h: STYLE: + fix warning and rename method + +2008-09-22 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-22 18:12 hoffman + + * Source/CPack/cmCPackGenerator.cxx: BUG: fix 7669, cpack did not + work with symlinks + +2008-09-22 15:00 clinton + + * Modules/FindQt4.cmake: + ENH: Fix #7433. Put list of files in a .pro file and call + lupdate on it, instead of putting the list of + files on the command line. + +2008-09-22 14:05 hoffman + + * Source/kwsys/: DynamicLoader.hxx.in, ProcessUNIX.c, + testProcess.c: ENH: a few more haiku fixes, stop the debugger + from coming up for tests + +2008-09-22 14:04 hoffman + + * Source/: cmCTest.cxx, cmCTest.h, ctest.cxx, + CTest/cmCTestTestHandler.cxx: ENH: add max width option to ctest + ouptut + +2008-09-22 14:00 clinton + + * Modules/FindQt4.cmake: + BUG: remove debug statements. + +2008-09-22 11:08 king + + * Modules/Platform/OpenBSD.cmake, Source/cmFindLibraryCommand.cxx, + Source/cmake.cxx: ENH: Teach find_library to find OpenBSD-style + libs + + OpenBSD shared libraries use a ".so.." extension + and do not have a symlink with just a ".so" extension. Its "ld" + is capable of finding the library with the best version. This + change adds support for finding such libraries. See issue #3470. + +2008-09-22 10:59 king + + * Source/cmFindLibraryCommand.cxx: ENH: Refactor find_library + search logic + + Previously we searched for library files by enumerating every + possible combination of prefix and suffix. Now we load (and + cache) directory content from disk and search for matching file + names. This should reduce disk access. It will also allow more + advanced matching rules in the future. See issue #3470. + +2008-09-22 10:56 king + + * Source/: cmGlobalGenerator.cxx, cmGlobalGenerator.h: ENH: Make + dir content cache work during configure + + Previously the cmGlobalGenerator::GetDirectoryContent method + would work safely only during build system generation. These + changes make it safe to use during each configure step by + flushing it at the beginning. + +2008-09-22 10:05 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/BundleUtilities.cmake, + Modules/CPackRPM.cmake, Modules/FindBoost.cmake, + Modules/FindCurses.cmake, Modules/FindQt4.cmake, + Modules/GetPrerequisites.cmake: ENH: merge in changes for RC 5 + +2008-09-22 09:56 hoffman + + * Modules/CPackRPM.cmake: BUG: 7435, remove warning for not setting + DESTDIR + +2008-09-22 09:42 king + + * Source/cmSourceFile.cxx: ENH: Improve docs of OBJECT_DEPENDS + property + + Specify exactly what the value of the property should contain and + the resulting behavior. Note alternatives for a common out-dated + usage. + +2008-09-21 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-20 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-19 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-19 17:45 hoffman + + * Modules/CPackRPM.cmake: BUG: 7435 fixes to add optional + post-install + +2008-09-18 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-18 15:23 hoffman + + * Modules/FindCurses.cmake: ENH: try to make this work if ncurses + lib is found bug not the ncurses header + +2008-09-18 10:56 clinton + + * Modules/FindQt4.cmake: + ENH: For #7433, add a bit more documentation and add ability + to specify extra flags to lupdate. + +2008-09-17 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-17 14:29 hoffman + + * Modules/FindCoin3D.cmake: file FindCoin3D.cmake was added on + branch CMake-2-6 on 2008-10-24 15:20:35 +0000 + +2008-09-17 14:29 mleotta + + * Modules/FindCoin3D.cmake: ENH: added a module to find Coin3D + +2008-09-16 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-16 17:40 barre + + * Utilities/cmtar/util.c: ENH: wow. On some Windows machine, trying + to mkdir("C:") would fail miserably. WHy not in debug mode? Why + not on other win32 machines. Who knows. + +2008-09-16 10:30 king + + * Modules/FindBoost.cmake: BUG: Fix FindBoost versioned find + + To locate the boost include directory, all search paths and + versioned path suffixes should be passed to one call of + FIND_PATH. Previously the test for one version would find an + unversioned system boost even when the user set BOOST_ROOT (since + the NO_DEFAULT_PATH option is not used). See issue #7456. + +2008-09-15 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-15 18:23 hoffman + + * Utilities/cmcurl/select.c: ENH: missed this one, cmake now + bootstraps on HAIKU + +2008-09-15 17:53 hoffman + + * bootstrap, Modules/CMakeFortranCompilerId.F90.in, + Modules/CMakePlatformId.h.in, Modules/CheckForPthreads.c, + Modules/Platform/Haiku.cmake, Source/cmCTest.cxx, + Source/cmDependsJavaLexer.cxx, Source/cmDependsJavaLexer.h, + Source/cmSystemTools.cxx, Source/CTest/cmCTestTestHandler.cxx, + Source/kwsys/DynamicLoader.cxx, Source/kwsys/ProcessUNIX.c, + Source/kwsys/SystemTools.cxx, Source/kwsys/testDynamicLoader.cxx, + Source/kwsys/testProcess.c, Utilities/cmcurl/CMakeLists.txt, + Utilities/cmcurl/CMake/CurlTests.c, Utilities/cmcurl/curl/curl.h, + Utilities/cmzlib/zconf.h, Utilities/cmzlib/zutil.h: ENH: add + initial support for HAIKU OS from bug# 7425 + +2008-09-15 17:53 hoffman + + * Modules/Platform/Haiku.cmake: file Haiku.cmake was added on + branch CMake-2-6 on 2008-10-24 15:20:35 +0000 + +2008-09-15 13:46 king + + * Source/cmGlobalGenerator.cxx: ENH: Simplify NOTFOUND variable + check + + When looking for NOTFOUND libraries, use the direct dependencies + of a target instead of all dependencies. At least one target + will trigger the NOTFOUND error anyway because at least one must + directly link it. This removes another use of the old-style link + line computation. + +2008-09-15 13:30 king + + * Source/cmMakefileTargetGenerator.cxx: ENH: Use new link info + during dependency scanning + + This removes another use of the old-style link line computation. + +2008-09-15 13:30 king + + * Source/cmTarget.cxx: ENH: Allow link line computation for static + libs + + In some cases it may be useful to compute a "link" line for a + static library even though it will not be put in the generated + build system. This removes the assertion which previously + diallowed the case. + +2008-09-15 13:30 king + + * Source/: cmComputeLinkInformation.cxx, + cmComputeLinkInformation.h: ENH: Keep target information in final + link line + + In cmComputeLinkInformation items in the final link line returned + by GetItems now contain a pointer to their corresponding cmTarget + if they were produced by a target. This makes available the set + of all targets linked. + +2008-09-15 09:51 king + + * Source/cmGlobalXCodeGenerator.cxx: ENH: Use improved target + dependencies for Xcode + + In cmGlobalGenerator we use cmComputeTargetDepends to construct a + safe, non-circular set of inter-target dependencies. This change + enables use of the results by the Xcode generator. It also + removes a lot of old code and another use of the old-style + linking logic. See issue #7652. + +2008-09-14 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-13 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-12 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-12 13:29 hoffman + + * Tests/CMakeTests/ToolchainTest.cmake.in: ENH: merge in from main + tree + +2008-09-12 10:56 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Modules/CMakeDetermineCCompiler.cmake, + Modules/CMakeDetermineCXXCompiler.cmake, + Modules/CheckCCompilerFlag.cmake, Modules/FindThreads.cmake, + Modules/readme.txt, Source/cmFileCommand.cxx, + Source/cmFileCommand.h, Source/cmFindPackageCommand.cxx, + Source/cmFindPackageCommand.h, Source/cmGlobalXCodeGenerator.cxx, + Source/cmIfCommand.cxx, Source/cmIfCommand.h, + Source/cmLocalVisualStudio6Generator.cxx, + Source/cmLocalVisualStudio7Generator.cxx, Source/cmPolicies.cxx, + Source/cmPolicies.h, Source/CPack/cmCPackDebGenerator.cxx, + Source/kwsys/Glob.cxx, Source/kwsys/Glob.hxx.in, + Templates/DLLHeader.dsptemplate, Templates/EXEHeader.dsptemplate, + Templates/EXEWinHeader.dsptemplate, + Tests/FindPackageTest/CMakeLists.txt, + Tests/FindPackageTest/FindVersionTestA.cmake, + Tests/FindPackageTest/FindVersionTestB.cmake, + Tests/FindPackageTest/FindVersionTestC.cmake, + Tests/FindPackageTest/FindVersionTestD.cmake, + Tests/Framework/CMakeLists.txt, + Tests/Framework/fooExtensionlessResource, + Tests/Framework/fooPrivateExtensionlessHeader, + Tests/Framework/fooPublicExtensionlessHeader: ENH: 2.6.2 RC 4 + merge into main tree + +2008-09-11 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-11 14:50 hoffman + + * Source/cmGlobalXCodeGenerator.cxx: BUG: make sure flag is found + even with extra spaces at the start + +2008-09-11 14:34 david.cole + + * Source/: cmFileCommand.cxx, cmFileCommand.h, cmPolicies.cxx, + cmPolicies.h, kwsys/Glob.cxx, kwsys/Glob.hxx.in: ENH: Improve + FILE GLOB_RECURSE handling of symlinks with a new CMake policy. + CMP0009 establishes NEW default behavior of not recursing through + symlinks. OLD default behavior or explicit FOLLOW_SYMLINKS + argument to FILE GLOB_RECURSE will still recurse through + symlinks. + +2008-09-11 11:41 hoffman + + * Modules/FindThreads.cmake: BUG: fix for 6586, set THREADS_FOUND + +2008-09-11 10:48 hoffman + + * Source/CPack/cmCPackDebGenerator.cxx: ENH: add installed size to + deb package + +2008-09-10 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-10 11:58 king + + * Source/cmIfCommand.cxx, Source/cmIfCommand.h, + Tests/FindPackageTest/CMakeLists.txt: ENH: Add version comparison + to if() command + + Provide VERSION_LESS, VERSION_EQUAL, and VERSION_GREATER + operators in the if() command. This simplifies component-wise + comparison of version numbers in the form + "major[.minor[.patch[.tweak]]]". + +2008-09-10 10:36 hoffman + + * Templates/DLLHeader.dsptemplate: ENH: fix failing tests + +2008-09-10 10:11 hoffman + + * Tests/FindPackageTest/FindVersionTestD.cmake: file + FindVersionTestD.cmake was added on branch CMake-2-6 on + 2008-09-12 14:56:21 +0000 + +2008-09-10 10:11 king + + * Modules/readme.txt, Source/cmFindPackageCommand.cxx, + Source/cmFindPackageCommand.h, + Tests/FindPackageTest/CMakeLists.txt, + Tests/FindPackageTest/FindVersionTestA.cmake, + Tests/FindPackageTest/FindVersionTestB.cmake, + Tests/FindPackageTest/FindVersionTestC.cmake, + Tests/FindPackageTest/FindVersionTestD.cmake: ENH: Improve + find_package version numbering + + Make the number of version components specified explicitly + available. Set variables for unspecified version components to + "0" instead of leaving them unset. This simplifies version + number handling for find- and config-modules. Also support a + fourth "tweak" version component since some packages use them. + +2008-09-10 10:10 hoffman + + * Templates/: DLLHeader.dsptemplate, EXEWinHeader.dsptemplate: BUG: + fix bug OUTPUT_LIBNAME_EXPORTS done differently now + +2008-09-09 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-09 14:12 hoffman + + * Modules/CheckCCompilerFlag.cmake: ENH: fix docs, bug 7590 + +2008-09-09 13:12 hoffman + + * Source/CTest/cmCTestUpdateHandler.cxx: BUG: fix for bug 7292, svn + parsing flagged errors or conflicts for switched or locked files + +2008-09-09 13:04 hoffman + + * Source/cmLocalVisualStudio6Generator.cxx, + Templates/EXEHeader.dsptemplate: BUG: fix empty /D option for + vs6, fix for 7580 + +2008-09-09 13:01 hoffman + + * CTestConfig.cmake: ENH: support old cmake for dashboards + +2008-09-09 12:48 david.cole + + * Tests/CMakeTests/GetPrerequisitesTest.cmake.in: PERF: Test takes + too long when recursing for executable files and when doing + recursive prerequisite analysis. Put it back the way it was. Add + another test later to do the recursive prerequisite analysis. + +2008-09-09 11:44 hoffman + + * Source/CTest/: cmCTestTestCommand.cxx, cmCTestTestCommand.h: BUG: + 0007569 add ability to do -R/-E in ctest_test command + +2008-09-08 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-08 20:21 hoffman + + * Tests/CMakeTests/ToolchainTest.cmake.in: BUG: fix test to work + with new restrictions that cross compiling must be on + +2008-09-08 17:53 hoffman + + * Source/cmLocalVisualStudio7Generator.cxx: BUG: fix for 7624, vs7 + flag table missing /MAP + +2008-09-08 17:43 alex + + * Modules/: CMakeDetermineCCompiler.cmake, + CMakeDetermineCXXCompiler.cmake: BUG: only check for a toolchain + prefix (e.g. "arm-linux-" in "arm-linux-gcc") if we are cross + compiling and the compiler is gcc + + Alex + +2008-09-08 11:23 hoffman + + * Modules/GetPrerequisites.cmake: ENH: do not add the same thing to + the PATH again and again + +2008-09-08 10:08 king + + * Source/cmFindPackageCommand.cxx: ENH: Improve message for bad + find_package call + + Use the new-style error reporting mechanism to provide more + context information for a find_package call with a bad package + name. When the package is not required, issue a warning instead + of an error. + +2008-09-07 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-07 16:54 alex + + * Modules/: CMakeDetermineCCompiler.cmake, + CMakeDetermineCXXCompiler.cmake: BUG: #7359 make llvm-gcc work, + by explicitely excluding "llvm-" from _CMAKE_TOOLCHAIN_PREFIX + (use the (relatively) new CMAKE_MATCH_x variables set by all + regex operations) + + Alex + +2008-09-07 06:52 alex + + * Source/: cmFindPackageCommand.cxx, cmFindPackageCommand.h: COMP: + fix compile warning/error (non-void function returning void) + + Alex + +2008-09-06 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-06 19:10 alex + + * Source/: cmFindPackageCommand.cxx, cmFindPackageCommand.h: ENH: + provide the xxx_FIND_QUIETLY, xxx_FIND_REQUIRED and + xxx_FIND_VERSION_ variables also in Config mode, so the + xxxConfig.cmake files can e.g. test the QUIETLY parameter and + print something or not + + Alex + +2008-09-06 12:20 hoffman + + * Modules/BundleUtilities.cmake: file BundleUtilities.cmake was + added on branch CMake-2-6 on 2008-09-22 14:05:16 +0000 + +2008-09-06 12:20 david.cole + + * Modules/BundleUtilities.cmake, Modules/GetPrerequisites.cmake, + Tests/CMakeTests/GetPrerequisitesTest.cmake.in: ENH: Add + BundleUtilities.cmake and supporting changes to + GetPrerequisites.cmake. Function copy_and_fixup_bundle in + BundleUtilities helps to make standalone bundle applications on + the Mac by pulling in prerequisite non-system libraries and + frameworks as needed. Uses otool and install_name_tool to do + analysis and fixups. Project-specific hooks for deciding where to + embed libraries and for resolving item names into full path file + names are also provided. + +2008-09-05 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-05 15:51 hoffman + + * Tests/Framework/fooExtensionlessResource: file + fooExtensionlessResource was added on branch CMake-2-6 on + 2008-09-12 14:56:21 +0000 + +2008-09-05 15:51 hoffman + + * Tests/Framework/fooPrivateExtensionlessHeader: file + fooPrivateExtensionlessHeader was added on branch CMake-2-6 on + 2008-09-12 14:56:21 +0000 + +2008-09-05 15:51 hoffman + + * Tests/Framework/fooPublicExtensionlessHeader: file + fooPublicExtensionlessHeader was added on branch CMake-2-6 on + 2008-09-12 14:56:21 +0000 + +2008-09-05 15:51 david.cole + + * Source/cmGlobalXCodeGenerator.cxx, + Tests/Framework/CMakeLists.txt, + Tests/Framework/fooExtensionlessResource, + Tests/Framework/fooPrivateExtensionlessHeader, + Tests/Framework/fooPublicExtensionlessHeader: BUG: Fix issue + #7046 - make sure extensionless headers and resource files work + with the Xcode generator. Also fix incorrect mappings in the + lastKnownFileType code. Add some extensionless files to the + Framework test. + +2008-09-04 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-04 17:34 king + + * Source/cmComputeLinkDepends.cxx, Source/cmComputeLinkDepends.h, + Source/cmExportFileGenerator.cxx, Source/cmTarget.cxx, + Source/cmTarget.h, Source/cmTargetLinkLibrariesCommand.cxx, + Source/cmTargetLinkLibrariesCommand.h, Source/cmake.cxx, + Source/cmake.h, Tests/ExportImport/Export/CMakeLists.txt, + Tests/ExportImport/Import/CMakeLists.txt: ENH: Allow a custom + list of debug configurations + + Create a DEBUG_CONFIGURATIONS global property as a way for + projects to specify which configuration names are considered to + be 'debug' configurations. + +2008-09-04 17:10 hoffman + + * CMakeLists.txt, ChangeLog.manual, Source/cmGetPropertyCommand.h, + Source/cmLocalVisualStudio7Generator.cxx, + Source/cmWin32ProcessExecution.cxx, Source/cmake.cxx, + Source/CTest/cmCTestBuildAndTestHandler.cxx: ENH: 2.6.2 RC 3, + merge in changes from main tree + +2008-09-04 17:02 hoffman + + * Source/cmWin32ProcessExecution.cxx: BUG: fix extra close that + killed cmake when being debugged + +2008-09-04 13:15 king + + * Source/cmGetPropertyCommand.h: BUG: Fix typo in get_property + documentation + + Add some missing whitespace to fix formatting of the + documentation. + +2008-09-04 13:15 king + + * Source/cmake.cxx: BUG: Fix unsetting of global properties + + The set_property command unsets a property if it is given no + value. In the case of GLOBAL properties, the cmake::SetProperty + method would replace a NULL value with "NOTFOUND". Instead it + should be left as NULL so that the property is unset as expected. + Once it is unset the get_cmake_property command will still + report NOTFOUND while the get_property command will return the + empty string as documented. + +2008-09-04 11:31 king + + * Source/CTest/cmCTestBuildAndTestHandler.cxx: BUG: Make CTest + honor user-specified config + + When the -C or --build-config option is used to specify the + configuration to be tested by CTest, do not override it with the + configuration in which CTest is built. + +2008-09-03 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-03 16:22 hoffman + + * Source/cmLocalVisualStudio7Generator.cxx: BUG: fix for 7519 extra + closing > in fortran projects + +2008-09-03 09:43 hoffman + + * CMakeLists.txt, ChangeLog.manual, Docs/cmake-syntax.vim, + Modules/CMakeCCompilerABI.c, Modules/CMakeCCompilerId.c.in, + Modules/CMakeCXXCompilerABI.cpp, + Modules/CMakeCXXCompilerId.cpp.in, Modules/CheckTypeSizeC.c.in, + Modules/FindKDE3.cmake, Modules/FindKDE4.cmake, + Modules/FindLibXml2.cmake, Modules/FindLua50.cmake, + Modules/FindLua51.cmake, Modules/FindOpenGL.cmake, + Modules/FindPHP4.cmake, Modules/FindPNG.cmake, + Modules/FindQt3.cmake, Modules/FindQt4.cmake, + Modules/FindTIFF.cmake, Modules/FindX11.cmake, + Modules/MacOSXFrameworkInfo.plist.in, Modules/NSIS.template.in, + Modules/TestEndianess.c.in, Modules/UsePkgConfig.cmake, + Modules/Platform/Darwin.cmake, + Modules/Platform/Windows-icl.cmake, + Source/cmAddLibraryCommand.cxx, Source/cmAddLibraryCommand.h, + Source/cmAddSubDirectoryCommand.h, + Source/cmCMakePolicyCommand.cxx, Source/cmCMakePolicyCommand.h, + Source/cmCacheManager.cxx, Source/cmComputeLinkDepends.cxx, + Source/cmComputeLinkDepends.h, + Source/cmComputeLinkInformation.cxx, + Source/cmComputeTargetDepends.cxx, + Source/cmComputeTargetDepends.h, Source/cmDocumentVariables.cxx, + Source/cmDocumentation.cxx, Source/cmDocumentation.h, + Source/cmExtraCodeBlocksGenerator.cxx, Source/cmFileCommand.cxx, + Source/cmFileCommand.h, Source/cmFindPackageCommand.cxx, + Source/cmFindPackageCommand.h, Source/cmGlobalGenerator.cxx, + Source/cmGlobalKdevelopGenerator.cxx, + Source/cmGlobalVisualStudio7Generator.cxx, + Source/cmGlobalXCodeGenerator.cxx, Source/cmIfCommand.cxx, + Source/cmIfCommand.h, Source/cmLocalGenerator.cxx, + Source/cmLocalGenerator.h, Source/cmMakefile.cxx, + Source/cmMakefile.h, + Source/cmMakefileExecutableTargetGenerator.cxx, + Source/cmMakefileLibraryTargetGenerator.cxx, + Source/cmMakefileLibraryTargetGenerator.h, Source/cmPolicies.cxx, + Source/cmPolicies.h, Source/cmReturnCommand.h, + Source/cmSetPropertyCommand.cxx, + Source/cmSetTargetPropertiesCommand.cxx, + Source/cmStringCommand.cxx, Source/cmSystemTools.cxx, + Source/cmSystemTools.h, Source/cmTarget.cxx, Source/cmTarget.h, + Source/cmTargetLinkLibrariesCommand.cxx, + Source/cmTargetLinkLibrariesCommand.h, Source/cmXCodeObject.cxx, + Source/cmXCodeObject.h, Source/cmake.cxx, Source/cmakemain.cxx, + Source/CTest/cmCTestCoverageHandler.cxx, + Source/CursesDialog/cmCursesStringWidget.cxx, + Source/kwsys/Glob.cxx, Source/kwsys/Glob.hxx.in, + Source/kwsys/ProcessUNIX.c, Tests/BundleTest/BundleLib.cxx, + Tests/BundleTest/BundleTest.cxx, Tests/BundleTest/CMakeLists.txt, + Tests/BundleTest/BundleSubDir/CMakeLists.txt, + Tests/Complex/CMakeLists.txt, + Tests/ComplexOneConfig/CMakeLists.txt, + Tests/ComplexRelativePaths/CMakeLists.txt, + Tests/Complex/Executable/CMakeLists.txt, + Tests/Complex/Library/CMakeLists.txt, + Tests/ComplexOneConfig/Executable/CMakeLists.txt, + Tests/ComplexOneConfig/Library/CMakeLists.txt, + Tests/ComplexRelativePaths/Executable/CMakeLists.txt, + Tests/ComplexRelativePaths/Library/CMakeLists.txt, + Tests/CustomCommand/CMakeLists.txt, + Tests/Dependency/CMakeLists.txt, + Tests/Dependency/Case4/CMakeLists.txt, + Tests/Dependency/Case4/bar.c, Tests/Dependency/Case4/foo.c, + Tests/ExportImport/Export/CMakeLists.txt, + Tests/ExportImport/Export/testLib4lib.c, + Tests/ExportImport/Export/testLib4libdbg.c, + Tests/ExportImport/Export/testLib4libdbg1.c, + Tests/ExportImport/Export/testLib4libopt.c, + Tests/ExportImport/Export/testLib4libopt1.c, + Tests/ExportImport/Import/CMakeLists.txt, + Tests/ExportImport/Import/imp_testExe1.c, + Tests/OutOfSource/OutOfSourceSubdir/CMakeLists.txt, + Tests/ReturnTest/CMakeLists.txt, + Tests/ReturnTest/include_return.cmake, + Tests/SimpleInstall/CMakeLists.txt, + Tests/SimpleInstallS2/CMakeLists.txt: ENH: 2.6.2 rc 2 merge from + main tree + +2008-09-02 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-09-02 14:47 hoffman + + * Modules/Platform/Windows-icl.cmake: BUG: make sure the intel + compiler uses the intel linker + +2008-09-02 14:46 hoffman + + * Modules/NSIS.template.in: BUG: remove Catalan as 2.29 does not + have it + +2008-09-02 12:43 david.cole + + * Source/cmMakefileExecutableTargetGenerator.cxx: BUG: Fix issue + #3648 - make sure CMake reruns if a Bundle application's + directory is removed or if it's Info.plist file disappears since + those elements are put in place at CMake configure time. + +2008-09-02 12:06 hoffman + + * Modules/MacOSXFrameworkInfo.plist.in: file + MacOSXFrameworkInfo.plist.in was added on branch CMake-2-6 on + 2008-09-03 13:43:16 +0000 + +2008-09-02 12:06 king + + * Modules/MacOSXFrameworkInfo.plist.in, + Source/cmGlobalXCodeGenerator.cxx, Source/cmLocalGenerator.cxx, + Source/cmLocalGenerator.h, + Source/cmMakefileLibraryTargetGenerator.cxx, + Source/cmMakefileLibraryTargetGenerator.h, Source/cmTarget.cxx: + ENH: Create Info.plist files in OS X Frameworks + + A Mac OS X Framework should provide a Resources/Info.plist file + containing meta-data about the framework. This change generates + a default Info.plist for frameworks and provides an interface for + users to customize it. + +2008-09-02 11:06 david.cole + + * Tests/BundleTest/: BundleLib.cxx, BundleTest.cxx, CMakeLists.txt: + ENH: Add indirect dependency to Carbon and call a Carbon function + from executable. This will allow detecting broken dependency + chaining for '-framework blah' style lib dependencies. + +2008-09-02 10:27 king + + * Source/: cmGlobalXCodeGenerator.cxx, cmXCodeObject.cxx, + cmXCodeObject.h: ENH: Simplify string attributes in Xcode + generator + + This change cleans up the implementation of cmXCodeObject to + avoid un-escaping and re-escaping string values. There is no + need to store the string in escaped form. It can be escaped once + when it is printed out to the generated project file. + +2008-09-01 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-31 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-30 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-30 10:32 hoffman + + * Tests/Unset/unset.c: file unset.c was added on branch CMake-2-6 + on 2009-02-04 16:44:19 +0000 + +2008-08-30 10:32 king + + * Tests/Unset/: CMakeLists.txt, unset.c, unset.cc: BUG: Fix Unset + test on VS 6 + + Visual Studio 6 does not recognize .cc as a C++ extension by + default. Simplify the test to be C-only and use a .c extension. + +2008-08-30 09:39 clinton + + * Modules/FindQt4.cmake: + ENH: For #7433, add documentation that directories also can be + specified to update the translation files. + +2008-08-29 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-29 13:22 king + + * Source/cmComputeLinkDepends.cxx: BUG: Link flags should still be + chained + + The recent fix to avoid including flags in dependency inferral + also dropped them from chaining of dependencies through targets. + This fix restores chaining of flags through known dependency + lists while still leaving them out of inferred dependency lists. + +2008-08-28 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-28 22:25 king + + * Source/cmComputeLinkDepends.cxx: BUG: A -framework Foo is also a + lib + +2008-08-28 22:12 king + + * Source/cmComputeLinkDepends.cxx: BUG: Fix previous fix. + +2008-08-28 22:07 king + + * Source/cmComputeLinkDepends.cxx: BUG: When recognizing flags on + link lines, we must still treat -l as a library. + +2008-08-27 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-27 12:53 david.cole + + * Tests/BundleTest/: CMakeLists.txt, BundleSubDir/CMakeLists.txt: + ENH: Changes that allow configuring/building BundleTest test + separately from the main CMake build. (Eliminate reference to + CMake_SOURE_DIR.) + +2008-08-27 10:35 king + + * Source/cmComputeLinkDepends.h: COMP: Do not use private typedef + from outside class. + +2008-08-27 10:21 king + + * Source/: cmComputeLinkDepends.cxx, cmComputeLinkDepends.h: ENH: + New link line item ordering algorithm + + This change introduces a new algorithm for link line + construction. The order it computes always begins with the exact + link line specified by the user. Dependencies of items specified + by the user are tracked, and those that are not already + satisified by the line are appended to it at the end with minimal + repeats. This restores the behavior of CMake 2.4 and below while + still fixing some of its bugs. See issue #7546. + +2008-08-27 10:21 king + + * Source/: cmComputeLinkDepends.cxx, cmComputeLinkDepends.h: BUG: + Do not infer dependencies of link flags + + In cmComputeLinkDepends link items that look like flags (starting + in '-') should not be included in dependency inferral. They are + not libraries and therefore have no dependencies. They should + just be passed through to the final link line unchanged. See + issue #7546. + +2008-08-27 10:21 king + + * Source/cmComputeLinkDepends.cxx: BUG: Treat empty config name as + no configuration + + In cmComputeLinkDepends we should treat an empty configuration + name as equivalent to no specific configuration at all. + +2008-08-26 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-26 16:43 david.cole + + * Modules/NSIS.template.in: BUG: Do not use "Default" as a + language, remove 2nd occurence of "English", and remove three + other languages not supported by older versions of NSIS. Tested + with version 2.18 of NSIS on gaia.kitware. + +2008-08-26 16:04 clinton + + * Modules/FindQt4.cmake: + ENH: Add comments about pre-processor defines and moc. + +2008-08-26 12:54 david.cole + + * Source/cmStringCommand.cxx: BUG: Correct typo in error message. + +2008-08-26 11:50 clinton + + * Modules/FindQt4.cmake: + ENH: Use COMPILE_DEFINTIONS instead of DEFINITIONS. + +2008-08-26 11:22 clinton + + * Modules/FindQt4.cmake: + ENH: Add -DWIN32 for moc on Windows. Final fix for #7465. + +2008-08-25 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-25 19:41 clinton + + * Modules/FindQt4.cmake: + ENH: Add -D preprocessor defines to the moc commands. + Needed to fix #7465. + +2008-08-25 10:31 hoffman + + * Source/cmUnsetCommand.cxx: file cmUnsetCommand.cxx was added on + branch CMake-2-6 on 2009-02-04 16:44:17 +0000 + +2008-08-25 10:31 hoffman + + * Source/cmUnsetCommand.h: file cmUnsetCommand.h was added on + branch CMake-2-6 on 2009-02-04 16:44:17 +0000 + +2008-08-25 10:31 king + + * Docs/cmake-syntax.vim, Source/cmBootstrapCommands.cxx, + Source/cmCacheManager.cxx, Source/cmMakefile.cxx, + Source/cmMakefile.h, Source/cmSetCommand.h, + Source/cmUnsetCommand.cxx, Source/cmUnsetCommand.h, + Tests/CMakeLists.txt, Tests/Unset/CMakeLists.txt, + Tests/Unset/unset.cc: ENH: Add unset() command. + + This introduces the unset() command to make it easy to unset + CMake variables, environment variables, and CMake cache + variables. Previously it was not even possible to unset ENV or + CACHE variables (as in completely remove them). Changes based on + patch from Philip Lowman. See issue #7507. + +2008-08-24 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-23 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-23 13:47 david.cole + + * Source/cmFileCommand.h: BUG: Correct typo in documentation: or -> + of + +2008-08-23 13:33 david.cole + + * Source/: cmFileCommand.cxx, cmFileCommand.h: ENH: Add the + RECURSE_SYMLINKS_OFF flag to the FILE GLOB_RECURSE command. + Exposes the recently added kwsys capability that prevents + recursing through symlinks to CMake scripts. + +2008-08-22 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-22 06:56 hoffman + + * Modules/NSIS.template.in: BUG: remove extension from inserts + +2008-08-22 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-21 15:13 hoffman + + * Modules/NSIS.template.in: ENH: sort languages and use list from + NSIS 2.22 + +2008-08-21 13:55 hoffman + + * Modules/NSIS.template.in: BUG: remove some languages that are not + supported in older versions of NSIS + +2008-08-21 09:54 king + + * Source/cmDocumentVariables.cxx, Source/cmLocalGenerator.cxx, + Source/cmLocalGenerator.h, + Tests/OutOfSource/OutOfSourceSubdir/CMakeLists.txt: ENH: Allow + custom limit on object file path length + + Some native build tools, particularly those for cross compiling, + may have a limit on the length of the full path to an object file + name that is lower than the platform otherwise supports. This + change allows the limit to be set by the project toolchain file + through the variable CMAKE_OBJECT_PATH_MAX. + +2008-08-21 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-20 18:00 hoffman + + * Modules/NSIS.template.in: ENH: try to fix error + +2008-08-20 13:24 david.cole + + * Source/: CTest/cmCTestCoverageHandler.cxx, kwsys/Glob.cxx, + kwsys/Glob.hxx.in: ENH: Add RecurseThroughSymlinks data member to + kwsys::Glob. Allows recursive globs to skip symlinks when + necessary. Default to true for backwards compatible behavior. + Used from the ctest coverage handler to avoid recursing through + the '/Applications' directory on the Mac looking for *.da + files... Should fix the hangs reported recently by Mac CMake + dashboard submitters. + +2008-08-20 11:45 king + + * Source/cmIfCommand.cxx, Source/cmIfCommand.h, + Tests/Complex/Executable/CMakeLists.txt, + Tests/Complex/Library/CMakeLists.txt, + Tests/ComplexOneConfig/Executable/CMakeLists.txt, + Tests/ComplexOneConfig/Library/CMakeLists.txt, + Tests/ComplexRelativePaths/Executable/CMakeLists.txt, + Tests/ComplexRelativePaths/Library/CMakeLists.txt: ENH: Add + if(TARGET) command + + It is useful to be able to test if a target has been created. + Often targets are created only inside conditions. Rather than + storing the result of the condition manually for testing by other + parts of the project, it is much easier for the other parts to + just test for the target's existence. This will also be useful + when find-modules start reporting results with IMPORTED targets + and projects want to test if a certain target is available. + +2008-08-20 09:57 king + + * Source/kwsys/ProcessUNIX.c: BUG: Handle case when select() lies + + According to "man select" on Linux it is possible that select() + lies about data being ready on a pipe in some subtle cases. We + deal with this by switching to non-blocking i/o and checking for + EAGAIN. See issue #7180. + +2008-08-20 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-19 16:40 hoffman + + * Source/CursesDialog/cmCursesStringWidget.cxx: BUG: fix for 6462, + delete key should delete the current char + +2008-08-19 15:59 hoffman + + * Modules/FindOpenGL.cmake: BUG: fix for bug 7104 look for GL in + X11R6 dirs + +2008-08-19 15:55 hoffman + + * Source/cmSystemTools.cxx: BUG: fix for 7045, use gcc for .m + +2008-08-19 15:42 hoffman + + * Source/: cmDocumentation.cxx, cmDocumentation.h, cmakemain.cxx: + BUG: fix 6647 arguments after -E should not be parsed by CMake + +2008-08-19 15:07 hoffman + + * Source/cmGlobalVisualStudio7Generator.cxx: BUG: fix for 6794 + support for LTCG WholeProgramOptimization, which is not available + in VS 8 and newer. + +2008-08-19 14:28 hoffman + + * Modules/FindPHP4.cmake: BUG: fix for bug 6775, FindPHP4 did not + honor required + +2008-08-19 14:23 hoffman + + * Modules/Platform/Darwin.cmake: BUG: fix for 6710 + CMAKE_OSX_SYSROOT should be a PATH + +2008-08-19 14:07 hoffman + + * Modules/NSIS.template.in: BUG: fix for 7446 NSIS support for + other languages + +2008-08-19 13:59 hoffman + + * Utilities/Release/: create-cmake-release.cmake, + magrathea_release.cmake, upload_release.cmake, + v20n17_aix_release.cmake: ENH: check in current build scripts + +2008-08-19 13:48 hoffman + + * Source/cmGlobalGenerator.cxx: BUG: fix for 7496, do not just + report configure done when there is an error during configure + +2008-08-19 13:31 hoffman + + * Source/cmake.cxx: BUG: 7448 fix crash in ccmake when compiler is + changed + +2008-08-19 11:43 king + + * Tests/: CMakeLists.txt, test_clean.cmake.in: ENH: Add test_clean + target to wipe out tests + + We frequently need to wipe out all the CMake test build + directories in order to run tests from scratch. This change adds + a test_clean custom target to remove all these directories for + out-of-source builds. + +2008-08-19 11:43 king + + * Source/: cmSetPropertyCommand.cxx, + cmSetTargetPropertiesCommand.cxx, cmTarget.cxx, cmTarget.h: ENH: + Disallow link-type keywords in link interface + + The LINK_INTERFACE_LIBRARIES target property may not contain the + "debug", "optimized", or "general" keywords. These keywords are + supported only by the target_link_libraries (and link_libraries) + command and are not a generic library list feature in CMake. + When a user attempts to add one of these keywords to the property + value, we now produce an error message that refers users to + alternative means. + +2008-08-19 10:29 king + + * Source/cmTarget.cxx: ENH: Clarify link interface documentation + + The LINK_INTERFACE_LIBRARIES property does not apply for STATIC + libraries. The IMPORTED_LINK_INTERFACE_LIBRARIES property does + apply for STATIC libraries. State both explicitly in the + documentation. Also, clarify that the per-configuration version + of these properties completely overrids the generic version. + +2008-08-19 10:28 king + + * Source/cmMakefile.cxx: BUG: Linking to modules is for 2.2 compat + only + + The compatibility check to allow linking to modules should test + for CMake 2.2, not the unreleased 2.3. See issue #7500. + Furthermore, the message should be more clear about fixing the + code instead of setting CMAKE_BACKWARDS_COMPATIBILITY unless one + is just trying to build an existing project. + +2008-08-19 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-18 16:29 king + + * Source/: cmMakefile.cxx, cmMakefile.h, cmPolicies.cxx, + cmPolicies.h: ENH: Improve errors when a policy is REQUIRED + + In the future some policies may be set to REQUIRED_IF_USED or + REQUIRED_ALWAYS. This change clarifies the error messages users + receive when violating the requirements. + +2008-08-18 11:39 king + + * Source/cmAddLibraryCommand.cxx, Source/cmAddLibraryCommand.h, + Source/cmComputeLinkDepends.cxx, + Source/cmComputeLinkInformation.cxx, Source/cmLocalGenerator.cxx, + Source/cmTarget.cxx, Source/cmTarget.h, + Tests/SimpleInstall/CMakeLists.txt, + Tests/SimpleInstallS2/CMakeLists.txt: ENH: Add UNKNOWN type for + IMPORTED libraries + + When creating an IMPORTED target for a library that has been + found on disk, it may not be known whether the library is STATIC + or SHARED. However, the library may still be linked using the + file found from disk. Use of an IMPORTED target is still + important to allow per-configuration files to be specified for + the library. + + This change creates an UNKNOWN type for IMPORTED library targets. + The IMPORTED_LOCATION property (and its per-config equivalents) + specifies the location of the library. CMake makes no + assumptions about the library that cannot be inferred from the + file on disk. This will help projects and find-modules import + targets found on disk or specified by the user. + +2008-08-18 11:26 king + + * Source/: cmLocalGenerator.cxx, cmTarget.cxx: STYLE: Convert + unused target type cases to default + + In switch statements that deal with only a few target types, use + a 'default' case for the remaining target types instead of + listing them explicitly. This will make it easier to add more + types in the future. + +2008-08-18 10:11 king + + * Source/cmTargetLinkLibrariesCommand.cxx, + Source/cmTargetLinkLibrariesCommand.h, + Tests/ExportImport/Export/CMakeLists.txt: ENH: Make link + interface mode more distinct + + Rename the recently added INTERFACE mode of the + target_link_libraries() command to LINK_INTERFACE_LIBRARIES. + This makes it much more distinct from a normal call to the + command, and clearly states its connection to the property of the + same name. Also require the option to appear immediately after + the target name to make it a mode rather than an option. + +2008-08-18 09:53 king + + * Source/cmCMakePolicyCommand.cxx, Source/cmCMakePolicyCommand.h, + Tests/Complex/CMakeLists.txt, + Tests/ComplexOneConfig/CMakeLists.txt, + Tests/ComplexRelativePaths/CMakeLists.txt: ENH: Add + cmake_policy(GET) command mode + + It is likely that projects or CMake modules in the future will + need to check the value of a policy setting. For example, if we + add a policy that affects the results of FindXYZ.cmake modules, + the module code will need to be able to check the policy. + +2008-08-18 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-17 05:38 alex + + * Modules/FindKDE4.cmake: BUG: fix closing ENDIF() + + Alex + +2008-08-17 05:11 alex + + * Modules/FindQt4.cmake: BUG: fix closing IF() + + Alex + +2008-08-17 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-16 19:11 alex + + * Modules/: FindKDE3.cmake, FindKDE4.cmake, FindQt3.cmake, + FindQt4.cmake: BUG: fix #7447, FindModulesExecuteAll test fails + if both Qt3 and KDE4 can be found in the system + + Qt3 and Qt4 cannot be used together in one project. Now Qt3/KDE3 + and Qt4/KDE4 handle the case that this is done nevertheless + properly, i.e. they fail with FATAL_ERROR if it was REQUIRED and + they fail with just MESSAGE(STATUS ...) and RETURN() if it was + not REQUIRED + + BUG: make FindQt4 error out with FATAL_ERROR also if it was + searched QUIET + + Alex + +2008-08-16 18:06 hoffman + + * Tests/ReturnTest/include_return.cmake: file include_return.cmake + was added on branch CMake-2-6 on 2008-09-03 13:43:31 +0000 + +2008-08-16 18:06 alex + + * Source/cmReturnCommand.h, Tests/ReturnTest/CMakeLists.txt, + Tests/ReturnTest/include_return.cmake: STYLE: extend + documentation for RETURN() a bit ENH: add a test for calling + RETURN() in an included file + + Alex + +2008-08-16 17:14 alex + + * Modules/FindQt3.cmake: STYLE: remove some unnecessary lines + STYLE: everything uppercase in this file + + Alex + +2008-08-16 16:58 alex + + * Source/cmGlobalKdevelopGenerator.cxx: BUG: fix #7477, set + VERBOSE=1 in the kdevelop setting for the environment, not + together with the make executable + + Alex + +2008-08-16 16:48 alex + + * Source/cmExtraCodeBlocksGenerator.cxx: STYLE: remove some + commented code + + Alex + +2008-08-16 16:33 alex + + * Source/cmGlobalKdevelopGenerator.cxx: BUG: fix #7471, only put + build directories and CMakeFiles/ in the blacklist + + Alex + +2008-08-16 07:38 alex + + * Modules/FindX11.cmake: ENH: also search in /usr/X11R7, remove + /usr/lib and /usr/local/lib, they are part of the standard search + paths (partly sync wih KDE) + + Alex + +2008-08-16 07:29 alex + + * Modules/FindTIFF.cmake: ENH: add more names for libtiff, mark + TIFF_INCLUDE_DIR and TIFF_LIBRARY as advanced (sync with KDE) + + Alex + +2008-08-16 07:22 alex + + * Modules/FindLibXml2.cmake: ENH: also search for xmllint, which + comes with libxml2 (sync with FindLibXml2.cmake from KDE) + + Alex + +2008-08-16 07:10 alex + + * Modules/FindPNG.cmake: ENH: add more names of linpng (sync with + the KDE version) + + Alex + +2008-08-16 07:01 alex + + * Modules/UsePkgConfig.cmake: STYLE: /usr/local/bin is in the path + anyway STYLE: this file is mostly uppercase commands, so make all + commands uppercase ENH: add a status message in case pkgconfig + didn't find the package (sync with the one from KDE) + + Alex + +2008-08-16 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-15 15:07 hoffman + + * Modules/Platform/Windows-NMcl.cmake: ENH: add platform file for + bounds checker + +2008-08-15 09:47 king + + * Source/cmSystemTools.cxx: COMP: Work-around bogus compiler + warning. + +2008-08-15 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-14 15:34 alex + + * Modules/: FindLua50.cmake, FindLua51.cmake: BUG: fix + documentation, the variables are named LUA50_FOUND and + LUA51_FOUND (in all released versions) + + Alex + +2008-08-14 09:53 king + + * Source/: cmFileCommand.cxx, cmSystemTools.cxx, cmSystemTools.h: + ENH: Inform user when RPATH or RUNPATH is removed + +2008-08-14 09:53 king + + * Source/cmSystemTools.cxx: BUG: Update both RPATH and RUNPATH + entries + + During installation the RPATH and RUNPATH entries of ELF binaries + are edited to match the user specification. Usually either one + entry is present or both entries refer to the same string + literal. In the case that they are both present and refer to + separate string literals we need to update both. I have never + seen this case in practice, but we should do this just in case. + +2008-08-14 09:53 king + + * Source/cmSystemTools.cxx: BUG: Remove both RPATH and RUNPATH + entries + + Removal of the RPATH and RUNPATH from ELF binaries must work when + both entries are present. Both entries should be removed. + Previously only one would be removed and the other would be + blanked because it pointed at the same string which was zeroed. + This fixes gentoo bug number 224901. + +2008-08-14 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-13 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-12 19:01 king + + * Source/: cmFindPackageCommand.cxx, cmFindPackageCommand.h: ENH: + Teach find_package about lib64 paths + + When find_package is about to look in /lib, search first + in /lib64 in cases that find_library would use lib64 + paths. + +2008-08-12 17:27 hoffman + + * Tests/ExportImport/Export/testLib4libdbg1.c: file + testLib4libdbg1.c was added on branch CMake-2-6 on 2008-09-03 + 13:43:28 +0000 + +2008-08-12 17:27 hoffman + + * Tests/ExportImport/Export/testLib4libopt1.c: file + testLib4libopt1.c was added on branch CMake-2-6 on 2008-09-03 + 13:43:28 +0000 + +2008-08-12 17:27 king + + * Tests/ExportImport/Export/: CMakeLists.txt, testLib4libdbg1.c, + testLib4libopt1.c: BUG: Fix ExportImport test on VS6 + + Visual Studio 6 does not support per-target object files, so just + use two separate source file names in this case. + +2008-08-12 07:01 alex + + * Source/cmakemain.cxx: STYLE: one ifdef block less, the + documentation object can be created a bit later + + Alex + +2008-08-12 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-11 16:23 hoffman + + * Tests/ExportImport/Export/testLib4lib.c: file testLib4lib.c was + added on branch CMake-2-6 on 2008-09-03 13:43:28 +0000 + +2008-08-11 16:23 hoffman + + * Tests/ExportImport/Export/testLib4libdbg.c: file testLib4libdbg.c + was added on branch CMake-2-6 on 2008-09-03 13:43:28 +0000 + +2008-08-11 16:23 hoffman + + * Tests/ExportImport/Export/testLib4libopt.c: file testLib4libopt.c + was added on branch CMake-2-6 on 2008-09-03 13:43:28 +0000 + +2008-08-11 16:23 king + + * Tests/ExportImport/: Export/CMakeLists.txt, Export/testLib4lib.c, + Export/testLib4libdbg.c, Export/testLib4libopt.c, + Import/CMakeLists.txt, Import/imp_testExe1.c: ENH: Test + target_link_libraries INTERFACE option + +2008-08-11 16:23 king + + * Source/: cmTargetLinkLibrariesCommand.cxx, + cmTargetLinkLibrariesCommand.h: ENH: Simple specification of link + interfaces + + Create an INTERFACE option to the target_link_libraries command + to help set the LINK_INTERFACE_LIBRARIES and + LINK_INTERFACE_LIBRARIES_DEBUG properties. This will help users + specify link interfaces using variables from Find*.cmake modules + that include the 'debug' and 'optimized' keywords. + +2008-08-11 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-10 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-09 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-08 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-07 17:51 king + + * Source/: cmTargetLinkLibrariesCommand.cxx, + cmTargetLinkLibrariesCommand.h: ENH: Tolerate repeated link + library types + + The "debug", "optimized", and "general" link library type + specifier arguments to the target_link_library commands are + sometimes repeated in user code due to variable expansion and + other complications. Instead of silently accepting the + duplicates and trying to link to a bogus library like + "optimized.lib", warn and ignore the earlier specifiers. + +2008-08-07 17:12 king + + * Source/cmAddSubDirectoryCommand.h: ENH: Clarify documentation of + EXCLUDE_FROM_ALL + + The add_subdirectory() command's EXCLUDE_FROM_ALL option does not + override inter-target dependencies. This change clarifies the + documentation accordingly. + +2008-08-07 10:13 hoffman + + * Tests/Dependency/Case4/CMakeLists.txt: file CMakeLists.txt was + added on branch CMake-2-6 on 2008-09-03 13:43:27 +0000 + +2008-08-07 10:13 hoffman + + * Tests/Dependency/Case4/bar.c: file bar.c was added on branch + CMake-2-6 on 2008-09-03 13:43:27 +0000 + +2008-08-07 10:13 hoffman + + * Tests/Dependency/Case4/foo.c: file foo.c was added on branch + CMake-2-6 on 2008-09-03 13:43:27 +0000 + +2008-08-07 10:13 king + + * Tests/Dependency/: CMakeLists.txt, Case4/CMakeLists.txt, + Case4/bar.c, Case4/foo.c: ENH: Test fake circular dependency case + + A recent change fixed a case in which CMake incorrectly diagnosed + a circular dependency involving a non-linkable executable target. + This adds a test for that case. + +2008-08-07 09:09 king + + * Modules/: CMakeCCompilerABI.c, CMakeCCompilerId.c.in, + CMakeCXXCompilerABI.cpp, CMakeCXXCompilerId.cpp.in, + CheckTypeSizeC.c.in, TestEndianess.c.in: ENH: Improve robustness + of compiler INFO strings + + Compiler INFO strings built at preprocessing time encode + information that must appear as a string literal in the resulting + binary. We must make sure the strings appear in the final binary + no matter what compiler and flags are used. The previous + implementation worked in most places but failed with the GNU + linker's --gc-sections option which managed to discard the + string. Instead we make the program return value depend on an + element of the string indexed by a runtime program parameter, + which absolutely requires the string to be present. + +2008-08-07 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-06 17:48 king + + * Source/: cmComputeLinkDepends.cxx, cmComputeLinkDepends.h, + cmComputeTargetDepends.cxx, cmComputeTargetDepends.h: BUG: Avoid + bogus dependency on executable targets + + When an executable target within the project is named in + target_link_libraries for another target, but the executable does + not have the ENABLE_EXPORTS property set, then the executable + cannot really be linked. This is probably a case where the user + intends to link to a third-party library that happens to have the + same name as an executable target in the project (or else will + get an error at build time). We need to avoid making the other + target depend on the executable target incorrectly, since the + executable may actually want to link to that target and this is + not a circular depenency. + +2008-08-06 17:48 king + + * Source/cmComputeTargetDepends.cxx: ENH: Improve readability of + circular depends error + + When reporting the dependencies in a strongly connected component + quote the target names to make the message more readable no + matter the target name. + +2008-08-06 17:48 king + + * Source/cmGlobalGenerator.cxx: BUG: Fix crash on circular target + dependencies + + After reporting an error about circular target dependencies do + not try to continue generation because the dependency computation + object is not in a useful state. + +2008-08-06 17:43 alex + + * Tests/CMakeLists.txt: BUG: fix endif() + + Alex + +2008-08-06 17:04 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Modules/CMakeCInformation.cmake, + Modules/CMakeCXXInformation.cmake, + Modules/CMakeFortranInformation.cmake, + Modules/FindImageMagick.cmake, Modules/FindKDE3.cmake, + Modules/Platform/Darwin.cmake, + Modules/Platform/Linux-Intel-C.cmake, + Modules/Platform/Linux-Intel-CXX.cmake, Source/CMakeLists.txt, + Source/cmELF.cxx, Source/cmExtraEclipseCDT4Generator.cxx, + Source/cmGlobalUnixMakefileGenerator3.cxx, + Source/cmGlobalXCodeGenerator.cxx, Source/cmLocalGenerator.cxx, + Source/cmLocalVisualStudio7Generator.cxx, Source/cmMakefile.cxx, + Source/cmMakefileLibraryTargetGenerator.cxx, + Source/cmMakefileLibraryTargetGenerator.h, + Source/cmSourceFileLocation.cxx, Source/cmSourceFileLocation.h, + Source/cmTarget.cxx, Source/cmTarget.h, Source/cmake.cxx, + Source/cmake.h, Source/cmakemain.cxx, + Source/CTest/cmCTestCoverageHandler.cxx, + Tests/CustomCommand/CMakeLists.txt: ENH: merge in fixes from main + tree 2.6.2 RC 1 + +2008-08-06 16:16 alex + + * Tests/CMakeLists.txt: ENH: add simple tests to test that the + extra generators don't crash + + Alex + +2008-08-06 16:05 king + + * Modules/Platform/: Linux-Intel-C.cmake, Linux-Intel-CXX.cmake: + ENH: Add preprocessor and assembly rules for Intel + +2008-08-06 15:35 alex + + * Source/cmExtraEclipseCDT4Generator.cxx: BUG: don't crash in the + generator is EXECUTABLE_OUTPUT_PATH or LIBRARY_OUTPUT_PATH are + empty + + Alex + +2008-08-06 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-05 16:06 alex + + * Modules/FindKDE3.cmake: BUG: fix #7452, bad closing ENDIF() + statement + + Alex + +2008-08-05 13:27 king + + * Tests/CustomCommand/CMakeLists.txt: ENH: Test relative path + custom command output + + As of CMake 2.6 a custom command output specified by relative + path is placed in the build tree. This adds a test to make sure + other references to the output are hooked up correctly, fixing a + bug in CMake 2.6.1. + +2008-08-05 13:27 king + + * Source/cmLocalGenerator.cxx: BUG: Custom command depends may + match sources + + Custom command dependencies that are not full paths or targets + may also match source files. When one does, the full information + about the source file's location and name may be used. This + fixes the case when a custom commands depends by relative path on + a source file generated by another custom command specifying its + output by relative path. + +2008-08-05 13:27 king + + * Source/: cmSourceFileLocation.cxx, cmSourceFileLocation.h: BUG: + Fix matching of ambiguous sf extensions. + + A name with an ambiguous extension may only match an unambiguous + name that is extended by one of the fixed set of extensions tried + when finding the source file on disk. This rule makes matching + of source files with ambiguous extensions much less aggressive + but still sufficient. + +2008-08-05 09:55 king + + * Source/cmLocalGenerator.cxx: BUG: Do not convert RPATH entries to + full path. + + When generating RPATH entries on the link line using a repeated + linker flag (-R ... -R ... style) do not convert individual + entries to a full path. We need to preserve what the user + requested. + +2008-08-05 09:55 king + + * Source/cmLocalGenerator.cxx: BUG: Fix escaping in link scripts + + When generating escape sequences for the native build tool do not + put in Makefile escapes for paths generated into link scripts. + This fixes putting "$ORIGIN" into the RPATH, and probably some + other subtle problems. + +2008-08-05 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-04 11:37 king + + * Modules/CMakeCInformation.cmake, + Modules/CMakeCXXInformation.cmake, + Modules/CMakeFortranInformation.cmake, + Source/cmMakefileLibraryTargetGenerator.cxx: ENH: Build large + archives incrementally + + Creation of archive libraries with the unix 'ar' tool should be + done incrementally when the number of object files is large. + This avoids problems with the command line getting too many + arguments. + +2008-08-04 09:38 king + + * Source/cmELF.cxx: BUG: Fix operator precedence error in cmELF + + When attempting to load the RPATH out of a non-ELF file cmELF + would crash because the check for a valid file was done with in + correct operator precedence. See bug#7392. + +2008-08-04 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-03 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-02 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-08-01 20:38 miguelf + + * Modules/FindImageMagick.cmake: STYLE: Fixed module list in + documentation; Magick should be MagickCore. + +2008-08-01 12:10 david.cole + + * Source/CMakeLists.txt: BUG: Improve fix for issue #7058 - + comsuppd did not yet exist in VC6. + +2008-08-01 11:03 hoffman + + * CMakeLists.txt: ENH: final 2.6.1 + +2008-08-01 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-31 14:16 david.cole + + * Source/CTest/cmCTestCoverageHandler.cxx: BUG: Fix issue#4792 - + improve verbose and log output when ctest cannot find a file + during coverage analysis. + +2008-07-31 13:46 david.cole + + * Source/CMakeLists.txt: BUG: Fix issue #7058 - link the commsup + lib explicitly for use on some Visual Studio + SDK combinations + +2008-07-31 13:36 hoffman + + * Source/cmake.cxx: BUG: fix for 7426 bad check for cpack + +2008-07-31 12:54 david.cole + + * Source/cmLocalVisualStudio7Generator.cxx: BUG: Fix issue #5773 - + add table entry to map /W0 to WarningLevel="0" + +2008-07-31 12:00 hoffman + + * Tests/BundleGeneratorTest/CMakeLists.txt: ENH: fix for branch + +2008-07-31 11:52 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Modules/InstallRequiredSystemLibraries.cmake, + Source/cmCallVisualStudioMacro.cxx, + Source/cmCallVisualStudioMacro.h, Source/cmGlobalGenerator.cxx, + Source/cmGlobalVisualStudioGenerator.cxx, Source/cmake.cxx, + Tests/CMakeLists.txt, Tests/BundleGeneratorTest/BundleIcon.icns, + Tests/BundleGeneratorTest/CMakeLists.txt, + Tests/BundleGeneratorTest/Executable.cxx, + Tests/BundleGeneratorTest/Info.plist, + Tests/BundleGeneratorTest/Library.cxx, + Tests/BundleGeneratorTest/StartupCommand: ENH: merge in stuff + from cvs head RC 16 + +2008-07-31 11:28 david.cole + + * Source/CTest/cmCTestCoverageHandler.cxx: BUG: Fix issue #4971 - + use lower case when comparing file names from gcov output on + _WIN32 since sometimes the drive letters have different case. + +2008-07-31 10:54 hoffman + + * Tests/CMakeLists.txt: ENH: fix build with Xcode project was + missing + +2008-07-31 10:33 hoffman + + * Source/: cmMakefile.cxx, cmake.cxx, cmake.h, cmakemain.cxx: ENH: + add a --trace option + +2008-07-31 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-30 16:36 hoffman + + * Tests/BundleGeneratorTest/BundleIcon.icns: file BundleIcon.icns + was added on branch CMake-2-6 on 2008-07-31 15:52:24 +0000 + +2008-07-30 16:36 hoffman + + * Tests/BundleGeneratorTest/CMakeLists.txt: file CMakeLists.txt was + added on branch CMake-2-6 on 2008-07-31 15:52:25 +0000 + +2008-07-30 16:36 hoffman + + * Tests/BundleGeneratorTest/Executable.cxx: file Executable.cxx was + added on branch CMake-2-6 on 2008-07-31 15:52:25 +0000 + +2008-07-30 16:36 hoffman + + * Tests/BundleGeneratorTest/Info.plist: file Info.plist was added + on branch CMake-2-6 on 2008-07-31 15:52:25 +0000 + +2008-07-30 16:36 hoffman + + * Tests/BundleGeneratorTest/Library.cxx: file Library.cxx was added + on branch CMake-2-6 on 2008-07-31 15:52:25 +0000 + +2008-07-30 16:36 hoffman + + * Tests/BundleGeneratorTest/StartupCommand: file StartupCommand was + added on branch CMake-2-6 on 2008-07-31 15:52:25 +0000 + +2008-07-30 16:36 david.cole + + * Tests/: CMakeLists.txt, BundleGeneratorTest/BundleIcon.icns, + BundleGeneratorTest/CMakeLists.txt, + BundleGeneratorTest/Executable.cxx, + BundleGeneratorTest/Info.plist, BundleGeneratorTest/Library.cxx, + BundleGeneratorTest/StartupCommand: ENH: Add test for the new + CPack BundleGenerator. Thanks to Tim Shead for the patch. See + issue #7170 for more details. + +2008-07-30 15:43 david.cole + + * Modules/InstallRequiredSystemLibraries.cmake: BUG: Fix issue + #6610. Use 64-bit system binaries when using the 64-bit MSVC + compiler. Thanks to Clinton Stimpson for the patch. + +2008-07-30 15:26 david.cole + + * Source/: cmCallVisualStudioMacro.cxx, cmCallVisualStudioMacro.h, + cmGlobalVisualStudioGenerator.cxx, cmake.cxx: BUG: Fix issue + #7088 - do not emit error messages when attempts to run Visual + Studio macros fail. You can still get the error output as + messages if you want using --debug-output from the cmake command + line. + +2008-07-30 15:18 hoffman + + * Source/cmGlobalGenerator.cxx: BUG: fix for bug 7427, preinstall + target name hard coded + +2008-07-30 14:54 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/FindBoost.cmake, + Modules/FindImageMagick.cmake, Modules/FindJPEG.cmake, + Source/cmComputeLinkDepends.cxx, Source/cmComputeLinkDepends.h, + Source/cmComputeLinkInformation.cxx, Source/cmLocalGenerator.cxx, + Source/cmOrderDirectories.cxx, Source/cmOrderDirectories.h, + Source/cmSourceFileLocation.cxx, + Source/CPack/cmCPackPackageMakerGenerator.cxx, + Source/CPack/cmCPackPackageMakerGenerator.h: ENH: merge in from + main tree RC 15 + +2008-07-30 13:28 david.cole + + * Source/CPack/: cmCPackPackageMakerGenerator.cxx, + cmCPackPackageMakerGenerator.h: BUG: Fix issue #7414 - do not + crash when given components with circular dependencies. Thanks to + Doug Gregor for the patch. + +2008-07-30 11:06 king + + * Source/cmSourceFileLocation.cxx: ENH: Recognize src extensions of + all enabled langs + + For historical reasons we still support naming of source files + without their extension. Sources without known extensions are + located on disk by iterating through a fixed set of possible + extensions. We now want users to always specify the extension, + so the fixed set will not be expanded and is preserved for + compatibility with older projects. + + This change adds recognition of extensions of all enabled + languages to avoid checking the disk for files whose extensions + are unambiguous but not in the original fixed set. + +2008-07-30 11:06 king + + * Source/cmSourceFileLocation.cxx: BUG: Avoid double-slash in check + for source file + +2008-07-30 10:44 hoffman + + * Source/cmLocalGenerator.cxx: BUG: fix for bug 7421, fortran did + not get arch flags on the mac + +2008-07-30 10:23 king + + * Source/: cmComputeLinkDepends.cxx, cmComputeLinkDepends.h, + cmComputeLinkInformation.cxx: BUG: Preserve all non-targets on + user link lines + + In CMake 2.4 the generated link line for a target always + preserved the originally specified libraries in their original + order. Dependencies were satisfied by inserting extra libraries + into the line, though it had some bugs. In CMake 2.6.0 we + preserved only the items on the link line that are not known to + be shared libraries. This reduced excess libraries on the link + line. However, since we link to system libraries (such as + /usr/lib/libm.so) by asking the linker to search (-lm), some + linkers secretly replace the library with a static library in + another implicit search directory (developers can override this + by using an imported target to force linking by full path). When + this happens the order still matters. + + To avoid this and other potential subtle issues this commit + restores preservation of all non-target items and static library + targets. This will create cases of unnecessary, duplicate shared + libraries on the link line if the user specifies them, but at + least it will work. In the future we can attempt a more advanced + analysis to safely remove duplicate shared libraries from the + link line. + +2008-07-30 09:25 king + + * Source/cmComputeLinkDepends.cxx: BUG: Preserve shared lib order + for 2.4 compatibility + + We preserve the order and multiplicity of libraries directly + linked by a target as specified by the user. Items known to be + shared libraries may be safely skipped because order preservation + is only needed for static libraries. However, CMake 2.4 did not + skip shared libs, so we do the same when in 2.4 compatibility + mode. + +2008-07-30 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-29 16:41 hoffman + + * Modules/FindJPEG.cmake: BUG: #7416 fix error when jpeg is not + found + +2008-07-29 14:57 king + + * Source/: cmComputeLinkInformation.cxx, cmOrderDirectories.cxx, + cmOrderDirectories.h: ENH: Warn when system libraries may be + hidden. + + We never explicitly specify system library directories in linker + or runtime search paths. Furthermore, libraries in these + directories are always linked by asking the linker to search for + them. We need to generate a warning when explicitly specified + search directories contain files that may hide the system + libraries during the search. + +2008-07-29 14:01 king + + * Source/: cmComputeLinkInformation.cxx, cmOrderDirectories.cxx, + cmOrderDirectories.h: ENH: Provide context in path ordering + warnings + +2008-07-29 14:00 king + + * Source/cmOrderDirectories.cxx: STYLE: Fix typo in comment in + cmOrderDirectories + +2008-07-29 10:51 hoffman + + * Source/cmComputeLinkInformation.cxx: ENH: do not depend on files + that do not exist + +2008-07-29 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-28 15:40 dgregor + + * Modules/FindBoost.cmake: BUG: Be more careful with + Boost_MINOR_VERSION in FindBoost module + +2008-07-28 14:33 dgregor + + * Modules/FindBoost.cmake: BUG: Work around Boost 1.36.0 bug fix on + Darwin by setting the mangled compiler name to -xgccVERSION + +2008-07-28 11:31 hoffman + + * CMakeLists.txt, CTestConfig.cmake, ChangeLog.manual, + DartConfig.cmake, Source/cmComputeLinkInformation.cxx, + Source/cmComputeLinkInformation.h, Source/cmPolicies.cxx, + Source/cmPolicies.h, Source/cmTarget.cxx, Source/cmTarget.h: ENH: + merge in policy 0008 and cdash direct submission + +2008-07-28 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-27 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-26 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-25 23:23 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/FindJNI.cmake, + Source/cmSourceFileLocation.cxx: ENH: merge in from main tree and + fix bug for flex and yacc stuff in SecondLife + +2008-07-25 18:00 hoffman + + * Source/cmSourceFileLocation.cxx: BUG: fix source file extension + bug that broke Second life build + +2008-07-25 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-24 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-23 12:59 king + + * Source/: cmComputeLinkInformation.cxx, + cmComputeLinkInformation.h, cmPolicies.cxx, cmPolicies.h, + cmTarget.cxx, cmTarget.h: ENH: Support full-path libs w/out valid + names. + + This change introduces policy CMP0008 to decide how to treat full + path libraries that do not appear to be valid library file names. + Such libraries worked by accident in the VS IDE and Xcode + generators with CMake 2.4 and below. We support them in CMake + 2.6 by introducing this policy. See policy documentation added + by this change for details. + +2008-07-23 12:19 king + + * Source/: cmComputeLinkInformation.cxx, + cmComputeLinkInformation.h: ENH: Skip libs in known dirs for + CMP0003 warnings. + + Sometimes we ask the linker to search for a library for which the + path is known but for some reason cannot be specified by full + path. In these cases do not include the library in CMP0003 + warnings because we know the extra paths are not needed for it. + +2008-07-23 02:47 miguelf + + * Modules/FindImageMagick.cmake: ENH: Updated FindImageMagick to: - + Find newer additions such as animate, compare, etc. - Find + development api: Magick++, MagickCore, MagickWand - Use + FindPackageHandleStandardArgs to output standard messages. + +2008-07-23 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-22 14:04 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Modules/CheckFortranFunctionExists.cmake, Modules/FindBLAS.cmake, + Modules/FindLAPACK.cmake, Modules/FindMPI.cmake, + Modules/FindwxWidgets.cmake, Source/cmComputeLinkInformation.cxx, + Source/cmDocumentVariables.cxx, Source/cmDocumentation.cxx, + Source/cmDocumentationFormatter.cxx, + Source/cmDocumentationFormatterHTML.cxx, + Source/cmLocalGenerator.cxx, + Source/CPack/cmCPackBundleGenerator.cxx: ENH: merge in changes + from main tree for RC12 + +2008-07-22 13:34 hoffman + + * Modules/: FindBLAS.cmake, FindLAPACK.cmake, FindOpenSSL.cmake: + ENH: change to correct line feed + +2008-07-22 13:32 hoffman + + * Source/cmLocalGenerator.cxx: COMP: fix compiler warning and + follow style + +2008-07-22 07:15 alin.elena + + * Modules/: CheckFortranFunctionExists.cmake, FindBLAS.cmake, + FindLAPACK.cmake: + ENH: FindBLAS.cmake, FindLAPACK.cmake modules were redesigned so + now you have three new variables BLA_VENDOR (you can specify the + VENDOR), BLA_STATIC (gets the static version of libs), BLA_F95 + (gets the fortran 95 interface). BLA_VENDOR can be specified as + an environment variable. Intel mkls libs need FindThreads to be + found correctly so you will need to enable the C/CXX + +2008-07-22 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-21 17:52 alex + + * Source/: cmDocumentation.cxx, cmDocumentationFormatter.cxx, + cmDocumentationFormatterHTML.cxx: ENH: handle HTML documentation + for single items better: no warning about + ComputeSectionLinkPrefix, don't create an index for only one item + + Alex + +2008-07-21 15:44 hoffman + + * CTestConfig.cmake, DartConfig.cmake: ENH: switch to using cdash + for submissions + +2008-07-21 15:34 hoffman + + * Modules/: FindBLAS.cmake, FindLAPACK.cmake: ENH: get out of + module if no fortran + +2008-07-21 15:11 hoffman + + * Modules/: FindBLAS.cmake, FindLAPACK.cmake: ENH: this should fail + only if required is sent to find package + +2008-07-21 13:40 alin.elena + + * Modules/: FindBLAS.cmake, FindLAPACK.cmake: + ENH: checks if Fortran is enbaled. If not an error message is + produced. + +2008-07-21 10:07 king + + * Source/cmComputeLinkInformation.cxx: ENH: Support full-path libs + w/out extension in VS IDE. + + - This case worked accidentally in CMake 2.4, though not in + Makefiles. + - Some projects build only with the VS IDE on windows and have + this + mistake. + - Support them when 2.4 compatibility is enabled by adding the + extension. + +2008-07-21 04:56 alin.elena + + * Modules/: CheckFortranFunctionExists.cmake, FindLAPACK.cmake: + ENH: Modules/CheckFortranFunctionExists.cmake helps gfortran to + check the existence of a file ENH: Modules/FindLAPACK.cmake + returns the full list of libraries required to link against + Lapack + +2008-07-21 00:02 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-20 17:14 alex + + * Source/cmDocumentVariables.cxx: STYLE: fix #7146, add + documentation for + CMAKE[_SYSTEM]_(LIBRARY|PROGRAM|INCLUDE|PREFIX)_PATH variables + -moved CMAKE_CROSSCOMPILING from "Variables that modify + behaviour" to "variables that Provide Information", since it + should be used only for testing whether we are currently in cross + compiling mode, not for switching between the modes. + + Alex + +2008-07-20 15:50 alex + + * Modules/FindJNI.cmake: BUG: #7333, search dirs for Fedora + + Alex + +2008-07-20 15:45 alex + + * Modules/FindJNI.cmake: BUG: #7360: add support for FreeBSD BUG: + #7345: add support for ppc + + Alex + +2008-07-20 15:39 alex + + * Modules/FindJNI.cmake: BUG: fix #6416: provide JNI_LIBRARIES and + JNI_INCLUDE_DIRS + + Alex + +2008-07-19 23:52 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-18 23:52 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-18 16:12 david.cole + + * Source/CPack/cmCPackBundleGenerator.cxx: ENH: Improvements to the + bundle cpack generator from second patch attached to feature + request #7170. Thanks to Tim Shead. + +2008-07-18 11:24 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Utilities/cmcurl/CMakeLists.txt, + Utilities/cmcurl/CMake/CheckCSourceCompiles.cmake, + Utilities/cmcurl/CMake/CheckCSourceRuns.cmake, + Utilities/cmcurl/CMake/CurlCheckCSourceCompiles.cmake, + Utilities/cmcurl/CMake/CurlCheckCSourceRuns.cmake, + Utilities/cmcurl/CMake/OtherTests.cmake: ENH: merge in fix for + xcode 3.1 build from main tree + +2008-07-18 08:17 dgregor + + * Modules/FindMPI.cmake: ENH: Use the HINTS feature of find_library + to find the right libraries for MPI, and act a bit more + intelligently when MPI cannot be found. + +2008-07-17 23:52 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-17 15:19 king + + * Utilities/cmcurl/CMakeLists.txt: COMP: Check for -Wno-long-double + before using + + Older GCC on the Mac warns for use of long double, so we use + -Wno-long-double. Newer GCC on the Mac does not have this flag + and gives an error. We now check for the flag before using it. + See bug #7357. + +2008-07-17 15:19 hoffman + + * Utilities/cmcurl/CMake/CurlCheckCSourceCompiles.cmake: file + CurlCheckCSourceCompiles.cmake was added on branch CMake-2-6 on + 2008-07-18 15:24:26 +0000 + +2008-07-17 15:19 hoffman + + * Utilities/cmcurl/CMake/CurlCheckCSourceRuns.cmake: file + CurlCheckCSourceRuns.cmake was added on branch CMake-2-6 on + 2008-07-18 15:24:26 +0000 + +2008-07-17 15:19 king + + * Utilities/cmcurl/CMake/: CheckCSourceCompiles.cmake, + CheckCSourceRuns.cmake, CurlCheckCSourceCompiles.cmake, + CurlCheckCSourceRuns.cmake, OtherTests.cmake: ENH: Avoid cmcurl + CMake macro name conflicts + + Utilities/cmcurl/CMake provides macros with the same file names + and macro names as others in Modules, but with different + interfaces. We rename the curl ones to avoid conflict. + +2008-07-17 10:14 hoffman + + * CMakeLists.txt, ChangeLog.manual, Source/cmGlobalGenerator.cxx, + Source/cmGlobalGenerator.h, Tests/TryCompile/CMakeLists.txt: ENH: + merge in two bug fixes to 26 + +2008-07-16 23:52 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-16 11:03 king + + * Source/: cmGlobalGenerator.cxx, cmGlobalGenerator.h: BUG: Fix + try_compile during EnableLanguage + + - The source-file signature of try_compile looks up the + language + of the source file using the extension-to-language map so + that + it knows what language to enable in the generated project. + - This map needs to be filled before loading a file specified + by + CMAKE_USER_MAKE_RULES_OVERRIDE + CMAKE_USER_MAKE_RULES_OVERRIDE_ + so that the user file may call the try_compile() source-file + signature. + - It must still be re-filled after loading + CMakeInformation.cmake + in case the compiler- or platform-specific files added + anything. + - See bug #7340. + +2008-07-16 09:29 hoffman + + * Tests/TryCompile/CMakeLists.txt: ENH: remove test that does not + work on all compilers + +2008-07-15 23:52 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-15 11:35 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/FindBoost.cmake, + Source/cmGlobalXCodeGenerator.cxx, + Tests/TryCompile/CMakeLists.txt: ENH: merge in fix for xcode and + new version of find boost + +2008-07-15 10:04 hoffman + + * Tests/TryCompile/CMakeLists.txt: ENH: add a test for bug 7316 + +2008-07-14 23:53 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-14 18:51 hoffman + + * Source/cmGlobalXCodeGenerator.cxx: BUG: fix for bug 7316 + +2008-07-14 13:52 dgregor + + * Modules/FindBoost.cmake: ENH: FindBoost can now find the upcoming + Boost 1.46 + +2008-07-14 12:24 hoffman + + * CMakeLists.txt, ChangeLog.manual, Source/CMakeLists.txt: ENH: add + cmCPackComponentGroup to build + +2008-07-14 09:22 hoffman + + * Source/CPack/cmCPackComponentGroup.cxx: ENH: add missing merged + file + +2008-07-13 23:53 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-13 18:06 miguelf + + * Modules/FindwxWidgets.cmake: ENH: Improved support for finding + wxWidgets in MinGW environment. + +2008-07-13 17:55 hoffman + + * CMakeCPackOptions.cmake.in, CMakeLists.txt, ChangeLog.manual, + Modules/CPack.Info.plist.in, Modules/CPack.cmake, + Modules/FindBoost.cmake, Modules/FindQt4.cmake, + Modules/FindwxWidgets.cmake, Modules/NSIS.template.in, + Source/cmBootstrapCommands.cxx, Source/cmCommands.cxx, + Source/cmGetCMakePropertyCommand.cxx, + Source/cmGetCMakePropertyCommand.h, Source/cmGlobalGenerator.h, + Source/cmGlobalXCodeGenerator.cxx, + Source/cmGlobalXCodeGenerator.h, Source/cmInstallCommand.cxx, + Source/cmInstallFilesCommand.cxx, + Source/cmInstallProgramsCommand.cxx, + Source/cmInstallTargetGenerator.h, + Source/cmInstallTargetsCommand.cxx, Source/cmake.cxx, + Source/CPack/cmCPackComponentGroup.h, + Source/CPack/cmCPackGenerator.cxx, + Source/CPack/cmCPackNSISGenerator.cxx, + Source/CPack/cmCPackNSISGenerator.h, + Source/CPack/cmCPackPackageMakerGenerator.cxx, + Source/CPack/cmCPackPackageMakerGenerator.h, + Source/QtDialog/CMakeSetupDialog.cxx, + Source/QtDialog/CMakeSetupDialog.h, + Source/QtDialog/CMakeSetupDialog.ui, + Source/QtDialog/QCMakeCacheView.cxx, + Source/kwsys/RegularExpression.cxx, + Tests/CPackComponents/CMakeLists.txt: ENH: Merge from head create + RC7 + +2008-07-12 23:53 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-11 23:53 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-10 23:53 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-10 17:20 hoffman + + * Source/kwsys/RegularExpression.cxx: COMP: remove warning and + check for assignment to itself in operator= + +2008-07-09 23:53 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-09 17:45 king + + * Modules/Platform/Darwin.cmake: BUG: Fix dylib versioning flags + for old OSX. + + - ld flags -dylib_compatibility_version and + -dylib_current_version + are libtool flags -compatibility_version and -current_version + - OSX 10.3 does not like the dylib_ prefixes. + +2008-07-09 16:30 david.cole + + * Source/CPack/cmCPackComponentGroup.h: COMP: Fix HP continuous. + Pull stl headers into CMake header files using + cmStandardIncludes.h + +2008-07-09 13:38 hoffman + + * Source/CPack/cmCPackComponentGroup.cxx: file + cmCPackComponentGroup.cxx was added on branch CMake-2-6 on + 2008-07-14 13:22:45 +0000 + +2008-07-09 13:38 david.cole + + * Modules/CPack.Info.plist.in, Modules/CPack.cmake, + Source/CMakeLists.txt, Source/CPack/cmCPackComponentGroup.cxx, + Source/CPack/cmCPackComponentGroup.h, + Source/CPack/cmCPackPackageMakerGenerator.cxx, + Source/CPack/cmCPackPackageMakerGenerator.h: ENH: One more patch + from Doug Gregor including PackageMaker functionality for + componentized-for-the-end-user and download-some-bit-on-demand + installers. + +2008-07-09 11:46 hoffman + + * Source/kwsys/RegularExpression.cxx: ENH: fix memory leak + +2008-07-09 10:09 king + + * Modules/Platform/Darwin.cmake, Source/cmGlobalXCodeGenerator.cxx, + Source/cmMakefileLibraryTargetGenerator.cxx, + Source/cmMakefileLibraryTargetGenerator.h: ENH: Set version info + for shared libs on OSX. + + - Map SOVERSION major.minor.patch to compatibility_version + - Map VERSION major.minor.patch to current_version + - See issue #4383. + +2008-07-09 10:09 king + + * Source/: cmTarget.cxx, cmTarget.h: ENH: Add full target version + signature cmTarget::GetTargetVersion. + +2008-07-08 23:53 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-08 17:47 david.cole + + * Tests/CPackComponents/CMakeLists.txt: ENH: Use new + cpack_add_component macro (and friends) from the CPackComponents + test. Thanks again to Doug Gregor! + +2008-07-08 11:52 david.cole + + * Modules/CPack.cmake, Modules/NSIS.template.in, + Source/CPack/cmCPackComponentGroup.h, + Source/CPack/cmCPackGenerator.cxx, + Source/CPack/cmCPackNSISGenerator.cxx, + Source/CPack/cmCPackNSISGenerator.h, + Source/CPack/cmCPackPackageMakerGenerator.cxx, + Source/cmGetCMakePropertyCommand.cxx, + Source/cmGetCMakePropertyCommand.h, Source/cmGlobalGenerator.h, + Source/cmInstallCommand.cxx, Source/cmInstallFilesCommand.cxx, + Source/cmInstallProgramsCommand.cxx, + Source/cmInstallTargetGenerator.h, + Source/cmInstallTargetsCommand.cxx: ENH: Further refinement of + the CPack components functionality from Doug Gregor. + + Details: ========== + + - New cpack_add_component, cpack_add_component_group, and + cpack_add_install_type "commands" defined as macros in the CPack + module. - Documentation for all of the variables and commands + in the CPack module. - Added get_cmake_property(... COMPONENTS) + to CMake to ask for the names of all components. Used in the + CPack module to automatically build component-based installers. + (Set CPACK_MONOLITHIC_INSTALL to turn off component-based + installation). - A group can declare its PARENT_GROUP, to build + an arbitrary hierarchy of groups. - New CPack command + cpack_configure_downloads, which creates an installer that + downloads only the selected components on-the-fly. Those + components marked DOWNLOADED will be separate packages downloaded + on-the-fly (or, all packages can be marked as such with the ALL + option to cpack_configure_downloads). Individual components are + compressed with ZIP at installer-creation time and + downloaded/uncompressed by the installer as needed. This feature + is only available on Windows with NSIS at the moment. - NSIS + installers can install themselves and enable the "Change" button + in Add/Remove programs, allowing users to go back and install or + remove components. This can be disabled through + cpack_configure_downloads, because it's only really useful is + most of the application's functionality is in downloaded + components. - Bug fix: automatically install everything whose + COMPONENT was not specified (it's a hidden, required group) - + Bug fix: fixed removal of components when re-running the NSIS + installer and unchecking components - Bug fix: NSIS installers + now only install/remove the minimal number of files when re-run + to update the installation (or by clicking "Change" in Add/Remove + programs) + +2008-07-07 23:53 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-07 15:07 hoffman + + * Source/cmBootstrapCommands.cxx, Source/cmCommands.cxx, + Tests/CMakeLists.txt: ENH: add get_test_property to bootstrap so + bootstrap builds test the same as non-bootstrap builds + +2008-07-07 13:12 king + + * Source/cmGlobalXCodeGenerator.cxx: BUG: Do not build + human-reference files in Xcode + + - The Info.plist file in app bundles should not be built. + - User-specified files such as foo.txt should not be built. + - Only files with a recognized language should be built, + just as in the Makefiles generators. + - See bug #7277. + +2008-07-07 10:57 king + + * Source/cmGlobalXCodeGenerator.cxx: ENH: Add projectRoot to Xcode + projects + + - This attribute points Xcode at the source tree. + - Xcode 3 wants this to be set always. + - See bug #7044. + +2008-07-07 10:05 king + + * Source/cmGlobalXCodeGenerator.cxx: BUG: Fix AppBundle=>Library + depends in Xcode + + - The Xcode generator xcode-depend-helper needs to account + for the paths of executables within application bundles. + - See bug #7278. + +2008-07-06 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-06 22:06 hoffman + + * Source/CTest/cmCTestTestHandler.cxx: COMP: fix warning + +2008-07-06 20:03 hoffman + + * Source/CTest/cmCTestMultiProcessHandler.h: COMP: fix some more + warnings + +2008-07-06 19:58 hoffman + + * Source/CTest/: cmCTestTestHandler.cxx, cmCTestTestHandler.h: + COMP: fix a few more warnings + +2008-07-06 04:57 miguelf + + * Modules/FindwxWidgets.cmake: BUG: Add new library richtext. + Reported in #7284 thanks to earith. + +2008-07-05 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-05 13:25 clinton + + * Source/QtDialog/: CMakeSetupDialog.cxx, CMakeSetupDialog.h, + CMakeSetupDialog.ui: + ENH: Replace Advanced checkbox and group option in menu with a + combo box to choose view type. + +2008-07-05 11:57 clinton + + * Modules/FindQt4.cmake: + BUG: Watch for empty qconfig.pri files. Fixes #7287. + +2008-07-05 09:29 hoffman + + * Source/cmGlobalGenerator.cxx: COMP: fix warning + +2008-07-04 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-04 10:28 hoffman + + * Source/CTest/: cmCTestMultiProcessHandler.cxx, + cmCTestMultiProcessHandler.h, cmCTestTestHandler.cxx: COMP: try + to fix sgi compiler problem with set and also shorten symbol + lengths for set class + +2008-07-04 10:10 hoffman + + * Source/CTest/cmCTestTestHandler.cxx: COMP: fix more warnings + +2008-07-04 09:55 hoffman + + * Source/CTest/cmCTestTestHandler.cxx: COMP: fix warning + +2008-07-04 09:50 hoffman + + * Source/: cmCTest.cxx, CTest/cmCTestTestHandler.cxx: COMP: fix + some warnings + +2008-07-03 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-03 18:19 dgregor + + * Modules/FindBoost.cmake: COMP: Find Boost as installed by the + BoostPro/Boost Consulting installers on Windows + +2008-07-03 16:26 hoffman + + * Source/CTest/cmCTestMultiProcessHandler.cxx: ENH: one more fix + for the old hp c++ compiler + +2008-07-03 15:49 dgregor + + * Modules/FindBoost.cmake: ENH: Cleanup FindBoost module, fixing + several small bugs and providing better diagnostic information + when things go wrong + +2008-07-03 15:46 king + + * Tests/CMakeLists.txt: BUG: Replace non-bootstrap command with + macro + + - The GET_TEST_PROPERTY command does not exist during + bootstrap. + - Instead of lots of conditionals, replace it with a macro. + +2008-07-03 15:02 hoffman + + * Source/CTest/cmProcess.cxx: ENH: one more fix for hp + +2008-07-03 14:38 king + + * Tests/CMakeLists.txt: ENH: Remove condition on use of CMake 2.4 + commands + + - Commands SET_TESTS_PROPERTIES and GET_TEST_PROPERTY exist + in CMake 2.4, which is now required. + - Therefore we need not check before using them. + +2008-07-03 14:34 king + + * Tests/CMakeLists.txt: COMP: Don't set properties on a + non-existing test + + - Test SubProject-Stage2 is conditionally created. + - Set properties on it only if it exists. + +2008-07-03 13:55 hoffman + + * Source/CTest/cmProcess.h: ENH: fix for old hp compiler + +2008-07-03 13:55 king + + * Source/cmake.cxx: ENH: Do not auto-create out-dated cache + variables + + - We used to always put LIBRARY_OUTPUT_PATH and + EXECUTABLE_OUTPUT_PATH + in the cache if the project did not. + - In CMake 2.6 these variables should no longer be used. + - Now add them only if CMAKE_BACKWARDS_COMPATIBILITY is also + cached. + - This happens only when CMP0001 is set to OLD or WARN or if + the user or project sets it. In any case compatibility is + needed. + - Reported by Miguel A. Figueroa-Villanueva and Philip Lowman. + +2008-07-03 13:28 king + + * Source/: cmGlobalXCodeGenerator.cxx, cmGlobalXCodeGenerator.h: + BUG: Fix Xcode reference to Info.plist resource + + - Generated Xcode projects for application bundles list the + CMake-generated Info.plist input file as a resource. + - The location of the input file was moved by a previous + commit, + but the reference to it as a resource file was not updated. + - This change moves the file to CMakeFiles/.dir/Info.plist + to give it a more intuitive name in the Xcode project. + - We also update the reference to point at the correct + location. + - See bug #7277. + +2008-07-03 13:28 king + + * Source/cmGlobalXCodeGenerator.cxx: BUG: Fix Xcode per-config + bundle name in Info.plist + + - The Xcode generator creates one Info.plist input file which + is + converted at build time by Xcode and placed in the final + bundle. + - The _OUTPUT_NAME target property can place different + content + for the exe name in Info.plist on a per-configuration basis. + - Instead of generating a per-config Info.plist input file just + let + Xcode put the name in at build time using the + $(EXECUTABLE_NAME) var. + +2008-07-03 09:49 hoffman + + * Source/CTest/: cmProcess.cxx, cmProcess.h: ENH: add missing file + +2008-07-03 09:31 hoffman + + * Source/CMakeLists.txt, Source/cmCTest.cxx, Source/cmCTest.h, + Source/cmGlobalGenerator.cxx, + Source/cmGlobalUnixMakefileGenerator3.cxx, + Source/CTest/cmCTestGenericHandler.cxx, + Source/CTest/cmCTestMultiProcessHandler.cxx, + Source/CTest/cmCTestMultiProcessHandler.h, + Source/CTest/cmCTestTestHandler.cxx, + Source/CTest/cmCTestTestHandler.h, Tests/CMakeLists.txt: ENH: add + initial ctest -j feature + +2008-07-02 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-01 23:54 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-07-01 10:58 hoffman + + * CMakeCPackOptions.cmake.in: ENH: fix install in add/remove + programs, again... + +2008-06-30 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-30 16:10 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/FindGettext.cmake, + Modules/FindKDE4.cmake, Source/cmLocalVisualStudio7Generator.cxx, + Source/cmMakefile.cxx, Source/cmMakefile.h: ENH: check in RC 6 + merges from trunk + +2008-06-30 14:29 clinton + + * Source/QtDialog/QCMakeCacheView.cxx: + BUG: Fix column widths on some systems. + +2008-06-30 09:57 king + + * Source/cmLocalVisualStudio7Generator.cxx: BUG: Do not escape make + variable references in VS additional options. + +2008-06-29 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-29 18:58 alex + + * Modules/FindGettext.cmake: BUG: fix 7230: don't ignore first + parameter if it's not ALL + + Alex + +2008-06-28 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-28 11:16 martink + + * Source/: cmIfCommand.cxx, cmIfCommand.h, cmWhileCommand.cxx: BUG: + fix memory leak and cleanup error string code + +2008-06-27 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-26 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-26 13:30 king + + * Source/: cmMakefile.cxx, cmMakefile.h: BUG: Fix computed + directory property DEFINITIONS. + + - The property tracks the value formed by add_definitions + and remove_definitions command invocations. + - The string should be maintained for use in returning for the + DEFINITIONS property value. + - It is no longer used for any other purpose. + - The DEFINITIONS property was recently documented as + deprecated. + - See bug #7239. + +2008-06-26 13:14 hoffman + + * Modules/FindKDE4.cmake: BUG: don't run KDE4_KDECONFIG_EXECUTABLE + if it is notfound + +2008-06-26 13:01 martink + + * Source/cmIfCommand.cxx, Source/cmListFileCache.cxx, + Tests/Complex/CMakeLists.txt, Tests/Complex/cmTestConfigure.h.in, + Tests/Complex/Executable/complex.cxx, + Tests/ComplexOneConfig/CMakeLists.txt, + Tests/ComplexOneConfig/cmTestConfigure.h.in, + Tests/ComplexOneConfig/Executable/complex.cxx, + Tests/ComplexRelativePaths/CMakeLists.txt, + Tests/ComplexRelativePaths/cmTestConfigure.h.in, + Tests/ComplexRelativePaths/Executable/complex.cxx: ENH: support + parenthesis as arguments and in conditionals feature request + #6191 + +2008-06-26 10:58 king + + * Source/: cmGetDirectoryPropertyCommand.h, cmMakefile.cxx: ENH: + Update documentation of computed directory properites. + + - Fix documentation of get_directory_property command. + - Convert its list of computed directory properties to be + defined/documented directory properties. + +2008-06-26 10:58 king + + * Source/cmMakefile.cxx: BUG: Fix PARENT_DIRECTORY property in + top-level to not crash. + +2008-06-25 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-25 09:51 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/CPack.Info.plist.in, + Modules/CPack.cmake, Modules/CPack.distribution.dist.in, + Modules/FindBLAS.cmake, Modules/FindFLTK.cmake, + Modules/FindKDE3.cmake, Modules/FindMatlab.cmake, + Modules/FindOpenSSL.cmake, Modules/FindQt3.cmake, + Modules/FindSWIG.cmake, Modules/FindwxWidgets.cmake, + Modules/NSIS.template.in, Source/CMakeLists.txt, + Source/cmFLTKWrapUICommand.cxx, Source/cmFindPackageCommand.cxx, + Source/cmLocalVisualStudio7Generator.cxx, Source/cmake.cxx, + Source/cmake.h, Source/CPack/cmCPackBundleGenerator.cxx, + Source/CPack/cmCPackBundleGenerator.h, + Source/CPack/cmCPackComponentGroup.h, + Source/CPack/cmCPackGenerator.cxx, + Source/CPack/cmCPackGenerator.h, + Source/CPack/cmCPackGeneratorFactory.cxx, + Source/CPack/cmCPackNSISGenerator.cxx, + Source/CPack/cmCPackNSISGenerator.h, + Source/CPack/cmCPackPackageMakerGenerator.cxx, + Source/CPack/cmCPackPackageMakerGenerator.h, + Source/CTest/cmCTestBuildAndTestHandler.cxx, + Source/CTest/cmCTestTestHandler.cxx, + Source/QtDialog/CMakeSetupDialog.cxx, + Source/QtDialog/CMakeSetupDialog.h, + Source/QtDialog/CMakeSetupDialog.ui, + Source/QtDialog/QCMakeCacheView.cxx, + Source/QtDialog/QCMakeCacheView.h, Tests/CMakeLists.txt, + Tests/CPackComponents/CMakeLists.txt, + Tests/CPackComponents/VerifyResult.cmake, + Tests/CPackComponents/mylib.cpp, Tests/CPackComponents/mylib.h, + Tests/CPackComponents/mylibapp.cpp, + Tests/FindModulesExecuteAll/CMakeLists.txt, + Tests/FindModulesExecuteAll/main.c, + Tests/SimpleInstall/CMakeLists.txt, + Tests/SimpleInstallS2/CMakeLists.txt: ENH: merge in changes from + main tree + +2008-06-25 09:44 hoffman + + * Source/cmMakefile.cxx: BUG: fix for bug 7239, DEFINITIONS + property not backwards compatible to 2.4 + +2008-06-24 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-24 16:47 hoffman + + * Modules/Platform/Windows-cl.cmake: ENH: undo optional because we + need it + +2008-06-24 15:50 hoffman + + * Modules/Platform/Windows-cl.cmake: ENH: rc is not so optional at + least with 2005 and newer, as it is used to embed the manifest + files + +2008-06-24 00:00 clinton + + * Source/QtDialog/QCMakeCacheView.cxx: + BUG: Don't create empty property. Fixes bug #7193. + +2008-06-23 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-23 13:37 hoffman + + * Modules/Platform/Windows-cl.cmake: ENH: make rc optional + +2008-06-23 11:08 hoffman + + * Source/cmFLTKWrapUICommand.cxx: BUG: fix for bug 7228 + FLTK_WRAP_UI segfault fixed + +2008-06-22 23:55 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-21 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-20 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-20 16:25 hoffman + + * Source/: cmake.h, cmake.cxx: BUG: fix for bug 7222 manifest:no + not working for makefiles + +2008-06-19 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-19 11:08 david.cole + + * Tests/CMakeLists.txt: BUG: Avoid running the new CPackComponents + test on Windows unless the NSIS installer is available. + +2008-06-19 06:17 hoffman + + * Source/CPack/cmCPackBundleGenerator.cxx: file + cmCPackBundleGenerator.cxx was added on branch CMake-2-6 on + 2008-06-25 13:51:32 +0000 + +2008-06-19 06:17 david.cole + + * Source/CPack/cmCPackBundleGenerator.cxx: COMP: Eliminate + unreferenced variable warning + +2008-06-18 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-18 19:02 alex + + * Modules/FindKDE3.cmake: BUG: modify the compiler flags only if + KDE3 has actually been found + + Alex + +2008-06-18 18:57 alex + + * Modules/FindKDE3.cmake: STYLE: use uppercase to be consistent + with the rest of the file + + Alex + +2008-06-18 16:39 alex + + * Modules/FindKDE3.cmake: BUG: the variable is _KDE4_USE_FLAGS ENH: + I guess this is also true for gcc 2.95 ? + + Alex + +2008-06-18 16:00 david.cole + + * Source/CPack/cmCPackGenerator.cxx: COMP: Eliminate compiler + warning on 64-bit build. + +2008-06-18 14:25 david.cole + + * Source/CPack/cmCPackNSISGenerator.cxx: BUG: Always look for the + NSIS reg value in the 32-bit hive even in 64-bit builds of CPack. + +2008-06-18 13:28 hoffman + + * Source/cmake.cxx: ENH: support large object file lists with + incremental visual studio linking + +2008-06-18 12:23 hoffman + + * Modules/FindKDE3.cmake: ENH: use correct variable + +2008-06-18 09:53 hoffman + + * Source/CPack/cmCPackBundleGenerator.h: file + cmCPackBundleGenerator.h was added on branch CMake-2-6 on + 2008-06-25 13:51:33 +0000 + +2008-06-18 09:53 david.cole + + * Modules/CPack.cmake, Source/CMakeLists.txt, + Source/CPack/cmCPackBundleGenerator.cxx, + Source/CPack/cmCPackBundleGenerator.h, + Source/CPack/cmCPackGeneratorFactory.cxx: ENH: Apply patch for + feature request #7170. Thanks to Tim Shead for contributing... + +2008-06-18 09:28 hoffman + + * Tests/CPackComponents/VerifyResult.cmake: file VerifyResult.cmake + was added on branch CMake-2-6 on 2008-06-25 13:51:58 +0000 + +2008-06-18 09:28 david.cole + + * Tests/CPackComponents/VerifyResult.cmake: BUG: Be more specific + about the expected file name of the installer. (So we don't get + mylibapp.exe in our GLOB results in make based build trees where + the built exes end up in the same directory as the CPack + installers...) + +2008-06-18 09:22 hoffman + + * Modules/FindKDE3.cmake: ENH: fix for findall + +2008-06-18 09:07 hoffman + + * Source/CTest/cmCTestBuildAndTestHandler.cxx: BUG: make sure ctest + sees the output of the cmake run in build and test cases, it was + not... + +2008-06-18 08:42 hoffman + + * Modules/FindKDE3.cmake: ENH: try to module run test + +2008-06-18 08:37 hoffman + + * Modules/: FindKDE3.cmake, FindQt3.cmake: ENH: try to module run + test + +2008-06-18 07:08 hoffman + + * Modules/CPack.distribution.dist.in: file + CPack.distribution.dist.in was added on branch CMake-2-6 on + 2008-06-25 13:51:31 +0000 + +2008-06-18 07:08 david.cole + + * Modules/CPack.distribution.dist.in, + Source/CPack/cmCPackPackageMakerGenerator.cxx, + Source/CPack/cmCPackPackageMakerGenerator.h: BUG: Workaround + PackageMaker 3.0 issue for new CPack components feature. Thanks + again to Doug Gregor for the patch. + +2008-06-17 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-17 21:46 hoffman + + * Modules/FindSWIG.cmake: ENH: no fatal error if not required + +2008-06-17 18:02 miguelf + + * Modules/FindwxWidgets.cmake: ENH: Added support for MSYS as a + unix style search. + +2008-06-17 14:07 david.cole + + * Source/CPack/cmCPackNSISGenerator.cxx: COMP: Use cmOStringStream + instead of std::ostringstream for the HP compiler. + +2008-06-17 14:03 hoffman + + * Source/CTest/cmCTestTestHandler.cxx: BUG: fix for bug 7136 + +2008-06-17 13:27 hoffman + + * Modules/FindBLAS.cmake: ENH: make find blas work if there is no + fortran compiler + +2008-06-17 13:13 hoffman + + * Source/cmake.cxx: ENH: add an enabled language property + +2008-06-17 12:44 david.cole + + * Source/CPack/: cmCPackGenerator.cxx, cmCPackNSISGenerator.cxx: + COMP: Fix errors and warnings from continuous dashboards running + different compilers... + +2008-06-17 12:09 david.cole + + * Source/CPack/cmCPackGenerator.h: COMP: Include full class + definitions of classes used in std::map data members. + +2008-06-17 11:39 hoffman + + * Tests/CPackComponents/CMakeLists.txt: file CMakeLists.txt was + added on branch CMake-2-6 on 2008-06-25 13:51:58 +0000 + +2008-06-17 11:39 hoffman + + * Source/CPack/cmCPackComponentGroup.h: file + cmCPackComponentGroup.h was added on branch CMake-2-6 on + 2008-06-25 13:51:35 +0000 + +2008-06-17 11:39 hoffman + + * Tests/CPackComponents/mylib.cpp: file mylib.cpp was added on + branch CMake-2-6 on 2008-06-25 13:51:58 +0000 + +2008-06-17 11:39 hoffman + + * Tests/CPackComponents/mylib.h: file mylib.h was added on branch + CMake-2-6 on 2008-06-25 13:51:58 +0000 + +2008-06-17 11:39 hoffman + + * Tests/CPackComponents/mylibapp.cpp: file mylibapp.cpp was added + on branch CMake-2-6 on 2008-06-25 13:51:58 +0000 + +2008-06-17 11:39 david.cole + + * Modules/CPack.Info.plist.in, Modules/CPack.distribution.dist.in, + Modules/NSIS.template.in, Source/CPack/cmCPackGenerator.cxx, + Source/CPack/cmCPackGenerator.h, + Source/CPack/cmCPackComponentGroup.h, + Source/CPack/cmCPackNSISGenerator.cxx, + Source/CPack/cmCPackNSISGenerator.h, + Source/CPack/cmCPackPackageMakerGenerator.cxx, + Source/CPack/cmCPackPackageMakerGenerator.h, + Tests/CMakeLists.txt, Tests/CPackComponents/CMakeLists.txt, + Tests/CPackComponents/VerifyResult.cmake, + Tests/CPackComponents/mylib.cpp, Tests/CPackComponents/mylib.h, + Tests/CPackComponents/mylibapp.cpp, + Tests/SimpleInstall/CMakeLists.txt, + Tests/SimpleInstallS2/CMakeLists.txt: ENH: Add patch for feature + request #6847 - CPack components for NSIS and PackageMaker + installers. Thanks to Doug Gregor for all the hard work involved + with implementing this patch! Also added new test CPackComponents + that is conditionally executed only when NSIS or PackageMaker + installer builders are available. + +2008-06-17 11:29 hoffman + + * Modules/FindBLAS.cmake: STYLE: fix indent for file + +2008-06-17 10:58 hoffman + + * Source/cmLocalVisualStudio7Generator.cxx: BUG: fix for bug 6619 + +2008-06-17 10:51 hoffman + + * Tests/CMakeLists.txt: ENH: try turning this on again + +2008-06-16 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-16 20:10 hoffman + + * Tests/CMakeLists.txt: ENH: turn this off until it passes on all + systems + +2008-06-16 20:05 hoffman + + * Tests/FindModulesExecuteAll/CMakeLists.txt: ENH: add a project + name + +2008-06-16 20:05 hoffman + + * Tests/FindModulesExecuteAll/CMakeLists.txt: file CMakeLists.txt + was added on branch CMake-2-6 on 2008-06-25 13:51:58 +0000 + +2008-06-16 18:37 alex + + * Modules/FindOpenSSL.cmake: BUG: don't fail with FATAL_ERROR if + REQUIRED was not used + + Alex + +2008-06-16 15:19 hoffman + + * Modules/FindFLTK.cmake, Modules/FindKDE3.cmake, + Modules/FindMatlab.cmake, + Tests/FindModulesExecuteAll/CMakeLists.txt: ENH: fix find module + stuff for test + +2008-06-16 14:15 miguelf + + * Modules/FindwxWidgets.cmake: BUG: Fix so that MinGW use + win32_find_style (6478). Also, consolidated search styles + selection into a single variable, so that they are mutually + exclusive. + +2008-06-16 14:03 hoffman + + * Tests/FindModulesExecuteAll/main.c: file main.c was added on + branch CMake-2-6 on 2008-06-25 13:52:00 +0000 + +2008-06-16 14:03 alex + + * Tests/: CMakeLists.txt, FindModulesExecuteAll/CMakeLists.txt, + FindModulesExecuteAll/main.c: ENH: add test which executes all + FindXXX.cmake modules + + Alex + +2008-06-15 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-14 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-13 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-13 16:57 clinton + + * Source/QtDialog/QCMakeCacheView.cxx: + ENH: remove red blending. It didn't look good on some systems. + +2008-06-13 16:33 miguelf + + * Modules/FindwxWidgets.cmake: BUG: Fixed incorrectly matched + FOREACH (7008). + +2008-06-13 15:29 clinton + + * Source/QtDialog/QCMakeCacheView.cxx: + ENH: instead of solid red for new entries, blend it with the + alternating white/gray (depending on style). + +2008-06-13 11:19 clinton + + * Source/QtDialog/: CMakeSetupDialog.cxx, CMakeSetupDialog.h, + QCMakeCacheView.cxx, QCMakeCacheView.h: + ENH: Make original flat view the default. Add option to + switch to grouped view (and remember it). + +2008-06-13 10:15 hoffman + + * Source/cmVersion.cxx: ENH: remove beta stuff from version + +2008-06-13 08:55 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Modules/CMakeFindBinUtils.cmake, Modules/CPack.RuntimeScript.in, + Modules/FindCurses.cmake, Modules/FindFreetype.cmake, + Modules/FindGDAL.cmake, Modules/FindGIF.cmake, + Modules/FindKDE3.cmake, Modules/FindKDE4.cmake, + Modules/FindLua50.cmake, Modules/FindLua51.cmake, + Modules/FindOpenAL.cmake, Modules/FindOpenThreads.cmake, + Modules/FindPhysFS.cmake, Modules/FindProducer.cmake, + Modules/FindQt3.cmake, Modules/FindQt4.cmake, + Modules/FindQuickTime.cmake, Modules/FindSDL.cmake, + Modules/FindSDL_image.cmake, Modules/FindSDL_mixer.cmake, + Modules/FindSDL_net.cmake, Modules/FindSDL_sound.cmake, + Modules/FindSDL_ttf.cmake, Modules/FindTCL.cmake, + Modules/FindTclsh.cmake, Modules/FindWish.cmake, + Modules/FindXMLRPC.cmake, Modules/Findosg.cmake, + Modules/FindosgDB.cmake, Modules/FindosgFX.cmake, + Modules/FindosgGA.cmake, Modules/FindosgIntrospection.cmake, + Modules/FindosgManipulator.cmake, Modules/FindosgParticle.cmake, + Modules/FindosgProducer.cmake, Modules/FindosgShadow.cmake, + Modules/FindosgSim.cmake, Modules/FindosgTerrain.cmake, + Modules/FindosgText.cmake, Modules/FindosgUtil.cmake, + Modules/FindosgViewer.cmake, + Source/cmAddCustomCommandCommand.cxx, + Source/cmAddCustomCommandCommand.h, Source/cmCustomCommand.cxx, + Source/cmCustomCommand.h, Source/cmFindBase.cxx, + Source/cmFindBase.h, Source/cmFindCommon.cxx, + Source/cmFindCommon.h, Source/cmFindLibraryCommand.cxx, + Source/cmFindLibraryCommand.h, Source/cmFindPackageCommand.cxx, + Source/cmFindPackageCommand.h, Source/cmFindPathCommand.cxx, + Source/cmFindPathCommand.h, Source/cmFindProgramCommand.cxx, + Source/cmGlobalGenerator.cxx, Source/cmGlobalGenerator.h, + Source/cmGlobalUnixMakefileGenerator3.cxx, + Source/cmGlobalUnixMakefileGenerator3.h, + Source/cmGlobalXCodeGenerator.cxx, Source/cmMakefile.cxx, + Source/cmMakefileTargetGenerator.cxx, Source/cmake.cxx, + Source/CTest/cmCTestTestHandler.cxx, + Source/kwsys/DynamicLoader.cxx, + Source/kwsys/SystemInformation.cxx, Source/kwsys/Terminal.c, + Tests/CMakeTests/FindBaseTest.cmake.in, + Tests/CMakeTests/A/include/cmake_i_do_not_exist_in_the_system.h, + Tests/CustomCommand/CMakeLists.txt, Tests/CustomCommand/foo.in, + Tests/CustomCommand/gen_once.c.in, + Tests/CustomCommand/wrapper.cxx, + Tests/FindPackageTest/CMakeLists.txt, + Tests/FindPackageTest/A/wibble-config.cmake, + Tests/FindPackageTest/B/wibble-config.cmake: ENH: merge in + changes from head + +2008-06-12 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-11 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-11 15:08 clinton + + * Source/QtDialog/QCMakeCacheView.cxx: ENH: better name for + ungrouped entries. + +2008-06-11 14:47 clinton + + * Source/QtDialog/QCMakeCacheView.cxx: + BUG: need to invalidate filtering when using Qt 4.3+. + +2008-06-10 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-10 22:19 clinton + + * Source/QtDialog/CMakeSetupDialog.cxx: + ENH: Add items under the Options menu for collapsing and + expanding the variable tree. + +2008-06-10 20:17 clinton + + * Source/QtDialog/QCMakeCacheView.cxx: ENH: Give a label for the + group of properties that didn't get put into another group. + +2008-06-10 18:53 clinton + + * Source/QtDialog/QCMakeCacheView.cxx: + ENH: group together items with no prefix and items that won't be + grouped with others. + +2008-06-10 18:28 alex + + * Source/cmGlobalGenerator.cxx: BUG: -fail with error if the + CMakeInformation.cmake file wasn't found ENH: -if no + compiler has been found, don't test it, and also remove the + compiler information file again. This makes optionally enabling a + language work better. + + Alex + +2008-06-10 13:22 king + + * Source/cmFindBase.cxx: BUG: In find_* commands support NO_* + options in short-hand + + - The short-hand forms do not document the NO_* options. + - CMake 2.4 and 2.6.0 accepted them accidentally, but also + treated the options as paths. + - Now the options are accepted but do not become paths. + +2008-06-10 00:17 clinton + + * Source/QtDialog/: CMakeSetupDialog.cxx, CMakeSetupDialog.ui, + QCMakeCacheView.cxx, QCMakeCacheView.h: + ENH: Use a tree view of the properties instead of a flat list + view. Properties are grouped by a prefix (up to first "_") + and can be expanded or collapsed. + + Fixes #6359. + +2008-06-09 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-09 16:04 king + + * Modules/: CMakeFindBinUtils.cmake, FindCurses.cmake, + FindFreetype.cmake, FindGDAL.cmake, FindGIF.cmake, + FindKDE3.cmake, FindKDE4.cmake, FindLua50.cmake, FindLua51.cmake, + FindOpenAL.cmake, FindOpenThreads.cmake, FindPhysFS.cmake, + FindProducer.cmake, FindQt3.cmake, FindQuickTime.cmake, + FindSDL.cmake, FindSDL_image.cmake, FindSDL_mixer.cmake, + FindSDL_net.cmake, FindSDL_sound.cmake, FindSDL_ttf.cmake, + FindTCL.cmake, FindTclsh.cmake, FindWish.cmake, FindXMLRPC.cmake, + Findosg.cmake, FindosgDB.cmake, FindosgFX.cmake, FindosgGA.cmake, + FindosgIntrospection.cmake, FindosgManipulator.cmake, + FindosgParticle.cmake, FindosgProducer.cmake, + FindosgShadow.cmake, FindosgSim.cmake, FindosgTerrain.cmake, + FindosgText.cmake, FindosgUtil.cmake, FindosgViewer.cmake: ENH: + Cleanup Find* modules with new HINTS feature + + - The find_* commands now provide a HINTS option. + - The option specifies paths to be preferred over the system + paths. + - Many Find* modules were using two find calls with + NO_DEFAULT_PATH + to approximate the behavior, but that blocked users from + overriding + things with CMAKE_PREFIX_PATH. + - This commit uses the HINTS feature to get desired behavior in + only one find command call. + +2008-06-09 15:50 alex + + * Modules/CPack.RuntimeScript.in: STYLE: apply patch from Thomas + Klausner (NetBSD): use "=" for testing strings for equality + instead of "==" + + This also matches what the man page for test says "s1 = s2 + True if the strings s1 and s2 are identical." + + Alex + +2008-06-09 15:22 king + + * Source/: cmFindBase.cxx, cmFindPackageCommand.cxx: ENH: Make + find_* command search order more intuitive. + + - The CMAKE_PREFIX_PATH and similar variables have both + environment and CMake cache versions. + - Previously the environment value was checked before the + cache value. + - Now the cache value is favored because it is more specific. + +2008-06-09 15:09 hoffman + + * Tests/FindPackageTest/: A/wibble-config.cmake, + B/wibble-config.cmake: file wibble-config.cmake was added on + branch CMake-2-6 on 2008-06-13 12:55:19 +0000 + +2008-06-09 15:09 hoffman + + * Tests/CMakeTests/A/include/cmake_i_do_not_exist_in_the_system.h: + file cmake_i_do_not_exist_in_the_system.h was added on branch + CMake-2-6 on 2008-06-13 12:55:18 +0000 + +2008-06-09 15:09 king + + * Tests/: + CMakeTests/A/include/cmake_i_do_not_exist_in_the_system.h, + CMakeTests/FindBaseTest.cmake.in, FindPackageTest/CMakeLists.txt, + FindPackageTest/A/wibble-config.cmake, + FindPackageTest/B/wibble-config.cmake: ENH: Add test for new + find_* command HINTS option. + +2008-06-09 15:08 king + + * Source/: cmFindBase.cxx, cmFindBase.h, cmFindCommon.cxx, + cmFindCommon.h, cmFindPackageCommand.cxx, cmFindPackageCommand.h: + ENH: Add HINTS option to find_* commands. + + - Hints are searched after user locations but before system + locations + - The HINTS option should have paths provided by system + introspection + - The PATHS option should have paths that are hard-coded + guesses + +2008-06-09 12:51 king + + * Source/cmFindPathCommand.cxx: ENH: Improve framework search speed + for find_file and find_path + + - Locating a header inside a framework often requires globbing + - Previously the glob was /*/Headers/ + - Now the glob is /*.framework/Headers/ + - This is much faster when is not really a framework dir + +2008-06-09 11:58 king + + * Source/: cmFindBase.cxx, cmFindBase.h, cmFindLibraryCommand.cxx, + cmFindLibraryCommand.h, cmFindPathCommand.cxx, + cmFindPathCommand.h, cmFindProgramCommand.cxx: ENH: Refactor + find_* command framework/appbundle search order impl. + + - CMAKE_FIND_FRAMEWORK and CMAKE_FIND_APPBUNDLE are supposed to + specify + whether to find frameworks/appbundles FIRST, LAST, ONLY, or + NEVER. + - Previously this affected only the placement of + CMAKE_FRAMEWORK_PATH + and CMAKE_APPBUNDLE_PATH with respect to the other path + specifiers. + - Now it behaves as documented. The entire search path is + inspected for + each kind of program, library, or header before trying the + next kind. + - Additionally the ONLY mode is now honored for headers so that + users + do not end up with a library in framework and a header from + elsewhere. + +2008-06-09 11:57 king + + * Source/: cmFindBase.cxx, cmFindCommon.cxx, cmFindCommon.h, + cmFindLibraryCommand.cxx, cmFindPackageCommand.cxx, + cmFindPathCommand.cxx: ENH: In find_* implementation centralize + addition of trailing slashes + + - Create cmFindCommon::AddTrailingSlashes + - Use it in cmFindBase and cmFindPackageCommand + - Remove duplication from other find commands + +2008-06-08 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-08 11:41 king + + * Source/cmake.cxx: ENH: Whenever CMake re-runs from inside the VS + IDE inform the user why. + +2008-06-08 11:41 king + + * Tests/CMakeTests/FindBaseTest.cmake.in: BUG: Fix CMake.FindBase + test to normalize paths before comparing. + + - Previously the find_* commands did not normalize the search + paths + - The recent refactoring enabled such normalization + - The FindBase test must also normalize before comparing paths + +2008-06-08 11:41 king + + * Source/cmFindBase.cxx: BUG: Fix find_* command calls with no + PATHS but new-style options. + + - In cmFindBase when CheckCommonArgument returns true, set + newStyle + - Otherwise if there are no PATHS then the ancient-style + compatibility + mode is enabled and the common argument is treated as a path. + +2008-06-07 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-06 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-06 11:52 king + + * Source/kwsys/Terminal.c: ENH: Recognize more color terminals. + + - Patch from Matthew McCormick, slightly tweaked + - See issue #6833 + +2008-06-06 11:49 hoffman + + * Source/cmGlobalXCodeGenerator.cxx: ENH: fix for flags that have + sub-string matches + +2008-06-06 10:22 martink + + * Source/cmGlobalUnixMakefileGenerator3.cxx: ENH: fix for bug 6364, + extra help targets when there are subdirectories of the top level + +2008-06-06 09:06 king + + * Source/cmFindBase.cxx: BUG: Fix cmFindBase::AddMacPath to + actually use its arguments after previous refactoring commit. + +2008-06-06 01:36 clinton + + * Modules/FindQt4.cmake: + BUG: Fix for #7118. Relative paths going outside the + current source dir resulted in badly placed moc source + files in the build dir (or out of the build dir). + +2008-06-05 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-05 18:20 king + + * Source/: cmFindBase.cxx, cmFindBase.h, cmFindCommon.cxx, + cmFindCommon.h, cmFindPackageCommand.cxx, cmFindPackageCommand.h: + ENH: Refactor cmFindCommon, cmFindBase, and cmFindPackageCommand + + - Add each part of the search order in a separate method. + - Collect added paths in an ivar in cmFindCommon. + - Move user path storage up to cmFindCommon and share + between cmFindBase and cmFindPackageCommand. + - Expand user path registry values up in cmFindCommon + - Enables 32-/64-bit registry view for find_package + - Disables registry expansion for paths not specified + with the PATHS argument, which is not expected. + +2008-06-05 10:01 king + + * Tests/CustomCommand/wrapper.cxx: BUG: Fix new custom command with + make-var expansion test on VS6. The VS6 IDE adds some extra + characters to the variable value during expansion. + +2008-06-05 09:54 king + + * Source/cmFindBase.cxx: BUG: Fix 64-bit build of CMake so it can + find 32-bit VS install. + + - cmFindBase should search both 32-bit and 64-bit registry + views + for FIND_PROGRAM even if CMAKE_SIZEOF_VOID_P is not set. + - Needed because the variable is not available when + CMAKE_MAKE_PROGRAM + is to be found. + +2008-06-04 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-04 12:10 king + + * Tests/CustomCommand/: CMakeLists.txt, wrapper.cxx: ENH: Add test + for make variable replacement in a custom command with the + VERBATIM option. + +2008-06-04 12:10 king + + * Source/cmMakefile.cxx: ENH: Allow custom commands with VERBATIM + option to have $(SomeVar) make variable replacement. + +2008-06-03 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-03 10:29 clinton + + * Modules/FindQt4.cmake: + ENH: Some Linux distros don't install xorg-devel, png-devel, + etc... when qt4-devel is installed. Finding them was + required to support building against static Qt. Changing + it so they are ignored if not found. + +2008-06-03 10:02 king + + * Source/cmGlobalGenerator.cxx: COMP: Fix bootstrap build after + previous change to signature of AddRuleHash. + +2008-06-03 09:55 king + + * Source/: cmGlobalGenerator.cxx, cmGlobalGenerator.h, + cmMakefileTargetGenerator.cxx: BUG: Include less content as input + to "rule hash" computation. + + - The rule hash should use only commands specified by the user. + - No make output (echo and progress) rules should be included. + - No outputs or dependencies need be included. The native + build tool + will take care of them. + +2008-06-02 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-02 19:44 clinton + + * Source/kwsys/DynamicLoader.cxx: + BUG: FormatMessage can return a NULL message. Add check for + NULL pointer. + +2008-06-02 16:45 king + + * Source/cmAddCustomCommandCommand.cxx, + Source/cmAddCustomCommandCommand.h, Source/cmCustomCommand.cxx, + Source/cmCustomCommand.h, Tests/CustomCommand/CMakeLists.txt, + Tests/CustomCommand/foo.in, Tests/CustomCommand/gen_once.c.in: + ENH: Remove SKIP_RULE_DEPENDS option from add_custom_command() + + - Option was recently added but never released. + - Custom commands no longer depend on build.make so we do + not need the option. + - Rule hashes now take care of rebuilding when rules change + so the dependency is not needed. + +2008-06-02 16:44 king + + * Source/: cmGlobalGenerator.cxx, cmGlobalGenerator.h, + cmMakefileTargetGenerator.cxx: ENH: Introduce "rule hashes" to + help rebuild files when rules change. + + - In CMake 2.4 custom commands would not rebuild when rules + changed. + - In CMake 2.6.0 custom commands have a dependency on + build.make + which causes them to rebuild when changed, but also when any + source is added or removed. This is too often. + - We cannot have a per-rule file because Windows filesystems + do not deal well with lots of small files. + - Instead we add a persistent CMakeFiles/CMakeRuleHashes.txt + file + at the top of the build tree that is updated during each + CMake Generate step. It records a hash of the build rule for + each file to be built. When the hash changes the file is + removed so that it will be rebuilt. + +2008-06-02 14:53 ewing + + * Modules/FindLua51.cmake: BUG: fixed Lua50 to be Lua51 in + FIND_PACKAGE_HANDLE_STANDARD_ARGS call. + +2008-06-02 09:39 martink + + * Source/cmMakefile.cxx: COMP: fix warning + +2008-06-01 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-06-01 23:40 hoffman + + * Source/kwsys/SystemInformation.cxx: ENH: fix crash on dash17 + linux where the parsing of the proc file must not have worked + right + +2008-06-01 16:11 hoffman + + * Source/kwsys/SystemInformation.cxx: ENH: fix crash on cygwin + +2008-06-01 14:40 fbertel + + * Source/kwsys/SystemInformation.cxx: BUG:cpuinfo format are + different between Linux and Cygwin. Cygwin does not have physical + id tag or cpu cores tag. + +2008-06-01 11:23 hoffman + + * Source/kwsys/SystemInformation.cxx: ENH: avoid divide by zero, + temporary fix until cygwin cpu file is read better, bad cpu info + is better than a crash + +2008-05-31 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-31 11:23 fbertel + + * Source/kwsys/SystemInformation.cxx: BUG:Fixed NumberOfLogicalCPU, + NumberOfPhysicalCPU and LogicalProcessorsPerPhysical under Linux. + Some part was just wrong. Some other part missed to take the + multicore value into account. + +2008-05-31 08:15 martink + + * Source/cmMakefile.cxx: ENH: make end of file checking for close + if, foreach, macro, functions etc enabled. Not sure why it was + disabled to start with, but I suspect I will find out. In reponse + to Bill email about a ctest -S script with a function that waqs + not closed. Closure was only checked for regular listfiles not + other files. + +2008-05-30 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-30 09:14 martink + + * Source/CTest/cmCTestTestHandler.cxx: ENH: make tes test finding + logic also try full paths as relative paths because some folks + have been doing that and 2.4 handled it + +2008-05-29 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-29 11:50 martink + + * Source/: cmGlobalUnixMakefileGenerator3.cxx, + cmGlobalUnixMakefileGenerator3.h: BUG: improve progress reporting + when there are multiple targets with the same name, bug# 7042 + +2008-05-29 09:15 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/FindQt4.cmake, + Source/cmFileCommand.cxx, Source/cmFindBase.cxx, + Source/cmGlobalGenerator.cxx, Source/cmGlobalGenerator.h, + Source/cmInstallTargetGenerator.cxx, Source/cmSourceFile.cxx, + Source/cmSystemTools.cxx, Source/cmSystemTools.h, + Source/kwsys/SystemTools.cxx, Source/kwsys/SystemTools.hxx.in: + ENH: merge in changes from head for RC 3 + +2008-05-28 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-27 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-27 16:50 king + + * Source/cmFindBase.cxx: BUG: Fix previous registry lookup change + for executables. + + - The target platform does not matter for finding executables + so find_program should expand to both 32-bit and 64-bit + registry + values. + - See issue #7095. + +2008-05-27 14:47 king + + * Source/cmFindBase.cxx: BUG: Fix registry lookups for FIND + commands to use view of target platform. + + - See issue #7095. + +2008-05-27 14:46 king + + * Source/: cmSystemTools.cxx, cmSystemTools.h, + kwsys/SystemTools.cxx, kwsys/SystemTools.hxx.in: ENH: Added WOW64 + key view support to KWSys SystemTools' windows registry API. + + - Add an argument to registry read/write/delete methods to + specify + a 32-bit or 64-bit view. + - Default is the bit-ness of the running program. + - See issue #7095. + +2008-05-27 13:10 king + + * Source/cmSourceFile.cxx: ENH: Catch missing source files + specified by full path earlier. + + - Revert previous change to trust user-provided full paths. + - Instead trust them only far enough to determine the source + language + but still check for existence for non-generated sources. + +2008-05-27 11:18 king + + * Source/: cmGlobalGenerator.cxx, cmGlobalGenerator.h: BUG: Fix + crash on repeated configure steps and exported targets. + + - In cmGlobalGenerator the ExportSets ivar must be cleared at + the beginning of each Configure. + - See issue #7101. + +2008-05-27 10:22 king + + * Source/: cmFileCommand.cxx, cmSystemTools.cxx, cmSystemTools.h: + ENH: Inform user when RPATH is set during installation. + + - Original patch from Alex. + - Modified to print only when RPATH is actually set. + +2008-05-27 10:21 king + + * Source/cmInstallTargetGenerator.cxx: BUG: RPATH adjustment of + versioned executables should operate on the file and not the + symlink. + +2008-05-26 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-26 11:17 clinton + + * Modules/FindQt4.cmake: + ENH: Find debug libs from static Qt on Windows. + +2008-05-25 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-24 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-23 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-23 16:09 hoffman + + * CMakeCPack.cmake, CMakeLists.txt, ChangeLog.manual, + Modules/CMakeDetermineASMCompiler.cmake, + Modules/CMakeDetermineCCompiler.cmake, + Modules/CMakeDetermineCXXCompiler.cmake, + Modules/CMakeFortranCompilerId.F90.in, + Modules/CMakeImportBuildSettings.cmake, Modules/FindQt4.cmake, + Modules/FindSubversion.cmake, Modules/MacOSXBundleInfo.plist.in, + Modules/UseQt4.cmake, Modules/Platform/Linux-PGI-Fortran.cmake, + Source/cmFileCommand.cxx, Source/cmFindBase.cxx, + Source/cmListCommand.cxx, Source/cmLocalGenerator.cxx, + Source/cmLocalVisualStudio6Generator.cxx, + Source/cmLocalVisualStudio7Generator.cxx, + Source/cmMakefileTargetGenerator.cxx, Source/cmSourceGroup.cxx, + Source/cmSourceGroup.h, Source/cmTarget.cxx, + Source/CTest/cmCTestTestHandler.cxx, + Source/QtDialog/AddCacheEntry.cxx, + Source/QtDialog/AddCacheEntry.h, + Source/QtDialog/AddCacheEntry.ui, + Source/QtDialog/CMakeFirstConfigure.cxx, + Source/QtDialog/CMakeFirstConfigure.h, + Source/QtDialog/CMakeFirstConfigure.ui, + Source/QtDialog/CMakeLists.txt, + Source/QtDialog/CMakeSetupDialog.cxx, + Source/QtDialog/CMakeSetupDialog.h, Source/QtDialog/QCMake.cxx, + Source/QtDialog/QCMake.h, Source/QtDialog/QCMakeCacheView.cxx, + Source/QtDialog/QCMakeCacheView.h, + Source/QtDialog/QCMakeWidgets.cxx, + Source/QtDialog/QCMakeWidgets.h, + Source/kwsys/RegularExpression.cxx, + Source/kwsys/RegularExpression.hxx.in: ENH: push in changes from + head + +2008-05-23 15:52 hoffman + + * Source/cmFindBase.cxx: ENH: better fix for not adding / + +2008-05-23 15:25 hoffman + + * Modules/FindQt4.cmake: ENH: use PATHS keyword + +2008-05-23 15:25 hoffman + + * Source/cmFindBase.cxx: BUG: 7011 findqt hangs because of glob + with find_path and framework header serach + +2008-05-23 11:47 hoffman + + * CMakeCPack.cmake: ENH: do not put system name into cygwin package + +2008-05-23 11:28 hoffman + + * Source/CTest/cmCTestTestHandler.cxx: BUG: fix for bug 7077 handle + DartMeasurement tags with tyep text/html + +2008-05-22 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-21 23:59 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-21 19:57 king + + * Source/cmMakefileTargetGenerator.cxx: BUG: Fix makefile generator + to have link rules depend on all full path libraries that appear + on the link line. This allows projects to relink when imported + targets have changed. + +2008-05-21 14:02 king + + * Modules/CMakeImportBuildSettings.cmake: ENH: Extend previous + patch from Mathieu Malaterre to apply override to the build tool + also. + +2008-05-21 13:36 clinton + + * Modules/FindQt4.cmake: + ENH: Make Qt not found if the QtCore library can't be found. + Also report an error when trying to use MSVC with Qt built by + mingw. + +2008-05-21 10:50 hoffman + + * Source/cmVersion.cxx: ENH: fix version to not report beta for 1 + +2008-05-21 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-20 12:35 hoffman + + * CMakeCPack.cmake: ENH: make sure Cygwin-Unknown is not the name + for the package + +2008-05-20 12:15 hoffman + + * Source/cmListCommand.cxx: BUG: fix failing test + +2008-05-20 11:30 hoffman + + * Source/cmListCommand.cxx: BUG: fix bugs in new style list command + that handles empty stuff + +2008-05-20 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-19 18:07 clinton + + * Modules/UseQt4.cmake: + ENH: Similar to how qmake does it... Don't add compile + flags for dependent modules the user didn't specify. But + still add the link libs. This reduces the number of + unecessary compile flags. + +2008-05-19 10:03 king + + * Modules/FindSubversion.cmake: BUG: Fixes for FindSubversion + + - Split log out from Subversion_WC_INFO into Subversion_WC_LOG + - Fix report of log info to be in + _WC_LAST_CHANGED_LOG + as documented (instead of Subversion_LAST_CHANGED_LOG) + - Fix setting of LC_ALL environment variable to be inside macro + - Patch from Tanguy Krotoff + - See issue #7047 + +2008-05-19 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-18 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-17 17:35 hoffman + + * Modules/Platform/Linux-PGI-Fortran.cmake: file + Linux-PGI-Fortran.cmake was added on branch CMake-2-6 on + 2008-05-23 20:09:35 +0000 + +2008-05-17 17:35 king + + * Modules/Platform/Linux-PGI-Fortran.cmake: ENH: Add basic flags + for Portland Group fortran compiler. + +2008-05-17 12:53 hoffman + + * Modules/MacOSXBundleInfo.plist.in: file MacOSXBundleInfo.plist.in + was added on branch CMake-2-6 on 2008-05-23 20:09:35 +0000 + +2008-05-17 12:53 king + + * Modules/MacOSXBundleInfo.plist.in, Source/cmLocalGenerator.cxx, + Source/cmTarget.cxx: ENH: Allow users to specify a custom + Info.plist template + + - Create MACOSX_BUNDLE_INFO_PLIST target property to specify + template. + - Look for MacOSXBundleInfo.plist.in in CMAKE_MODULE_PATH by + default. + - See issue #6983. + +2008-05-17 11:42 king + + * Source/cmFileCommand.cxx: BUG: Fix previous change to + file(STRINGS) command. + + - Previous change added form-feed as a string terminator. + - Instead it should just be recognized as a valid string + character. + +2008-05-17 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-16 17:56 king + + * Modules/Platform/Linux-PGI-Fortran.cmake: ENH: Add + Linux-PGI-Fortran platform file to support the Portland Group + Fortran compiler (PGI). + +2008-05-16 17:50 king + + * Modules/CMakeFortranCompilerId.F90.in, Source/cmFileCommand.cxx: + ENH: Teach Fortran compiler identification about the Portland + Group compiler (PGI). + +2008-05-16 16:56 king + + * Source/: cmLocalVisualStudio6Generator.cxx, + cmLocalVisualStudio7Generator.cxx, cmSourceGroup.cxx, + cmSourceGroup.h: COMP: Fix build with concept checking of STL. + + - Fix cmSourceGroup to not use std::vector with an incomplete + type. + +2008-05-16 11:06 king + + * Source/kwsys/: RegularExpression.cxx, RegularExpression.hxx.in: + ENH: Add assignment operator to KWSys RegularExpression. + +2008-05-16 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-15 19:21 hoffman + + * Source/QtDialog/CMakeFirstConfigure.cxx: file + CMakeFirstConfigure.cxx was added on branch CMake-2-6 on + 2008-05-23 20:09:42 +0000 + +2008-05-15 19:21 hoffman + + * Source/QtDialog/CMakeFirstConfigure.h: file CMakeFirstConfigure.h + was added on branch CMake-2-6 on 2008-05-23 20:09:43 +0000 + +2008-05-15 19:21 hoffman + + * Source/QtDialog/CMakeFirstConfigure.ui: file + CMakeFirstConfigure.ui was added on branch CMake-2-6 on + 2008-05-23 20:09:43 +0000 + +2008-05-15 19:21 hoffman + + * Source/QtDialog/QCMakeWidgets.cxx: file QCMakeWidgets.cxx was + added on branch CMake-2-6 on 2008-05-23 20:09:44 +0000 + +2008-05-15 19:21 hoffman + + * Source/QtDialog/QCMakeWidgets.h: file QCMakeWidgets.h was added + on branch CMake-2-6 on 2008-05-23 20:09:44 +0000 + +2008-05-15 19:21 clinton + + * Source/QtDialog/: AddCacheEntry.cxx, AddCacheEntry.h, + AddCacheEntry.ui, CMakeFirstConfigure.cxx, CMakeFirstConfigure.h, + CMakeFirstConfigure.ui, CMakeLists.txt, CMakeSetupDialog.cxx, + CMakeSetupDialog.h, QCMake.cxx, QCMake.h, QCMakeCacheView.cxx, + QCMakeCacheView.h, QCMakeWidgets.cxx, QCMakeWidgets.h: + ENH: Add cross compiling support in the GUI in the same dialog + that prompts for the generator on the first configure. It + either ask for a toolchain file or asks for all the + information a toolchain file might contain. + + Also added option for setting non-default compilers if not + cross compiling. + Fixes #6849. + + Also a bit of code cleanup and re-organizing. + +2008-05-15 15:39 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Modules/CMakeTestFortranCompiler.cmake, Modules/FindBoost.cmake, + Modules/FindCurses.cmake, + Modules/FindPackageHandleStandardArgs.cmake, + Modules/FindQt4.cmake, Modules/NSIS.template.in, + Source/cmAddCustomCommandCommand.cxx, + Source/cmAddCustomCommandCommand.h, Source/cmCustomCommand.cxx, + Source/cmCustomCommand.h, Source/cmDepends.cxx, + Source/cmDepends.h, Source/cmDependsC.cxx, Source/cmDependsC.h, + Source/cmDependsFortran.cxx, Source/cmDependsFortran.h, + Source/cmDocumentationFormatterDocbook.cxx, Source/cmELF.cxx, + Source/cmGlobalGenerator.cxx, Source/cmGlobalGenerator.h, + Source/cmGlobalUnixMakefileGenerator3.cxx, + Source/cmListCommand.cxx, + Source/cmLocalUnixMakefileGenerator3.cxx, Source/cmMakefile.cxx, + Source/cmMakefileTargetGenerator.cxx, + Source/cmSetSourceFilesPropertiesCommand.cxx, + Source/cmTarget.cxx, Source/cmTarget.h, Source/cmXCodeObject.cxx, + Source/cmake.cxx, Source/cmakemain.cxx, + Source/CTest/cmCTestBuildCommand.h, + Source/CTest/cmCTestConfigureCommand.h, + Source/CTest/cmCTestCoverageCommand.h, + Source/CTest/cmCTestCoverageHandler.cxx, + Source/CTest/cmCTestEmptyBinaryDirectoryCommand.h, + Source/CTest/cmCTestMemCheckCommand.h, + Source/CTest/cmCTestReadCustomFilesCommand.h, + Source/CTest/cmCTestRunScriptCommand.h, + Source/CTest/cmCTestSleepCommand.h, + Source/CTest/cmCTestStartCommand.h, + Source/CTest/cmCTestSubmitCommand.h, + Source/CTest/cmCTestUpdateCommand.h, Source/kwsys/CMakeLists.txt, + Source/kwsys/CPU.h.in, Source/kwsys/ProcessUNIX.c, + Source/kwsys/ProcessWin32.c, Source/kwsys/SystemInformation.cxx, + Source/kwsys/SystemTools.cxx, Tests/BuildDepends/CMakeLists.txt, + Tests/BuildDepends/Project/CMakeLists.txt, + Tests/BuildDepends/Project/zot.cxx, + Tests/BuildDepends/Project/zot_macro_dir.cxx, + Tests/BuildDepends/Project/zot_macro_tgt.cxx, + Tests/CustomCommand/CMakeLists.txt, Tests/CustomCommand/foo.in, + Tests/CustomCommand/gen_once.c.in, Utilities/CMakeLists.txt, + Utilities/cmtar/CMakeLists.txt: ENH: merge in from main tree + +2008-05-15 12:07 alex + + * Modules/: CMakeDetermineASMCompiler.cmake, + CMakeDetermineCCompiler.cmake, CMakeDetermineCXXCompiler.cmake: + BUG: make the toolchain-prefix recognition work with prefixes + which contain dots (as in arm-unknown-nto-qnx6.3.0-gcc.exe), + NAME_WE returns only up to the 6, instead of everything in front + of the .exe + + Alex + +2008-05-15 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-14 11:55 king + + * Source/kwsys/CMakeLists.txt: ENH: In KWSys set the + IMPLICIT_DEPENDS_INCLUDE_TRANSFORM property. + + - Tells CMake about the KWSYS_HEADER macro. + - Enables implicit dependencies of private source files. + - When a CMake new enough to support the property is required + the "#if 0" hack can be removed from the source files. + +2008-05-14 11:55 hoffman + + * Tests/BuildDepends/Project/zot_macro_dir.cxx: file + zot_macro_dir.cxx was added on branch CMake-2-6 on 2008-05-15 + 19:40:01 +0000 + +2008-05-14 11:55 hoffman + + * Tests/BuildDepends/Project/zot_macro_tgt.cxx: file + zot_macro_tgt.cxx was added on branch CMake-2-6 on 2008-05-15 + 19:40:01 +0000 + +2008-05-14 11:55 king + + * Tests/BuildDepends/: CMakeLists.txt, Project/CMakeLists.txt, + Project/zot.cxx, Project/zot_macro_dir.cxx, + Project/zot_macro_tgt.cxx: ENH: Update BuildDepends test to check + #include lines with macros. + + - Tests IMPLICIT_DEPENDS_INCLUDE_TRANSFORM properties. + - See issue #6648. + - Works without help in VS IDEs due to native dependency + handling. + - Xcode needs help to rebuild correctly. + +2008-05-14 11:54 king + + * Source/: cmLocalUnixMakefileGenerator3.cxx, cmMakefile.cxx, + cmTarget.cxx: ENH: Allow users to specify macro-like #include + line transforms for dependency scanning. + + - Define IMPLICIT_DEPENDS_INCLUDE_TRANSFORM property on targets + and directories. + - Make the directory version inherited. + - See issue #6648. + +2008-05-14 11:54 king + + * Source/: cmDependsC.cxx, cmDependsC.h: ENH: Teach cmDependsC + about user-configured macro transformations. + + - Syntax is SOME_MACRO(%)=value-with-% + - Later we will configure these with target and directory + properties. + - See issue #6648. + +2008-05-14 11:38 hoffman + + * Tests/CustomCommand/gen_once.c.in: file gen_once.c.in was added + on branch CMake-2-6 on 2008-05-15 19:40:01 +0000 + +2008-05-14 11:38 king + + * Source/cmAddCustomCommandCommand.cxx, + Source/cmAddCustomCommandCommand.h, Source/cmCustomCommand.cxx, + Source/cmCustomCommand.h, Source/cmMakefileTargetGenerator.cxx, + Tests/CustomCommand/CMakeLists.txt, Tests/CustomCommand/foo.in, + Tests/CustomCommand/gen_once.c.in: ENH: Add SKIP_RULE_DEPENDS + option for add_custom_command() + + - Allows make rules to be created with no dependencies. + - Such rules will not re-run even if the commands themselves + change. + - Useful to create rules that run only if the output is + missing. + +2008-05-14 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-13 16:57 hoffman + + * Modules/NSIS.template.in: BUG: if CPACK_NSIS_MODIFY_PATH was OFF + then the PATH was automatically modified + +2008-05-13 15:43 alex + + * Source/cmakemain.cxx, Utilities/CMakeLists.txt: STYLE: add + "--help-policy" and "--help-policies" to the documentation + -generate and install the policy documentation files -generate + and install the docbook files for cmake, ctest, cpack, ccmake + (cmake-gui not yet ?) + + Alex + +2008-05-13 10:34 king + + * Source/cmELF.cxx: BUG: When byte order is not known at compile + time make sure NeedSwap in cmELF is still initialized. + +2008-05-13 10:24 king + + * Source/cmELF.cxx: ENH: In cmELF it is okay if the byte order is + not known at compile time. + + - We perform a runtime check of the input file anyway. + +2008-05-13 10:24 king + + * Source/kwsys/CPU.h.in: ENH: Add ARM support to KWSys CPU header. + + - Patch from Pierre Habouzit + +2008-05-13 05:18 malaterre + + * Source/kwsys/ProcessUNIX.c: ENH: all ctype function have the same + issue: char can be signed or unsigned, since isspace only deal + with >=0 value (except EOF) one has to first cast it to unsigned + char + +2008-05-13 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-12 18:33 alex + + * Source/cmGlobalUnixMakefileGenerator3.cxx: BUG: make + ENABLE_LANGUAGE(ASM-ATT OPTIONAL) work again: if it didn't work + but was optional, don't delete the cache + + Alex + +2008-05-12 18:11 alex + + * Modules/CMakeTestFortranCompiler.cmake: STYLE: use IF(NOT ...) + instead of IF() ELSE() ... ENDIF() + + Alex + +2008-05-12 17:43 king + + * Source/: cmGlobalGenerator.cxx, cmGlobalGenerator.h, + cmTarget.cxx, cmTarget.h: BUG: Make sure all source files are + found before generating. + + - Previously this was done implicitly by the check for a target + link language which checked all source full paths. + - The recent change to support computing a link language + without + finding all the source files skipped the implicit check. + - This change adds an explicit check to find all source files. + +2008-05-12 16:54 alex + + * Source/cmake.cxx: BUG: make "cmake -Wno-dev ../srcdir" work, + advancing i had the effect that the argument after -Wno-dev was + skipped, which happened to be the source directory, and so the + current working directory was assumed as source directory, + although it was the build directory (maybe this didn't have an + effect if there was already a CMakeCache.txt in the build dir) + + Alex + +2008-05-12 12:01 lorensen + + * Source/kwsys/ProcessUNIX.c: COMP: warning, isprint and isspace + take int args. + +2008-05-12 09:11 alex + + * Source/CTest/: cmCTestBuildCommand.h, cmCTestConfigureCommand.h, + cmCTestCoverageCommand.h, cmCTestEmptyBinaryDirectoryCommand.h, + cmCTestMemCheckCommand.h, cmCTestReadCustomFilesCommand.h, + cmCTestRunScriptCommand.h, cmCTestSleepCommand.h, + cmCTestStartCommand.h, cmCTestSubmitCommand.h, + cmCTestUpdateCommand.h: STYLE: use lower case also for the + ctest-specific commands, as in cmake + + I hope I didn't make a typo anywhere, at least the tests still + succeed + + Alex + +2008-05-12 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-11 05:12 alex + + * Modules/FindPackageHandleStandardArgs.cmake: BUG: fix #6375: + print the variables which were not found, so it's easier to see + what went wrong + + Alex + +2008-05-11 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-10 22:48 lorensen + + * Source/kwsys/: ProcessWin32.c, SystemInformation.cxx, + SystemTools.cxx: COMP: sprintf warnings. DWORD should use %ld + rather than %d. Also, const char *p, a shadowed variable warning. + +2008-05-10 19:07 alex + + * Modules/FindCurses.cmake: BUG: fix #6993 FindCurses.cmake is now + almost exactly reverted back to the state when CURSES_LIBRARY and + CURSES_INCLUDE_PATH where set for compatibility but not in the + cache. It is important that CURSES_CURSES_LIBRARY and + CURSES_NCURSES_LIBRARY really contain the path to these files. + Later on CURSES_LIBRARY is set to the one of the two which will + be used as curses library. This is now done in the cache, without + FORCE. So preloading the cache still seems to work (at least + what I tested). + + Alex + +2008-05-10 18:39 king + + * Source/: cmLocalUnixMakefileGenerator3.cxx, + cmMakefileTargetGenerator.cxx: BUG: Fix generation of some paths + into .cmake files in the build tree to escape strings for the + CMake language. This fix allows users to put double quotes in + the SOVERSION of a shared library. + +2008-05-10 18:39 king + + * Source/cmLocalUnixMakefileGenerator3.cxx: BUG: Fix logic that + loops over multiple output pairs to not loop beyond the vector + when there are an odd number of entries. + +2008-05-10 11:12 hoffman + + * Source/CTest/cmCTestCoverageHandler.cxx: ENH: make sure english + is used for output of gcov + +2008-05-10 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-09 21:26 dgregor + + * Modules/FindBoost.cmake: BUG: Fix FindBoost version variable + names to correct bug in Boost version detection + +2008-05-09 17:50 alex + + * Source/cmDocumentationFormatterDocbook.cxx: STYLE: insert + newlines after listitem so the generated lines don't get several + thousand characters long + + Alex + +2008-05-09 11:50 clinton + + * Modules/FindQt4.cmake: + ENH: Qt/Mac binary install puts QtCLucene library in a different + place than the normal Qt frameworks. Let's find it. + +2008-05-09 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-08 21:14 hoffman + + * Source/cmXCodeObject.cxx: ENH: fix for 64 bit cmake on mac + +2008-05-08 15:49 hoffman + + * Source/cmSetSourceFilesPropertiesCommand.cxx: BUG:6990 fix crash + with set_source_files_properties + +2008-05-08 12:47 hoffman + + * Source/CTest/cmCTestCoverageHandler.cxx: BUG: 0006988 do not set + coverage to false when it is not + +2008-05-08 10:09 king + + * Source/: cmDepends.cxx, cmDepends.h, cmDependsC.cxx, + cmDependsC.h, cmDependsFortran.cxx, cmDependsFortran.h, + cmLocalUnixMakefileGenerator3.cxx: ENH: Light refactoring of + implicit dependency scanning configuration implementation. + + - Move lookup of config variables from + cmLocalUnixMakefileGenerator3 to cmDepends hierarchy. + +2008-05-08 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-07 17:25 king + + * Source/cmLocalUnixMakefileGenerator3.cxx: BUG: Fix repeated + re-scanning of dependencies when the results do not change. + + - We re-scan deps when DependInfo.cmake is newer than + depend.internal + - Therefore depend.internal should not be copy-if-different + +2008-05-07 14:57 hoffman + + * Source/cmListCommand.cxx: ENH: fix sort to work with CMP0007 + +2008-05-07 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-06 12:56 barre + + * Utilities/cmtar/CMakeLists.txt: ENH: update for CMake 2.6 + +2008-05-06 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-05 13:38 hoffman + + * ChangeLog.manual, Source/cmDocumentationFormatter.cxx, + Source/cmDocumentationFormatter.h, + Source/cmDocumentationFormatterDocbook.cxx, + Source/cmDocumentationFormatterHTML.cxx: ENH: merge in changes + for generated docs + +2008-05-05 12:38 hoffman + + * CMakeLists.txt: ENH: try for 2.6.0 + +2008-05-05 12:02 king + + * Source/: cmDocumentationFormatter.cxx, + cmDocumentationFormatter.h, cmDocumentationFormatterDocbook.cxx, + cmDocumentationFormatterHTML.cxx: ENH: Fix generated + documentation internal links. + + - Previously all links started in 'command_' which led to + conflicts + and was confusing for non-command items. + - Use a per-section name that is meaningful to humans. + - Fix link id names to be valid HTML. + +2008-05-05 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-04 18:07 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/CTest.cmake, + Modules/FindQt4.cmake, Modules/FindX11.cmake, + Modules/GetPrerequisites.cmake, + Source/kwsys/SystemInformation.cxx: ENH: merge from main tree + +2008-05-04 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-03 17:55 clinton + + * Modules/FindQt4.cmake: + ENH: Allow finding phonon and QtDBus on Mac. Fixes #6950. + +2008-05-03 15:27 barre + + * Modules/FindX11.cmake: ENH: X11_SM_LIB should be advanced as well + +2008-05-03 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-02 17:36 hoffman + + * Source/kwsys/SystemInformation.cxx: BUG: really fix build on vs6 + +2008-05-02 17:22 hoffman + + * Source/kwsys/SystemInformation.cxx: BUG: fix build on vs6 + +2008-05-02 11:44 hoffman + + * Source/kwsys/SystemInformation.cxx: ENH: use GlobalMemoryStatusEx + as it is able to report more than 2gigs + +2008-05-02 11:25 hoffman + + * Modules/CTest.cmake: ENH: recognize vs 9 and possible 10 or + greater when they come out... + +2008-05-02 09:14 king + + * Source/kwsys/SystemInformation.cxx: COMP: Fix warnings in KWSys + SystemInformation on Borland compiler. + + - Remove two unused variables. + - Replace dynamically allocated array with static. + +2008-05-02 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-05-01 18:49 king + + * Modules/GetPrerequisites.cmake: ENH: When GetPrerequisites.cmake + runs dumpbin while running inside the VS IDE environment make + sure the tool does not produce extra output. + +2008-05-01 12:35 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/CheckTypeSize.cmake, + Modules/FindBoost.cmake, Modules/FindCurses.cmake, + Modules/FindKDE.cmake, Modules/FindSDL.cmake, + Modules/FindSDL_sound.cmake, Modules/FindVTK.cmake, + Modules/Platform/Darwin.cmake, + Modules/Platform/Linux-Intel-C.cmake, + Modules/Platform/Linux-Intel-CXX.cmake, + Modules/Platform/Linux-Intel-Fortran.cmake, + Modules/Platform/SunOS.cmake, + Modules/Platform/Windows-ifort.cmake, + Source/cmAuxSourceDirectoryCommand.cxx, + Source/cmComputeLinkDepends.cxx, Source/cmComputeLinkDepends.h, + Source/cmComputeLinkInformation.cxx, + Source/cmComputeLinkInformation.h, + Source/cmExportFileGenerator.cxx, + Source/cmExportLibraryDependencies.cxx, Source/cmFileCommand.cxx, + Source/cmFileCommand.h, Source/cmGlobalGenerator.cxx, + Source/cmGlobalVisualStudio71Generator.cxx, + Source/cmGlobalVisualStudio7Generator.cxx, + Source/cmGlobalVisualStudioGenerator.cxx, + Source/cmGlobalVisualStudioGenerator.h, + Source/cmGlobalXCodeGenerator.cxx, Source/cmListFileCache.cxx, + Source/cmLocalGenerator.cxx, + Source/cmLocalUnixMakefileGenerator3.cxx, + Source/cmLocalVisualStudio7Generator.cxx, + Source/cmLocalVisualStudio7Generator.h, Source/cmMakefile.cxx, + Source/cmMakefile.h, Source/cmSourceFile.cxx, + Source/cmSourceFile.h, Source/cmWriteFileCommand.cxx, + Source/cmake.cxx, Source/cmake.h, Source/kwsys/System.c, + Source/kwsys/SystemInformation.cxx, + Tests/CustomCommand/CMakeLists.txt, + Tests/CustomCommand/gen_redirect_in.c, + Tests/CustomCommand/generator.cxx, Tests/CustomCommand/tcat.cxx, + Tests/CustomCommand/GeneratorInExtraDir/CMakeLists.txt: ENH: + merge from cvs create yikes RC 10! (I hope this is the last + RC...) + +2008-05-01 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-30 22:17 hoffman + + * Source/cmGlobalVisualStudioGenerator.cxx: STYLE: fix warning + +2008-04-30 18:04 king + + * Source/: cmComputeLinkDepends.cxx, cmComputeLinkDepends.h, + cmComputeLinkInformation.cxx, cmComputeLinkInformation.h: ENH: + When preserving potentially static portions of original user link + lines recognize shared library names by their extension and skip + them. + +2008-04-30 15:58 king + + * Source/cmLocalUnixMakefileGenerator3.cxx: BUG: For Watcom WMake + use the short path to avoid quoting problems in custom commands + with shell redirections. + +2008-04-30 15:58 king + + * Source/kwsys/System.c, Tests/CustomCommand/CMakeLists.txt: BUG: + Fix escaping of more characters on Windows shells. + +2008-04-30 15:53 hoffman + + * Modules/FindCurses.cmake: BUG: remove typo + +2008-04-30 15:42 hoffman + + * Modules/FindCurses.cmake: BUG: fix for 6918 ncurses should work + without curses + +2008-04-30 14:13 king + + * Modules/Platform/SunOS.cmake: ENH: Make /opt/SUNWspro/lib, + /opt/SUNWspro/prod/lib, and /usr/ccs/lib implicit link + directories on the Sun when using the SunPro compiler. + +2008-04-30 13:42 king + + * Source/: cmFileCommand.cxx, cmFileCommand.h, + cmGlobalGenerator.cxx, cmMakefile.cxx, cmMakefile.h, + cmWriteFileCommand.cxx, cmake.cxx, cmake.h: BUG: Remove check for + files written by file(WRITE) being loaded. + + - CMake 1.8 and below did not do the check but could get in + infinite loops due to the local generate step. + - CMake 2.0 added the check but failed to perform it in + directories + with no targets (see bug #678). + - CMake 2.2 removed the local generate which fixed the problem + but + did not remove the check. + - Between CMake 2.4 and 2.6.0rc6 the check was fixed to work + even + when no targets appear in a directory (see bug #6923). + - Bottom line: the check is no longer needed. + +2008-04-30 13:26 hoffman + + * Source/: cmGlobalVisualStudio71Generator.cxx, + cmGlobalVisualStudio7Generator.cxx, + cmGlobalVisualStudioGenerator.cxx, + cmGlobalVisualStudioGenerator.h, cmLocalGenerator.cxx, + cmLocalVisualStudio7Generator.cxx, + cmLocalVisualStudio7Generator.h, cmMakefile.cxx: ENH: add support + for Intel Fortran Visual studio IDE + +2008-04-30 11:33 hoffman + + * Modules/Platform/Windows-ifort.cmake: ENH: add more fortran flags + +2008-04-30 10:02 king + + * Source/kwsys/System.c: BUG: Fix + kwsysSystem_Shell_GetArgumentForWindows to reset the windows + trailing backslash count to zero when a make variable reference + is encountered. + +2008-04-30 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-29 15:34 hoffman + + * Tests/CustomCommand/tcat.cxx: file tcat.cxx was added on branch + CMake-2-6 on 2008-05-01 16:35:40 +0000 + +2008-04-29 15:34 hoffman + + * Tests/CustomCommand/gen_redirect_in.c: file gen_redirect_in.c was + added on branch CMake-2-6 on 2008-05-01 16:35:40 +0000 + +2008-04-29 15:34 king + + * Source/cmLocalGenerator.cxx, Tests/CustomCommand/CMakeLists.txt, + Tests/CustomCommand/gen_redirect_in.c, + Tests/CustomCommand/generator.cxx, Tests/CustomCommand/tcat.cxx, + Tests/CustomCommand/GeneratorInExtraDir/CMakeLists.txt: BUG: Do + not escape shell operators when generating command lines. + + - See bug#6868. + - Update CustomCommand test to check. + +2008-04-29 14:17 king + + * Source/: cmSourceFile.cxx, cmSourceFile.h: ENH: In + cmSourceFile::GetLanguage use the file extension (if not + ambiguous) to determine the language without requiring the source + file to exist. + +2008-04-29 14:17 king + + * Source/cmSourceFile.cxx: ENH: Add context information when a + source file cannot be found. + +2008-04-29 14:17 king + + * Source/cmMakefile.cxx: ENH: In cmMakefile::IssueMessage report + the directory-level context even if no list file is currently + being processed. + +2008-04-29 12:10 hoffman + + * Source/cmLocalGenerator.cxx: BUG: move this back out of the if + statemtn + +2008-04-29 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-28 13:53 hoffman + + * Modules/Platform/Darwin.cmake, Source/cmGlobalXCodeGenerator.cxx, + Source/cmLocalGenerator.cxx: ENH: allow users to set sysroot + +2008-04-28 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-27 11:41 alex + + * Modules/FindKDE.cmake: ENH: remove FindKDE.cmake, which was + obsolete (i.e. disabled using SEND_ERROR) since cmake 2.4.0, + agreed by Bill + + Alex + +2008-04-27 07:35 alex + + * Modules/FindVTK.cmake: BUG: don't fail with FATAL_ERROR if + REQUIRED was not used + + Alex + +2008-04-27 07:30 alex + + * Source/cmExportFileGenerator.cxx: ENH: protect the export files + against inclusion with cmake 2.4 + + Alex + +2008-04-27 07:01 alex + + * Source/: cmExportLibraryDependencies.cxx, cmListFileCache.cxx: + ENH: write the cmake version into the file created by + EXPORT_LIBRARY_DEPENDENCIES() to help with debugging later on. + The same should be done in the import target files (but I didn't + have time to do it yet). STYLE: fix line length in + cmListFileCache.cxx + + Alex + +2008-04-27 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-26 13:25 alex + + * Modules/FindBoost.cmake: BUG: don't use CMAKE_MINIMUM_REQUIRED() + in find modules, it can change the policy settings done in the + projects cmake files (and it doesn't make sense since it is + always part of the correct cmake version) + + Alex + +2008-04-26 08:39 hoffman + + * Source/cmAuxSourceDirectoryCommand.cxx: BUG: fix for bug 6911, + aux source dir was broken from a previous fix + +2008-04-26 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-25 15:30 king + + * Source/cmSourceFile.cxx: BUG: Trust user-provided source file + full paths. + +2008-04-25 10:47 hoffman + + * Modules/CheckTypeSize.cmake: ENH: allow users to turn off extra + checks + +2008-04-25 09:49 hoffman + + * Modules/Platform/Linux-Intel-CXX.cmake: ENH: remove c flags from + cxx config file + +2008-04-25 09:49 hoffman + + * Modules/Platform/Linux-Intel-CXX.cmake: file + Linux-Intel-CXX.cmake was added on branch CMake-2-6 on 2008-05-01 + 16:35:39 +0000 + +2008-04-25 09:43 hoffman + + * Modules/Platform/: Linux-Intel-Fortran.cmake, Linux-ifort.cmake: + ENH: rename Linux-ifort to Linux-Intel-Fortran + +2008-04-25 09:43 hoffman + + * Modules/Platform/Linux-Intel-Fortran.cmake: file + Linux-Intel-Fortran.cmake was added on branch CMake-2-6 on + 2008-05-01 16:35:39 +0000 + +2008-04-25 09:09 hoffman + + * Modules/CheckTypeSize.cmake: ENH: make sure all required headers + are checked before checking type size + +2008-04-25 09:07 hoffman + + * Modules/: FindSDL.cmake, FindSDL_sound.cmake: ENH: do not clear + find variables + +2008-04-25 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-24 22:00 hoffman + + * Modules/Platform/Linux-Intel-CXX.cmake: ENH: do not force the + intel ar on C from CXX + +2008-04-24 21:54 hoffman + + * Modules/Platform/: Linux-Intel-C.cmake, Linux-Intel-CXX.cmake, + Linux-icpc.cmake: ENH: support intel compiler on linux + +2008-04-24 21:54 hoffman + + * Modules/Platform/Linux-Intel-C.cmake: file Linux-Intel-C.cmake + was added on branch CMake-2-6 on 2008-05-01 16:35:38 +0000 + +2008-04-24 15:47 hoffman + + * Source/kwsys/SystemInformation.cxx: ENH: remove odd chars from + file + +2008-04-24 14:57 hoffman + + * Source/kwsys/SystemTools.cxx: ENH: merge in changes from main + tree, fortran mod stuff + +2008-04-24 12:56 hoffman + + * ChangeLog.manual, Source/cmDependsFortranLexer.cxx, + Source/cmDependsFortranLexer.in.l, + Source/cmDependsFortranParser.cxx, + Source/cmDependsFortranParser.y, + Source/cmDependsFortranParserTokens.h: ENH: merge in changes from + main tree, fortran mod stuff + +2008-04-24 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-23 23:53 king + + * Source/: cmDependsFortranLexer.cxx, cmDependsFortranLexer.in.l, + cmDependsFortranParser.cxx, cmDependsFortranParser.y, + cmDependsFortranParserTokens.h: ENH: Patch from Maik to add + Fortran03 USE syntax support. + + - I tweaked the patch to add 'other' production rules for COMMA + and DCOLON + - See issue #6884. + +2008-04-23 15:02 hoffman + + * CMakeLists.txt, ChangeLog.manual: ENH: rc9 ready + +2008-04-23 12:51 jeff + + * Source/kwsys/SystemTools.cxx: ENH: Allow numbers in username in + URL regex. + +2008-04-23 12:14 hoffman + + * CMakeLists.txt, ChangeLog.manual, Source/cmInstallCommand.cxx, + Source/cmListCommand.cxx, Source/QtDialog/QMacInstallDialog.cxx: + ENH: merge in some fixes from head + +2008-04-23 11:13 king + + * Source/cmInstallCommand.cxx: BUG: Fix implementation of CMP0006 + to not override the BUNDLE destination with the RUNTIME + destination. + +2008-04-23 09:58 hoffman + + * Source/QtDialog/QMacInstallDialog.cxx: ENH: add better error + checks to symlink create stuff + +2008-04-23 09:56 hoffman + + * Source/cmListCommand.cxx: ENH: handle empty lists correctly + +2008-04-23 08:50 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Source/cmComputeLinkDepends.cxx, Source/cmComputeLinkDepends.h, + Tests/Dependency/CMakeLists.txt, + Tests/Dependency/Case3/CMakeLists.txt, + Tests/Dependency/Case3/bar.c, Tests/Dependency/Case3/foo1.c, + Tests/Dependency/Case3/foo1b.c, Tests/Dependency/Case3/foo2.c: + ENH: merge from main tree + +2008-04-23 00:40 hoffman + + * Tests/Dependency/Case3/CMakeLists.txt: file CMakeLists.txt was + added on branch CMake-2-6 on 2008-04-23 12:50:37 +0000 + +2008-04-23 00:40 hoffman + + * Tests/Dependency/Case3/bar.c: file bar.c was added on branch + CMake-2-6 on 2008-04-23 12:50:37 +0000 + +2008-04-23 00:40 hoffman + + * Tests/Dependency/Case3/foo1.c: file foo1.c was added on branch + CMake-2-6 on 2008-04-23 12:50:37 +0000 + +2008-04-23 00:40 hoffman + + * Tests/Dependency/Case3/foo1b.c: file foo1b.c was added on branch + CMake-2-6 on 2008-04-23 12:50:37 +0000 + +2008-04-23 00:40 hoffman + + * Tests/Dependency/Case3/foo2.c: file foo2.c was added on branch + CMake-2-6 on 2008-04-23 12:50:37 +0000 + +2008-04-23 00:40 king + + * Tests/Dependency/: CMakeLists.txt, Case3/CMakeLists.txt, + Case3/bar.c, Case3/foo1.c, Case3/foo1b.c, Case3/foo2.c: ENH: Add + test of preservation of static libraries on original link lines. + +2008-04-23 00:40 king + + * Source/: cmComputeLinkDepends.cxx, cmComputeLinkDepends.h: BUG: + Fix preservation of static libraries on original link lines. + +2008-04-23 00:40 king + + * Source/cmComputeLinkDepends.cxx: ENH: Simplify link lines in some + cases by not allowing targets to be inferred dependees of items + with unknown dependencies. + +2008-04-23 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-22 22:05 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Modules/CMakeDetermineASMCompiler.cmake, + Modules/CMakeFortranInformation.cmake, + Modules/CMakeRCInformation.cmake, Modules/FindBoost.cmake, + Modules/FindMPI.cmake, Modules/Platform/Linux-icpc.cmake, + Source/cmListCommand.cxx, + Source/cmLocalVisualStudio6Generator.cxx, + Source/cmMakefileTargetGenerator.cxx, Source/cmPolicies.cxx, + Source/cmPolicies.h: ENH: merge into main tree + +2008-04-22 13:32 dgregor + + * Modules/FindBoost.cmake: ENH: FindBoost always sets + Boost_LIBRARY_DIRS when it finds the Boost libraries + +2008-04-22 13:14 dgregor + + * Modules/FindBoost.cmake: ENH: Integrated FindBoost improvements + changes from Andreas Pakulat, Mike Jackson, and myself + +2008-04-22 11:10 hoffman + + * Modules/CMakeRCInformation.cmake, + Source/cmMakefileTargetGenerator.cxx: BUG: fix for bug 6834 RC + should not get all COMPILE_FLAGS from a target and should work + the same way as it does in the vs ide + +2008-04-22 09:54 dgregor + + * Modules/FindMPI.cmake: BUG: As a last resort, FindMPI will look + for mpi.h in the path + +2008-04-22 09:41 dgregor + + * Modules/FindMPI.cmake: BUG: Use -showme:incdirs and + -showme:libdirs when we need them + +2008-04-22 09:35 hoffman + + * Modules/CMakeFortranInformation.cmake: ENH: fix FFFLAGS to be + FLAGS + +2008-04-22 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-21 18:51 alex + + * Modules/CMakeDetermineASMCompiler.cmake: BUG: fix handling of + assembler executable (with path) #6858 + + Alex + +2008-04-21 18:26 hoffman + + * Modules/Platform/Linux-icpc.cmake: ENH: use xiar for the intel + compiler + +2008-04-21 18:24 hoffman + + * Source/cmLocalVisualStudio6Generator.cxx: BUG: fix for 6720, + source groups on vs6 not working + +2008-04-21 16:57 hoffman + + * Source/: cmListCommand.cxx, cmPolicies.cxx, cmPolicies.h: ENH: + fix list command with empty elements + +2008-04-21 15:21 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Modules/CMakeCInformation.cmake, + Modules/CMakeCXXInformation.cmake, + Modules/CMakeFortranInformation.cmake, + Source/cmComputeLinkInformation.cxx, Source/cmDependsFortran.cxx, + Source/cmDependsFortranLexer.cxx, Source/cmDependsFortranLexer.h, + Source/cmDependsFortranLexer.in.l, + Source/cmDependsFortranParser.cxx, + Source/cmDependsFortranParser.y, Tests/CMakeLists.txt: ENH: merge + in from main tree + +2008-04-21 13:04 hoffman + + * Modules/: CMakeCInformation.cmake, CMakeCXXInformation.cmake, + CMakeFortranInformation.cmake: ENH: fix init flags getting + stuffed into the compile line by force. + +2008-04-21 11:28 king + + * Source/: cmDependsFortranLexer.cxx, cmDependsFortranLexer.in.l, + cmDependsFortranParser.cxx, cmDependsFortranParser.y: STYLE: Fix + reference to makedepf90 project. + +2008-04-21 11:15 king + + * Source/: cmDependsFortran.cxx, cmDependsFortranLexer.cxx, + cmDependsFortranLexer.h, cmDependsFortranLexer.in.l: BUG: Fix + Fortran dependency parser preprocessor handling crash. + + - Do not crash if a #elseif occurs out of order + - Recognize preprocessor directives only at the beginning of + lines. + - See issue #6855 + +2008-04-21 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-20 20:44 hoffman + + * CMakeLists.txt, ChangeLog.manual, + Modules/CMakeDetermineCompilerABI.cmake, + Modules/CPack.RuntimeScript.in, Modules/CPack.cmake, + Modules/FindMPI.cmake, Modules/FindwxWidgets.cmake, + Source/cmELF.cxx, Source/cmELF.h, Source/cmFileCommand.cxx, + Source/cmFileCommand.h, Source/cmInstallCommand.cxx, + Source/cmInstallCommand.h, Source/cmInstallTargetGenerator.cxx, + Source/cmInstallTargetGenerator.h, + Source/cmLocalVisualStudio7Generator.cxx, + Source/cmMakefileLibraryTargetGenerator.cxx, + Source/cmMakefileTargetGenerator.cxx, + Source/cmMessageCommand.cxx, Source/cmPolicies.cxx, + Source/cmPolicies.h, Source/cmSystemTools.cxx, + Source/cmSystemTools.h, Source/cmTarget.cxx, + Source/CPack/cpack.cxx, Source/QtDialog/CMakeSetupDialog.cxx, + Source/QtDialog/CMakeSetupDialog.h, + Tests/Framework/CMakeLists.txt, + Tests/Tutorial/Step7/CMakeLists.txt, Tests/X11/CMakeLists.txt, + Tests/X11/HelloWorldX11.cxx: ENH: merge in from main tree + +2008-04-20 00:00 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-19 13:37 david.cole + + * Tests/CMakeLists.txt: BUG: Allow timeouts larger than 1500 for + tests that may take longer than 25 minutes on really slow/busy + machines. bootstrap has been timing out on tiamat, a very old + machine, this should help it... + +2008-04-19 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-18 17:32 hoffman + + * Source/cmComputeLinkInformation.cxx: ENH: only complain about -l + stuff for CMP0003 + +2008-04-18 10:55 david.cole + + * Source/CPack/cpack.cxx: COMP: auto_ptr will not compile without + including memory on some platforms + +2008-04-18 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-17 17:23 alex + + * Modules/CPack.cmake, Tests/Tutorial/Step7/CMakeLists.txt: ENH: + use a common CPACK_BINARY_ prefix for the binary package + generators + + Alex + +2008-04-17 12:06 david.cole + + * Source/CPack/cpack.cxx: BUG: Fix mem leak. Thanks, Mathieu. + +2008-04-17 11:16 david.cole + + * Source/cmLocalVisualStudio7Generator.cxx: BUG: Fix for issue + #6440. Use 0 instead of FALSE for ExceptionHandling with Visual + Studio 2005 and later. + +2008-04-17 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-16 11:31 david.cole + + * Modules/FindwxWidgets.cmake: BUG: There are compiler problems + with wxWidgets and INCLUDE_DIRECTORIES(SYSTEM ...) use on the + Mac. Set variable wxWidgets_INCLUDE_DIRS_NO_SYSTEM on the Mac in + FindwxWidgets.cmake to avoid these problems. + +2008-04-16 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-15 09:00 king + + * Source/cmELF.cxx: COMP: Fix signed/unsigned comparison warning in + cmELF. + +2008-04-15 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-14 18:03 king + + * Source/cmInstallCommand.h: ENH: Clarify documentation of + install(TARGETS) command to refer to install target types by the + upper-case keywords used when invoking the command. + +2008-04-14 17:53 king + + * Source/: cmInstallCommand.cxx, cmInstallCommand.h, + cmPolicies.cxx, cmPolicies.h: BUG: Fix compatibility with CMake + 2.4 for installation of MACOSX_BUNDLE targets + + - Add policy CMP0006 to decide whether to use compatibility + - OLD behavior is to fall back to RUNTIME rules + - NEW behavior is to produce an error + +2008-04-14 16:15 clinton + + * Source/QtDialog/: CMakeSetupDialog.cxx, CMakeSetupDialog.h: + BUG: Fix issue when non-error messages were incorrectly colored + red. + +2008-04-14 15:27 king + + * Source/cmTarget.cxx, Tests/Framework/CMakeLists.txt: BUG: A + per-config target name postfix should be ignored for Mac bundle + and framework names. + +2008-04-14 15:25 king + + * Modules/CMakeDetermineCompilerABI.cmake: ENH: Clarify message + about checking for compiler ABI information. + +2008-04-14 15:02 king + + * Source/: cmFileCommand.cxx, cmFileCommand.h, + cmInstallTargetGenerator.cxx, cmInstallTargetGenerator.h: ENH: + Improve RPATH behavior during installation. + + - If new RPATH is empty then remove the entry completely + - Preserve file modification time so installation is not + repeated + - If installed file already exists remove it if its RPATH + does not match that expected + +2008-04-14 15:02 king + + * Source/: cmSystemTools.cxx, cmSystemTools.h: ENH: Added RPATH + methods to cmSystemTools + + - RemoveRPath to remove the RPATH from a binary + - CheckRPath to check for an existing RPATH in a binary + +2008-04-14 15:02 king + + * Source/: cmELF.cxx, cmELF.h: ENH: Added cmELF methods to get + information about DYNAMIC section entries. + +2008-04-14 12:44 king + + * Source/cmSystemTools.cxx: COMP: Fix new cmSystemTools file time + methods on Windows. + +2008-04-14 11:43 king + + * Source/: cmSystemTools.cxx, cmSystemTools.h: ENH: Added methods + to cmSystemTools to save and restore file modification times. + +2008-04-14 09:20 king + + * Source/cmMessageCommand.cxx: ENH: Make message(SEND_ERROR) report + context. + +2008-04-14 09:08 king + + * Source/cmMakefileTargetGenerator.cxx: BUG: When + MACOSX_PACKAGE_LOCATION specifies Headers/foo we must still + create the Headers symlink. + +2008-04-14 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-13 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-12 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-11 13:13 hoffman + + * Source/: cmMakefileLibraryTargetGenerator.cxx, + cmMakefileTargetGenerator.cxx: BUG: make sure OBJECT_DIR is in + the path of the SHELL + +2008-04-11 10:41 hoffman + + * Modules/CPack.RuntimeScript.in: ENH: fix x11 launch script for + leopord x11 is auto-started for us on that os. + +2008-04-11 10:23 hoffman + + * Tests/X11/: CMakeLists.txt, HelloWorldX11.cxx: ENH: add a simple + x11 test for packaging + +2008-04-11 10:23 hoffman + + * Tests/X11/HelloWorldX11.cxx: file HelloWorldX11.cxx was added on + branch CMake-2-6 on 2008-04-21 00:44:59 +0000 + +2008-04-11 09:52 hoffman + + * Tests/X11/HelloWorldX11.cxx: ENH: add a simple x11 program + +2008-04-11 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-10 16:54 dgregor + + * Modules/FindMPI.cmake: ENH: Deal with 32-bit and 64-bit variants + of Microsoft's MPI properly + +2008-04-10 12:50 hoffman + + * ChangeLog.manual: ENH: change to RC 8 + +2008-04-10 12:43 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/FindQt4.cmake, + Source/cmLocalUnixMakefileGenerator3.cxx: ENH: merge in from main + tree + +2008-04-10 11:55 hoffman + + * Source/cmLocalUnixMakefileGenerator3.cxx: BUG: the sun make goes + into some odd n squared thing with this sccs and rcs stuff for + gmake, so I am removing them. + +2008-04-10 10:01 clinton + + * Modules/FindQt4.cmake: BUG: Fix typo reported in #6790. + +2008-04-10 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-09 14:57 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/FindJNI.cmake, + Source/cmSystemTools.cxx: ENH: merge from head for RC7 + +2008-04-09 08:41 hoffman + + * Tests/Framework/fooDeepPublic.h, + Modules/Platform/Darwin-icc.cmake, + Modules/Platform/Darwin-icpc.cmake: ENH: add missing file + +2008-04-09 00:01 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-08 17:37 hoffman + + * Source/cmSystemTools.cxx: BUG: undo change as it breaks + preprocess test for some reason?? + +2008-04-08 16:26 hoffman + + * Source/cmTarget.h: ENH: merge from main tree + +2008-04-08 16:13 hoffman + + * Source/cmTarget.h: ENH: remove qualifier from .h file + +2008-04-08 16:09 hoffman + + * Modules/FindJNI.cmake: ENH: have jni look more places on linux + +2008-04-08 16:06 hoffman + + * Source/cmSystemTools.cxx: BUG: half fix for 6688, expand registry + stuff on unix just like it was not found on windows + +2008-04-08 16:05 hoffman + + * Source/cmSystemTools.cxx: ENH: half fix for 6688, don't let [ + count go negative + +2008-04-08 13:42 king + + * Source/cmSystemTools.cxx: ENH: Update cmSystemTools::ChangeRPath + to support replacing rpath values from the middle of the string. + +2008-04-08 12:22 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/FindQt4.cmake, + Modules/InstallRequiredSystemLibraries.cmake, + Source/cmComputeLinkInformation.cxx, + Source/cmExtraEclipseCDT4Generator.cxx, Source/cmFileCommand.cxx, + Source/cmFindBase.cxx, Source/cmGlobalXCodeGenerator.cxx, + Source/cmInstallTargetGenerator.cxx, + Source/cmLocalVisualStudio7Generator.cxx, + Source/cmMakefileExecutableTargetGenerator.cxx, + Source/cmMakefileLibraryTargetGenerator.cxx, + Source/cmMakefileLibraryTargetGenerator.h, + Source/cmMakefileTargetGenerator.cxx, + Source/cmMakefileTargetGenerator.h, Source/cmSystemTools.cxx, + Source/cmTarget.cxx, Source/cmTarget.h, Source/cmake.cxx, + Source/cmake.h, Source/QtDialog/CMakeLists.txt, + Source/QtDialog/CMakeSetup.cxx, + Source/QtDialog/CMakeSetupDialog.cxx, + Source/QtDialog/CMakeSetupDialog.h, + Source/QtDialog/CMakeSetupDialog.ui, Source/QtDialog/QCMake.cxx, + Source/QtDialog/QCMake.h, Source/QtDialog/QCMakeCacheView.cxx, + Source/QtDialog/QCMakeCacheView.h, + Source/QtDialog/QMacInstallDialog.cxx, + Source/QtDialog/postflight.sh.in, Tests/Framework/CMakeLists.txt: + ENH: merge in changes from main tree + +2008-04-08 11:30 hoffman + + * Source/QtDialog/CMakeLists.txt: ENH: make sure cmake-gui builds + with cmake 2.4.X + +2008-04-08 00:06 hoffman + + * Tests/Framework/fooDeepPublic.h: file fooDeepPublic.h was added + on branch CMake-2-6 on 2008-04-09 12:41:34 +0000 + +2008-04-08 00:06 king + + * Source/cmComputeLinkInformation.cxx, + Source/cmGlobalXCodeGenerator.cxx, + Source/cmInstallTargetGenerator.cxx, + Source/cmLocalVisualStudio7Generator.cxx, + Source/cmMakefileLibraryTargetGenerator.cxx, + Source/cmMakefileLibraryTargetGenerator.h, + Source/cmMakefileTargetGenerator.cxx, + Source/cmMakefileTargetGenerator.h, Source/cmTarget.cxx, + Source/cmTarget.h, Tests/Framework/CMakeLists.txt, + Tests/Framework/fooDeepPublic.h: BUG: Correct Mac OS X framework + behavior + + - Place the built library in foo.framework/Versions/A/foo + - Do not create unused content symlinks (like PrivateHeaders) + - Do not use VERSION/SOVERSION properties for frameworks + - Make cmTarget::GetDirectory return by value + - Remove the foo.framework part from cmTarget::GetDirectory + - Correct install_name construction and conversion on install + - Fix MACOSX_PACKAGE_LOCATION under Xcode to use the + Versions/ directory for frameworks + - Update the Framework test to try these things + +2008-04-07 23:56 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-07 19:43 clinton + + * Modules/FindQt4.cmake: + BUG: Fix problem with last patch when trying to take substr of + shorter strings than expected. Fixes #6730. + +2008-04-07 19:19 clinton + + * Source/QtDialog/: CMakeSetupDialog.cxx, CMakeSetupDialog.h, + QCMake.cxx, QCMake.h: BUG: Fix #6733. Always convert "\" to "/" + in source & binary directory fields on Windows. + +2008-04-07 13:39 king + + * Source/: cmMakefileExecutableTargetGenerator.cxx, + cmMakefileLibraryTargetGenerator.cxx, cmTarget.cxx, cmTarget.h: + BUG: Do not create target output directory in cmTarget. Let the + generators do it. + +2008-04-07 11:23 clinton + + * Modules/FindQt4.cmake: BUG: Fix 6726. Create correct moc rule + for configured headers in binary dir. + +2008-04-07 10:55 king + + * Source/: cmFileCommand.cxx, cmSystemTools.cxx: ENH: Improve error + message when installation file(CHRPATH) cannot change the RPATH. + +2008-04-06 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-06 22:19 hoffman + + * Source/cmFindBase.cxx: BUG: fix network path by mistake in search + +2008-04-05 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-04 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-04 16:02 hoffman + + * CMakeLists.txt, Source/cmFileCommand.cxx, Source/cmake.cxx, + Source/QtDialog/CMakeLists.txt, Source/QtDialog/CMakeSetup.cxx, + Source/QtDialog/QMacInstallDialog.cxx, + Source/QtDialog/postflight.sh.in: ENH: install the mac + application bundle into /Applications directly with no enclosing + folder + +2008-04-03 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-03 18:43 alex + + * Source/cmExtraEclipseCDT4Generator.cxx: ENH: add edit_cache + target for Eclipse (if it's not ccmake, because this doesn't work + inside the log view) + + Alex + +2008-04-03 18:35 clinton + + * Source/QtDialog/: CMakeSetupDialog.cxx, CMakeSetupDialog.ui: ENH: + Fix exit shortcut to be more standard, and add shortcut for + advanced checkbox. + +2008-04-03 17:02 hoffman + + * Source/QtDialog/QMacInstallDialog.cxx: ENH: do not link . and .. + during install + +2008-04-03 16:49 clinton + + * Source/QtDialog/: CMakeSetupDialog.cxx, CMakeSetupDialog.ui: ENH: + Add more shortcuts. Fixes 6357. + +2008-04-03 16:18 hoffman + + * Source/QtDialog/: CMakeSetupDialog.cxx, CMakeSetupDialog.h, + QMacInstallDialog.cxx: ENH: add ability to create symlinks for + command line on mac from gui + +2008-04-03 12:29 hoffman + + * Modules/InstallRequiredSystemLibraries.cmake: ENH: add vs9 mfc + libraries + +2008-04-03 11:11 hoffman + + * Source/cmMakefileTargetGenerator.cxx: BUG: response file must be + a copy if different or you get relinks every time you run cmake + +2008-04-02 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-02 17:41 clinton + + * Source/QtDialog/: CMakeSetupDialog.cxx, CMakeSetupDialog.h, + QCMake.cxx, QCMake.h: + ENH: Add debug output option to a new Options menu. Move + dev warnings option to the new Options menu. Fixes #6335. + +2008-04-02 17:29 alex + + * Source/: cmake.cxx, cmake.h: ENH: make it possible to disable + debug output again + + Alex + +2008-04-02 15:28 clinton + + * Source/QtDialog/: QCMakeCacheView.cxx, QCMakeCacheView.h: + BUG: Keep editor alive when file dialog comes up to pick another + file or path. The editor going away prematurely Seems to + only happen on Mac OS X. + +2008-04-02 14:01 clinton + + * Source/QtDialog/: CMakeSetupDialog.cxx, CMakeSetupDialog.h: + ENH: Allow cancelling the dialog that prompts for the generator. + +2008-04-02 11:07 hoffman + + * ChangeLog.manual, Modules/FindQt4.cmake: ENH: merge in findqt + change from main tree + +2008-04-02 11:05 hoffman + + * Modules/FindQt4.cmake: BUG: make sure all paths extracted from + qmake are converted to cmake paths because on windows they will + have \ instead of / and you can get odd escaping errors + +2008-04-02 09:16 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/CPackDeb.cmake, + Modules/FindQt4.cmake, Source/cmGetPropertyCommand.cxx, + Source/cmGetPropertyCommand.h, + Source/cmGlobalVisualStudio8Generator.cxx, + Source/cmSetPropertyCommand.cxx, Source/cmSetPropertyCommand.h, + Source/cmSourceFile.cxx, Source/cmTarget.cxx, Source/cmTest.cxx, + Source/CPack/cmCPackDebGenerator.cxx, Source/kwsys/Process.h.in, + Source/kwsys/ProcessUNIX.c, Tests/Properties/CMakeLists.txt: ENH: + merge in main tree for RC 6 + +2008-04-02 08:36 malaterre + + * Source/kwsys/: Process.h.in, ProcessUNIX.c: STYLE: minor comments + +2008-04-01 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-04-01 17:59 alex + + * Modules/FindQt4.cmake: STYLE: add documentation for + QT4_CREATE_MOC and QT4_AUTOMOC (#6687) + + Alex + +2008-04-01 17:51 hoffman + + * Source/CPack/cmCPackDebGenerator.cxx, Modules/CPackDeb.cmake: + ENH: add CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA variable + +2008-04-01 17:39 hoffman + + * Source/cmGlobalVisualStudio8Generator.cxx: BUG: fix location of + tmp file to use the full path, caused error on vista not running + as admin + +2008-04-01 15:22 martink + + * Source/cmGetPropertyCommand.cxx: COMP: fix warning + +2008-04-01 14:22 martink + + * Source/cmGetPropertyCommand.cxx, Source/cmGetPropertyCommand.h, + Source/cmSetPropertyCommand.cxx, Source/cmSetPropertyCommand.h, + Source/cmSourceFile.cxx, Source/cmTarget.cxx, Source/cmTest.cxx, + Tests/Properties/CMakeLists.txt: ENH: support unset of properties + +2008-04-01 09:56 hoffman + + * Modules/CPackDeb.cmake: ENH: remove trailing space + +2008-03-31 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-03-31 17:57 hoffman + + * CMakeLists.txt, ChangeLog.manual, Modules/FindMPI.cmake, + Source/cmComputeLinkDepends.cxx, Source/cmComputeLinkDepends.h, + Source/cmComputeLinkInformation.cxx, + Source/cmExportFileGenerator.cxx, Source/cmListFileCache.cxx, + Source/cmLocalVisualStudio7Generator.cxx, Source/cmMakefile.cxx, + Source/cmMakefile.h, Source/cmPolicies.cxx: ENH: merge changes + from head to 26 branch + +2008-03-31 13:48 king + + * Source/cmExportFileGenerator.cxx: BUG: Generated target export + files should set the policy version to 2.6 instead of the + currently running version because they are 2.6 compatible. + +2008-03-31 13:33 king + + * Source/: cmListFileCache.cxx, cmMakefile.cxx, cmMakefile.h, + cmPolicies.cxx: ENH: Allow policy CMP0000 to be set explicitly + + - Message for missing cmake_minimum_required is not issued + until the end of processing the top CMakeLists.txt file + - During processing a cmake_policy command may set behavior + - OLD behavior is to silently ignore the problem + - NEW behavior is to issue an error instead of a warning + +2008-03-31 12:47 king + + * Source/: cmComputeLinkDepends.cxx, cmComputeLinkDepends.h, + cmComputeLinkInformation.cxx: BUG: Fix bug 6605 more completely + + - CMake 2.4 added link directories for targets linked + in the optimized configuration even when building debug + - Old behavior for policy CMP0003 must account for this + +2008-03-31 10:59 king + + * Source/cmLocalVisualStudio7Generator.cxx: ENH: Improve speed of + manifest tool on VS8 and VS9. + + - Detect filesystem type where target will be linked + - Use FAT32 workaround only when fs is FAT or FAT32 + +2008-03-31 10:55 dgregor + + * Modules/FindMPI.cmake: ENH: Enhance FindMPI module by properly + handling backward compatibility with the older module, adding + documentation, and coping with multiple include and linker paths + +2008-03-31 08:04 hoffman + + * Modules/Platform/Darwin-icpc.cmake: file Darwin-icpc.cmake was + added on branch CMake-2-6 on 2008-04-09 12:41:47 +0000 + +2008-03-31 08:04 hoffman + + * Modules/Platform/Darwin-icc.cmake: file Darwin-icc.cmake was + added on branch CMake-2-6 on 2008-04-09 12:41:46 +0000 + +2008-03-31 08:04 david.cole + + * Modules/Platform/: Darwin-icc.cmake, Darwin-icpc.cmake: ENH: Add + Intel compiler module files for the Mac. Thanks to Mike Jackson + for contributing. + +2008-03-30 23:57 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-03-30 09:08 hoffman + + * CMakeLists.txt, ChangeLog.manual, ChangeLog.txt, + Modules/CMakeImportBuildSettings.cmake, Modules/CPackDeb.cmake, + Modules/FindCurses.cmake, Modules/FindQt4.cmake, + Source/CMakeLists.txt, Source/cmGlobalKdevelopGenerator.cxx, + Source/cmGlobalKdevelopGenerator.h, Source/cmLocalGenerator.cxx, + Source/cmLocalVisualStudio7Generator.cxx, + Source/cmSystemTools.cxx, Source/cmTarget.cxx, Source/cmake.cxx, + Source/cmake.h, Source/CPack/cmCPackDebGenerator.cxx, + Source/QtDialog/CMakeSetupDialog.cxx, + Source/kwsys/SystemTools.cxx, Source/kwsys/SystemTools.hxx.in, + Tests/Fortran/test_use_in_comment_fixedform.f: ENH: merge from + main tree + +2008-03-29 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-03-29 13:16 hoffman + + * Source/cmake.h: ENH: make sure gui no-dev workis + +2008-03-28 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-03-28 20:23 alex + + * Source/CPack/cmCPackDebGenerator.cxx: BUG: fix packaging of files + installed to absolute paths, works only when used with + SET(CPACK_SET_DESTDIR "ON") + + Alex + +2008-03-28 19:09 alex + + * Modules/CPackDeb.cmake: STYLE: add a comma to make it better + understandable, also use STATUS as the other MESSAGE() calls do + + Alex + +2008-03-28 15:59 hoffman + + * Source/cmake.h: ENH: remove dangerous access to ivar that should + not be used + +2008-03-28 15:54 hoffman + + * Source/cmLocalGenerator.cxx: ENH: fix for the correct path to + cmake + +2008-03-28 14:29 hoffman + + * Source/: cmSystemTools.cxx, cmake.cxx: ENH: try to fix mac + symlinks to the executable + +2008-03-28 14:08 hoffman + + * Modules/CPackDeb.cmake: ENH: allow deb to work without dpkg + +2008-03-28 14:07 king + + * Modules/CMakeImportBuildSettings.cmake: ENH: Patch from Mathieu + Malaterre to add documentation for his previous patch for + CMakeImportBuildSettings. + +2008-03-28 14:04 king + + * Tests/Fortran/test_use_in_comment_fixedform.f: BUG: Fix Fortran + test to use more portable comment syntax in fixed format source. + +2008-03-28 13:26 king + + * Modules/CMakeImportBuildSettings.cmake: ENH: Patch from Mathieu + Malaterre to allow users to tell CMakeImportBuildSettings to not + force compiler settings. + +2008-03-28 13:22 king + + * Source/CMakeLists.txt: COMP: Add missing module for + CHECK_INCLUDE_FILE macro. + +2008-03-28 13:07 king + + * Source/cmTarget.cxx: ENH: Add note to Fortran_MODULE_DIRECTORY + property documentation about using CMAKE_Fortran_MODULE_DIRECTORY + to initialize it. + +2008-03-28 12:53 clinton + + * Source/QtDialog/CMakeSetupDialog.cxx: ENH: Better default size + for help dialog. + +2008-03-28 11:47 hoffman + + * Modules/: CPackDeb.cmake: ENH: remove hard codeded arch + +2008-03-28 10:12 hoffman + + * Modules/FindCurses.cmake: ENH: make this backwards compatible + with older FindCurses + +2008-03-28 10:08 hoffman + + * Modules/FindCurses.cmake: ENH: make this backwards compatible + with older FindCurses + +2008-03-27 23:58 king + + * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp + +2008-03-27 22:00 hoffman + + * Source/cmLocalVisualStudio7Generator.cxx: BUG: fix for 6619 + +2008-03-27 21:54 hoffman + + * Source/cmLocalVisualStudio7Generator.cxx: BUG: fix for bug 6660 + +2008-03-27 21:51 hoffman + + * Source/cmLocalVisualStudio7Generator.cxx: BUG: fix for bug 6661 + +2008-03-27 17:40 alex + + * Source/: cmGlobalKdevelopGenerator.cxx, + cmGlobalKdevelopGenerator.h: COMP: fix warning about unused mf + -"make VERBOSE=1 " should be more portable than + "VERBOSE=1 make ", since it doesn't rely on the shell, + shouldn't it ? + + Alex + +2008-03-27 17:05 hoffman + + * Source/: cmake.cxx, kwsys/SystemTools.cxx, + kwsys/SystemTools.hxx.in: BUG: fix install problem on make and + allow symlinks to cmake bin directory + +2008-03-27 15:33 alex + + * Source/cmGlobalKdevelopGenerator.cxx: ENH: -enable colored output + with the kdevelop generator -create non-verbose makefiles and + have kdevelop call "VERBOSE=1 make" instead + + Alex + +2008-03-27 15:18 clinton + + * Modules/FindQt4.cmake: + ENH: Add QT_VERSION_MAJOR, QT_VERSION_MINOR, QT_VERSION_PATCH + variables. + +2008-03-27 13:30 hoffman + + * ChangeLog.txt: ENH: remove DashboardScripts and CMakeWeb from the + change log + 2008-03-27 13:27 hoffman * ChangeLog.txt: ENH: check in new change log for 2.6 @@ -114,7 +18929,7 @@ Tests/Tutorial/Step4/CMakeLists.txt, Tests/Tutorial/Step5/CMakeLists.txt, Tests/Tutorial/Step6/CMakeLists.txt, - Tests/Tutorial/Step7/CMakeLists.txt, Tests/UseWX/CMakeLists.txt, + Tests/Tutorial/Step7/CMakeLists.txt, Tests/VSExternalInclude/CMakeLists.txt, Tests/Wrapping/CMakeLists.txt, Tests/X11/CMakeLists.txt: ENH: merge in from main tree @@ -167,9 +18982,8 @@ Tutorial/Step2/CMakeLists.txt, Tutorial/Step3/CMakeLists.txt, Tutorial/Step4/CMakeLists.txt, Tutorial/Step5/CMakeLists.txt, Tutorial/Step6/CMakeLists.txt, Tutorial/Step7/CMakeLists.txt, - UseWX/CMakeLists.txt, VSExternalInclude/CMakeLists.txt, - Wrapping/CMakeLists.txt, X11/CMakeLists.txt: ENH: preclean some - warnings + VSExternalInclude/CMakeLists.txt, Wrapping/CMakeLists.txt, + X11/CMakeLists.txt: ENH: preclean some warnings 2008-03-25 10:11 hoffman @@ -776,11 +19590,6 @@ * Source/kwsys/kwsysDateStamp.cmake: STYLE: Nightly Date Stamp -2008-03-11 23:01 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: ENH: fix dumb MS warning - about BOOL and performance with more code - 2008-03-11 22:52 hoffman * Source/QtDialog/CMakeSetupDialog.cxx: ENH: remove iostream, not @@ -788,9 +19597,7 @@ 2008-03-11 22:50 hoffman - * Source/: cmake.cxx, cmake.h, MFCDialog/CMakeSetup.rc, - MFCDialog/CMakeSetupDialog.cpp, MFCDialog/CMakeSetupDialog.h, - MFCDialog/resource.h, QtDialog/CMakeSetupDialog.cxx, + * Source/: cmake.cxx, cmake.h, QtDialog/CMakeSetupDialog.cxx, QtDialog/CMakeSetupDialog.h, QtDialog/QCMake.cxx, QtDialog/QCMake.h: ENH: add ability to suppress dev warnings to gui code @@ -2103,8 +20910,8 @@ 2008-02-12 09:49 hoffman * Source/: cmake.cxx, cmake.h, CursesDialog/cmCursesMainForm.cxx, - MFCDialog/CMakeSetupDialog.cpp, QtDialog/CMakeSetup.cxx, - QtDialog/QCMake.cxx: ENH: fix make edit_cache for cmake-gui + QtDialog/CMakeSetup.cxx, QtDialog/QCMake.cxx: ENH: fix make + edit_cache for cmake-gui 2008-02-12 09:18 king @@ -4101,9 +22908,7 @@ * CMakeLists.txt, ChangeLog.manual, Source/cmLocalVisualStudio7Generator.cxx, - Source/cmLocalVisualStudioGenerator.cxx, - Source/MFCDialog/CMakeLists.txt, - Source/MFCDialog/CMakeSetupManifest.xml: ENH: move more stuff + Source/cmLocalVisualStudioGenerator.cxx: ENH: move more stuff over and get vs 9 working 2008-01-15 14:19 hoffman @@ -5533,7 +24338,6 @@ cmSystemTools.cxx, cmSystemTools.h, cmake.cxx, cmake.h, cmakemain.cxx, ctest.cxx, CPack/cpack.cxx, CTest/cmCTestScriptHandler.cxx, CursesDialog/ccmake.cxx, - FLTKDialog/FLTKDialog.cxx, MFCDialog/CMakeSetup.cpp, QtDialog/CMakeSetup.cxx: ENH: Centralized and globalized computation of CMake program locations. This eliminates startup paths that failed to produce this information. @@ -6078,11 +24882,6 @@ * Source/QtDialog/AddCacheEntry.cxx: ENH: Remove debug printf -2007-11-16 14:06 hoffman - - * Utilities/cmxmlrpc/: CMakeLists.txt, xmlrpc_config.h.in, - xmlrpc_data.c: ENH: add a try compile for va_copy - 2007-11-16 13:54 david.cole * Source/cmGlobalVisualStudioGenerator.cxx: ENH: Add more @@ -6420,11 +25219,10 @@ 2007-11-08 15:54 david.cole - * Source/MFCDialog/res/CMakeSetupDialog.ico, - Source/QtDialog/CMakeSetup.ico, Source/WXDialog/NGDialog.ico, - Utilities/Release/CMakeLogo.ico: ENH: Put black outline around - all resolutions of the new ico files. Looks better on a dark - background than the lighter outline... + * Source/QtDialog/CMakeSetup.ico, Utilities/Release/CMakeLogo.ico: + ENH: Put black outline around all resolutions of the new ico + files. Looks better on a dark background than the lighter + outline... 2007-11-08 14:31 hoffman @@ -6498,11 +25296,6 @@ * Utilities/Release/vogon_release.cmake: ENH: add mt to vogon release -2007-11-07 17:30 hoffman - - * Source/MFCDialog/CMakeLists.txt: ENH: allow for msvc71 to build - for vista if CMAKE_MT_EXECUTABLE is put in the cache - 2007-11-07 14:35 hoffman * Utilities/cmcurl/CMakeLists.txt: ENH: remove memdebug.c from list @@ -6684,11 +25477,6 @@ CPack/cmCPackGenerators.h, CPack/cpack.cxx: ENH: change name of class -2007-11-05 14:47 hoffman - - * Source/WXDialog/: CMakeLists.txt, CMakeSetupFrame.cpp: ENH: fix - the compile and add install rule - 2007-11-05 14:34 king * Source/cmake.cxx, Source/CPack/cmCPackDebGenerator.cxx, @@ -6809,10 +25597,8 @@ 2007-11-01 08:36 david.cole - * Source/MFCDialog/res/CMakeSetupDialog.ico, - Source/WXDialog/NGDialog.ico, Utilities/Release/CMakeLogo.ico: - ENH: Add more resolutions for CMake icons to avoid that bloated - chunky blown up icon look... + * Utilities/Release/CMakeLogo.ico: ENH: Add more resolutions for + CMake icons to avoid that bloated chunky blown up icon look... 2007-10-31 22:48 andy @@ -7034,8 +25820,8 @@ Source/cmDocumentationFormatter.h, Source/cmDocumentationFormatterHTML.cxx, Source/cmDocumentationSection.h, Source/cmakemain.cxx, - Source/MFCDialog/CMakeSetup.cpp, Utilities/CMakeLists.txt: ENH: - some more cleanup, fixes, and patch for HTML output + Utilities/CMakeLists.txt: ENH: some more cleanup, fixes, and + patch for HTML output 2007-10-23 23:07 andy @@ -7114,10 +25900,9 @@ cmPropertyDefinitionMap.cxx, cmPropertyDefinitionMap.h, cmStandardIncludes.h, cmake.cxx, cmake.h, cmakemain.cxx, ctest.cxx, CPack/cpack.cxx, CursesDialog/ccmake.cxx, - MFCDialog/CMakeSetup.cpp, cmDocumentationSection.cxx, - cmDocumentationSection.h: ENH: change to make the documentation - class more generic, about halfway there, also provides secitons - for Variables now + cmDocumentationSection.cxx, cmDocumentationSection.h: ENH: change + to make the documentation class more generic, about halfway + there, also provides secitons for Variables now 2007-10-22 11:40 hoffman @@ -7185,11 +25970,6 @@ * Source/cmVersion.cxx: STYLE: Nightly Version update -2007-10-17 10:29 king - - * Utilities/cmxmlrpc/xmlrpc_client.h: COMP: Attempt to fix warning - about pointer->integer cast. - 2007-10-17 09:38 miguelf * Modules/FindwxWidgets.cmake: ENH: Added support for finding @@ -7436,9 +26216,8 @@ cmDocumentationFormatterUsage.cxx, cmDumpDocumentation.cxx, cmPropertyDefinition.cxx, cmPropertyDefinitionMap.cxx, cmStandardIncludes.h, cmake.cxx, cmake.h, cmakemain.cxx, - ctest.cxx, CPack/cpack.cxx, MFCDialog/CMakeSetup.cpp: BUG: revert - doc changes since VS7 cannot compile them, will implement them in - a different manner + ctest.cxx, CPack/cpack.cxx: BUG: revert doc changes since VS7 + cannot compile them, will implement them in a different manner 2007-10-09 09:55 martink @@ -7448,8 +26227,8 @@ cmDocumentationFormatterUsage.cxx, cmDumpDocumentation.cxx, cmPropertyDefinition.cxx, cmPropertyDefinitionMap.cxx, cmStandardIncludes.h, cmake.cxx, cmake.h, cmakemain.cxx, - ctest.cxx, CPack/cpack.cxx, MFCDialog/CMakeSetup.cpp: ENH: make - documentation entries actually store their data + ctest.cxx, CPack/cpack.cxx: ENH: make documentation entries + actually store their data 2007-10-08 22:39 andy @@ -7651,11 +26430,6 @@ * Source/cmVersion.cxx: STYLE: Nightly Version update -2007-09-25 11:01 hoffman - - * Source/MFCDialog/CMakeGenDialog.cpp: ENH: more generic search for - visual studio installations - 2007-09-25 10:57 hoffman * Source/cmSystemTools.cxx: BUG: fix problem with stdout and stderr @@ -7749,10 +26523,6 @@ * Source/kwsys/testRegistry.cxx: COMP: remove warning on new HPUX compiler -2007-09-20 11:27 hoffman - - * Source/MFCDialog/CMakeLists.txt: BUG: fix to work with cmake 2.2 - 2007-09-20 10:56 king * Tests/: SimpleInstall/CMakeLists.txt, @@ -7790,12 +26560,6 @@ * Source/cmVersion.cxx: STYLE: Nightly Version update -2007-09-19 13:51 david.cole - - * Source/MFCDialog/CMakeLists.txt: COMP: Only use the VERBATIM flag - for non-Visual Studio builds being configured by CMake 2.4.5 or - later. - 2007-09-19 13:14 alex * Source/: cmDocumentation.cxx, cmDocumentation.h, @@ -7934,11 +26698,6 @@ Alex -2007-09-17 16:10 hoffman - - * Source/MFCDialog/CMakeLists.txt: ENH: make mt command work with - gmake - 2007-09-17 15:59 hoffman * Source/cmLocalVisualStudio7Generator.cxx: ENH: fix for vs 8 @@ -7981,8 +26740,7 @@ Source/cmGlobalVisualStudio9Generator.h, Source/cmLocalVisualStudio7Generator.cxx, Source/cmLocalVisualStudio7Generator.h, Source/cmake.cxx, - Source/MFCDialog/StdAfx.h, Utilities/cmcurl/select.h, - Utilities/cmcurl/CMake/CurlTests.c, + Utilities/cmcurl/select.h, Utilities/cmcurl/CMake/CurlTests.c, Utilities/cmcurl/Platforms/WindowsCache.cmake, Modules/CMakeVS9FindMake.cmake: ENH: add support for vs 2008 beta 2 @@ -8067,9 +26825,8 @@ 2007-09-11 15:21 david.cole - * CTestCustom.cmake.in, Source/MFCDialog/CMakeLists.txt, - Source/MFCDialog/CMakeSetupManifest.xml: ENH: Avoid prompting for - admin privileges when running CMakeSetup.exe on Vista by adding a + * CTestCustom.cmake.in: ENH: Avoid prompting for admin privileges + when running CMakeSetup.exe on Vista by adding a requestedExecutionLevel element to its manifest. 2007-09-11 14:43 hoffman @@ -8700,10 +27457,7 @@ 2007-08-21 16:21 alex - * Source/: CMakeLists.txt, FLTKDialog/CMakeLists.txt, - FLTKDialog/CMakeSetupGUIImplementation.cxx, - FLTKDialog/FLTKPropertyItemRow.cxx, - FLTKDialog/FLTKPropertyList.cxx: + * Source/CMakeLists.txt: COMP: make it build on Linux Alex @@ -9632,13 +28386,6 @@ requires correct export and import decorations in the source code... -2007-08-01 15:51 alex - - * Source/MFCDialog/CMakeSetup.cpp: ENH: separate the commands into - current and compat as in cmake - - Alex - 2007-08-01 15:25 king * Source/: cmLocalGenerator.cxx, cmLocalGenerator.h, @@ -9654,9 +28401,8 @@ 2007-08-01 14:58 alex - * Source/: cmExtraCodeBlocksGenerator.cxx, cmake.cxx, - MFCDialog/CMakeSetupDialog.cpp: BUG: also offer the extra - generators in CMakeSetup + * Source/: cmExtraCodeBlocksGenerator.cxx, cmake.cxx: BUG: also + offer the extra generators in CMakeSetup Alex @@ -13960,8 +32706,7 @@ 2007-05-03 13:03 king - * Source/kwsys/ProcessUNIX.c, Utilities/cmcurl/url.c, - Utilities/cmxmlrpc/xmlrpc_curl_transport.c: COMP: Fix + * Source/kwsys/ProcessUNIX.c, Utilities/cmcurl/url.c: COMP: Fix code-not-reached warnings for SunCC. 2007-05-03 08:24 king @@ -15064,7 +33809,6 @@ Source/cmLocalVisualStudio7Generator.cxx, Source/cmLocalVisualStudio7Generator.h, Source/cmLocalVisualStudioGenerator.cxx, - Source/MFCDialog/CMakeSetupDialog.cpp, Source/kwsys/SystemTools.cxx, Tests/PrecompiledHeader/CMakeLists.txt, Tests/PrecompiledHeader/foo1.c, Tests/PrecompiledHeader/foo2.c, @@ -15259,7 +34003,7 @@ 2007-03-12 13:30 martink - * Source/: cmake.cxx, MFCDialog/CMakeSetup.rc: ENH: typo + * Source/cmake.cxx: ENH: typo 2007-03-12 13:28 king @@ -15733,11 +34477,6 @@ * Source/: cmCommandArgumentParser.cxx, cmDependsFortranParser.cxx, cmDependsJavaParser.cxx, cmExprParser.cxx: COMP: shut up warnings -2007-03-05 09:51 martink - - * Source/MFCDialog/: CMakeSetupDialog.cpp, PathDialog.cpp, - PropertyList.cpp: ENH: fix compiler warnings - 2007-03-05 09:50 martink * Source/cmTryCompileCommand.cxx: STYLE: long line @@ -16355,11 +35094,6 @@ ThirdSubDir/testfromauxsubdir.c, ThirdSubDir/thirdone.c: ENH: new test for spaces in the tree structure -2007-02-19 11:30 martink - - * Source/MFCDialog/CMakeSetupDialog.cpp: BUG: fix for shrinking - cmake oh no - 2007-02-18 21:44 andy * Source/cmVersion.cxx: STYLE: Nightly Version update @@ -16439,7 +35173,6 @@ Source/cmAddDependenciesCommand.cxx, Source/cmIfCommand.cxx, Source/cmIfCommand.h, Source/cmLocalVisualStudio7Generator.cxx, Source/cmSetTargetPropertiesCommand.cxx, - Source/MFCDialog/CMakeSetupDialog.cpp, Source/kwsys/SystemTools.cxx, Source/kwsys/SystemTools.cxx.bak: ENH: merge in changes from main tree, including fix for exception stuff in vs 7 @@ -16623,8 +35356,7 @@ 2007-02-05 11:13 martink - * Source/: CMakeLists.txt, MFCDialog/CMakeSetupDialog.cpp: ENH: add - more time to bootstrap test + * Source/CMakeLists.txt: ENH: add more time to bootstrap test 2007-02-05 09:48 king @@ -17766,9 +36498,7 @@ Tests/ComplexRelativePaths/Library/CMakeLists.txt, Utilities/cmcurl/CMakeLists.txt, Utilities/cmtar/encode.c, Utilities/cmtar/extract.c, Utilities/cmtar/libtar.c, - Utilities/cmtar/util.c, - Utilities/cmxmlrpc/xmlrpc_curl_transport.c: ENH: merge in changes - for beos support + Utilities/cmtar/util.c: ENH: merge in changes for beos support 2006-12-04 14:42 king @@ -17945,9 +36675,8 @@ * Source/: cmCMakeMinimumRequired.cxx, cmCPluginAPI.cxx, cmCacheManager.cxx, cmGlobalGenerator.cxx, cmLocalGenerator.cxx, cmLocalUnixMakefileGenerator3.cxx, cmMakefile.cxx, cmMakefile.h, - cmake.cxx, cmake.h, MFCDialog/CMakeSetupDialog.cpp: ENH: unify - version stuff, get rid of it out of cmake and cmMakefile and only - use cmVersion + cmake.cxx, cmake.h: ENH: unify version stuff, get rid of it out + of cmake and cmMakefile and only use cmVersion 2006-11-29 15:57 hoffman @@ -18208,8 +36937,7 @@ * ChangeLog.manual, Modules/CMakeVCManifestExe.cmake, Modules/FindSubversion.cmake, Modules/Platform/Windows-cl.cmake, - Source/cmFindBase.cxx, Source/MFCDialog/PropertyList.cpp: ENH: - merge changes in from main tree + Source/cmFindBase.cxx: ENH: merge changes in from main tree 2006-11-13 08:11 andy @@ -18219,11 +36947,6 @@ * Source/cmVersion.cxx: STYLE: Nightly Version update -2006-11-11 14:07 hoffman - - * Source/MFCDialog/PropertyList.cpp: BUG: fix for 4028 fix scroll - after delete - 2006-11-11 14:06 hoffman * Source/cmFindBase.cxx: BUG: fix for 4009 lib64 should work with @@ -18487,10 +37210,7 @@ Tests/SimpleInstallS2/CMakeLists.txt, Tests/StringFileTest/CMakeLists.txt, Utilities/cmtar/CMakeLists.txt, Utilities/cmtar/config.h.in, - Utilities/cmtar/libtar.c, Utilities/cmxmlrpc/xmlrpc.h, - Utilities/cmxmlrpc/xmlrpc_expat.c, - Utilities/cmxmlrpc/xmlrpc_server.h: ENH: move changes from main - tree + Utilities/cmtar/libtar.c: ENH: move changes from main tree 2006-10-27 15:59 hoffman @@ -18661,11 +37381,6 @@ * Utilities/cmtar/CMakeLists.txt: ENH: Remove old include dirs. -2006-10-19 15:39 king - - * Utilities/cmxmlrpc/xmlrpc_server.h: COMP: Fix for building - without system xmlrpc installed. - 2006-10-19 15:17 king * bootstrap: ENH: Adding option to use system-installed third-party @@ -18680,11 +37395,9 @@ Utilities/cmThirdParty.h.in, Utilities/cm_curl.h, Utilities/cm_expat.h, Utilities/cm_xmlrpc.h, Utilities/cm_zlib.h, Utilities/cmtar/CMakeLists.txt, Utilities/cmtar/config.h.in, - Utilities/cmtar/libtar.c, Utilities/cmxmlrpc/xmlrpc.h, - Utilities/cmxmlrpc/xmlrpc_expat.c: ENH: Add options to build with - system utility libraries. Organize inclusion of third party - libraries into a single header per library. This addresses - bug#3653. + Utilities/cmtar/libtar.c: ENH: Add options to build with system + utility libraries. Organize inclusion of third party libraries + into a single header per library. This addresses bug#3653. 2006-10-19 14:48 king @@ -19060,7 +37773,7 @@ Source/CTest/cmCTestTestHandler.cxx, Source/CursesDialog/ccmake.cxx, Source/CursesDialog/cmCursesMainForm.cxx, - Source/MFCDialog/PropertyList.cpp, Source/kwsys/CMakeLists.txt, + Source/kwsys/CMakeLists.txt, Source/kwsys/CommandLineArguments.cxx, Source/kwsys/Configure.h.in, Source/kwsys/Directory.cxx, Source/kwsys/Glob.cxx, Source/kwsys/Glob.hxx.in, @@ -19097,11 +37810,8 @@ Tests/StringFileTest/CMakeLists.txt, Tests/SystemInformation/SystemInformation.in, Utilities/Release/README, Utilities/cmcurl/CMakeLists.txt, - Utilities/cmtar/CMakeLists.txt, - Utilities/cmxmlrpc/CMakeLists.txt, - Utilities/cmxmlrpc/xmlrpc_curl_transport.c, - Utilities/cmzlib/CMakeLists.txt: ENH: merge changes from the main - tree to the 2.4 branch + Utilities/cmtar/CMakeLists.txt, Utilities/cmzlib/CMakeLists.txt: + ENH: merge changes from the main tree to the 2.4 branch 2006-10-13 10:27 andy @@ -19630,11 +38340,6 @@ * Source/cmTryCompileCommand.cxx: ENH: make sure file is closed -2006-10-03 12:21 hoffman - - * Source/MFCDialog/PropertyList.cpp: ENH: allow edit of file text - directly - 2006-10-03 12:09 hoffman * Source/cmMacroCommand.cxx: ENH: fix compile error @@ -20354,11 +39059,6 @@ documentation of MAKE_DIRECTORY and REMOVE commands to indicate they should not be used. -2006-08-31 12:04 hoffman - - * Utilities/cmxmlrpc/xmlrpc_curl_transport.c: ENH: fix possible - free memory use - 2006-08-31 10:47 king * Source/: cmGlobalGenerator.cxx, cmGlobalGenerator.h, @@ -21392,7 +40092,6 @@ Source/kwsys/CommandLineArguments.cxx, Source/kwsys/SystemTools.cxx, Source/kwsys/testProcess.c, Utilities/cmcurl/CMakeLists.txt, Utilities/cmtar/CMakeLists.txt, - Utilities/cmxmlrpc/CMakeLists.txt, Utilities/cmzlib/CMakeLists.txt: COMP: Fix and/or disable warnings for Borland 5.6 build. @@ -21726,11 +40425,7 @@ Source/CTest/cmCTestStartCommand.cxx, Source/CTest/cmCTestTestHandler.cxx, Source/CTest/cmCTestUpdateCommand.cxx, - Source/WXDialog/CMakeLists.txt, - Source/WXDialog/bin/FindUPX.cmake, - Source/WXDialog/bin/FindwxW.cmake, - Source/WXDialog/bin/FindwxWin.cmake, - Source/WXDialog/bin/UsewxW.cmake, Source/kwsys/CMakeLists.txt, + Source/kwsys/CMakeLists.txt, Source/kwsys/CommandLineArguments.cxx, Source/kwsys/CommandLineArguments.hxx.in, Source/kwsys/Glob.cxx, Source/kwsys/ProcessWin32.c, Source/kwsys/Registry.cxx, @@ -21752,7 +40447,6 @@ Tests/OutOfSource/simple.cxx, Tests/OutOfSource/OutOfSourceSubdir/CMakeLists.txt, Tests/OutOfSource/OutOfSourceSubdir/simple.cxx, - Tests/UseWX/CMakeLists.txt, Tests/UseWX/WX.cxx, Utilities/cmcurl/Testing/ftpget.c, Utilities/cmcurl/Testing/ftpgetresp.c, Utilities/cmcurl/Testing/ftpupload.c, Utilities/cmtar/block.c, @@ -21785,12 +40479,7 @@ * Modules/FindwxWidgets.cmake, Modules/FindwxWindows.cmake, Modules/Use_wxWindows.cmake, Modules/UsewxWidgets.cmake, - Source/CMakeLists.txt, Source/WXDialog/CMakeLists.txt, - Source/WXDialog/bin/FindUPX.cmake, - Source/WXDialog/bin/FindwxW.cmake, - Source/WXDialog/bin/FindwxWin.cmake, - Source/WXDialog/bin/UsewxW.cmake, Tests/UseWX/CMakeLists.txt, - Tests/UseWX/WX.cxx: ENH: Applying patch from bug#3443 to + Source/CMakeLists.txt: ENH: Applying patch from bug#3443 to implement FindwxWidgets.cmake properly. It also updates the UseWX test and WXDialog sources to use the new find script. @@ -22308,7 +40997,6 @@ Source/CTest/cmCTestBuildAndTestHandler.cxx, Source/CTest/cmCTestBuildCommand.cxx, Source/CursesDialog/form/form.priv.h, - Source/MFCDialog/CMakeSetupDialog.cpp, Source/kwsys/CommandLineArguments.cxx, Source/kwsys/Directory.cxx, Source/kwsys/Directory.hxx.in, Source/kwsys/Process.h.in, Source/kwsys/ProcessUNIX.c, @@ -22329,9 +41017,8 @@ Utilities/cmcurl/CMake/CheckTypeSize.cmake, Utilities/cmtar/CMakeLists.txt, Utilities/cmtar/append.c, Utilities/cmtar/config.h.in, Utilities/cmtar/extract.c, - Utilities/cmtar/handle.c, Utilities/cmtar/compat/fnmatch.c, - Utilities/cmxmlrpc/CMake/TryCompileFromSource.cmake: ENH: merge - main tree into branch + Utilities/cmtar/handle.c, Utilities/cmtar/compat/fnmatch.c: ENH: + merge main tree into branch 2006-06-30 07:16 andy @@ -22341,17 +41028,11 @@ * Source/cmVersion.cxx: STYLE: Nightly Version update -2006-06-28 17:15 king - - * Utilities/cmxmlrpc/CMake/TryCompileFromSource.cmake: BUG: Fix - usage of FILE(APPEND) mode. - 2006-06-28 17:00 king - * Modules/CheckCSourceCompiles.cmake, - Modules/CheckCXXSourceCompiles.cmake, - Utilities/cmxmlrpc/CMake/TryCompileFromSource.cmake: BUG: Make - sure try-compile source ends in a newline. + * Modules/: CheckCSourceCompiles.cmake, + CheckCXXSourceCompiles.cmake: BUG: Make sure try-compile source + ends in a newline. 2006-06-28 16:16 hoffman @@ -22460,8 +41141,7 @@ 2006-06-20 13:13 hoffman - * Source/: cmake.cxx, MFCDialog/CMakeSetupDialog.cpp: ENH: avoid - crash in sprintf + * Source/cmake.cxx: ENH: avoid crash in sprintf 2006-06-20 09:50 martink @@ -22654,9 +41334,8 @@ Source/cmake.h, Source/kwsys/kwsysPlatformCxxTests.cmake, Tests/MakeClean/ToClean/CMakeLists.txt, Tests/TryCompile/CMakeLists.txt, Utilities/cmcurl/CMakeLists.txt, - Utilities/cmcurl/CMake/CheckTypeSize.cmake, - Utilities/cmxmlrpc/CMake/TryCompileFromSource.cmake: ENH: - centralized locaiton of CMakeFiles setting + Utilities/cmcurl/CMake/CheckTypeSize.cmake: ENH: centralized + locaiton of CMakeFiles setting 2006-06-13 10:28 martink @@ -25573,19 +44252,9 @@ Utilities/cmcurl/mprintf.c, Utilities/cmtar/CMakeLists.txt, Utilities/cmtar/append.c, Utilities/cmtar/block.c, Utilities/cmtar/extract.c, Utilities/cmtar/handle.c, - Utilities/cmtar/output.c, Utilities/cmtar/compat/snprintf.c, - Utilities/cmxmlrpc/xmlrpc_array.c, - Utilities/cmxmlrpc/xmlrpc_client.c, - Utilities/cmxmlrpc/xmlrpc_data.c, - Utilities/cmxmlrpc/xmlrpc_expat.c, - Utilities/cmxmlrpc/xmlrpc_parse.c, - Utilities/cmxmlrpc/xmlrpc_registry.c, - Utilities/cmxmlrpc/xmlrpc_serialize.c, - Utilities/cmxmlrpc/xmlrpc_struct.c, - Utilities/cmxmlrpc/xmlrpc_strutil.c, - Utilities/cmxmlrpc/xmlrpc_support.c: ENH: add support for win64 - for visual studio 2005 ide and nmake, also fix warnings produced - by building for win64 + Utilities/cmtar/output.c, Utilities/cmtar/compat/snprintf.c: ENH: + add support for win64 for visual studio 2005 ide and nmake, also + fix warnings produced by building for win64 2006-03-30 13:33 king @@ -25925,9 +44594,7 @@ * Source/cmBootstrapCommands.cxx, Modules/CheckCSourceCompiles.cmake, Modules/CheckCXXSourceCompiles.cmake, Source/cmCommands.cxx, - Source/cmWriteFileCommand.cxx, - Utilities/cmxmlrpc/CMake/TryCompileFromSource.cmake: ENH: Cleanup - bootstrap even more + Source/cmWriteFileCommand.cxx: ENH: Cleanup bootstrap even more 2006-03-22 11:10 king @@ -28460,11 +47127,11 @@ * Source/: cmCTest.cxx, cmListFileCache.cxx, cmListFileCache.h, cmMakefile.cxx, cmTryCompileCommand.cxx, cmTryRunCommand.cxx, - cmakemain.cxx, ctest.cxx, CTest/cmCTestBuildAndTestHandler.cxx, - MFCDialog/CMakeSetupDialog.cpp: ENH: Since list file cache does - not make much sense any more (because of proper list file - parsing), and it actually adds unnecessary complications and make - ctest scripting not work, take it out + cmakemain.cxx, ctest.cxx, CTest/cmCTestBuildAndTestHandler.cxx: + ENH: Since list file cache does not make much sense any more + (because of proper list file parsing), and it actually adds + unnecessary complications and make ctest scripting not work, take + it out 2006-02-07 08:03 david.cole @@ -28728,11 +47395,6 @@ * Source/cmVersion.cxx: STYLE: Nightly Version update -2006-01-24 22:20 hoffman - - * Source/MFCDialog/PathDialog.cpp: ENH: do not force users to - create paths - 2006-01-24 15:48 hoffman * Source/cmStandardIncludes.h: ENH: fix for borland memcpy junk @@ -28967,9 +47629,8 @@ 2006-01-13 11:44 hoffman * Source/cmTryCompileCommand.cxx, - Utilities/cmcurl/CMake/CheckTypeSize.cmake, - Utilities/cmxmlrpc/CMake/TryCompileFromSource.cmake: ENH: fix for - CMakeTmp move broken stuff + Utilities/cmcurl/CMake/CheckTypeSize.cmake: ENH: fix for CMakeTmp + move broken stuff 2006-01-13 09:57 hoffman @@ -29005,9 +47666,8 @@ Source/cmTryCompileCommand.cxx, Source/cmTryCompileCommand.h, Source/cmTryRunCommand.cxx, Utilities/cmcurl/CMake/CheckTypeSize.cmake, - Tests/TryCompile/CMakeLists.txt, - Utilities/cmxmlrpc/CMake/TryCompileFromSource.cmake: ENH: put - CmakeTmp into CMakeFiles + Tests/TryCompile/CMakeLists.txt: ENH: put CmakeTmp into + CMakeFiles 2006-01-12 11:10 hoffman @@ -29937,9 +48597,8 @@ Source/cmTarget.h, Source/cmTryRunCommand.h, Source/cmakemain.cxx, Source/CTest/cmCTestBuildCommand.cxx, Source/CTest/cmCTestUpdateHandler.cxx, - Source/MFCDialog/CMakeCommandLineInfo.cpp, - Source/MFCDialog/CMakeSetup.cpp, Source/kwsys/ProcessWin32.c, - Source/kwsys/SystemTools.cxx, Source/kwsys/SystemTools.hxx.in, + Source/kwsys/ProcessWin32.c, Source/kwsys/SystemTools.cxx, + Source/kwsys/SystemTools.hxx.in, Tests/SimpleInstall/CMakeLists.txt, Tests/SimpleInstallS2/CMakeLists.txt: ENH: merge changes from main tree to branch @@ -30244,11 +48903,6 @@ all other targets depend that re-runs CMake if any listfiles have been changed. This addresses bug#2512. -2005-12-13 14:14 king - - * Source/MFCDialog/: CMakeCommandLineInfo.cpp, CMakeSetup.cpp: BUG: - Fix storage/use of argc/argv in CMakeSetup dialog. - 2005-12-13 14:07 martink * Utilities/Release/CMake.nsi.in: ENH: removed the add to path @@ -31602,14 +50256,6 @@ * Source/cmVersion.cxx: STYLE: Nightly Version update -2005-09-23 17:47 hoffman - - * Source/FLTKDialog/: CMakeSetupGUI.fl, - CMakeSetupGUIImplementation.cxx, CMakeSetupGUIImplementation.h, - FLTKDialog.cxx, FLTKDialog.dsp, FLTKPropertyItemRow.cxx, - FLTKPropertyItemRow.h, FLTKPropertyList.cxx, FLTKPropertyList.h, - CMakeLists.txt: ENH: try to find a gui for the Mac - 2005-09-23 14:39 hoffman * Modules/CMakeCXXInformation.cmake: ENH: remove -lgcc used by @@ -32280,7 +50926,6 @@ Source/CTest/cmCTestTestHandler.cxx, Source/CTest/cmCTestTestHandler.h, Source/CTest/cmCTestUpdateCommand.cxx, - Source/MFCDialog/CMakeSetupDialog.cpp, Source/kwsys/SharedForward.h.in, Source/kwsys/SystemTools.cxx, Templates/EXEHeader.dsptemplate, Tests/CustomCommand/CMakeLists.txt, Tests/CustomCommand/foo.h.in, @@ -32631,14 +51276,7 @@ Source/CTest/cmCTestSubmitHandler.cxx, Source/CTest/cmCTestTestCommand.cxx, Source/CTest/cmCTestTestHandler.cxx, - Source/CTest/cmCTestUpdateHandler.cxx, - Source/WXDialog/CMakeLists.txt, Source/WXDialog/CMakeSetup.cpp, - Source/WXDialog/CMakeSetup.pjd, - Source/WXDialog/CMakeSetupFrame.cpp, - Source/WXDialog/CommandLineInfo.cpp, - Source/WXDialog/CommandLineInfo.h, - Source/WXDialog/cmakesetup.xml, - Source/WXDialog/bin/FindwxWin.cmake, Source/kwsys/Base64.c, + Source/CTest/cmCTestUpdateHandler.cxx, Source/kwsys/Base64.c, Source/kwsys/Base64.h.in, Source/kwsys/CMakeLists.txt, Source/kwsys/Configure.h.in, Source/kwsys/FundamentalType.h.in, Source/kwsys/Process.h.in, Source/kwsys/SystemTools.cxx, @@ -32669,26 +51307,18 @@ Tests/OutOfSource/OutOfSourceSubdir/testlib.h, Tests/SimpleInstall/CMakeLists.txt, Tests/SimpleInstallS2/CMakeLists.txt, Utilities/CMakeLists.txt, - Utilities/cmcurl/CMakeLists.txt, - Utilities/cmxmlrpc/CMake/TryCompileFromSource.cmake: ENH: move - cvs onto branch and try for beta 2 + Utilities/cmcurl/CMakeLists.txt: ENH: move cvs onto branch and + try for beta 2 2005-08-11 13:20 martink - * Source/: cmake.cxx, MFCDialog/CMakeSetupDialog.cpp: ENH: added - better error checking for cases when there is a CMakeCache.txt - file but it is not readable + * Source/cmake.cxx: ENH: added better error checking for cases when + there is a CMakeCache.txt file but it is not readable 2005-08-11 11:44 andy * Source/cmVersion.cxx: STYLE: Nightly Version update -2005-08-10 16:18 jorgb - - * Source/WXDialog/: CommandLineInfo.cpp, CommandLineInfo.h, - cmakesetup.xml: Implemented new parser which can handle: - -G"generator" (legacy format) -G "generator" (new format) - 2005-08-10 12:55 hoffman * Source/cmGlobalXCodeGenerator.cxx, Source/cmLocalGenerator.cxx, @@ -32723,11 +51353,6 @@ * Modules/: FindQt.cmake, FindQt4.cmake: ENH: fixed up qt stuff from Clinton Stimpson -2005-08-09 15:42 jorgb - - * Source/WXDialog/: CMakeSetup.cpp, CommandLineInfo.cpp, - CommandLineInfo.h, cmakesetup.xml: Implemented -G option - 2005-08-09 13:12 martink * Source/CTest/cmCTestTestHandler.cxx: BUG: do not search the @@ -32743,13 +51368,6 @@ * Source/cmLocalUnixMakefileGenerator3.cxx: BUG: fix for sun make with spaces -2005-08-08 17:14 jorgb - - * Source/WXDialog/: CMakeSetup.cpp, CMakeSetup.pjd, - CMakeSetupFrame.cpp, CommandLineInfo.cpp, CommandLineInfo.h, - cmakesetup.xml: Started on command line parsing, added string - parse method for default generator - 2005-08-08 15:23 martink * Source/cmLocalUnixMakefileGenerator3.cxx: ENH: have the @@ -33063,9 +51681,8 @@ Source/cmLocalUnixMakefileGenerator3.cxx, Source/cmLocalVisualStudio7Generator.cxx, Tests/MakeClean/ToClean/CMakeLists.txt, - Utilities/cmcurl/CMakeLists.txt, - Utilities/cmxmlrpc/CMake/TryCompileFromSource.cmake: ENH: put - cmake files intoa CMakeFiles subdir to clean up bin tree + Utilities/cmcurl/CMakeLists.txt: ENH: put cmake files intoa + CMakeFiles subdir to clean up bin tree 2005-07-28 15:24 martink @@ -33448,11 +52065,6 @@ * Modules/FindPythonInterp.cmake: BUG: Set PYTHONINTERP_FOUND -2005-07-15 11:38 hoffman - - * Source/WXDialog/bin/FindwxWin.cmake: ENH: fix for older versions - of cmake - 2005-07-15 11:38 hoffman * Source/: cmGlobalUnixMakefileGenerator3.cxx, @@ -33482,16 +52094,6 @@ * Source/cmVersion.cxx: STYLE: Nightly Version update -2005-07-14 17:21 hoffman - - * Source/WXDialog/: CMakeLists.txt, bin/FindwxWin.cmake: ENH: fix - wxdialog to build with xcode - -2005-07-14 16:46 andy - - * Source/WXDialog/CMakeLists.txt: ENH: add an install target for - WXDialog - 2005-07-14 16:00 hoffman * Source/cmLocalGenerator.cxx: ENH: fix for bug 992, mac bundle @@ -33653,8 +52255,7 @@ 2005-07-12 17:23 hoffman - * Utilities/: cmcurl/CMakeLists.txt, cmxmlrpc/CMakeLists.txt: add - -dl on unix + * Utilities/cmcurl/CMakeLists.txt: add -dl on unix 2005-07-12 17:22 hoffman @@ -33683,20 +52284,6 @@ * Utilities/Release/: config_Darwin, release_dispatch.sh: fixes for osx -2005-07-12 15:08 hoffman - - * Source/WXDialog/: CMakeLists.txt, bin/FindwxWin.cmake: Fixes for - macosx - -2005-07-12 15:06 andy - - * Source/WXDialog/: CMakeLists.txt, bin/FindwxWin.cmake: ENH: fixes - for macosx - -2005-07-12 14:21 hoffman - - * Utilities/cmxmlrpc/CMakeLists.txt: ENH: add dl lib - 2005-07-12 13:54 hoffman * Utilities/Release/config_SunOS: put it back @@ -33867,10 +52454,6 @@ * CMakeLists.txt: ENH: update rev to 23 -2005-07-08 09:53 martink - - * Source/MFCDialog/CMakeSetup.rc: ENH: minor version update - 2005-07-08 09:05 king * Source/kwsys/testProcess.c: COMP: Fixed uninitialized variable. @@ -34076,32 +52659,6 @@ cmGetDirectoryPropertyCommand.h: ENH: added patch from Alexander Neundorf to get DEFINITIONS -2005-06-30 15:54 jorgb - - * Source/WXDialog/bin/: FindUPX.cmake, FindwxW.cmake, - FindwxWin.cmake, UsewxW.cmake: initial checkin for bin dir - -2005-06-30 15:54 jorgb - - * Source/WXDialog/: CMakeIcon.xpm, CMakeLists.txt, CMakeSetup.cpp, - CMakeSetup.h, CMakeSetup.pjd, CMakeSetup.rc, CMakeSetupFrame.cpp, - CMakeSetupFrame.h, CommandLineInfo.cpp, CommandLineInfo.h, - NGDialog.exe.manifest, NGDialog.ico, PropertyList.cpp, - PropertyList.h, about.html, aboutdlg.cpp, aboutdlg.h, - app_resources.cpp, app_resources.h, changelog.txt, - cmake_icon.gif, cmake_icon.xpm, cmake_logo.xpm, - cmakesetup.done.xml, cmakesetup.xml, config.h, optionsdlg.cpp, - optionsdlg.h, progressdlg.cpp, progressdlg.h: Initial checkin new - wx dialog - -2005-06-30 15:52 jorgb - - * Source/WXDialog/: CMakeIcon.gif, CMakeIcon.icns, CMakeIcon.xpm, - CMakeLists.txt, ReadMe.Mac.txt, cmWXCacheProperty.cxx, - cmWXCacheProperty.h, cmWXCommandLineInfo.cxx, - cmWXCommandLineInfo.h, cmWXMainFrame.cxx, cmWXMainFrame.h, - wxCMakeSetup.cxx, wxincludes.h: deleted old wx-dialog - 2005-06-30 13:39 martink * Tests/: Complex/CMakeLists.txt, Complex/cmTestConfigure.h.in, @@ -34227,8 +52784,7 @@ 2005-06-24 09:06 andy * CMakeLists.txt, Source/CMakeLists.txt, Source/cmCTest.cxx, - Source/CTest/cmCTestSubmitHandler.cxx, - Utilities/cmxmlrpc/xmlrpc_curl_transport.c: ENH: Move curl to + Source/CTest/cmCTestSubmitHandler.cxx: ENH: Move curl to utilities 2005-06-24 09:00 andy @@ -35277,11 +53833,6 @@ * CTestCustom.ctest.in: ENH: shut up some warning on SGI -2005-05-31 16:16 martink - - * Utilities/cmxmlrpc/CMakeLists.txt: BUG: shut downgrade XMLRPC - support - 2005-05-31 15:10 martink * Source/: cmAddSubDirectoryCommand.cxx, @@ -35357,9 +53908,8 @@ 2005-05-26 17:30 andy - * Modules/CMakeVS8FindMake.cmake, - Source/MFCDialog/CMakeSetupDialog.cpp: COMP: Fix for support of - VS 8.0 beta 2 + * Modules/CMakeVS8FindMake.cmake: COMP: Fix for support of VS 8.0 + beta 2 2005-05-26 04:09 andy @@ -36137,12 +54687,9 @@ 2005-04-26 14:12 king - * Source/CursesDialog/form/CMakeLists.txt, - Source/CursesDialog/form/internal_stdio_core.h.in, - Utilities/cmxmlrpc/CMakeLists.txt, - Utilities/cmxmlrpc/internal_stdio_core.h.in: ENH: Removing - stdio_core hack. A better work-around has been put in - cmStandardIncludes.h. + * Source/CursesDialog/form/: CMakeLists.txt, + internal_stdio_core.h.in: ENH: Removing stdio_core hack. A + better work-around has been put in cmStandardIncludes.h. 2005-04-26 14:11 king @@ -36223,10 +54770,10 @@ 2005-04-24 13:15 king - * Source/CursesDialog/form/CMakeLists.txt, - Utilities/cmxmlrpc/CMakeLists.txt: BUG: Older SGI compilers still - have internal/stdio_core.h but do not support #include_next. - We'll have to try-compile to test whether this hack is needed. + * Source/CursesDialog/form/CMakeLists.txt: BUG: Older SGI compilers + still have internal/stdio_core.h but do not support + #include_next. We'll have to try-compile to test whether this + hack is needed. 2005-04-24 12:32 andy @@ -36313,12 +54860,8 @@ 2005-04-21 17:00 king - * Source/CursesDialog/form/CMakeLists.txt, - Source/CursesDialog/form/form.h, - Source/CursesDialog/form/internal_stdio_core.h.in, - Utilities/cmxmlrpc/CMakeLists.txt, - Utilities/cmxmlrpc/internal_stdio_core.h.in, - Utilities/cmxmlrpc/xmlrpc.h: COMP: Using a new work-around for + * Source/CursesDialog/form/: CMakeLists.txt, form.h, + internal_stdio_core.h.in: COMP: Using a new work-around for stdarg.h problem on SGI. 2005-04-21 16:46 king @@ -36350,11 +54893,6 @@ KWSYS_STL_HAS_ALLOCATOR_OBJECTS. Needed for more old-stl support in the hashtable. -2005-04-21 09:33 andy - - * Utilities/cmxmlrpc/CMakeLists.txt: COMP: Do not build the file - when wide char is not set since the file would be empty - 2005-04-21 02:50 andy * Source/cmVersion.cxx: STYLE: Nightly Version update @@ -36368,11 +54906,6 @@ * Source/kwsys/testProcess.c: BUG: Adjusting timeouts for tests 4 and 5 to avoid early killing. -2005-04-19 18:35 andy - - * Utilities/cmxmlrpc/xmlrpc.h: COMP: Attempt to fix problem with - building on SGI - 2005-04-19 18:26 andy * Source/: CursesDialog/form/form.h, kwsys/SystemTools.hxx.in: @@ -36393,21 +54926,6 @@ test 5 on cygwin. ENH: When a mismatch is reported it now reports what it was as well as what it should have been. -2005-04-19 09:52 king - - * Utilities/cmxmlrpc/xmlrpc_data.c: COMP: Fix MAKE_WCS_BLOCK_NULL - when HAVE_UNICODE_WCHAR is off. - -2005-04-19 09:52 king - - * Utilities/cmxmlrpc/xmlrpc_config.h.in: BUG: Need to use - #cmakedefine for HAVE_UNICODE_WCHAR. - -2005-04-19 09:52 king - - * Utilities/cmxmlrpc/CMakeLists.txt: BUG: Do not provide - HAVE_UNICODE_WCHAR option if wchar.h is not available. - 2005-04-15 18:57 king * Source/kwsys/kwsysPlatformCxxTests.cxx: BUG: For some reason the @@ -37190,13 +55708,6 @@ * Source/kwsys/: SystemTools.cxx, SystemTools.hxx.in: ENH: move EstimateFormatLength to kwsys -2005-03-28 13:20 martink - - * Source/MFCDialog/: CMakeLists.txt, CMakeSetup.rc, - CMakeSetupDialog.cpp, CMakeSetupDialog.h, resource.h, - CMakeGenDialog.cpp, CMakeGenDialog.h: ENH: change how the - generator is selected and what the last one used was - 2005-03-28 02:12 andy * Source/cmVersion.cxx: STYLE: Nightly Version update @@ -37435,21 +55946,11 @@ * Source/cmVersion.cxx: STYLE: Nightly Version update -2005-03-16 15:31 andy - - * Utilities/cmxmlrpc/: CMakeLists.txt, win32_pthreads.c: COMP: Fix - more pthreads problems on windows - 2005-03-16 13:26 andy * CMakeLists.txt, Utilities/cmexpat/CMakeLists.txt, - Utilities/cmxmlrpc/CMakeLists.txt, Utilities/cmzlib/CMakeLists.txt: COMP: More cleanups -2005-03-16 13:24 andy - - * Utilities/cmxmlrpc/xmlrpc_curl_transport.c: COMP: Remove warnings - 2005-03-16 12:54 andy * Source/CMakeLists.txt: ENH: Make sure to use internal zlib @@ -37458,11 +55959,6 @@ * Source/CTest/cmCTestSubmit.cxx: ENH: Cleanup of the output -2005-03-16 11:10 andy - - * Utilities/cmxmlrpc/CMakeLists.txt: BUG: No need to link threads - libraries when pthreads are not found - 2005-03-16 10:49 king * Source/kwsys/SystemTools.cxx: COMP: Only include malloc.h on QNX. @@ -37660,11 +56156,6 @@ * Source/cmVersion.cxx: STYLE: Nightly Version update -2005-03-09 18:07 andy - - * Utilities/cmxmlrpc/xmlrpc_serialize.c: BUG: This is weird, but - marquee does not seem to handle base64 with new lines - 2005-03-09 18:06 andy * Source/CTest/cmCTestSubmit.cxx: BUG: xmlrpc does the base64 @@ -37746,11 +56237,6 @@ * Source/cmVersion.cxx: STYLE: Nightly Version update -2005-03-07 18:48 andy - - * Utilities/cmxmlrpc/win32_pthreads.c: COMP: Try to remove warning - on mingw - 2005-03-07 15:19 king * Source/cmDependsFortran.cxx: BUG: When checking for upper-case @@ -37769,34 +56255,10 @@ * bootstrap: ENH: Add proper dependencies for cmBootstrapCommands -2005-03-07 11:03 andy - - * Utilities/cmxmlrpc/xmlrpc_curl_transport.c: BUG: Remove memory - leak - 2005-03-07 02:28 andy * Source/cmVersion.cxx: STYLE: Nightly Version update -2005-03-06 12:10 andy - - * Utilities/cmxmlrpc/linklist.h: COMP: Try to remove warnings on - windows - -2005-03-06 11:26 andy - - * Utilities/cmxmlrpc/: CMakeLists.txt, xmlrpc_config.h.in: ENH: Fix - the symantic of unicode_wchar - -2005-03-06 11:23 andy - - * Utilities/cmxmlrpc/xmlrpc_utf8.c: COMP: Remove warning on gcc - -2005-03-06 08:52 andy - - * Utilities/cmxmlrpc/synch_client.c: BUG: Fix destruction of - objects - 2005-03-06 08:51 andy * DartConfig.cmake, Source/cmCTest.cxx, @@ -37829,11 +56291,6 @@ cmCTest.cxx: ENH: Start working on xmlrpc code. This code does not work, but it will at least test compiling with cmxmlrpc -2005-03-04 15:04 andy - - * Utilities/cmxmlrpc/synch_client.c: ENH: Print more states - including NY - 2005-03-04 14:27 andy * CMakeLists.txt, Source/CMakeLists.txt: ENH: More cleanups and @@ -37857,11 +56314,6 @@ * bootstrap: BUG: Handle when initial cmake fails -2005-03-04 09:46 andy - - * Utilities/cmxmlrpc/xmlrpc_registry.c: COMP: Remove warning about - code being unused - 2005-03-04 02:25 andy * Source/cmVersion.cxx: STYLE: Nightly Version update @@ -37897,20 +56349,6 @@ Tests/ComplexRelativePaths/Executable/complex.cxx: ENH: try number two with topological sort -2005-03-03 17:21 andy - - * Utilities/cmxmlrpc/xmlrpc.h: COMP: Ok, remove warnings because of - removal of warnings - -2005-03-03 17:00 andy - - * Utilities/cmxmlrpc/xmlrpc_curl_transport.c: COMP: Fix typo - -2005-03-03 16:58 andy - - * Utilities/cmxmlrpc/xmlrpc_curl_transport.c: BUG: Comp sci 101. - Strings go away at the end of the function - 2005-03-03 16:53 king * Source/: cmDependsFortran.cxx, cmDependsFortran.h, cmake.cxx: @@ -37918,20 +56356,6 @@ Fortran90 modules to the stamp files more reliably. This removes the temporary hack for per-platform upper-/lower- case. -2005-03-03 16:12 andy - - * Utilities/cmxmlrpc/xmlrpc_config.h.in: COMP: setenv is not needed - any more - -2005-03-03 15:52 andy - - * Utilities/cmxmlrpc/xmlrpc_authcookie.c: COMP: Try to remove - setenv warning - -2005-03-03 15:49 andy - - * Utilities/cmxmlrpc/xmlrpc.h: ENH: Remove warnings - 2005-03-03 15:22 king * Source/: cmDependsC.cxx, cmDependsC.h: BUG: Fixed scanning to @@ -37943,23 +56367,11 @@ "ostringstream(const kwsys_stl::string& s)" and "void str(const kwsys_stl::string& s)" compatibility methods. -2005-03-03 09:25 andy - - * Utilities/cmxmlrpc/: xmlrpc_authcookie.c, xmlrpc_client.c, - xmlrpc_data.c, xmlrpc_expat.c, xmlrpc_parse.c, xmlrpc_registry.c, - xmlrpc_serialize.c, xmlrpc_struct.c, xmlrpc_strutil.c, - xmlrpc_utf8.c: COMP: Remove warnings on borland - 2005-03-03 08:46 martink * Source/: CMakeLists.txt, cmake.cxx: ENH: remove code warrior classes -2005-03-03 08:45 andy - - * Utilities/cmxmlrpc/: xmlrpc_strutil.c, xmlrpc_support.c: COMP: - Remove warnings - 2005-03-03 02:26 andy * Source/cmVersion.cxx: STYLE: Nightly Version update @@ -37985,37 +56397,17 @@ Tests/ComplexRelativePaths/Executable/complex.cxx: ENH: fix library ordering stuff to use a topological sort -2005-03-02 17:38 andy - - * Utilities/cmxmlrpc/xmlrpc_curl_transport.c: BUG: Attempt to get - error code - -2005-03-02 17:19 andy - - * Utilities/cmxmlrpc/xmlrpc_curl_transport.c: ENH: Temporary proxy - support - 2005-03-02 11:48 andy * Source/cmOrderLinkDirectories.cxx: BUG: Attempt to fix sorting stability using more deterministic compare function -2005-03-02 11:04 andy - - * Utilities/cmxmlrpc/: xmlrpc_client.c, xmlrpc_parse.c: COMP: - Remove more warnings - 2005-03-02 10:58 martink * Source/: cmGlobalCodeWarriorGenerator.cxx, cmGlobalCodeWarriorGenerator.h, cmLocalCodeWarriorGenerator.cxx, cmLocalCodeWarriorGenerator.h: ENH: now use xcode instead -2005-03-02 10:35 andy - - * Utilities/cmxmlrpc/xmlrpc.h: COMP: Enum should really not have - comma at the end - 2005-03-02 09:34 king * Source/cmLocalUnixMakefileGenerator2.cxx: BUG: Pay attention to @@ -38103,42 +56495,17 @@ * Source/cmGlobalXCodeGenerator.cxx: FIX: fix spaces in paths -2005-03-01 11:21 andy - - * Utilities/cmxmlrpc/: synch_client.c, xmlrpc_curl_transport.c: - COMP: Attempt to remove warnings - -2005-03-01 11:01 king - - * Utilities/cmxmlrpc/win32_pthreads.c: COMP: #if WIN32 -> #ifdef - _WIN32 for Borland. - 2005-03-01 10:54 andy * CMakeLists.txt: ENH: Enable XMLRPC... please do not break everywhere... -2005-03-01 10:11 andy - - * Utilities/cmxmlrpc/CMakeLists.txt: ENH: Enable test - 2005-03-01 10:05 king * Source/cmLocalVisualStudio6Generator.cxx: BUG: Replaced previous fix with an implementation of properly formatting the custom build code in the generated file. -2005-03-01 09:50 andy - - * Utilities/cmxmlrpc/xmlrpc_curl_transport.c: ENH: More removing of - pthreads - -2005-03-01 09:07 andy - - * Utilities/cmxmlrpc/: CMakeLists.txt, xmlrpc_authcookie.c, - xmlrpc_config.h.in, xmlrpc_curl_transport.c, xmlrpc_pthreads.h, - xmlrpc_transport.h: ENH: Attempt to remove threading code - 2005-03-01 02:28 andy * Source/cmVersion.cxx: STYLE: Nightly Version update @@ -38147,11 +56514,6 @@ * CMakeLists.txt: ENH: Add the rest of xmlrpc stuff -2005-02-28 16:26 andy - - * Utilities/cmxmlrpc/: CMakeLists.txt, synch_client.c, xmlrpc.h, - xmlrpc_client.c, xmlrpc_config.h.in: ENH: Add example - 2005-02-28 16:11 martink * Source/cmLocalVisualStudio6Generator.cxx: FIXTHIS THING: fix the @@ -38170,13 +56532,10 @@ * Source/cmVersion.cxx: STYLE: Nightly Version update -2005-02-27 17:34 andy +2005-02-27 17:36 andy - * Utilities/cmxmlrpc/xmlrpc.h, Utilities/cmxmlrpc/xmlrpc_array.c, - Utilities/cmxmlrpc/xmlrpc_curl_transport.c, - Utilities/cmxmlrpc/xmlrpc_parse.c, - Utilities/cmxmlrpc/xmlrpc_struct.c, Source/kwsys/ProcessUNIX.c: - COMP: Remove warnings about shadow variables + * Source/kwsys/ProcessUNIX.c: COMP: Remove warnings about shadow + variables 2005-02-27 17:33 andy @@ -38400,14 +56759,6 @@ * Source/cmGlobalXCodeGenerator.cxx: ENH: remove output path stuff -2005-02-23 20:28 andy - - * Utilities/cmxmlrpc/: CMakeLists.txt, casprintf.c, casprintf.h, - inline.h, linklist.h, xmlrpc.h, xmlrpc_client.h, - xmlrpc_client_int.h, xmlrpc_config.h.in, xmlrpc_curl_transport.c, - xmlrpc_data.c, xmlrpc_pthreads.h, xmlrpc_support.c: COMP: Several - Windows fixes - 2005-02-23 14:36 martink * Source/cmGlobalVisualStudio6Generator.cxx: BUG: fix for empty @@ -38446,23 +56797,6 @@ in testing whether loading worked and for installing loaded command modules. -2005-02-22 13:08 andy - - * Utilities/cmxmlrpc/: CMakeLists.txt, XmlRpcCpp.cpp, XmlRpcCpp.h, - bool.h, mallocvar.h, transport_config.h, win32_pthreads.c, - xmlrpc.h, xmlrpc_amconfig.h.in, xmlrpc_array.c, - xmlrpc_authcookie.c, xmlrpc_base64.c, xmlrpc_cgi.c, xmlrpc_cgi.h, - xmlrpc_client.c, xmlrpc_client.h, xmlrpc_client_int.h, - xmlrpc_config.h.in, xmlrpc_curl_transport.c, - xmlrpc_curl_transport.h, xmlrpc_data.c, xmlrpc_expat.c, - xmlrpc_int.h, xmlrpc_libxml2.c, xmlrpc_parse.c, - xmlrpc_pthreads.h, xmlrpc_registry.c, xmlrpc_serialize.c, - xmlrpc_server.h, xmlrpc_server_abyss.c, xmlrpc_server_abyss.h, - xmlrpc_server_abyss_int.h, xmlrpc_struct.c, xmlrpc_strutil.c, - xmlrpc_support.c, xmlrpc_transport.c, xmlrpc_transport.h, - xmlrpc_utf8.c, xmlrpc_xmlparser.h, - CMake/TryCompileFromSource.cmake: ENH: Initial import - 2005-02-22 12:34 martink * Source/cmGlobalGenerator.cxx: COMP: fix warning @@ -38894,11 +57228,6 @@ * Source/kwsys/: SystemTools.cxx, SystemTools.hxx.in: ENH: Implement copy of directory with content -2005-02-11 14:36 hoffman - - * Source/MFCDialog/: CMakeSetupDialog.cpp, CMakeSetupDialog.h: FIX: - fix for bug 1135 - 2005-02-11 14:25 hoffman * Source/: cmGlobalXCodeGenerator.cxx, cmGlobalXCodeGenerator.h: @@ -39783,13 +58112,7 @@ 2005-01-13 12:38 hoffman - * ChangeLog.manual, Source/MFCDialog/PropertyList.cpp: BUG: fix - from main tree - -2005-01-13 12:26 hoffman - - * Source/MFCDialog/PropertyList.cpp: BUG: fix for Bug #1466 delete - cache leaves file button and can crash + * ChangeLog.manual: BUG: fix from main tree 2005-01-13 03:58 andy @@ -40896,8 +59219,7 @@ Source/cmSystemTools.h, Source/cmTryRunCommand.cxx, Source/cmWin32ProcessExecution.cxx, Source/cmWin32ProcessExecution.h, Source/cmakemain.cxx, - Source/MFCDialog/CMakeSetupDialog.cpp, - Source/MFCDialog/PathDialog.cpp, Source/kwsys/SystemTools.cxx, + Source/kwsys/SystemTools.cxx, Tests/StringFileTest/CMakeLists.txt, Utilities/Release/cmake_release.sh, Utilities/Release/config_IRIX64: ENH: move 2.0.4 to LRB @@ -42056,15 +60378,12 @@ * ChangeLog.manual, Modules/Platform/Windows-cl.cmake, Modules/Platform/Windows-gcc.cmake, Source/cmSystemTools.h, - Source/MFCDialog/CMakeSetupDialog.cpp, - Source/MFCDialog/PathDialog.cpp, Utilities/Release/cmake_release.sh: merge from main tree 2004-08-30 13:50 hoffman - * Source/: cmSystemTools.h, MFCDialog/CMakeSetupDialog.cpp, - kwsys/SystemTools.cxx: BUG: fixes for mingw and CMakesetup with - spaces in the source directory + * Source/: cmSystemTools.h, kwsys/SystemTools.cxx: BUG: fixes for + mingw and CMakesetup with spaces in the source directory 2004-08-30 12:14 hoffman @@ -42217,8 +60536,8 @@ 2004-08-23 14:33 andy - * Source/: cmake.cxx, MFCDialog/CMakeSetupDialog.cpp: ENH: - Implement PreLoad.cmake feature for CMakeSetup + * Source/cmake.cxx: ENH: Implement PreLoad.cmake feature for + CMakeSetup 2004-08-23 14:09 hoffman @@ -42355,9 +60674,8 @@ Source/cmakewizard.h, Source/CTest/cmCTestSubmit.cxx, Source/CTest/cmCTestSubmit.h, Source/CursesDialog/cmCursesMainForm.cxx, - Source/MFCDialog/CMakeSetupDialog.cpp, - Source/MFCDialog/PathDialog.cpp, Source/kwsys/CMakeLists.txt, - Source/kwsys/ProcessUNIX.c, Source/kwsys/SystemTools.cxx, + Source/kwsys/CMakeLists.txt, Source/kwsys/ProcessUNIX.c, + Source/kwsys/SystemTools.cxx, Templates/CMakeWindowsSystemConfig.cmake, Templates/TestDriver.cxx.in, Tests/Simple/CMakeLists.txt, Tests/SimpleInstall/CMakeLists.txt, Tests/SimpleInstall/inst.cxx, @@ -42483,8 +60801,8 @@ 2004-08-04 13:05 hoffman - * Source/: cmake.cxx, MFCDialog/CMakeSetupDialog.cpp: fix incorrect - selection of visual studio generator + * Source/cmake.cxx: fix incorrect selection of visual studio + generator 2004-08-04 10:45 king @@ -42497,8 +60815,7 @@ 2004-08-04 10:00 king - * Source/: cmake.cxx, MFCDialog/CMakeSetupDialog.cpp: BUG: Fixed - typo in name of MSVC 8 registry key. + * Source/cmake.cxx: BUG: Fixed typo in name of MSVC 8 registry key. 2004-08-04 08:50 andy @@ -42641,7 +60958,6 @@ Source/cmLocalUnixMakefileGenerator.cxx, Source/cmMakefile.cxx, Source/cmUseMangledMesaCommand.cxx, Source/cmake.cxx, Source/CursesDialog/cmCursesMainForm.cxx, - Source/MFCDialog/CMakeSetupDialog.cpp, Templates/CMakeWindowsSystemConfig.cmake, Templates/TestDriver.cxx.in: merge from main tree @@ -42708,11 +61024,6 @@ cmLocalVisualStudio7Generator.h: ENH: use a map to fill out flags, and keep command line consistent with the GUI -2004-07-14 16:09 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: Fix browse button to use - correct windows style initial directory - 2004-07-13 17:33 king * Source/kwsys/testProcess.c: BUG: Fixed off-by-one error in test6 @@ -42804,7 +61115,6 @@ Source/cmQTWrapUICommand.cxx, Source/cmSystemTools.cxx, Source/cmSystemTools.h, Source/cmTryRunCommand.cxx, Source/cmWin32ProcessExecution.cxx, Source/cmake.cxx, - Source/MFCDialog/CMakeSetupDialog.cpp, Source/kwsys/CMakeLists.txt, Source/kwsys/ProcessUNIX.c, Source/kwsys/SystemTools.cxx, Tests/SimpleInstall/CMakeLists.txt, Tests/SimpleInstall/inst.cxx, Tests/SimpleInstall/lib4.cxx, @@ -42839,9 +61149,8 @@ Source/cmGlobalVisualStudio8Generator.cxx, Source/cmGlobalVisualStudio8Generator.h, Source/cmLocalVisualStudio7Generator.cxx, - Source/cmLocalVisualStudio7Generator.h, Source/cmake.cxx, - Source/MFCDialog/CMakeSetupDialog.cpp: ENH: add support for - VCExpress 2005 + Source/cmLocalVisualStudio7Generator.h, Source/cmake.cxx: ENH: + add support for VCExpress 2005 2004-07-04 00:05 hoffman @@ -43345,14 +61654,6 @@ Source/CursesDialog/cmCursesMainForm.cxx, Source/CursesDialog/cmCursesPathWidget.cxx, Source/CursesDialog/cmCursesStringWidget.cxx, - Source/MFCDialog/CMakeCommandLineInfo.cpp, - Source/MFCDialog/CMakeLists.txt, Source/MFCDialog/CMakeSetup.rc, - Source/MFCDialog/CMakeSetupDialog.cpp, - Source/MFCDialog/CMakeSetupDialog.h, - Source/MFCDialog/PathDialog.cpp, - Source/MFCDialog/PropertyList.cpp, - Source/MFCDialog/PropertyList.h, Source/MFCDialog/StdAfx.h, - Source/MFCDialog/resource.h, Source/WXDialog/cmWXMainFrame.cxx, Source/kwsys/Base64.c, Source/kwsys/Base64.h.in, Source/kwsys/CMakeLists.txt, Source/kwsys/Configure.h.in, Source/kwsys/Configure.hxx.in, Source/kwsys/Copyright.txt, @@ -43455,8 +61756,7 @@ Tests/SwigTest/runme2.tcl, Tests/SystemInformation/CMakeLists.txt, Tests/SystemInformation/DumpInformation.cxx, - Tests/TryCompile/CMakeLists.txt, Tests/UseWX/CMakeLists.txt, - Tests/UseWX/WX.cxx, Tests/Wrapping/CMakeLists.txt, + Tests/TryCompile/CMakeLists.txt, Tests/Wrapping/CMakeLists.txt, Tests/Wrapping/vtkTestMoc.h, Utilities/Doxygen/CMakeLists.txt, Utilities/Doxygen/doxyfile.in, Utilities/Release/cmake_release.sh, @@ -43694,10 +61994,7 @@ Source/cmMacroCommand.cxx, Source/cmMakefile.cxx, Source/cmMakefile.h, Source/cmSetDirectoryPropertiesCommand.cxx, Source/cmSetDirectoryPropertiesCommand.h, - Source/cmSystemTools.cxx, Source/MFCDialog/CMakeSetup.rc, - Source/MFCDialog/CMakeSetupDialog.cpp, - Source/MFCDialog/CMakeSetupDialog.h, Source/MFCDialog/resource.h, - Tests/CommandLineTest/CMakeLists.txt, + Source/cmSystemTools.cxx, Tests/CommandLineTest/CMakeLists.txt, Tests/Simple/CMakeLists.txt, Tests/TryCompile/CMakeLists.txt: merges from the main tree @@ -43734,11 +62031,6 @@ additional make clean files as a directory property instead of cmake variable -2004-05-20 16:39 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: BUG: allow cursor to be - changed by the OS - 2004-05-20 16:35 hoffman * Tests/TryCompile/CMakeLists.txt: BUG: dont put the output of a @@ -43763,10 +62055,8 @@ 2004-05-20 15:08 martink - * Source/: cmCacheManager.cxx, cmCacheManager.h, - MFCDialog/CMakeSetup.rc, MFCDialog/CMakeSetupDialog.cpp, - MFCDialog/CMakeSetupDialog.h, MFCDialog/resource.h: updates to - gui to delete cache + * Source/: cmCacheManager.cxx, cmCacheManager.h: updates to gui to + delete cache 2004-05-20 13:15 martink @@ -43831,6 +62121,11 @@ * ChangeLog.manual: add a hand edited changelog +2004-05-13 16:17 hoffman + + * ChangeLog.manual: file ChangeLog.manual was added on branch + CMake-2-6 on 2008-03-30 13:09:04 +0000 + 2004-05-13 13:41 martink * Source/cmCTest.cxx: new feature for continuous clean once @@ -44275,10 +62570,6 @@ file exists, we actually want to read it... Should fix Bug #809 - FIND_INCLUDE should check readability -2004-04-29 13:13 hoffman - - * Source/MFCDialog/StdAfx.h: ENH: remove warning - 2004-04-29 12:33 hoffman * Source/: cmGetTargetPropertyCommand.cxx, @@ -44294,8 +62585,8 @@ 2004-04-28 13:40 hoffman - * Source/: cmAddExecutableCommand.h, MFCDialog/CMakeLists.txt: BUG: - fix for bug 121 add some docs for MFC flag + * Source/cmAddExecutableCommand.h: BUG: fix for bug 121 add some + docs for MFC flag 2004-04-28 13:21 hoffman @@ -44907,16 +63198,6 @@ cmake.cxx: ENH: make relative paths optional and default off, and add a test for them -2004-03-29 13:16 king - - * Source/MFCDialog/PropertyList.cpp: BUG#724: Merging 1.27->1.28 - changes to CMake 1.8 branch. - -2004-03-29 13:15 king - - * Source/MFCDialog/PropertyList.cpp: BUG#724: Preserving current - working directory during file selection. - 2004-03-29 12:51 king * Source/cmConfigureFileCommand.cxx: BUG#485: Fixing on CMake 1.8 @@ -45196,11 +63477,6 @@ * Source/kwsys/Directory.cxx: ERR: Merging 1.7->1.9 changes to CMake 1.8 branch. -2004-02-23 09:53 king - - * Source/MFCDialog/PathDialog.cpp: ERR: Merging 1.2 -> 1.3 warning - fix to CMake 1.8 branch. - 2004-02-22 22:07 andy * Source/: cmCMakeMinimumRequired.h, cmConfigureFileCommand.h, @@ -45271,10 +63547,6 @@ * Source/cmDynamicLoader.cxx: BUG: don't crash when loading a module that does not exist -2004-02-16 10:57 martink - - * Source/MFCDialog/PathDialog.cpp: shut up unfixable warning - 2004-02-16 10:48 hoffman * Source/: cmConfigure.cmake.h.in, cmDynamicLoader.cxx: ENH: use @@ -45521,9 +63793,8 @@ 2004-01-27 12:37 andy * Source/: cmFileCommand.cxx, cmInstallTargetsCommand.cxx, - cmLocalGenerator.cxx, cmLocalGenerator.h, cmTarget.h, - MFCDialog/CMakeLists.txt: ENH: Make install on windows seems to - work now + cmLocalGenerator.cxx, cmLocalGenerator.h, cmTarget.h: ENH: Make + install on windows seems to work now 2004-01-27 09:53 andy @@ -45897,11 +64168,6 @@ * Source/: cmCTest.cxx, kwsys/SystemTools.cxx: ENH: Only look for executable until found -2004-01-12 11:07 hoffman - - * Source/MFCDialog/PropertyList.cpp: BUG: make sure property list - is cleared between cache loadings - 2004-01-09 15:57 barre * Modules/: FindTCL.cmake, FindTclsh.cmake: ENH: make it a bit @@ -45973,11 +64239,6 @@ * Source/CMakeLists.txt: BUG: fix arguments to wxwindows test -2004-01-08 15:54 hoffman - - * Source/MFCDialog/CMakeCommandLineInfo.cpp: BUG: make sure - relative paths in command line options are expanded - 2004-01-08 09:59 hoffman * Source/: cmCTest.cxx, cmGlobalGenerator.cxx, cmake.cxx: BUG: make @@ -46163,8 +64424,7 @@ Source/cmTryCompileCommand.h, Source/cmWin32ProcessExecution.cxx, Source/cmake.cxx, Source/cmakemain.cxx, Source/cmakewizard.cxx, Source/cmakewizard.h, Source/CTest/cmCTestSubmit.cxx, - Source/CursesDialog/ccmake.cxx, Source/MFCDialog/CMakeSetup.cpp, - Source/WXDialog/CMakeLists.txt, Source/kwsys/ProcessUNIX.c, + Source/CursesDialog/ccmake.cxx, Source/kwsys/ProcessUNIX.c, Source/kwsys/ProcessWin32.c, Source/kwsys/SystemTools.cxx, Templates/EXEWinHeader.dsptemplate, Tests/Complex/Executable/CMakeLists.txt, @@ -46212,16 +64472,6 @@ FILE command and using WRITE_FILE instead. We would still like CMake 1.6 to be able to build CMake CVS, and kwsys is used. -2004-01-05 10:26 hoffman - - * Source/MFCDialog/PropertyList.cpp: ENH: reduce flicker - -2004-01-02 17:24 hoffman - - * Source/MFCDialog/: CMakeSetup.rc, CMakeSetupDialog.cpp, - PropertyList.cpp, PropertyList.h: ENH: fix bug with advanced - items loosing edit and do a better job sorting - 2004-01-02 10:23 martink * Modules/Dart.cmake: fix for multiple nexted projects @@ -47158,11 +65408,6 @@ * Source/: cmSystemTools.cxx, cmSystemTools.h: ENH: Added CreateSymlink method. -2003-11-26 14:30 hoffman - - * Source/MFCDialog/PropertyList.cpp: ENH: remove removecache entry - call - 2003-11-26 14:29 hoffman * Source/: cmGlobalVisualStudio6Generator.cxx, @@ -47648,15 +65893,6 @@ * Source/cmLocalVisualStudio7Generator.cxx: BUG: fix for unicode and for /D -D -2003-10-17 07:45 andy - - * Source/WXDialog/cmWXMainFrame.cxx: ENH: Fix problem with wx 2.4 - -2003-10-16 19:16 andy - - * Tests/UseWX/: CMakeLists.txt, WX.cxx: ENH: We do not really need - streams. Also fix the test on windows - 2003-10-16 19:15 andy * Source/CMakeLists.txt: ENH: Enable test on windows @@ -47774,9 +66010,8 @@ 2003-10-13 16:04 andy - * Source/CMakeLists.txt, Tests/UseWX/CMakeLists.txt, - Tests/UseWX/WX.cxx: ENH: Add test for FindwxWindows. Thanks to: - Mathieu Malaterre + * Source/CMakeLists.txt: ENH: Add test for FindwxWindows. Thanks + to: Mathieu Malaterre 2003-10-13 15:27 andy @@ -48094,9 +66329,9 @@ 2003-08-20 12:59 king - * Source/: cmakemain.cxx, CursesDialog/ccmake.cxx, - MFCDialog/CMakeSetup.cpp: ENH: Added documentation of specifying - an existing build tree as an argument. + * Source/: cmakemain.cxx, CursesDialog/ccmake.cxx: ENH: Added + documentation of specifying an existing build tree as an + argument. 2003-08-19 11:02 andy @@ -48283,11 +66518,6 @@ * Utilities/Release/: cmake_release.sh, config_Darwin, config_HP-UX, config_IRIX64, config_SunOS: Merge from 1.8 branch. -2003-08-11 17:35 king - - * Source/WXDialog/CMakeLists.txt: BUG: Need to check both - CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE and CMAKE_WX_CONFIG. - 2003-08-11 17:34 king * Source/cmCommands.cxx: BUG: Bootstrapping with wxWindows support @@ -48298,12 +66528,6 @@ * Modules/CMakeLists.txt: ENH: Installing readme.txt in Modules directory to be consistent with windows. -2003-08-11 17:10 king - - * Source/WXDialog/CMakeLists.txt: BUG: Need to use - CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE in place of CMAKE_WX_CONFIG - if it is set. - 2003-08-11 16:55 king * Utilities/Release/config_Darwin: Fixed wx location. @@ -48715,16 +66939,8 @@ 2003-08-06 14:49 king * Source/: cmDocumentation.cxx, cmDocumentation.h, cmakemain.cxx, - CursesDialog/ccmake.cxx, MFCDialog/CMakeSetup.cpp: ENH: Added - configuration of name of executable in man page header and - version banner. - -2003-08-06 13:48 king - - * Source/MFCDialog/CMakeSetupDialog.cpp: BUG: If a directory is - specified on the command line that is not an existing build tree, - we should still use any -G option that was given to set the - generator. + CursesDialog/ccmake.cxx: ENH: Added configuration of name of + executable in man page header and version banner. 2003-08-06 13:48 king @@ -49031,19 +67247,11 @@ * Source/cmExportLibraryDependencies.cxx: fix for bug # 101 -2003-08-01 08:47 martink - - * Source/MFCDialog/CMakeSetupDialog.cpp: more reverting back - 2003-07-31 16:43 hoffman * Source/cmLocalVisualStudio6Generator.cxx: BUG: when creating rule files remove the IntDir -2003-07-31 16:30 martink - - * Source/MFCDialog/CMakeSetupDialog.cpp: fix for spaces - 2003-07-31 15:32 hoffman * Source/cmTarget.cxx: ENH: add support for OBJECT_DEPENDS for @@ -49060,10 +67268,6 @@ matching for the libdrs with another IF (line 355). By: Jan Woetzel -2003-07-31 08:55 andy - - * Source/WXDialog/CMakeLists.txt: ENH: Fix wx test - 2003-07-31 08:50 andy * Tests/Wrapping/CMakeLists.txt: ERR: Attempt to fix wrapping on @@ -49094,14 +67298,10 @@ * Source/cmQTWrapUICommand.cxx: ENH: Allow qt ui files being it the binary dir. Bug #110 - QT_WRAP_UI problem on out-of-source builds -2003-07-30 13:14 andy - - * Source/WXDialog/CMakeLists.txt: ENH: Revert back - 2003-07-30 13:11 andy - * Source/: cmaketest.cxx, WXDialog/CMakeLists.txt: ENH: Also fail - when make failsSource/cmaketest.cxx + * Source/cmaketest.cxx: ENH: Also fail when make + failsSource/cmaketest.cxx 2003-07-30 13:10 andy @@ -49180,11 +67380,6 @@ Implemented QUIET argument propagation to FOO_FIND_QUIETLY setting in FindFOO.cmake module that is found. -2003-07-24 11:24 king - - * Source/MFCDialog/CMakeCommandLineInfo.cpp: BUG: Fix for network - path argument parsing. - 2003-07-24 11:12 andy * Source/cmGlob.cxx: ENH: On windows handle network paths @@ -49213,22 +67408,6 @@ * Utilities/CMakeLists.txt: ENH: Added build of documentation for CMakeSetup. -2003-07-23 17:40 king - - * Source/MFCDialog/CMakeSetup.cpp: ENH: Added support for - documentation options. - -2003-07-23 17:31 king - - * Source/MFCDialog/: CMakeCommandLineInfo.cpp, - CMakeCommandLineInfo.h: ENH: Added construction of original - command line in argc/argv style. - -2003-07-23 17:28 king - - * Source/MFCDialog/: CMakeSetupDialog.cpp, CMakeSetupDialog.h: ENH: - Improved behavior when run with arguments from the command line. - 2003-07-23 17:27 king * Source/: cmDocumentation.cxx, cmDocumentation.h: ENH: @@ -49413,11 +67592,6 @@ DumpInformation.h.in: ENH: Added dump of more files. Improved robustness of dump. -2003-07-15 12:52 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: ENH: remove local broken - implementation of convert to windows path - 2003-07-15 12:52 hoffman * Source/cmAddCustomCommandCommand.cxx: ENH: better error checking @@ -49558,12 +67732,6 @@ * Source/cmMakefile.cxx: BUG#65: Fixed inheritance of CMAKE_CURRENT_SOURCE_DIR and CMAKE_CURRENT_BINARY_DIR. -2003-07-08 13:12 hoffman - - * Source/MFCDialog/: CMakeSetupDialog.cpp, CMakeSetupDialog.h: ENH: - allow cancel and display of progress during cpu intensive - configure steps - 2003-07-08 09:21 andy * Source/kwsys/CMakeLists.txt: ENH: Fix example @@ -50485,9 +68653,8 @@ 2003-05-14 14:14 king - * Source/cmMakefile.h, Source/WXDialog/CMakeLists.txt, - Utilities/Release/cmake_release.sh: ENH: Updated version number - to 1.6.7 from 1.6.6. + * Source/cmMakefile.h, Utilities/Release/cmake_release.sh: ENH: + Updated version number to 1.6.7 from 1.6.6. 2003-05-14 12:10 king @@ -50500,11 +68667,6 @@ * Source/cmGlobalGenerator.cxx: BUG: Work-around for SGI MipsPro bug where #error doesn't return an error to make. -2003-05-14 10:34 king - - * Source/MFCDialog/: CMakeSetupDialog.cpp: ENH: Default generator - selection for VS 7.1 added. - 2003-05-14 09:27 andy * bootstrap: ENH: Add parallel build support, fix bug in verbose @@ -50582,8 +68744,7 @@ Source/cmLocalVisualStudio7Generator.cxx, Source/cmLocalVisualStudio7Generator.h, Source/cmRemoveCommand.cxx, Source/cmStringCommand.h, - Source/cmaketest.cxx, Source/MFCDialog/CMakeSetupDialog.cpp, - Tests/Complex/Executable/complex.cxx, + Source/cmaketest.cxx, Tests/Complex/Executable/complex.cxx, Tests/ComplexOneConfig/Executable/complex.cxx, Tests/ComplexRelativePaths/Executable/complex.cxx: BUG: Merged fixes from main tree into 1.6 branch. @@ -50723,10 +68884,6 @@ * Source/cmLocalUnixMakefileGenerator.cxx: ENH: Add support for make test even for fresh build of cmake -2003-05-03 16:15 andy - - * Source/WXDialog/CMakeLists.txt: Fix location of test - 2003-05-02 14:05 martink * Modules/Dart.cmake: fixed andy sloppy code again @@ -51325,15 +69482,9 @@ * Source/cmake.cxx: BUG: Fixed crash when CMAKE_BACKWARDS_COMPATIBILITY is deleted. -2003-03-13 11:34 king - - * Source/MFCDialog/CMakeSetup.rc: BUG: Fixed tab ordering in - dialog. - 2003-03-13 11:33 king - * Source/: cmMakefile.h, WXDialog/CMakeLists.txt: ENH: Updated - version for 1.6.6 release. + * Source/cmMakefile.h: ENH: Updated version for 1.6.6 release. 2003-03-13 11:31 king @@ -51453,26 +69604,11 @@ * Modules/Dart.cmake: Use more condense buildname. If this works fine we can make cmBuildName command deprecated -2003-02-27 10:53 king - - * Source/WXDialog/cmWXMainFrame.cxx: Remove warning about shadowing - variable (merging andy's change to head) - -2003-02-25 12:36 andy - - * Source/WXDialog/cmWXMainFrame.cxx: Remove warning about shadowing - variable - 2003-02-24 11:02 king * Source/cmake.cxx: BUG: Fixed crash when CMAKE_BACKWARDS_COMPATIBILITY is deleted between configures. -2003-02-21 15:52 king - - * Source/MFCDialog/CMakeSetup.rc: BUG: Fixed tab ordering of gui - components. - 2003-02-20 17:38 andy * Modules/Dart.cmake: Use simple defaults if DartConfig does not @@ -51487,11 +69623,6 @@ * Modules/CMakeVS6FindMake.cmake: BUG: look for msdev in the right place -2003-02-20 09:40 martink - - * Source/MFCDialog/CMakeSetupDialog.cpp: better default generator - choice - 2003-02-20 09:40 king * Utilities/Release/cmake_release.sh: ENH: Updated for 1.6.5 @@ -51548,9 +69679,8 @@ 2003-02-20 08:30 king - * Source/cmMakefile.h, Source/WXDialog/CMakeLists.txt, - Utilities/Release/cmake_release.sh: ENH: Updated for version - 1.6.5. + * Source/cmMakefile.h, Utilities/Release/cmake_release.sh: ENH: + Updated for version 1.6.5. 2003-02-20 08:28 king @@ -51755,9 +69885,8 @@ * CMakeLists.txt, configure, configure.in, Source/CMakeLists.txt, Source/cmConfigure.cmake.h.in, Source/cmConfigure.h.in, Source/cmMakefile.cxx, Source/cmMakefile.h, - Source/cmStandardIncludes.h, Source/WXDialog/CMakeLists.txt: ENH: - Centralized setting of CMake version number to top-level CMake - listfile. + Source/cmStandardIncludes.h: ENH: Centralized setting of CMake + version number to top-level CMake listfile. 2003-02-13 12:03 king @@ -51770,9 +69899,8 @@ 2003-02-13 11:54 king - * Source/cmMakefile.h, Source/WXDialog/CMakeLists.txt, - Utilities/Release/cmake_release.sh: ENH: Updated for 1.6.4 - release. + * Source/cmMakefile.h, Utilities/Release/cmake_release.sh: ENH: + Updated for 1.6.4 release. 2003-02-13 11:52 king @@ -51956,11 +70084,6 @@ testing. It does not support shared libraries, so we cannot run the complex tests. -2003-02-06 08:45 king - - * Source/WXDialog/CMakeLists.txt: BUG: We want AppleInfo.plist from - our source tree, not the version of CMake running the build. - 2003-02-05 22:26 hoffman * Source/: cmSystemTools.cxx, cmSystemTools.h, @@ -51981,11 +70104,6 @@ * Utilities/Release/cmake_release.sh: ENH: Added win32_zipfile and win32_upload commands. -2003-02-05 16:17 king - - * Source/WXDialog/CMakeLists.txt: BUG: AppleInfo.plist should come - from build tree. - 2003-02-05 15:14 king * Utilities/Release/cmake_release.sh: BUG: Updated release tag for @@ -51993,9 +70111,8 @@ 2003-02-05 15:07 king - * Source/cmMakefile.h, Source/WXDialog/CMakeLists.txt, - Utilities/Release/cmake_release.sh: ENH: Updated to version - 1.6.3. + * Source/cmMakefile.h, Utilities/Release/cmake_release.sh: ENH: + Updated to version 1.6.3. 2003-02-05 15:05 king @@ -52012,11 +70129,6 @@ * Source/CursesDialog/cmCursesLongMessageForm.cxx: BUG: Fixed crash when messages are too long. -2003-02-05 15:00 king - - * Source/MFCDialog/PropertyList.cpp: BUG: Fixed GUI for new - NOTFOUND checks. - 2003-02-05 14:58 king * Source/cmGlobalGenerator.cxx: BUG: Bug in NOTFOUND error @@ -52031,10 +70143,6 @@ * Source/: cmCacheManager.cxx, cmCacheManager.h: ENH: Better error checking for cache iterator. -2003-02-05 13:24 hoffman - - * Source/MFCDialog/PropertyList.cpp: ENH: add a check for -NOTFOUND - 2003-02-04 15:37 hoffman * Modules/CMakeSystemSpecificInformation.cmake: move cmake install @@ -52101,8 +70209,7 @@ 2003-02-03 11:50 king - * Source/: cmMakefile.h, WXDialog/CMakeLists.txt: ENH: Updated from - version 1.6.1 to 1.6.2. + * Source/cmMakefile.h: ENH: Updated from version 1.6.1 to 1.6.2. 2003-02-03 11:49 king @@ -52159,9 +70266,8 @@ 2003-01-31 13:24 king - * Source/cmMakefile.h, Source/WXDialog/CMakeLists.txt, - Utilities/Release/cmake_release.sh: ENH: Updated to version 1.6.1 - from 1.6.0. + * Source/cmMakefile.h, Utilities/Release/cmake_release.sh: ENH: + Updated to version 1.6.1 from 1.6.0. 2003-01-31 13:18 king @@ -52317,11 +70423,6 @@ * Modules/Platform/: HP-UX.cmake: BUG: Added missing link flag to export symbols from an executable. -2003-01-24 11:50 king - - * Source/WXDialog/CMakeLists.txt: ENH: Updated for cmake 1.6.0 - release. - 2003-01-24 11:49 king * Utilities/Release/cmake_release.sh: ENH: Updated for 1.6.0 @@ -52613,15 +70714,6 @@ * Utilities/Release/cmake_release.sh: ENH: Cygwin package is now created in a Cygwin subdirectory. -2003-01-17 13:14 king - - * Source/WXDialog/CMakeLists.txt: ENH: Updated version number for - 1.6.beta2 release. - -2003-01-17 12:51 andy - - * Source/WXDialog/CMakeLists.txt: Fix version - 2003-01-17 11:57 king * Utilities/Release/: cmake-cygwin-package.sh, cmake_release.sh, @@ -53258,19 +71350,10 @@ * Source/: cmCPluginAPI.h: updated version -2003-01-06 10:58 king - - * Source/WXDialog/CMakeLists.txt: ERR: Fixed space problem for OSX - and Rez. - 2003-01-06 10:43 martink * CMake.rtf: updated docs -2003-01-06 10:37 king - - * Source/WXDialog/CMakeLists.txt: ENH: Fixed space problem for Rez. - 2003-01-06 09:39 martink * Source/: cmMakefile.h: update version @@ -53892,13 +71975,6 @@ * Source/: cmITKWrapTclCommand.cxx, cmITKWrapTclCommand.h: ENH: update to new style MakeDepend -2002-12-10 14:51 barre - - * Source/MFCDialog/CMakeSetupDialog.cpp: FIX: drag&drop on CMake - icon was not working anymore. - the cmake instance had to be - created before accessing the cache (doh) - the cache iterator was - not queried properly (seems the API changed) - 2002-12-10 14:12 hoffman * Source/cmUnixMakefileGenerator.cxx: BUG: make sure empty depends @@ -53948,11 +72024,6 @@ * Modules/CMakeImportBuildSettings.cmake: ENH: Using only filename without path or extension for comparing build tools. -2002-12-09 10:07 hoffman - - * Source/MFCDialog/: CMakeSetup.cpp, CMakeSetupDialog.cpp, - CMakeSetupDialog.h: clean up leaks - 2002-12-09 08:27 hoffman * Modules/: CMakeVS6BackwardCompatibility.cmake, @@ -53978,11 +72049,6 @@ * Templates/CMakeLists.txt: ERR: Remove references to files removed 4 days ago -2002-12-06 16:03 hoffman - - * Source/MFCDialog/: CMakeSetup.rc, CMakeSetupDialog.cpp, - CMakeSetupDialog.h: ENH: move version to title bar - 2002-12-06 15:35 hoffman * Source/: cmGlobalUnixMakefileGenerator.cxx, @@ -54021,16 +72087,6 @@ * Source/cmDynamicLoader.cxx: fix free before use -2002-12-05 15:54 hoffman - - * Source/MFCDialog/PropertyList.cpp: ENH: add status bar and help - for items - -2002-12-05 15:48 hoffman - - * Source/MFCDialog/: CMakeSetup.rc, CMakeSetupDialog.cpp, - PropertyList.cpp: ENH: add status bar and help for items - 2002-12-05 14:56 hoffman * Source/: cmCacheManager.cxx, cmLocalUnixMakefileGenerator.cxx: @@ -54073,11 +72129,6 @@ LoadCommandOneConfig/LoadedCommand.cxx, LoadCommandOneConfig/LoadedCommand.h.in: Speedup the test -2002-12-05 11:42 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: BUG: make sure OK can not - be hit first time around - 2002-12-05 11:09 martink * Source/cmGlobalVisualStudio7Generator.h: use InAll target setting @@ -54164,16 +72215,6 @@ Templates/CMakeNMakeWindowsSystemConfig.cmake, Templates/CXXCMakeSystemConfig.cmake.in: remove unused files -2002-12-03 14:32 martink - - * Source/MFCDialog/CMakeSetupDialog.cpp: remove code warrior and - fixed GUI isues - -2002-12-03 14:27 martink - - * Source/MFCDialog/CMakeSetup.rc: remove code warrior and fixed GUI - isues - 2002-12-03 14:15 ibanez * Modules/FindImageMagick.cmake: Module to find tools from the @@ -54182,10 +72223,8 @@ 2002-12-03 14:09 martink - * Source/: CMakeLists.txt, Makefile.in, cmake.cxx, - MFCDialog/CMakeSetup.rc, MFCDialog/CMakeSetupDialog.cpp, - MFCDialog/CMakeSetupDialog.h: remove code warrior and fixed GUI - isues + * Source/: CMakeLists.txt, Makefile.in, cmake.cxx: remove code + warrior and fixed GUI isues 2002-12-03 13:46 ibanez @@ -54644,11 +72683,6 @@ * Source/cmakemain.cxx: Oops, std namespace -2002-11-14 18:18 andy - - * Source/WXDialog/: cmWXMainFrame.cxx, cmWXMainFrame.h, - wxCMakeSetup.cxx: Add progress reporting - 2002-11-14 17:12 andy * Source/cmakemain.cxx: Add Progress support @@ -54984,9 +73018,8 @@ Source/cmStandardIncludes.h, Source/cmSystemTools.cxx, Source/cmSystemTools.h, Source/cmTryCompileCommand.cxx, Source/cmWin32ProcessExecution.cxx, - Source/cmWin32ProcessExecution.h, Source/ctest.cxx, - Source/MFCDialog/CMakeSetupDialog.cpp: Complete rework of - makefile generators expect trouble + Source/cmWin32ProcessExecution.h, Source/ctest.cxx: Complete + rework of makefile generators expect trouble 2002-11-08 13:28 hoffman @@ -55082,10 +73115,6 @@ * Source/: cmake.cxx, cmake.h: Revert back -2002-11-07 09:01 andy - - * Source/WXDialog/ReadMe.Mac.txt: Add readme for mac - 2002-11-06 23:25 hoffman * Source/: cmGlobalNMakeMakefileGenerator.cxx, @@ -55141,30 +73170,16 @@ 2002-11-06 16:05 andy - * Source/WXDialog/CMakeLists.txt, Templates/AppleInfo.plist: Use - CMake icon on Mac + * Templates/AppleInfo.plist: Use CMake icon on Mac 2002-11-06 14:56 andy - * CMakeIcon.icns, Source/WXDialog/CMakeIcon.icns: Add Mac icon + * CMakeIcon.icns: Add Mac icon 2002-11-06 14:54 andy * CMakeIcon.icns: Add CMake icon -2002-11-06 14:53 andy - - * Source/WXDialog/CMakeIcon.gif: Remove background and make bigger - -2002-11-06 14:44 andy - - * Source/WXDialog/CMakeIcon.gif: Bigger icon - -2002-11-06 14:33 andy - - * Source/WXDialog/: CMakeIcon.gif, CMakeIcon.xpm, - cmWXMainFrame.cxx: Start adding CMake icon - 2002-11-06 13:06 andy * Source/: cmSystemTools.cxx, cmSystemTools.h, ctest.cxx: Move the @@ -55283,10 +73298,6 @@ cmLocalUnixMakefileGenerator.cxx: fix backwards compat enable and remove full path target -2002-11-05 09:38 andy - - * Source/WXDialog/CMakeLists.txt: More mac fixes - 2002-11-05 08:52 andy * Source/CursesDialog/: cmCursesFilePathWidget.cxx, @@ -55337,14 +73348,6 @@ Source/cmSystemTools.h, Source/cmTryCompileCommand.cxx: nmake passing tests -2002-11-04 15:21 andy - - * Source/WXDialog/CMakeLists.txt: Get the Mac resources done - -2002-11-04 15:01 andy - - * Source/WXDialog/CMakeLists.txt: Minor fixes - 2002-11-04 15:01 andy * Source/cmWriteFileCommand.cxx: Make directory if it does not @@ -55352,13 +73355,8 @@ 2002-11-04 14:50 andy - * Source/WXDialog/CMakeLists.txt, Templates/AppleInfo.plist: - Attempt to automate apple gui generation - -2002-11-04 13:09 andy - - * Source/WXDialog/cmWXMainFrame.cxx: Try to fix generator problems - on Mac + * Templates/AppleInfo.plist: Attempt to automate apple gui + generation 2002-11-04 11:54 andy @@ -55386,11 +73384,6 @@ * Tests/X11/X11.c: Try to make test to run -2002-11-01 23:00 hoffman - - * Source/MFCDialog/: CMakeSetup.rc, CMakeSetupDialog.cpp, - CMakeSetupDialog.h, resource.h: ENH: better resize - 2002-11-01 22:57 hoffman * Source/CMakeLists.txt: make qt stuff advanced @@ -55666,17 +73659,10 @@ CursesDialog/cmCursesStandardIncludes.h, CursesDialog/cmCursesStringWidget.cxx, CursesDialog/cmCursesStringWidget.h, - CursesDialog/cmCursesWidget.cxx, CursesDialog/cmCursesWidget.h, - MFCDialog/CMakeCommandLineInfo.h, MFCDialog/CMakeSetup.h, - MFCDialog/CMakeSetupDialog.h, MFCDialog/MakeHelp.h, - MFCDialog/PathDialog.h, MFCDialog/PropertyList.h, - MFCDialog/StdAfx.h, WXDialog/cmWXCacheProperty.cxx, - WXDialog/cmWXCacheProperty.h, WXDialog/cmWXCommandLineInfo.cxx, - WXDialog/cmWXCommandLineInfo.h, WXDialog/cmWXMainFrame.cxx, - WXDialog/cmWXMainFrame.h, WXDialog/wxCMakeSetup.cxx: ENH: Added - reference to Copyright.txt. Removed old reference to ITK - copyright. Changed program name to CMake instead of Insight in - source file header. Also removed tabs. + CursesDialog/cmCursesWidget.cxx, CursesDialog/cmCursesWidget.h: + ENH: Added reference to Copyright.txt. Removed old reference to + ITK copyright. Changed program name to CMake instead of Insight + in source file header. Also removed tabs. 2002-10-23 16:57 hoffman @@ -55888,8 +73874,7 @@ 2002-10-10 08:11 andy - * Source/: cmSetCommand.cxx, WXDialog/cmWXMainFrame.cxx: Remove - warning + * Source/cmSetCommand.cxx: Remove warning 2002-10-10 08:11 andy @@ -55901,11 +73886,6 @@ * Source/: cmDynamicLoader.cxx, cmaketest.cxx: Remove memory leak caused by cmDynamicLoader not being deleted properly -2002-10-09 16:26 andy - - * Source/WXDialog/: cmWXMainFrame.cxx, cmWXMainFrame.h: Try to add - enter support - 2002-10-09 15:54 martink * Tests/: Complex/CMakeLists.txt, Complex/cmTestConfigure.h.in, @@ -56063,11 +74043,6 @@ * Source/cmCacheManager.cxx: Remove tabs -2002-10-04 12:56 barre - - * Source/MFCDialog/CMakeSetupDialog.cpp: FIX: re-enable the OK - button in RunCmake() when everything is done. - 2002-10-04 12:30 andy * Source/cmCacheManager.cxx: Fix reading of advanced values from @@ -56219,9 +74194,8 @@ 2002-09-30 16:25 hoffman - * Source/: Makefile.in, cmDynamicLoader.cxx, cmakemain.cxx, - MFCDialog/CMakeSetup.cpp: BUG: fix load command stuff for cygwin - and cleanup at exit + * Source/: Makefile.in, cmDynamicLoader.cxx, cmakemain.cxx: BUG: + fix load command stuff for cygwin and cleanup at exit 2002-09-30 15:05 martink @@ -56358,9 +74332,7 @@ 2002-09-26 15:13 martink * Source/: cmake.h, cmake.cxx, cmGlobalGenerator.cxx, - cmGlobalGenerator.h, MFCDialog/CMakeSetup.rc, - MFCDialog/CMakeSetupDialog.cpp, MFCDialog/resource.h: added - progress + cmGlobalGenerator.h: added progress 2002-09-26 13:52 martink @@ -56409,10 +74381,6 @@ * Source/: cmSystemTools.cxx, cmSystemTools.h: Add detection of file format from extension -2002-09-25 07:47 andy - - * Source/WXDialog/cmWXMainFrame.cxx: Remove warnings - 2002-09-25 07:46 andy * Source/cmGlobalGenerator.cxx: Attempt to make NMake quiet during @@ -56441,12 +74409,6 @@ * Modules/: CheckLibraryExists.cmake, CheckLibraryExists.lists.in: Initial attempt to check if library exists -2002-09-24 16:20 andy - - * Source/WXDialog/: cmWXMainFrame.cxx, cmWXMainFrame.h: Some GUI - improvements and fix the way dirty is being set, so that if there - are no cache values, dirty is not set - 2002-09-24 16:20 andy * Modules/CheckSizeOf.cmake: Improve check size of. Now it checks @@ -56571,9 +74533,8 @@ 2002-09-23 13:32 andy - * Source/: cmSystemTools.cxx, cmTryCompileCommand.cxx, - WXDialog/cmWXCommandLineInfo.cxx, WXDialog/cmWXMainFrame.cxx, - WXDialog/wxCMakeSetup.cxx: Try to remove some warnings + * Source/: cmSystemTools.cxx, cmTryCompileCommand.cxx: Try to + remove some warnings 2002-09-23 13:11 andy @@ -56645,16 +74606,10 @@ * Source/cmWriteFileCommand.cxx: Fix namespace problem -2002-09-20 15:45 andy - - * Source/WXDialog/wxincludes.h: Add missing include - 2002-09-20 15:01 andy - * Modules/CheckFunctionExists.cmake, - Modules/CheckIncludeFile.cmake, Modules/CheckSizeOf.cmake, - Source/WXDialog/cmWXMainFrame.cxx: Fix tests for new trycompile - and tryrun + * Modules/: CheckFunctionExists.cmake, CheckIncludeFile.cmake, + CheckSizeOf.cmake: Fix tests for new trycompile and tryrun 2002-09-20 15:01 andy @@ -56720,37 +74675,11 @@ LoadCommandOneConfig/CMakeCommands/cmTestCommand.c: removed c++ style comments -2002-09-20 09:53 andy - - * Source/WXDialog/wxincludes.h: Fix includes - 2002-09-20 08:07 martink * Source/: cmTryRunCommand.h, cmTryRunCommand.cxx: compiler warnings -2002-09-19 17:35 andy - - * Source/WXDialog/CMakeLists.txt: Add test for gui - -2002-09-19 17:35 andy - - * Source/WXDialog/cmWXCommandLineInfo.cxx: Fix arguments - -2002-09-19 17:35 andy - - * Source/WXDialog/wxCMakeSetup.cxx: Allow argument Q - -2002-09-19 17:23 andy - - * Source/WXDialog/: cmWXMainFrame.cxx, cmWXMainFrame.h: Add support - for exiting after loading - -2002-09-19 17:20 andy - - * Source/WXDialog/: cmWXCommandLineInfo.cxx, cmWXCommandLineInfo.h: - Add option -Q for existing after loading - 2002-09-19 16:12 hoffman * Source/cmBorlandMakefileGenerator.cxx: ENH: allow for long @@ -56821,15 +74750,6 @@ * Source/cmTryRunCommand.cxx: minor cleanup -2002-09-19 11:00 andy - - * Source/WXDialog/wxincludes.h: Fix all defines on Windows - -2002-09-19 10:56 andy - - * Source/WXDialog/CMakeLists.txt: Fix executable to be WIN32 on - windows - 2002-09-19 10:25 andy * Modules/FindwxWindows.cmake: Fix find wxWindows @@ -56843,32 +74763,15 @@ * Source/: cmTryRunCommand.cxx, cmTryRunCommand.h: new command -2002-09-19 09:48 andy - - * Source/WXDialog/CMakeLists.txt: Remove unnecessary message - 2002-09-19 09:47 andy * Source/CMakeLists.txt: Add option for building wxWindows GUI for CMake -2002-09-19 09:47 andy - - * Source/WXDialog/: CMakeLists.txt, cmWXCacheProperty.cxx, - cmWXCacheProperty.h, cmWXCommandLineInfo.cxx, - cmWXCommandLineInfo.h, cmWXMainFrame.cxx, cmWXMainFrame.h, - wxCMakeSetup.cxx, wxincludes.h: Initial import of wxWindows - dialog - 2002-09-19 09:42 andy * Modules/FindwxWindows.cmake: Improve searching for wxWindows -2002-09-18 14:30 andy - - * Source/MFCDialog/CMakeSetupDialog.cpp: Fix callback for the new - API - 2002-09-18 14:18 andy * Source/: cmSystemTools.cxx, cmSystemTools.h, @@ -56966,9 +74869,8 @@ 2002-09-17 13:59 martink - * Source/: cmMakefile.cxx, cmake.cxx, cmake.h, cmakewizard.cxx, - MFCDialog/CMakeSetupDialog.cpp: cleaned up some of the cmake - interface + * Source/: cmMakefile.cxx, cmake.cxx, cmake.h, cmakewizard.cxx: + cleaned up some of the cmake interface 2002-09-17 13:59 martink @@ -57141,10 +75043,6 @@ * Source/: cmEndIfCommand.cxx, cmLocalUnixMakefileGenerator.cxx: compiler warning -2002-09-13 08:12 martink - - * Source/MFCDialog/CMakeSetup.cpp: duh - 2002-09-13 05:39 iscott * Modules/FindQt.cmake: Need to use $ENV{} to access environment @@ -57266,10 +75164,6 @@ * Source/CursesDialog/cmCursesMainForm.cxx: Fix problem with ccmake crashing on empty caches -2002-09-11 14:38 andy - - * Source/MFCDialog/CMakeSetupDialog.cpp: Fix MFC GUI - 2002-09-11 14:38 andy * Source/cmCacheManager.cxx: Fix find and remove check for @@ -57481,16 +75375,14 @@ 2002-09-06 13:04 martink - * Source/: cmMakefile.cxx, cmMakefile.h, cmakemain.cxx, - cmakewizard.cxx, CMakeLists.txt, Makefile.in, + * Source/: cmakewizard.cxx, CMakeLists.txt, Makefile.in, cmGlobalGenerator.cxx, cmGlobalUnixMakefileGenerator.cxx, cmLocalUnixMakefileGenerator.cxx: new arch -2002-09-06 13:00 martink +2002-09-06 13:01 martink - * Source/: MFCDialog/CMakeSetupDialog.cpp, - MFCDialog/CMakeSetupDialog.h, cmaketest.cxx, cmake.cxx, cmake.h: - new arch + * Source/: cmaketest.cxx, cmake.cxx, cmake.h, cmMakefile.cxx, + cmMakefile.h, cmakemain.cxx: new arch 2002-09-06 13:00 martink @@ -57737,11 +75629,8 @@ cmNMakeMakefileGenerator.cxx, cmNMakeMakefileGenerator.h, cmUnixMakefileGenerator.cxx, cmUnixMakefileGenerator.h, cmVariableRequiresCommand.cxx, cmake.cxx, cmake.h, cmakemain.cxx, - cmakewizard.cxx, cmakewizard.h, MFCDialog/CMakeSetup.cpp, - MFCDialog/CMakeSetupDialog.cpp, MFCDialog/CMakeSetupDialog.h, - MFCDialog/PropertyList.cpp, MFCDialog/PropertyList.h: changed - cache manager and registered generators to no longer be - singletons + cmakewizard.cxx, cmakewizard.h: changed cache manager and + registered generators to no longer be singletons 2002-08-28 14:49 martink @@ -57878,10 +75767,9 @@ * Source/: CMakeLists.txt, cmCacheManager.cxx, cmCacheManager.h, cmake.cxx, cmake.h, cmakemain.cxx, cmaketest.cxx, - CursesDialog/CMakeLists.txt, CursesDialog/form/CMakeLists.txt, - MFCDialog/CMakeSetup.cpp: BUG: add explicit clean up of the - cachemanager at exit of programs, so dll destruction is not a - problem. + CursesDialog/CMakeLists.txt, CursesDialog/form/CMakeLists.txt: + BUG: add explicit clean up of the cachemanager at exit of + programs, so dll destruction is not a problem. 2002-08-23 09:09 hoffman @@ -57968,11 +75856,6 @@ * Source/: cmMakefile.cxx, cmMakefile.h, cmCPluginAPI.cxx: minor bug -2002-08-21 12:02 martink - - * Source/MFCDialog/: CMakeLists.txt, CMakeSetupDialog.cpp: support - for dll - 2002-08-21 12:01 martink * Source/: cmMakefileGenerator.h, cmMakefile.h: dll support @@ -58243,19 +76126,13 @@ 2002-08-02 08:50 martink * Source/: cmFindLibraryCommand.cxx, cmLinkLibrariesCommand.cxx, - MFCDialog/CMakeSetupDialog.cpp, cmMakefile.h: updates from the - main tree + cmMakefile.h: updates from the main tree 2002-08-01 23:05 barre * Source/cmFindLibraryCommand.cxx: FIX: put ExpandRegistryValue() back (seems to have been removed accidentally I guess in 1.25) -2002-08-01 16:23 barre - - * Source/MFCDialog/CMakeSetupDialog.cpp: FIX: stupid pb fixed - (close to being medieval'ed by The Ken) - 2002-08-01 15:58 martink * Source/cmLinkDirectoriesCommand.cxx: no longer need an argument @@ -58268,12 +76145,7 @@ Source/cmNMakeMakefileGenerator.h, Source/cmSystemTools.cxx, Source/cmUnixMakefileGenerator.cxx, Source/cmUnixMakefileGenerator.h, Source/cmVTKWrapTclCommand.cxx, - Source/cmake.cxx, Source/MFCDialog/CMakeCommandLineInfo.cpp, - Source/MFCDialog/CMakeCommandLineInfo.h, - Source/MFCDialog/CMakeSetup.cpp, - Source/MFCDialog/CMakeSetupDialog.cpp, - Source/MFCDialog/CMakeSetupDialog.h, - Tests/Complex/CMakeLists.txt, + Source/cmake.cxx, Tests/Complex/CMakeLists.txt, Tests/ComplexOneConfig/CMakeLists.txt, Tests/ComplexRelativePaths/CMakeLists.txt, Tests/TestDriver/CMakeLists.txt, Tests/TestDriver/test1.cxx, @@ -58303,11 +76175,6 @@ * Source/cmCreateTestSourceList.cxx: fixed support for C test programs -2002-07-31 10:34 barre - - * Source/MFCDialog/CMakeSetupDialog.cpp: FIX: ConvertToOutputPath - puts "" around path. Not compatible with GUI use. - 2002-07-31 09:29 barre * Source/cmCreateTestSourceList.cxx: FIX: is enough to @@ -58392,12 +76259,6 @@ * Utilities/cmake_release_config_irix: ENH: Added release script configuration for IRIX build. -2002-07-22 10:57 barre - - * Source/MFCDialog/CMakeSetupDialog.cpp: ENH: better Drag&Drop, and - change source dir automatically when build dir is changed in the - GUI - 2002-07-22 10:40 martink * Source/cmMakefile.h: updated to patch 1 @@ -58423,18 +76284,6 @@ * Source/: cmIncludeDirectoryCommand.cxx, cmLinkLibrariesCommand.cxx: allows no arguments -2002-07-21 19:12 barre - - * Source/MFCDialog/CMakeSetupDialog.cpp: ENH: add Drag & Drop - (directory, file, or CMakeCache), support for Shortcut too - -2002-07-21 15:56 barre - - * Source/MFCDialog/: CMakeCommandLineInfo.cpp, - CMakeCommandLineInfo.h, CMakeSetupDialog.cpp, CMakeSetupDialog.h: - ENH: add Drag & Drop (directory, file, or CMakeCache), support - for Shortcut too - 2002-07-20 08:55 martink * Source/cmAddDefinitionsCommand.cxx: modified to accept no @@ -59017,10 +76866,6 @@ make all OpenGL libs advanced, and add support for glu lib with Borland -2002-06-12 09:46 hoffman - - * Source/MFCDialog/CMakeSetup.cpp: fix warning - 2002-06-11 14:54 martink * Source/: cmMSDotNETGenerator.cxx, cmMSDotNETGenerator.h, @@ -59139,10 +76984,6 @@ * Source/cmMakefile.h: updated rev -2002-06-05 13:24 martink - - * Source/MFCDialog/CMakeSetup.dsp: now uses bootstrap - 2002-06-05 13:22 martink * Source/ccommand.cxx: merged ccommand into cmake @@ -59376,11 +77217,6 @@ * Source/Makefile.borland: ENH: add clean command -2002-05-08 09:43 hoffman - - * Source/MFCDialog/CMakeCommandLineInfo.cpp: ENH: take cmake style - command line options so edit_cache works - 2002-05-08 09:05 hoffman * Source/cmake.cxx: ENH: fix cmake to work without ccommand. @@ -59482,12 +77318,6 @@ * Source/cmTarget.cxx: BUG: if a_LIBS_DEPENDS exists but is empty, there are no explicit dependencies. -2002-05-01 22:03 millerjv - - * Source/MFCDialog/PropertyList.cpp: FIX: If current selection was - "NOTFOUND", then selecting the browser would crash since a - "/" could not be found in the current selection. - 2002-05-01 16:33 perera * Source/cmAddLibraryCommand.cxx, Source/cmAddLibraryCommand.h, @@ -59599,11 +77429,6 @@ * Source/cmMakefile.cxx: BUG: make sure link directories are not duplicated -2002-04-29 09:20 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: BUG: remove warning about - changing generators - 2002-04-29 08:27 hoffman * Templates/: cconfigure, cconfigure.in: use multiple rpath options @@ -59671,11 +77496,6 @@ * Modules/Dart.cmake, Source/cmSiteNameCommand.cxx: fix up hostname for windows -2002-04-25 13:11 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: ENH: give a warning when - switching generators to match the cache - 2002-04-25 13:09 hoffman * Source/cmake.cxx: ENH: check for mismatched generators @@ -59687,8 +77507,8 @@ 2002-04-24 10:08 andy - * Source/: .cvsignore, MFCDialog/.cvsignore: Add cvsignore so that - you do not see visual stufio files when you do cvs update + * Source/.cvsignore: Add cvsignore so that you do not see visual + stufio files when you do cvs update 2002-04-23 16:16 berk @@ -59756,10 +77576,6 @@ * Source/: CMakeLists.txt, cmCommands.cxx, cmRemoveCommand.cxx, cmRemoveCommand.h: updated for 1.4 -2002-04-22 11:49 martink - - * Source/MFCDialog/CMakeLists.txt: updated - 2002-04-19 15:28 hoffman * Source/cmTargetLinkLibrariesCommand.cxx, @@ -59932,11 +77748,6 @@ * Source/cmSystemTools.cxx: ENH: more paranoid checkings -2002-04-12 13:28 barre - - * Source/MFCDialog/CMakeSetup.rc: ENH: make GUI slighlty larger to - accomodate long paths - 2002-04-12 12:05 barre * Source/cmSystemTools.cxx: FIX: iostream binary flag should be @@ -60560,19 +78371,8 @@ 2002-03-20 13:16 hoffman - * CMakeLists.txt, Source/CMakeLists.txt, - Source/FLTKDialog/CMakeLists.txt, - Source/FLTKDialog/CMakeSetupGUI.fl, - Source/FLTKDialog/CMakeSetupGUIImplementation.cxx, - Source/FLTKDialog/CMakeSetupGUIImplementation.h, - Source/FLTKDialog/FLTKDialog.cxx, - Source/FLTKDialog/FLTKDialog.dsp, - Source/FLTKDialog/FLTKPropertyItemRow.cxx, - Source/FLTKDialog/FLTKPropertyItemRow.h, - Source/FLTKDialog/FLTKPropertyList.cxx, - Source/FLTKDialog/FLTKPropertyList.h, - Source/FLTKDialog/Makefile.in: ENH: remove fltk dialog as it is - no longer supported + * CMakeLists.txt, Source/CMakeLists.txt: ENH: remove fltk dialog as + it is no longer supported 2002-03-19 12:25 andy @@ -60643,11 +78443,6 @@ ENH: overhaul of RunCommand on windows, if only win32 had popen... -2002-03-13 15:29 hoffman - - * Source/MFCDialog/: CMakeSetup.cpp, CMakeSetupDialog.cpp, - PathDialog.cpp: Remove warnings - 2002-03-13 14:23 martink * Source/: cmDSPWriter.cxx, cmDSWWriter.cxx: ENH: closer to working @@ -60929,10 +78724,6 @@ * Modules/FindDart.cmake: ENH: look for Dart in c: -2002-02-25 12:47 hoffman - - * Source/MFCDialog/PathDialog.h: ENH: fix warning - 2002-02-25 11:58 barre * Source/cmSubdirCommand.cxx: ENH: Expand vars in SUBDIRS @@ -60995,10 +78786,6 @@ * Source/cmaketest.cxx: add ifdef for windows function -2002-02-20 15:27 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: dot net port - 2002-02-20 15:26 hoffman * Source/: cmMSDotNETGenerator.cxx, cmaketest.cxx: close to dot net @@ -61018,15 +78805,6 @@ * Source/: Makefile.borland, CMakeLists.txt: ENH: add dotnet stuff -2002-02-19 10:23 ibanez - - * Source/FLTKDialog/FLTKDialog.cxx: FIX: FLTK includes should use - ".H" instead of ".h" - -2002-02-19 09:43 hoffman - - * Source/MFCDialog/CMakeSetup.rc: fix spacing on text - 2002-02-19 09:43 hoffman * Source/: CMakeLib.dsp, CMakeLists.txt: add dot net stuff to @@ -61039,10 +78817,6 @@ cmVCProjWriter.h: getting closer but still not working dot net support -2002-02-18 14:50 hoffman - - * Source/MFCDialog/CMakeSetup.dsp: [no log message] - 2002-02-18 14:36 hoffman * Source/: CMakeLib.dsp, cmMSDotNETGenerator.cxx, @@ -61100,12 +78874,6 @@ * Tests/Wrapping/: CMakeLists.txt, dummy: ENH: Trick VTK_WRAP_JAVA in a better way (avoid CUSTOM_TARGET) -2002-02-11 09:20 hoffman - - * Source/MFCDialog/: CMakeSetup.rc, PropertyList.cpp, - PropertyList.h, resource.h: ENH: add IGNORE option for cache - values - 2002-02-08 15:52 hoffman * Source/cmSystemTools.cxx: BUG: fix CollapseFullPath so a trailing @@ -61273,12 +79041,6 @@ ComplexRelativePaths/CMakeLists.txt: BUG: must use ANSI flags for complex test now. -2002-01-21 15:39 will - - * Source/FLTKDialog/: CMakeSetupGUIImplementation.cxx, - FLTKDialog.cxx, FLTKPropertyItemRow.cxx, FLTKPropertyList.cxx: - ENH:Updated copyright - 2002-01-21 15:30 barre * Tests/: Complex/Executable/complex.cxx, @@ -61389,13 +79151,8 @@ CursesDialog/cmCursesStandardIncludes.h, CursesDialog/cmCursesStringWidget.cxx, CursesDialog/cmCursesStringWidget.h, - CursesDialog/cmCursesWidget.cxx, CursesDialog/cmCursesWidget.h, - FLTKDialog/CMakeSetupGUIImplementation.h, - FLTKDialog/FLTKPropertyItemRow.h, FLTKDialog/FLTKPropertyList.h, - MFCDialog/CMakeCommandLineInfo.h, MFCDialog/CMakeSetup.h, - MFCDialog/CMakeSetupDialog.h, MFCDialog/MakeHelp.h, - MFCDialog/PathDialog.h, MFCDialog/PropertyList.h, - MFCDialog/StdAfx.h, MFCDialog/resource.h: ENH:Updated copyright + CursesDialog/cmCursesWidget.cxx, CursesDialog/cmCursesWidget.h: + ENH:Updated copyright 2002-01-21 15:11 will @@ -61901,10 +79658,6 @@ * Source/cmConfigureFileCommand.cxx: Add space to output -2002-01-09 17:22 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: make it a modal dialog - 2002-01-08 17:18 hoffman * Source/cmBorlandMakefileGenerator.cxx: BUG: need a larger default @@ -61966,11 +79719,6 @@ network drives. ENH: CollapseFullPath() no longer adds a trailing "/" to directory paths. -2002-01-04 09:23 martink - - * Source/MFCDialog/: CMakeSetup.rc, CMakeSetupDialog.cpp: added - release version - 2002-01-03 16:02 andy * Source/: cmAddCustomCommandCommand.cxx, @@ -62031,14 +79779,6 @@ because it gets cut on the hp: I may look like berk, but it is bill H. -2001-12-28 17:01 hoffman - - * Source/MFCDialog/MakeHelp.cpp: ENH: use the correct case - -2001-12-28 17:00 hoffman - - * Source/MFCDialog/CMakeSetup.dsp: DO NOT USE INCREMENTAL - 2001-12-28 17:00 hoffman * Source/: cmNMakeMakefileGenerator.cxx, @@ -62082,17 +79822,6 @@ * Source/cmAddDependenciesCommand.cxx: ENH: add error checking -2001-12-21 18:25 barre - - * Source/MFCDialog/CMakeSetupDialog.cpp: Fix: the generator choice - value was hardcoded and overrode the value passed as a - command-line param (desktop shortcuts) - -2001-12-21 16:19 barre - - * Source/MFCDialog/: CMakeSetupDialog.cpp: Fix: vars that have just - become ADVANCED should be removed from the GUI - 2001-12-21 15:39 hoffman * Source/: cmNMakeMakefileGenerator.cxx, @@ -62417,17 +80146,6 @@ GENERATED_CODE type is no longer needed: generated code is not a Target. -2001-12-11 02:15 ibanez - - * Source/FLTKDialog/: CMakeSetupGUI.cxx, CMakeSetupGUI.h: ENH: - These files are now generated from the .fl file by FLTK_WRAP_UI - command. - -2001-12-11 02:14 ibanez - - * Source/FLTKDialog/CMakeLists.txt: FIX: FLTK_WRAP_UI command - modified. - 2001-12-10 12:10 king * Modules/FindTclsh.cmake: ENH: Added more filenames for tclsh @@ -62515,7 +80233,6 @@ * Source/cmCacheManager.cxx, Source/cmMarkAsAdvancedCommand.cxx, Source/cmMarkAsAdvancedCommand.h, - Source/MFCDialog/CMakeSetupDialog.cpp, Templates/CMakeBorlandWindowsSystemConfig.cmake: ENH: add mark as not advanced to mark as advanced @@ -62610,11 +80327,6 @@ * Templates/CMakeSystemConfig.cmake.in: made install prefix non advanced -2001-12-05 16:05 barre - - * Source/MFCDialog/CMakeSetupDialog.cpp: If Shift is pressed with - 'OK', then don't quit - 2001-12-05 15:36 perera * Modules/FindTCL.cmake: ENH: add more possible names for @@ -62622,8 +80334,8 @@ 2001-12-05 15:28 barre - * Source/: cmNMakeMakefileGenerator.cxx, cmCacheManager.cxx, - MFCDialog/CMakeSetupDialog.cpp: Add single quotes feature. + * Source/: cmNMakeMakefileGenerator.cxx, cmCacheManager.cxx: Add + single quotes feature. 2001-12-05 15:00 barre @@ -62746,13 +80458,6 @@ * Source/cmake.cxx: ENH: add -C load cache file option -2001-12-03 15:59 barre - - * Source/MFCDialog/: CMakeSetupDialog.cpp, - CMakeCommandLineInfo.cpp, CMakeCommandLineInfo.h: Add /A and /G - command-line param to carry the value of "Show Advanced" and - generator name in desktop shortcuts - 2001-12-03 15:55 martink * Source/ctest.cxx: minor fix for not found executables @@ -62961,10 +80666,6 @@ CursesDialog/cmCursesMainForm.h: Improvements to the curses interface. -2001-11-29 15:14 hoffman - - * Source/MFCDialog/CMakeSetup.cpp: ENH: fix memory leaks - 2001-11-29 14:51 barre * Source/cmNMakeMakefileGenerator.cxx: Fix space pb (embended, then @@ -63046,12 +80747,6 @@ * Source/cmMarkAsAdvancedCommand.cxx: fix warning -2001-11-27 19:38 ibanez - - * Source/FLTKDialog/CMakeSetupGUIImplementation.cxx: FIX: When - switching from one project to another the CacheGUI wasn't being - cleared. Values from one project were mixed into the other. - 2001-11-27 17:53 berk * Source/: cmNMakeMakefileGenerator.cxx, @@ -63073,10 +80768,6 @@ * Source/cmDSPWriter.cxx: remove unused include -2001-11-27 15:34 martink - - * Source/MFCDialog/CMakeSetup.rc: adjusted spacing - 2001-11-27 15:33 martink * Source/cmLinkLibrariesCommand.cxx: removed extra lib paths to @@ -63116,10 +80807,7 @@ Source/cmCacheManager.cxx, Source/cmCacheManager.h, Source/cmCommands.cxx, Source/cmSystemTools.cxx, Source/cmSystemTools.h, Source/cmUnixMakefileGenerator.cxx, - Source/cmakewizard.cxx, Source/MFCDialog/CMakeSetup.rc, - Source/MFCDialog/CMakeSetupDialog.cpp, - Source/MFCDialog/CMakeSetupDialog.h, Source/MFCDialog/resource.h, - Templates/CMakeSystemConfig.cmake.in, + Source/cmakewizard.cxx, Templates/CMakeSystemConfig.cmake.in, Templates/CMakeWindowsSystemConfig.cmake, Source/cmMarkAsAdvancedCommand.cxx, Source/cmMarkAsAdvancedCommand.h: ENH: add advanced variable @@ -63208,30 +80896,20 @@ 2001-11-19 17:52 hoffman * Source/: cmCommands.cxx, cmSystemTools.cxx, cmSystemTools.h, - cmVariableRequiresCommand.cxx, cmVariableRequiresCommand.h, - MFCDialog/CMakeSetupDialog.cpp: ENH: add new command - VARIABLE_REQUIRES for better debugging of list files + cmVariableRequiresCommand.cxx, cmVariableRequiresCommand.h: ENH: + add new command VARIABLE_REQUIRES for better debugging of list + files 2001-11-19 09:34 hoffman * Source/: cmVariableRequiresCommand.cxx, cmVariableRequiresCommand.h: [no log message] -2001-11-19 09:20 hoffman - - * Source/MFCDialog/CMakeLists.txt: ENH: remove unused source files - 2001-11-16 16:42 hoffman * Source/cmUnixMakefileGenerator.cxx: ENH: look for cmake test with .exe if nmake -2001-11-16 16:29 hoffman - - * Source/MFCDialog/: CMakeLists.txt, CMakeSetup.dsp, CMakeSetup.rc, - CMakeSetupDialog.cpp, CMakeSetupDialog.h, MakeHelp.cpp, - MakeHelp.h, resource.h: face lift for GUI and some more help - 2001-11-16 16:28 hoffman * Source/cmNMakeMakefileGenerator.cxx: ENH: fix for dll builds @@ -63336,12 +81014,6 @@ * Source/: cmNMakeMakefileGenerator.cxx, cmNMakeMakefileGenerator.h: closer to nmake build -2001-11-14 14:39 barre - - * Source/MFCDialog/: CMakeSetup.rc, CMakeSetupDialog.cpp, - CMakeSetupDialog.h, resource.h: Quick addition: "Create shortcut" - menu entry. - 2001-11-14 10:21 hoffman * Templates/CMakeNMakeWindowsSystemConfig.cmake, @@ -63364,10 +81036,6 @@ * Source/cmUnixMakefileGenerator.cxx: ENH: remove debug statements -2001-11-14 08:49 hoffman - - * Source/FLTKDialog/CMakeSetupGUI.cxx: ENH: remove warning - 2001-11-13 18:23 hoffman * Source/: CMakeLib.dsp, CMakeLists.txt, @@ -63394,16 +81062,9 @@ * Source/: cmCacheManager.cxx, cmForEachCommand.cxx, cmIncludeExternalMSProjectCommand.cxx, cmMakefile.cxx, - cmSystemTools.cxx, cmUnixMakefileGenerator.cxx, - FLTKDialog/CMakeSetupGUI.cxx, FLTKDialog/CMakeSetupGUI.h, - FLTKDialog/CMakeSetupGUIImplementation.cxx: ENH: clean up + cmSystemTools.cxx, cmUnixMakefileGenerator.cxx: ENH: clean up warnings -2001-11-13 12:25 hoffman - - * Source/FLTKDialog/: CMakeSetupGUI.cxx, FLTKPropertyItemRow.cxx: - WAR: fix compile warnings - 2001-11-13 12:21 hoffman * Source/cmAddDependenciesCommand.h: ENH: fix spelling error @@ -63833,12 +81494,6 @@ cmIncludeExternalMSProjectCommand.h: INCLUDE_EXTERNAL_MSPROJECT command -2001-10-30 18:32 ibanez - - * Source/FLTKDialog/: FLTKPropertyItemRow.cxx, - FLTKPropertyItemRow.h: FIX: Reverted to use - FillCacheManagerFromGUI(). - 2001-10-30 14:36 andy * Source/cmCacheManager.cxx: Fix the problem on windows of capital @@ -63856,52 +81511,15 @@ file command that allows for only expansion of at variables and not dollar variables -2001-10-30 04:33 ibanez - - * Source/FLTKDialog/CMakeSetupGUIImplementation.cxx: FIX: In order - to disable a button in fl_choice, a 0 pointer must be sent - instead of "". - -2001-10-29 21:22 ibanez - - * Source/FLTKDialog/: FLTKPropertyItemRow.cxx, - FLTKPropertyItemRow.h: ENH: FillCacheManagerFromGUI() was - replaced by SaveFromCacheGUI() to ensure that changes on the - GUI are directly update in the config file. - -2001-10-29 21:20 ibanez - - * Source/FLTKDialog/CMakeSetupGUIImplementation.cxx: ENH: fl_ask - replaced by fl_choice in FLTKCallback. - 2001-10-29 10:41 hoffman - * Source/: cmSystemTools.cxx, - FLTKDialog/CMakeSetupGUIImplementation.cxx, - MFCDialog/CMakeSetupDialog.cpp: ENH: use callback not ifdef for - MFC message box errors + * Source/cmSystemTools.cxx: ENH: use callback not ifdef for MFC + message box errors 2001-10-29 10:19 hoffman - * Source/: cmCacheManager.cxx, cmSystemTools.cxx, cmSystemTools.h, - FLTKDialog/CMakeSetupGUIImplementation.cxx: ENH: add callback for - message display - -2001-10-28 18:52 ibanez - - * Source/FLTKDialog/: CMakeSetupGUI.cxx, CMakeSetupGUI.fl: ENH: - Button were renamed : "Configure", "OK" and "Cancel" as the MFC - version. - -2001-10-27 23:47 ibanez - - * Source/FLTKDialog/: CMakeSetupGUI.cxx, CMakeSetupGUI.fl, - CMakeSetupGUI.h, CMakeSetupGUIImplementation.cxx, - CMakeSetupGUIImplementation.h, FLTKPropertyItemRow.cxx, - FLTKPropertyList.cxx, FLTKPropertyList.h: ENH: Updated with - respect to MFC CMakeSetup. New cache entries are now colored - in red. The browsers for recent directories only popup if - there is at least one in the list. + * Source/: cmCacheManager.cxx, cmSystemTools.cxx, cmSystemTools.h: + ENH: add callback for message display 2001-10-26 18:21 hoffman @@ -64114,8 +81732,8 @@ 2001-10-01 10:14 hoffman - * Source/: cmaketest.cxx, MFCDialog/CMakeSetupDialog.cpp: ENH: - change checkboxes back to pull down menus, remove leak + * Source/cmaketest.cxx: ENH: change checkboxes back to pull down + menus, remove leak 2001-09-29 11:12 hoffman @@ -64168,10 +81786,6 @@ * Modules/FindVTK.cmake: changes to chamghe -2001-09-25 14:39 martink - - * Source/MFCDialog/CMakeSetupDialog.cpp: improved registry handling - 2001-09-25 11:06 martink * Source/cmVTKWrapTclCommand.cxx: memory leak @@ -64193,12 +81807,6 @@ * Source/ctest.cxx: handle spaces in commands and args -2001-09-20 15:29 martink - - * Source/MFCDialog/: CMakeSetupDialog.cpp, PropertyList.cpp, - PropertyList.h: ENH: check for values that switch to internal, - can happen with a load cache command - 2001-09-20 15:08 hoffman * Source/: cmAbstractFilesCommand.cxx, cmAbstractFilesCommand.h, @@ -64352,8 +81960,7 @@ * Source/: cmMakefileGenerator.cxx, cmStandardIncludes.h, cmUnixMakefileGenerator.cxx, cmUnixMakefileGenerator.h, - cmakemain.cxx, MFCDialog/CMakeSetupDialog.cpp: remove memory - leaks + cmakemain.cxx: remove memory leaks 2001-09-14 15:18 hoffman @@ -64511,9 +82118,7 @@ Source/cmBorlandMakefileGenerator.h, Source/cmMSProjectGenerator.h, Source/cmMakefileGenerator.cxx, Source/cmMakefileGenerator.h, Source/cmUnixMakefileGenerator.h, - Source/cmake.cxx, Source/cmake.h, Source/MFCDialog/CMakeSetup.rc, - Source/MFCDialog/CMakeSetupDialog.cpp, - Source/MFCDialog/CMakeSetupDialog.h, Source/MFCDialog/resource.h, + Source/cmake.cxx, Source/cmake.h, Templates/CMakeWindowsBorlandConfig.cmake: ENH: integrate borland support @@ -64700,11 +82305,6 @@ for broken apple mkdir and general clean up of MakeDirectory command -2001-08-27 15:48 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: BUG: fix switch projects - not saving cache correctly - 2001-08-27 15:19 martink * Source/cmDSPWriter.cxx: support for network path link libraries @@ -64918,23 +82518,6 @@ * Source/cmDSPWriter.cxx: OUTDIR->IntDir -2001-08-22 08:21 hoffman - - * Source/MFCDialog/CMakeLists.txt: BUG: add missing - CMakeCommandLineInfo - -2001-08-21 17:41 barre - - * Source/MFCDialog/CMakeSetup.dsp: CMakeSetup now handles - command-line arguments (ex: /H=source_dir /B=build_dir) - -2001-08-21 17:38 barre - - * Source/MFCDialog/: CMakeSetup.cpp, CMakeSetupDialog.cpp, - CMakeSetupDialog.h, CMakeCommandLineInfo.cpp, - CMakeCommandLineInfo.h: CMakeSetup now handles command-line - arguments (ex: /H=source_dir /B=build_dir) - 2001-08-21 11:04 starreveld * Source/cmMakefile.cxx: @@ -65058,11 +82641,6 @@ * Source/cmConfigure.cmake.h.in: BUG: add in for scope variable -2001-08-08 14:25 martink - - * Source/FLTKDialog/CMakeSetupGUIImplementation.cxx: ENH: update to - new style of cache access - 2001-08-08 13:14 hoffman * Source/: cmSiteNameCommand.cxx, cmUtilitySourceCommand.cxx: BUG: @@ -65087,7 +82665,6 @@ Source/cmVTKWrapJavaCommand.cxx, Source/cmVTKWrapPythonCommand.cxx, Source/cmVTKWrapTclCommand.cxx, - Source/MFCDialog/CMakeSetupDialog.cpp, Templates/CMakeSystemConfig.cmake.in, Templates/configure, Templates/configure.in: ENH: big change, only allow commands access to the cache via the cmMakefile class and GetDefinition, @@ -65261,11 +82838,6 @@ generation. This should make the generated wrappers much easier to setup and use. -2001-07-26 10:18 hoffman - - * Source/MFCDialog/: CMakeSetupDialog.cpp, PropertyList.cpp: ENH: - change the logic of disabling the ok button a bit - 2001-07-26 09:47 berk * CMakeLists.txt: ENH: Updated regexp for tracing dependencies in @@ -65277,11 +82849,8 @@ 2001-07-25 18:30 hoffman - * Source/: cmMakefile.cxx, cmMakefile.h, cmake.cxx, cmake.h, - MFCDialog/CMakeDialog.h, MFCDialog/CMakeSetup.rc, - MFCDialog/CMakeSetupDialog.cpp, MFCDialog/CMakeSetupDialog.h, - MFCDialog/PropertyList.cpp, MFCDialog/PropertyList.h, - MFCDialog/resource.h: ENH: rework GUI with configure/OK/Cancel + * Source/: cmMakefile.cxx, cmMakefile.h, cmake.cxx, cmake.h: ENH: + rework GUI with configure/OK/Cancel 2001-07-25 16:53 martink @@ -65299,11 +82868,6 @@ * Source/cmCacheManager.cxx: Removing trailing spaces after cache entry value. -2001-07-24 16:46 hoffman - - * Source/MFCDialog/: CMakeSetupDialog.cpp, PropertyList.cpp, - PropertyList.h, resource.h: BUG: fix on scroll with buttons - 2001-07-24 16:16 king * Source/cmDSPWriter.cxx: BUG: Fixed dependency generation to work @@ -65354,13 +82918,6 @@ * Templates/DLLHeader.dsptemplate: adding what I think is a missing /pdbtype:sept -2001-07-19 14:31 ibanez - - * Source/FLTKDialog/: CMakeSetupGUI.cxx, CMakeSetupGUI.fl, - CMakeSetupGUI.h, CMakeSetupGUIImplementation.cxx, - CMakeSetupGUIImplementation.h, FLTKDialog.cxx: ENH: Save and Load - of recent Source and Binary directories added. - 2001-07-18 16:45 martink * Source/cmMakefile.h: updated version @@ -65423,11 +82980,6 @@ * Templates/: CMakeSystemConfig.cmake.in, configure, configure.in: ENH: add a variable for CMAKE_COMPILER_IS_GNUCXX -2001-07-16 10:15 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: BUG: make sure cache is - cleared - 2001-07-16 10:14 hoffman * Source/: cmMakefile.cxx, cmSourceFile.cxx: ENH: add support for @@ -65438,20 +82990,10 @@ * Modules/FindPythonLibs.cmake: update include/lib path to Python (Linux) -2001-07-12 19:48 hoffman - - * Source/MFCDialog/: CMakeSetupDialog.cpp, CMakeSetupDialog.h, - PropertyList.cpp, PropertyList.h: ENH: add a check to avoid - quitting before rebuilding - 2001-07-11 13:30 martink * Source/: cmMakefile.h: version num -2001-07-11 13:06 martink - - * Source/MFCDialog/CMakeSetupDialog.cpp: fixed up resizing info - 2001-07-11 12:12 hoffman * Source/cmSystemTools.cxx: BUG: make sure find program does not @@ -65644,21 +83186,11 @@ * Templates/CMakeSystemConfig.cmake.in: set values in the cache not just the current makefile -2001-06-28 15:11 berk - - * Source/FLTKDialog/FLTKPropertyItemRow.cxx: Undefined symbol - 2001-06-28 15:08 berk * Source/cmUnixMakefileGenerator.cxx: Special rules for out-of-package source files. -2001-06-28 14:53 hoffman - - * Source/FLTKDialog/: CMakeLists.txt, - CMakeSetupGUIImplementation.cxx, FLTKPropertyItemRow.cxx, - FLTKPropertyList.cxx: BUG: fix for sgi compiler - 2001-06-28 14:38 hoffman * Templates/: configure, configure.in: BUG: pass flags to compiler @@ -65753,11 +83285,6 @@ * CMakeLists.txt: added dependencies for testing -2001-06-26 16:44 hoffman - - * Source/MFCDialog/PropertyList.cpp: ENH: convert to unix slashes - on browse, remove font and color junk - 2001-06-26 16:19 hoffman * Source/cmake.dsp: BUG: change to dos mode @@ -65769,9 +83296,8 @@ 2001-06-26 13:23 martink * Source/: CMakeLists.txt, cmAddCustomTargetCommand.cxx, - cmAddCustomTargetCommand.h, cmBuildCommand.cxx, - MFCDialog/CMakeLists.txt: modified how paths are escaped, added - depends + cmAddCustomTargetCommand.h, cmBuildCommand.cxx: modified how + paths are escaped, added depends 2001-06-26 10:01 martink @@ -65779,11 +83305,6 @@ cmAddDependenciesCommand.h, cmCommands.cxx: added add dependencies command -2001-06-26 09:55 martink - - * Source/MFCDialog/: CMakeSetup.rc, CMakeSetupDialog.cpp, - CMakeSetupDialog.h: better GUI resize and combo box fixes - 2001-06-25 13:34 millerjv * Source/: cmBuildNameCommand.cxx, cmSiteNameCommand.cxx: FIX: @@ -65939,21 +83460,10 @@ * Source/: CMakeLists.txt, cmSourceFile.cxx, cmStandardIncludes.h: BUG: fix bootstrap build on unix -2001-06-21 12:43 ibanez - - * Source/FLTKDialog/: CMakeSetupGUIImplementation.cxx, - FLTKPropertyItemRow.cxx, FLTKPropertyItemRow.h: ENH: Update the - cacheManager from the GUI after each callback. Only load - the cache from disk if the binary path has changed. - 2001-06-21 12:31 hoffman * CMakeLists.txt: ENH: add include regexp -2001-06-21 12:19 martink - - * Source/FLTKDialog/CMakeLists.txt: added install target - 2001-06-21 12:01 martink * CMakeLists.txt, Makefile.in, configure, configure.in, install-sh, @@ -65972,49 +83482,6 @@ * Source/: cmIncludeCommand.cxx, cmIncludeCommand.h: ENH: add optional include and only allow one file per INCLUDE -2001-06-21 10:17 ibanez - - * Source/FLTKDialog/CMakeSetupGUIImplementation.cxx: ENH: INTERNAL - properties are not display any longer in the GUI - -2001-06-21 09:56 ibanez - - * Source/FLTKDialog/FLTKPropertyItemRow.cxx: ENH: The cache is not - saved now after every modification of the GUI - -2001-06-21 09:45 ibanez - - * Source/FLTKDialog/: CMakeSetupGUIImplementation.cxx, - FLTKPropertyItemRow.cxx: ENH: Clearing and redrawing the property - list after a build to load the new cache. - -2001-06-21 08:41 ibanez - - * Source/FLTKDialog/: CMakeSetupGUIImplementation.cxx, - FLTKPropertyItemRow.cxx, FLTKPropertyItemRow.h, - FLTKPropertyList.cxx, FLTKPropertyList.h: ENH: PropertyRows have - now a reference to CMakeSetupGUI and save the cache at each - callback action - -2001-06-21 07:37 ibanez - - * Source/FLTKDialog/: CMakeLists.txt, CMakeSetupGUI.cxx, - CMakeSetupGUI.fl, CMakeSetupGUI.h, - CMakeSetupGUIImplementation.cxx, FLTKPropertyItemRow.cxx, - FLTKPropertyItemRow.h: ENH: PropertyNameButton was removed. - PropertyRow manages all the callbacks now - -2001-06-21 07:35 ibanez - - * Source/FLTKDialog/: FLTKPropertyNameButtonWithHelp.h, - FLTKPropertyNameButtonWithHelp.cxx: Removed: now the help string - is managed by the PropertyRow class - -2001-06-20 17:03 hoffman - - * Source/: FLTKDialog/CMakeLists.txt, MFCDialog/CMakeLists.txt: - ENH: add CMakeSetup as a target - 2001-06-20 16:49 hoffman * Source/CMakeLists.txt, Source/cmDSPWriter.cxx, @@ -66027,11 +83494,9 @@ * Source/CMakeLists.txt, Source/cmConfigure.cmake.h.in, Source/cmSourceFile.cxx, Source/cmStandardIncludes.h, - Source/cmake.cxx, Source/FLTKDialog/CMakeLists.txt, - Source/FLTKDialog/CMakeSetupGUIImplementation.cxx, - Templates/CMakeSystemConfig.cmake.in, Templates/configure, - Templates/configure.in: ENH: fix cmake so it can boot strap - itself better + Source/cmake.cxx, Templates/CMakeSystemConfig.cmake.in, + Templates/configure, Templates/configure.in: ENH: fix cmake so it + can boot strap itself better 2001-06-19 16:29 hoffman @@ -66039,10 +83504,8 @@ 2001-06-19 16:10 hoffman - * Source/: CMakeLists.txt, FLTKDialog/CMakeLists.txt, - FLTKDialog/CMakeSetupGUIImplementation.cxx, - FLTKDialog/FLTKPropertyNameButtonWithHelp.cxx: ENH: build fltk - cmake on unix with bootstrap + * Source/CMakeLists.txt: ENH: build fltk cmake on unix with + bootstrap 2001-06-19 16:05 king @@ -66056,22 +83519,10 @@ BUILD_SHARED_LIBRARIES command that used to be used is now deprecated. -2001-06-19 15:49 hoffman - - * Source/FLTKDialog/CMakeLists.txt: ENH: add bootstrap support for - building fltk - 2001-06-19 15:33 hoffman - * Source/: CMakeLists.txt, FLTKDialog/CMakeSetupGUI.cxx, - MFCDialog/CMakeSetupDialog.cpp: ENH: add bootstrap support for - building fltk - -2001-06-19 14:32 hoffman - - * Source/MFCDialog/: CMakeDialog.h, CMakeSetup.rc, - CMakeSetupDialog.cpp, CMakeSetupDialog.h, resource.h: ENH: add - resize ability to dialog and fix tab stop orders + * Source/CMakeLists.txt: ENH: add bootstrap support for building + fltk 2001-06-19 12:03 king @@ -66139,31 +83590,11 @@ * Source/cmUnixMakefileGenerator.cxx: BUG: fixed so that empty library paths are ignored -2001-06-15 07:51 ibanez - - * Source/FLTKDialog/: CMakeSetupGUIImplementation.cxx, - CMakeSetupGUIImplementation.h, FLTKDialog.cxx, - FLTKPropertyNameButtonWithHelp.cxx: ENH: Absolute path to cmake - resolved - -2001-06-15 07:49 ibanez - - * Source/FLTKDialog/Makefile.in: ENH: Getting headers and libs for - FLTK and OpenGL - 2001-06-14 17:06 biddi * Source/cmSourceFile.cxx: ERR: allow *.cpp as well as *.cxx etc etc -2001-06-14 14:32 berk - - * Source/FLTKDialog/: CMakeSetupGUIImplementation.cxx, - FLTKPropertyItemRow.cxx, FLTKPropertyItemRow.h, - FLTKPropertyList.cxx, FLTKPropertyNameButtonWithHelp.cxx, - FLTKPropertyNameButtonWithHelp.h: Include directory names are - Case sensitive in Unix. - 2001-06-14 11:45 martink * Source/CMakeLib.dsp: added make depend on win32 @@ -66206,31 +83637,6 @@ * CMakeLists.txt, Source/cmTarget.cxx, Source/cmTarget.h: minor cvs web changeCMakeLists.txt -2001-06-13 10:28 ibanez - - * Source/FLTKDialog/CMakeSetupGUIImplementation.cxx: ENH: Search - for cmake executable full path added (window/unix) - -2001-06-13 00:16 ibanez - - * Source/FLTKDialog/: FLTKPropertyItemRow.cxx, - FLTKPropertyItemRow.h, FLTKPropertyList.cxx, FLTKPropertyList.h, - FLTKPropertyNameButtonWithHelp.cxx, - FLTKPropertyNameButtonWithHelp.h: ENH: Added popup menu for - removing a property. Some style changes - -2001-06-12 18:44 ibanez - - * Source/FLTKDialog/: FLTKPropertyItemRow.cxx, - FLTKPropertyItemRow.h, Makefile.in: ENH: Added help blobs that - popup when the mouse is left on top of the property name - -2001-06-12 18:43 ibanez - - * Source/FLTKDialog/: FLTKPropertyNameButtonWithHelp.cxx, - FLTKPropertyNameButtonWithHelp.h: Class derived from Fl_Button - with added help blobs - 2001-06-12 14:15 perera * Source/cmUnixMakefileGenerator.cxx, Templates/configure, @@ -66249,13 +83655,6 @@ to run with the current directory as the project's binary directory. -2001-06-12 12:20 king - - * Source/FLTKDialog/: CMakeSetupGUI.h, - CMakeSetupGUIImplementation.cxx, CMakeSetupGUIImplementation.h: - ERR: Needed virtual destructor to correspond to virtual - functions. Also added several std:: qualifiers to string. - 2001-06-12 11:55 martink * Source/: cmakemain.cxx: cmake does not require two arguments @@ -66298,15 +83697,6 @@ cmUnixMakefileGenerator.h, cmMakeDepend.cxx: some cleanup to the make depend process -2001-06-12 08:34 ibanez - - * Source/FLTKDialog/: CMakeSetupGUI.cxx, CMakeSetupGUI.fl, - CMakeSetupGUI.h, CMakeSetupGUIImplementation.cxx, - CMakeSetupGUIImplementation.h, FLTKPropertyItemRow.cxx: ENH: - Paths are now expanded for environment variables and made - absolute. The binary directory is created if it doesn't - exist. - 2001-06-12 08:31 king * Source/cmUnixMakefileGenerator.cxx: BUG: WIN32_EXECUTABLE targets @@ -66328,8 +83718,7 @@ 2001-06-11 18:00 martink - * Source/: cmake.cxx, MFCDialog/CMakeSetupDialog.cpp: minor fix in - error checking + * Source/cmake.cxx: minor fix in error checking 2001-06-11 17:09 king @@ -66354,56 +83743,11 @@ match registry entries. The expression now matches everything after a [HKEY until the first ']' is encountered. -2001-06-11 02:10 ibanez - - * Source/FLTKDialog/CMakeSetupGUIImplementation.cxx: ENH: Waiting - cursor color were reversed - -2001-06-11 01:20 ibanez - - * Source/FLTKDialog/: CMakeSetupGUIImplementation.cxx, - CMakeSetupGUIImplementation.h: ENH: CMake invokation is working. - -2001-06-10 21:36 ibanez - - * Source/FLTKDialog/: CMakeSetupGUIImplementation.cxx, - CMakeSetupGUIImplementation.h: ENH: Cache saving added - 2001-06-10 18:27 ibanez * Source/cmSystemTools.cxx: DOC: Added a comment about the risk of using tempnam in Unix, as opposed to using mkstemp. -2001-06-10 18:25 ibanez - - * Source/FLTKDialog/: CMakeSetupGUI.cpp, - CMakeSetupGUIImplementation.cpp, FLTKPropertyList.cpp, - FLTKDialog.cpp: .cpp renamed as .cxx - -2001-06-10 18:23 ibanez - - * Source/FLTKDialog/FLTKPropertyItemRow.h: Class to manage - every row in the GUI scrolling, corresponding to a - single property - -2001-06-10 18:23 ibanez - - * Source/FLTKDialog/Makefile.in: Template for the Makefile - -2001-06-10 18:21 ibanez - - * Source/FLTKDialog/: CMakeSetupGUI.cxx, - CMakeSetupGUIImplementation.cxx, FLTKDialog.cxx, - FLTKPropertyItemRow.cxx, FLTKPropertyList.cxx: ENH: cpp renamed - cxx. Copy of data to and from the GUI is working - -2001-06-10 18:19 ibanez - - * Source/FLTKDialog/: CMakeSetupGUI.fl, CMakeSetupGUI.h, - CMakeSetupGUIImplementation.h, FLTKPropertyList.h: ENH: Added - Fl_Tiles as row for holding property data. Data to and from the - GUI is working - 2001-06-09 20:54 king * Source/cmCableWrapTclCommand.cxx: BUG: Changed custom command @@ -66456,7 +83800,6 @@ Source/cmVTKWrapJavaCommand.cxx, Source/cmVTKWrapPythonCommand.cxx, Source/cmVTKWrapTclCommand.cxx, Source/cmake.cxx, - Source/MFCDialog/CMakeSetupDialog.cpp, Templates/CMakeWindowsSystemConfig.cmake: ENH: move utilities to targets from makefile, and add versioning to cache @@ -66575,11 +83918,6 @@ cmVTKWrapTclCommand.h, cmWrapExcludeFilesCommand.cxx, cmWrapExcludeFilesCommand.h: ENH: rename Invoke to InitialPass -2001-06-06 13:18 hoffman - - * Source/MFCDialog/PropertyList.cpp: BUG: PATH options should not - remove the file part of the path... - 2001-06-06 11:02 millerjv * Source/cmMakefile.cxx: Change name of file created from Testfile @@ -66626,16 +83964,6 @@ * Source/: cmSystemTools.cxx, cmSystemTools.h: ENH: Some tweaks, hacks and #ifdefs required to compile cmake on Borland C++Builder -2001-06-05 17:29 hoffman - - * Source/MFCDialog/CMakeSetup.dsp: ENH: add PathDialog - -2001-06-05 17:26 hoffman - - * Source/MFCDialog/: CMakeSetupDialog.cpp, PathDialog.cpp, - PathDialog.h, PropertyList.cpp: ENH: add better path chooser - dialog - 2001-06-05 15:48 hoffman * Source/: cmDSPMakefile.cxx, cmDSPWriter.cxx: BUG: fix EXE and LIB @@ -66691,8 +84019,7 @@ * Source/: cmCacheManager.cxx, cmDSWMakefile.cxx, cmDSWWriter.cxx, cmFunctionBlocker.h, cmMSProjectGenerator.cxx, cmMakefile.cxx, - cmMakefileGenerator.h, MFCDialog/CMakeSetupDialog.cpp: BUG: clean - up memory leaks. + cmMakefileGenerator.h: BUG: clean up memory leaks. 2001-06-01 13:54 martink @@ -66706,8 +84033,7 @@ 2001-05-31 15:48 hoffman - * Source/: cmake.cxx, MFCDialog/CMakeSetupDialog.cpp: BUG: fix edit - of directories + * Source/cmake.cxx: BUG: fix edit of directories 2001-05-31 14:15 berk @@ -66718,17 +84044,11 @@ * Source/cmakemain.cxx: BUG: add missing file -2001-05-30 15:36 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: ENH: remove unused - includes - 2001-05-30 15:28 hoffman * Source/: CMakeLib.dsp, Makefile.in, cmMSProjectGenerator.cxx, - cmake.cxx, cmake.dsp, cmake.h, MFCDialog/CMakeSetup.dsp, - MFCDialog/CMakeSetupDialog.cpp, MFCDialog/CMakeSetupDialog.h: - ENH: change MFC gui to use cmake class + cmake.cxx, cmake.dsp, cmake.h: ENH: change MFC gui to use cmake + class 2001-05-29 14:16 perera @@ -66756,11 +84076,6 @@ * Templates/CMakeWindowsSystemConfig.cmake: better help -2001-05-25 15:27 barre - - * Source/MFCDialog/PropertyList.cpp: display the property name in - the help box - 2001-05-25 14:31 king * Source/cmSystemTools.cxx: BUG: Added hack to @@ -66830,24 +84145,16 @@ function. Will be used in the VTK Tcl wrapper for example (in a more portable way). -2001-05-24 13:35 hoffman - - * Source/MFCDialog/CMakeSetup.rc: [no log message] - 2001-05-24 12:57 hoffman * Modules/FindOpenGL.cmake, Source/cmSetCommand.cxx, - Source/cmSetCommand.h, Source/MFCDialog/CMakeSetup.rc, - Source/MFCDialog/CMakeSetupDialog.cpp, - Templates/CMakeSystemConfig.cmake.in, + Source/cmSetCommand.h, Templates/CMakeSystemConfig.cmake.in, Templates/CMakeWindowsSystemConfig.cmake: ENH: change the syntax of the SET command, fix the combo box for larger strings 2001-05-24 11:47 martink - * Source/: cmMakefile.h, cmake.cxx, MFCDialog/CMakeSetup.rc, - MFCDialog/CMakeSetupDialog.cpp, MFCDialog/resource.h: added - version number + * Source/: cmMakefile.h, cmake.cxx: added version number 2001-05-24 10:32 barre @@ -66885,10 +84192,6 @@ Templates/staticLibHeader.dsptemplate: ENH: create CMAKE_CXX_FLAGS_[Buildtype] flags -2001-05-23 16:33 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: add compute systeminfo - 2001-05-23 16:31 martink * Source/cmMSProjectGenerator.cxx: bug finding windows template @@ -67026,27 +84329,6 @@ * dummy.in: no longer used -2001-05-22 10:43 ibanez - - * Source/FLTKDialog/FLTKDialog.dsp: ENH: PropertyList class added - -2001-05-22 10:43 ibanez - - * Source/FLTKDialog/: CMakeSetupGUIImplementation.cpp, - CMakeSetupGUIImplementation.h: ENH: Added support for the - fltk::PropertyList class - -2001-05-22 10:42 ibanez - - * Source/FLTKDialog/: CMakeSetupGUI.cpp, CMakeSetupGUI.fl, - CMakeSetupGUI.h: Added interactions with the PropertyList - class - -2001-05-22 10:41 ibanez - - * Source/FLTKDialog/: FLTKPropertyList.cpp, FLTKPropertyList.h: - Class to manage the list of properties displayed on the scroller - 2001-05-21 16:43 king * Makefile.in: ERR: Added missing @srcdir@ and modified install @@ -67068,15 +84350,6 @@ * Modules/FindOpenGL.cmake, Source/cmSystemTools.cxx: fix opengl on hp -2001-05-21 14:42 martink - - * Source/MFCDialog/: CMakeSetup.rc, res/CMakeSetupDialog.ico: icon - updates - -2001-05-21 14:36 martink - - * Source/MFCDialog/: CMakeSetup.rc, resource.h: new icon - 2001-05-21 14:17 hoffman * Source/cmake.cxx: BUG: remove declaration without variable @@ -67112,15 +84385,13 @@ 2001-05-21 10:47 hoffman - * Source/: cmBuildNameCommand.cxx, cmSetCommand.cxx, - MFCDialog/CMakeDialog.h, MFCDialog/CMakeSetup.rc, - MFCDialog/CMakeSetupDialog.cpp, MFCDialog/CMakeSetupDialog.h, - MFCDialog/resource.h: BUG: fix compiler name + * Source/: cmBuildNameCommand.cxx, cmSetCommand.cxx: BUG: fix + compiler name 2001-05-21 09:50 martink - * Source/: CMakeSetup.dsw, cmake.cxx, - MFCDialog/CMakeSetupDialog.cpp: updated for out of tree builds + * Source/: CMakeSetup.dsw, cmake.cxx: updated for out of tree + builds 2001-05-21 09:32 martink @@ -67200,20 +84471,6 @@ * Source/cmSystemTools.cxx: ERR:Bad #ifdef's -2001-05-17 12:38 ibanez - - * Source/FLTKDialog/CMakeSetupGUIImplementation.cpp: ENH: Added - Methods for loading the cache - -2001-05-17 12:37 ibanez - - * Source/FLTKDialog/FLTKDialog.cpp: ENH: Load the cache at start - -2001-05-17 12:36 ibanez - - * Source/FLTKDialog/CMakeSetupGUIImplementation.h: ENH: Added - methods to load the cache - 2001-05-17 12:36 martink * Source/: DLLFooter.dsptemplate, DLLHeader.dsptemplate, @@ -67238,9 +84495,8 @@ * Source/: CMakeBuildTargets.cxx, CMakeSetupCMD.cxx, cmCablePackageCommand.cxx, cmDSPMakefile.cxx, cmDSPWriter.cxx, - cmMakefile.cxx, cmUnixMakefileGenerator.cxx, - MFCDialog/CMakeSetupDialog.cpp: half checked in changes for - CMAKE_ROOT + cmMakefile.cxx, cmUnixMakefileGenerator.cxx: half checked in + changes for CMAKE_ROOT 2001-05-17 12:04 martink @@ -67251,32 +84507,6 @@ UtilityHeader.dsptemplate, staticLibFooter.dsptemplate, staticLibHeader.dsptemplate: new directory -2001-05-17 12:02 ibanez - - * Source/FLTKDialog/FLTKDialog.dsp: VC++ Project file to - construct the FLTK GUI for CMake - -2001-05-17 12:02 ibanez - - * Source/FLTKDialog/FLTKDialog.cpp: Main file that - instantiates the GUI class and run it. - -2001-05-17 12:01 ibanez - - * Source/FLTKDialog/: CMakeSetupGUIImplementation.cpp, - CMakeSetupGUIImplementation.h: Implementation of the virtual - Callbacks declared in the GUI - -2001-05-17 12:00 ibanez - - * Source/FLTKDialog/: CMakeSetupGUI.cpp, CMakeSetupGUI.h: File - generated by FLTK FLUID containing the implementation of the GUI - -2001-05-17 11:58 ibanez - - * Source/FLTKDialog/CMakeSetupGUI.fl: GUI description file - used by FLTK interactive tool : FLUID - 2001-05-17 11:44 hoffman * Source/: cmCableWrapTclCommand.cxx, cmConfigure.h.in, @@ -67353,9 +84583,7 @@ Source/cmMakeDepend.cxx, Source/cmMakefile.cxx, Source/cmProjectCommand.cxx, Source/cmSetCommand.cxx, Source/cmUnixMakefileGenerator.cxx, - Source/cmUnixMakefileGenerator.h, - Source/MFCDialog/CMakeSetupDialog.cpp: ENH: unify make process on - unix + Source/cmUnixMakefileGenerator.h: ENH: unify make process on unix 2001-05-16 09:19 king @@ -67388,12 +84616,6 @@ * Source/cmSystemTools.cxx: fix + => += bug reported by A. Perera -2001-05-11 17:41 barre - - * Source/MFCDialog/res/CMakeSetupDialog.ico: I know, there are more - serious things to do :) A new icon. The previous one has not be - overwritten, it's in there too. - 2001-05-11 17:22 barre * Source/cmSystemTools.cxx: Extended the registry key regexp @@ -67463,15 +84685,10 @@ * Modules/: FindJNI.cmake, FindPythonLibs.cmake: minor fixes and new python module -2001-05-11 10:04 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: BUG: fix gui problem - 2001-05-10 17:22 hoffman - * Source/: cmDSPMakefile.cxx, cmDSPWriter.cxx, - MFCDialog/CMakeSetupDialog.cpp, MFCDialog/PropertyList.cpp: BUG: - fix up gui with values that stay around too long + * Source/: cmDSPMakefile.cxx, cmDSPWriter.cxx: BUG: fix up gui with + values that stay around too long 2001-05-10 16:21 geoff @@ -67583,10 +84800,6 @@ when the load needs to read internal values. Otherwise, it is assumed that we are reading another projects cache. -2001-05-09 10:13 hoffman - - * Source/MFCDialog/PropertyList.cpp: BUG: fix crash - 2001-05-09 09:52 hoffman * Source/cmConfigureFileCommand.cxx: BUG: fix use beyond end of @@ -67620,11 +84833,6 @@ * configure.in.sample: clean up -2001-05-08 13:40 hoffman - - * Source/MFCDialog/PropertyList.cpp: ENH: add initial path support - for file choosers - 2001-05-08 11:40 martink * Source/cmTargetLinkLibrariesCommand.cxx: BUG: added arg0 to link @@ -67733,9 +84941,9 @@ Source/cmMakefile.cxx, Source/cmOptionCommand.cxx, Source/cmOptionCommand.h, Source/cmSourceGroup.cxx, Source/cmSourceGroup.h, Source/cmSystemTools.cxx, - Source/cmSystemTools.h, Source/cmUnixMakefileGenerator.cxx, - Source/MFCDialog/CMakeSetup.rc: ENH: move testing stuff to cmake - from configure, good bye dashboard... :) + Source/cmSystemTools.h, Source/cmUnixMakefileGenerator.cxx: ENH: + move testing stuff to cmake from configure, good bye dashboard... + :) 2001-05-04 10:44 king @@ -67788,9 +84996,9 @@ 2001-05-03 16:55 king - * Source/: CMakeBuildTargets.cxx, CMakeSetupCMD.cxx, - MFCDialog/CMakeSetupDialog.cpp: ENH: Added generation of internal - CMAKE cache entry with path to command-line CMake executable. + * Source/: CMakeBuildTargets.cxx, CMakeSetupCMD.cxx: ENH: Added + generation of internal CMAKE cache entry with path to + command-line CMake executable. 2001-05-03 16:55 king @@ -67892,8 +85100,7 @@ 2001-05-01 16:34 martink - * Source/: cmMakefile.cxx, MFCDialog/CMakeSetupDialog.cpp: cache - now loaded into makefile + * Source/cmMakefile.cxx: cache now loaded into makefile 2001-05-01 16:28 martink @@ -68079,8 +85286,7 @@ cmDSPWriter.h, cmDSWMakefile.cxx, cmDSWWriter.cxx, cmLinkLibrariesCommand.cxx, cmLinkLibrariesCommand.h, cmMakefile.cxx, cmMakefile.h, cmUnixMakefileGenerator.cxx, - cmVTKWrapPythonCommand.cxx, MFCDialog/CMakeSetup.rc, - MFCDialog/resource.h: support for debug and opt libraries + cmVTKWrapPythonCommand.cxx: support for debug and opt libraries 2001-04-26 15:41 martink @@ -68105,9 +85311,8 @@ cmCacheManager.h, cmFindFileCommand.cxx, cmFindIncludeCommand.cxx, cmFindLibraryCommand.cxx, cmFindPathCommand.cxx, cmFindProgramCommand.cxx, - cmOptionCommand.cxx, cmUtilitySourceCommand.cxx, - MFCDialog/CMakeSetupDialog.cpp, MFCDialog/PropertyList.cpp, - MFCDialog/PropertyList.h: ENH: add help for cache entries + cmOptionCommand.cxx, cmUtilitySourceCommand.cxx: ENH: add help + for cache entries 2001-04-26 10:49 martink @@ -68124,27 +85329,12 @@ cmFindPathCommand.h, cmMakefile.cxx, cmMakefile.h, cmUnixMakefileGenerator.cxx: bug fixes -2001-04-25 19:01 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: ENH: set initial build to - source dir - -2001-04-25 18:53 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: ENH: add error checking - for empty build dir - 2001-04-25 16:09 hoffman * configure.in.sample, Source/Makefile.in, Source/cmCacheManager.cxx, Source/cmCacheManager.h, - Source/cmMakefile.cxx, Source/MFCDialog/CMakeDialog.h, - Source/MFCDialog/CMakeSetup.rc, - Source/MFCDialog/CMakeSetupDialog.cpp, - Source/MFCDialog/CMakeSetupDialog.h, - Source/MFCDialog/PropertyList.cpp, - Source/MFCDialog/PropertyList.h: ENH: clean up cmake GUI and - remove the parsing of CMakeLists.txt files by configure + Source/cmMakefile.cxx: ENH: clean up cmake GUI and remove the + parsing of CMakeLists.txt files by configure 2001-04-25 11:47 martink @@ -68189,28 +85379,18 @@ cmUnixDefinesCommand.cxx, cmUnixLibrariesCommand.cxx, cmUnixMakefileGenerator.cxx, cmWin32DefinesCommand.cxx, cmWin32IncludeDirectoryCommand.cxx, cmWin32LibrariesCommand.cxx, - cmWrapExcludeFilesCommand.cxx, MFCDialog/CMakeSetupDialog.cpp, - cmVTKWrapPythonCommand.cxx, cmVTKWrapPythonCommand.h, - cmVTKWrapTclCommand.cxx, cmVTKWrapTclCommand.h, cmSourceFile.cxx, - cmSourceFile.h, cmTarget.cxx, cmWrapTclCommand.cxx, - cmWrapTclCommand.h: many fixes and cleanup and features - -2001-04-24 14:19 hoffman - - * Source/MFCDialog/: CMakeSetupDialog.cpp, PropertyList.cpp, - PropertyList.h: BUG: fix duplicate property items - -2001-04-24 13:32 hoffman - - * Source/MFCDialog/: CMakeSetupDialog.cpp, CMakeSetupDialog.h, - PropertyList.cpp: BUG: fix cache updates + cmWrapExcludeFilesCommand.cxx, cmVTKWrapPythonCommand.cxx, + cmVTKWrapPythonCommand.h, cmVTKWrapTclCommand.cxx, + cmVTKWrapTclCommand.h, cmSourceFile.cxx, cmSourceFile.h, + cmTarget.cxx, cmWrapTclCommand.cxx, cmWrapTclCommand.h: many + fixes and cleanup and features 2001-04-24 12:40 hoffman * Source/: cmBuildSharedLibrariesCommand.cxx, cmCacheManager.cxx, cmCacheManager.h, cmMakefile.cxx, cmMakefile.h, - cmOptionCommand.cxx, cmWrapTclCommand.cxx, - MFCDialog/CMakeSetupDialog.cpp: BUG: fix build directory problem + cmOptionCommand.cxx, cmWrapTclCommand.cxx: BUG: fix build + directory problem 2001-04-24 09:45 king @@ -68222,11 +85402,7 @@ * Source/: CMakeLib.dsp, cmCacheManager.cxx, cmCacheManager.h, cmDSWMakefile.cxx, cmDSWWriter.cxx, cmSourceGroup.h, cmStandardIncludes.h, cmWindowsConfigure.cxx, - cmWindowsConfigure.h, MFCDialog/CMakeDialog.h, - MFCDialog/CMakeSetup.dsp, MFCDialog/CMakeSetup.rc, - MFCDialog/CMakeSetupDialog.cpp, MFCDialog/CMakeSetupDialog.h, - MFCDialog/PropertyList.cpp, MFCDialog/PropertyList.h, - MFCDialog/resource.h: ENH: new GUI editor for cmake cache file + cmWindowsConfigure.h: ENH: new GUI editor for cmake cache file 2001-04-23 16:34 martink @@ -68892,9 +86068,8 @@ Source/cmDSWWriter.cxx, Source/cmMakefile.cxx, Source/cmMakefile.h, Source/cmStandardIncludes.h, Source/cmSystemTools.cxx, Source/cmSystemTools.h, - Source/MFCDialog/CMakeSetupDialog.cpp, CMakeRules.make.in, - CMakeTopMakefileTemplate.in, Source/cmConfigure.h.in: ENH: add - CMakeCache.txt support + CMakeRules.make.in, CMakeTopMakefileTemplate.in, + Source/cmConfigure.h.in: ENH: add CMakeCache.txt support 2001-02-20 14:12 hoffman @@ -68917,10 +86092,8 @@ Source/cmIncludeDirectoryCommand.cxx, Source/cmMakefile.cxx, Source/cmRegularExpression.h, Source/cmSystemTools.cxx, Source/cmUnixMakefileGenerator.cxx, - Source/cmUnixMakefileGenerator.h, Source/MFCDialog/CMakeSetup.rc, - Source/MFCDialog/CMakeSetupDialog.cpp, - Source/MFCDialog/resource.h: ENH: first pass at cache, clean up - the unix generator, clean up configure.in some + Source/cmUnixMakefileGenerator.h: ENH: first pass at cache, clean + up the unix generator, clean up configure.in some 2001-02-18 13:02 hoffman @@ -68962,13 +86135,7 @@ Source/cmDSPWriter.cxx, Source/cmDSWMakefile.cxx, Source/cmDSWWriter.cxx, Source/cmMakefile.cxx, Source/cmMakefile.h, Source/cmProjectCommand.cxx, - Source/cmProjectCommand.h, Source/MFCDialog/CMakeSetupDialog.cpp: - some cleanup and fixes - -2001-02-14 12:58 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: BUG: set output directory - correctly + Source/cmProjectCommand.h: some cleanup and fixes 2001-02-14 12:26 hoffman @@ -68990,14 +86157,13 @@ cmConfigureFileNoAutoconf.cxx, cmConfigureFileNoAutoconf.h, cmConfigureHeaderCommand.cxx, cmConfigureHeaderCommand.h, cmMakefile.cxx, cmMakefile.h, cmStandardIncludes.h, - cmSystemTools.cxx, MFCDialog/CMakeSetupDialog.cpp, cmCommands.h: - ENH: get rid of special msc configure file + cmSystemTools.cxx, cmCommands.h: ENH: get rid of special msc + configure file 2001-02-12 14:42 hoffman - * Source/: CMakeLib.dsp, CMakeSetup.dsw, CMakeSetupCMD.dsp, - MFCDialog/CMakeSetup.dsp: ENH: share a .lib with the command line - and mfc versions. + * Source/: CMakeLib.dsp, CMakeSetup.dsw, CMakeSetupCMD.dsp: ENH: + share a .lib with the command line and mfc versions. 2001-02-12 14:26 hoffman @@ -69005,10 +86171,9 @@ CMakeSetupCMD.dsp, Makefile.in, cmCacheManager.cxx, cmCacheManager.h, cmCommands.cxx, cmConfigureHeaderCommand.cxx, cmConfigureHeaderCommand.h, cmDSWMakefile.cxx, cmDSWWriter.cxx, - cmMSProjectGenerator.h, MFCDialog/CMakeSetup.dsp, - MFCDialog/CMakeSetupDialog.cpp: ENH: add cache manager class, - move all commands into cmCommands.cxx to speed up compile times, - share a .lib with the command line and mfc versions. + cmMSProjectGenerator.h: ENH: add cache manager class, move all + commands into cmCommands.cxx to speed up compile times, share a + .lib with the command line and mfc versions. 2001-02-06 17:01 hoffman @@ -69046,8 +86211,8 @@ 2001-01-22 09:49 will - * Source/: CMakeSetup.dsw, CMakeSetupCMD.dsp, - MFCDialog/CMakeSetup.dsp: BUG: make dsp and dsw files binary + * Source/: CMakeSetup.dsw, CMakeSetupCMD.dsp: BUG: make dsp and dsw + files binary 2001-01-18 13:43 will @@ -69117,9 +86282,8 @@ Source/cmWin32DefinesCommand.h, Source/cmWin32DefinesRule.cxx, Source/cmWin32DefinesRule.h, Source/cmWin32LibrariesCommand.cxx, Source/cmWin32LibrariesCommand.h, - Source/cmWin32LibrariesRule.cxx, Source/cmWin32LibrariesRule.h, - Source/MFCDialog/CMakeSetup.dsp: ENH:Reworked CMake for - consistency + Source/cmWin32LibrariesRule.cxx, Source/cmWin32LibrariesRule.h: + ENH:Reworked CMake for consistency 2001-01-12 14:35 will @@ -69141,11 +86305,6 @@ * Source/: cmDSPMakefile.cxx, cmDSPWriter.cxx: ENH: add define flags in the right place -2001-01-12 13:49 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: ENH: allow continue if - missing MSC configure file - 2001-01-12 13:48 hoffman * Source/cmSystemTools.cxx: BUG: add check for missing ) on @@ -69297,10 +86456,9 @@ cmUnixMakefileGenerator.cxx, cmUnixMakefileGenerator.h, cmWin32DefinesRule.cxx, cmWin32DefinesRule.h, cmWin32LibrariesRule.cxx, cmWin32LibrariesRule.h, - cmWindowsConfigure.cxx, cmWindowsConfigure.h, - MFCDialog/CMakeSetup.dsp, MFCDialog/CMakeSetupDialog.cpp: ENH: - rework cmake, added ruleMaker classes and changed the syntax of - the CMakeLists.txt files. + cmWindowsConfigure.cxx, cmWindowsConfigure.h: ENH: rework cmake, + added ruleMaker classes and changed the syntax of the + CMakeLists.txt files. 2000-12-07 15:45 blezek @@ -69311,10 +86469,6 @@ * Source/cmMakeDepend.cxx: BUG: remove bogus warning about not finding a depend file, if there are no include paths -2000-11-10 17:13 hoffman - - * Source/MFCDialog/CMakeSetupDialog.cpp: BUG: fix inplace build - 2000-11-09 10:41 will * README, Source/cmCollectFlags.cxx, Source/cmCollectFlags.h, @@ -69325,11 +86479,6 @@ * README: [no log message] -2000-11-03 16:37 hoffman - - * Source/MFCDialog/: CMakeSetupDialog.cpp, CMakeSetupDialog.h: ENH: - add ability to run from different directories - 2000-11-02 11:13 hoffman * Source/cmMakefile.cxx: BUG: make sure SOURCE_FILES starts at the @@ -69399,17 +86548,13 @@ * CMakeRules.make.in, CMakeVariables.make.in, README, Source/cmDSPMakefile.cxx, Source/cmDSPWriter.cxx, Source/cmMakeDepend.cxx, Source/cmUnixMakefile.cxx, - Source/cmWindowsConfigure.cxx, Source/cmWindowsConfigure.h, - Source/MFCDialog/CMakeSetup.dsp, Source/MFCDialog/CMakeSetup.rc, - Source/MFCDialog/CMakeSetupDialog.cpp, - Source/MFCDialog/resource.h: ENH: added a config setup file for - CMakeSetup. Cleaned up the names of the source and binary - directories + Source/cmWindowsConfigure.cxx, Source/cmWindowsConfigure.h: ENH: + added a config setup file for CMakeSetup. Cleaned up the names + of the source and binary directories 2000-09-18 07:27 hoffman - * Source/: CMakeSetupCMD.dsp, MFCDialog/CMakeSetup.dsp: ENH: remove - unused files + * Source/CMakeSetupCMD.dsp: ENH: remove unused files 2000-09-12 06:44 hoffman @@ -69439,11 +86584,9 @@ Source/cmPCBuilder.h, Source/cmSystemTools.cxx, Source/cmSystemTools.h, Source/cmUnixMakefile.cxx, Source/cmUnixMakefile.h, Source/cmWindowsConfigure.h, - Source/itkVC60Configure.h, Source/MFCDialog/CMakeDialog.cpp, - Source/MFCDialog/CMakeSetup.dsp, - Source/MFCDialog/CMakeSetupDialog.cpp: ENH: CMake and configure - now use SUBDIRS in CMakeLists.txt to find all the directories of - the system. + Source/itkVC60Configure.h: ENH: CMake and configure now use + SUBDIRS in CMakeLists.txt to find all the directories of the + system. 2000-09-01 10:43 hoffman @@ -69491,10 +86634,8 @@ Source/cmClassFile.cxx, Source/cmDSPMakefile.cxx, Source/cmDSPWriter.cxx, Source/cmDSWMakefile.cxx, Source/cmDSWWriter.cxx, Source/cmMakefile.cxx, - Source/cmMakefile.h, Source/cmUnixMakefile.cxx, - Source/MFCDialog/CMakeSetup.dsp, - Source/MFCDialog/CMakeSetupDialog.cpp: ENH: move from tools and - create working CMake program + Source/cmMakefile.h, Source/cmUnixMakefile.cxx: ENH: move from + tools and create working CMake program 2000-08-29 15:26 hoffman @@ -69519,16 +86660,8 @@ Source/cmWindowsConfigure.cxx, Source/cmWindowsConfigure.h, Source/itkVC60Configure.cxx, Source/itkVC60Configure.h, Source/staticLibFooter.dsptemplate, - Source/staticLibHeader.dsptemplate, - Source/MFCDialog/CMakeDialog.cpp, Source/MFCDialog/CMakeDialog.h, - Source/MFCDialog/CMakeSetup.cpp, Source/MFCDialog/CMakeSetup.dsp, - Source/MFCDialog/CMakeSetup.h, Source/MFCDialog/CMakeSetup.rc, - Source/MFCDialog/CMakeSetupDialog.cpp, - Source/MFCDialog/CMakeSetupDialog.h, Source/MFCDialog/StdAfx.cpp, - Source/MFCDialog/StdAfx.h, Source/MFCDialog/resource.h, - Source/MFCDialog/res/CMakeSetupDialog.ico, - Source/MFCDialog/res/CMakeSetupDialog.rc2, README: NEW: move from - tools and config to create CMake + Source/staticLibHeader.dsptemplate, README: NEW: move from tools + and config to create CMake 2000-08-29 10:56 hoffman diff --git a/CompileFlags.cmake b/CompileFlags.cmake old mode 100755 new mode 100644 index 59f335d87..ed12ab250 --- a/CompileFlags.cmake +++ b/CompileFlags.cmake @@ -1,3 +1,15 @@ +#============================================================================= +# CMake - Cross Platform Makefile Generator +# Copyright 2000-2009 Kitware, Inc., Insight Software Consortium +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + #----------------------------------------------------------------------------- # set some special flags for different compilers # @@ -10,9 +22,12 @@ ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 6") INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityCXX.cmake) # Disable deprecation warnings for standard C functions. -IF(MSVC80 OR MSVC90) +# really only needed for newer versions of VS, but should +# not hurt other versions, and this will work into the +# future +IF(MSVC) ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE) -ENDIF(MSVC80 OR MSVC90) +ENDIF(MSVC) #silence duplicate symbol warnings on AIX IF(CMAKE_SYSTEM MATCHES "AIX.*") diff --git a/Copyright.txt b/Copyright.txt index 834c45710..35f7e4b6c 100644 --- a/Copyright.txt +++ b/Copyright.txt @@ -1,9 +1,52 @@ +CMake - Cross Platform Makefile Generator +Copyright 2000-2009 Kitware, Inc., Insight Software Consortium +All rights reserved. + +Redistribution and use 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 names of Kitware, Inc., the Insight Software Consortium, + nor the names of their contributors may be used to endorse or promote + products derived from this software without specific prior written + permission. + +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 +HOLDER 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. + +------------------------------------------------------------------------------ + +The above copyright and license notice applies to distributions of +CMake in source and binary form. Some source files contain additional +notices of original copyright by their contributors; see each source +for details. Third-party software packages supplied with CMake under +compatible licenses provide their own copyright notices documented in +corresponding subdirectories. + +------------------------------------------------------------------------------ + CMake was initially developed by Kitware with the following sponsorship: * National Library of Medicine at the National Institutes of Health as part of the Insight Segmentation and Registration Toolkit (ITK). - * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel + * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel Visualization Initiative. * National Alliance for Medical Image Computing (NAMIC) is funded by the @@ -11,40 +54,3 @@ CMake was initially developed by Kitware with the following sponsorship: Grant U54 EB005149. * Kitware, Inc. - -The CMake copyright is as follows: - -Copyright (c) 2002 Kitware, Inc., Insight Consortium -All rights reserved. - -Redistribution and use 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. - - * The names of Kitware, Inc., the Insight Consortium, or the names of - any consortium members, or of any contributors, may not be used to - endorse or promote products derived from this software without - specific prior written permission. - - * Modified source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER 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 AUTHORS 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. - -See also the CMake web site: http://www.cmake.org for more information. diff --git a/DartConfig.cmake b/DartConfig.cmake index 49b04bbbc..37f66c7c1 100644 --- a/DartConfig.cmake +++ b/DartConfig.cmake @@ -1,3 +1,14 @@ +#============================================================================= +# CMake - Cross Platform Makefile Generator +# Copyright 2000-2009 Kitware, Inc., Insight Software Consortium +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= set(CTEST_PROJECT_NAME "CMake") set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT") diff --git a/DartLocal.conf.in b/DartLocal.conf.in old mode 100755 new mode 100644 diff --git a/Docs/cmake-mode.el b/Docs/cmake-mode.el index a000c659d..2f51f830d 100644 --- a/Docs/cmake-mode.el +++ b/Docs/cmake-mode.el @@ -1,15 +1,13 @@ ;============================================================================= +; CMake - Cross Platform Makefile Generator +; Copyright 2000-2009 Kitware, Inc., Insight Software Consortium ; -; Program: CMake - Cross-Platform Makefile Generator -; Module: $RCSfile: cmake-mode.el,v $ -; -; Copyright (c) 2000-$Date: 2009-03-23 17:58:40 $ Kitware, Inc., Insight Consortium. All rights reserved. -; See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. -; -; This software is distributed WITHOUT ANY WARRANTY; without even -; the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -; PURPOSE. See the above copyright notices for more information. +; Distributed under the OSI-approved BSD License (the "License"); +; see accompanying file Copyright.txt for details. ; +; This software is distributed WITHOUT ANY WARRANTY; without even the +; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +; See the License for more information. ;============================================================================= ;;; cmake-mode.el --- major-mode for editing CMake sources @@ -32,7 +30,22 @@ ;------------------------------------------------------------------------------ ;;; Code: +;; +;; cmake executable variable used to run cmake --help-command +;; on commands in cmake-mode +;; +;; cmake-command-help Written by James Bigler +;; + +(defcustom cmake-mode-cmake-executable "cmake" + "*The name of the cmake executable. +This can be either absolute or looked up in $PATH. You can also +set the path with these commands: + (setenv \"PATH\" (concat (getenv \"PATH\") \";C:\\\\Program Files\\\\CMake 2.8\\\\bin\")) + (setenv \"PATH\" (concat (getenv \"PATH\") \":/usr/local/cmake/bin\"))" + :type 'file + :group 'cmake) ;; ;; Regular expressions used by line indentation function. ;; @@ -251,6 +264,75 @@ the indentation. Otherwise it retains the same position on the line" ; Run user hooks. (run-hooks 'cmake-mode-hook)) +; Help mode starts here + + +(defun cmake-command-run (type &optional topic) + "Runs the command cmake with the arguments specified. The +optional argument topic will be appended to the argument list." + (interactive "s") + (let* ((bufname (concat "*CMake" type (if topic "-") topic "*")) + (buffer (get-buffer bufname)) + ) + (if buffer + (display-buffer buffer 'not-this-window) + ;; Buffer doesn't exist. Create it and fill it + (setq buffer (generate-new-buffer bufname)) + (setq command (concat cmake-mode-cmake-executable " " type " " topic)) + (message "Running %s" command) + ;; We don't want the contents of the shell-command running to the + ;; minibuffer, so turn it off. A value of nil means don't automatically + ;; resize mini-windows. + (setq resize-mini-windows-save resize-mini-windows) + (setq resize-mini-windows nil) + (shell-command command buffer) + ;; Save the original window, so that we can come back to it later. + ;; save-excursion doesn't seem to work for this. + (setq window (selected-window)) + ;; We need to select it so that we can apply special modes to it + (select-window (display-buffer buffer 'not-this-window)) + (cmake-mode) + (toggle-read-only t) + ;; Restore the original window + (select-window window) + (setq resize-mini-windows resize-mini-windows-save) + ) + ) + ) + +(defun cmake-help-list-commands () + "Prints out a list of the cmake commands." + (interactive) + (cmake-command-run "--help-command-list") + ) + +(defvar cmake-help-command-history nil "Topic read history.") + +(require 'thingatpt) +(defun cmake-get-topic (type) + "Gets the topic from the minibuffer input. The default is the word the cursor is on." + (interactive) + (let* ((default-entry (word-at-point)) + (input (read-string + (format "CMake %s (default %s): " type default-entry) ; prompt + nil ; initial input + 'cmake-help-command-history ; command history + default-entry ; default-value + ))) + (if (string= input "") + (error "No argument given") + input)) + ) + + +(defun cmake-help-command () + "Prints out the help message corresponding to the command the cursor is on." + (interactive) + (setq command (cmake-get-topic "command")) + (cmake-command-run "--help-command" (downcase command)) + ) + + ; This file provides cmake-mode. (provide 'cmake-mode) diff --git a/Docs/cmake-syntax.vim b/Docs/cmake-syntax.vim index bdbe98e8e..df11a58fd 100644 --- a/Docs/cmake-syntax.vim +++ b/Docs/cmake-syntax.vim @@ -3,8 +3,8 @@ " Program: CMake - Cross-Platform Makefile Generator " Module: $RCSfile: cmake-syntax.vim,v $ " Language: VIM -" Date: $Date: 2008-09-03 13:43:16 $ -" Version: $Revision: 1.9.2.1 $ +" Date: $Date: 2008-08-25 14:31:28 $ +" Version: $Revision: 1.10 $ " " ============================================================================= @@ -12,8 +12,8 @@ " Language: CMake " Author: Andy Cedilnik " Maintainer: Karthik Krishnan -" Last Change: $Date: 2008-09-03 13:43:16 $ -" Version: $Revision: 1.9.2.1 $ +" Last Change: $Date: 2008-08-25 14:31:28 $ +" Version: $Revision: 1.10 $ " " Licence: The CMake license applies to this file. See " http://www.cmake.org/HTML/Copyright.html diff --git a/Modules/AddFileDependencies.cmake b/Modules/AddFileDependencies.cmake index 0ea64708a..ae2e803ab 100644 --- a/Modules/AddFileDependencies.cmake +++ b/Modules/AddFileDependencies.cmake @@ -2,6 +2,19 @@ # Adds the given files as dependencies to source_file # +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(ADD_FILE_DEPENDENCIES _file) GET_SOURCE_FILE_PROPERTY(_deps ${_file} OBJECT_DEPENDS) diff --git a/Modules/BundleUtilities.cmake b/Modules/BundleUtilities.cmake index d11979a48..d9c41f48a 100644 --- a/Modules/BundleUtilities.cmake +++ b/Modules/BundleUtilities.cmake @@ -23,6 +23,18 @@ # Requires CMake 2.6 or greater because it uses function, break and # PARENT_SCOPE. Also depends on GetPrerequisites.cmake. +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) # The functions defined in this file depend on the get_prerequisites function # (and possibly others) found in: @@ -174,14 +186,18 @@ function(get_bundle_and_executable app bundle_var executable_var valid_var) is_file_executable("${app}" is_executable) if(is_executable) get_dotapp_dir("${app}" dotapp_dir) - if(EXISTS "${dotapp_dir}" AND EXISTS "${app}") + if(EXISTS "${dotapp_dir}") set(${bundle_var} "${dotapp_dir}" PARENT_SCOPE) set(${executable_var} "${app}" PARENT_SCOPE) set(valid 1) - #message(STATUS "info: handled executable file case...") - else(EXISTS "${dotapp_dir}" AND EXISTS "${app}") - message(STATUS "warning: *NOT* handled - executable file case...") - endif(EXISTS "${dotapp_dir}" AND EXISTS "${app}") + #message(STATUS "info: handled executable file in .app dir case...") + else() + get_filename_component(app_dir "${app}" PATH) + set(${bundle_var} "${app_dir}" PARENT_SCOPE) + set(${executable_var} "${app}" PARENT_SCOPE) + set(valid 1) + #message(STATUS "info: handled executable file in any dir case...") + endif() else(is_executable) message(STATUS "warning: *NOT* handled - not .app dir, not executable file...") endif(is_executable) @@ -230,6 +246,9 @@ endfunction(get_bundle_all_executables) # function(get_item_key item key_var) get_filename_component(item_name "${item}" NAME) + if(WIN32) + string(TOLOWER "${item_name}" item_name) + endif() string(REGEX REPLACE "\\." "_" ${key_var} "${item_name}") set(${key_var} ${${key_var}} PARENT_SCOPE) endfunction(get_item_key) @@ -388,15 +407,29 @@ endfunction(get_bundle_keys) # copy_resolved_item_into_bundle # -# Copy a resolved item into the bundle if necessary. Copy is not necessary if the resolved_item -# is the same as the resolved_embedded_item. +# Copy a resolved item into the bundle if necessary. Copy is not necessary if +# the resolved_item is "the same as" the resolved_embedded_item. # function(copy_resolved_item_into_bundle resolved_item resolved_embedded_item) - if("${resolved_item}" STREQUAL "${resolved_embedded_item}") + if(WIN32) + # ignore case on Windows + string(TOLOWER "${resolved_item}" resolved_item_compare) + string(TOLOWER "${resolved_embedded_item}" resolved_embedded_item_compare) + else() + set(resolved_item_compare "${resolved_item}") + set(resolved_embedded_item_compare "${resolved_embedded_item}") + endif() + + if("${resolved_item_compare}" STREQUAL "${resolved_embedded_item_compare}") message(STATUS "warning: resolved_item == resolved_embedded_item - not copying...") - else("${resolved_item}" STREQUAL "${resolved_embedded_item}") + else() + #message(STATUS "copying COMMAND ${CMAKE_COMMAND} -E copy ${resolved_item} ${resolved_embedded_item}") execute_process(COMMAND ${CMAKE_COMMAND} -E copy "${resolved_item}" "${resolved_embedded_item}") - endif("${resolved_item}" STREQUAL "${resolved_embedded_item}") + endif() + + if(UNIX AND NOT APPLE) + file(RPATH_REMOVE FILE "${resolved_embedded_item}") + endif(UNIX AND NOT APPLE) endfunction(copy_resolved_item_into_bundle) @@ -503,9 +536,12 @@ function(fixup_bundle app libs dirs) message(STATUS "fixup_bundle: fixing...") foreach(key ${keys}) math(EXPR i ${i}+1) - message(STATUS "${i}/${n}: fixing up '${${key}_RESOLVED_EMBEDDED_ITEM}'") - #message(STATUS " exepath='${exepath}'") - fixup_bundle_item("${${key}_RESOLVED_EMBEDDED_ITEM}" "${exepath}" "${dirs}") + if(APPLE) + message(STATUS "${i}/${n}: fixing up '${${key}_RESOLVED_EMBEDDED_ITEM}'") + fixup_bundle_item("${${key}_RESOLVED_EMBEDDED_ITEM}" "${exepath}" "${dirs}") + else(APPLE) + message(STATUS "${i}/${n}: fix-up not required on this platform '${${key}_RESOLVED_EMBEDDED_ITEM}'") + endif(APPLE) endforeach(key) message(STATUS "fixup_bundle: cleaning up...") @@ -514,7 +550,7 @@ function(fixup_bundle app libs dirs) message(STATUS "fixup_bundle: verifying...") verify_app("${app}") else(valid) - message(STATUS "error: fixup_bundle: not a valid bundle") + message(SEND_ERROR "error: fixup_bundle: not a valid bundle") endif(valid) message(STATUS "fixup_bundle: done") @@ -550,30 +586,42 @@ function(verify_bundle_prerequisites bundle result_var info_var) is_file_executable("${f}" is_executable) if(is_executable) get_filename_component(exepath "${f}" PATH) - message(STATUS "executable file: ${f}") - math(EXPR count "${count} + 1") + message(STATUS "executable file ${count}: ${f}") + set(prereqs "") get_prerequisites("${f}" prereqs 1 1 "${exepath}" "") + # On the Mac, # "embedded" and "system" prerequisites are fine... anything else means # the bundle's prerequisites are not verified (i.e., the bundle is not # really "standalone") # + # On Windows (and others? Linux/Unix/...?) + # "local" and "system" prereqs are fine... + # set(external_prereqs "") + foreach(p ${prereqs}) set(p_type "") gp_file_type("${f}" "${p}" p_type) - if (NOT "${p_type}" STREQUAL "embedded" AND NOT "${p_type}" STREQUAL "system") - set(external_prereqs ${external_prereqs} "${p}") - endif (NOT "${p_type}" STREQUAL "embedded" AND NOT "${p_type}" STREQUAL "system") + + if(APPLE) + if(NOT "${p_type}" STREQUAL "embedded" AND NOT "${p_type}" STREQUAL "system") + set(external_prereqs ${external_prereqs} "${p}") + endif() + else() + if(NOT "${p_type}" STREQUAL "local" AND NOT "${p_type}" STREQUAL "system") + set(external_prereqs ${external_prereqs} "${p}") + endif() + endif() endforeach(p) if(external_prereqs) - # Found non-system/non-embedded prerequisites: + # Found non-system/somehow-unacceptable prerequisites: set(result 0) - set(info ${info} "non-system/non-embedded prerequisites found:\nf='${f}'\nexternal_prereqs='${external_prereqs}'\n") + set(info ${info} "external prerequisites found:\nf='${f}'\nexternal_prereqs='${external_prereqs}'\n") endif(external_prereqs) endif(is_executable) endforeach(f) diff --git a/Modules/CMake.cmake b/Modules/CMake.cmake old mode 100755 new mode 100644 index 7689bd924..cbdaa350c --- a/Modules/CMake.cmake +++ b/Modules/CMake.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This file is used by cmake.cxx to compute the CMAKE_ROOT location. # Do not remove this file from cvs without updating cmake.cxx to look # for a different file. diff --git a/Modules/CMakeASM-ATTInformation.cmake b/Modules/CMakeASM-ATTInformation.cmake index 353473af9..51c445b6b 100644 --- a/Modules/CMakeASM-ATTInformation.cmake +++ b/Modules/CMakeASM-ATTInformation.cmake @@ -1,6 +1,22 @@ + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # support for AT&T syntax assemblers, e.g. GNU as SET(ASM_DIALECT "-ATT") -SET(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS s;S;asm) +# *.S files are supposed to be preprocessed, so they should not be passed to +# assembler but should be processed by gcc +SET(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS s;asm) INCLUDE(CMakeASMInformation) SET(ASM_DIALECT) diff --git a/Modules/CMakeASMInformation.cmake b/Modules/CMakeASMInformation.cmake index cef1e78f7..c49581023 100644 --- a/Modules/CMakeASMInformation.cmake +++ b/Modules/CMakeASMInformation.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MESSAGE(STATUS "Loaded CMakeASM${ASM_DIALECT}Information - ASM${ASM_DIALECT} support is still experimental, please report issues") IF(UNIX) diff --git a/Modules/CMakeASM_MASMInformation.cmake b/Modules/CMakeASM_MASMInformation.cmake index 05366b9b4..2f27d2a8f 100644 --- a/Modules/CMakeASM_MASMInformation.cmake +++ b/Modules/CMakeASM_MASMInformation.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # support for the MS assembler, masm and masm64 SET(ASM_DIALECT "_MASM") diff --git a/Modules/CMakeAddNewLanguage.txt b/Modules/CMakeAddNewLanguage.txt old mode 100755 new mode 100644 diff --git a/Modules/CMakeBackwardCompatibilityC.cmake b/Modules/CMakeBackwardCompatibilityC.cmake index 033338453..b7014cf8e 100644 --- a/Modules/CMakeBackwardCompatibilityC.cmake +++ b/Modules/CMakeBackwardCompatibilityC.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Nothing here yet IF(CMAKE_GENERATOR MATCHES "Visual Studio 7") INCLUDE(CMakeVS7BackwardCompatibility) diff --git a/Modules/CMakeBackwardCompatibilityCXX.cmake b/Modules/CMakeBackwardCompatibilityCXX.cmake index 29dabc60e..a4175e881 100644 --- a/Modules/CMakeBackwardCompatibilityCXX.cmake +++ b/Modules/CMakeBackwardCompatibilityCXX.cmake @@ -5,6 +5,20 @@ # INCLUDE(CheckIncludeFileCXX) # INCLUDE(TestForSTDNamespace) # INCLUDE(TestForANSIForScope) + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF(NOT CMAKE_SKIP_COMPATIBILITY_TESTS) # check for some ANSI flags in the CXX compiler if it is not gnu IF(NOT CMAKE_COMPILER_IS_GNUCXX) diff --git a/Modules/CMakeBorlandFindMake.cmake b/Modules/CMakeBorlandFindMake.cmake old mode 100755 new mode 100644 index 7efc1c2d0..d9081688d --- a/Modules/CMakeBorlandFindMake.cmake +++ b/Modules/CMakeBorlandFindMake.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + SET (CMAKE_MAKE_PROGRAM "make" CACHE STRING "Program used to build from makefiles.") MARK_AS_ADVANCED(CMAKE_MAKE_PROGRAM) diff --git a/Modules/CMakeBuildSettings.cmake.in b/Modules/CMakeBuildSettings.cmake.in index b018ada96..7c4aa148a 100644 --- a/Modules/CMakeBuildSettings.cmake.in +++ b/Modules/CMakeBuildSettings.cmake.in @@ -1,29 +1,13 @@ -# This file has been automatically generated by CMake. DO NOT EDIT! -# It contains the build configuration for @PROJECT_NAME@. The command -# CMAKE_EXPORT_BUILD_SETTINGS(...) was used by @PROJECT_NAME@ to -# generate this file. Another project can use -# CMAKE_IMPORT_BUILD_SETTINGS(...) to load the build configuration -# from this file. The contents of this file may be different across -# versions of CMake. The values set here should not be used by user -# code. -SET(CMAKE_BUILD_SETTING_CMAKE_MAJOR_VERSION "@CMAKE_MAJOR_VERSION@") -SET(CMAKE_BUILD_SETTING_CMAKE_MINOR_VERSION "@CMAKE_MINOR_VERSION@") -SET(CMAKE_BUILD_SETTING_PROJECT_NAME "@PROJECT_NAME@") - -SET(CMAKE_BUILD_SETTING_C_COMPILER "@CMAKE_C_COMPILER@") -SET(CMAKE_BUILD_SETTING_C_FLAGS "@CMAKE_C_FLAGS@") -SET(CMAKE_BUILD_SETTING_C_FLAGS_DEBUG "@CMAKE_C_FLAGS_DEBUG@") -SET(CMAKE_BUILD_SETTING_C_FLAGS_RELEASE "@CMAKE_C_FLAGS_RELEASE@") -SET(CMAKE_BUILD_SETTING_C_FLAGS_MINSIZEREL "@CMAKE_C_FLAGS_MINSIZEREL@") -SET(CMAKE_BUILD_SETTING_C_FLAGS_RELWITHDEBINFO "@CMAKE_C_FLAGS_RELWITHDEBINFO@") - -SET(CMAKE_BUILD_SETTING_CXX_COMPILER "@CMAKE_CXX_COMPILER@") -SET(CMAKE_BUILD_SETTING_CXX_FLAGS "@CMAKE_CXX_FLAGS@") -SET(CMAKE_BUILD_SETTING_CXX_FLAGS_DEBUG "@CMAKE_CXX_FLAGS_DEBUG@") -SET(CMAKE_BUILD_SETTING_CXX_FLAGS_RELEASE "@CMAKE_CXX_FLAGS_RELEASE@") -SET(CMAKE_BUILD_SETTING_CXX_FLAGS_MINSIZEREL "@CMAKE_CXX_FLAGS_MINSIZEREL@") -SET(CMAKE_BUILD_SETTING_CXX_FLAGS_RELWITHDEBINFO "@CMAKE_CXX_FLAGS_RELWITHDEBINFO@") - -SET(CMAKE_BUILD_SETTING_BUILD_TYPE "@CMAKE_BUILD_TYPE@") -SET(CMAKE_BUILD_SETTING_BUILD_TOOL "@CMAKE_BUILD_TOOL@") +# The command CMAKE_EXPORT_BUILD_SETTINGS(...) was used by +# @PROJECT_NAME@ to generate this file. As of CMake 2.8 the +# functionality of this command has been dropped as it was deemed +# harmful (confusing users by changing their compiler). + +# CMake 2.6 and below do not support loading their equivalent of this +# file if it was produced by a newer version of CMake. CMake 2.8 and +# above simply do not load this file. Therefore we simply error out. +message(FATAL_ERROR + "This @PROJECT_NAME@ was built by CMake @CMAKE_VERSION@, but this is CMake " + "${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}. " + "Please upgrade CMake to a more recent version.") diff --git a/Modules/CMakeCCompiler.cmake.in b/Modules/CMakeCCompiler.cmake.in index e334c471d..842885764 100644 --- a/Modules/CMakeCCompiler.cmake.in +++ b/Modules/CMakeCCompiler.cmake.in @@ -34,3 +34,8 @@ ENDIF(CMAKE_C_SIZEOF_DATA_PTR) IF(CMAKE_C_COMPILER_ABI) SET(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") ENDIF(CMAKE_C_COMPILER_ABI) + +SET(CMAKE_C_HAS_ISYSROOT "@CMAKE_C_HAS_ISYSROOT@") + +SET(CMAKE_C_IMPLICIT_LINK_LIBRARIES "@CMAKE_C_IMPLICIT_LINK_LIBRARIES@") +SET(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "@CMAKE_C_IMPLICIT_LINK_DIRECTORIES@") diff --git a/Modules/CMakeCCompilerId.c.in b/Modules/CMakeCCompilerId.c.in index 35d7df77a..a999e8db5 100644 --- a/Modules/CMakeCCompilerId.c.in +++ b/Modules/CMakeCCompilerId.c.in @@ -25,7 +25,13 @@ # define COMPILER_ID "Compaq" #elif defined(__IBMC__) -# define COMPILER_ID "VisualAge" +# if defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" +# elif __IBMC__ >= 800 +# define COMPILER_ID "XL" +# else +# define COMPILER_ID "VisualAge" +# endif #elif defined(__PGI) # define COMPILER_ID "PGI" @@ -52,7 +58,7 @@ #elif defined(SDCC) # define COMPILER_ID "SDCC" -#elif defined(_COMPILER_VERSION) +#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) # define COMPILER_ID "MIPSpro" /* This compiler is either not known or is too old to define an diff --git a/Modules/CMakeCInformation.cmake b/Modules/CMakeCInformation.cmake old mode 100755 new mode 100644 index bb3142ccc..aa8fdc7ab --- a/Modules/CMakeCInformation.cmake +++ b/Modules/CMakeCInformation.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This file sets the basic flags for the C language in CMake. # It also loads the available platform file for the system-compiler # if it exists. @@ -12,6 +25,12 @@ IF(UNIX) ELSE(UNIX) SET(CMAKE_C_OUTPUT_EXTENSION .obj) ENDIF(UNIX) + +# Load compiler-specific information. +IF(CMAKE_C_COMPILER_ID) + INCLUDE(Compiler/${CMAKE_C_COMPILER_ID}-C OPTIONAL) +ENDIF(CMAKE_C_COMPILER_ID) + SET(CMAKE_BASE_NAME) GET_FILENAME_COMPONENT(CMAKE_BASE_NAME ${CMAKE_C_COMPILER} NAME_WE) IF(CMAKE_COMPILER_IS_GNUCC) diff --git a/Modules/CMakeCXXCompiler.cmake.in b/Modules/CMakeCXXCompiler.cmake.in index 81380c9ef..0cd461839 100644 --- a/Modules/CMakeCXXCompiler.cmake.in +++ b/Modules/CMakeCXXCompiler.cmake.in @@ -22,6 +22,7 @@ SET(CMAKE_CXX_COMPILER_ID_RUN 1) SET(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;H;o;O;obj;OBJ;def;DEF;rc;RC) SET(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm) SET(CMAKE_CXX_LINKER_PREFERENCE 30) +SET(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) # Save compiler ABI information. SET(CMAKE_CXX_SIZEOF_DATA_PTR "@CMAKE_CXX_SIZEOF_DATA_PTR@") @@ -34,3 +35,8 @@ ENDIF(CMAKE_CXX_SIZEOF_DATA_PTR) IF(CMAKE_CXX_COMPILER_ABI) SET(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") ENDIF(CMAKE_CXX_COMPILER_ABI) + +SET(CMAKE_CXX_HAS_ISYSROOT "@CMAKE_CXX_HAS_ISYSROOT@") + +SET(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "@CMAKE_CXX_IMPLICIT_LINK_LIBRARIES@") +SET(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "@CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES@") diff --git a/Modules/CMakeCXXCompilerId.cpp.in b/Modules/CMakeCXXCompilerId.cpp.in index fa2178c0b..2c8aa3c3c 100644 --- a/Modules/CMakeCXXCompilerId.cpp.in +++ b/Modules/CMakeCXXCompilerId.cpp.in @@ -27,7 +27,13 @@ # define COMPILER_ID "Compaq" #elif defined(__IBMCPP__) -# define COMPILER_ID "VisualAge" +# if defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" +# elif __IBMCPP__ >= 800 +# define COMPILER_ID "XL" +# else +# define COMPILER_ID "VisualAge" +# endif #elif defined(__PGI) # define COMPILER_ID "PGI" @@ -43,7 +49,7 @@ SHARC (21000) DSPs */ # define COMPILER_ID "ADSP" -#elif defined(_COMPILER_VERSION) +#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) # define COMPILER_ID "MIPSpro" /* This compiler is either not known or is too old to define an diff --git a/Modules/CMakeCXXInformation.cmake b/Modules/CMakeCXXInformation.cmake old mode 100755 new mode 100644 index a5923a399..681e49562 --- a/Modules/CMakeCXXInformation.cmake +++ b/Modules/CMakeCXXInformation.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This file sets the basic flags for the C++ language in CMake. # It also loads the available platform file for the system-compiler # if it exists. @@ -13,6 +26,11 @@ ELSE(UNIX) SET(CMAKE_CXX_OUTPUT_EXTENSION .obj) ENDIF(UNIX) +# Load compiler-specific information. +IF(CMAKE_CXX_COMPILER_ID) + INCLUDE(Compiler/${CMAKE_CXX_COMPILER_ID}-CXX OPTIONAL) +ENDIF(CMAKE_CXX_COMPILER_ID) + SET(CMAKE_BASE_NAME) GET_FILENAME_COMPONENT(CMAKE_BASE_NAME ${CMAKE_CXX_COMPILER} NAME_WE) # since the gnu compiler has several names force g++ diff --git a/Modules/CMakeCommonLanguageInclude.cmake b/Modules/CMakeCommonLanguageInclude.cmake old mode 100755 new mode 100644 index 373a9a338..80d5678d9 --- a/Modules/CMakeCommonLanguageInclude.cmake +++ b/Modules/CMakeCommonLanguageInclude.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # this file has flags that are shared across languages and sets # cache values that can be initialized in the platform-compiler.cmake file # it may be included by more than one language. diff --git a/Modules/CMakeDependentOption.cmake b/Modules/CMakeDependentOption.cmake index 2183191cd..4d978c487 100644 --- a/Modules/CMakeDependentOption.cmake +++ b/Modules/CMakeDependentOption.cmake @@ -11,6 +11,20 @@ # the status of USE_BAR or USE_ZOT ever changes, any value for the # USE_FOO option is saved so that when the option is re-enabled it # retains its old value. + +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(CMAKE_DEPENDENT_OPTION option doc default depends force) IF(${option}_ISSET MATCHES "^${option}_ISSET$") SET(${option}_AVAILABLE 1) diff --git a/Modules/CMakeDetermineASM-ATTCompiler.cmake b/Modules/CMakeDetermineASM-ATTCompiler.cmake index 5861159ec..99c591bed 100644 --- a/Modules/CMakeDetermineASM-ATTCompiler.cmake +++ b/Modules/CMakeDetermineASM-ATTCompiler.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # determine the compiler to use for ASM using AT&T syntax, e.g. GNU as SET(ASM_DIALECT "-ATT") diff --git a/Modules/CMakeDetermineASMCompiler.cmake b/Modules/CMakeDetermineASMCompiler.cmake index da7194af9..adf140888 100644 --- a/Modules/CMakeDetermineASMCompiler.cmake +++ b/Modules/CMakeDetermineASMCompiler.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # determine the compiler to use for ASM programs IF(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER) @@ -21,7 +35,7 @@ IF(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER) ELSE(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER) - # we only get here if CMAKE_C_COMPILER was specified using -D or a pre-made CMakeCache.txt + # we only get here if CMAKE_ASM${ASM_DIALECT}_COMPILER was specified using -D or a pre-made CMakeCache.txt # (e.g. via ctest) or set in CMAKE_TOOLCHAIN_FILE # # if a compiler was specified by the user but without path, @@ -43,11 +57,11 @@ IF (NOT _CMAKE_TOOLCHAIN_LOCATION) GET_FILENAME_COMPONENT(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_ASM${ASM_DIALECT}_COMPILER}" PATH) ENDIF (NOT _CMAKE_TOOLCHAIN_LOCATION) -# If we have a gcc cross compiler, they have usually some prefix, like -# e.g. powerpc-linux-gcc, arm-elf-gcc or i586-mingw32msvc-gcc . +# If we have a gas/as cross compiler, they have usually some prefix, like +# e.g. powerpc-linux-gas, arm-elf-gas or i586-mingw32msvc-gas . # The other tools of the toolchain usually have the same prefix # NAME_WE cannot be used since then this test will fail for names lile -# "arm-unknown-nto-qnx6.3.0-gcc.exe", where BASENAME would be +# "arm-unknown-nto-qnx6.3.0-gas.exe", where BASENAME would be # "arm-unknown-nto-qnx6" instead of the correct "arm-unknown-nto-qnx6.3.0-" IF (NOT _CMAKE_TOOLCHAIN_PREFIX) GET_FILENAME_COMPONENT(COMPILER_BASENAME "${CMAKE_ASM${ASM_DIALECT}_COMPILER}" NAME) @@ -58,7 +72,7 @@ ENDIF (NOT _CMAKE_TOOLCHAIN_PREFIX) INCLUDE(CMakeFindBinUtils) -SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ENV_VAR "ASM") +SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ENV_VAR "ASM${ASM_DIALECT}") IF(CMAKE_ASM${ASM_DIALECT}_COMPILER) MESSAGE(STATUS "Found assembler: ${CMAKE_ASM${ASM_DIALECT}_COMPILER}") diff --git a/Modules/CMakeDetermineASM_MASMCompiler.cmake b/Modules/CMakeDetermineASM_MASMCompiler.cmake index 3b72e072b..8223ea0ec 100644 --- a/Modules/CMakeDetermineASM_MASMCompiler.cmake +++ b/Modules/CMakeDetermineASM_MASMCompiler.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Find the MS assembler (masm or masm64) SET(ASM_DIALECT "_MASM") diff --git a/Modules/CMakeDetermineCCompiler.cmake b/Modules/CMakeDetermineCCompiler.cmake index 82e944894..a655b0fd0 100644 --- a/Modules/CMakeDetermineCCompiler.cmake +++ b/Modules/CMakeDetermineCCompiler.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # determine the compiler to use for C programs # NOTE, a generator may set CMAKE_C_COMPILER before # loading this file to force a compiler. @@ -107,6 +120,9 @@ IF(NOT CMAKE_C_COMPILER_ID_RUN) SET(CMAKE_C_COMPILER_ID_TEST_FLAGS # Try compiling to an object file only. "-c" + + # Try enabling ANSI mode on HP. + "-Aa" ) # Try to identify the compiler. diff --git a/Modules/CMakeDetermineCXXCompiler.cmake b/Modules/CMakeDetermineCXXCompiler.cmake index 87abffa94..13d944e01 100644 --- a/Modules/CMakeDetermineCXXCompiler.cmake +++ b/Modules/CMakeDetermineCXXCompiler.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # determine the compiler to use for C++ programs # NOTE, a generator may set CMAKE_CXX_COMPILER before # loading this file to force a compiler. diff --git a/Modules/CMakeDetermineCompilerABI.cmake b/Modules/CMakeDetermineCompilerABI.cmake index 3fd06a957..872e9abbb 100644 --- a/Modules/CMakeDetermineCompilerABI.cmake +++ b/Modules/CMakeDetermineCompilerABI.cmake @@ -1,8 +1,23 @@ +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Function to compile a source file to identify the compiler ABI. # This is used internally by CMake and should not be included by user # code. +INCLUDE(${CMAKE_ROOT}/Modules/CMakeParseImplicitLinkInfo.cmake) + FUNCTION(CMAKE_DETERMINE_COMPILER_ABI lang src) IF(NOT DEFINED CMAKE_DETERMINE_${lang}_ABI_COMPILED) MESSAGE(STATUS "Detecting ${lang} compiler ABI info") @@ -11,6 +26,8 @@ FUNCTION(CMAKE_DETERMINE_COMPILER_ABI lang src) SET(BIN "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeDetermineCompilerABI_${lang}.bin") TRY_COMPILE(CMAKE_DETERMINE_${lang}_ABI_COMPILED ${CMAKE_BINARY_DIR} ${src} + CMAKE_FLAGS "-DCMAKE_EXE_LINKER_FLAGS=${CMAKE_${lang}_VERBOSE_FLAG}" + "-DCMAKE_${lang}_STANDARD_LIBRARIES=" OUTPUT_VARIABLE OUTPUT COPY_FILE "${BIN}" ) @@ -40,6 +57,20 @@ FUNCTION(CMAKE_DETERMINE_COMPILER_ABI lang src) SET(CMAKE_INTERNAL_PLATFORM_ABI "${ABI_NAME}" PARENT_SCOPE) ENDIF(ABI_NAME) + # Parse implicit linker information for this language, if available. + SET(implicit_dirs "") + SET(implicit_libs "") + IF(CMAKE_${lang}_VERBOSE_FLAG + # Implicit link information cannot be used explicitly for + # multiple OS X architectures, so we skip it. + AND NOT "${CMAKE_OSX_ARCHITECTURES}" MATCHES ";" + # Skip this with Xcode for now. + AND NOT "${CMAKE_GENERATOR}" MATCHES Xcode) + CMAKE_PARSE_IMPLICIT_LINK_INFO("${OUTPUT}" implicit_libs implicit_dirs) + ENDIF() + SET(CMAKE_${lang}_IMPLICIT_LINK_LIBRARIES "${implicit_libs}" PARENT_SCOPE) + SET(CMAKE_${lang}_IMPLICIT_LINK_DIRECTORIES "${implicit_dirs}" PARENT_SCOPE) + ELSE(CMAKE_DETERMINE_${lang}_ABI_COMPILED) MESSAGE(STATUS "Detecting ${lang} compiler ABI info - failed") FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index dfbaefbb7..3899462b6 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Function to compile a source file to identify the compiler. This is # used internally by CMake and should not be included by user code. # If successful, sets CMAKE__COMPILER_ID and CMAKE__PLATFORM_ID diff --git a/Modules/CMakeDetermineFortranCompiler.cmake b/Modules/CMakeDetermineFortranCompiler.cmake old mode 100755 new mode 100644 index 7afa5ee3d..8adacd67c --- a/Modules/CMakeDetermineFortranCompiler.cmake +++ b/Modules/CMakeDetermineFortranCompiler.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # determine the compiler to use for Fortran programs # NOTE, a generator may set CMAKE_Fortran_COMPILER before # loading this file to force a compiler. @@ -56,9 +69,44 @@ IF(NOT CMAKE_Fortran_COMPILER) ifort ifc efc f95 pgf95 lf95 xlf95 fort gfortran gfortran-4 g95 f90 pgf90 xlf90 epcf90 fort77 frt pgf77 xlf fl32 af77 g77 f77 ) + + # Vendor-specific compiler names. + SET(_Fortran_COMPILER_NAMES_GNU gfortran gfortran-4 g95 g77) + SET(_Fortran_COMPILER_NAMES_Intel ifort ifc efc) + SET(_Fortran_COMPILER_NAMES_PGI pgf95 pgf90 pgf77) + SET(_Fortran_COMPILER_NAMES_XL xlf) + SET(_Fortran_COMPILER_NAMES_VisualAge xlf95 xlf90 xlf) + + # Prefer vendors matching the C and C++ compilers. + SET(CMAKE_Fortran_COMPILER_LIST + ${_Fortran_COMPILER_NAMES_${CMAKE_C_COMPILER_ID}} + ${_Fortran_COMPILER_NAMES_${CMAKE_CXX_COMPILER_ID}} + ${CMAKE_Fortran_COMPILER_LIST}) + LIST(REMOVE_DUPLICATES CMAKE_Fortran_COMPILER_LIST) ENDIF(CMAKE_Fortran_COMPILER_INIT) + # Look for directories containing the C and C++ compilers. + SET(_Fortran_COMPILER_HINTS) + FOREACH(lang C CXX) + IF(CMAKE_${lang}_COMPILER AND IS_ABSOLUTE "${CMAKE_${lang}_COMPILER}") + GET_FILENAME_COMPONENT(_hint "${CMAKE_${lang}_COMPILER}" PATH) + IF(IS_DIRECTORY "${_hint}") + LIST(APPEND _Fortran_COMPILER_HINTS "${_hint}") + ENDIF() + SET(_hint) + ENDIF() + ENDFOREACH() + # Find the compiler. + IF(_Fortran_COMPILER_HINTS) + # Prefer directories containing C and C++ compilers. + LIST(REMOVE_DUPLICATES _Fortran_COMPILER_HINTS) + FIND_PROGRAM(CMAKE_Fortran_COMPILER + NAMES ${CMAKE_Fortran_COMPILER_LIST} + PATHS ${_Fortran_COMPILER_HINTS} + NO_DEFAULT_PATH + DOC "Fortran compiler") + ENDIF() FIND_PROGRAM(CMAKE_Fortran_COMPILER NAMES ${CMAKE_Fortran_COMPILER_LIST} DOC "Fortran compiler") IF(CMAKE_Fortran_COMPILER_INIT AND NOT CMAKE_Fortran_COMPILER) SET(CMAKE_Fortran_COMPILER "${CMAKE_Fortran_COMPILER_INIT}" CACHE FILEPATH "Fortran compiler" FORCE) @@ -120,7 +168,7 @@ IF(NOT CMAKE_Fortran_COMPILER_ID_RUN) # Try to identify the compiler. SET(CMAKE_Fortran_COMPILER_ID) INCLUDE(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake) - CMAKE_DETERMINE_COMPILER_ID(Fortran FFLAGS CMakeFortranCompilerId.F90) + CMAKE_DETERMINE_COMPILER_ID(Fortran FFLAGS CMakeFortranCompilerId.F) # Fall back to old is-GNU test. IF(NOT CMAKE_Fortran_COMPILER_ID) diff --git a/Modules/CMakeDetermineJavaCompiler.cmake b/Modules/CMakeDetermineJavaCompiler.cmake index f221447d1..ee7ccb014 100644 --- a/Modules/CMakeDetermineJavaCompiler.cmake +++ b/Modules/CMakeDetermineJavaCompiler.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # determine the compiler to use for Java programs # NOTE, a generator may set CMAKE_Java_COMPILER before # loading this file to force a compiler. diff --git a/Modules/CMakeDetermineRCCompiler.cmake b/Modules/CMakeDetermineRCCompiler.cmake old mode 100755 new mode 100644 index 1bea04ae1..e1b6df27a --- a/Modules/CMakeDetermineRCCompiler.cmake +++ b/Modules/CMakeDetermineRCCompiler.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # determine the compiler to use for C programs # NOTE, a generator may set CMAKE_C_COMPILER before # loading this file to force a compiler. diff --git a/Modules/CMakeDetermineSystem.cmake b/Modules/CMakeDetermineSystem.cmake index aa3b59b38..68a9480a5 100644 --- a/Modules/CMakeDetermineSystem.cmake +++ b/Modules/CMakeDetermineSystem.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This module is used by the Makefile generator to determin the following variables: # CMAKE_SYSTEM_NAME - on unix this is uname -s, for windows it is Windows # CMAKE_SYSTEM_VERSION - on unix this is uname -r, for windows it is empty diff --git a/Modules/CMakeDetermineVSServicePack.cmake b/Modules/CMakeDetermineVSServicePack.cmake new file mode 100644 index 000000000..a5bb528ee --- /dev/null +++ b/Modules/CMakeDetermineVSServicePack.cmake @@ -0,0 +1,95 @@ +# - Includes a public function for assisting users in trying to determine the +# Visual Studio service pack in use. +# +# Sets the passed in variable to one of the following values or an empty +# string if unknown. +# vc80 +# vc80sp1 +# vc90 +# vc90sp1 +# +# Usage: +# =========================== +# +# if(MSVC) +# include(CMakeDetermineVSServicePack) +# DetermineVSServicePack( my_service_pack ) +# +# if( my_service_pack ) +# message(STATUS "Detected: ${my_service_pack}") +# endif() +# endif() +# +# =========================== + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2009 Philip Lowman +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# [INTERNAL] +# Please do not call this function directly +function(_DetermineVSServicePackFromCompiler _OUT_VAR _cl_version) + if (${_cl_version} VERSION_EQUAL "14.00.50727.42") + set(_version "vc80") + elseif(${_cl_version} VERSION_EQUAL "14.00.50727.762") + set(_version "vc80sp1") + elseif(${_cl_version} VERSION_EQUAL "15.00.21022.08") + set(_version "vc90") + elseif(${_cl_version} VERSION_EQUAL "15.00.30729.01") + set(_version "vc90sp1") + else() + set(_version "") + endif() + set(${_OUT_VAR} ${_version} PARENT_SCOPE) +endfunction() + +# +# A function to call to determine the Visual Studio service pack +# in use. See documentation above. +function(DetermineVSServicePack _pack) + if(NOT DETERMINED_VS_SERVICE_PACK OR NOT ${_pack}) + file(WRITE "${CMAKE_BINARY_DIR}/return0.cc" + "int main() { return 0; }\n") + + try_compile(DETERMINED_VS_SERVICE_PACK + "${CMAKE_BINARY_DIR}" + "${CMAKE_BINARY_DIR}/return0.cc" + OUTPUT_VARIABLE _output + COPY_FILE "${CMAKE_BINARY_DIR}/return0.cc") + + file(REMOVE "${CMAKE_BINARY_DIR}/return0.cc") + + if(DETERMINED_VS_SERVICE_PACK AND _output) + string(REGEX MATCH "Compiler Version [0-9]+.[0-9]+.[0-9]+.[0-9]+" + _cl_version "${_output}") + if(_cl_version) + string(REGEX MATCHALL "[0-9]+" + _cl_version_list "${_cl_version}") + list(GET _cl_version_list 0 _major) + list(GET _cl_version_list 1 _minor) + list(GET _cl_version_list 2 _patch) + list(GET _cl_version_list 3 _tweak) + + set(_cl_version_string ${_major}.${_minor}.${_patch}.${_tweak}) + + # Call helper function to determine VS version + _DetermineVSServicePackFromCompiler(_sp "${_cl_version_string}") + if(_sp) + set(${_pack} ${_sp} CACHE INTERNAL + "The Visual Studio Release with Service Pack") + endif() + endif() + endif() + endif() +endfunction() + diff --git a/Modules/CMakeExportBuildSettings.cmake b/Modules/CMakeExportBuildSettings.cmake index 0c71efa03..f7d7de183 100644 --- a/Modules/CMakeExportBuildSettings.cmake +++ b/Modules/CMakeExportBuildSettings.cmake @@ -1,7 +1,31 @@ -# - export build settings from a project. -# CMAKE_EXPORT_BUILD_SETTINGS(SETTINGS_FILE) -# macro defined to export the build settings for use by another project. -# SETTINGS_FILE - the file into which the settings are to be stored. + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# This module is purposely no longer documented. It does nothing useful. +IF(NOT "${CMAKE_MINIMUM_REQUIRED_VERSION}" VERSION_LESS 2.7) + MESSAGE(FATAL_ERROR + "The functionality of this module has been dropped as of CMake 2.8. " + "It was deemed harmful (confusing users by changing their compiler). " + "Please remove calls to the CMAKE_EXPORT_BUILD_SETTINGS macro and " + "stop including this module. " + "If this project generates any files for use by external projects, " + "remove any use of the CMakeImportBuildSettings module from them.") +ENDIF() + +# This macro used to store build settings of a project in a file to be +# loaded by another project using CMAKE_IMPORT_BUILD_SETTINGS. Now it +# creates a file that refuses to load (with comment explaining why). MACRO(CMAKE_EXPORT_BUILD_SETTINGS SETTINGS_FILE) IF(${SETTINGS_FILE} MATCHES ".+") CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeBuildSettings.cmake.in diff --git a/Modules/CMakeFindBinUtils.cmake b/Modules/CMakeFindBinUtils.cmake index dc646730c..d27c978a5 100644 --- a/Modules/CMakeFindBinUtils.cmake +++ b/Modules/CMakeFindBinUtils.cmake @@ -16,6 +16,18 @@ # on UNIX, cygwin and mingw +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) # if it's the MS C/CXX compiler, search for link IF("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC" diff --git a/Modules/CMakeFindCodeBlocks.cmake b/Modules/CMakeFindCodeBlocks.cmake new file mode 100644 index 000000000..0dbe20f14 --- /dev/null +++ b/Modules/CMakeFindCodeBlocks.cmake @@ -0,0 +1,23 @@ + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# This file is included in CMakeSystemSpecificInformation.cmake if +# the CodeBlocks extra generator has been selected. + +FIND_PROGRAM(CMAKE_CODEBLOCKS_EXECUTABLE NAMES codeblocks DOC "The CodeBlocks executable") + +IF(CMAKE_CODEBLOCKS_EXECUTABLE) + SET(CMAKE_OPEN_PROJECT_COMMAND "${CMAKE_CODEBLOCKS_EXECUTABLE} " ) +ENDIF(CMAKE_CODEBLOCKS_EXECUTABLE) + diff --git a/Modules/CMakeFindEclipseCDT4.cmake b/Modules/CMakeFindEclipseCDT4.cmake new file mode 100644 index 000000000..f479285f1 --- /dev/null +++ b/Modules/CMakeFindEclipseCDT4.cmake @@ -0,0 +1,97 @@ + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# This file is included in CMakeSystemSpecificInformation.cmake if +# the Eclipse CDT4 extra generator has been selected. + +FIND_PROGRAM(CMAKE_ECLIPSE_EXECUTABLE NAMES eclipse DOC "The Eclipse executable") + + +# The Eclipse generator needs to know the standard include path +# so that Eclipse ca find the headers at runtime and parsing etc. works better +# This is done here by actually running gcc with the options so it prints its +# system include directories, which are parsed then and stored in the cache. +MACRO(_DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang _result _resultDefines) + SET(${_result}) + SET(_gccOutput) + FILE(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy" "\n" ) + EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -v -E -x ${_lang} -dD dummy + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles + ERROR_VARIABLE _gccOutput + OUTPUT_VARIABLE _gccStdout ) + FILE(REMOVE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy") + + IF( "${_gccOutput}" MATCHES "> search starts here[^\n]+\n *(.+) *\n *End of (search) list" ) + SET(${_result} ${CMAKE_MATCH_1}) + STRING(REPLACE "\n" " " ${_result} "${${_result}}") + SEPARATE_ARGUMENTS(${_result}) + ENDIF( "${_gccOutput}" MATCHES "> search starts here[^\n]+\n *(.+) *\n *End of (search) list" ) + + IF( "${_gccStdout}" MATCHES "built-in>\"\n(.+)# 1 +\"dummy\"" ) + SET(_builtinDefines ${CMAKE_MATCH_1}) + # Remove the '# 1 ""' lines + STRING(REGEX REPLACE "# 1[^\n]+\n" "" _filteredOutput "${_builtinDefines}") + # Remove the "#define " parts from the output: + STRING(REGEX REPLACE "#define " "" _defineRemoved "${_filteredOutput}") + # Replace the line breaks with spaces, so we can use separate arguments afterwards + STRING(REGEX REPLACE "\n" " " _defineRemoved "${_defineRemoved}") + # Remove space at the end, this would produce empty list items + STRING(REGEX REPLACE " +$" "" ${_resultDefines} "${_defineRemoved}") + SEPARATE_ARGUMENTS(${_resultDefines}) + ENDIF( "${_gccStdout}" MATCHES "built-in>\"\n(.+)# 1 +\"dummy\"" ) +ENDMACRO(_DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang) + +# Save the current LC_ALL, LC_MESSAGES, and LANG environment variables and set them +# to "C" that way GCC's "search starts here" text is in English and we can grok it. +SET(_orig_lc_all $ENV{LC_ALL}) +SET(_orig_lc_messages $ENV{LC_MESSAGES}) +SET(_orig_lang $ENV{LANG}) +IF(_orig_lc_all) + SET(ENV{LC_ALL} C) +ENDIF(_orig_lc_all) +IF(_orig_lc_messages) + SET(ENV{LC_MESSAGES} C) +ENDIF(_orig_lc_messages) +IF(_orig_lang) + SET(ENV{LANG} C) +ENDIF(_orig_lang) + +# Now check for C, works for gcc and Intel compiler at least +IF (NOT CMAKE_ECLIPSE_C_SYSTEM_INCLUDE_DIRS) + IF ("${CMAKE_C_COMPILER_ID}" MATCHES GNU OR "${CMAKE_C_COMPILER_ID}" MATCHES Intel) + _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c _dirs _defines) + SET(CMAKE_ECLIPSE_C_SYSTEM_INCLUDE_DIRS "${_dirs}" CACHE INTERNAL "C compiler system include directories") + SET(CMAKE_ECLIPSE_C_SYSTEM_DEFINED_MACROS "${_defines}" CACHE INTERNAL "C compiler system defined macros") + ENDIF ("${CMAKE_C_COMPILER_ID}" MATCHES GNU OR "${CMAKE_C_COMPILER_ID}" MATCHES Intel) +ENDIF (NOT CMAKE_ECLIPSE_C_SYSTEM_INCLUDE_DIRS) + +# And now the same for C++ +IF (NOT CMAKE_ECLIPSE_CXX_SYSTEM_INCLUDE_DIRS) + IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU OR "${CMAKE_CXX_COMPILER_ID}" MATCHES Intel) + _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c++ _dirs _defines) + SET(CMAKE_ECLIPSE_CXX_SYSTEM_INCLUDE_DIRS "${_dirs}" CACHE INTERNAL "CXX compiler system include directories") + SET(CMAKE_ECLIPSE_CXX_SYSTEM_DEFINED_MACROS "${_defines}" CACHE INTERNAL "CXX compiler system defined macros") + ENDIF ("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU OR "${CMAKE_CXX_COMPILER_ID}" MATCHES Intel) +ENDIF (NOT CMAKE_ECLIPSE_CXX_SYSTEM_INCLUDE_DIRS) + +# Restore original LC_ALL, LC_MESSAGES, and LANG +IF(_orig_lc_all) + SET(ENV{LC_ALL} ${_orig_lc_all}) +ENDIF(_orig_lc_all) +IF(_orig_lc_messages) + SET(ENV{LC_MESSAGES} ${_orig_lc_messages}) +ENDIF(_orig_lc_messages) +IF(_orig_lang) + SET(ENV{LANG} ${_orig_lang}) +ENDIF(_orig_lang) diff --git a/Modules/CMakeFindFrameworks.cmake b/Modules/CMakeFindFrameworks.cmake index 3a47eb0b1..1bc893544 100644 --- a/Modules/CMakeFindFrameworks.cmake +++ b/Modules/CMakeFindFrameworks.cmake @@ -1,5 +1,18 @@ # - helper module to find OSX frameworks +#============================================================================= +# Copyright 2003-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF(NOT CMAKE_FIND_FRAMEWORKS_INCLUDED) SET(CMAKE_FIND_FRAMEWORKS_INCLUDED 1) MACRO(CMAKE_FIND_FRAMEWORKS fwk) diff --git a/Modules/CMakeFindKDevelop3.cmake b/Modules/CMakeFindKDevelop3.cmake new file mode 100644 index 000000000..1c77365ab --- /dev/null +++ b/Modules/CMakeFindKDevelop3.cmake @@ -0,0 +1,23 @@ + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# This file is included in CMakeSystemSpecificInformation.cmake if +# the KDevelop3 extra generator has been selected. + +FIND_PROGRAM(CMAKE_KDEVELOP3_EXECUTABLE NAMES kdevelop DOC "The KDevelop3 executable") + +IF(CMAKE_KDEVELOP3_EXECUTABLE) + SET(CMAKE_OPEN_PROJECT_COMMAND "${CMAKE_KDEVELOP3_EXECUTABLE} " ) +ENDIF(CMAKE_KDEVELOP3_EXECUTABLE) + diff --git a/Modules/CMakeFindWMake.cmake b/Modules/CMakeFindWMake.cmake old mode 100755 new mode 100644 index 4353d6515..e4bbb3dae --- a/Modules/CMakeFindWMake.cmake +++ b/Modules/CMakeFindWMake.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + SET (CMAKE_MAKE_PROGRAM "wmake" CACHE STRING "Program used to build from makefiles.") MARK_AS_ADVANCED(CMAKE_MAKE_PROGRAM) diff --git a/Modules/CMakeFindXCode.cmake b/Modules/CMakeFindXCode.cmake old mode 100755 new mode 100644 index 417edc5f7..240f936bb --- a/Modules/CMakeFindXCode.cmake +++ b/Modules/CMakeFindXCode.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PROGRAM(CMAKE_MAKE_PROGRAM NAMES xcodebuild PATHS diff --git a/Modules/CMakeForceCompiler.cmake b/Modules/CMakeForceCompiler.cmake index c47301190..c9793b451 100644 --- a/Modules/CMakeForceCompiler.cmake +++ b/Modules/CMakeForceCompiler.cmake @@ -22,6 +22,19 @@ # CMAKE_FORCE_C_COMPILER (chc12 MetrowerksHicross) # CMAKE_FORCE_CXX_COMPILER (chc12 MetrowerksHicross) +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(CMAKE_FORCE_C_COMPILER compiler id) SET(CMAKE_C_COMPILER "${compiler}") SET(CMAKE_C_COMPILER_ID_RUN TRUE) diff --git a/Modules/CMakeFortranCompiler.cmake.in b/Modules/CMakeFortranCompiler.cmake.in old mode 100755 new mode 100644 index 65cfda7a9..d8a9ed6cd --- a/Modules/CMakeFortranCompiler.cmake.in +++ b/Modules/CMakeFortranCompiler.cmake.in @@ -15,6 +15,8 @@ ENDIF(CMAKE_COMPILER_IS_CYGWIN) SET(CMAKE_Fortran_COMPILER_ENV_VAR "FC") +SET(CMAKE_Fortran_COMPILER_SUPPORTS_F90 @CMAKE_Fortran_COMPILER_SUPPORTS_F90@) + IF(CMAKE_COMPILER_IS_MINGW) SET(MINGW 1) ENDIF(CMAKE_COMPILER_IS_MINGW) @@ -27,3 +29,6 @@ IF(UNIX) ELSE(UNIX) SET(CMAKE_Fortran_OUTPUT_EXTENSION .obj) ENDIF(UNIX) + +SET(CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES "@CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES@") +SET(CMAKE_Fortran_IMPLICIT_LINK_DIRECTORIES "@CMAKE_Fortran_IMPLICIT_LINK_DIRECTORIES@") diff --git a/Modules/CMakeFortranCompilerABI.F b/Modules/CMakeFortranCompilerABI.F new file mode 100644 index 000000000..cf8662fb8 --- /dev/null +++ b/Modules/CMakeFortranCompilerABI.F @@ -0,0 +1,3 @@ + PROGRAM CMakeFortranCompilerId + PRINT *, 'ABI Detection Binary' + END diff --git a/Modules/CMakeFortranCompilerId.F.in b/Modules/CMakeFortranCompilerId.F.in new file mode 100644 index 000000000..51f4e91d0 --- /dev/null +++ b/Modules/CMakeFortranCompilerId.F.in @@ -0,0 +1,106 @@ + PROGRAM CMakeFortranCompilerId +#if 0 +! Identify the compiler +#endif +#if defined(__INTEL_COMPILER) || defined(__ICC) + PRINT *, 'INFO:compiler[Intel]' +#elif defined(__SUNPRO_F90) || defined(__SUNPRO_F95) + PRINT *, 'INFO:compiler[SunPro]' +#elif defined(__GNUC__) + PRINT *, 'INFO:compiler[GNU]' +#elif defined(__IBMC__) +# if defined(__COMPILER_VER__) + PRINT *, 'INFO:compiler[zOS]' +# elif __IBMC__ >= 800 + PRINT *, 'INFO:compiler[XL]' +# else + PRINT *, 'INFO:compiler[VisualAge]' +# endif +#elif defined(__PGI) + PRINT *, 'INFO:compiler[PGI]' +#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) + PRINT *, 'INFO:compiler[MIPSpro]' +# if 0 +! This compiler is either not known or is too old to define an +! identification macro. Try to identify the platform and guess that +! it is the native compiler. +# endif +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) + PRINT *, 'INFO:compiler[VisualAge]' +#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) + PRINT *, 'INFO:compiler[MIPSpro]' +#elif defined(__hpux) || defined(__hpux__) + PRINT *, 'INFO:compiler[HP]' +#elif 1 +# if 0 +! The above 'elif 1' instead of 'else' is to work around a bug in the +! SGI preprocessor which produces both the __sgi and else blocks. +# endif + PRINT *, 'INFO:compiler[]' +#endif + +#if 0 +! Identify the platform +#endif +#if defined(__linux) || defined(__linux__) || defined(linux) + PRINT *, 'INFO:platform[Linux]' +#elif defined(__CYGWIN__) + PRINT *, 'INFO:platform[Cygwin]' +#elif defined(__MINGW32__) + PRINT *, 'INFO:platform[MinGW]' +#elif defined(__APPLE__) + PRINT *, 'INFO:platform[Darwin]' +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) + PRINT *, 'INFO:platform[Windows]' +#elif defined(__FreeBSD__) || defined(__FreeBSD) + PRINT *, 'INFO:platform[FreeBSD]' +#elif defined(__NetBSD__) || defined(__NetBSD) + PRINT *, 'INFO:platform[NetBSD]' +#elif defined(__OpenBSD__) || defined(__OPENBSD) + PRINT *, 'INFO:platform[OpenBSD]' +#elif defined(__sun) || defined(sun) + PRINT *, 'INFO:platform[SunOS]' +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) + PRINT *, 'INFO:platform[AIX]' +#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) + PRINT *, 'INFO:platform[IRIX]' +#elif defined(__hpux) || defined(__hpux__) + PRINT *, 'INFO:platform[HP-UX]' +#elif defined(__HAIKU) || defined(__HAIKU__) || defined(_HAIKU) + PRINT *, 'INFO:platform[Haiku]' +# if 0 +! Haiku also defines __BEOS__ so we must +! put it prior to the check for __BEOS__ +# endif +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) + PRINT *, 'INFO:platform[BeOS]' +#elif defined(__QNX__) || defined(__QNXNTO__) + PRINT *, 'INFO:platform[QNX]' +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) + PRINT *, 'INFO:platform[Tru64]' +#elif defined(__riscos) || defined(__riscos__) + PRINT *, 'INFO:platform[RISCos]' +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) + PRINT *, 'INFO:platform[SINIX]' +#elif defined(__UNIX_SV__) + PRINT *, 'INFO:platform[UNIX_SV]' +#elif defined(__bsdos__) + PRINT *, 'INFO:platform[BSDOS]' +#elif defined(_MPRAS) || defined(MPRAS) + PRINT *, 'INFO:platform[MP-RAS]' +#elif defined(__osf) || defined(__osf__) + PRINT *, 'INFO:platform[OSF1]' +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) + PRINT *, 'INFO:platform[SCO_SV]' +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) + PRINT *, 'INFO:platform[ULTRIX]' +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) + PRINT *, 'INFO:platform[Xenix]' +#elif 1 +# if 0 +! The above 'elif 1' instead of 'else' is to work around a bug in the +! SGI preprocessor which produces both the __sgi and else blocks. +# endif + PRINT *, 'INFO:platform[]' +#endif + END diff --git a/Modules/CMakeFortranCompilerId.F90.in b/Modules/CMakeFortranCompilerId.F90.in deleted file mode 100644 index c7facb550..000000000 --- a/Modules/CMakeFortranCompilerId.F90.in +++ /dev/null @@ -1,84 +0,0 @@ -PROGRAM CMakeFortranCompilerId -! Identify the compiler -#if defined(__INTEL_COMPILER) || defined(__ICC) - PRINT *, 'INFO:compiler[Intel]' -#elif defined(__SUNPRO_F90) || defined(__SUNPRO_F95) - PRINT *, 'INFO:compiler[SunPro]' -#elif defined(__GNUC__) - PRINT *, 'INFO:compiler[GNU]' -#elif defined(__IBM__) || defined(__IBMC__) - PRINT *, 'INFO:compiler[VisualAge]' -#elif defined(__PGI) - PRINT *, 'INFO:compiler[PGI]' -#elif defined(_COMPILER_VERSION) - PRINT *, 'INFO:compiler[MIPSpro]' -! This compiler is either not known or is too old to define an -! identification macro. Try to identify the platform and guess that -! it is the native compiler. -#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) - PRINT *, 'INFO:compiler[VisualAge]' -#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) - PRINT *, 'INFO:compiler[MIPSpro]' -#elif defined(__hpux) || defined(__hpux__) - PRINT *, 'INFO:compiler[HP]' -#else - PRINT *, 'INFO:compiler[]' -#endif - -! Identify the platform -#if defined(__linux) || defined(__linux__) || defined(linux) - PRINT *, 'INFO:platform[Linux]' -#elif defined(__CYGWIN__) - PRINT *, 'INFO:platform[Cygwin]' -#elif defined(__MINGW32__) - PRINT *, 'INFO:platform[MinGW]' -#elif defined(__APPLE__) - PRINT *, 'INFO:platform[Darwin]' -#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) - PRINT *, 'INFO:platform[Windows]' -#elif defined(__FreeBSD__) || defined(__FreeBSD) - PRINT *, 'INFO:platform[FreeBSD]' -#elif defined(__NetBSD__) || defined(__NetBSD) - PRINT *, 'INFO:platform[NetBSD]' -#elif defined(__OpenBSD__) || defined(__OPENBSD) - PRINT *, 'INFO:platform[OpenBSD]' -#elif defined(__sun) || defined(sun) - PRINT *, 'INFO:platform[SunOS]' -#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) - PRINT *, 'INFO:platform[AIX]' -#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) - PRINT *, 'INFO:platform[IRIX]' -#elif defined(__hpux) || defined(__hpux__) - PRINT *, 'INFO:platform[HP-UX]' -#elif defined(__HAIKU) || defined(__HAIKU__) || defined(_HAIKU) - PRINT *, 'INFO:platform[Haiku]' -! Haiku also defines __BEOS__ so we must -! put it prior to the check for __BEOS__ -#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) - PRINT *, 'INFO:platform[BeOS]' -#elif defined(__QNX__) || defined(__QNXNTO__) - PRINT *, 'INFO:platform[QNX]' -#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) - PRINT *, 'INFO:platform[Tru64]' -#elif defined(__riscos) || defined(__riscos__) - PRINT *, 'INFO:platform[RISCos]' -#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) - PRINT *, 'INFO:platform[SINIX]' -#elif defined(__UNIX_SV__) - PRINT *, 'INFO:platform[UNIX_SV]' -#elif defined(__bsdos__) - PRINT *, 'INFO:platform[BSDOS]' -#elif defined(_MPRAS) || defined(MPRAS) - PRINT *, 'INFO:platform[MP-RAS]' -#elif defined(__osf) || defined(__osf__) - PRINT *, 'INFO:platform[OSF1]' -#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) - PRINT *, 'INFO:platform[SCO_SV]' -#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) - PRINT *, 'INFO:platform[ULTRIX]' -#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) - PRINT *, 'INFO:platform[Xenix]' -#else - PRINT *, 'INFO:platform[]' -#endif -END PROGRAM diff --git a/Modules/CMakeFortranInformation.cmake b/Modules/CMakeFortranInformation.cmake old mode 100755 new mode 100644 index 25ebe21e3..8d61cfb29 --- a/Modules/CMakeFortranInformation.cmake +++ b/Modules/CMakeFortranInformation.cmake @@ -1,8 +1,26 @@ +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This file sets the basic flags for the Fortran language in CMake. # It also loads the available platform file for the system-compiler # if it exists. +# Load compiler-specific information. +IF(CMAKE_Fortran_COMPILER_ID) + INCLUDE(Compiler/${CMAKE_Fortran_COMPILER_ID}-Fortran OPTIONAL) +ENDIF(CMAKE_Fortran_COMPILER_ID) + SET(CMAKE_BASE_NAME) GET_FILENAME_COMPONENT(CMAKE_BASE_NAME ${CMAKE_Fortran_COMPILER} NAME_WE) # since the gnu compiler has several names force g++ diff --git a/Modules/CMakeGenericSystem.cmake b/Modules/CMakeGenericSystem.cmake old mode 100755 new mode 100644 index 2599f2b26..c66d5c52f --- a/Modules/CMakeGenericSystem.cmake +++ b/Modules/CMakeGenericSystem.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + SET(CMAKE_SHARED_LIBRARY_C_FLAGS "") # -pic SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared") # -shared SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") # +s, flag for exe link to use shared lib @@ -33,6 +47,9 @@ IF(CMAKE_GENERATOR MATCHES "Makefiles") "Enable/Disable color output during build." ) MARK_AS_ADVANCED(CMAKE_COLOR_MAKEFILE) + IF(DEFINED CMAKE_RULE_MESSAGES) + SET_PROPERTY(GLOBAL PROPERTY RULE_MESSAGES ${CMAKE_RULE_MESSAGES}) + ENDIF(DEFINED CMAKE_RULE_MESSAGES) ENDIF(CMAKE_GENERATOR MATCHES "Makefiles") # Set a variable to indicate whether the value of CMAKE_INSTALL_PREFIX diff --git a/Modules/CMakeImportBuildSettings.cmake b/Modules/CMakeImportBuildSettings.cmake index 529b2ed2a..968bc793b 100644 --- a/Modules/CMakeImportBuildSettings.cmake +++ b/Modules/CMakeImportBuildSettings.cmake @@ -1,249 +1,23 @@ -# - import build settings from another project -# CMAKE_IMPORT_BUILD_SETTINGS(SETTINGS_FILE) -# macro defined to import the build settings from another project. -# SETTINGS_FILE is a file created by the other project's call to the -# CMAKE_EXPORT_BUILD_SETTINGS macro, see CMakeExportBuildSettings. + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# This module is purposely no longer documented. It does nothing useful. + +# This macro used to load build settings from another project that +# stored settings using the CMAKE_EXPORT_BUILD_SETTINGS macro. MACRO(CMAKE_IMPORT_BUILD_SETTINGS SETTINGS_FILE) IF(${SETTINGS_FILE} MATCHES ".+") - # Load the settings. - INCLUDE(${SETTINGS_FILE}) - - # Check the CMake version that stored the settings. - IF(${CMAKE_BUILD_SETTING_CMAKE_MAJOR_VERSION}.${CMAKE_BUILD_SETTING_CMAKE_MINOR_VERSION} - GREATER ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) - MESSAGE(SEND_ERROR - "${CMAKE_BUILD_SETTING_PROJECT_NAME} was built using CMake " - "${CMAKE_BUILD_SETTING_CMAKE_MAJOR_VERSION}.${CMAKE_BUILD_SETTING_CMAKE_MINOR_VERSION}, " - "but this is CMake${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}. " - "Please upgrade CMake to a more recent version.") - ENDIF(${CMAKE_BUILD_SETTING_CMAKE_MAJOR_VERSION}.${CMAKE_BUILD_SETTING_CMAKE_MINOR_VERSION} - GREATER ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) - - # Check the build tool. - SET(CMAKE_BUILD_TOOL1 "") - IF(CMAKE_BUILD_TOOL) - GET_FILENAME_COMPONENT (CMAKE_BUILD_TOOL1 ${CMAKE_BUILD_TOOL} NAME_WE) - STRING(TOLOWER ${CMAKE_BUILD_TOOL1} CMAKE_BUILD_TOOL1) - ENDIF(CMAKE_BUILD_TOOL) - SET(CMAKE_BUILD_TOOL2 "") - IF(CMAKE_BUILD_SETTING_BUILD_TOOL) - GET_FILENAME_COMPONENT (CMAKE_BUILD_TOOL2 ${CMAKE_BUILD_SETTING_BUILD_TOOL} NAME_WE) - STRING(TOLOWER ${CMAKE_BUILD_TOOL2} CMAKE_BUILD_TOOL2) - ENDIF(CMAKE_BUILD_SETTING_BUILD_TOOL) - STRING(COMPARE NOTEQUAL "x${CMAKE_BUILD_TOOL1}" "x${CMAKE_BUILD_TOOL2}" - CMAKE_BUILD_TOOL_MISMATCH) - - IF(CMAKE_BUILD_SETTING_BUILD_TOOL MATCHES "^msdev$") - SET(CMAKE_IMPORT_BUILD_SETTINGS_IMPORTING_FROM_MS_STUDIO 1) - ENDIF(CMAKE_BUILD_SETTING_BUILD_TOOL MATCHES "^msdev$") - IF(CMAKE_BUILD_SETTING_BUILD_TOOL MATCHES "^devenv$") - SET(CMAKE_IMPORT_BUILD_SETTINGS_IMPORTING_FROM_MS_STUDIO 1) - ENDIF(CMAKE_BUILD_SETTING_BUILD_TOOL MATCHES "^devenv$") - - # Check the C++ compiler setting. If it is empty, the imported - # project is not a C++ project, and doesn't need a matching compiler. - IF(CMAKE_BUILD_SETTING_CXX_COMPILER) - IF(WIN32) - STRING(TOLOWER "x${CMAKE_CXX_COMPILER}" COMPARE_CXX_LOCAL) - STRING(TOLOWER "x${CMAKE_BUILD_SETTING_CXX_COMPILER}" COMPARE_CXX_REMOTE) - STRING(COMPARE NOTEQUAL "${COMPARE_CXX_LOCAL}" "${COMPARE_CXX_REMOTE}" - CMAKE_CXX_COMPILER_MISMATCH) - ELSE(WIN32) - STRING(COMPARE NOTEQUAL - "x${CMAKE_CXX_COMPILER}" "x${CMAKE_BUILD_SETTING_CXX_COMPILER}" - CMAKE_CXX_COMPILER_MISMATCH) - ENDIF(WIN32) - ENDIF(CMAKE_BUILD_SETTING_CXX_COMPILER) - - # Check the C build variation flags. - STRING(COMPARE NOTEQUAL - "x${CMAKE_C_FLAGS_DEBUG}" "x${CMAKE_BUILD_SETTING_C_FLAGS_DEBUG}" - CMAKE_C_FLAGS_DEBUG_MISMATCH) - STRING(COMPARE NOTEQUAL - "x${CMAKE_C_FLAGS_RELEASE}" "x${CMAKE_BUILD_SETTING_C_FLAGS_RELEASE}" - CMAKE_C_FLAGS_RELEASE_MISMATCH) - STRING(COMPARE NOTEQUAL - "x${CMAKE_C_FLAGS_MINSIZEREL}" "x${CMAKE_BUILD_SETTING_C_FLAGS_MINSIZEREL}" - CMAKE_C_FLAGS_MINSIZEREL_MISMATCH) - STRING(COMPARE NOTEQUAL - "x${CMAKE_C_FLAGS_RELWITHDEBINFO}" "x${CMAKE_BUILD_SETTING_C_FLAGS_RELWITHDEBINFO}" - CMAKE_C_FLAGS_RELWITHDEBINFO_MISMATCH) - - # Check the C++ build variation flags. - STRING(COMPARE NOTEQUAL - "x${CMAKE_CXX_FLAGS_DEBUG}" "x${CMAKE_BUILD_SETTING_CXX_FLAGS_DEBUG}" - CMAKE_CXX_FLAGS_DEBUG_MISMATCH) - STRING(COMPARE NOTEQUAL - "x${CMAKE_CXX_FLAGS_RELEASE}" "x${CMAKE_BUILD_SETTING_CXX_FLAGS_RELEASE}" - CMAKE_CXX_FLAGS_RELEASE_MISMATCH) - STRING(COMPARE NOTEQUAL - "x${CMAKE_CXX_FLAGS_MINSIZEREL}" "x${CMAKE_BUILD_SETTING_CXX_FLAGS_MINSIZEREL}" - CMAKE_CXX_FLAGS_MINSIZEREL_MISMATCH) - STRING(COMPARE NOTEQUAL - "x${CMAKE_CXX_FLAGS_RELWITHDEBINFO}" "x${CMAKE_BUILD_SETTING_CXX_FLAGS_RELWITHDEBINFO}" - CMAKE_CXX_FLAGS_RELWITHDEBINFO_MISMATCH) - - # Check the build type. - SET(CMAKE_BUILD_TYPE_MISMATCH 0) - IF(WIN32) - IF(NOT CMAKE_IMPORT_BUILD_SETTINGS_IMPORTING_FROM_MS_STUDIO) - STRING(COMPARE NOTEQUAL - "x${CMAKE_BUILD_TYPE}" "x${CMAKE_BUILD_SETTING_BUILD_TYPE}" - CMAKE_BUILD_TYPE_MISMATCH) - ENDIF(NOT CMAKE_IMPORT_BUILD_SETTINGS_IMPORTING_FROM_MS_STUDIO) - ENDIF(WIN32) - - # Build tool must match on Windows. - IF(WIN32) - IF(CMAKE_BUILD_TOOL_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - MESSAGE(SEND_ERROR - "This project, ${PROJECT_NAME}, depends on the project " - "${CMAKE_BUILD_SETTING_PROJECT_NAME}. Unfortunately " - "${CMAKE_BUILD_SETTING_PROJECT_NAME} was built using " - "\"${CMAKE_BUILD_TOOL2}\", but you are trying to build " - "${PROJECT_NAME} using \"${CMAKE_BUILD_TOOL1}\"." - "In order for this build to succeed, both projects must be " - "built with the same Generator. To change the Generator you " - "are using for the project ${PROJECT_NAME}, you must " - "delete the cache, and then rerun cmake and this " - "time select the same Generator that was used to build " - "${CMAKE_BUILD_SETTING_PROJECT_NAME}. If " - "${CMAKE_BUILD_SETTING_PROJECT_NAME} was built using a " - "generator that you do not have (for example it was built " - "with Visual Studio 6 and you only have 7) then you will " - "need to select a different version of " - "${CMAKE_BUILD_SETTING_PROJECT_NAME} or rebuild " - "${CMAKE_BUILD_SETTING_PROJECT_NAME} with the correct " - "generator. ") - ENDIF(CMAKE_BUILD_TOOL_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - ENDIF(WIN32) - - # Enforce the C++ compiler setting. - # CMAKE_OVERRIDE_COMPILER_MISMATCH allow advanced user to override cmake detection of - # compiler mismatch between imported projects. Typical case on UNIX could be: - # 1. Compile a project with g++-3.3 while the imported project was configured - # using the 'c++' alias (which at the time meant g++-3.3) - # 2. This variable also becomes handy when the project your are importing has been - # compiled with a compiler you do not have access to, but offer a compatible ABI with - # yours. - # WARNING: Do not use this variable with C++ compiler with incompatible ABI - IF(CMAKE_CXX_COMPILER_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - MESSAGE("Warning: CMake is forcing CMAKE_CXX_COMPILER to " - "\"${CMAKE_BUILD_SETTING_CXX_COMPILER}\" to match that imported " - "from ${CMAKE_BUILD_SETTING_PROJECT_NAME}. This is required " - "because C++ projects must use the same compiler. " - "If this message appears for more than one imported project, " - "you have conflicting C++ compilers and will have to " - "re-build one of those projects. Was set to ${CMAKE_CXX_COMPILER}") - SET(CMAKE_CXX_COMPILER ${CMAKE_BUILD_SETTING_CXX_COMPILER} - CACHE STRING "C++ compiler imported from ${CMAKE_BUILD_SETTING_PROJECT_NAME}." FORCE) - ENDIF(CMAKE_CXX_COMPILER_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - - # Enforce the build type. - IF(CMAKE_BUILD_TYPE_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - MESSAGE("Warning: CMake is forcing CMAKE_BUILD_TYPE to " - "\"${CMAKE_BUILD_SETTING_BUILD_TYPE}\" to match that imported " - "from ${CMAKE_BUILD_SETTING_PROJECT_NAME}. This is required " - "because projects must use the same compiler settings. " - "If this message appears for more than one imported project, " - "you have conflicting compiler settings and will have to " - "re-build one of those projects.") - SET(CMAKE_BUILD_TYPE ${CMAKE_BUILD_SETTING_BUILD_TYPE} - CACHE STRING "Build type imported from ${CMAKE_BUILD_SETTING_PROJECT_NAME}." FORCE) - ENDIF(CMAKE_BUILD_TYPE_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - - # Enforce the C build variation flags. - - IF(CMAKE_C_FLAGS_DEBUG_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - MESSAGE("Warning: CMake is forcing CMAKE_C_FLAGS_DEBUG to " - "\"${CMAKE_BUILD_SETTING_C_FLAGS_DEBUG}\" to match that imported " - "from ${CMAKE_BUILD_SETTING_PROJECT_NAME}. " - "If this message appears for more than one imported project, " - "you have conflicting options and will have to " - "re-build one of those projects.") - SET(CMAKE_C_FLAGS_DEBUG ${CMAKE_BUILD_SETTING_C_FLAGS_DEBUG} - CACHE STRING "C DEBUG flags imported from ${CMAKE_BUILD_SETTING_PROJECT_NAME}." FORCE) - ENDIF(CMAKE_C_FLAGS_DEBUG_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - - IF(CMAKE_C_FLAGS_RELEASE_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - MESSAGE("Warning: CMake is forcing CMAKE_C_FLAGS_RELEASE to " - "\"${CMAKE_BUILD_SETTING_C_FLAGS_RELEASE}\" to match that imported " - "from ${CMAKE_BUILD_SETTING_PROJECT_NAME}. " - "If this message appears for more than one imported project, " - "you have conflicting options and will have to " - "re-build one of those projects.") - SET(CMAKE_C_FLAGS_RELEASE ${CMAKE_BUILD_SETTING_C_FLAGS_RELEASE} - CACHE STRING "C RELEASE flags imported from ${CMAKE_BUILD_SETTING_PROJECT_NAME}." FORCE) - ENDIF(CMAKE_C_FLAGS_RELEASE_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - - IF(CMAKE_C_FLAGS_MINSIZEREL_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - MESSAGE("Warning: CMake is forcing CMAKE_C_FLAGS_MINSIZEREL to " - "\"${CMAKE_BUILD_SETTING_C_FLAGS_MINSIZEREL}\" to match that imported " - "from ${CMAKE_BUILD_SETTING_PROJECT_NAME}. " - "If this message appears for more than one imported project, " - "you have conflicting options and will have to " - "re-build one of those projects.") - SET(CMAKE_C_FLAGS_MINSIZEREL ${CMAKE_BUILD_SETTING_C_FLAGS_MINSIZEREL} - CACHE STRING "C MINSIZEREL flags imported from ${CMAKE_BUILD_SETTING_PROJECT_NAME}." FORCE) - ENDIF(CMAKE_C_FLAGS_MINSIZEREL_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - - IF(CMAKE_C_FLAGS_RELWITHDEBINFO_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - MESSAGE("Warning: CMake is forcing CMAKE_C_FLAGS_RELWITHDEBINFO to " - "\"${CMAKE_BUILD_SETTING_C_FLAGS_RELWITHDEBINFO}\" to match that imported " - "from ${CMAKE_BUILD_SETTING_PROJECT_NAME}. " - "If this message appears for more than one imported project, " - "you have conflicting options and will have to " - "re-build one of those projects.") - SET(CMAKE_C_FLAGS_RELWITHDEBINFO ${CMAKE_BUILD_SETTING_C_FLAGS_RELWITHDEBINFO} - CACHE STRING "C RELWITHDEBINFO flags imported from ${CMAKE_BUILD_SETTING_PROJECT_NAME}." FORCE) - ENDIF(CMAKE_C_FLAGS_RELWITHDEBINFO_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - - # Enforce the C++ build variation flags. - - IF(CMAKE_CXX_FLAGS_DEBUG_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - MESSAGE("Warning: CMake is forcing CMAKE_CXX_FLAGS_DEBUG to " - "\"${CMAKE_BUILD_SETTING_CXX_FLAGS_DEBUG}\" to match that imported " - "from ${CMAKE_BUILD_SETTING_PROJECT_NAME}. " - "If this message appears for more than one imported project, " - "you have conflicting options and will have to " - "re-build one of those projects.") - SET(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_BUILD_SETTING_CXX_FLAGS_DEBUG} - CACHE STRING "C++ DEBUG flags imported from ${CMAKE_BUILD_SETTING_PROJECT_NAME}." FORCE) - ENDIF(CMAKE_CXX_FLAGS_DEBUG_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - - IF(CMAKE_CXX_FLAGS_RELEASE_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - MESSAGE("Warning: CMake is forcing CMAKE_CXX_FLAGS_RELEASE to " - "\"${CMAKE_BUILD_SETTING_CXX_FLAGS_RELEASE}\" to match that imported " - "from ${CMAKE_BUILD_SETTING_PROJECT_NAME}. " - "If this message appears for more than one imported project, " - "you have conflicting options and will have to " - "re-build one of those projects.") - SET(CMAKE_CXX_FLAGS_RELEASE ${CMAKE_BUILD_SETTING_CXX_FLAGS_RELEASE} - CACHE STRING "C++ RELEASE flags imported from ${CMAKE_BUILD_SETTING_PROJECT_NAME}." FORCE) - ENDIF(CMAKE_CXX_FLAGS_RELEASE_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - - IF(CMAKE_CXX_FLAGS_MINSIZEREL_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - MESSAGE("Warning: CMake is forcing CMAKE_CXX_FLAGS_MINSIZEREL to " - "\"${CMAKE_BUILD_SETTING_CXX_FLAGS_MINSIZEREL}\" to match that imported " - "from ${CMAKE_BUILD_SETTING_PROJECT_NAME}. " - "If this message appears for more than one imported project, " - "you have conflicting options and will have to " - "re-build one of those projects.") - SET(CMAKE_CXX_FLAGS_MINSIZEREL ${CMAKE_BUILD_SETTING_CXX_FLAGS_MINSIZEREL} - CACHE STRING "C++ MINSIZEREL flags imported from ${CMAKE_BUILD_SETTING_PROJECT_NAME}." FORCE) - ENDIF(CMAKE_CXX_FLAGS_MINSIZEREL_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - - IF(CMAKE_CXX_FLAGS_RELWITHDEBINFO_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - MESSAGE("Warning: CMake is forcing CMAKE_CXX_FLAGS_RELWITHDEBINFO to " - "\"${CMAKE_BUILD_SETTING_CXX_FLAGS_RELWITHDEBINFO}\" to match that imported " - "from ${CMAKE_BUILD_SETTING_PROJECT_NAME}. " - "If this message appears for more than one imported project, " - "you have conflicting options and will have to " - "re-build one of those projects.") - SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_BUILD_SETTING_CXX_FLAGS_RELWITHDEBINFO} - CACHE STRING "C++ RELWITHDEBINFO flags imported from ${CMAKE_BUILD_SETTING_PROJECT_NAME}." FORCE) - ENDIF(CMAKE_CXX_FLAGS_RELWITHDEBINFO_MISMATCH AND NOT CMAKE_OVERRIDE_COMPILER_MISMATCH) - ELSE(${SETTINGS_FILE} MATCHES ".+") MESSAGE(SEND_ERROR "CMAKE_IMPORT_BUILD_SETTINGS called with no argument.") ENDIF(${SETTINGS_FILE} MATCHES ".+") diff --git a/Modules/CMakeJavaInformation.cmake b/Modules/CMakeJavaInformation.cmake old mode 100755 new mode 100644 index 4febed4e5..f537da53d --- a/Modules/CMakeJavaInformation.cmake +++ b/Modules/CMakeJavaInformation.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This should be included before the _INIT variables are # used to initialize the cache. Since the rule variables # have if blocks on them, users can still define them here. diff --git a/Modules/CMakeLists.txt b/Modules/CMakeLists.txt deleted file mode 100644 index 4ce6118a1..000000000 --- a/Modules/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -# just install the modules -# new file added, force rerunning cmake - -SUBDIRS(Platform) -INSTALL_FILES(${CMAKE_DATA_DIR}/Modules .*\\.cmake$) -INSTALL_FILES(${CMAKE_DATA_DIR}/Modules .*\\.cpp$) -INSTALL_FILES(${CMAKE_DATA_DIR}/Modules .*\\.cxx$) -INSTALL_FILES(${CMAKE_DATA_DIR}/Modules .*\\.in$) -INSTALL_FILES(${CMAKE_DATA_DIR}/Modules .*\\.c$) -INSTALL_FILES(${CMAKE_DATA_DIR}/Modules .*\\.h$) -INSTALL_FILES(${CMAKE_DATA_DIR}/Modules .*\\.F90$) -INSTALL_FILES(${CMAKE_DATA_DIR}/Modules readme\\.txt$) diff --git a/Modules/CMakeMSYSFindMake.cmake b/Modules/CMakeMSYSFindMake.cmake old mode 100755 new mode 100644 index 5a9a34293..e95f74fd3 --- a/Modules/CMakeMSYSFindMake.cmake +++ b/Modules/CMakeMSYSFindMake.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PROGRAM(CMAKE_MAKE_PROGRAM make PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MSYS-1.0_is1;Inno Setup: App Path]/bin" diff --git a/Modules/CMakeMinGWFindMake.cmake b/Modules/CMakeMinGWFindMake.cmake old mode 100755 new mode 100644 index 2ad029832..68e8442fa --- a/Modules/CMakeMinGWFindMake.cmake +++ b/Modules/CMakeMinGWFindMake.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PROGRAM(CMAKE_MAKE_PROGRAM mingw32-make.exe PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MinGW;InstallLocation]/bin" c:/MinGW/bin /MinGW/bin) diff --git a/Modules/CMakeNMakeFindMake.cmake b/Modules/CMakeNMakeFindMake.cmake old mode 100755 new mode 100644 index 13befca8f..84ea56da6 --- a/Modules/CMakeNMakeFindMake.cmake +++ b/Modules/CMakeNMakeFindMake.cmake @@ -1,3 +1,18 @@ + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + + SET (CMAKE_MAKE_PROGRAM "nmake" CACHE STRING "Program used to build from makefiles.") MARK_AS_ADVANCED(CMAKE_MAKE_PROGRAM) diff --git a/Modules/CMakeParseImplicitLinkInfo.cmake b/Modules/CMakeParseImplicitLinkInfo.cmake new file mode 100644 index 000000000..d0bbc8c09 --- /dev/null +++ b/Modules/CMakeParseImplicitLinkInfo.cmake @@ -0,0 +1,87 @@ + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# Function parse implicit linker options. +# This is used internally by CMake and should not be included by user +# code. + +function(CMAKE_PARSE_IMPLICIT_LINK_INFO text lib_var dir_var) + set(implicit_libs "") + set(implicit_dirs_tmp) + + # Parse implicit linker arguments. + set(linker "CMAKE_LINKER-NOTFOUND") + if(CMAKE_LINKER) + get_filename_component(linker ${CMAKE_LINKER} NAME) + endif() + set(linker_regex "^( *|.*/)(${linker}|ld|collect2)") + string(REGEX REPLACE "\r?\n" ";" output_lines "${text}") + foreach(line IN LISTS output_lines) + set(cmd) + if("${line}" MATCHES "${linker_regex}") + if(UNIX) + separate_arguments(args UNIX_COMMAND "${line}") + else() + separate_arguments(args WINDOWS_COMMAND "${line}") + endif() + list(GET args 0 cmd) + endif() + if("${cmd}" MATCHES "${linker_regex}") + string(REGEX REPLACE ";-([LYz]);" ";-\\1" args "${args}") + foreach(arg IN LISTS args) + if("${arg}" MATCHES "^-L(.:)?[/\\]") + # Unix search path. + string(REGEX REPLACE "^-L" "" dir "${arg}") + list(APPEND implicit_dirs_tmp ${dir}) + elseif("${arg}" MATCHES "^-l[^:]") + # Unix library. + string(REGEX REPLACE "^-l" "" lib "${arg}") + list(APPEND implicit_libs ${lib}) + elseif("${arg}" MATCHES "^(.:)?[/\\].*\\.a$") + # Unix library full path. + list(APPEND implicit_libs ${arg}) + elseif("${arg}" MATCHES "^-Y(P,)?") + # Sun search path. + string(REGEX REPLACE "^-Y(P,)?" "" dirs "${arg}") + string(REPLACE ":" ";" dirs "${dirs}") + list(APPEND implicit_dirs_tmp ${dirs}) + elseif("${arg}" MATCHES "^-l:") + # HP named library. + list(APPEND implicit_libs ${arg}) + elseif("${arg}" MATCHES "^-z(all|default|weak)extract") + # Link editor option. + list(APPEND implicit_libs ${arg}) + endif() + endforeach() + break() + elseif("${line}" MATCHES "LPATH(=| is:? )") + # HP search path. + string(REGEX REPLACE ".*LPATH(=| is:? *)" "" paths "${line}") + string(REPLACE ":" ";" paths "${paths}") + list(APPEND implicit_dirs_tmp ${paths}) + endif() + endforeach() + + # Cleanup list of directories. + set(implicit_dirs "") + foreach(d IN LISTS implicit_dirs_tmp) + get_filename_component(dir "${d}" ABSOLUTE) + list(APPEND implicit_dirs "${dir}") + endforeach() + list(REMOVE_DUPLICATES implicit_dirs) + + # Return results. + set(${lib_var} "${implicit_libs}" PARENT_SCOPE) + set(${dir_var} "${implicit_dirs}" PARENT_SCOPE) +endfunction() diff --git a/Modules/CMakePrintSystemInformation.cmake b/Modules/CMakePrintSystemInformation.cmake index 2b9ecdae4..1d3d8054e 100644 --- a/Modules/CMakePrintSystemInformation.cmake +++ b/Modules/CMakePrintSystemInformation.cmake @@ -3,6 +3,19 @@ # just include it in a project to see various internal CMake # variables. +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MESSAGE("CMAKE_SYSTEM is ${CMAKE_SYSTEM} ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION}") MESSAGE("CMAKE_SYSTEM file is ${CMAKE_SYSTEM_INFO_FILE}") MESSAGE("CMAKE_C_COMPILER is ${CMAKE_C_COMPILER}") diff --git a/Modules/CMakeRCCompiler.cmake.in b/Modules/CMakeRCCompiler.cmake.in old mode 100755 new mode 100644 diff --git a/Modules/CMakeRCInformation.cmake b/Modules/CMakeRCInformation.cmake old mode 100755 new mode 100644 index 0efba7c32..f6509fbb4 --- a/Modules/CMakeRCInformation.cmake +++ b/Modules/CMakeRCInformation.cmake @@ -1,4 +1,18 @@ +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + + # This file sets the basic flags for the Fortran language in CMake. # It also loads the available platform file for the system-compiler # if it exists. diff --git a/Modules/CMakeSystemSpecificInformation.cmake b/Modules/CMakeSystemSpecificInformation.cmake index d845221f4..8d4d51fde 100644 --- a/Modules/CMakeSystemSpecificInformation.cmake +++ b/Modules/CMakeSystemSpecificInformation.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This file is included by cmGlobalGenerator::EnableLanguage. # It is included after the compiler has been determined, so # we know things like the compiler name and if the compiler is gnu. @@ -35,42 +48,12 @@ IF(NOT _INCLUDED_SYSTEM_INFO_FILE) ENDIF(NOT _INCLUDED_SYSTEM_INFO_FILE) -# The Eclipse generator needs to know the standard include path -# so that Eclipse ca find the headers at runtime and parsing etc. works better -# This is done here by actually running gcc with the options so it prints its -# system include directories, which are parsed then and stored in the cache. -IF("${CMAKE_EXTRA_GENERATOR}" MATCHES "Eclipse") - - MACRO(_DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang _result) - SET(${_result}) - SET(_gccOutput) - FILE(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy" "\n" ) - EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -v -E -x ${_lang} dummy - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles - ERROR_VARIABLE _gccOutput - OUTPUT_QUIET ) - FILE(REMOVE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy") - - IF( "${_gccOutput}" MATCHES "> search starts here[^\n]+\n *(.+) *\n *End of (search) list" ) - SET(${_result} ${CMAKE_MATCH_1}) - STRING(REPLACE "\n" " " ${_result} "${${_result}}") - SEPARATE_ARGUMENTS(${_result}) - ENDIF( "${_gccOutput}" MATCHES "> search starts here[^\n]+\n *(.+) *\n *End of (search) list" ) - ENDMACRO(_DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang) - - # Now check for C - IF ("${CMAKE_C_COMPILER_ID}" MATCHES GNU AND NOT CMAKE_ECLIPSE_C_SYSTEM_INCLUDE_DIRS) - _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c _dirs) - SET(CMAKE_ECLIPSE_C_SYSTEM_INCLUDE_DIRS "${_dirs}" CACHE INTERNAL "C compiler system include directories") - ENDIF ("${CMAKE_C_COMPILER_ID}" MATCHES GNU AND NOT CMAKE_ECLIPSE_C_SYSTEM_INCLUDE_DIRS) - - # And now the same for C++ - IF ("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU AND NOT CMAKE_ECLIPSE_CXX_SYSTEM_INCLUDE_DIRS) - _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c++ _dirs) - SET(CMAKE_ECLIPSE_CXX_SYSTEM_INCLUDE_DIRS "${_dirs}" CACHE INTERNAL "CXX compiler system include directories") - ENDIF ("${CMAKE_CXX_COMPILER_ID}" MATCHES GNU AND NOT CMAKE_ECLIPSE_CXX_SYSTEM_INCLUDE_DIRS) - -ENDIF("${CMAKE_EXTRA_GENERATOR}" MATCHES "Eclipse") +# optionally include a file which can do extra-generator specific things, e.g. +# CMakeFindEclipseCDT4.cmake asks gcc for the system include dirs for the Eclipse CDT4 generator +IF(CMAKE_EXTRA_GENERATOR) + STRING(REPLACE " " "" _CMAKE_EXTRA_GENERATOR_NO_SPACES ${CMAKE_EXTRA_GENERATOR} ) + INCLUDE("CMakeFind${_CMAKE_EXTRA_GENERATOR_NO_SPACES}" OPTIONAL) +ENDIF(CMAKE_EXTRA_GENERATOR) # for most systems a module is the same as a shared library diff --git a/Modules/CMakeTestASM-ATTCompiler.cmake b/Modules/CMakeTestASM-ATTCompiler.cmake index 1b4ef4fa7..9ba306afd 100644 --- a/Modules/CMakeTestASM-ATTCompiler.cmake +++ b/Modules/CMakeTestASM-ATTCompiler.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that that selected ASM-ATT compiler can actually compile # and link the most basic of programs. If not, a fatal error diff --git a/Modules/CMakeTestASMCompiler.cmake b/Modules/CMakeTestASMCompiler.cmake index 534b74be2..d62a79ada 100644 --- a/Modules/CMakeTestASMCompiler.cmake +++ b/Modules/CMakeTestASMCompiler.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that that selected ASM compiler can actually compile # and link the most basic of programs. If not, a fatal error diff --git a/Modules/CMakeTestASM_MASMCompiler.cmake b/Modules/CMakeTestASM_MASMCompiler.cmake index 9bdf13ad8..63207e3ba 100644 --- a/Modules/CMakeTestASM_MASMCompiler.cmake +++ b/Modules/CMakeTestASM_MASMCompiler.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that the selected ASM_MASM "compiler" (should be masm or masm64) # can actually "compile" and link the most basic of programs. If not, a diff --git a/Modules/CMakeTestCCompiler.cmake b/Modules/CMakeTestCCompiler.cmake old mode 100755 new mode 100644 index 0eac2fc00..856a65b47 --- a/Modules/CMakeTestCCompiler.cmake +++ b/Modules/CMakeTestCCompiler.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2003-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that that selected C compiler can actually compile # and link the most basic of programs. If not, a fatal error @@ -17,7 +30,7 @@ IF(NOT CMAKE_C_COMPILER_WORKS) "#else\n" "int main(int argc, char* argv[])\n" "#endif\n" - "{ return argc-1;}\n") + "{ (void)argv; return argc-1;}\n") TRY_COMPILE(CMAKE_C_COMPILER_WORKS ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCCompiler.c OUTPUT_VARIABLE OUTPUT) @@ -29,6 +42,11 @@ IF(NOT CMAKE_C_COMPILER_WORKS) FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "Determining if the C compiler works failed with " "the following output:\n${OUTPUT}\n\n") + # if the compiler is broken make sure to remove the platform file + # since Windows-cl configures both c/cxx files both need to be removed + # when c or c++ fails + FILE(REMOVE ${CMAKE_PLATFORM_ROOT_BIN}/CMakeCPlatform.cmake ) + FILE(REMOVE ${CMAKE_PLATFORM_ROOT_BIN}/CMakeCXXPlatform.cmake ) MESSAGE(FATAL_ERROR "The C compiler \"${CMAKE_C_COMPILER}\" " "is not able to compile a simple test program.\nIt fails " "with the following output:\n ${OUTPUT}\n\n" diff --git a/Modules/CMakeTestCXXCompiler.cmake b/Modules/CMakeTestCXXCompiler.cmake old mode 100755 new mode 100644 index 47a315a7f..81b848499 --- a/Modules/CMakeTestCXXCompiler.cmake +++ b/Modules/CMakeTestCXXCompiler.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2003-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that that selected C++ compiler can actually compile # and link the most basic of programs. If not, a fatal error @@ -19,6 +32,11 @@ ENDIF(NOT CMAKE_CXX_COMPILER_WORKS) IF(NOT CMAKE_CXX_COMPILER_WORKS) MESSAGE(STATUS "Check for working CXX compiler: ${CMAKE_CXX_COMPILER} -- broken") + # if the compiler is broken make sure to remove the platform file + # since Windows-cl configures both c/cxx files both need to be removed + # when c or c++ fails + FILE(REMOVE ${CMAKE_PLATFORM_ROOT_BIN}/CMakeCPlatform.cmake ) + FILE(REMOVE ${CMAKE_PLATFORM_ROOT_BIN}/CMakeCXXPlatform.cmake ) FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "Determining if the CXX compiler works failed with " "the following output:\n${OUTPUT}\n\n") diff --git a/Modules/CMakeTestForFreeVC.cxx b/Modules/CMakeTestForFreeVC.cxx old mode 100755 new mode 100644 diff --git a/Modules/CMakeTestFortranCompiler.cmake b/Modules/CMakeTestFortranCompiler.cmake old mode 100755 new mode 100644 index c4e639574..31857b117 --- a/Modules/CMakeTestFortranCompiler.cmake +++ b/Modules/CMakeTestFortranCompiler.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that that selected Fortran compiler can actually compile # and link the most basic of programs. If not, a fatal error @@ -34,32 +47,46 @@ ELSE(NOT CMAKE_Fortran_COMPILER_WORKS) "the following output:\n${OUTPUT}\n\n") ENDIF(FORTRAN_TEST_WAS_RUN) SET(CMAKE_Fortran_COMPILER_WORKS 1 CACHE INTERNAL "") -ENDIF(NOT CMAKE_Fortran_COMPILER_WORKS) -IF(CMAKE_Fortran_COMPILER_WORKS) - # Test for Fortran 90 support by using an f90-specific construct. - IF(NOT DEFINED CMAKE_Fortran_COMPILER_SUPPORTS_F90) - MESSAGE(STATUS "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90") - FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompilerF90.f90 " + IF(CMAKE_Fortran_COMPILER_FORCED) + # The compiler configuration was forced by the user. + # Assume the user has configured all compiler information. + ELSE(CMAKE_Fortran_COMPILER_FORCED) + # Try to identify the ABI and configure it into CMakeFortranCompiler.cmake + INCLUDE(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerABI.cmake) + CMAKE_DETERMINE_COMPILER_ABI(Fortran ${CMAKE_ROOT}/Modules/CMakeFortranCompilerABI.F) + + # Test for Fortran 90 support by using an f90-specific construct. + IF(NOT DEFINED CMAKE_Fortran_COMPILER_SUPPORTS_F90) + MESSAGE(STATUS "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90") + FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompilerF90.f90 " PROGRAM TESTFortran90 stop = 1 ; do while ( stop .eq. 0 ) ; end do END PROGRAM TESTFortran90 - ") - TRY_COMPILE(CMAKE_Fortran_COMPILER_SUPPORTS_F90 ${CMAKE_BINARY_DIR} - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompilerF90.f90 - OUTPUT_VARIABLE OUTPUT) - IF(CMAKE_Fortran_COMPILER_SUPPORTS_F90) - MESSAGE(STATUS "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90 -- yes") - FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log - "Determining if the Fortran compiler supports Fortran 90 passed with " - "the following output:\n${OUTPUT}\n\n") - SET(CMAKE_Fortran_COMPILER_SUPPORTS_F90 1 CACHE INTERNAL "") - ELSE(CMAKE_Fortran_COMPILER_SUPPORTS_F90) - MESSAGE(STATUS "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90 -- no") - FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log - "Determining if the Fortran compiler supports Fortran 90 failed with " - "the following output:\n${OUTPUT}\n\n") - SET(CMAKE_Fortran_COMPILER_SUPPORTS_F90 0 CACHE INTERNAL "") - ENDIF(CMAKE_Fortran_COMPILER_SUPPORTS_F90) - ENDIF(NOT DEFINED CMAKE_Fortran_COMPILER_SUPPORTS_F90) -ENDIF(CMAKE_Fortran_COMPILER_WORKS) +") + TRY_COMPILE(CMAKE_Fortran_COMPILER_SUPPORTS_F90 ${CMAKE_BINARY_DIR} + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testFortranCompilerF90.f90 + OUTPUT_VARIABLE OUTPUT) + IF(CMAKE_Fortran_COMPILER_SUPPORTS_F90) + MESSAGE(STATUS "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90 -- yes") + FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "Determining if the Fortran compiler supports Fortran 90 passed with " + "the following output:\n${OUTPUT}\n\n") + SET(CMAKE_Fortran_COMPILER_SUPPORTS_F90 1) + ELSE(CMAKE_Fortran_COMPILER_SUPPORTS_F90) + MESSAGE(STATUS "Checking whether ${CMAKE_Fortran_COMPILER} supports Fortran 90 -- no") + FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Determining if the Fortran compiler supports Fortran 90 failed with " + "the following output:\n${OUTPUT}\n\n") + SET(CMAKE_Fortran_COMPILER_SUPPORTS_F90 0) + ENDIF(CMAKE_Fortran_COMPILER_SUPPORTS_F90) + UNSET(CMAKE_Fortran_COMPILER_SUPPORTS_F90 CACHE) + ENDIF(NOT DEFINED CMAKE_Fortran_COMPILER_SUPPORTS_F90) + + CONFIGURE_FILE( + ${CMAKE_ROOT}/Modules/CMakeFortranCompiler.cmake.in + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeFortranCompiler.cmake + @ONLY IMMEDIATE # IMMEDIATE must be here for compatibility mode <= 2.0 + ) + ENDIF(CMAKE_Fortran_COMPILER_FORCED) +ENDIF(NOT CMAKE_Fortran_COMPILER_WORKS) diff --git a/Modules/CMakeTestJavaCompiler.cmake b/Modules/CMakeTestJavaCompiler.cmake old mode 100755 new mode 100644 index a682307cf..546d9b9ca --- a/Modules/CMakeTestJavaCompiler.cmake +++ b/Modules/CMakeTestJavaCompiler.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that that selected Fortran compiler can actually compile # and link the most basic of programs. If not, a fatal error diff --git a/Modules/CMakeTestRCCompiler.cmake b/Modules/CMakeTestRCCompiler.cmake old mode 100755 new mode 100644 index a8eeaa385..194f86068 --- a/Modules/CMakeTestRCCompiler.cmake +++ b/Modules/CMakeTestRCCompiler.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This file is used by EnableLanguage in cmGlobalGenerator to # determine that that selected RC compiler can actually compile # and link the most basic of programs. If not, a fatal error diff --git a/Modules/CMakeUnixFindMake.cmake b/Modules/CMakeUnixFindMake.cmake old mode 100755 new mode 100644 index 4272c2108..8c9e03114 --- a/Modules/CMakeUnixFindMake.cmake +++ b/Modules/CMakeUnixFindMake.cmake @@ -1,2 +1,16 @@ + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PROGRAM(CMAKE_MAKE_PROGRAM NAMES gmake make smake) MARK_AS_ADVANCED(CMAKE_MAKE_PROGRAM) diff --git a/Modules/CMakeVS10FindMake.cmake b/Modules/CMakeVS10FindMake.cmake new file mode 100644 index 000000000..4c8d619a3 --- /dev/null +++ b/Modules/CMakeVS10FindMake.cmake @@ -0,0 +1,52 @@ + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# VCExpress does not support cross compiling, which is necessary for Win CE +SET( _CMAKE_MAKE_PROGRAM_NAMES devenv) +IF(NOT CMAKE_CROSSCOMPILING) + SET( _CMAKE_MAKE_PROGRAM_NAMES ${_CMAKE_MAKE_PROGRAM_NAMES} VCExpress) +ENDIF(NOT CMAKE_CROSSCOMPILING) + +FIND_PROGRAM(CMAKE_MAKE_PROGRAM + NAMES MSBuild + HINTS + "$ENV{SYSTEMROOT}/Microsoft.NET/Framework/v4.0.20506/" + c:/WINDOWS/Microsoft.NET/Framework/v4.0.20506/ + ) + +FIND_PROGRAM(CMAKE_MAKE_PROGRAM + NAMES ${_CMAKE_MAKE_PROGRAM_NAMES} + HINTS + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VS;EnvironmentDirectory] + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup;Dbghelp_path] + "$ENV{ProgramFiles}/Microsoft Visual Studio 10.0/Common7/IDE" + "$ENV{ProgramFiles}/Microsoft Visual Studio10.0/Common7/IDE" + "$ENV{ProgramFiles}/Microsoft Visual Studio 10/Common7/IDE" + "$ENV{ProgramFiles}/Microsoft Visual Studio10/Common7/IDE" + "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio 10.0/Common7/IDE" + "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio10.0/Common7/IDE" + "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio 10/Common7/IDE" + "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio10/Common7/IDE" + "/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/" + "/Program Files/Microsoft Visual Studio 10/Common7/IDE/" + PATHS + "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio .NET/Common7/IDE" + "$ENV{ProgramFiles}/Microsoft Visual Studio .NET/Common7/IDE" + + ) + +MARK_AS_ADVANCED(CMAKE_MAKE_PROGRAM) +SET(MSVC10 1) +SET(MSVC_VERSION 1600) + diff --git a/Modules/CMakeVS6BackwardCompatibility.cmake b/Modules/CMakeVS6BackwardCompatibility.cmake old mode 100755 new mode 100644 index 13665f7d7..83708962f --- a/Modules/CMakeVS6BackwardCompatibility.cmake +++ b/Modules/CMakeVS6BackwardCompatibility.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # hard code these for fast backwards compatibility tests SET (CMAKE_SIZEOF_INT 4 CACHE INTERNAL "Size of int data type") SET (CMAKE_SIZEOF_LONG 4 CACHE INTERNAL "Size of long data type") diff --git a/Modules/CMakeVS6FindMake.cmake b/Modules/CMakeVS6FindMake.cmake old mode 100755 new mode 100644 index e0719cdee..0dd21a8da --- a/Modules/CMakeVS6FindMake.cmake +++ b/Modules/CMakeVS6FindMake.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PROGRAM(CMAKE_MAKE_PROGRAM NAMES msdev PATHS diff --git a/Modules/CMakeVS71FindMake.cmake b/Modules/CMakeVS71FindMake.cmake index 666c83dc1..8fd332c75 100644 --- a/Modules/CMakeVS71FindMake.cmake +++ b/Modules/CMakeVS71FindMake.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2003-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PROGRAM(CMAKE_MAKE_PROGRAM NAMES devenv PATHS diff --git a/Modules/CMakeVS7BackwardCompatibility.cmake b/Modules/CMakeVS7BackwardCompatibility.cmake old mode 100755 new mode 100644 index 49b564603..3c7895323 --- a/Modules/CMakeVS7BackwardCompatibility.cmake +++ b/Modules/CMakeVS7BackwardCompatibility.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # hard code these for fast backwards compatibility tests SET (CMAKE_SIZEOF_INT 4 CACHE INTERNAL "Size of int data type") SET (CMAKE_SIZEOF_LONG 4 CACHE INTERNAL "Size of long data type") diff --git a/Modules/CMakeVS7FindMake.cmake b/Modules/CMakeVS7FindMake.cmake old mode 100755 new mode 100644 index 2d12267ae..7f65a28a4 --- a/Modules/CMakeVS7FindMake.cmake +++ b/Modules/CMakeVS7FindMake.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PROGRAM(CMAKE_MAKE_PROGRAM NAMES devenv PATHS diff --git a/Modules/CMakeVS8FindMake.cmake b/Modules/CMakeVS8FindMake.cmake old mode 100755 new mode 100644 index d6ca4aa5f..6f45ed589 --- a/Modules/CMakeVS8FindMake.cmake +++ b/Modules/CMakeVS8FindMake.cmake @@ -1,15 +1,36 @@ + +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# VCExpress does not support cross compiling, which is necessary for Win CE +SET( _CMAKE_MAKE_PROGRAM_NAMES devenv) +IF(NOT CMAKE_CROSSCOMPILING) + SET( _CMAKE_MAKE_PROGRAM_NAMES ${_CMAKE_MAKE_PROGRAM_NAMES} VCExpress) +ENDIF(NOT CMAKE_CROSSCOMPILING) + FIND_PROGRAM(CMAKE_MAKE_PROGRAM - NAMES VCExpress devenv - PATHS + NAMES ${_CMAKE_MAKE_PROGRAM_NAMES} + HINTS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VS;EnvironmentDirectory] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup;Dbghelp_path] - "$ENV{ProgramFiles}/Microsoft Visual Studio .NET/Common7/IDE" "$ENV{ProgramFiles}/Microsoft Visual Studio 8/Common7/IDE" "$ENV{ProgramFiles}/Microsoft Visual Studio8/Common7/IDE" - "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio .NET/Common7/IDE" "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio 8/Common7/IDE" "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio8/Common7/IDE" "/Program Files/Microsoft Visual Studio 8/Common7/IDE/" + PATHS + "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio .NET/Common7/IDE" + "$ENV{ProgramFiles}/Microsoft Visual Studio .NET/Common7/IDE" ) MARK_AS_ADVANCED(CMAKE_MAKE_PROGRAM) SET(MSVC80 1) diff --git a/Modules/CMakeVS9FindMake.cmake b/Modules/CMakeVS9FindMake.cmake old mode 100755 new mode 100644 index a2c8e7214..2741f77d8 --- a/Modules/CMakeVS9FindMake.cmake +++ b/Modules/CMakeVS9FindMake.cmake @@ -1,15 +1,42 @@ + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# VCExpress does not support cross compiling, which is necessary for Win CE +SET( _CMAKE_MAKE_PROGRAM_NAMES devenv) +IF(NOT CMAKE_CROSSCOMPILING) + SET( _CMAKE_MAKE_PROGRAM_NAMES ${_CMAKE_MAKE_PROGRAM_NAMES} VCExpress) +ENDIF(NOT CMAKE_CROSSCOMPILING) + FIND_PROGRAM(CMAKE_MAKE_PROGRAM - NAMES VCExpress devenv - PATHS + NAMES ${_CMAKE_MAKE_PROGRAM_NAMES} + HINTS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0\\Setup\\VS;EnvironmentDirectory] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0\\Setup;Dbghelp_path] - "$ENV{ProgramFiles}/Microsoft Visual Studio .NET/Common7/IDE" + "$ENV{ProgramFiles}/Microsoft Visual Studio 9.0/Common7/IDE" + "$ENV{ProgramFiles}/Microsoft Visual Studio9.0/Common7/IDE" "$ENV{ProgramFiles}/Microsoft Visual Studio 9/Common7/IDE" "$ENV{ProgramFiles}/Microsoft Visual Studio9/Common7/IDE" - "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio .NET/Common7/IDE" + "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio 9.0/Common7/IDE" + "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio9.0/Common7/IDE" "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio 9/Common7/IDE" "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio9/Common7/IDE" + "/Program Files/Microsoft Visual Studio 9.0/Common7/IDE/" "/Program Files/Microsoft Visual Studio 9/Common7/IDE/" + PATHS + "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio .NET/Common7/IDE" + "$ENV{ProgramFiles}/Microsoft Visual Studio .NET/Common7/IDE" + ) MARK_AS_ADVANCED(CMAKE_MAKE_PROGRAM) SET(MSVC90 1) diff --git a/Modules/COPYING-CMAKE-SCRIPTS b/Modules/COPYING-CMAKE-SCRIPTS deleted file mode 100644 index 4b417765f..000000000 --- a/Modules/COPYING-CMAKE-SCRIPTS +++ /dev/null @@ -1,22 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. diff --git a/Modules/CPack.cmake b/Modules/CPack.cmake index cd13cbf68..96304767e 100644 --- a/Modules/CPack.cmake +++ b/Modules/CPack.cmake @@ -136,7 +136,10 @@ # whether the program directory should be added to the system PATH # variable. # -# CPACK_NSIS_DISPLAY_NAME - The title displayed at the top of the +# CPACK_NSIS_DISPLAY_NAME - The display name string that appears in +# the Windows Add/Remove Program control panel +# +# CPACK_NSIS_PACKAGE_NAME - The title displayed at the top of the # installer. # # CPACK_NSIS_INSTALLED_ICON_NAME - A path to the executable that @@ -372,8 +375,9 @@ # UPLOAD_DIRECTORY is the local directory where CPack will create the # various archives for each of the components. The contents of this # directory should be uploaded to a location accessible by the URL given -# in the site argument. If omitted, CPack will use the directory CPackUploads -# inside the CMake binary directory to store the generated archives. +# in the site argument. If omitted, CPack will use the directory +# CPackUploads inside the CMake binary directory to store the generated +# archives. # # The ALL flag indicates that all components be downloaded. Otherwise, only # those components explicitly marked as DOWNLOADED or that have a specified @@ -385,6 +389,18 @@ # "Modify" button) to change the set of installed components. NO_ADD_REMOVE # turns off this behavior. This option is ignored on Mac OS X. +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) # Pick a configuration file SET(cpack_input_file "${CMAKE_ROOT}/Templates/CPackConfig.cmake.in") @@ -779,6 +795,7 @@ cpack_set_if_not_set(CPACK_CMAKE_GENERATOR "${CMAKE_GENERATOR}") cpack_set_if_not_set(CPACK_TOPLEVEL_TAG "${CPACK_SYSTEM_NAME}") cpack_set_if_not_set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}") +cpack_set_if_not_set(CPACK_NSIS_PACKAGE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}") cpack_set_if_not_set(CPACK_OUTPUT_CONFIG_FILE "${CMAKE_BINARY_DIR}/CPackConfig.cmake") diff --git a/Modules/CPackDeb.cmake b/Modules/CPackDeb.cmake index 190aa3438..8003ad253 100644 --- a/Modules/CPackDeb.cmake +++ b/Modules/CPackDeb.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # CPack script for creating Debian package # Author: Mathieu Malaterre # diff --git a/Modules/CPackRPM.cmake b/Modules/CPackRPM.cmake index 8b55d722d..fe300588e 100644 --- a/Modules/CPackRPM.cmake +++ b/Modules/CPackRPM.cmake @@ -1,9 +1,89 @@ -# CPack script for creating RPM package -# Author: Eric Noulard with the help of Alexander Neundorf. -# All variables used by CPackRPM begins with CPACK_RPM_ prefix +# - The builtin (binary) CPack RPM generator (Unix only) +# CPackRPM may be used to create RPM package using CPack. +# CPackRPM is a CPack generator thus it uses the CPACK_XXX variables +# used by CPack : http://www.cmake.org/Wiki/CMake:CPackConfiguration +# +# However CPackRPM has specific features which are controlled by +# the specifics CPACK_RPM_XXX variables.You'll find a detailed usage on +# the wiki: +# http://www.cmake.org/Wiki/CMake:CPackPackageGenerators#RPM_.28Unix_Only.29 +# However as a handy reminder here comes the list of specific variables: +# +# CPACK_RPM_PACKAGE_SUMMARY +# Mandatory : YES +# Default : CPACK_PACKAGE_DESCRIPTION +# The RPM package summary +# CPACK_RPM_PACKAGE_NAME +# Mandatory : YES +# Default : CPACK_PACKAGE_NAME +# The RPM package name +# CPACK_RPM_PACKAGE_VERSION +# Mandatory : YES +# Default : CPACK_PACKAGE_VERSION +# The RPM package version +# CPACK_RPM_PACKAGE_ARCHITECTURE +# Mandatory : NO +# Default : - +# The RPM package architecture. This may be set to "noarch" if you +# know you are building a noarch package. +# CPACK_RPM_PACKAGE_RELEASE +# Mandatory : YES +# Default : 1 +# The RPM package release. This is the numbering of the RPM package +# itself, i.e. the version of the packaging and not the version of the +# content (see CPACK_RPM_PACKAGE_VERSION). One may change the default +# value if the previous packaging was buggy and/or you want to put here +# a fancy Linux distro specific numbering. +# CPACK_RPM_PACKAGE_LICENSE +# Mandatory : YES +# Default : "unknown" +# The RPM package license policy. +# CPACK_RPM_PACKAGE_GROUP +# Mandatory : YES +# Default : "unknown" +# The RPM package group. +# CPACK_RPM_PACKAGE_VENDOR +# Mandatory : YES +# Default : CPACK_PACKAGE_VENDOR if set or"unknown" +# The RPM package group. +# CPACK_RPM_PACKAGE_DESCRIPTION +# Mandatory : YES +# Default : CPACK_PACKAGE_DESCRIPTION_FILE if set or "no package description available" +# CPACK_RPM_PACKAGE_REQUIRES +# Mandatory : NO +# Default : - +# May be used to set RPM dependencies. +# CPACK_RPM_SPEC_INSTALL_POST +# Mandatory : NO +# Default : - +# May be used to set an RPM post-install command inside the spec file. +# For example setting it to "/bin/true" may be used to prevent +# rpmbuild to strip binaries. +# CPACK_RPM_SPEC_MORE_DEFINE +# Mandatory : NO +# Default : - +# May be used to add any %define lines to the generated spec file. +# CPACK_RPM_PACKAGE_DEBUG +# Mandatory : NO +# Default : - +# May be set when invoking cpack in order to trace debug informations +# during CPack RPM run. For example you may launch CPack like this +# cpack -D CPACK_RPM_PACKAGE_DEBUG=1 -G RPM + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. # -# Here comes the list of used variables: +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. # +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# Author: Eric Noulard with the help of Alexander Neundorf. IF(CMAKE_BINARY_DIR) MESSAGE(FATAL_ERROR "CPackRPM.cmake may only be used by CPack internally.") @@ -17,10 +97,30 @@ ENDIF(NOT UNIX) # it may be a simple (symbolic) link to rpmb command. FIND_PROGRAM(RPMBUILD_EXECUTABLE rpmbuild) +# Check version of the rpmbuild tool this would be easier to +# track bugs with users and CPackRPM debug mode. +# We may use RPM version in order to check for available version dependent features +IF(RPMBUILD_EXECUTABLE) + execute_process(COMMAND ${RPMBUILD_EXECUTABLE} --version + OUTPUT_VARIABLE _TMP_VERSION + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX REPLACE "^.*\ " "" + RPMBUILD_EXECUTABLE_VERSION + ${_TMP_VERSION}) + IF(CPACK_RPM_PACKAGE_DEBUG) + MESSAGE("CPackRPM:Debug: rpmbuild version is <${RPMBUILD_EXECUTABLE_VERSION}>") + ENDIF(CPACK_RPM_PACKAGE_DEBUG) +ENDIF(RPMBUILD_EXECUTABLE) + IF(NOT RPMBUILD_EXECUTABLE) MESSAGE(FATAL_ERROR "RPM package requires rpmbuild executable") ENDIF(NOT RPMBUILD_EXECUTABLE) +# We may use RPM version in the future in order +# to shut down warning about space in buildtree +# some recent RPM version should support space in different places. +# not checked [yet]. IF(CPACK_TOPLEVEL_DIRECTORY MATCHES ".* .*") MESSAGE(FATAL_ERROR "${RPMBUILD_EXECUTABLE} can't handle paths with spaces, use a build directory without spaces for building RPMs.") ENDIF(CPACK_TOPLEVEL_DIRECTORY MATCHES ".* .*") @@ -211,7 +311,7 @@ Vendor: ${CPACK_RPM_PACKAGE_VENDOR} ${TMP_RPM_REQUIRES} ${TMP_RPM_BUILDARCH} -#%define prefix ${CMAKE_INSTALL_PREFIX} +#p define prefix ${CMAKE_INSTALL_PREFIX} %define _rpmdir ${CPACK_RPM_DIRECTORY} %define _rpmfilename ${CPACK_RPM_FILE_NAME} %define _unpackaged_files_terminate_build 0 @@ -226,18 +326,18 @@ ${CPACK_RPM_PACKAGE_DESCRIPTION} # generated by CMake RPM generator # we skip the _prepn _build and _install # steps because CPack does that for us -#%prep +#p prep -#%build +#p build -#%install +#p install %clean %files %defattr(-,root,root,-) -#%dir %{prefix} -#%{prefix}/* +#p dir %{prefix} +#p {prefix}/* /* %changelog @@ -255,10 +355,12 @@ ENDIF(CPACK_RPM_USER_BINARY_SPECFILE) IF(RPMBUILD_EXECUTABLE) # Now call rpmbuild using the SPECFILE EXECUTE_PROCESS( - COMMAND "${RPMBUILD_EXECUTABLE}" -bb "${CPACK_RPM_BINARY_SPECFILE}" + COMMAND "${RPMBUILD_EXECUTABLE}" -bb + --buildroot "${CPACK_RPM_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}" + "${CPACK_RPM_BINARY_SPECFILE}" WORKING_DIRECTORY "${CPACK_TOPLEVEL_DIRECTORY}/${CPACK_PACKAGE_FILE_NAME}" ERROR_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild.err" - OUTPUT_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild.out") + OUTPUT_FILE "${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild.out") IF(CPACK_RPM_PACKAGE_DEBUG) MESSAGE("CPackRPM:Debug: You may consult rpmbuild logs in: ") MESSAGE("CPackRPM:Debug: - ${CPACK_TOPLEVEL_DIRECTORY}/rpmbuild.err") diff --git a/Modules/CPackZIP.cmake b/Modules/CPackZIP.cmake index 4a6585694..b73bdf100 100644 --- a/Modules/CPackZIP.cmake +++ b/Modules/CPackZIP.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF(CMAKE_BINARY_DIR) MESSAGE(FATAL_ERROR "CPackZIP.cmake may only be used by CPack internally.") ENDIF(CMAKE_BINARY_DIR) diff --git a/Modules/CTest.cmake b/Modules/CTest.cmake index 952e18eed..aaa604064 100644 --- a/Modules/CTest.cmake +++ b/Modules/CTest.cmake @@ -9,6 +9,19 @@ # The BUILD_TESTING option is created by the CTest module to determine # whether testing support should be enabled. The default is ON. +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + OPTION(BUILD_TESTING "Build the testing tree." ON) # function to turn generator name into a version string @@ -63,36 +76,11 @@ IF(BUILD_TESTING) IF(EXISTS "${PROJECT_SOURCE_DIR}/DartConfig.cmake") INCLUDE("${PROJECT_SOURCE_DIR}/DartConfig.cmake") ELSE(EXISTS "${PROJECT_SOURCE_DIR}/DartConfig.cmake") - # Dashboard is opened for submissions for a 24 hour period starting at # the specified NIGHTLY_START_TIME. Time is specified in 24 hour format. SET_IF_NOT_SET (NIGHTLY_START_TIME "00:00:00 EDT") SET_IF_NOT_SET(DROP_METHOD "http") - - # Dart server to submit results (used by client) - # There should be an option to specify submit method, but I will leave it - # commented until we decide what to do with it. - # SET(DROP_METHOD "http" CACHE STRING "Set the CTest submit method. Valid options are http and ftp") - IF(DROP_METHOD MATCHES http) - SET_IF_NOT_SET (DROP_SITE "public.kitware.com") - SET_IF_NOT_SET (DROP_LOCATION "/cgi-bin/HTTPUploadDartFile.cgi") - ELSE(DROP_METHOD MATCHES http) - SET_IF_NOT_SET (DROP_SITE "public.kitware.com") - SET_IF_NOT_SET (DROP_LOCATION "/incoming") - SET_IF_NOT_SET (DROP_SITE_USER "anonymous") - SET_IF_NOT_SET (DROP_SITE_PASSWORD "random@someplace.com") - SET_IF_NOT_SET (DROP_SITE_MODE "active") - ENDIF(DROP_METHOD MATCHES http) - SET_IF_NOT_SET (TRIGGER_SITE "http://${DROP_SITE}/cgi-bin/Submit-Random-TestingResults.cgi") SET_IF_NOT_SET (COMPRESS_SUBMISSION ON) - - # Dart server configuration - SET (ROLLUP_URL "http://${DROP_SITE}/cgi-bin/random-rollup-dashboard.sh") - #SET (CVS_WEB_URL "") - #SET (CVS_WEB_CVSROOT "") - - #SET (USE_DOXYGEN "Off") - #SET (DOXYGEN_URL "" ) ENDIF(EXISTS "${PROJECT_SOURCE_DIR}/DartConfig.cmake") SET_IF_NOT_SET (NIGHTLY_START_TIME "00:00:00 EDT") @@ -104,6 +92,8 @@ IF(BUILD_TESTING) SET(CVS_UPDATE_OPTIONS "-d -A -P" CACHE STRING "Options passed to the cvs update command.") FIND_PROGRAM(SVNCOMMAND svn) + FIND_PROGRAM(BZRCOMMAND bzr) + FIND_PROGRAM(HGCOMMAND hg) IF(NOT UPDATE_TYPE) IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CVS") @@ -111,6 +101,14 @@ IF(BUILD_TESTING) ELSE(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CVS") IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.svn") SET(UPDATE_TYPE svn) + ELSE(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.svn") + IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.bzr") + SET(UPDATE_TYPE bzr) + ELSE(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.bzr") + IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.hg") + SET(UPDATE_TYPE hg) + ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.hg") + ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.bzr") ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.svn") ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CVS") ENDIF(NOT UPDATE_TYPE) @@ -122,15 +120,26 @@ IF(BUILD_TESTING) ENDIF(NOT __CTEST_UPDATE_TYPE_COMPLAINED) ENDIF(NOT UPDATE_TYPE) - IF(UPDATE_TYPE MATCHES "[Cc][Vv][Ss]") + STRING(TOLOWER "${UPDATE_TYPE}" _update_type) + IF("${_update_type}" STREQUAL "cvs") SET(UPDATE_COMMAND "${CVSCOMMAND}") SET(UPDATE_OPTIONS "${CVS_UPDATE_OPTIONS}") - ELSE(UPDATE_TYPE MATCHES "[Cc][Vv][Ss]") - IF(UPDATE_TYPE MATCHES "[Ss][Vv][Nn]") + ELSE("${_update_type}" STREQUAL "cvs") + IF("${_update_type}" STREQUAL "svn") SET(UPDATE_COMMAND "${SVNCOMMAND}") SET(UPDATE_OPTIONS "${SVN_UPDATE_OPTIONS}") - ENDIF(UPDATE_TYPE MATCHES "[Ss][Vv][Nn]") - ENDIF(UPDATE_TYPE MATCHES "[Cc][Vv][Ss]") + ELSE("${_update_type}" STREQUAL "svn") + IF("${_update_type}" STREQUAL "bzr") + SET(UPDATE_COMMAND "${BZRCOMMAND}") + SET(UPDATE_OPTIONS "${BZR_UPDATE_OPTIONS}") + ELSE("${_update_type}" STREQUAL "bzr") + IF("${_update_type}" STREQUAL "hg") + SET(UPDATE_COMMAND "${HGCOMMAND}") + SET(UPDATE_OPTIONS "${HG_UPDATE_OPTIONS}") + ENDIF("${_update_type}" STREQUAL "hg") + ENDIF("${_update_type}" STREQUAL "bzr") + ENDIF("${_update_type}" STREQUAL "svn") + ENDIF("${_update_type}" STREQUAL "cvs") SET(DART_TESTING_TIMEOUT 1500 CACHE STRING "Maximum time allowed before CTest will kill the test.") @@ -141,6 +150,12 @@ IF(BUILD_TESTING) "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Rational Software\\Purify\\Setup;InstallFolder]" DOC "Path to the memory checking command, used for memory error detection." ) + FIND_PROGRAM(SLURM_SBATCH_COMMAND sbatch DOC + "Path to the SLURM sbatch executable" + ) + FIND_PROGRAM(SLURM_SRUN_COMMAND srun DOC + "Path to the SLURM srun executable" + ) SET(MEMORYCHECK_SUPPRESSIONS_FILE "" CACHE FILEPATH "File that contains suppressions for the memory checker") FIND_PROGRAM(SCPCOMMAND scp DOC @@ -190,17 +205,34 @@ IF(BUILD_TESTING) # set the build command BUILD_COMMAND(MAKECOMMAND ${MAKEPROGRAM} ) + IF(NOT "${CMAKE_GENERATOR}" MATCHES "Make") + SET(CTEST_USE_LAUNCHERS 0) + ENDIF(NOT "${CMAKE_GENERATOR}" MATCHES "Make") + IF(CTEST_USE_LAUNCHERS) + SET(CTEST_LAUNCH_COMPILE "\"${CMAKE_CTEST_COMMAND}\" --launch --target-name --build-dir --output --source --language --") + SET(CTEST_LAUNCH_LINK "\"${CMAKE_CTEST_COMMAND}\" --launch --target-name --build-dir --output --target-type --language --") + SET(CTEST_LAUNCH_CUSTOM "\"${CMAKE_CTEST_COMMAND}\" --launch --target-name --build-dir --output --") + SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CTEST_LAUNCH_COMPILE}") + SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CTEST_LAUNCH_LINK}") + SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_CUSTOM "${CTEST_LAUNCH_CUSTOM}") + ENDIF(CTEST_USE_LAUNCHERS) + MARK_AS_ADVANCED( COVERAGE_COMMAND CVSCOMMAND SVNCOMMAND + BZRCOMMAND + HGCOMMAND CVS_UPDATE_OPTIONS SVN_UPDATE_OPTIONS + BZR_UPDATE_OPTIONS MAKECOMMAND MEMORYCHECK_COMMAND MEMORYCHECK_SUPPRESSIONS_FILE PURIFYCOMMAND SCPCOMMAND + SLURM_SBATCH_COMMAND + SLURM_SRUN_COMMAND SITE ) # BUILDNAME diff --git a/Modules/CTestScriptMode.cmake b/Modules/CTestScriptMode.cmake new file mode 100644 index 000000000..4a93d2354 --- /dev/null +++ b/Modules/CTestScriptMode.cmake @@ -0,0 +1,24 @@ +# This file is read by ctest in script mode (-S) + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2009 Alexander Neundorf +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# Determine the current system, so this information can be used +# in ctest scripts +include(CMakeDetermineSystem) + +# Also load the system specific file, which sets up e.g. the search paths. +# This makes the FIND_XXX() calls work much better +include(CMakeSystemSpecificInformation) + diff --git a/Modules/CTestTargets.cmake b/Modules/CTestTargets.cmake index 87f581988..fc47ff8a0 100644 --- a/Modules/CTestTargets.cmake +++ b/Modules/CTestTargets.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF(NOT RUN_FROM_CTEST_OR_DART) MESSAGE(FATAL_ERROR "Do not incldue CTestTargets.cmake directly") ENDIF(NOT RUN_FROM_CTEST_OR_DART) @@ -50,6 +64,7 @@ IF(NOT _CTEST_TARGETS_ADDED) ADD_CUSTOM_TARGET(${mode} ${CMAKE_CTEST_COMMAND} ${__conf_types} -D ${mode} ) + SET_PROPERTY(TARGET ${mode} PROPERTY RULE_LAUNCH_CUSTOM "") ENDFOREACH(mode) # For Makefile generators add more granular targets. @@ -63,6 +78,7 @@ IF(NOT _CTEST_TARGETS_ADDED) ADD_CUSTOM_TARGET(${mode}${testtype} ${CMAKE_CTEST_COMMAND} ${__conf_types} -D ${mode}${testtype} ) + SET_PROPERTY(TARGET ${mode}${testtype} PROPERTY RULE_LAUNCH_CUSTOM "") ENDFOREACH(testtype) ENDFOREACH(mode) ENDIF("${CMAKE_GENERATOR}" MATCHES Make) diff --git a/Modules/CheckCCompilerFlag.cmake b/Modules/CheckCCompilerFlag.cmake index 07fca64c3..d5d8db938 100644 --- a/Modules/CheckCCompilerFlag.cmake +++ b/Modules/CheckCCompilerFlag.cmake @@ -1,25 +1,38 @@ # - Check whether the C compiler supports a given flag. -# CHECK_C_COMPILER_FLAG(FLAG VARIABLE) -# -# FLAG - the compiler flag -# VARIABLE - variable to store the result -# -# This actually calls the check_c_source_compiles macro. -# See help for CheckCSourceCompiles for a listing of variables -# that can modify the build. +# CHECK_C_COMPILER_FLAG( ) +# - the compiler flag +# - variable to store the result +# This internally calls the check_c_source_compiles macro. +# See help for CheckCSourceCompiles for a listing of variables +# that can modify the build. -# Copyright (c) 2006, Alexander Neundorf, +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Alexander Neundorf # -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) INCLUDE(CheckCSourceCompiles) MACRO (CHECK_C_COMPILER_FLAG _FLAG _RESULT) SET(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}") SET(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}") - CHECK_C_SOURCE_COMPILES("int main() { return 0;}" ${_RESULT}) + CHECK_C_SOURCE_COMPILES("int main() { return 0;}" ${_RESULT} + # Some compilers do not fail with a bad flag + FAIL_REGEX "unrecognized .*option" # GNU + FAIL_REGEX "ignoring unknown option" # MSVC + FAIL_REGEX "[Uu]nknown option" # HP + FAIL_REGEX "[Ww]arning: [Oo]ption" # SunPro + FAIL_REGEX "command option .* is not recognized" # XL + ) SET (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}") ENDMACRO (CHECK_C_COMPILER_FLAG) diff --git a/Modules/CheckCSourceCompiles.cmake b/Modules/CheckCSourceCompiles.cmake old mode 100755 new mode 100644 index 5435df4f6..b2768c20c --- a/Modules/CheckCSourceCompiles.cmake +++ b/Modules/CheckCSourceCompiles.cmake @@ -1,9 +1,8 @@ -# - Check if the C source code provided in the SOURCE argument compiles. -# CHECK_C_SOURCE_COMPILES(SOURCE VAR) -# -# SOURCE - source code to try to compile -# VAR - variable to store whether the source code compiled -# +# - Check if the given C source code compiles. +# CHECK_C_SOURCE_COMPILES( [FAIL_REGEX ]) +# - source code to try to compile +# - variable to store whether the source code compiled +# - fail if test output matches this regex # The following variables may be set before calling this macro to # modify the way the check is run: # @@ -12,8 +11,32 @@ # CMAKE_REQUIRED_INCLUDES = list of include directories # CMAKE_REQUIRED_LIBRARIES = list of libraries to link +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(CHECK_C_SOURCE_COMPILES SOURCE VAR) IF("${VAR}" MATCHES "^${VAR}$") + SET(_FAIL_REGEX) + SET(_key) + FOREACH(arg ${ARGN}) + IF("${arg}" MATCHES "^(FAIL_REGEX)$") + SET(_key "${arg}") + ELSEIF(_key) + LIST(APPEND _${_key} "${arg}") + ELSE() + MESSAGE(FATAL_ERROR "Unknown argument:\n ${arg}\n") + ENDIF() + ENDFOREACH() SET(MACRO_CHECK_FUNCTION_DEFINITIONS "-D${VAR} ${CMAKE_REQUIRED_FLAGS}") IF(CMAKE_REQUIRED_LIBRARIES) @@ -40,6 +63,13 @@ MACRO(CHECK_C_SOURCE_COMPILES SOURCE VAR) "${CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES}" "${CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}" OUTPUT_VARIABLE OUTPUT) + + FOREACH(_regex ${_FAIL_REGEX}) + IF("${OUTPUT}" MATCHES "${_regex}") + SET(${VAR} 0) + ENDIF() + ENDFOREACH() + IF(${VAR}) SET(${VAR} 1 CACHE INTERNAL "Test ${VAR}") MESSAGE(STATUS "Performing Test ${VAR} - Success") diff --git a/Modules/CheckCSourceRuns.cmake b/Modules/CheckCSourceRuns.cmake old mode 100755 new mode 100644 index 11d625165..50cd02818 --- a/Modules/CheckCSourceRuns.cmake +++ b/Modules/CheckCSourceRuns.cmake @@ -1,9 +1,8 @@ -# - Check if the C source code provided in the SOURCE argument compiles and runs. -# CHECK_C_SOURCE_RUNS(SOURCE VAR) -# -# SOURCE - source code to try to compile -# VAR - variable to store the result, 1 for success, empty for failure -# +# - Check if the given C source code compiles and runs. +# CHECK_C_SOURCE_RUNS( ) +# - source code to try to compile +# - variable to store the result +# (1 for success, empty for failure) # The following variables may be set before calling this macro to # modify the way the check is run: # @@ -12,6 +11,19 @@ # CMAKE_REQUIRED_INCLUDES = list of include directories # CMAKE_REQUIRED_LIBRARIES = list of libraries to link +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(CHECK_C_SOURCE_RUNS SOURCE VAR) IF("${VAR}" MATCHES "^${VAR}$") SET(MACRO_CHECK_FUNCTION_DEFINITIONS diff --git a/Modules/CheckCXXCompilerFlag.cmake b/Modules/CheckCXXCompilerFlag.cmake index 43ea9a64e..5d22ee539 100644 --- a/Modules/CheckCXXCompilerFlag.cmake +++ b/Modules/CheckCXXCompilerFlag.cmake @@ -1,21 +1,38 @@ # - Check whether the CXX compiler supports a given flag. -# CHECK_CXX_COMPILER_FLAG(FLAG VARIABLE) -# -# FLAG - the compiler flag -# VARIABLE - variable to store the result +# CHECK_CXX_COMPILER_FLAG( ) +# - the compiler flag +# - variable to store the result +# This internally calls the check_cxx_source_compiles macro. See help +# for CheckCXXSourceCompiles for a listing of variables that can +# modify the build. -# Copyright (c) 2006, Alexander Neundorf, +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Alexander Neundorf # -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) INCLUDE(CheckCXXSourceCompiles) MACRO (CHECK_CXX_COMPILER_FLAG _FLAG _RESULT) SET(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}") SET(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}") - CHECK_CXX_SOURCE_COMPILES("int main() { return 0;}" ${_RESULT}) + CHECK_CXX_SOURCE_COMPILES("int main() { return 0;}" ${_RESULT} + # Some compilers do not fail with a bad flag + FAIL_REGEX "unrecognized .*option" # GNU + FAIL_REGEX "ignoring unknown option" # MSVC + FAIL_REGEX "[Uu]nknown option" # HP + FAIL_REGEX "[Ww]arning: [Oo]ption" # SunPro + FAIL_REGEX "command option .* is not recognized" # XL + ) SET (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}") ENDMACRO (CHECK_CXX_COMPILER_FLAG) diff --git a/Modules/CheckCXXSourceCompiles.cmake b/Modules/CheckCXXSourceCompiles.cmake old mode 100755 new mode 100644 index f987ebea4..5f1660777 --- a/Modules/CheckCXXSourceCompiles.cmake +++ b/Modules/CheckCXXSourceCompiles.cmake @@ -1,9 +1,8 @@ -# - Check if the C++ source code provided in the SOURCE argument compiles. -# CHECK_CXX_SOURCE_COMPILES(SOURCE VAR) -# -# SOURCE - source code to try to compile -# VAR - variable to store whether the source code compiled -# +# - Check if the given C++ source code compiles. +# CHECK_CXX_SOURCE_COMPILES( [FAIL_REGEX ]) +# - source code to try to compile +# - variable to store whether the source code compiled +# - fail if test output matches this regex # The following variables may be set before calling this macro to # modify the way the check is run: # @@ -12,8 +11,33 @@ # CMAKE_REQUIRED_INCLUDES = list of include directories # CMAKE_REQUIRED_LIBRARIES = list of libraries to link +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(CHECK_CXX_SOURCE_COMPILES SOURCE VAR) IF("${VAR}" MATCHES "^${VAR}$") + SET(_FAIL_REGEX) + SET(_key) + FOREACH(arg ${ARGN}) + IF("${arg}" MATCHES "^(FAIL_REGEX)$") + SET(_key "${arg}") + ELSEIF(_key) + LIST(APPEND _${_key} "${arg}") + ELSE() + MESSAGE(FATAL_ERROR "Unknown argument:\n ${arg}\n") + ENDIF() + ENDFOREACH() + SET(MACRO_CHECK_FUNCTION_DEFINITIONS "-D${VAR} ${CMAKE_REQUIRED_FLAGS}") IF(CMAKE_REQUIRED_LIBRARIES) @@ -40,6 +64,13 @@ MACRO(CHECK_CXX_SOURCE_COMPILES SOURCE VAR) "${CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES}" "${CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES}" OUTPUT_VARIABLE OUTPUT) + + FOREACH(_regex ${_FAIL_REGEX}) + IF("${OUTPUT}" MATCHES "${_regex}") + SET(${VAR} 0) + ENDIF() + ENDFOREACH() + IF(${VAR}) SET(${VAR} 1 CACHE INTERNAL "Test ${VAR}") MESSAGE(STATUS "Performing Test ${VAR} - Success") diff --git a/Modules/CheckCXXSourceRuns.cmake b/Modules/CheckCXXSourceRuns.cmake old mode 100755 new mode 100644 index ef9aa7168..3a3dafaae --- a/Modules/CheckCXXSourceRuns.cmake +++ b/Modules/CheckCXXSourceRuns.cmake @@ -1,9 +1,8 @@ -# - Check if the C++ source code provided in the SOURCE argument compiles and runs. -# CHECK_CXX_SOURCE_RUNS(SOURCE VAR) -# -# SOURCE - source code to try to compile -# VAR - variable to store the result, 1 for success, empty for failure -# +# - Check if the given C++ source code compiles and runs. +# CHECK_CXX_SOURCE_RUNS( ) +# - source code to try to compile +# - variable to store the result +# (1 for success, empty for failure) # The following variables may be set before calling this macro to # modify the way the check is run: # @@ -12,6 +11,19 @@ # CMAKE_REQUIRED_INCLUDES = list of include directories # CMAKE_REQUIRED_LIBRARIES = list of libraries to link +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(CHECK_CXX_SOURCE_RUNS SOURCE VAR) IF("${VAR}" MATCHES "^${VAR}$") SET(MACRO_CHECK_FUNCTION_DEFINITIONS diff --git a/Modules/CheckFortranFunctionExists.cmake b/Modules/CheckFortranFunctionExists.cmake index 49858812f..0e0f21748 100644 --- a/Modules/CheckFortranFunctionExists.cmake +++ b/Modules/CheckFortranFunctionExists.cmake @@ -9,6 +9,19 @@ # # CMAKE_REQUIRED_LIBRARIES = list of libraries to link +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + macro(CHECK_FORTRAN_FUNCTION_EXISTS FUNCTION VARIABLE) if(NOT DEFINED ${VARIABLE}) message(STATUS "Looking for Fortran ${FUNCTION}") diff --git a/Modules/CheckFunctionExists.cmake b/Modules/CheckFunctionExists.cmake index e319a8137..e8fd85d4a 100644 --- a/Modules/CheckFunctionExists.cmake +++ b/Modules/CheckFunctionExists.cmake @@ -12,6 +12,19 @@ # CMAKE_REQUIRED_INCLUDES = list of include directories # CMAKE_REQUIRED_LIBRARIES = list of libraries to link +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(CHECK_FUNCTION_EXISTS FUNCTION VARIABLE) IF("${VARIABLE}" MATCHES "^${VARIABLE}$") SET(MACRO_CHECK_FUNCTION_DEFINITIONS diff --git a/Modules/CheckIncludeFile.cmake b/Modules/CheckIncludeFile.cmake index cfb692149..d1ea76a61 100644 --- a/Modules/CheckIncludeFile.cmake +++ b/Modules/CheckIncludeFile.cmake @@ -14,6 +14,20 @@ # CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) # CMAKE_REQUIRED_INCLUDES = list of include directories # + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(CHECK_INCLUDE_FILE INCLUDE VARIABLE) IF("${VARIABLE}" MATCHES "^${VARIABLE}$") IF(CMAKE_REQUIRED_INCLUDES) diff --git a/Modules/CheckIncludeFileCXX.cmake b/Modules/CheckIncludeFileCXX.cmake index 548515b9f..b1ac62ada 100644 --- a/Modules/CheckIncludeFileCXX.cmake +++ b/Modules/CheckIncludeFileCXX.cmake @@ -14,6 +14,20 @@ # CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) # CMAKE_REQUIRED_INCLUDES = list of include directories # + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(CHECK_INCLUDE_FILE_CXX INCLUDE VARIABLE) IF("${VARIABLE}" MATCHES "^${VARIABLE}$") IF(CMAKE_REQUIRED_INCLUDES) diff --git a/Modules/CheckIncludeFiles.cmake b/Modules/CheckIncludeFiles.cmake index bf791e7ed..21e97dc5f 100644 --- a/Modules/CheckIncludeFiles.cmake +++ b/Modules/CheckIncludeFiles.cmake @@ -12,6 +12,19 @@ # CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) # CMAKE_REQUIRED_INCLUDES = list of include directories +#============================================================================= +# Copyright 2003-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(CHECK_INCLUDE_FILES INCLUDE VARIABLE) IF("${VARIABLE}" MATCHES "^${VARIABLE}$") SET(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n") diff --git a/Modules/CheckLibraryExists.cmake b/Modules/CheckLibraryExists.cmake index 1e8a6bfed..64f6455e9 100644 --- a/Modules/CheckLibraryExists.cmake +++ b/Modules/CheckLibraryExists.cmake @@ -13,6 +13,19 @@ # CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) # CMAKE_REQUIRED_LIBRARIES = list of libraries to link +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(CHECK_LIBRARY_EXISTS LIBRARY FUNCTION LOCATION VARIABLE) IF("${VARIABLE}" MATCHES "^${VARIABLE}$") SET(MACRO_CHECK_LIBRARY_EXISTS_DEFINITION diff --git a/Modules/CheckSizeOf.cmake b/Modules/CheckSizeOf.cmake index 3820d4c52..0663ce4ba 100644 --- a/Modules/CheckSizeOf.cmake +++ b/Modules/CheckSizeOf.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MESSAGE(SEND_ERROR "Modules/CheckSizeOf.cmake has been removed. " "Use Modules/CheckTypeSize.cmake instead. This " diff --git a/Modules/CheckStructHasMember.cmake b/Modules/CheckStructHasMember.cmake index f8a7d32af..32abe73b6 100644 --- a/Modules/CheckStructHasMember.cmake +++ b/Modules/CheckStructHasMember.cmake @@ -15,6 +15,18 @@ # # Example: CHECK_STRUCT_HAS_MEMBER("struct timeval" tv_sec sys/select.h HAVE_TIMEVAL_TV_SEC) +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) INCLUDE(CheckCSourceCompiles) diff --git a/Modules/CheckSymbolExists.cmake b/Modules/CheckSymbolExists.cmake old mode 100755 new mode 100644 index 99b891891..d48b65f14 --- a/Modules/CheckSymbolExists.cmake +++ b/Modules/CheckSymbolExists.cmake @@ -13,6 +13,19 @@ # CMAKE_REQUIRED_INCLUDES = list of include directories # CMAKE_REQUIRED_LIBRARIES = list of libraries to link +#============================================================================= +# Copyright 2003-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(CHECK_SYMBOL_EXISTS SYMBOL FILES VARIABLE) IF("${VARIABLE}" MATCHES "^${VARIABLE}$") SET(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n") diff --git a/Modules/CheckTypeSize.cmake b/Modules/CheckTypeSize.cmake index cc5dcebce..3701467dc 100644 --- a/Modules/CheckTypeSize.cmake +++ b/Modules/CheckTypeSize.cmake @@ -22,6 +22,19 @@ # These variables are referenced in CheckTypeSizeC.c so we have # to check for them. +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + include(CheckIncludeFile) MACRO(CHECK_TYPE_SIZE TYPE VARIABLE) diff --git a/Modules/CheckVariableExists.cmake b/Modules/CheckVariableExists.cmake index a6cdc01fc..13104e51c 100644 --- a/Modules/CheckVariableExists.cmake +++ b/Modules/CheckVariableExists.cmake @@ -13,6 +13,19 @@ # CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) # CMAKE_REQUIRED_LIBRARIES = list of libraries to link +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(CHECK_VARIABLE_EXISTS VAR VARIABLE) IF("${VARIABLE}" MATCHES "^${VARIABLE}$") SET(MACRO_CHECK_VARIABLE_DEFINITIONS diff --git a/Modules/Compiler/GNU-C.cmake b/Modules/Compiler/GNU-C.cmake new file mode 100644 index 000000000..abf384ab8 --- /dev/null +++ b/Modules/Compiler/GNU-C.cmake @@ -0,0 +1 @@ +SET(CMAKE_C_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/GNU-CXX.cmake b/Modules/Compiler/GNU-CXX.cmake new file mode 100644 index 000000000..f3c6b5f82 --- /dev/null +++ b/Modules/Compiler/GNU-CXX.cmake @@ -0,0 +1 @@ +SET(CMAKE_CXX_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/GNU-Fortran.cmake b/Modules/Compiler/GNU-Fortran.cmake new file mode 100644 index 000000000..7f7c1289a --- /dev/null +++ b/Modules/Compiler/GNU-Fortran.cmake @@ -0,0 +1 @@ +SET(CMAKE_Fortran_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/HP-C.cmake b/Modules/Compiler/HP-C.cmake new file mode 100644 index 000000000..abf384ab8 --- /dev/null +++ b/Modules/Compiler/HP-C.cmake @@ -0,0 +1 @@ +SET(CMAKE_C_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/HP-CXX.cmake b/Modules/Compiler/HP-CXX.cmake new file mode 100644 index 000000000..f3c6b5f82 --- /dev/null +++ b/Modules/Compiler/HP-CXX.cmake @@ -0,0 +1 @@ +SET(CMAKE_CXX_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/HP-Fortran.cmake b/Modules/Compiler/HP-Fortran.cmake new file mode 100644 index 000000000..7f7c1289a --- /dev/null +++ b/Modules/Compiler/HP-Fortran.cmake @@ -0,0 +1 @@ +SET(CMAKE_Fortran_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/Intel-C.cmake b/Modules/Compiler/Intel-C.cmake new file mode 100644 index 000000000..4be91d084 --- /dev/null +++ b/Modules/Compiler/Intel-C.cmake @@ -0,0 +1,10 @@ +SET(CMAKE_C_VERBOSE_FLAG "-v") + +SET(CMAKE_C_FLAGS_INIT "") +SET(CMAKE_C_FLAGS_DEBUG_INIT "-g") +SET(CMAKE_C_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG") +SET(CMAKE_C_FLAGS_RELEASE_INIT "-O3 -DNDEBUG") +SET(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g") + +SET(CMAKE_C_CREATE_PREPROCESSED_SOURCE " -E > ") +SET(CMAKE_C_CREATE_ASSEMBLY_SOURCE " -S -o ") diff --git a/Modules/Compiler/Intel-CXX.cmake b/Modules/Compiler/Intel-CXX.cmake new file mode 100644 index 000000000..ff01a81f6 --- /dev/null +++ b/Modules/Compiler/Intel-CXX.cmake @@ -0,0 +1,10 @@ +SET(CMAKE_CXX_VERBOSE_FLAG "-v") + +SET(CMAKE_CXX_FLAGS_INIT "") +SET(CMAKE_CXX_FLAGS_DEBUG_INIT "-g") +SET(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG") +SET(CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -DNDEBUG") +SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g") + +SET(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE " -E > ") +SET(CMAKE_CXX_CREATE_ASSEMBLY_SOURCE " -S -o ") diff --git a/Modules/Compiler/Intel-Fortran.cmake b/Modules/Compiler/Intel-Fortran.cmake new file mode 100644 index 000000000..f38b32e0e --- /dev/null +++ b/Modules/Compiler/Intel-Fortran.cmake @@ -0,0 +1,7 @@ +SET(CMAKE_Fortran_FLAGS_INIT "") +SET(CMAKE_Fortran_FLAGS_DEBUG_INIT "-g") +SET(CMAKE_Fortran_FLAGS_MINSIZEREL_INIT "-Os") +SET(CMAKE_Fortran_FLAGS_RELEASE_INIT "-O3") +SET(CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT "-O2 -g") +SET(CMAKE_Fortran_MODDIR_FLAG "-module ") +SET(CMAKE_Fortran_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/MIPSpro-C.cmake b/Modules/Compiler/MIPSpro-C.cmake new file mode 100644 index 000000000..abf384ab8 --- /dev/null +++ b/Modules/Compiler/MIPSpro-C.cmake @@ -0,0 +1 @@ +SET(CMAKE_C_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/MIPSpro-CXX.cmake b/Modules/Compiler/MIPSpro-CXX.cmake new file mode 100644 index 000000000..f3c6b5f82 --- /dev/null +++ b/Modules/Compiler/MIPSpro-CXX.cmake @@ -0,0 +1 @@ +SET(CMAKE_CXX_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/MIPSpro-Fortran.cmake b/Modules/Compiler/MIPSpro-Fortran.cmake new file mode 100644 index 000000000..7f7c1289a --- /dev/null +++ b/Modules/Compiler/MIPSpro-Fortran.cmake @@ -0,0 +1 @@ +SET(CMAKE_Fortran_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/PGI-C.cmake b/Modules/Compiler/PGI-C.cmake new file mode 100644 index 000000000..abf384ab8 --- /dev/null +++ b/Modules/Compiler/PGI-C.cmake @@ -0,0 +1 @@ +SET(CMAKE_C_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/PGI-CXX.cmake b/Modules/Compiler/PGI-CXX.cmake new file mode 100644 index 000000000..f3c6b5f82 --- /dev/null +++ b/Modules/Compiler/PGI-CXX.cmake @@ -0,0 +1 @@ +SET(CMAKE_CXX_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/PGI-Fortran.cmake b/Modules/Compiler/PGI-Fortran.cmake new file mode 100644 index 000000000..7f7c1289a --- /dev/null +++ b/Modules/Compiler/PGI-Fortran.cmake @@ -0,0 +1 @@ +SET(CMAKE_Fortran_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/SunPro-C.cmake b/Modules/Compiler/SunPro-C.cmake new file mode 100644 index 000000000..4e7e50b5f --- /dev/null +++ b/Modules/Compiler/SunPro-C.cmake @@ -0,0 +1,26 @@ +SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-KPIC") +SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-G") +SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") +SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-R") +SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":") +SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-h") + +SET(CMAKE_C_VERBOSE_FLAG "-#") + +SET(CMAKE_C_FLAGS_INIT "") +SET(CMAKE_C_FLAGS_DEBUG_INIT "-g") +SET(CMAKE_C_FLAGS_MINSIZEREL_INIT "-xO2 -xspace -DNDEBUG") +SET(CMAKE_C_FLAGS_RELEASE_INIT "-xO3 -DNDEBUG") +SET(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-g -xO2") + +# Initialize C link type selection flags. These flags are used when +# building a shared library, shared module, or executable that links +# to other libraries to select whether to use the static or shared +# versions of the libraries. +FOREACH(type SHARED_LIBRARY SHARED_MODULE EXE) + SET(CMAKE_${type}_LINK_STATIC_C_FLAGS "-Bstatic") + SET(CMAKE_${type}_LINK_DYNAMIC_C_FLAGS "-Bdynamic") +ENDFOREACH(type) + +SET(CMAKE_C_CREATE_PREPROCESSED_SOURCE " -E > ") +SET(CMAKE_C_CREATE_ASSEMBLY_SOURCE " -S -o ") diff --git a/Modules/Compiler/SunPro-CXX.cmake b/Modules/Compiler/SunPro-CXX.cmake new file mode 100644 index 000000000..c3f079d41 --- /dev/null +++ b/Modules/Compiler/SunPro-CXX.cmake @@ -0,0 +1,32 @@ +SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-KPIC") +SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-G") +SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") +SET(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG "-R") +SET(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP ":") +SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-h") + +SET(CMAKE_CXX_VERBOSE_FLAG "-v") + +SET(CMAKE_CXX_FLAGS_INIT "") +SET(CMAKE_CXX_FLAGS_DEBUG_INIT "-g") +SET(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-xO2 -xspace -DNDEBUG") +SET(CMAKE_CXX_FLAGS_RELEASE_INIT "-xO3 -DNDEBUG") +SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-g -xO2") + +# Initialize C link type selection flags. These flags are used when +# building a shared library, shared module, or executable that links +# to other libraries to select whether to use the static or shared +# versions of the libraries. +FOREACH(type SHARED_LIBRARY SHARED_MODULE EXE) + SET(CMAKE_${type}_LINK_STATIC_CXX_FLAGS "-Bstatic") + SET(CMAKE_${type}_LINK_DYNAMIC_CXX_FLAGS "-Bdynamic") +ENDFOREACH(type) + +SET(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE " -E > ") +SET(CMAKE_CXX_CREATE_ASSEMBLY_SOURCE " -S -o ") + +# Create archives with "CC -xar" in case user adds "-instances=extern" +# so that template instantiations are available to archive members. +SET(CMAKE_CXX_CREATE_STATIC_LIBRARY + " -xar -o " + " ") diff --git a/Modules/Compiler/SunPro-Fortran.cmake b/Modules/Compiler/SunPro-Fortran.cmake new file mode 100644 index 000000000..0933bf71d --- /dev/null +++ b/Modules/Compiler/SunPro-Fortran.cmake @@ -0,0 +1,16 @@ +SET(CMAKE_SHARED_LIBRARY_Fortran_FLAGS "-KPIC") +SET(CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS "-G") +SET(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS "") +SET(CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG "-R") +SET(CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG_SEP ":") +SET(CMAKE_SHARED_LIBRARY_SONAME_Fortran_FLAG "-h") +set(CMAKE_EXECUTABLE_RUNTIME_Fortran_FLAG "-R") + +SET(CMAKE_Fortran_FLAGS_INIT "") +SET(CMAKE_Fortran_FLAGS_DEBUG_INIT "-g") +SET(CMAKE_Fortran_FLAGS_MINSIZEREL_INIT "-xO2 -xspace -DNDEBUG") +SET(CMAKE_Fortran_FLAGS_RELEASE_INIT "-xO3 -DNDEBUG") +SET(CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT "-g -xO2") +SET(CMAKE_Fortran_MODDIR_FLAG "-moddir=") +SET(CMAKE_Fortran_MODPATH_FLAG "-M") +SET(CMAKE_Fortran_VERBOSE_FLAG "-v") diff --git a/Modules/Compiler/VisualAge-C.cmake b/Modules/Compiler/VisualAge-C.cmake new file mode 100644 index 000000000..40b609e9a --- /dev/null +++ b/Modules/Compiler/VisualAge-C.cmake @@ -0,0 +1 @@ +include(Compiler/XL-C) diff --git a/Modules/Compiler/VisualAge-CXX.cmake b/Modules/Compiler/VisualAge-CXX.cmake new file mode 100644 index 000000000..2509b4396 --- /dev/null +++ b/Modules/Compiler/VisualAge-CXX.cmake @@ -0,0 +1 @@ +include(Compiler/XL-CXX) diff --git a/Modules/Compiler/VisualAge-Fortran.cmake b/Modules/Compiler/VisualAge-Fortran.cmake new file mode 100644 index 000000000..3ef3178d9 --- /dev/null +++ b/Modules/Compiler/VisualAge-Fortran.cmake @@ -0,0 +1 @@ +include(Compiler/XL-Fortran) diff --git a/Modules/Compiler/XL-C.cmake b/Modules/Compiler/XL-C.cmake new file mode 100644 index 000000000..8f6655762 --- /dev/null +++ b/Modules/Compiler/XL-C.cmake @@ -0,0 +1,14 @@ +SET(CMAKE_C_VERBOSE_FLAG "-V") + +# -qthreaded = Ensures that all optimizations will be thread-safe +# -qalias=noansi = Turns off type-based aliasing completely (safer optimizer) +# -qhalt=e = Halt on error messages (rather than just severe errors) +SET(CMAKE_C_FLAGS_INIT "-qthreaded -qalias=noansi -qhalt=e") + +SET(CMAKE_C_FLAGS_DEBUG_INIT "-g") +SET(CMAKE_C_FLAGS_RELEASE_INIT "-O -DNDEBUG") +SET(CMAKE_C_FLAGS_MINSIZEREL_INIT "-O -DNDEBUG") +SET(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-g") + +SET(CMAKE_C_CREATE_PREPROCESSED_SOURCE " -E > ") +SET(CMAKE_C_CREATE_ASSEMBLY_SOURCE " -S -o ") diff --git a/Modules/Compiler/XL-CXX.cmake b/Modules/Compiler/XL-CXX.cmake new file mode 100644 index 000000000..961cfee61 --- /dev/null +++ b/Modules/Compiler/XL-CXX.cmake @@ -0,0 +1,12 @@ +SET(CMAKE_CXX_VERBOSE_FLAG "-V") + +SET(CMAKE_CXX_FLAGS_DEBUG_INIT "-g") +SET(CMAKE_CXX_FLAGS_RELEASE_INIT "-O -DNDEBUG") +SET(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-O -DNDEBUG") +SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-g") + +SET(CMAKE_CXX_COMPILE_OBJECT + " -+ -o -c ") + +SET(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE " -E > ") +SET(CMAKE_CXX_CREATE_ASSEMBLY_SOURCE " -S -o ") diff --git a/Modules/Compiler/XL-Fortran.cmake b/Modules/Compiler/XL-Fortran.cmake new file mode 100644 index 000000000..6133f5638 --- /dev/null +++ b/Modules/Compiler/XL-Fortran.cmake @@ -0,0 +1,7 @@ +SET(CMAKE_Fortran_VERBOSE_FLAG "-V") +SET(CMAKE_Fortran_DEFINE_FLAG "-WF,-D") + +SET(CMAKE_Fortran_FLAGS_DEBUG_INIT "-g") +SET(CMAKE_Fortran_FLAGS_RELEASE_INIT "-O") +SET(CMAKE_Fortran_FLAGS_MINSIZEREL_INIT "-O") +SET(CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT "-g") diff --git a/Modules/Dart.cmake b/Modules/Dart.cmake index a20deaedb..f125ceb9e 100644 --- a/Modules/Dart.cmake +++ b/Modules/Dart.cmake @@ -18,6 +18,20 @@ # Section #3: Custom targets for performing dashboard builds. # # + +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + OPTION(BUILD_TESTING "Build the testing tree." ON) IF(BUILD_TESTING) diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in index 3ff6a59d0..7b79a3daf 100644 --- a/Modules/DartConfiguration.tcl.in +++ b/Modules/DartConfiguration.tcl.in @@ -54,9 +54,19 @@ MemoryCheckCommandOptions: @MEMORYCHECK_COMMAND_OPTIONS@ MemoryCheckSuppressionFile: @MEMORYCHECK_SUPPRESSIONS_FILE@ CoverageCommand: @COVERAGE_COMMAND@ +# Cluster commands +SlurmBatchCommand: @SLURM_SBATCH_COMMAND@ +SlurmRunCommand: @SLURM_SRUN_COMMAND@ + # Testing options # TimeOut is the amount of time in seconds to wait for processes # to complete during testing. After TimeOut seconds, the -# process will be summaily terminated. +# process will be summarily terminated. # Currently set to 25 minutes TimeOut: @DART_TESTING_TIMEOUT@ + +UseLaunchers: @CTEST_USE_LAUNCHERS@ +CurlOptions: @CTEST_CURL_OPTIONS@ +# warning, if you add new options here that have to do with submit, +# you have to update cmCTestSubmitCommand.cxx + diff --git a/Modules/Documentation.cmake b/Modules/Documentation.cmake index 73998be8a..ddb19ca1f 100644 --- a/Modules/Documentation.cmake +++ b/Modules/Documentation.cmake @@ -2,6 +2,19 @@ # This file provides support for the VTK documentation framework. # It relies on several tools (Doxygen, Perl, etc). +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # # Build the documentation ? # diff --git a/Modules/DummyCXXFile.cxx b/Modules/DummyCXXFile.cxx old mode 100755 new mode 100644 diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake new file mode 100644 index 000000000..84c732263 --- /dev/null +++ b/Modules/ExternalProject.cmake @@ -0,0 +1,952 @@ +# - Create custom targets to build projects in external trees +# The 'ExternalProject_Add' function creates a custom target to drive +# download, update/patch, configure, build, install and test steps of an +# external project: +# ExternalProject_Add( # Name for custom target +# [DEPENDS projects...] # Targets on which the project depends +# [PREFIX dir] # Root dir for entire project +# [LIST_SEPARATOR sep] # Sep to be replaced by ; in cmd lines +# [TMP_DIR dir] # Directory to store temporary files +# [STAMP_DIR dir] # Directory to store step timestamps +# #--Download step-------------- +# [DOWNLOAD_DIR dir] # Directory to store downloaded files +# [DOWNLOAD_COMMAND cmd...] # Command to download source tree +# [CVS_REPOSITORY cvsroot] # CVSROOT of CVS repository +# [CVS_MODULE mod] # Module to checkout from CVS repo +# [CVS_TAG tag] # Tag to checkout from CVS repo +# [SVN_REPOSITORY url] # URL of Subversion repo +# [SVN_REVISION rev] # Revision to checkout from Subversion repo +# [URL /.../src.tgz] # Full path or URL of source +# #--Update/Patch step---------- +# [UPDATE_COMMAND cmd...] # Source work-tree update command +# [PATCH_COMMAND cmd...] # Command to patch downloaded source +# #--Configure step------------- +# [SOURCE_DIR dir] # Source dir to be used for build +# [CONFIGURE_COMMAND cmd...] # Build tree configuration command +# [CMAKE_COMMAND /.../cmake] # Specify alternative cmake executable +# [CMAKE_GENERATOR gen] # Specify generator for native build +# [CMAKE_ARGS args...] # Arguments to CMake command line +# #--Build step----------------- +# [BINARY_DIR dir] # Specify build dir location +# [BUILD_COMMAND cmd...] # Command to drive the native build +# [BUILD_IN_SOURCE 1] # Use source dir for build dir +# #--Install step--------------- +# [INSTALL_DIR dir] # Installation prefix +# [INSTALL_COMMAND cmd...] # Command to drive install after build +# #--Test step--------------- +# [TEST_BEFORE_INSTALL 1] # Add test step executed before install step +# [TEST_AFTER_INSTALL 1] # Add test step executed after install step +# [TEST_COMMAND cmd...] # Command to drive test +# ) +# The *_DIR options specify directories for the project, with default +# directories computed as follows. +# If the PREFIX option is given to ExternalProject_Add() or the EP_PREFIX +# directory property is set, then an external project is built and installed +# under the specified prefix: +# TMP_DIR = /tmp +# STAMP_DIR = /src/-stamp +# DOWNLOAD_DIR = /src +# SOURCE_DIR = /src/ +# BINARY_DIR = /src/-build +# INSTALL_DIR = +# Otherwise, if the EP_BASE directory property is set then components +# of an external project are stored under the specified base: +# TMP_DIR = /tmp/ +# STAMP_DIR = /Stamp/ +# DOWNLOAD_DIR = /Download/ +# SOURCE_DIR = /Source/ +# BINARY_DIR = /Build/ +# INSTALL_DIR = /Install/ +# If no PREFIX, EP_PREFIX, or EP_BASE is specified then the default +# is to set PREFIX to "-prefix". +# Relative paths are interpreted with respect to the build directory +# corresponding to the source directory in which ExternalProject_Add is +# invoked. +# +# If SOURCE_DIR is explicitly set to an existing directory the project +# will be built from it. +# Otherwise a download step must be specified using one of the +# DOWNLOAD_COMMAND, CVS_*, SVN_*, or URL options. +# The URL option may refer locally to a directory or source tarball, +# or refer to a remote tarball (e.g. http://.../src.tgz). +# +# The 'ExternalProject_Add_Step' function adds a custom step to an external +# project: +# ExternalProject_Add_Step( # Names of project and custom step +# [COMMAND cmd...] # Command line invoked by this step +# [COMMENT "text..."] # Text printed when step executes +# [DEPENDEES steps...] # Steps on which this step depends +# [DEPENDERS steps...] # Steps that depend on this step +# [DEPENDS files...] # Files on which this step depends +# [ALWAYS 1] # No stamp file, step always runs +# [WORKING_DIRECTORY dir] # Working directory for command +# ) +# The command line, comment, and working directory of every standard +# and custom step is processed to replace tokens +# , +# , +# , +# and +# with corresponding property values. +# +# The 'ExternalProject_Get_Property' function retrieves external project +# target properties: +# ExternalProject_Get_Property( [prop1 [prop2 [...]]]) +# It stores property values in variables of the same name. +# Property names correspond to the keyword argument names of +# 'ExternalProject_Add'. + +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# Pre-compute a regex to match documented keywords for each command. +file(STRINGS "${CMAKE_CURRENT_LIST_FILE}" lines LIMIT_COUNT 100 + REGEX "^# ( \\[[A-Z_]+ [^]]*\\] +#.*$|[A-Za-z_]+\\()") +foreach(line IN LISTS lines) + if("${line}" MATCHES "^# [A-Za-z_]+\\(") + if(_ep_func) + set(_ep_keywords_${_ep_func} "${_ep_keywords_${_ep_func}})$") + endif() + string(REGEX REPLACE "^# ([A-Za-z_]+)\\(.*" "\\1" _ep_func "${line}") + #message("function [${_ep_func}]") + set(_ep_keywords_${_ep_func} "^(") + set(_ep_keyword_sep) + else() + string(REGEX REPLACE "^# \\[([A-Z_]+) .*" "\\1" _ep_key "${line}") + #message(" keyword [${_ep_key}]") + set(_ep_keywords_${_ep_func} + "${_ep_keywords_${_ep_func}}${_ep_keyword_sep}${_ep_key}") + set(_ep_keyword_sep "|") + endif() +endforeach() +if(_ep_func) + set(_ep_keywords_${_ep_func} "${_ep_keywords_${_ep_func}})$") +endif() + + +function(_ep_parse_arguments f name ns args) + # Transfer the arguments to this function into target properties for the + # new custom target we just added so that we can set up all the build steps + # correctly based on target properties. + # + # We loop through ARGN and consider the namespace starting with an + # upper-case letter followed by at least two more upper-case letters + # or underscores to be keywords. + set(key) + + foreach(arg IN LISTS args) + set(is_value 1) + + if(arg MATCHES "^[A-Z][A-Z_][A-Z_]+$" AND + NOT ((arg STREQUAL "${key}") AND (key STREQUAL "COMMAND")) AND + NOT arg MATCHES "^(TRUE|FALSE)$") + if(_ep_keywords_${f} AND arg MATCHES "${_ep_keywords_${f}}") + set(is_value 0) + else() + if(NOT (key STREQUAL "COMMAND") + AND NOT (key STREQUAL "CVS_MODULE") + AND NOT (key STREQUAL "DEPENDS") + ) + message(AUTHOR_WARNING "unknown ${f} keyword: ${arg}") + endif() + endif() + endif() + + if(is_value) + if(key) + # Value + if(NOT arg STREQUAL "") + set_property(TARGET ${name} APPEND PROPERTY ${ns}${key} "${arg}") + else() + get_property(have_key TARGET ${name} PROPERTY ${ns}${key} SET) + if(have_key) + get_property(value TARGET ${name} PROPERTY ${ns}${key}) + set_property(TARGET ${name} PROPERTY ${ns}${key} "${value};${arg}") + else() + set_property(TARGET ${name} PROPERTY ${ns}${key} "${arg}") + endif() + endif() + else() + # Missing Keyword + message(AUTHOR_WARNING "value '${arg}' with no previous keyword in ${f}") + endif() + else() + set(key "${arg}") + endif() + endforeach() +endfunction(_ep_parse_arguments) + + +define_property(DIRECTORY PROPERTY "EP_BASE" INHERITED + BRIEF_DOCS "Base directory for External Project storage." + FULL_DOCS + "See documentation of the ExternalProject_Add() function in the " + "ExternalProject module." + ) + +define_property(DIRECTORY PROPERTY "EP_PREFIX" INHERITED + BRIEF_DOCS "Top prefix for External Project storage." + FULL_DOCS + "See documentation of the ExternalProject_Add() function in the " + "ExternalProject module." + ) + + +function(_ep_write_downloadfile_script script_filename remote local timeout) + if(NOT timeout) + set(timeout 30) + endif() + + file(WRITE ${script_filename} +"message(STATUS \"downloading... + src='${remote}' + dst='${local}'\") + +file(DOWNLOAD + \"${remote}\" + \"${local}\" + TIMEOUT ${timeout} + STATUS status + LOG log) + +list(GET status 0 status_code) +list(GET status 1 status_string) + +if(NOT status_code EQUAL 0) + message(FATAL_ERROR \"error: downloading '${remote}' failed + status_code: \${status_code} + status_string: \${status_string} + log: \${log} +\") +endif() + +message(STATUS \"downloading... done\") +" +) + +endfunction(_ep_write_downloadfile_script) + + +function(_ep_write_extractfile_script script_filename filename tmp directory) + set(args "") + + if(filename MATCHES ".tar$") + set(args xf) + endif() + + if(filename MATCHES ".tgz$") + set(args xfz) + endif() + + if(filename MATCHES ".tar.gz$") + set(args xfz) + endif() + + if(args STREQUAL "") + message(SEND_ERROR "error: do not know how to extract '${filename}' -- known types are .tar, .tgz and .tar.gz") + return() + endif() + + file(WRITE ${script_filename} +"# Make file names absolute: +# +get_filename_component(filename \"${filename}\" ABSOLUTE) +get_filename_component(tmp \"${tmp}\" ABSOLUTE) +get_filename_component(directory \"${directory}\" ABSOLUTE) + +message(STATUS \"extracting... + src='\${filename}' + dst='\${directory}'\") + +# Prepare a space for extracting: +# +set(i 1) +while(EXISTS \"\${tmp}/extract\${i}\") + math(EXPR i \"\${i} + 1\") +endwhile() +set(ut_dir \"\${tmp}/extract\${i}\") +file(MAKE_DIRECTORY \"\${ut_dir}\") + +# Extract it: +# +message(STATUS \"extracting... [tar ${args}]\") +execute_process(COMMAND \${CMAKE_COMMAND} -E tar ${args} \${filename} + WORKING_DIRECTORY \${ut_dir} + RESULT_VARIABLE rv) + +if(NOT rv EQUAL 0) + message(STATUS \"extracting... [error clean up]\") + file(REMOVE_RECURSE \"\${ut_dir}\") + message(FATAL_ERROR \"error: extract of '\${filename}' failed\") +endif() + +# Analyze what came out of the tar file: +# +message(STATUS \"extracting... [analysis]\") +file(GLOB contents \"\${ut_dir}/*\") +list(LENGTH contents n) +if(NOT n EQUAL 1 OR NOT IS_DIRECTORY \"\${contents}\") + set(contents \"\${ut_dir}\") +endif() + +# Copy \"the one\" directory to the final directory: +# +message(STATUS \"extracting... [copy]\") +file(COPY \"\${contents}/\" DESTINATION \${directory}) + +# Clean up: +# +message(STATUS \"extracting... [clean up]\") +file(REMOVE_RECURSE \"\${ut_dir}\") + +message(STATUS \"extracting... done\") +" +) + +endfunction(_ep_write_extractfile_script) + + +function(_ep_set_directories name) + get_property(prefix TARGET ${name} PROPERTY _EP_PREFIX) + if(NOT prefix) + get_property(prefix DIRECTORY PROPERTY EP_PREFIX) + if(NOT prefix) + get_property(base DIRECTORY PROPERTY EP_BASE) + if(NOT base) + set(prefix "${name}-prefix") + endif() + endif() + endif() + if(prefix) + set(tmp_default "${prefix}/tmp") + set(download_default "${prefix}/src") + set(source_default "${prefix}/src/${name}") + set(binary_default "${prefix}/src/${name}-build") + set(stamp_default "${prefix}/src/${name}-stamp") + set(install_default "${prefix}") + else() # assert(base) + set(tmp_default "${base}/tmp/${name}") + set(download_default "${base}/Download/${name}") + set(source_default "${base}/Source/${name}") + set(binary_default "${base}/Build/${name}") + set(stamp_default "${base}/Stamp/${name}") + set(install_default "${base}/Install/${name}") + endif() + get_property(build_in_source TARGET ${name} PROPERTY _EP_BUILD_IN_SOURCE) + if(build_in_source) + get_property(have_binary_dir TARGET ${name} PROPERTY _EP_BINARY_DIR SET) + if(have_binary_dir) + message(FATAL_ERROR + "External project ${name} has both BINARY_DIR and BUILD_IN_SOURCE!") + endif() + endif() + set(top "${CMAKE_CURRENT_BINARY_DIR}") + set(places stamp download source binary install tmp) + foreach(var ${places}) + string(TOUPPER "${var}" VAR) + get_property(${var}_dir TARGET ${name} PROPERTY _EP_${VAR}_DIR) + if(NOT ${var}_dir) + set(${var}_dir "${${var}_default}") + endif() + if(NOT IS_ABSOLUTE "${${var}_dir}") + get_filename_component(${var}_dir "${top}/${${var}_dir}" ABSOLUTE) + endif() + set_property(TARGET ${name} PROPERTY _EP_${VAR}_DIR "${${var}_dir}") + endforeach() + if(build_in_source) + get_property(source_dir TARGET ${name} PROPERTY _EP_SOURCE_DIR) + set_property(TARGET ${name} PROPERTY _EP_BINARY_DIR "${source_dir}") + endif() + + # Make the directories at CMake configure time *and* add a custom command + # to make them at build time. They need to exist at makefile generation + # time for Borland make and wmake so that CMake may generate makefiles + # with "cd C:\short\paths\with\no\spaces" commands in them. + # + # Additionally, the add_custom_command is still used in case somebody + # removes one of the necessary directories and tries to rebuild without + # re-running cmake. + foreach(var ${places}) + string(TOUPPER "${var}" VAR) + get_property(dir TARGET ${name} PROPERTY _EP_${VAR}_DIR) + file(MAKE_DIRECTORY "${dir}") + if(NOT EXISTS "${dir}") + message(FATAL_ERROR "dir '${dir}' does not exist after file(MAKE_DIRECTORY)") + endif() + endforeach() +endfunction(_ep_set_directories) + + +function(ExternalProject_Get_Property name) + foreach(var ${ARGN}) + string(TOUPPER "${var}" VAR) + get_property(${var} TARGET ${name} PROPERTY _EP_${VAR}) + if(NOT ${var}) + message(FATAL_ERROR "External project \"${name}\" has no ${var}") + endif() + set(${var} "${${var}}" PARENT_SCOPE) + endforeach() +endfunction(ExternalProject_Get_Property) + + +function(_ep_get_configure_command_id name cfg_cmd_id_var) + get_target_property(cmd ${name} _EP_CONFIGURE_COMMAND) + + if(cmd STREQUAL "") + # Explicit empty string means no configure step for this project + set(${cfg_cmd_id_var} "none" PARENT_SCOPE) + else() + if(NOT cmd) + # Default is "use cmake": + set(${cfg_cmd_id_var} "cmake" PARENT_SCOPE) + else() + # Otherwise we have to analyze the value: + if(cmd MATCHES "^[^;]*/configure") + set(${cfg_cmd_id_var} "configure" PARENT_SCOPE) + elseif(cmd MATCHES "^[^;]*/cmake" AND NOT cmd MATCHES ";-[PE];") + set(${cfg_cmd_id_var} "cmake" PARENT_SCOPE) + elseif(cmd MATCHES "config") + set(${cfg_cmd_id_var} "configure" PARENT_SCOPE) + else() + set(${cfg_cmd_id_var} "unknown:${cmd}" PARENT_SCOPE) + endif() + endif() + endif() +endfunction(_ep_get_configure_command_id) + + +function(_ep_get_build_command name step cmd_var) + set(cmd "${${cmd_var}}") + if(NOT cmd) + set(args) + _ep_get_configure_command_id(${name} cfg_cmd_id) + if(cfg_cmd_id STREQUAL "cmake") + # CMake project. Select build command based on generator. + get_target_property(cmake_generator ${name} _EP_CMAKE_GENERATOR) + if("${cmake_generator}" MATCHES "Make" AND + "${cmake_generator}" STREQUAL "${CMAKE_GENERATOR}") + # The project uses the same Makefile generator. Use recursive make. + set(cmd "$(MAKE)") + if(step STREQUAL "INSTALL") + set(args install) + endif() + if(step STREQUAL "TEST") + set(args test) + endif() + else() + # Drive the project with "cmake --build". + get_target_property(cmake_command ${name} _EP_CMAKE_COMMAND) + if(cmake_command) + set(cmd "${cmake_command}") + else() + set(cmd "${CMAKE_COMMAND}") + endif() + set(args --build ${binary_dir} --config ${CMAKE_CFG_INTDIR}) + if(step STREQUAL "INSTALL") + list(APPEND args --target install) + endif() + # But for "TEST" drive the project with corresponding "ctest". + if(step STREQUAL "TEST") + string(REGEX REPLACE "^(.*/)cmake([^/]*)$" "\\1ctest\\2" cmd "${cmd}") + set(args "") + endif() + endif() + else() # if(cfg_cmd_id STREQUAL "configure") + # Non-CMake project. Guess "make" and "make install" and "make test". + set(cmd "make") + if(step STREQUAL "INSTALL") + set(args install) + endif() + if(step STREQUAL "TEST") + set(args test) + endif() + endif() + + # Use user-specified arguments instead of default arguments, if any. + get_property(have_args TARGET ${name} PROPERTY _EP_${step}_ARGS SET) + if(have_args) + get_target_property(args ${name} _EP_${step}_ARGS) + endif() + + list(APPEND cmd ${args}) + endif() + + set(${cmd_var} "${cmd}" PARENT_SCOPE) +endfunction(_ep_get_build_command) + + +# This module used to use "/${CMAKE_CFG_INTDIR}" directly and produced +# makefiles with "/./" in paths for custom command dependencies. Which +# resulted in problems with parallel make -j invocations. +# +# This function was added so that the suffix (search below for ${cfgdir}) is +# only set to "/${CMAKE_CFG_INTDIR}" when ${CMAKE_CFG_INTDIR} is not going to +# be "." (multi-configuration build systems like Visual Studio and Xcode...) +# +function(_ep_get_configuration_subdir_suffix suffix_var) + set(suffix "") + if(CMAKE_CONFIGURATION_TYPES) + set(suffix "/${CMAKE_CFG_INTDIR}") + endif() + set(${suffix_var} "${suffix}" PARENT_SCOPE) +endfunction(_ep_get_configuration_subdir_suffix) + + +function(ExternalProject_Add_Step name step) + set(cmf_dir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles) + ExternalProject_Get_Property(${name} stamp_dir) + + _ep_get_configuration_subdir_suffix(cfgdir) + + add_custom_command(APPEND + OUTPUT ${cmf_dir}${cfgdir}/${name}-complete + DEPENDS ${stamp_dir}${cfgdir}/${name}-${step} + ) + _ep_parse_arguments(ExternalProject_Add_Step + ${name} _EP_${step}_ "${ARGN}") + + # Steps depending on this step. + get_property(dependers TARGET ${name} PROPERTY _EP_${step}_DEPENDERS) + foreach(depender IN LISTS dependers) + add_custom_command(APPEND + OUTPUT ${stamp_dir}${cfgdir}/${name}-${depender} + DEPENDS ${stamp_dir}${cfgdir}/${name}-${step} + ) + endforeach() + + # Dependencies on files. + get_property(depends TARGET ${name} PROPERTY _EP_${step}_DEPENDS) + + # Dependencies on steps. + get_property(dependees TARGET ${name} PROPERTY _EP_${step}_DEPENDEES) + foreach(dependee IN LISTS dependees) + list(APPEND depends ${stamp_dir}${cfgdir}/${name}-${dependee}) + endforeach() + + # The command to run. + get_property(command TARGET ${name} PROPERTY _EP_${step}_COMMAND) + if(command) + set(comment "Performing ${step} step for '${name}'") + else() + set(comment "No ${step} step for '${name}'") + endif() + get_property(work_dir TARGET ${name} PROPERTY _EP_${step}_WORKING_DIRECTORY) + + # Replace list separators. + get_property(sep TARGET ${name} PROPERTY _EP_LIST_SEPARATOR) + if(sep AND command) + string(REPLACE "${sep}" "\\;" command "${command}") + endif() + + # Replace location tags. + foreach(var comment command work_dir) + if(${var}) + foreach(dir SOURCE_DIR BINARY_DIR INSTALL_DIR TMP_DIR) + get_property(val TARGET ${name} PROPERTY _EP_${dir}) + string(REPLACE "<${dir}>" "${val}" ${var} "${${var}}") + endforeach() + endif() + endforeach() + + # Custom comment? + get_property(comment_set TARGET ${name} PROPERTY _EP_${step}_COMMENT SET) + if(comment_set) + get_property(comment TARGET ${name} PROPERTY _EP_${step}_COMMENT) + endif() + + # Run every time? + get_property(always TARGET ${name} PROPERTY _EP_${step}_ALWAYS) + if(always) + set_property(SOURCE ${stamp_dir}${cfgdir}/${name}-${step} PROPERTY SYMBOLIC 1) + set(touch) + else() + set(touch ${CMAKE_COMMAND} -E touch ${stamp_dir}${cfgdir}/${name}-${step}) + endif() + + add_custom_command( + OUTPUT ${stamp_dir}${cfgdir}/${name}-${step} + COMMENT ${comment} + COMMAND ${command} + COMMAND ${touch} + DEPENDS ${depends} + WORKING_DIRECTORY ${work_dir} + VERBATIM + ) +endfunction(ExternalProject_Add_Step) + + +function(_ep_add_mkdir_command name) + ExternalProject_Get_Property(${name} + source_dir binary_dir install_dir stamp_dir download_dir tmp_dir) + + _ep_get_configuration_subdir_suffix(cfgdir) + + ExternalProject_Add_Step(${name} mkdir + COMMENT "Creating directories for '${name}'" + COMMAND ${CMAKE_COMMAND} -E make_directory ${source_dir} + COMMAND ${CMAKE_COMMAND} -E make_directory ${binary_dir} + COMMAND ${CMAKE_COMMAND} -E make_directory ${install_dir} + COMMAND ${CMAKE_COMMAND} -E make_directory ${tmp_dir} + COMMAND ${CMAKE_COMMAND} -E make_directory ${stamp_dir}${cfgdir} + COMMAND ${CMAKE_COMMAND} -E make_directory ${download_dir} + ) +endfunction(_ep_add_mkdir_command) + + +function(_ep_add_download_command name) + ExternalProject_Get_Property(${name} source_dir stamp_dir download_dir tmp_dir) + + get_property(cmd_set TARGET ${name} PROPERTY _EP_DOWNLOAD_COMMAND SET) + get_property(cmd TARGET ${name} PROPERTY _EP_DOWNLOAD_COMMAND) + get_property(cvs_repository TARGET ${name} PROPERTY _EP_CVS_REPOSITORY) + get_property(svn_repository TARGET ${name} PROPERTY _EP_SVN_REPOSITORY) + get_property(url TARGET ${name} PROPERTY _EP_URL) + + # TODO: Perhaps file:// should be copied to download dir before extraction. + string(REGEX REPLACE "^file://" "" url "${url}") + + set(depends) + set(comment) + set(work_dir) + + if(cmd_set) + set(work_dir ${download_dir}) + elseif(cvs_repository) + find_package(CVS) + if(NOT CVS_EXECUTABLE) + message(FATAL_ERROR "error: could not find cvs for checkout of ${name}") + endif() + + get_target_property(cvs_module ${name} _EP_CVS_MODULE) + if(NOT cvs_module) + message(FATAL_ERROR "error: no CVS_MODULE") + endif() + + get_property(cvs_tag TARGET ${name} PROPERTY _EP_CVS_TAG) + + set(repository ${cvs_repository}) + set(module ${cvs_module}) + set(tag ${cvs_tag}) + configure_file( + "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in" + "${stamp_dir}/${name}-cvsinfo.txt" + @ONLY + ) + + get_filename_component(src_name "${source_dir}" NAME) + get_filename_component(work_dir "${source_dir}" PATH) + set(comment "Performing download step (CVS checkout) for '${name}'") + set(cmd ${CVS_EXECUTABLE} -d ${cvs_repository} -q co ${cvs_tag} -d ${src_name} ${cvs_module}) + list(APPEND depends ${stamp_dir}/${name}-cvsinfo.txt) + elseif(svn_repository) + find_package(Subversion) + if(NOT Subversion_SVN_EXECUTABLE) + message(FATAL_ERROR "error: could not find svn for checkout of ${name}") + endif() + + get_property(svn_revision TARGET ${name} PROPERTY _EP_SVN_REVISION) + + set(repository ${svn_repository}) + set(module) + set(tag ${svn_revision}) + configure_file( + "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in" + "${stamp_dir}/${name}-svninfo.txt" + @ONLY + ) + + get_filename_component(src_name "${source_dir}" NAME) + get_filename_component(work_dir "${source_dir}" PATH) + set(comment "Performing download step (SVN checkout) for '${name}'") + set(cmd ${Subversion_SVN_EXECUTABLE} co ${svn_repository} ${svn_revision} ${src_name}) + list(APPEND depends ${stamp_dir}/${name}-svninfo.txt) + elseif(url) + get_filename_component(work_dir "${source_dir}" PATH) + set(repository "external project URL") + set(module "${url}") + set(tag "") + configure_file( + "${CMAKE_ROOT}/Modules/RepositoryInfo.txt.in" + "${stamp_dir}/${name}-urlinfo.txt" + @ONLY + ) + list(APPEND depends ${stamp_dir}/${name}-urlinfo.txt) + if(IS_DIRECTORY "${url}") + get_filename_component(abs_dir "${url}" ABSOLUTE) + set(comment "Performing download step (DIR copy) for '${name}'") + set(cmd ${CMAKE_COMMAND} -E remove_directory ${source_dir} + COMMAND ${CMAKE_COMMAND} -E copy_directory ${abs_dir} ${source_dir}) + else() + if("${url}" MATCHES "^[a-z]+://") + # TODO: Should download and extraction be different steps? + string(REGEX MATCH "[^/]*$" fname "${url}") + if(NOT "${fname}" MATCHES "\\.(tar|tgz|tar\\.gz)$") + message(FATAL_ERROR "Could not extract tarball filename from url:\n ${url}") + endif() + set(file ${download_dir}/${fname}) + _ep_write_downloadfile_script("${stamp_dir}/download-${name}.cmake" "${url}" "${file}" "") + set(cmd ${CMAKE_COMMAND} -P ${stamp_dir}/download-${name}.cmake + COMMAND) + set(comment "Performing download step (download and extract) for '${name}'") + else() + set(file "${url}") + set(comment "Performing download step (extract) for '${name}'") + endif() + # TODO: Support other archive formats. + _ep_write_extractfile_script("${stamp_dir}/extract-${name}.cmake" "${file}" "${tmp_dir}" "${source_dir}") + list(APPEND cmd ${CMAKE_COMMAND} -P ${stamp_dir}/extract-${name}.cmake) + endif() + else() + message(SEND_ERROR "error: no download info for '${name}' -- please specify existing SOURCE_DIR or one of URL, CVS_REPOSITORY and CVS_MODULE, SVN_REPOSITORY or DOWNLOAD_COMMAND") + endif() + + ExternalProject_Add_Step(${name} download + COMMENT ${comment} + COMMAND ${cmd} + WORKING_DIRECTORY ${work_dir} + DEPENDS ${depends} + DEPENDEES mkdir + ) +endfunction(_ep_add_download_command) + + +function(_ep_add_update_command name) + ExternalProject_Get_Property(${name} source_dir) + + get_property(cmd_set TARGET ${name} PROPERTY _EP_UPDATE_COMMAND SET) + get_property(cmd TARGET ${name} PROPERTY _EP_UPDATE_COMMAND) + get_property(cvs_repository TARGET ${name} PROPERTY _EP_CVS_REPOSITORY) + get_property(svn_repository TARGET ${name} PROPERTY _EP_SVN_REPOSITORY) + + set(work_dir) + set(comment) + set(always) + + if(cmd_set) + set(work_dir ${source_dir}) + elseif(cvs_repository) + if(NOT CVS_EXECUTABLE) + message(FATAL_ERROR "error: could not find cvs for update of ${name}") + endif() + set(work_dir ${source_dir}) + set(comment "Performing update step (CVS update) for '${name}'") + get_property(cvs_tag TARGET ${name} PROPERTY _EP_CVS_TAG) + set(cmd ${CVS_EXECUTABLE} -d ${cvs_repository} -q up -dP ${cvs_tag}) + set(always 1) + elseif(svn_repository) + if(NOT Subversion_SVN_EXECUTABLE) + message(FATAL_ERROR "error: could not find svn for update of ${name}") + endif() + set(work_dir ${source_dir}) + set(comment "Performing update step (SVN update) for '${name}'") + get_property(svn_revision TARGET ${name} PROPERTY _EP_SVN_REVISION) + set(cmd ${Subversion_SVN_EXECUTABLE} up ${svn_revision}) + set(always 1) + endif() + + ExternalProject_Add_Step(${name} update + COMMENT ${comment} + COMMAND ${cmd} + ALWAYS ${always} + WORKING_DIRECTORY ${work_dir} + DEPENDEES download + ) +endfunction(_ep_add_update_command) + + +function(_ep_add_patch_command name) + ExternalProject_Get_Property(${name} source_dir) + + get_property(cmd_set TARGET ${name} PROPERTY _EP_PATCH_COMMAND SET) + get_property(cmd TARGET ${name} PROPERTY _EP_PATCH_COMMAND) + + set(work_dir) + + if(cmd_set) + set(work_dir ${source_dir}) + endif() + + ExternalProject_Add_Step(${name} patch + COMMAND ${cmd} + WORKING_DIRECTORY ${work_dir} + DEPENDEES download + ) +endfunction(_ep_add_patch_command) + + +# TODO: Make sure external projects use the proper compiler +function(_ep_add_configure_command name) + ExternalProject_Get_Property(${name} source_dir binary_dir) + + _ep_get_configuration_subdir_suffix(cfgdir) + + # Depend on other external projects (file-level). + set(file_deps) + get_property(deps TARGET ${name} PROPERTY _EP_DEPENDS) + foreach(dep IN LISTS deps) + get_property(dep_stamp_dir TARGET ${dep} PROPERTY _EP_STAMP_DIR) + list(APPEND file_deps ${dep_stamp_dir}${cfgdir}/${dep}-done) + endforeach() + + get_property(cmd_set TARGET ${name} PROPERTY _EP_CONFIGURE_COMMAND SET) + if(cmd_set) + get_property(cmd TARGET ${name} PROPERTY _EP_CONFIGURE_COMMAND) + else() + get_target_property(cmake_command ${name} _EP_CMAKE_COMMAND) + if(cmake_command) + set(cmd "${cmake_command}") + else() + set(cmd "${CMAKE_COMMAND}") + endif() + + get_property(cmake_args TARGET ${name} PROPERTY _EP_CMAKE_ARGS) + list(APPEND cmd ${cmake_args}) + + get_target_property(cmake_generator ${name} _EP_CMAKE_GENERATOR) + if(cmake_generator) + list(APPEND cmd "-G${cmake_generator}" "${source_dir}") + else() + list(APPEND cmd "-G${CMAKE_GENERATOR}" "${source_dir}") + endif() + endif() + + ExternalProject_Add_Step(${name} configure + COMMAND ${cmd} + WORKING_DIRECTORY ${binary_dir} + DEPENDEES update patch + DEPENDS ${file_deps} + ) +endfunction(_ep_add_configure_command) + + +function(_ep_add_build_command name) + ExternalProject_Get_Property(${name} binary_dir) + + get_property(cmd_set TARGET ${name} PROPERTY _EP_BUILD_COMMAND SET) + if(cmd_set) + get_property(cmd TARGET ${name} PROPERTY _EP_BUILD_COMMAND) + else() + _ep_get_build_command(${name} BUILD cmd) + endif() + + ExternalProject_Add_Step(${name} build + COMMAND ${cmd} + WORKING_DIRECTORY ${binary_dir} + DEPENDEES configure + ) +endfunction(_ep_add_build_command) + + +function(_ep_add_install_command name) + ExternalProject_Get_Property(${name} binary_dir) + + get_property(cmd_set TARGET ${name} PROPERTY _EP_INSTALL_COMMAND SET) + if(cmd_set) + get_property(cmd TARGET ${name} PROPERTY _EP_INSTALL_COMMAND) + else() + _ep_get_build_command(${name} INSTALL cmd) + endif() + + ExternalProject_Add_Step(${name} install + COMMAND ${cmd} + WORKING_DIRECTORY ${binary_dir} + DEPENDEES build + ) +endfunction(_ep_add_install_command) + + +function(_ep_add_test_command name) + ExternalProject_Get_Property(${name} binary_dir) + + get_property(before TARGET ${name} PROPERTY _EP_TEST_BEFORE_INSTALL) + get_property(after TARGET ${name} PROPERTY _EP_TEST_AFTER_INSTALL) + get_property(cmd_set TARGET ${name} PROPERTY _EP_TEST_COMMAND SET) + + # Only actually add the test step if one of the test related properties is + # explicitly set. (i.e. the test step is omitted unless requested...) + # + if(cmd_set OR before OR after) + if(cmd_set) + get_property(cmd TARGET ${name} PROPERTY _EP_TEST_COMMAND) + else() + _ep_get_build_command(${name} TEST cmd) + endif() + + if(before) + set(dep_args DEPENDEES build DEPENDERS install) + else() + set(dep_args DEPENDEES install) + endif() + + ExternalProject_Add_Step(${name} test + COMMAND ${cmd} + WORKING_DIRECTORY ${binary_dir} + ${dep_args} + ) + endif() +endfunction(_ep_add_test_command) + + +function(ExternalProject_Add name) + _ep_get_configuration_subdir_suffix(cfgdir) + + # Add a custom target for the external project. + set(cmf_dir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles) + add_custom_target(${name} ALL DEPENDS ${cmf_dir}${cfgdir}/${name}-complete) + set_property(TARGET ${name} PROPERTY _EP_IS_EXTERNAL_PROJECT 1) + _ep_parse_arguments(ExternalProject_Add ${name} _EP_ "${ARGN}") + _ep_set_directories(${name}) + ExternalProject_Get_Property(${name} stamp_dir) + + # The 'complete' step depends on all other steps and creates a + # 'done' mark. A dependent external project's 'configure' step + # depends on the 'done' mark so that it rebuilds when this project + # rebuilds. It is important that 'done' is not the output of any + # custom command so that CMake does not propagate build rules to + # other external project targets. + add_custom_command( + OUTPUT ${cmf_dir}${cfgdir}/${name}-complete + COMMENT "Completed '${name}'" + COMMAND ${CMAKE_COMMAND} -E make_directory ${cmf_dir}${cfgdir} + COMMAND ${CMAKE_COMMAND} -E touch ${cmf_dir}${cfgdir}/${name}-complete + COMMAND ${CMAKE_COMMAND} -E touch ${stamp_dir}${cfgdir}/${name}-done + DEPENDS ${stamp_dir}${cfgdir}/${name}-install + VERBATIM + ) + + + # Depend on other external projects (target-level). + get_property(deps TARGET ${name} PROPERTY _EP_DEPENDS) + foreach(arg IN LISTS deps) + add_dependencies(${name} ${arg}) + endforeach() + + # Set up custom build steps based on the target properties. + # Each step depends on the previous one. + # + # The target depends on the output of the final step. + # (Already set up above in the DEPENDS of the add_custom_target command.) + # + _ep_add_mkdir_command(${name}) + _ep_add_download_command(${name}) + _ep_add_update_command(${name}) + _ep_add_patch_command(${name}) + _ep_add_configure_command(${name}) + _ep_add_build_command(${name}) + _ep_add_install_command(${name}) + + # Test is special in that it might depend on build, or it might depend + # on install. + # + _ep_add_test_command(${name}) +endfunction(ExternalProject_Add) diff --git a/Modules/FLTKCompatibility.cmake b/Modules/FLTKCompatibility.cmake index 0a4226063..77ca47b2a 100644 --- a/Modules/FLTKCompatibility.cmake +++ b/Modules/FLTKCompatibility.cmake @@ -1 +1,15 @@ + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + INCLUDE(CheckIncludeFile) diff --git a/Modules/FeatureSummary.cmake b/Modules/FeatureSummary.cmake index 788ad02a3..5373852fa 100644 --- a/Modules/FeatureSummary.cmake +++ b/Modules/FeatureSummary.cmake @@ -2,21 +2,35 @@ # # PRINT_ENABLED_FEATURES() # Print a summary of all enabled features. By default all successfull -# FIND_PACKAGE() calls will appear here, except the ones which used the QUIET keyword. -# Additional features can be added by appending an entry to the global ENABLED_FEATURES -# property. If SET_FEATURE_INFO() is used for that feature, the output will be much -# more informative. +# FIND_PACKAGE() calls will appear here, except the ones which used the +# QUIET keyword. Additional features can be added by appending an entry +# to the global ENABLED_FEATURES property. If SET_FEATURE_INFO() is +# used for that feature, the output will be much more informative. # # PRINT_DISABLED_FEATURES() -# Same as PRINT_ENABLED_FEATURES(), but for disabled features. It can be extended -# the same way by adding to the global property DISABLED_FEATURES. +# Same as PRINT_ENABLED_FEATURES(), but for disabled features. It can +# be extended the same way by adding to the global property +# DISABLED_FEATURES. # # SET_FEATURE_INFO(NAME DESCRIPTION [URL [COMMENT] ] ) # Use this macro to set up information about the named feature, which will # then be displayed by PRINT_ENABLED/DISABLED_FEATURES(). -# Example: SET_FEATURE_INFO(LibXml2 "XML processing library." "http://xmlsoft.org/") +# Example: SET_FEATURE_INFO(LibXml2 "XML processing library." +# "http://xmlsoft.org/") # +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) MACRO(SET_FEATURE_INFO _name _desc) SET(_url "${ARGV2}") diff --git a/Modules/FindALSA.cmake b/Modules/FindALSA.cmake new file mode 100644 index 000000000..7deefafc1 --- /dev/null +++ b/Modules/FindALSA.cmake @@ -0,0 +1,46 @@ +# - Find alsa +# Find the alsa libraries (asound) +# +# This module defines the following variables: +# ALSA_FOUND - True if ALSA_INCLUDE_DIR & ALSA_LIBRARY are found +# ALSA_LIBRARIES - Set when ALSA_LIBRARY is found +# ALSA_INCLUDE_DIRS - Set when ALSA_INCLUDE_DIR is found +# +# ALSA_INCLUDE_DIR - where to find asoundlib.h, etc. +# ALSA_LIBRARY - the asound library +# + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2009 Philip Lowman +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +find_path(ALSA_INCLUDE_DIR NAMES asoundlib.h + PATH_SUFFIXES alsa + DOC "The ALSA (asound) include directory" +) + +find_library(ALSA_LIBRARY NAMES asound + DOC "The ALSA (asound) library" +) + +# handle the QUIETLY and REQUIRED arguments and set ALSA_FOUND to TRUE if +# all listed variables are TRUE +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(ALSA DEFAULT_MSG ALSA_LIBRARY ALSA_INCLUDE_DIR) + +if(ALSA_FOUND) + set( ALSA_LIBRARIES ${ALSA_LIBRARY} ) + set( ALSA_INCLUDE_DIRS ${ALSA_INCLUDE_DIR} ) +endif() + +mark_as_advanced(ALSA_INCLUDE_DIR ALSA_LIBRARY) diff --git a/Modules/FindASPELL.cmake b/Modules/FindASPELL.cmake index d43ea9d8e..c11c2e33b 100644 --- a/Modules/FindASPELL.cmake +++ b/Modules/FindASPELL.cmake @@ -6,11 +6,19 @@ # ASPELL_LIBRARIES - The libraries needed to use ASPELL # ASPELL_DEFINITIONS - Compiler switches required for using ASPELL -# Copyright (c) 2006, Alexander Neundorf, +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Alexander Neundorf # -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) IF (ASPELL_INCLUDE_DIR AND ASPELL_LIBRARIES) # Already in cache, be silent diff --git a/Modules/FindAVIFile.cmake b/Modules/FindAVIFile.cmake index f393bc33f..ff140f64c 100644 --- a/Modules/FindAVIFile.cmake +++ b/Modules/FindAVIFile.cmake @@ -9,18 +9,28 @@ # AVIFILE_DEFINITIONS, definitions to use when compiling # AVIFILE_FOUND, If false, don't try to use AVIFILE +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF (UNIX) FIND_PATH(AVIFILE_INCLUDE_DIR avifile.h /usr/local/avifile/include /usr/local/include/avifile - /usr/include ) FIND_LIBRARY(AVIFILE_AVIPLAY_LIBRARY aviplay /usr/local/avifile/lib - /usr/local/lib - /usr/lib ) ENDIF (UNIX) @@ -37,3 +47,4 @@ IF(AVIFILE_INCLUDE_DIR) ENDIF(AVIFILE_INCLUDE_DIR) +MARK_AS_ADVANCED(AVIFILE_INCLUDE_DIR AVIFILE_AVIPLAY_LIBRARY) diff --git a/Modules/FindBISON.cmake b/Modules/FindBISON.cmake new file mode 100644 index 000000000..fbee50a3f --- /dev/null +++ b/Modules/FindBISON.cmake @@ -0,0 +1,154 @@ +# - Find bison executable and provides macros to generate custom build rules +# The module defines the following variables: +# +# BISON_EXECUTABLE - path to the bison program +# BISON_VERSION - version of bison +# BISON_FOUND - true if the program was found +# +# If bison is found, the module defines the macros: +# BISON_TARGET( [VERBOSE ] +# [COMPILE_FLAGS ]) +# which will create a custom rule to generate a parser. is +# the path to a yacc file. is the name of the source file +# generated by bison. A header file is also be generated, and contains +# the token list. If COMPILE_FLAGS option is specified, the next +# parameter is added in the bison command line. if VERBOSE option is +# specified, is created and contains verbose descriptions of the +# grammar and parser. The macro defines a set of variables: +# BISON_${Name}_DEFINED - true is the macro ran successfully +# BISON_${Name}_INPUT - The input source file, an alias for +# BISON_${Name}_OUTPUT_SOURCE - The source file generated by bison +# BISON_${Name}_OUTPUT_HEADER - The header file generated by bison +# BISON_${Name}_OUTPUTS - The sources files generated by bison +# BISON_${Name}_COMPILE_FLAGS - Options used in the bison command line +# +#==================================================================== +# Example: +# +# find_package(BISON) +# BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp) +# add_executable(Foo main.cpp ${BISON_MyParser_OUTPUTS}) +#==================================================================== + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2006 Tristan Carel +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +FIND_PROGRAM(BISON_EXECUTABLE bison DOC "path to the bison executable") +MARK_AS_ADVANCED(BISON_EXECUTABLE) + +IF(BISON_EXECUTABLE) + + EXECUTE_PROCESS(COMMAND ${BISON_EXECUTABLE} --version + OUTPUT_VARIABLE BISON_version_output + ERROR_VARIABLE BISON_version_error + RESULT_VARIABLE BISON_version_result + OUTPUT_STRIP_TRAILING_WHITESPACE) + IF(NOT ${BISON_version_result} EQUAL 0) + MESSAGE(SEND_ERROR "Command \"${BISON_EXECUTABLE} --version\" failed with output:\n${BISON_version_error}") + ELSE() + STRING(REGEX REPLACE "^bison \\(GNU Bison\\) ([^\n]+)\n.*" "\\1" + BISON_VERSION "${BISON_version_output}") + ENDIF() + + # internal macro + MACRO(BISON_TARGET_option_verbose Name BisonOutput filename) + LIST(APPEND BISON_TARGET_cmdopt "--verbose") + GET_FILENAME_COMPONENT(BISON_TARGET_output_path "${BisonOutput}" PATH) + GET_FILENAME_COMPONENT(BISON_TARGET_output_name "${BisonOutput}" NAME_WE) + ADD_CUSTOM_COMMAND(OUTPUT ${filename} + COMMAND ${CMAKE_COMMAND} + ARGS -E copy + "${BISON_TARGET_output_path}/${BISON_TARGET_output_name}.output" + "${filename}" + DEPENDS + "${BISON_TARGET_output_path}/${BISON_TARGET_output_name}.output" + COMMENT "[BISON][${Name}] Copying bison verbose table to ${filename}" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) + SET(BISON_${Name}_VERBOSE_FILE ${filename}) + LIST(APPEND BISON_TARGET_extraoutputs + "${BISON_TARGET_output_path}/${BISON_TARGET_output_name}.output") + ENDMACRO(BISON_TARGET_option_verbose) + + # internal macro + MACRO(BISON_TARGET_option_extraopts Options) + SET(BISON_TARGET_extraopts "${Options}") + SEPARATE_ARGUMENTS(BISON_TARGET_extraopts) + LIST(APPEND BISON_TARGET_cmdopt ${BISON_TARGET_extraopts}) + ENDMACRO(BISON_TARGET_option_extraopts) + + #============================================================ + # BISON_TARGET (public macro) + #============================================================ + # + MACRO(BISON_TARGET Name BisonInput BisonOutput) + SET(BISON_TARGET_output_header "") + SET(BISON_TARGET_command_opt "") + SET(BISON_TARGET_outputs "${BisonOutput}") + IF(NOT ${ARGC} EQUAL 3 AND NOT ${ARGC} EQUAL 5 AND NOT ${ARGC} EQUAL 7) + MESSAGE(SEND_ERROR "Usage") + ELSE() + # Parsing parameters + IF(${ARGC} GREATER 5 OR ${ARGC} EQUAL 5) + IF("${ARGV3}" STREQUAL "VERBOSE") + BISON_TARGET_option_verbose(${Name} ${BisonOutput} "${ARGV4}") + ENDIF() + IF("${ARGV3}" STREQUAL "COMPILE_FLAGS") + BISON_TARGET_option_extraopts("${ARGV4}") + ENDIF() + ENDIF() + + IF(${ARGC} EQUAL 7) + IF("${ARGV5}" STREQUAL "VERBOSE") + BISON_TARGET_option_verbose(${Name} ${BisonOutput} "${ARGV6}") + ENDIF() + + IF("${ARGV5}" STREQUAL "COMPILE_FLAGS") + BISON_TARGET_option_extraopts("${ARGV6}") + ENDIF() + ENDIF() + + # Header's name generated by bison (see option -d) + LIST(APPEND BISON_TARGET_cmdopt "-d") + STRING(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\2" _fileext "${ARGV2}") + STRING(REPLACE "c" "h" _fileext ${_fileext}) + STRING(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\1${_fileext}" + BISON_${Name}_OUTPUT_HEADER "${ARGV2}") + LIST(APPEND BISON_TARGET_outputs "${BISON_${Name}_OUTPUT_HEADER}") + + ADD_CUSTOM_COMMAND(OUTPUT ${BISON_TARGET_outputs} + ${BISON_TARGET_extraoutputs} + COMMAND ${BISON_EXECUTABLE} + ARGS ${BISON_TARGET_cmdopt} -o ${ARGV2} ${ARGV1} + DEPENDS ${ARGV1} + COMMENT "[BISON][${Name}] Building parser with bison ${BISON_VERSION}" + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + + # define target variables + SET(BISON_${Name}_DEFINED TRUE) + SET(BISON_${Name}_INPUT ${ARGV1}) + SET(BISON_${Name}_OUTPUTS ${BISON_TARGET_outputs}) + SET(BISON_${Name}_COMPILE_FLAGS ${BISON_TARGET_cmdopt}) + SET(BISON_${Name}_OUTPUT_SOURCE "${BisonOutput}") + + ENDIF(NOT ${ARGC} EQUAL 3 AND NOT ${ARGC} EQUAL 5 AND NOT ${ARGC} EQUAL 7) + ENDMACRO(BISON_TARGET) + # + #============================================================ + +ENDIF(BISON_EXECUTABLE) + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(BISON DEFAULT_MSG BISON_EXECUTABLE) + +# FindBISON.cmake ends here diff --git a/Modules/FindBLAS.cmake b/Modules/FindBLAS.cmake index b821a2325..be41736ae 100644 --- a/Modules/FindBLAS.cmake +++ b/Modules/FindBLAS.cmake @@ -18,13 +18,27 @@ # is found # BLA_STATIC if set on this determines what kind of linkage we do (static) # BLA_VENDOR if set checks only the specified vendor, if not set checks -# all the posibilities +# all the possibilities # BLA_F95 if set on tries to find the f95 interfaces for BLAS/LAPACK ########## ### List of vendors (BLA_VENDOR) valid in this module ## ATLAS, PhiPACK,CXML,DXML,SunPerf,SCSL,SGIMATH,IBMESSL,Intel10_32 (intel mkl v10 32 bit),Intel10_64lp (intel mkl v10 64 bit,lp thread model, lp64 model), ## Intel( older versions of mkl 32 and 64 bit), ACML,Apple, NAS, Generic # C/CXX should be enabled to use Intel mkl + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + get_property(_LANGUAGES_ GLOBAL PROPERTY ENABLED_LANGUAGES) if(NOT _LANGUAGES_ MATCHES Fortran) if(BLAS_FIND_REQUIRED) diff --git a/Modules/FindBZip2.cmake b/Modules/FindBZip2.cmake index 584203844..c969e4388 100644 --- a/Modules/FindBZip2.cmake +++ b/Modules/FindBZip2.cmake @@ -7,11 +7,19 @@ # BZIP2_DEFINITIONS - Compiler switches required for using BZip2 # BZIP2_NEED_PREFIX - this is set if the functions are prefixed with BZ2_ -# Copyright (c) 2006, Alexander Neundorf, +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Alexander Neundorf # -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) IF (BZIP2_INCLUDE_DIR AND BZIP2_LIBRARIES) SET(BZip2_FIND_QUIETLY TRUE) diff --git a/Modules/FindBoost.cmake b/Modules/FindBoost.cmake index ce6eb5b52..93d4683e9 100644 --- a/Modules/FindBoost.cmake +++ b/Modules/FindBoost.cmake @@ -57,7 +57,8 @@ # # Currently this module searches for the following version numbers: # 1.33, 1.33.0, 1.33.1, 1.34, 1.34.0, 1.34.1, 1.35, 1.35.0, 1.35.1, -# 1.36, 1.36.0, 1.36.1, 1.37, 1.37.0, 1.38, 1.38.0 +# 1.36, 1.36.0, 1.36.1, 1.37, 1.37.0, 1.38, 1.38.0, 1.39, 1.39.0, +# 1.40, 1.40.0 # # NOTE: If you add a new major 1.x version in Boost_ADDITIONAL_VERSIONS you should # add both 1.x and 1.x.0 as shown above. Official Boost include directories @@ -66,7 +67,7 @@ # # SET(Boost_ADDITIONAL_VERSIONS "0.99" "0.99.0" "1.78" "1.78.0") # -# ============================================================================ +# ===================================== ============= ======================== # # Variables used by this module, they can change the default behaviour and # need to be set before calling find_package: @@ -133,7 +134,7 @@ # Boost_SUBMINOR_VERSION subminor version number of boost # # Boost_LIB_DIAGNOSTIC_DEFINITIONS [WIN32 Only] You can call -# add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINTIIONS}) +# add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS}) # to have diagnostic information about Boost's # automatic linking outputted during compilation time. # @@ -146,21 +147,23 @@ # Boost_${COMPONENT}_LIBRARY Contains the libraries for the specified Boost # "component" (includes debug and optimized keywords # when needed). + +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006-2008 Andreas Schneider +# Copyright 2007 Wengo +# Copyright 2007 Mike Jackson +# Copyright 2008 Andreas Pakulat # -# ===================================================================== -# -# -# Copyright (c) 2006-2008 Andreas Schneider -# Copyright (c) 2007 Wengo -# Copyright (c) 2007 Mike Jackson -# Copyright (c) 2008 Andreas Pakulat -# -# Redistribution AND use is allowed according to the terms of the New -# BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. # - - +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) #------------------------------------------------------------------------------- # FindBoost functions & macros @@ -271,7 +274,7 @@ else(Boost_FIND_VERSION_EXACT) # The user has not requested an exact version. Among known # versions, find those that are acceptable to the user request. set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS} - "1.38.0" "1.38" "1.37.0" "1.37" + "1.40.0" "1.40" "1.39.0" "1.39" "1.38.0" "1.38" "1.37.0" "1.37" "1.36.1" "1.36.0" "1.36" "1.35.1" "1.35.0" "1.35" "1.34.1" "1.34.0" "1.34" "1.33.1" "1.33.0" "1.33") set(_boost_TEST_VERSIONS) @@ -380,6 +383,7 @@ ELSE (_boost_IN_CACHE) SET(_boost_INCLUDE_SEARCH_DIRS C:/boost/include C:/boost + "$ENV{ProgramFiles}/boost/include" "$ENV{ProgramFiles}/boost" /sw/local/include ) @@ -543,7 +547,14 @@ ELSE (_boost_IN_CACHE) # NOTE: this is not perfect yet, if you experience any issues # please report them and use the Boost_COMPILER variable # to work around the problems. - if (MSVC90) + if("${CMAKE_CXX_COMPILER}" MATCHES "icl" + OR "${CMAKE_CXX_COMPILER}" MATCHES "icpc") + if(WIN32) + set (_boost_COMPILER "-iw") + else() + set (_boost_COMPILER "-il") + endif() + elseif (MSVC90) SET (_boost_COMPILER "-vc90") elseif (MSVC80) SET (_boost_COMPILER "-vc80") @@ -555,13 +566,8 @@ ELSE (_boost_IN_CACHE) SET (_boost_COMPILER "-vc6") # yes, this is correct elseif (BORLAND) SET (_boost_COMPILER "-bcb") - elseif("${CMAKE_CXX_COMPILER}" MATCHES "icl" - OR "${CMAKE_CXX_COMPILER}" MATCHES "icpc") - if(WIN32) - set (_boost_COMPILER "-iw") - else() - set (_boost_COMPILER "-il") - endif() + elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "SunPro") + set(_boost_COMPILER "-sw") elseif (MINGW) if(${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION} VERSION_LESS 1.34) SET(_boost_COMPILER "-mgw") # no GCC version encoding prior to 1.34 @@ -616,9 +622,10 @@ ELSE (_boost_IN_CACHE) SET( _boost_STATIC_TAG "") set( _boost_ABI_TAG "") IF (WIN32) - IF(MSVC) + IF(MSVC OR "${CMAKE_CXX_COMPILER}" MATCHES "icl" + OR "${CMAKE_CXX_COMPILER}" MATCHES "icpc") SET (_boost_ABI_TAG "g") - ENDIF(MSVC) + ENDIF() IF( Boost_USE_STATIC_LIBS ) SET( _boost_STATIC_TAG "-s") ENDIF( Boost_USE_STATIC_LIBS ) @@ -634,11 +641,15 @@ ELSE (_boost_IN_CACHE) # ------------------------------------------------------------------------ # Begin finding boost libraries # ------------------------------------------------------------------------ - + SET(_boost_LIBRARIES_SEARCH_DIRS + ${Boost_INCLUDE_DIR}/lib + ${Boost_INCLUDE_DIR}/../lib C:/boost/lib C:/boost "$ENV{ProgramFiles}/boost/boost_${Boost_MAJOR_VERSION}_${Boost_MINOR_VERSION}_${Boost_SUBMINOR_VERSION}/lib" + "$ENV{ProgramFiles}/boost/boost_${Boost_MAJOR_VERSION}_${Boost_MINOR_VERSION}/lib" + "$ENV{ProgramFiles}/boost/lib" "$ENV{ProgramFiles}/boost" /sw/local/lib ) diff --git a/Modules/FindBullet.cmake b/Modules/FindBullet.cmake new file mode 100644 index 000000000..fe58f6045 --- /dev/null +++ b/Modules/FindBullet.cmake @@ -0,0 +1,83 @@ +# - Try to find the Bullet physics engine +# +# This module defines the following variables +# +# BULLET_FOUND - Was bullet found +# BULLET_INCLUDE_DIRS - the Bullet include directories +# BULLET_LIBRARIES - Link to this, by default it includes +# all bullet components (Dynamics, +# Collision, LinearMath, & SoftBody) +# +# This module accepts the following variables +# +# BULLET_ROOT - Can be set to bullet install path or Windows build path +# + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2009 Philip Lowman +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +macro(_FIND_BULLET_LIBRARY _var) + find_library(${_var} + NAMES + ${ARGN} + PATHS + ${BULLET_ROOT} + ${BULLET_ROOT}/out/release8/libs + ${BULLET_ROOT}/out/debug8/libs + PATH_SUFFIXES lib + ) + mark_as_advanced(${_var}) +endmacro() + +macro(_BULLET_APPEND_LIBRARIES _list _release) + set(_debug ${_release}_DEBUG) + if(${_debug}) + set(${_list} ${${_list}} optimized ${${_release}} debug ${${_debug}}) + else() + set(${_list} ${${_list}} ${${_release}}) + endif() +endmacro() + +find_path(BULLET_INCLUDE_DIR NAMES btBulletCollisionCommon.h + PATHS + ${BULLET_ROOT}/include + ${BULLET_ROOT}/src +) + +# Find the libraries + +_FIND_BULLET_LIBRARY(BULLET_DYNAMICS_LIBRARY BulletDynamics) +_FIND_BULLET_LIBRARY(BULLET_DYNAMICS_LIBRARY_DEBUG BulletDynamics_d) +_FIND_BULLET_LIBRARY(BULLET_COLLISION_LIBRARY BulletCollision) +_FIND_BULLET_LIBRARY(BULLET_COLLISION_LIBRARY_DEBUG BulletCollision_d) +_FIND_BULLET_LIBRARY(BULLET_MATH_LIBRARY LinearMath BulletMath) +_FIND_BULLET_LIBRARY(BULLET_MATH_LIBRARY_DEBUG LinearMath_d BulletMath_d) +_FIND_BULLET_LIBRARY(BULLET_SOFTBODY_LIBRARY BulletSoftBody) +_FIND_BULLET_LIBRARY(BULLET_SOFTBODY_LIBRARY_DEBUG BulletSoftBody_d) + + +# handle the QUIETLY and REQUIRED arguments and set BULLET_FOUND to TRUE if +# all listed variables are TRUE +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Bullet DEFAULT_MSG + BULLET_DYNAMICS_LIBRARY BULLET_COLLISION_LIBRARY BULLET_MATH_LIBRARY + BULLET_SOFTBODY_LIBRARY BULLET_INCLUDE_DIR) + +set(BULLET_INCLUDE_DIRS ${BULLET_INCLUDE_DIR}) +if(BULLET_FOUND) + _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_DYNAMICS_LIBRARY) + _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_COLLISION_LIBRARY) + _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_MATH_LIBRARY) + _BULLET_APPEND_LIBRARIES(BULLET_LIBRARIES BULLET_SOFTBODY_LIBRARY) +endif() diff --git a/Modules/FindCABLE.cmake b/Modules/FindCABLE.cmake index 5bcbc67f8..938c80590 100644 --- a/Modules/FindCABLE.cmake +++ b/Modules/FindCABLE.cmake @@ -10,6 +10,19 @@ # ${CABLE_TCL_LIBRARY}. You should also add ${CABLE_INCLUDE_DIR} as # an include directory. +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF(NOT CABLE) FIND_PATH(CABLE_BUILD_DIR cableVersion.h) ENDIF(NOT CABLE) diff --git a/Modules/FindCUDA.cmake b/Modules/FindCUDA.cmake new file mode 100644 index 000000000..f615e0d24 --- /dev/null +++ b/Modules/FindCUDA.cmake @@ -0,0 +1,1225 @@ +# - Tools for building CUDA C files: libraries and build dependencies. +# This script locates the NVIDIA CUDA C tools. It should work on linux, windows, +# and mac and should be reasonably up to date with CUDA C releases. +# +# This script makes use of the standard find_package arguments of , +# REQUIRED and QUIET. CUDA_FOUND will report if an acceptable version of CUDA +# was found. +# +# The script will prompt the user to specify CUDA_TOOLKIT_ROOT_DIR if the prefix +# cannot be determined by the location of nvcc in the system path and REQUIRED +# is specified to find_package(). To use a different installed version of the +# toolkit set the environment variable CUDA_BIN_PATH before running cmake +# (e.g. CUDA_BIN_PATH=/usr/local/cuda1.0 instead of the default /usr/local/cuda) +# or set CUDA_TOOLKIT_ROOT_DIR after configuring. If you change the value of +# CUDA_TOOLKIT_ROOT_DIR, various components that depend on the path will be +# relocated. +# +# It might be necessary to set CUDA_TOOLKIT_ROOT_DIR manually on certain +# platforms, or to use a cuda runtime not installed in the default location. In +# newer versions of the toolkit the cuda library is included with the graphics +# driver- be sure that the driver version matches what is needed by the cuda +# runtime version. +# +# The following variables affect the behavior of the macros in the script (in +# alphebetical order). Note that any of these flags can be changed multiple +# times in the same directory before calling CUDA_ADD_EXECUTABLE, +# CUDA_ADD_LIBRARY, CUDA_COMPILE, CUDA_COMPILE_PTX or CUDA_WRAP_SRCS. +# +# CUDA_64_BIT_DEVICE_CODE (Default matches host bit size) +# -- Set to ON to compile for 64 bit device code, OFF for 32 bit device code. +# Note that making this different from the host code when generating object +# or C files from CUDA code just won't work, because size_t gets defined by +# nvcc in the generated source. If you compile to PTX and then load the +# file yourself, you can mix bit sizes between device and host. +# +# CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE (Default ON) +# -- Set to ON if you want the custom build rule to be attached to the source +# file in Visual Studio. Turn OFF if you add the same cuda file to multiple +# targets. +# +# This allows the user to build the target from the CUDA file; however, bad +# things can happen if the CUDA source file is added to multiple targets. +# When performing parallel builds it is possible for the custom build +# command to be run more than once and in parallel causing cryptic build +# errors. VS runs the rules for every source file in the target, and a +# source can have only one rule no matter how many projects it is added to. +# When the rule is run from multiple targets race conditions can occur on +# the generated file. Eventually everything will get built, but if the user +# is unaware of this behavior, there may be confusion. It would be nice if +# this script could detect the reuse of source files across multiple targets +# and turn the option off for the user, but no good solution could be found. +# +# CUDA_BUILD_CUBIN (Default OFF) +# -- Set to ON to enable and extra compilation pass with the -cubin option in +# Device mode. The output is parsed and register, shared memory usage is +# printed during build. +# +# CUDA_BUILD_EMULATION (Default OFF for device mode) +# -- Set to ON for Emulation mode. -D_DEVICEEMU is defined for CUDA C files +# when CUDA_BUILD_EMULATION is TRUE. +# +# CUDA_GENERATED_OUTPUT_DIR (Default CMAKE_CURRENT_BINARY_DIR) +# -- Set to the path you wish to have the generated files placed. If it is +# blank output files will be placed in CMAKE_CURRENT_BINARY_DIR. +# Intermediate files will always be placed in +# CMAKE_CURRENT_BINARY_DIR/CMakeFiles. +# +# CUDA_HOST_COMPILATION_CPP (Default ON) +# -- Set to OFF for C compilation of host code. +# +# CUDA_NVCC_FLAGS +# CUDA_NVCC_FLAGS_ +# -- Additional NVCC command line arguments. NOTE: multiple arguments must be +# semi-colon delimited (e.g. --compiler-options;-Wall) +# +# CUDA_PROPAGATE_HOST_FLAGS (Default ON) +# -- Set to ON to propagate CMAKE_{C,CXX}_FLAGS and their configuration +# dependent counterparts (e.g. CMAKE_C_FLAGS_DEBUG) automatically to the +# host compiler through nvcc's -Xcompiler flag. This helps make the +# generated host code match the rest of the system better. Sometimes +# certain flags give nvcc problems, and this will help you turn the flag +# propagation off. This does not affect the flags supplied directly to nvcc +# via CUDA_NVCC_FLAGS or through the OPTION flags specified through +# CUDA_ADD_LIBRARY, CUDA_ADD_EXECUTABLE, or CUDA_WRAP_SRCS. Flags used for +# shared library compilation are not affected by this flag. +# +# CUDA_VERBOSE_BUILD (Default OFF) +# -- Set to ON to see all the commands used when building the CUDA file. When +# using a Makefile generator the value defaults to VERBOSE (run make +# VERBOSE=1 to see output), although setting CUDA_VERBOSE_BUILD to ON will +# always print the output. +# +# The script creates the following macros (in alphebetical order): +# +# CUDA_ADD_CUFFT_TO_TARGET( cuda_target ) +# -- Adds the cufft library to the target (can be any target). Handles whether +# you are in emulation mode or not. +# +# CUDA_ADD_CUBLAS_TO_TARGET( cuda_target ) +# -- Adds the cublas library to the target (can be any target). Handles +# whether you are in emulation mode or not. +# +# CUDA_ADD_EXECUTABLE( cuda_target file0 file1 ... +# [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] [OPTIONS ...] ) +# -- Creates an executable "cuda_target" which is made up of the files +# specified. All of the non CUDA C files are compiled using the standard +# build rules specified by CMAKE and the cuda files are compiled to object +# files using nvcc and the host compiler. In addition CUDA_INCLUDE_DIRS is +# added automatically to include_directories(). Standard CMake target calls +# can be used on the target after calling this macro +# (e.g. set_target_properties and target_link_libraries). +# +# CUDA_ADD_LIBRARY( cuda_target file0 file1 ... +# [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] [OPTIONS ...] ) +# -- Same as CUDA_ADD_EXECUTABLE except that a library is created. +# +# CUDA_BUILD_CLEAN_TARGET() +# -- Creates a convience target that deletes all the dependency files +# generated. You should make clean after running this target to ensure the +# dependency files get regenerated. +# +# CUDA_COMPILE( generated_files file0 file1 ... [STATIC | SHARED | MODULE] +# [OPTIONS ...] ) +# -- Returns a list of generated files from the input source files to be used +# with ADD_LIBRARY or ADD_EXECUTABLE. +# +# CUDA_COMPILE_PTX( generated_files file0 file1 ... [OPTIONS ...] ) +# -- Returns a list of PTX files generated from the input source files. +# +# CUDA_INCLUDE_DIRECTORIES( path0 path1 ... ) +# -- Sets the directories that should be passed to nvcc +# (e.g. nvcc -Ipath0 -Ipath1 ... ). These paths usually contain other .cu +# files. +# +# CUDA_WRAP_SRCS ( cuda_target format generated_files file0 file1 ... +# [STATIC | SHARED | MODULE] [OPTIONS ...] ) +# -- This is where all the magic happens. CUDA_ADD_EXECUTABLE, +# CUDA_ADD_LIBRARY, CUDA_COMPILE, and CUDA_COMPILE_PTX all call this +# function under the hood. +# +# Given the list of files (file0 file1 ... fileN) this macro generates +# custom commands that generate either PTX or linkable objects (use "PTX" or +# "OBJ" for the format argument to switch). Files that don't end with .cu +# or have the HEADER_FILE_ONLY property are ignored. +# +# The arguments passed in after OPTIONS are extra command line options to +# give to nvcc. You can also specify per configuration options by +# specifying the name of the configuration followed by the options. General +# options must preceed configuration specific options. Not all +# configurations need to be specified, only the ones provided will be used. +# +# OPTIONS -DFLAG=2 "-DFLAG_OTHER=space in flag" +# DEBUG -g +# RELEASE --use_fast_math +# RELWITHDEBINFO --use_fast_math;-g +# MINSIZEREL --use_fast_math +# +# For certain configurations (namely VS generating object files with +# CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE set to ON), no generated file will +# be produced for the given cuda file. This is because when you add the +# cuda file to Visual Studio it knows that this file produces an object file +# and will link in the resulting object file automatically. +# +# This script also looks at optional arguments STATIC, SHARED, or MODULE to +# override the behavior specified by the value of the CMake variable +# BUILD_SHARED_LIBS. See BUILD_SHARED_LIBS below for more details. +# +# This script will also generate a separate cmake script that is used at +# build time to invoke nvcc. This is for serveral reasons. +# +# 1. nvcc can return negative numbers as return values which confuses +# Visual Studio into thinking that the command succeeded. The script now +# checks the error codes and produces errors when there was a problem. +# +# 2. nvcc has been known to not delete incomplete results when it +# encounters problems. This confuses build systems into thinking the +# target was generated when in fact an unusable file exists. The script +# now deletes the output files if there was an error. +# +# 3. By putting all the options that affect the build into a file and then +# make the build rule dependent on the file, the output files will be +# regenerated when the options change. +# +# In addition, on some systems special flags are added for building objects +# intended for shared libraries. FindCUDA make use of the CMake variable +# BUILD_SHARED_LIBS and the usual STATIC, SHARED, and MODULE arguments to +# determine if these flags should be used. Please set BUILD_SHARED_LIBS or +# pass in STATIC, SHARED, or MODULE according to how the objects are to be +# used before calling CUDA_ADD_LIBRARY. A preprocessor macro, +# _EXPORTS is defined when BUILD_SHARED_LIBS is defined. +# +# Flags passed into add_definitions with -D or /D are passed along to nvcc. +# +# The script defines the following variables: +# +# CUDA_VERSION_MAJOR -- The major version of cuda as reported by nvcc. +# CUDA_VERSION_MINOR -- The minor version. +# CUDA_VERSION +# CUDA_VERSION_STRING -- CUDA_VERSION_MAJOR.CUDA_VERSION_MINOR +# +# CUDA_TOOLKIT_ROOT_DIR -- Path to the CUDA Toolkit (defined if not set). +# CUDA_SDK_ROOT_DIR -- Path to the CUDA SDK. Use this to find files in the +# SDK. This script will not directly support finding +# specific libraries or headers, as that isn't +# supported by NVIDIA. If you want to change +# libraries when the path changes see the +# FindCUDA.cmake script for an example of how to clear +# these variables. There are also examples of how to +# use the CUDA_SDK_ROOT_DIR to locate headers or +# libraries, if you so choose (at your own risk). +# CUDA_INCLUDE_DIRS -- Include directory for cuda headers. Added automatically +# for CUDA_ADD_EXECUTABLE and CUDA_ADD_LIBRARY. +# CUDA_LIBRARIES -- Cuda RT library. +# CUDA_CUFFT_LIBRARIES -- Device or emulation library for the Cuda FFT +# implementation (alternative to: +# CUDA_ADD_CUFFT_TO_TARGET macro) +# CUDA_CUBLAS_LIBRARIES -- Device or emulation library for the Cuda BLAS +# implementation (alterative to: +# CUDA_ADD_CUBLAS_TO_TARGET macro). +# +# +# James Bigler, NVIDIA Corp (nvidia.com - jbigler) +# Abe Stephens, SCI Institute -- http://www.sci.utah.edu/~abe/FindCuda.html +# +# Copyright (c) 2008-2009 +# NVIDIA Corp. +# +# Copyright (c) 2007-2009 +# Scientific Computing and Imaging Institute, University of Utah +# +# This code is licensed under the MIT License. See the FindCUDA.cmake script +# for the text of the license. + +# The MIT License +# +# License for the specific language governing rights and limitations under +# 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# +############################################################################### + +# FindCUDA.cmake + +# We need to have at least this version to support the VERSION_LESS argument to 'if' (2.6.2) and unset (2.6.3) +cmake_policy(PUSH) +cmake_minimum_required(VERSION 2.6.3) +cmake_policy(POP) + +# This macro helps us find the location of helper files we will need the full path to +macro(CUDA_FIND_HELPER_FILE _name _extension) + set(_full_name "${_name}.${_extension}") + # CMAKE_CURRENT_LIST_FILE contains the full path to the file currently being + # processed. Using this variable, we can pull out the current path, and + # provide a way to get access to the other files we need local to here. + get_filename_component(CMAKE_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) + find_file(CUDA_${_name} ${_full_name} PATHS ${CMAKE_CURRENT_LIST_DIR}/FindCUDA NO_DEFAULT_PATH) + if(NOT CUDA_${_name}) + set(error_message "${_full_name} not found in CMAKE_MODULE_PATH") + if(CUDA_FIND_REQUIRED) + message(FATAL_ERROR "${error_message}") + else(CUDA_FIND_REQUIRED) + if(NOT CUDA_FIND_QUIETLY) + message(STATUS "${error_message}") + endif(NOT CUDA_FIND_QUIETLY) + endif(CUDA_FIND_REQUIRED) + endif(NOT CUDA_${_name}) + # Set this variable as internal, so the user isn't bugged with it. + set(CUDA_${_name} ${CUDA_${_name}} CACHE INTERNAL "Location of ${_full_name}" FORCE) +endmacro(CUDA_FIND_HELPER_FILE) + +##################################################################### +## CUDA_INCLUDE_NVCC_DEPENDENCIES +## + +# So we want to try and include the dependency file if it exists. If +# it doesn't exist then we need to create an empty one, so we can +# include it. + +# If it does exist, then we need to check to see if all the files it +# depends on exist. If they don't then we should clear the dependency +# file and regenerate it later. This covers the case where a header +# file has disappeared or moved. + +macro(CUDA_INCLUDE_NVCC_DEPENDENCIES dependency_file) + set(CUDA_NVCC_DEPEND) + set(CUDA_NVCC_DEPEND_REGENERATE FALSE) + + + # Include the dependency file. Create it first if it doesn't exist . The + # INCLUDE puts a dependency that will force CMake to rerun and bring in the + # new info when it changes. DO NOT REMOVE THIS (as I did and spent a few + # hours figuring out why it didn't work. + if(NOT EXISTS ${dependency_file}) + file(WRITE ${dependency_file} "#FindCUDA.cmake generated file. Do not edit.\n") + endif() + # Always include this file to force CMake to run again next + # invocation and rebuild the dependencies. + #message("including dependency_file = ${dependency_file}") + include(${dependency_file}) + + # Now we need to verify the existence of all the included files + # here. If they aren't there we need to just blank this variable and + # make the file regenerate again. +# if(DEFINED CUDA_NVCC_DEPEND) +# message("CUDA_NVCC_DEPEND set") +# else() +# message("CUDA_NVCC_DEPEND NOT set") +# endif() + if(CUDA_NVCC_DEPEND) + #message("CUDA_NVCC_DEPEND true") + foreach(f ${CUDA_NVCC_DEPEND}) + #message("searching for ${f}") + if(NOT EXISTS ${f}) + #message("file ${f} not found") + set(CUDA_NVCC_DEPEND_REGENERATE TRUE) + endif() + endforeach(f) + else(CUDA_NVCC_DEPEND) + #message("CUDA_NVCC_DEPEND false") + # No dependencies, so regenerate the file. + set(CUDA_NVCC_DEPEND_REGENERATE TRUE) + endif(CUDA_NVCC_DEPEND) + + #message("CUDA_NVCC_DEPEND_REGENERATE = ${CUDA_NVCC_DEPEND_REGENERATE}") + # No incoming dependencies, so we need to generate them. Make the + # output depend on the dependency file itself, which should cause the + # rule to re-run. + if(CUDA_NVCC_DEPEND_REGENERATE) + file(WRITE ${dependency_file} "#FindCUDA.cmake generated file. Do not edit.\n") + endif(CUDA_NVCC_DEPEND_REGENERATE) + +endmacro(CUDA_INCLUDE_NVCC_DEPENDENCIES) + +############################################################################### +############################################################################### +# Setup variables' defaults +############################################################################### +############################################################################### + +# Allow the user to specify if the device code is supposed to be 32 or 64 bit. +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(CUDA_64_BIT_DEVICE_CODE_DEFAULT ON) +else() + set(CUDA_64_BIT_DEVICE_CODE_DEFAULT OFF) +endif() +option(CUDA_64_BIT_DEVICE_CODE "Compile device code in 64 bit mode" ${CUDA_64_BIT_DEVICE_CODE_DEFAULT}) + +# Attach the build rule to the source file in VS. This option +option(CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE "Attach the build rule to the CUDA source file. Enable only when the CUDA source file is added to at most one target." ON) + +# Prints out extra information about the cuda file during compilation +option(CUDA_BUILD_CUBIN "Generate and parse .cubin files in Device mode." OFF) + +# Set whether we are using emulation or device mode. +option(CUDA_BUILD_EMULATION "Build in Emulation mode" OFF) + +# Where to put the generated output. +set(CUDA_GENERATED_OUTPUT_DIR "" CACHE PATH "Directory to put all the output files. If blank it will default to the CMAKE_CURRENT_BINARY_DIR") + +# Parse HOST_COMPILATION mode. +option(CUDA_HOST_COMPILATION_CPP "Generated file extension" ON) + +# Extra user settable flags +set(CUDA_NVCC_FLAGS "" CACHE STRING "Semi-colon delimit multiple arguments.") + +# Propagate the host flags to the host compiler via -Xcompiler +option(CUDA_PROPAGATE_HOST_FLAGS "Propage C/CXX_FLAGS and friends to the host compiler via -Xcompile" ON) + +# Specifies whether the commands used when compiling the .cu file will be printed out. +option(CUDA_VERBOSE_BUILD "Print out the commands run while compiling the CUDA source file. With the Makefile generator this defaults to VERBOSE variable specified on the command line, but can be forced on with this option." OFF) + +mark_as_advanced( + CUDA_64_BIT_DEVICE_CODE + CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE + CUDA_GENERATED_OUTPUT_DIR + CUDA_HOST_COMPILATION_CPP + CUDA_NVCC_FLAGS + CUDA_PROPAGATE_HOST_FLAGS + ) + +# Makefile and similar generators don't define CMAKE_CONFIGURATION_TYPES, so we +# need to add another entry for the CMAKE_BUILD_TYPE. We also need to add the +# standerd set of 4 build types (Debug, MinSizeRel, Release, and RelWithDebInfo) +# for completeness. We need run this loop in order to accomodate the addition +# of extra configuration types. Duplicate entries will be removed by +# REMOVE_DUPLICATES. +set(CUDA_configuration_types ${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE} Debug MinSizeRel Release RelWithDebInfo) +list(REMOVE_DUPLICATES CUDA_configuration_types) +foreach(config ${CUDA_configuration_types}) + string(TOUPPER ${config} config_upper) + set(CUDA_NVCC_FLAGS_${config_upper} "" CACHE STRING "Semi-colon delimit multiple arguments.") + mark_as_advanced(CUDA_NVCC_FLAGS_${config_upper}) +endforeach() + +############################################################################### +############################################################################### +# Locate CUDA, Set Build Type, etc. +############################################################################### +############################################################################### + +# Check to see if the CUDA_TOOLKIT_ROOT_DIR and CUDA_SDK_ROOT_DIR have changed, +# if they have then clear the cache variables, so that will be detected again. +if(NOT "${CUDA_TOOLKIT_ROOT_DIR}" STREQUAL "${CUDA_TOOLKIT_ROOT_DIR_INTERNAL}") + unset(CUDA_NVCC_EXECUTABLE CACHE) + unset(CUDA_VERSION CACHE) + unset(CUDA_TOOLKIT_INCLUDE CACHE) + unset(CUDA_CUDART_LIBRARY CACHE) + unset(CUDA_CUDA_LIBRARY CACHE) + unset(CUDA_cublas_LIBRARY CACHE) + unset(CUDA_cublasemu_LIBRARY CACHE) + unset(CUDA_cufft_LIBRARY CACHE) + unset(CUDA_cufftemu_LIBRARY CACHE) +endif() + +if(NOT "${CUDA_SDK_ROOT_DIR}" STREQUAL "${CUDA_SDK_ROOT_DIR_INTERNAL}") + # No specific variables to catch. Use this kind of code before calling + # find_package(CUDA) to clean up any variables that may depend on this path. + + # unset(MY_SPECIAL_CUDA_SDK_INCLUDE_DIR CACHE) + # unset(MY_SPECIAL_CUDA_SDK_LIBRARY CACHE) +endif() + +# Search for the cuda distribution. +if(NOT CUDA_TOOLKIT_ROOT_DIR) + + # Search in the CUDA_BIN_PATH first. + find_path(CUDA_TOOLKIT_ROOT_DIR + NAMES nvcc nvcc.exe + PATHS ENV CUDA_BIN_PATH + DOC "Toolkit location." + NO_DEFAULT_PATH + ) + # Now search default paths + find_path(CUDA_TOOLKIT_ROOT_DIR + NAMES nvcc nvcc.exe + PATHS /usr/local/bin + /usr/local/cuda/bin + DOC "Toolkit location." + ) + + if (CUDA_TOOLKIT_ROOT_DIR) + string(REGEX REPLACE "[/\\\\]?bin[64]*[/\\\\]?$" "" CUDA_TOOLKIT_ROOT_DIR ${CUDA_TOOLKIT_ROOT_DIR}) + # We need to force this back into the cache. + set(CUDA_TOOLKIT_ROOT_DIR ${CUDA_TOOLKIT_ROOT_DIR} CACHE PATH "Toolkit location." FORCE) + endif(CUDA_TOOLKIT_ROOT_DIR) + if (NOT EXISTS ${CUDA_TOOLKIT_ROOT_DIR}) + if(CUDA_FIND_REQUIRED) + message(FATAL_ERROR "Specify CUDA_TOOLKIT_ROOT_DIR") + elseif(NOT CUDA_FIND_QUIETLY) + message("CUDA_TOOLKIT_ROOT_DIR not found or specified") + endif() + endif (NOT EXISTS ${CUDA_TOOLKIT_ROOT_DIR}) +endif (NOT CUDA_TOOLKIT_ROOT_DIR) + +# CUDA_NVCC_EXECUTABLE +find_program(CUDA_NVCC_EXECUTABLE + NAMES nvcc + PATHS "${CUDA_TOOLKIT_ROOT_DIR}/bin64" + "${CUDA_TOOLKIT_ROOT_DIR}/bin" + ENV CUDA_BIN_PATH + NO_DEFAULT_PATH + ) +# Search default search paths, after we search our own set of paths. +find_program(CUDA_NVCC_EXECUTABLE nvcc) +mark_as_advanced(CUDA_NVCC_EXECUTABLE) + +if(CUDA_NVCC_EXECUTABLE AND NOT CUDA_VERSION) + # Compute the version. + exec_program(${CUDA_NVCC_EXECUTABLE} ARGS "--version" OUTPUT_VARIABLE NVCC_OUT) + string(REGEX REPLACE ".*release ([0-9]+)\\.([0-9]+).*" "\\1" CUDA_VERSION_MAJOR ${NVCC_OUT}) + string(REGEX REPLACE ".*release ([0-9]+)\\.([0-9]+).*" "\\2" CUDA_VERSION_MINOR ${NVCC_OUT}) + set(CUDA_VERSION "${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}" CACHE STRING "Version of CUDA as computed from nvcc.") + mark_as_advanced(CUDA_VERSION) +endif() + +# Always set this convenience variable +set(CUDA_VERSION_STRING "${CUDA_VERSION}") + +# Here we need to determine if the version we found is acceptable. We will +# assume that is unless CUDA_FIND_VERSION_EXACT or CUDA_FIND_VERSION is +# specified. The presence of either of these options checks the version +# string and signals if the version is acceptable or not. +set(_cuda_version_acceptable TRUE) +# +if(CUDA_FIND_VERSION_EXACT AND NOT CUDA_VERSION VERSION_EQUAL CUDA_FIND_VERSION) + set(_cuda_version_acceptable FALSE) +endif() +# +if(CUDA_FIND_VERSION AND CUDA_VERSION VERSION_LESS CUDA_FIND_VERSION) + set(_cuda_version_acceptable FALSE) +endif() +# +if(NOT _cuda_version_acceptable) + set(_cuda_error_message "Requested CUDA version ${CUDA_FIND_VERSION}, but found unacceptable version ${CUDA_VERSION}") + if(CUDA_FIND_REQUIRED) + message("${_cuda_error_message}") + elseif(NOT CUDA_FIND_QUIETLY) + message("${_cuda_error_message}") + endif() +endif() + +# CUDA_TOOLKIT_INCLUDE +find_path(CUDA_TOOLKIT_INCLUDE + device_functions.h # Header included in toolkit + PATHS "${CUDA_TOOLKIT_ROOT_DIR}/include" + ENV CUDA_INC_PATH + NO_DEFAULT_PATH + ) +# Search default search paths, after we search our own set of paths. +find_path(CUDA_TOOLKIT_INCLUDE device_functions.h) +mark_as_advanced(CUDA_TOOLKIT_INCLUDE) + +# Set the user list of include dir to nothing to initialize it. +set (CUDA_NVCC_INCLUDE_ARGS_USER "") +set (CUDA_INCLUDE_DIRS ${CUDA_TOOLKIT_INCLUDE}) + +macro(FIND_LIBRARY_LOCAL_FIRST _var _names _doc) + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(_cuda_64bit_lib_dir "${CUDA_TOOLKIT_ROOT_DIR}/lib64") + endif() + find_library(${_var} + NAMES ${_names} + PATHS ${_cuda_64bit_lib_dir} + "${CUDA_TOOLKIT_ROOT_DIR}/lib" + ENV CUDA_LIB_PATH + DOC ${_doc} + NO_DEFAULT_PATH + ) + # Search default search paths, after we search our own set of paths. + find_library(${_var} NAMES ${_names} DOC ${_doc}) +endmacro() + +# CUDA_LIBRARIES +find_library_local_first(CUDA_CUDART_LIBRARY cudart "\"cudart\" library") +set(CUDA_LIBRARIES ${CUDA_CUDART_LIBRARY}) + +# 1.1 toolkit on linux doesn't appear to have a separate library on +# some platforms. +find_library_local_first(CUDA_CUDA_LIBRARY cuda "\"cuda\" library (older versions only).") + +# Add cuda library to the link line only if it is found. +if (CUDA_CUDA_LIBRARY) + set(CUDA_LIBRARIES ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) +endif(CUDA_CUDA_LIBRARY) + +mark_as_advanced( + CUDA_CUDA_LIBRARY + CUDA_CUDART_LIBRARY + ) + +####################### +# Look for some of the toolkit helper libraries +macro(FIND_CUDA_HELPER_LIBS _name) + find_library_local_first(CUDA_${_name}_LIBRARY ${_name} "\"${_name}\" library") + mark_as_advanced(CUDA_${_name}_LIBRARY) +endmacro(FIND_CUDA_HELPER_LIBS) + +# Search for cufft and cublas libraries. +find_cuda_helper_libs(cufftemu) +find_cuda_helper_libs(cublasemu) +find_cuda_helper_libs(cufft) +find_cuda_helper_libs(cublas) + +if (CUDA_BUILD_EMULATION) + set(CUDA_CUFFT_LIBRARIES ${CUDA_cufftemu_LIBRARY}) + set(CUDA_CUBLAS_LIBRARIES ${CUDA_cublasemu_LIBRARY}) +else() + set(CUDA_CUFFT_LIBRARIES ${CUDA_cufft_LIBRARY}) + set(CUDA_CUBLAS_LIBRARIES ${CUDA_cublas_LIBRARY}) +endif() + +######################## +# Look for the SDK stuff +find_path(CUDA_SDK_ROOT_DIR common/inc/cutil.h + "$ENV{NVSDKCUDA_ROOT}" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\NVIDIA Corporation\\Installed Products\\NVIDIA SDK 10\\Compute;InstallDir]" + "/Developer/GPU\ Computing/C" + ) + +# Keep the CUDA_SDK_ROOT_DIR first in order to be able to override the +# environment variables. +set(CUDA_SDK_SEARCH_PATH + "${CUDA_SDK_ROOT_DIR}" + "${CUDA_TOOLKIT_ROOT_DIR}/local/NVSDK0.2" + "${CUDA_TOOLKIT_ROOT_DIR}/NVSDK0.2" + "${CUDA_TOOLKIT_ROOT_DIR}/NV_CUDA_SDK" + "$ENV{HOME}/NVIDIA_CUDA_SDK" + "$ENV{HOME}/NVIDIA_CUDA_SDK_MACOSX" + "/Developer/CUDA" + ) + +# Example of how to find an include file from the CUDA_SDK_ROOT_DIR + +# find_path(CUDA_CUT_INCLUDE_DIR +# cutil.h +# PATHS ${CUDA_SDK_SEARCH_PATH} +# PATH_SUFFIXES "common/inc" +# DOC "Location of cutil.h" +# NO_DEFAULT_PATH +# ) +# # Now search system paths +# find_path(CUDA_CUT_INCLUDE_DIR cutil.h DOC "Location of cutil.h") + +# mark_as_advanced(CUDA_CUT_INCLUDE_DIR) + + +# Example of how to find a library in the CUDA_SDK_ROOT_DIR + +# # cutil library is called cutil64 for 64 bit builds on windows. We don't want +# # to get these confused, so we are setting the name based on the word size of +# # the build. + +# if(CMAKE_SIZEOF_VOID_P EQUAL 8) +# set(cuda_cutil_name cutil64) +# else(CMAKE_SIZEOF_VOID_P EQUAL 8) +# set(cuda_cutil_name cutil32) +# endif(CMAKE_SIZEOF_VOID_P EQUAL 8) + +# find_library(CUDA_CUT_LIBRARY +# NAMES cutil ${cuda_cutil_name} +# PATHS ${CUDA_SDK_SEARCH_PATH} +# # The new version of the sdk shows up in common/lib, but the old one is in lib +# PATH_SUFFIXES "common/lib" "lib" +# DOC "Location of cutil library" +# NO_DEFAULT_PATH +# ) +# # Now search system paths +# find_library(CUDA_CUT_LIBRARY NAMES cutil ${cuda_cutil_name} DOC "Location of cutil library") +# mark_as_advanced(CUDA_CUT_LIBRARY) +# set(CUDA_CUT_LIBRARIES ${CUDA_CUT_LIBRARY}) + + + +############################# +# Check for required components +set(CUDA_FOUND TRUE) + +set(CUDA_TOOLKIT_ROOT_DIR_INTERNAL "${CUDA_TOOLKIT_ROOT_DIR}" CACHE INTERNAL + "This is the value of the last time CUDA_TOOLKIT_ROOT_DIR was set successfully." FORCE) +set(CUDA_SDK_ROOT_DIR_INTERNAL "${CUDA_SDK_ROOT_DIR}" CACHE INTERNAL + "This is the value of the last time CUDA_SDK_ROOT_DIR was set successfully." FORCE) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(CUDA DEFAULT_MSG + CUDA_TOOLKIT_ROOT_DIR + CUDA_NVCC_EXECUTABLE + CUDA_INCLUDE_DIRS + CUDA_CUDART_LIBRARY + _cuda_version_acceptable + ) + + + +############################################################################### +############################################################################### +# Macros +############################################################################### +############################################################################### + +############################################################################### +# Add include directories to pass to the nvcc command. +macro(CUDA_INCLUDE_DIRECTORIES) + foreach(dir ${ARGN}) + list(APPEND CUDA_NVCC_INCLUDE_ARGS_USER "-I${dir}") + endforeach(dir ${ARGN}) +endmacro(CUDA_INCLUDE_DIRECTORIES) + + +############################################################################## +cuda_find_helper_file(parse_cubin cmake) +cuda_find_helper_file(make2cmake cmake) +cuda_find_helper_file(run_nvcc cmake) + +############################################################################## +# Separate the OPTIONS out from the sources +# +macro(CUDA_GET_SOURCES_AND_OPTIONS _sources _cmake_options _options) + set( ${_sources} ) + set( ${_cmake_options} ) + set( ${_options} ) + set( _found_options FALSE ) + foreach(arg ${ARGN}) + if(arg STREQUAL "OPTIONS") + set( _found_options TRUE ) + elseif( + arg STREQUAL "WIN32" OR + arg STREQUAL "MACOSX_BUNDLE" OR + arg STREQUAL "EXCLUDE_FROM_ALL" OR + arg STREQUAL "STATIC" OR + arg STREQUAL "SHARED" OR + arg STREQUAL "MODULE" + ) + list(APPEND ${_cmake_options} "${arg}") + else() + if ( _found_options ) + list(APPEND ${_options} "${arg}") + else() + # Assume this is a file + list(APPEND ${_sources} "${arg}") + endif() + endif() + endforeach() +endmacro() + +############################################################################## +# Parse the OPTIONS from ARGN and set the variables prefixed by _option_prefix +# +macro(CUDA_PARSE_NVCC_OPTIONS _option_prefix) + set( _found_config ) + foreach(arg ${ARGN}) + # Determine if we are dealing with a perconfiguration flag + foreach(config ${CUDA_configuration_types}) + string(TOUPPER ${config} config_upper) + if (arg STREQUAL "${config_upper}") + set( _found_config _${arg}) + # Set arg to nothing to keep it from being processed further + set( arg ) + endif() + endforeach() + + if ( arg ) + list(APPEND ${_option_prefix}${_found_config} "${arg}") + endif() + endforeach() +endmacro() + +############################################################################## +# Helper to add the include directory for CUDA only once +function(CUDA_ADD_CUDA_INCLUDE_ONCE) + get_directory_property(_include_directories INCLUDE_DIRECTORIES) + set(_add TRUE) + if(_include_directories) + foreach(dir ${_include_directories}) + if("${dir}" STREQUAL "${CUDA_INCLUDE_DIRS}") + set(_add FALSE) + endif() + endforeach() + endif() + if(_add) + include_directories(${CUDA_INCLUDE_DIRS}) + endif() +endfunction() + +############################################################################## +# This helper macro populates the following variables and setups up custom +# commands and targets to invoke the nvcc compiler to generate C or PTX source +# dependant upon the format parameter. The compiler is invoked once with -M +# to generate a dependency file and a second time with -cuda or -ptx to generate +# a .cpp or .ptx file. +# INPUT: +# cuda_target - Target name +# format - PTX or OBJ +# FILE1 .. FILEN - The remaining arguments are the sources to be wrapped. +# OPTIONS - Extra options to NVCC +# OUTPUT: +# generated_files - List of generated files +############################################################################## +############################################################################## + +macro(CUDA_WRAP_SRCS cuda_target format generated_files) + + if( ${format} MATCHES "PTX" ) + set( compile_to_ptx ON ) + elseif( ${format} MATCHES "OBJ") + set( compile_to_ptx OFF ) + else() + message( FATAL_ERROR "Invalid format flag passed to CUDA_WRAP_SRCS: '${format}'. Use OBJ or PTX.") + endif() + + # Set up all the command line flags here, so that they can be overriden on a per target basis. + + set(nvcc_flags "") + + # Emulation if the card isn't present. + if (CUDA_BUILD_EMULATION) + # Emulation. + set(nvcc_flags ${nvcc_flags} --device-emulation -D_DEVICEEMU -g) + else(CUDA_BUILD_EMULATION) + # Device mode. No flags necessary. + endif(CUDA_BUILD_EMULATION) + + if(CUDA_HOST_COMPILATION_CPP) + set(CUDA_C_OR_CXX CXX) + else(CUDA_HOST_COMPILATION_CPP) + set(nvcc_flags ${nvcc_flags} --host-compilation C) + set(CUDA_C_OR_CXX C) + endif(CUDA_HOST_COMPILATION_CPP) + + set(generated_extension ${CMAKE_${CUDA_C_OR_CXX}_OUTPUT_EXTENSION}) + + if(CUDA_64_BIT_DEVICE_CODE) + set(nvcc_flags ${nvcc_flags} -m64) + else() + set(nvcc_flags ${nvcc_flags} -m32) + endif() + + # This needs to be passed in at this stage, because VS needs to fill out the + # value of VCInstallDir from within VS. + if(CMAKE_GENERATOR MATCHES "Visual Studio") + if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) + # Add nvcc flag for 64b Windows + set(ccbin_flags -D "\"CCBIN:PATH=$(VCInstallDir)bin\"" ) + endif() + endif() + + # Figure out which configure we will use and pass that in as an argument to + # the script. We need to defer the decision until compilation time, because + # for VS projects we won't know if we are making a debug or release build + # until build time. + if(CMAKE_GENERATOR MATCHES "Visual Studio") + set( CUDA_build_configuration "$(ConfigurationName)" ) + else() + set( CUDA_build_configuration "${CMAKE_BUILD_TYPE}") + endif() + + # Initialize our list of includes with the user ones followed by the CUDA system ones. + set(CUDA_NVCC_INCLUDE_ARGS ${CUDA_NVCC_INCLUDE_ARGS_USER} "-I${CUDA_INCLUDE_DIRS}") + # Get the include directories for this directory and use them for our nvcc command. + get_directory_property(CUDA_NVCC_INCLUDE_DIRECTORIES INCLUDE_DIRECTORIES) + if(CUDA_NVCC_INCLUDE_DIRECTORIES) + foreach(dir ${CUDA_NVCC_INCLUDE_DIRECTORIES}) + list(APPEND CUDA_NVCC_INCLUDE_ARGS "-I${dir}") + endforeach() + endif() + + # Reset these variables + set(CUDA_WRAP_OPTION_NVCC_FLAGS) + foreach(config ${CUDA_configuration_types}) + string(TOUPPER ${config} config_upper) + set(CUDA_WRAP_OPTION_NVCC_FLAGS_${config_upper}) + endforeach() + + CUDA_GET_SOURCES_AND_OPTIONS(_cuda_wrap_sources _cuda_wrap_cmake_options _cuda_wrap_options ${ARGN}) + CUDA_PARSE_NVCC_OPTIONS(CUDA_WRAP_OPTION_NVCC_FLAGS ${_cuda_wrap_options}) + + # Figure out if we are building a shared library. Default the value of BUILD_SHARED_LIBS. + set(_cuda_build_shared_libs ${BUILD_SHARED_LIBS}) + # SHARED, MODULE + list(FIND _cuda_wrap_cmake_options SHARED _cuda_found_SHARED) + list(FIND _cuda_wrap_cmake_options MODULE _cuda_found_MODULE) + if(_cuda_found_SHARED GREATER -1 OR _cuda_found_MODULE GREATER -1) + set(_cuda_build_shared_libs TRUE) + endif() + # STATIC + list(FIND _cuda_wrap_cmake_options STATIC _cuda_found_STATIC) + if(_cuda_found_STATIC GREATER -1) + set(_cuda_build_shared_libs FALSE) + endif() + + # CUDA_HOST_FLAGS + if(_cuda_build_shared_libs) + # If we are setting up code for a shared library, then we need to add extra flags for + # compiling objects for shared libraries. + set(CUDA_HOST_SHARED_FLAGS ${CMAKE_SHARED_LIBRARY_${CUDA_C_OR_CXX}_FLAGS}) + endif() + # Only add the CMAKE_{C,CXX}_FLAGS if we are propagating host flags. We + # always need to set the SHARED_FLAGS, though. + if(CUDA_PROPAGATE_HOST_FLAGS) + set(CUDA_HOST_FLAGS "set(CMAKE_HOST_FLAGS ${CMAKE_${CUDA_C_OR_CXX}_FLAGS} ${CUDA_HOST_SHARED_FLAGS})") + else() + set(CUDA_HOST_FLAGS "set(CMAKE_HOST_FLAGS ${CUDA_HOST_SHARED_FLAGS})") + endif() + + set(CUDA_NVCC_FLAGS_CONFIG "# Build specific configuration flags") + # Loop over all the configuration types to generate appropriate flags for run_nvcc.cmake + foreach(config ${CUDA_configuration_types}) + string(TOUPPER ${config} config_upper) + # CMAKE_FLAGS are strings and not lists. By not putting quotes around CMAKE_FLAGS + # we convert the strings to lists (like we want). + + if(CUDA_PROPAGATE_HOST_FLAGS) + # nvcc chokes on -g3, so replace it with -g + if(CMAKE_COMPILER_IS_GNUCC) + string(REPLACE "-g3" "-g" _cuda_C_FLAGS "${CMAKE_${CUDA_C_OR_CXX}_FLAGS_${config_upper}}") + else() + set(_cuda_C_FLAGS "${CMAKE_${CUDA_C_OR_CXX}_FLAGS_${config_upper}}") + endif() + + set(CUDA_HOST_FLAGS "${CUDA_HOST_FLAGS}\nset(CMAKE_HOST_FLAGS_${config_upper} ${_cuda_C_FLAGS})") + endif() + + # Note that if we ever want CUDA_NVCC_FLAGS_ to be string (instead of a list + # like it is currently), we can remove the quotes around the + # ${CUDA_NVCC_FLAGS_${config_upper}} variable like the CMAKE_HOST_FLAGS_ variable. + set(CUDA_NVCC_FLAGS_CONFIG "${CUDA_NVCC_FLAGS_CONFIG}\nset(CUDA_NVCC_FLAGS_${config_upper} \"${CUDA_NVCC_FLAGS_${config_upper}};;${CUDA_WRAP_OPTION_NVCC_FLAGS_${config_upper}}\")") + endforeach() + + if(compile_to_ptx) + # Don't use any of the host compilation flags for PTX targets. + set(CUDA_HOST_FLAGS) + set(CUDA_NVCC_FLAGS_CONFIG) + endif() + + # Get the list of definitions from the directory property + get_directory_property(CUDA_NVCC_DEFINITIONS COMPILE_DEFINITIONS) + if(CUDA_NVCC_DEFINITIONS) + foreach(_definition ${CUDA_NVCC_DEFINITIONS}) + list(APPEND nvcc_flags "-D${_definition}") + endforeach() + endif() + + if(_cuda_build_shared_libs) + list(APPEND nvcc_flags "-D${cuda_target}_EXPORTS") + endif() + + # Determine output directory + if(CUDA_GENERATED_OUTPUT_DIR) + set(cuda_compile_output_dir "${CUDA_GENERATED_OUTPUT_DIR}") + else() + set(cuda_compile_output_dir "${CMAKE_CURRENT_BINARY_DIR}") + endif() + + # Reset the output variable + set(_cuda_wrap_generated_files "") + + # Iterate over the macro arguments and create custom + # commands for all the .cu files. + foreach(file ${ARGN}) + # Ignore any file marked as a HEADER_FILE_ONLY + get_source_file_property(_is_header ${file} HEADER_FILE_ONLY) + if(${file} MATCHES ".*\\.cu$" AND NOT _is_header) + + # Add a custom target to generate a c or ptx file. ###################### + + get_filename_component( basename ${file} NAME ) + if( compile_to_ptx ) + set(generated_file_path "${cuda_compile_output_dir}") + set(generated_file_basename "${cuda_target}_generated_${basename}.ptx") + set(format_flag "-ptx") + file(MAKE_DIRECTORY "${cuda_compile_output_dir}") + else( compile_to_ptx ) + set(generated_file_path "${cuda_compile_output_dir}/${CMAKE_CFG_INTDIR}") + set(generated_file_basename "${cuda_target}_generated_${basename}${generated_extension}") + set(format_flag "-c") + endif( compile_to_ptx ) + + # Set all of our file names. Make sure that whatever filenames that have + # generated_file_path in them get passed in through as a command line + # argument, so that the ${CMAKE_CFG_INTDIR} gets expanded at run time + # instead of configure time. + set(generated_file "${generated_file_path}/${generated_file_basename}") + set(cmake_dependency_file "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${generated_file_basename}.depend") + set(NVCC_generated_dependency_file "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${generated_file_basename}.NVCC-depend") + set(generated_cubin_file "${generated_file_path}/${generated_file_basename}.cubin.txt") + set(custom_target_script "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${generated_file_basename}.cmake") + + # Setup properties for obj files: + if( NOT compile_to_ptx ) + set_source_files_properties("${generated_file}" + PROPERTIES + EXTERNAL_OBJECT true # This is an object file not to be compiled, but only be linked. + ) + endif() + + # Don't add CMAKE_CURRENT_SOURCE_DIR if the path is already an absolute path. + get_filename_component(file_path "${file}" PATH) + if(IS_ABSOLUTE "${file_path}") + set(source_file "${file}") + else() + set(source_file "${CMAKE_CURRENT_SOURCE_DIR}/${file}") + endif() + + # Bring in the dependencies. Creates a variable CUDA_NVCC_DEPEND ####### + cuda_include_nvcc_dependencies(${cmake_dependency_file}) + + # Convience string for output ########################################### + if(CUDA_BUILD_EMULATION) + set(cuda_build_type "Emulation") + else(CUDA_BUILD_EMULATION) + set(cuda_build_type "Device") + endif(CUDA_BUILD_EMULATION) + + # Build the NVCC made dependency file ################################### + set(build_cubin OFF) + if ( NOT CUDA_BUILD_EMULATION AND CUDA_BUILD_CUBIN ) + if ( NOT compile_to_ptx ) + set ( build_cubin ON ) + endif( NOT compile_to_ptx ) + endif( NOT CUDA_BUILD_EMULATION AND CUDA_BUILD_CUBIN ) + + # Configure the build script + configure_file("${CUDA_run_nvcc}" "${custom_target_script}" @ONLY) + + # So if a user specifies the same cuda file as input more than once, you + # can have bad things happen with dependencies. Here we check an option + # to see if this is the behavior they want. + if(CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE) + set(main_dep MAIN_DEPENDENCY ${source_file}) + else() + set(main_dep DEPENDS ${source_file}) + endif() + + if(CUDA_VERBOSE_BUILD) + set(verbose_output ON) + elseif(CMAKE_GENERATOR MATCHES "Makefiles") + set(verbose_output "$(VERBOSE)") + else() + set(verbose_output OFF) + endif() + + # Create up the comment string + file(RELATIVE_PATH generated_file_relative_path "${CMAKE_BINARY_DIR}" "${generated_file}") + if(compile_to_ptx) + set(cuda_build_comment_string "Building NVCC ptx file ${generated_file_relative_path}") + else() + set(cuda_build_comment_string "Building NVCC (${cuda_build_type}) object ${generated_file_relative_path}") + endif() + + # Build the generated file and dependency file ########################## + add_custom_command( + OUTPUT ${generated_file} + # These output files depend on the source_file and the contents of cmake_dependency_file + ${main_dep} + DEPENDS ${CUDA_NVCC_DEPEND} + DEPENDS ${custom_target_script} + COMMAND ${CMAKE_COMMAND} ARGS + -D verbose:BOOL=${verbose_output} + ${ccbin_flags} + -D build_configuration:STRING=${CUDA_build_configuration} + -D "generated_file:STRING=${generated_file}" + -D "generated_cubin_file:STRING=${generated_cubin_file}" + -P "${custom_target_script}" + COMMENT "${cuda_build_comment_string}" + ) + + # Make sure the build system knows the file is generated. + set_source_files_properties(${generated_file} PROPERTIES GENERATED TRUE) + + # Don't add the object file to the list of generated files if we are using + # visual studio and we are attaching the build rule to the cuda file. VS + # will add our object file to the linker automatically for us. + set(cuda_add_generated_file TRUE) + + if(NOT compile_to_ptx AND CMAKE_GENERATOR MATCHES "Visual Studio" AND CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE) + # Visual Studio 8 crashes when you close the solution when you don't add the object file. + if(NOT CMAKE_GENERATOR MATCHES "Visual Studio 8") + #message("Not adding ${generated_file}") + set(cuda_add_generated_file FALSE) + endif() + endif() + + if(cuda_add_generated_file) + list(APPEND _cuda_wrap_generated_files ${generated_file}) + endif() + + # Add the other files that we want cmake to clean on a cleanup ########## + list(APPEND CUDA_ADDITIONAL_CLEAN_FILES "${cmake_dependency_file}") + list(REMOVE_DUPLICATES CUDA_ADDITIONAL_CLEAN_FILES) + set(CUDA_ADDITIONAL_CLEAN_FILES ${CUDA_ADDITIONAL_CLEAN_FILES} CACHE INTERNAL "List of intermediate files that are part of the cuda dependency scanning.") + + endif(${file} MATCHES ".*\\.cu$" AND NOT _is_header) + endforeach(file) + + # Set the return parameter + set(${generated_files} ${_cuda_wrap_generated_files}) +endmacro(CUDA_WRAP_SRCS) + + +############################################################################### +############################################################################### +# ADD LIBRARY +############################################################################### +############################################################################### +macro(CUDA_ADD_LIBRARY cuda_target) + + CUDA_ADD_CUDA_INCLUDE_ONCE() + + # Separate the sources from the options + CUDA_GET_SOURCES_AND_OPTIONS(_sources _cmake_options _options ${ARGN}) + # Create custom commands and targets for each file. + CUDA_WRAP_SRCS( ${cuda_target} OBJ _generated_files ${_sources} ${_cmake_options} + OPTIONS ${_options} ) + + # Add the library. + add_library(${cuda_target} ${_cmake_options} + ${_generated_files} + ${_sources} + ) + + target_link_libraries(${cuda_target} + ${CUDA_LIBRARIES} + ) + + # We need to set the linker language based on what the expected generated file + # would be. CUDA_C_OR_CXX is computed based on CUDA_HOST_COMPILATION_CPP. + set_target_properties(${cuda_target} + PROPERTIES + LINKER_LANGUAGE ${CUDA_C_OR_CXX} + ) + +endmacro(CUDA_ADD_LIBRARY cuda_target) + + +############################################################################### +############################################################################### +# ADD EXECUTABLE +############################################################################### +############################################################################### +macro(CUDA_ADD_EXECUTABLE cuda_target) + + CUDA_ADD_CUDA_INCLUDE_ONCE() + + # Separate the sources from the options + CUDA_GET_SOURCES_AND_OPTIONS(_sources _cmake_options _options ${ARGN}) + # Create custom commands and targets for each file. + CUDA_WRAP_SRCS( ${cuda_target} OBJ _generated_files ${_sources} OPTIONS ${_options} ) + + # Add the library. + add_executable(${cuda_target} ${_cmake_options} + ${_generated_files} + ${_sources} + ) + + target_link_libraries(${cuda_target} + ${CUDA_LIBRARIES} + ) + + # We need to set the linker language based on what the expected generated file + # would be. CUDA_C_OR_CXX is computed based on CUDA_HOST_COMPILATION_CPP. + set_target_properties(${cuda_target} + PROPERTIES + LINKER_LANGUAGE ${CUDA_C_OR_CXX} + ) + +endmacro(CUDA_ADD_EXECUTABLE cuda_target) + + +############################################################################### +############################################################################### +# CUDA COMPILE +############################################################################### +############################################################################### +macro(CUDA_COMPILE generated_files) + + # Separate the sources from the options + CUDA_GET_SOURCES_AND_OPTIONS(_sources _cmake_options _options ${ARGN}) + # Create custom commands and targets for each file. + CUDA_WRAP_SRCS( cuda_compile OBJ _generated_files ${_sources} ${_cmake_options} + OPTIONS ${_options} ) + + set( ${generated_files} ${_generated_files}) + +endmacro(CUDA_COMPILE) + + +############################################################################### +############################################################################### +# CUDA COMPILE PTX +############################################################################### +############################################################################### +macro(CUDA_COMPILE_PTX generated_files) + + # Separate the sources from the options + CUDA_GET_SOURCES_AND_OPTIONS(_sources _cmake_options _options ${ARGN}) + # Create custom commands and targets for each file. + CUDA_WRAP_SRCS( cuda_compile_ptx PTX _generated_files ${_sources} ${_cmake_options} + OPTIONS ${_options} ) + + set( ${generated_files} ${_generated_files}) + +endmacro(CUDA_COMPILE_PTX) + +############################################################################### +############################################################################### +# CUDA ADD CUFFT TO TARGET +############################################################################### +############################################################################### +macro(CUDA_ADD_CUFFT_TO_TARGET target) + if (CUDA_BUILD_EMULATION) + target_link_libraries(${target} ${CUDA_cufftemu_LIBRARY}) + else() + target_link_libraries(${target} ${CUDA_cufft_LIBRARY}) + endif() +endmacro() + +############################################################################### +############################################################################### +# CUDA ADD CUBLAS TO TARGET +############################################################################### +############################################################################### +macro(CUDA_ADD_CUBLAS_TO_TARGET target) + if (CUDA_BUILD_EMULATION) + target_link_libraries(${target} ${CUDA_cublasemu_LIBRARY}) + else() + target_link_libraries(${target} ${CUDA_cublas_LIBRARY}) + endif() +endmacro() + +############################################################################### +############################################################################### +# CUDA BUILD CLEAN TARGET +############################################################################### +############################################################################### +macro(CUDA_BUILD_CLEAN_TARGET) + # Call this after you add all your CUDA targets, and you will get a convience + # target. You should also make clean after running this target to get the + # build system to generate all the code again. + + set(cuda_clean_target_name clean_cuda_depends) + if (CMAKE_GENERATOR MATCHES "Visual Studio") + string(TOUPPER ${cuda_clean_target_name} cuda_clean_target_name) + endif() + add_custom_target(${cuda_clean_target_name} + COMMAND ${CMAKE_COMMAND} -E remove ${CUDA_ADDITIONAL_CLEAN_FILES}) + + # Clear out the variable, so the next time we configure it will be empty. + # This is useful so that the files won't persist in the list after targets + # have been removed. + set(CUDA_ADDITIONAL_CLEAN_FILES "" CACHE INTERNAL "List of intermediate files that are part of the cuda dependency scanning.") +endmacro(CUDA_BUILD_CLEAN_TARGET) diff --git a/Modules/FindCUDA/make2cmake.cmake b/Modules/FindCUDA/make2cmake.cmake new file mode 100755 index 000000000..19e47d57b --- /dev/null +++ b/Modules/FindCUDA/make2cmake.cmake @@ -0,0 +1,80 @@ +# James Bigler, NVIDIA Corp (nvidia.com - jbigler) +# Abe Stephens, SCI Institute -- http://www.sci.utah.edu/~abe/FindCuda.html +# +# Copyright (c) 2008-2009 +# NVIDIA Corp. +# +# Copyright (c) 2007-2009 +# Scientific Computing and Imaging Institute, University of Utah +# +# This code is licensed under the MIT License. See the FindCUDA.cmake script +# for the text of the license. + +# The MIT License +# +# License for the specific language governing rights and limitations under +# 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# + +####################################################################### +# This converts a file written in makefile syntax into one that can be included +# by CMake. + +file(READ ${input_file} depend_text) + +if (${depend_text} MATCHES ".+") + + # message("FOUND DEPENDS") + + # Remember, four backslashes is escaped to one backslash in the string. + string(REGEX REPLACE "\\\\ " " " depend_text ${depend_text}) + + # This works for the nvcc -M generated dependency files. + string(REGEX REPLACE "^.* : " "" depend_text ${depend_text}) + string(REGEX REPLACE "[ \\\\]*\n" ";" depend_text ${depend_text}) + + set(dependency_list "") + + foreach(file ${depend_text}) + + string(REGEX REPLACE "^ +" "" file ${file}) + + if(NOT IS_DIRECTORY ${file}) + # If softlinks start to matter, we should change this to REALPATH. For now we need + # to flatten paths, because nvcc can generate stuff like /bin/../include instead of + # just /include. + get_filename_component(file_absolute "${file}" ABSOLUTE) + list(APPEND dependency_list "${file_absolute}") + endif(NOT IS_DIRECTORY ${file}) + + endforeach(file) + +else() + # message("FOUND NO DEPENDS") +endif() + +# Remove the duplicate entries and sort them. +list(REMOVE_DUPLICATES dependency_list) +list(SORT dependency_list) + +foreach(file ${dependency_list}) + set(cuda_nvcc_depend "${cuda_nvcc_depend} \"${file}\"\n") +endforeach() + +file(WRITE ${output_file} "# Generated by: make2cmake.cmake\nSET(CUDA_NVCC_DEPEND\n ${cuda_nvcc_depend})\n\n") diff --git a/Modules/FindCUDA/parse_cubin.cmake b/Modules/FindCUDA/parse_cubin.cmake new file mode 100644 index 000000000..b41dd63da --- /dev/null +++ b/Modules/FindCUDA/parse_cubin.cmake @@ -0,0 +1,113 @@ +# James Bigler, NVIDIA Corp (nvidia.com - jbigler) +# Abe Stephens, SCI Institute -- http://www.sci.utah.edu/~abe/FindCuda.html +# +# Copyright (c) 2008-2009 +# NVIDIA Corp. +# +# Copyright (c) 2007-2009 +# Scientific Computing and Imaging Institute, University of Utah +# +# This code is licensed under the MIT License. See the FindCUDA.cmake script +# for the text of the license. + +# The MIT License +# +# License for the specific language governing rights and limitations under +# 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +# + +####################################################################### +# Parses a .cubin file produced by nvcc and reports statistics about the file. + + +file(READ ${input_file} file_text) + +if (${file_text} MATCHES ".+") + + # Remember, four backslashes is escaped to one backslash in the string. + string(REGEX REPLACE ";" "\\\\;" file_text ${file_text}) + string(REGEX REPLACE "\ncode" ";code" file_text ${file_text}) + + list(LENGTH file_text len) + + foreach(line ${file_text}) + + # Only look at "code { }" blocks. + if(line MATCHES "^code") + + # Break into individual lines. + string(REGEX REPLACE "\n" ";" line ${line}) + + foreach(entry ${line}) + + # Extract kernel names. + if (${entry} MATCHES "[^g]name = ([^ ]+)") + string(REGEX REPLACE ".* = ([^ ]+)" "\\1" entry ${entry}) + + # Check to see if the kernel name starts with "_" + set(skip FALSE) + # if (${entry} MATCHES "^_") + # Skip the rest of this block. + # message("Skipping ${entry}") + # set(skip TRUE) + # else (${entry} MATCHES "^_") + message("Kernel: ${entry}") + # endif (${entry} MATCHES "^_") + + endif(${entry} MATCHES "[^g]name = ([^ ]+)") + + # Skip the rest of the block if necessary + if(NOT skip) + + # Registers + if (${entry} MATCHES "reg([ ]+)=([ ]+)([^ ]+)") + string(REGEX REPLACE ".*([ ]+)=([ ]+)([^ ]+)" "\\3" entry ${entry}) + message("Registers: ${entry}") + endif() + + # Local memory + if (${entry} MATCHES "lmem([ ]+)=([ ]+)([^ ]+)") + string(REGEX REPLACE ".*([ ]+)=([ ]+)([^ ]+)" "\\3" entry ${entry}) + message("Local: ${entry}") + endif() + + # Shared memory + if (${entry} MATCHES "smem([ ]+)=([ ]+)([^ ]+)") + string(REGEX REPLACE ".*([ ]+)=([ ]+)([^ ]+)" "\\3" entry ${entry}) + message("Shared: ${entry}") + endif() + + if (${entry} MATCHES "^}") + message("") + endif() + + endif(NOT skip) + + + endforeach(entry) + + endif(line MATCHES "^code") + + endforeach(line) + +else() + # message("FOUND NO DEPENDS") +endif() + + diff --git a/Modules/FindCUDA/run_nvcc.cmake b/Modules/FindCUDA/run_nvcc.cmake new file mode 100755 index 000000000..9baca161a --- /dev/null +++ b/Modules/FindCUDA/run_nvcc.cmake @@ -0,0 +1,266 @@ +# James Bigler, NVIDIA Corp (nvidia.com - jbigler) +# +# Copyright (c) 2008-2009 +# NVIDIA Corp. +# +# This code is licensed under the MIT License. See the FindCUDA.cmake script +# for the text of the license. + +# The MIT License +# +# License for the specific language governing rights and limitations under +# 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + + +########################################################################## +# This file runs the nvcc commands to produce the desired output file along with +# the dependency file needed by CMake to compute dependencies. In addition the +# file checks the output of each command and if the command fails it deletes the +# output files. + +# Input variables +# +# verbose:BOOL=<> OFF: Be as quiet as possible (default) +# ON : Describe each step +# +# build_configuration:STRING=<> Typically one of Debug, MinSizeRel, Release, or +# RelWithDebInfo, but it should match one of the +# entries in CUDA_HOST_FLAGS. This is the build +# configuration used when compiling the code. If +# blank or unspecified Debug is assumed as this is +# what CMake does. +# +# generated_file:STRING=<> File to generate. This argument must be passed in. +# +# generated_cubin_file:STRING=<> File to generate. This argument must be passed +# in if build_cubin is true. + +if(NOT generated_file) + message(FATAL_ERROR "You must specify generated_file on the command line") +endif() + +# Set these up as variables to make reading the generated file easier +set(CMAKE_COMMAND "@CMAKE_COMMAND@") +set(source_file "@source_file@") +set(NVCC_generated_dependency_file "@NVCC_generated_dependency_file@") +set(cmake_dependency_file "@cmake_dependency_file@") +set(CUDA_make2cmake "@CUDA_make2cmake@") +set(CUDA_parse_cubin "@CUDA_parse_cubin@") +set(build_cubin @build_cubin@) +# We won't actually use these variables for now, but we need to set this, in +# order to force this file to be run again if it changes. +set(generated_file_path "@generated_file_path@") +set(generated_file_internal "@generated_file@") +set(generated_cubin_file_internal "@generated_cubin_file@") + +set(CUDA_NVCC_EXECUTABLE "@CUDA_NVCC_EXECUTABLE@") +set(CUDA_NVCC_FLAGS "@CUDA_NVCC_FLAGS@;;@CUDA_WRAP_OPTION_NVCC_FLAGS@") +@CUDA_NVCC_FLAGS_CONFIG@ +set(nvcc_flags "@nvcc_flags@") +set(CUDA_NVCC_INCLUDE_ARGS "@CUDA_NVCC_INCLUDE_ARGS@") +set(format_flag "@format_flag@") + +if(build_cubin AND NOT generated_cubin_file) + message(FATAL_ERROR "You must specify generated_cubin_file on the command line") +endif() + +# This is the list of host compilation flags. It C or CXX should already have +# been chosen by FindCUDA.cmake. +@CUDA_HOST_FLAGS@ + +# Take the compiler flags and package them up to be sent to the compiler via -Xcompiler +set(nvcc_host_compiler_flags "") +# If we weren't given a build_configuration, use Debug. +if(NOT build_configuration) + set(build_configuration Debug) +endif() +string(TOUPPER "${build_configuration}" build_configuration) +#message("CUDA_NVCC_HOST_COMPILER_FLAGS = ${CUDA_NVCC_HOST_COMPILER_FLAGS}") +foreach(flag ${CMAKE_HOST_FLAGS} ${CMAKE_HOST_FLAGS_${build_configuration}}) + # Extra quotes are added around each flag to help nvcc parse out flags with spaces. + set(nvcc_host_compiler_flags "${nvcc_host_compiler_flags},\"${flag}\"") +endforeach() +if (nvcc_host_compiler_flags) + set(nvcc_host_compiler_flags "-Xcompiler" ${nvcc_host_compiler_flags}) +endif() +#message("nvcc_host_compiler_flags = \"${nvcc_host_compiler_flags}\"") +# Add the build specific configuration flags +list(APPEND CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS_${build_configuration}}) + +if(DEFINED CCBIN) + set(CCBIN -ccbin "${CCBIN}") +endif() + +# cuda_execute_process - Executes a command with optional command echo and status message. +# +# status - Status message to print if verbose is true +# command - COMMAND argument from the usual execute_process argument structure +# ARGN - Remaining arguments are the command with arguments +# +# CUDA_result - return value from running the command +# +# Make this a macro instead of a function, so that things like RESULT_VARIABLE +# and other return variables are present after executing the process. +macro(cuda_execute_process status command) + set(_command ${command}) + if(NOT _command STREQUAL "COMMAND") + message(FATAL_ERROR "Malformed call to cuda_execute_process. Missing COMMAND as second argument. (command = ${command})") + endif() + if(verbose) + execute_process(COMMAND "${CMAKE_COMMAND}" -E echo -- ${status}) + # Now we need to build up our command string. We are accounting for quotes + # and spaces, anything else is left up to the user to fix if they want to + # copy and paste a runnable command line. + set(cuda_execute_process_string) + foreach(arg ${ARGN}) + # If there are quotes, excape them, so they come through. + string(REPLACE "\"" "\\\"" arg ${arg}) + # Args with spaces need quotes around them to get them to be parsed as a single argument. + if(arg MATCHES " ") + list(APPEND cuda_execute_process_string "\"${arg}\"") + else() + list(APPEND cuda_execute_process_string ${arg}) + endif() + endforeach() + # Echo the command + execute_process(COMMAND ${CMAKE_COMMAND} -E echo ${cuda_execute_process_string}) + endif(verbose) + # Run the command + execute_process(COMMAND ${ARGN} RESULT_VARIABLE CUDA_result ) +endmacro() + +# Delete the target file +cuda_execute_process( + "Removing ${generated_file}" + COMMAND "${CMAKE_COMMAND}" -E remove "${generated_file}" + ) + +# Make sure the output directory is present +cuda_execute_process( + "Creating output directory: ${generated_file_path}" + COMMAND "${CMAKE_COMMAND}" -E make_directory "${generated_file_path}" + ) + +# Generate the dependency file +cuda_execute_process( + "Generating dependency file: ${NVCC_generated_dependency_file}" + COMMAND "${CUDA_NVCC_EXECUTABLE}" + "${source_file}" + ${CUDA_NVCC_FLAGS} + ${nvcc_flags} + ${CCBIN} + ${nvcc_host_compiler_flags} + -DNVCC + -M + -o "${NVCC_generated_dependency_file}" + ${CUDA_NVCC_INCLUDE_ARGS} + ) + +if(CUDA_result) + message(FATAL_ERROR "Error generating ${generated_file}") +endif() + +# Generate the cmake readable dependency file to a temp file. Don't put the +# quotes just around the filenames for the input_file and output_file variables. +# CMake will pass the quotes through and not be able to find the file. +cuda_execute_process( + "Generating temporary cmake readable file: ${cmake_dependency_file}.tmp" + COMMAND "${CMAKE_COMMAND}" + -D "input_file:FILEPATH=${NVCC_generated_dependency_file}" + -D "output_file:FILEPATH=${cmake_dependency_file}.tmp" + -P "${CUDA_make2cmake}" + ) + +if(CUDA_result) + message(FATAL_ERROR "Error generating ${generated_file}") +endif() + +# Copy the file if it is different +cuda_execute_process( + "Copy if different ${cmake_dependency_file}.tmp to ${cmake_dependency_file}" + COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${cmake_dependency_file}.tmp" "${cmake_dependency_file}" + ) + +if(CUDA_result) + message(FATAL_ERROR "Error generating ${generated_file}") +endif() + +# Delete the temporary file +cuda_execute_process( + "Removing ${cmake_dependency_file}.tmp and ${NVCC_generated_dependency_file}" + COMMAND "${CMAKE_COMMAND}" -E remove "${cmake_dependency_file}.tmp" "${NVCC_generated_dependency_file}" + ) + +if(CUDA_result) + message(FATAL_ERROR "Error generating ${generated_file}") +endif() + +# Generate the code +cuda_execute_process( + "Generating ${generated_file}" + COMMAND "${CUDA_NVCC_EXECUTABLE}" + "${source_file}" + ${CUDA_NVCC_FLAGS} + ${nvcc_flags} + ${CCBIN} + ${nvcc_host_compiler_flags} + -DNVCC + ${format_flag} -o "${generated_file}" + ${CUDA_NVCC_INCLUDE_ARGS} + ) + +if(CUDA_result) + # Since nvcc can sometimes leave half done files make sure that we delete the output file. + cuda_execute_process( + "Removing ${generated_file}" + COMMAND "${CMAKE_COMMAND}" -E remove "${generated_file}" + ) + message(FATAL_ERROR "Error generating file ${generated_file}") +else() + if(verbose) + message("Generated ${generated_file} successfully.") + endif() +endif() + +# Cubin resource report commands. +if( build_cubin ) + # Run with -cubin to produce resource usage report. + cuda_execute_process( + "Generating ${generated_cubin_file}" + COMMAND "${CUDA_NVCC_EXECUTABLE}" + "${source_file}" + ${CUDA_NVCC_FLAGS} + ${nvcc_flags} + ${CCBIN} + ${nvcc_host_compiler_flags} + -DNVCC + -cubin + -o "${generated_cubin_file}" + ${CUDA_NVCC_INCLUDE_ARGS} + ) + + # Execute the parser script. + cuda_execute_process( + "Executing the parser script" + COMMAND "${CMAKE_COMMAND}" + -D "input_file:STRING=${generated_cubin_file}" + -P "${CUDA_parse_cubin}" + ) + +endif( build_cubin ) diff --git a/Modules/FindCURL.cmake b/Modules/FindCURL.cmake index 25a056aed..3d8ae3a63 100644 --- a/Modules/FindCURL.cmake +++ b/Modules/FindCURL.cmake @@ -5,6 +5,19 @@ # CURL_LIBRARIES - List of libraries when using curl. # CURL_FOUND - True if curl found. +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Look for the header file. FIND_PATH(CURL_INCLUDE_DIR NAMES curl/curl.h) MARK_AS_ADVANCED(CURL_INCLUDE_DIR) diff --git a/Modules/FindCVS.cmake b/Modules/FindCVS.cmake index ee3d86378..ff9776207 100644 --- a/Modules/FindCVS.cmake +++ b/Modules/FindCVS.cmake @@ -7,6 +7,19 @@ # message("CVS found: ${CVS_EXECUTABLE}") # endif(CVS_FOUND) +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # CVSNT get_filename_component( diff --git a/Modules/FindCoin3D.cmake b/Modules/FindCoin3D.cmake index e42d3e4ee..82d216a0c 100644 --- a/Modules/FindCoin3D.cmake +++ b/Modules/FindCoin3D.cmake @@ -8,7 +8,19 @@ # COIN3D_INCLUDE_DIRS - where the Inventor include directory can be found # COIN3D_LIBRARIES - Link to this to use Coin3D # - + +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) IF (WIN32) IF (CYGWIN) diff --git a/Modules/FindCups.cmake b/Modules/FindCups.cmake index 143cae980..5efc45b6e 100644 --- a/Modules/FindCups.cmake +++ b/Modules/FindCups.cmake @@ -7,11 +7,19 @@ # Set CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE to TRUE if you need a version which # features this function (i.e. at least 1.1.19) -# Copyright (c) 2006, Alexander Neundorf, +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Alexander Neundorf # -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) INCLUDE(CheckLibraryExists) diff --git a/Modules/FindCurses.cmake b/Modules/FindCurses.cmake index 6e12379b3..fa6819039 100644 --- a/Modules/FindCurses.cmake +++ b/Modules/FindCurses.cmake @@ -12,6 +12,19 @@ # Set CURSES_NEED_NCURSES to TRUE before the FIND_PACKAGE() command if NCurses # functionality is required. +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_LIBRARY(CURSES_CURSES_LIBRARY NAMES curses ) FIND_LIBRARY(CURSES_NCURSES_LIBRARY NAMES ncurses ) diff --git a/Modules/FindCxxTest.cmake b/Modules/FindCxxTest.cmake index 07082c63f..5abf992ed 100644 --- a/Modules/FindCxxTest.cmake +++ b/Modules/FindCxxTest.cmake @@ -20,7 +20,7 @@ # CXXTEST_PYTHON_TESTGEN_EXECUTABLE # The python-based test generator. # -# MACROS for use by CMake users: +# MACROS for optional use by CMake users: # # CXXTEST_ADD_TEST( ) # Creates a CxxTest runner and adds it to the CTest testing suite @@ -33,13 +33,17 @@ # #============== # Example Usage: # -# FIND_PACKAGE(CxxTest) -# INCLUDE_DIRECTORIES(${CXXTEST_INCLUDE_DIR}) +# find_package(CxxTest) +# if(CXXTEST_FOUND) +# include_directories(${CXXTEST_INCLUDE_DIR}) +# enable_testing() # -# ENABLE_TESTING() -# CXXTEST_ADD_TEST(unittest_foo foo_test.cc ${CMAKE_CURRENT_SOURCE_DIR}/foo_test.h) +# CXXTEST_ADD_TEST(unittest_foo foo_test.cc +# ${CMAKE_CURRENT_SOURCE_DIR}/foo_test.h) +# target_link_libraries(unittest_foo foo) # as needed +# endif() # -# This will: +# This will (if CxxTest is found): # 1. Invoke the testgen executable to autogenerate foo_test.cc in the # binary tree from "foo_test.h" in the current source directory. # 2. Create an executable and test called unittest_foo. @@ -59,11 +63,28 @@ # } # }; # + +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# Copyright 2008-2009 Philip Lowman # -# FindCxxTest.cmake -# Copyright (c) 2008 -# Philip Lowman +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. # +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# Version 1.2 (3/2/08) +# Included patch from Tyler Roscoe to have the perl & python binaries +# detected based on CXXTEST_INCLUDE_DIR +# Version 1.1 (2/9/08) +# Clarified example to illustrate need to call target_link_libraries() +# Changed commands to lowercase +# Added licensing info # Version 1.0 (1/8/08) # Fixed CXXTEST_INCLUDE_DIRS so it will work properly # Eliminated superfluous CXXTEST_FOUND assignment @@ -72,42 +93,45 @@ #============================================================= # CXXTEST_ADD_TEST (public macro) #============================================================= -MACRO(CXXTEST_ADD_TEST _cxxtest_testname _cxxtest_outfname) - SET(_cxxtest_real_outfname ${CMAKE_CURRENT_BINARY_DIR}/${_cxxtest_outfname}) - IF(CXXTEST_USE_PYTHON) - SET(_cxxtest_executable ${CXXTEST_PYTHON_TESTGEN_EXECUTABLE}) - ELSE() - SET(_cxxtest_executable ${CXXTEST_PERL_TESTGEN_EXECUTABLE}) - ENDIF() +macro(CXXTEST_ADD_TEST _cxxtest_testname _cxxtest_outfname) + set(_cxxtest_real_outfname ${CMAKE_CURRENT_BINARY_DIR}/${_cxxtest_outfname}) + if(CXXTEST_USE_PYTHON) + set(_cxxtest_executable ${CXXTEST_PYTHON_TESTGEN_EXECUTABLE}) + else() + set(_cxxtest_executable ${CXXTEST_PERL_TESTGEN_EXECUTABLE}) + endif() - ADD_CUSTOM_COMMAND( + add_custom_command( OUTPUT ${_cxxtest_real_outfname} DEPENDS ${ARGN} COMMAND ${_cxxtest_executable} --error-printer -o ${_cxxtest_real_outfname} ${ARGN} ) - SET_SOURCE_FILES_PROPERTIES(${_cxxtest_real_outfname} PROPERTIES GENERATED true) - ADD_EXECUTABLE(${_cxxtest_testname} ${_cxxtest_real_outfname}) + set_source_files_properties(${_cxxtest_real_outfname} PROPERTIES GENERATED true) + add_executable(${_cxxtest_testname} ${_cxxtest_real_outfname}) - IF(CMAKE_RUNTIME_OUTPUT_DIRECTORY) - ADD_TEST(${_cxxtest_testname} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${_cxxtest_testname}) - ELSEIF(EXECUTABLE_OUTPUT_PATH) - ADD_TEST(${_cxxtest_testname} ${EXECUTABLE_OUTPUT_PATH}/${_cxxtest_testname}) - ELSE() - ADD_TEST(${_cxxtest_testname} ${CMAKE_CURRENT_BINARY_DIR}/${_cxxtest_testname}) - ENDIF() + if(CMAKE_RUNTIME_OUTPUT_DIRECTORY) + add_test(${_cxxtest_testname} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${_cxxtest_testname}) + elseif(EXECUTABLE_OUTPUT_PATH) + add_test(${_cxxtest_testname} ${EXECUTABLE_OUTPUT_PATH}/${_cxxtest_testname}) + else() + add_test(${_cxxtest_testname} ${CMAKE_CURRENT_BINARY_DIR}/${_cxxtest_testname}) + endif() -ENDMACRO(CXXTEST_ADD_TEST) +endmacro(CXXTEST_ADD_TEST) #============================================================= # main() #============================================================= -FIND_PATH(CXXTEST_INCLUDE_DIR cxxtest/TestSuite.h) -FIND_PROGRAM(CXXTEST_PERL_TESTGEN_EXECUTABLE cxxtestgen.pl) -FIND_PROGRAM(CXXTEST_PYTHON_TESTGEN_EXECUTABLE cxxtestgen.py) +find_path(CXXTEST_INCLUDE_DIR cxxtest/TestSuite.h) +find_program(CXXTEST_PERL_TESTGEN_EXECUTABLE cxxtestgen.pl + PATHS ${CXXTEST_INCLUDE_DIR}) +find_program(CXXTEST_PYTHON_TESTGEN_EXECUTABLE cxxtestgen.py + PATHS ${CXXTEST_INCLUDE_DIR}) -INCLUDE(FindPackageHandleStandardArgs) +include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(CxxTest DEFAULT_MSG CXXTEST_INCLUDE_DIR) -SET(CXXTEST_INCLUDE_DIRS ${CXXTEST_INCLUDE_DIR}) + +set(CXXTEST_INCLUDE_DIRS ${CXXTEST_INCLUDE_DIR}) diff --git a/Modules/FindCygwin.cmake b/Modules/FindCygwin.cmake index def439e50..5b2bc5939 100644 --- a/Modules/FindCygwin.cmake +++ b/Modules/FindCygwin.cmake @@ -1,6 +1,19 @@ # - this module looks for Cygwin # +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF (WIN32) FIND_PATH(CYGWIN_INSTALL_PATH cygwin.bat diff --git a/Modules/FindDCMTK.cmake b/Modules/FindDCMTK.cmake old mode 100755 new mode 100644 index 5a35d2441..335826bc4 --- a/Modules/FindDCMTK.cmake +++ b/Modules/FindDCMTK.cmake @@ -10,6 +10,20 @@ # directories and compiled libraries if you've just compiled it in the # source tree. Just set it to the root of the tree where you extracted # the source. + +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # # Written for VXL by Amitha Perera. # diff --git a/Modules/FindDart.cmake b/Modules/FindDart.cmake index 35f6eb82c..f8c274733 100644 --- a/Modules/FindDart.cmake +++ b/Modules/FindDart.cmake @@ -3,6 +3,19 @@ # to point to where it found it. # +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PATH(DART_ROOT README.INSTALL $ENV{DART_ROOT} ${PROJECT_SOURCE_DIR}/Dart diff --git a/Modules/FindDevIL.cmake b/Modules/FindDevIL.cmake index 82ec3f10a..ae0f97d73 100644 --- a/Modules/FindDevIL.cmake +++ b/Modules/FindDevIL.cmake @@ -2,13 +2,26 @@ # http://openil.sourceforge.net/ # # This module sets: -# IL_LIBRARY the name of the IL library. -# ILU_LIBRARY the name of the ILU library. -# ILUT_LIBRARY the name of the ILUT library. +# IL_LIBRARIES the name of the IL library. These include the full path to the core DevIL library. This one has to be linked into the application. +# ILU_LIBRARIES the name of the ILU library. Again, the full path. This library is for filters and effects, not actual loading. It doesn't have to be linked if the functionality it provides is not used. +# ILUT_LIBRARIES the name of the ILUT library. Full path. This part of the library interfaces with OpenGL. It is not strictly needed in applications. # IL_INCLUDE_DIR where to find the il.h, ilu.h and ilut.h files. -# IL_FOUND this is set to TRUE if all the above variables were set. +# IL_FOUND this is set to TRUE if all the above variables were set. This will be set to false if ILU or ILUT are not found, even if they are not needed. In most systems, if one library is found all the others are as well. That's the way the DevIL developers release it. + +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# Copyright 2008 Christopher Harvey +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) -# Original file by: Christopher Harvey # TODO: Add version support. # Tested under Linux and Windows (MSVC) @@ -21,30 +34,30 @@ FIND_PATH(IL_INCLUDE_DIR il.h #MESSAGE("IL_INCLUDE_DIR is ${IL_INCLUDE_DIR}") -FIND_LIBRARY(IL_LIBRARY - NAMES IL +FIND_LIBRARY(IL_LIBRARIES + NAMES IL DEVIL PATH_SUFFIXES lib64 lib lib32 DOC "The file that corresponds to the base il library." ) -#MESSAGE("IL_LIBRARY is ${IL_LIBRARY}") +#MESSAGE("IL_LIBRARIES is ${IL_LIBRARIES}") -FIND_LIBRARY(ILUT_LIBRARY +FIND_LIBRARY(ILUT_LIBRARIES NAMES ILUT PATH_SUFFIXES lib64 lib lib32 DOC "The file that corresponds to the il (system?) utility library." ) -#MESSAGE("ILUT_LIBRARY is ${ILUT_LIBRARY}") +#MESSAGE("ILUT_LIBRARIES is ${ILUT_LIBRARIES}") -FIND_LIBRARY(ILU_LIBRARY +FIND_LIBRARY(ILU_LIBRARIES NAMES ILU PATH_SUFFIXES lib64 lib lib32 DOC "The file that corresponds to the il utility library." ) -#MESSAGE("ILU_LIBRARY is ${ILU_LIBRARY}") +#MESSAGE("ILU_LIBRARIES is ${ILU_LIBRARIES}") FIND_PACKAGE_HANDLE_STANDARD_ARGS(IL DEFAULT_MSG - IL_LIBRARY ILU_LIBRARY - ILUT_LIBRARY IL_INCLUDE_DIR) + IL_LIBRARIES ILU_LIBRARIES + ILUT_LIBRARIES IL_INCLUDE_DIR) diff --git a/Modules/FindDoxygen.cmake b/Modules/FindDoxygen.cmake index 2cbe7b4a4..5e5ed1323 100644 --- a/Modules/FindDoxygen.cmake +++ b/Modules/FindDoxygen.cmake @@ -18,6 +18,19 @@ # # +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # For backwards compatibility support IF(Doxygen_FIND_QUIETLY) SET(DOXYGEN_FIND_QUIETLY TRUE) diff --git a/Modules/FindEXPAT.cmake b/Modules/FindEXPAT.cmake index ee804e1ff..1c4c16336 100644 --- a/Modules/FindEXPAT.cmake +++ b/Modules/FindEXPAT.cmake @@ -5,6 +5,19 @@ # EXPAT_LIBRARIES - List of libraries when using expat. # EXPAT_FOUND - True if expat found. +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Look for the header file. FIND_PATH(EXPAT_INCLUDE_DIR NAMES expat.h) diff --git a/Modules/FindFLEX.cmake b/Modules/FindFLEX.cmake new file mode 100644 index 000000000..b9df0653e --- /dev/null +++ b/Modules/FindFLEX.cmake @@ -0,0 +1,141 @@ +# - Find flex executable and provides a macro to generate custom build rules +# +# The module defines the following variables: +# FLEX_FOUND - true is flex executable is found +# FLEX_EXECUTABLE - the path to the flex executable +# FLEX_VERSION - the version of flex +# FLEX_LIBRARIES - The flex libraries +# +# If flex is found on the system, the module provides the macro: +# FLEX_TARGET(Name FlexInput FlexOutput [COMPILE_FLAGS ]) +# which creates a custom command to generate the file from +# the file. If COMPILE_FLAGS option is specified, the next +# parameter is added to the flex command line. Name is an alias used to +# get details of this custom command. Indeed the macro defines the +# following variables: +# FLEX_${Name}_DEFINED - true is the macro ran successfully +# FLEX_${Name}_OUTPUTS - the source file generated by the custom rule, an +# alias for FlexOutput +# FLEX_${Name}_INPUT - the flex source file, an alias for ${FlexInput} +# +# Flex scanners oftenly use tokens defined by Bison: the code generated +# by Flex depends of the header generated by Bison. This module also +# defines a macro: +# ADD_FLEX_BISON_DEPENDENCY(FlexTarget BisonTarget) +# which adds the required dependency between a scanner and a parser +# where and are the first parameters of +# respectively FLEX_TARGET and BISON_TARGET macros. +# +#==================================================================== +# Example: +# +# find_package(BISON) +# find_package(FLEX) +# +# BISON_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp +# FLEX_TARGET(MyScanner lexer.l ${CMAKE_CURRENT_BIANRY_DIR}/lexer.cpp) +# ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser) +# +# include_directories(${CMAKE_CURRENT_BINARY_DIR}) +# add_executable(Foo +# Foo.cc +# ${BISON_MyParser_OUTPUTS} +# ${FLEX_MyScanner_OUTPUTS} +# ) +#==================================================================== + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2006 Tristan Carel +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +FIND_PROGRAM(FLEX_EXECUTABLE flex DOC "path to the flex executable") +MARK_AS_ADVANCED(FLEX_EXECUTABLE) + +FIND_LIBRARY(FL_LIBRARY NAMES fl + DOC "path to the fl library") +MARK_AS_ADVANCED(FL_LIBRARY) +SET(FLEX_LIBRARIES ${FL_LIBRARY}) + +IF(FLEX_EXECUTABLE) + + EXECUTE_PROCESS(COMMAND ${FLEX_EXECUTABLE} --version + OUTPUT_VARIABLE FLEX_version_output + ERROR_VARIABLE FLEX_version_error + RESULT_VARIABLE FLEX_version_result + OUTPUT_STRIP_TRAILING_WHITESPACE) + IF(NOT ${FLEX_version_result} EQUAL 0) + MESSAGE(SEND_ERROR "Command \"${FLEX_EXECUTABLE} --version\" failed with output:\n${FLEX_version_error}") + ELSE() + STRING(REGEX REPLACE "^flex (.*)$" "\\1" + FLEX_VERSION "${FLEX_version_output}") + ENDIF() + + #============================================================ + # FLEX_TARGET (public macro) + #============================================================ + # + MACRO(FLEX_TARGET Name Input Output) + SET(FLEX_TARGET_usage "FLEX_TARGET( [COMPILE_FLAGS ]") + IF(${ARGC} GREATER 3) + IF(${ARGC} EQUAL 5) + IF("${ARGV3}" STREQUAL "COMPILE_FLAGS") + SET(FLEX_EXECUTABLE_opts "${ARGV4}") + SEPARATE_ARGUMENTS(FLEX_EXECUTABLE_opts) + ELSE() + MESSAGE(SEND_ERROR ${FLEX_TARGET_usage}) + ENDIF() + ELSE() + MESSAGE(SEND_ERROR ${FLEX_TARGET_usage}) + ENDIF() + ENDIF() + + ADD_CUSTOM_COMMAND(OUTPUT ${Output} + COMMAND ${FLEX_EXECUTABLE} + ARGS ${FLEX_EXECUTABLE_opts} -o${Output} ${Input} + DEPENDS ${Input} + COMMENT "[FLEX][${Name}] Building scanner with flex ${FLEX_VERSION}" + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + + SET(FLEX_${Name}_DEFINED TRUE) + SET(FLEX_${Name}_OUTPUTS ${Output}) + SET(FLEX_${Name}_INPUT ${Input}) + SET(FLEX_${Name}_COMPILE_FLAGS ${FLEX_EXECUTABLE_opts}) + ENDMACRO(FLEX_TARGET) + #============================================================ + + + #============================================================ + # ADD_FLEX_BISON_DEPENDENCY (public macro) + #============================================================ + # + MACRO(ADD_FLEX_BISON_DEPENDENCY FlexTarget BisonTarget) + + IF(NOT FLEX_${FlexTarget}_OUTPUTS) + MESSAGE(SEND_ERROR "Flex target `${FlexTarget}' does not exists.") + ENDIF() + + IF(NOT BISON_${BisonTarget}_OUTPUT_HEADER) + MESSAGE(SEND_ERROR "Bison target `${BisonTarget}' does not exists.") + ENDIF() + + SET_SOURCE_FILES_PROPERTIES(${FLEX_${FlexTarget}_OUTPUTS} + PROPERTIES OBJECT_DEPENDS ${BISON_${BisonTarget}_OUTPUT_HEADER}) + ENDMACRO(ADD_FLEX_BISON_DEPENDENCY) + #============================================================ + +ENDIF(FLEX_EXECUTABLE) + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(FLEX DEFAULT_MSG FLEX_EXECUTABLE) + +# FindFLEX.cmake ends here diff --git a/Modules/FindFLTK.cmake b/Modules/FindFLTK.cmake index 25ddb189c..02b201547 100644 --- a/Modules/FindFLTK.cmake +++ b/Modules/FindFLTK.cmake @@ -29,6 +29,19 @@ # FLTK_FORMS_LIBRARY = the full path to fltk_forms.lib # FLTK_IMAGES_LIBRARY = the full path to fltk_images.lib +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF(NOT FLTK_SKIP_OPENGL) FIND_PACKAGE(OpenGL) ENDIF() @@ -45,7 +58,7 @@ IF(WIN32) ENDIF(WIN32) IF(UNIX) - INCLUDE(${CMAKE_ROOT}/Modules/FindX11.cmake) + INCLUDE(FindX11) FIND_LIBRARY(FLTK_MATH_LIBRARY m) SET( FLTK_PLATFORM_DEPENDENT_LIBS ${X11_LIBRARIES} ${FLTK_MATH_LIBRARY}) ENDIF(UNIX) diff --git a/Modules/FindFLTK2.cmake b/Modules/FindFLTK2.cmake old mode 100755 new mode 100644 index a43475813..6411ccbeb --- a/Modules/FindFLTK2.cmake +++ b/Modules/FindFLTK2.cmake @@ -10,6 +10,19 @@ # FLTK2_GL_LIBRARY = the full path to fltk2_gl.lib # FLTK2_IMAGES_LIBRARY = the full path to fltk2_images.lib +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + SET (FLTK2_DIR $ENV{FLTK2_DIR} ) # Platform dependent libraries required by FLTK2 diff --git a/Modules/FindFreetype.cmake b/Modules/FindFreetype.cmake index 3c83bfa7d..0a6f93e6e 100644 --- a/Modules/FindFreetype.cmake +++ b/Modules/FindFreetype.cmake @@ -11,6 +11,19 @@ # correspond to the ./configure --prefix=$FREETYPE_DIR # used in building FREETYPE. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Created by Eric Wing. # Modifications by Alexander Neundorf. # This file has been renamed to "FindFreetype.cmake" instead of the correct diff --git a/Modules/FindGCCXML.cmake b/Modules/FindGCCXML.cmake index 594f970ee..d618487b8 100644 --- a/Modules/FindGCCXML.cmake +++ b/Modules/FindGCCXML.cmake @@ -1,4 +1,18 @@ # - Find the GCC-XML front-end executable. + +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PROGRAM(GCCXML NAMES gccxml ../GCC_XML/gccxml diff --git a/Modules/FindGDAL.cmake b/Modules/FindGDAL.cmake index e69ee3f7a..d3b198a63 100644 --- a/Modules/FindGDAL.cmake +++ b/Modules/FindGDAL.cmake @@ -9,6 +9,20 @@ # GDAL_FOUND - True if libgdal is found # GDAL_LIBRARY - A variable pointing to the GDAL library # GDAL_INCLUDE_DIR - Where to find the headers + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # # $GDALDIR is an environment variable that would # correspond to the ./configure --prefix=$GDAL_DIR diff --git a/Modules/FindGIF.cmake b/Modules/FindGIF.cmake index 1d3a5ec1e..36bf1dcef 100644 --- a/Modules/FindGIF.cmake +++ b/Modules/FindGIF.cmake @@ -6,6 +6,19 @@ # $GIF_DIR is an environment variable that would # correspond to the ./configure --prefix=$GIF_DIR +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Created by Eric Wing. # Modifications by Alexander Neundorf diff --git a/Modules/FindGLU.cmake b/Modules/FindGLU.cmake index fa56a5168..96b6dc910 100644 --- a/Modules/FindGLU.cmake +++ b/Modules/FindGLU.cmake @@ -1,4 +1,16 @@ +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) # Use of this file is deprecated, and is here for backwards compatibility with CMake 1.4 # GLU library is now found by FindOpenGL.cmake diff --git a/Modules/FindGLUT.cmake b/Modules/FindGLUT.cmake index c838b0191..baf539af4 100644 --- a/Modules/FindGLUT.cmake +++ b/Modules/FindGLUT.cmake @@ -7,6 +7,19 @@ # GLUT_Xmu_LIBRARY = the full path to the Xmu library. # GLUT_Xi_LIBRARY = the full path to the Xi Library. +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF (WIN32) FIND_PATH( GLUT_INCLUDE_DIR NAMES GL/glut.h PATHS ${GLUT_ROOT_PATH}/include ) diff --git a/Modules/FindGTK.cmake b/Modules/FindGTK.cmake index 7d802415b..75890df31 100644 --- a/Modules/FindGTK.cmake +++ b/Modules/FindGTK.cmake @@ -4,6 +4,19 @@ # GTK_FOUND - GTK was found # GTK_GL_FOUND - GTK's GL features were found +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # don't even bother under WIN32 IF(UNIX) diff --git a/Modules/FindGTK2.cmake b/Modules/FindGTK2.cmake new file mode 100644 index 000000000..39beae9bb --- /dev/null +++ b/Modules/FindGTK2.cmake @@ -0,0 +1,546 @@ +# - FindGTK2.cmake +# This module can find the GTK2 widget libraries and several of its other +# optional components like gtkmm, glade, and glademm. +# +# NOTE: If you intend to use version checking, CMake 2.6.2 or later is +# required. +# +# Specify one or more of the following components +# as you call this find module. See example below. +# +# gtk +# gtkmm +# glade +# glademm +# +# The following variables will be defined for your use +# +# GTK2_FOUND - Were all of your specified components found? +# GTK2_INCLUDE_DIRS - All include directories +# GTK2_LIBRARIES - All libraries +# +# GTK2_VERSION - The version of GTK2 found (x.y.z) +# GTK2_MAJOR_VERSION - The major version of GTK2 +# GTK2_MINOR_VERSION - The minor version of GTK2 +# GTK2_PATCH_VERSION - The patch version of GTK2 +# +# Optional variables you can define prior to calling this module: +# +# GTK2_DEBUG - Enables verbose debugging of the module +# GTK2_SKIP_MARK_AS_ADVANCED - Disable marking cache variables as advanced +# +#================= +# Example Usage: +# +# Call find_package() once, here are some examples to pick from: +# +# Require GTK 2.6 or later +# find_package(GTK2 2.6 REQUIRED gtk) +# +# Require GTK 2.10 or later and Glade +# find_package(GTK2 2.10 REQUIRED gtk glade) +# +# Search for GTK/GTKMM 2.8 or later +# find_package(GTK2 2.8 COMPONENTS gtk gtkmm) +# +# if(GTK2_FOUND) +# include_directories(${GTK2_INCLUDE_DIRS}) +# add_executable(mygui mygui.cc) +# target_link_libraries(mygui ${GTK2_LIBRARIES}) +# endif() +# + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2008-2009 Philip Lowman +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# Version 0.7 (3/22/09) +# * Checked into CMake CVS +# * Added versioning support +# * Module now defaults to searching for GTK if COMPONENTS not specified. +# * Added HKCU prior to HKLM registry key and GTKMM specific environment +# variable as per mailing list discussion. +# * Added lib64 to include search path and a few other search paths where GTK +# may be installed on Unix systems. +# * Switched to lowercase CMake commands +# * Prefaced internal variables with _GTK2 to prevent collision +# * Changed internal macros to functions +# * Enhanced documentation +# Version 0.6 (1/8/08) +# Added GTK2_SKIP_MARK_AS_ADVANCED option +# Version 0.5 (12/19/08) +# Second release to cmake mailing list + +#============================================================= +# _GTK2_GET_VERSION +# Internal function to parse the version number in gtkversion.h +# _OUT_major = Major version number +# _OUT_minor = Minor version number +# _OUT_micro = Micro version number +# _gtkversion_hdr = Header file to parse +#============================================================= +function(_GTK2_GET_VERSION _OUT_major _OUT_minor _OUT_micro _gtkversion_hdr) + file(READ ${_gtkversion_hdr} _contents) + if(_contents) + string(REGEX REPLACE ".*#define GTK_MAJOR_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_major} "${_contents}") + string(REGEX REPLACE ".*#define GTK_MINOR_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_minor} "${_contents}") + string(REGEX REPLACE ".*#define GTK_MICRO_VERSION[ \t]+\\(([0-9]+)\\).*" "\\1" ${_OUT_micro} "${_contents}") + + if(NOT ${_OUT_major} MATCHES "[0-9]+") + message(FATAL_ERROR "Version parsing failed for GTK2_MAJOR_VERSION!") + endif() + if(NOT ${_OUT_minor} MATCHES "[0-9]+") + message(FATAL_ERROR "Version parsing failed for GTK2_MINOR_VERSION!") + endif() + if(NOT ${_OUT_micro} MATCHES "[0-9]+") + message(FATAL_ERROR "Version parsing failed for GTK2_MICRO_VERSION!") + endif() + + set(${_OUT_major} ${${_OUT_major}} PARENT_SCOPE) + set(${_OUT_minor} ${${_OUT_minor}} PARENT_SCOPE) + set(${_OUT_micro} ${${_OUT_micro}} PARENT_SCOPE) + else() + message(FATAL_ERROR "Include file ${_gtkversion_hdr} does not exist") + endif() +endfunction() + +#============================================================= +# _GTK2_FIND_INCLUDE_DIR +# Internal function to find the GTK include directories +# _var = variable to set +# _hdr = header file to look for +#============================================================= +function(_GTK2_FIND_INCLUDE_DIR _var _hdr) + + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "_GTK2_FIND_INCLUDE_DIR( ${_var} ${_hdr} )") + endif() + + set(_relatives + # FIXME + glibmm-2.4 + glib-2.0 + atk-1.0 + atkmm-1.6 + cairo + cairomm-1.0 + gdkmm-2.4 + giomm-2.4 + gtk-2.0 + gtkmm-2.4 + libglade-2.0 + libglademm-2.4 + pango-1.0 + pangomm-1.4 + sigc++-2.0 + ) + + set(_suffixes) + foreach(_d ${_relatives}) + list(APPEND _suffixes ${_d}) + list(APPEND _suffixes ${_d}/include) # for /usr/lib/gtk-2.0/include + endforeach() + + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "include suffixes = ${_suffixes}") + endif() + + find_path(${_var} ${_hdr} + PATHS + /usr/local/lib64 + /usr/local/lib + /usr/lib64 + /usr/lib + /opt/gnome/include + /opt/gnome/lib + /opt/openwin/include + /usr/openwin/lib + $ENV{GTKMM_BASEPATH}/include + $ENV{GTKMM_BASEPATH}/lib + [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/include + [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib + [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/include + [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib + PATH_SUFFIXES + ${_suffixes} + ) + + if(${_var}) + set(GTK2_INCLUDE_DIRS ${GTK2_INCLUDE_DIRS} ${${_var}} PARENT_SCOPE) + if(NOT GTK2_SKIP_MARK_AS_ADVANCED) + mark_as_advanced(${_var}) + endif() + endif() + +endfunction(_GTK2_FIND_INCLUDE_DIR) + +#============================================================= +# _GTK2_FIND_LIBRARY +# Internal function to find libraries packaged with GTK2 +# _var = library variable to create +#============================================================= +function(_GTK2_FIND_LIBRARY _var _lib _expand_vc _append_version) + + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "_GTK2_FIND_LIBRARY( ${_var} ${_lib} ${_expand_vc} ${_append_version} )") + endif() + + # Not GTK versions per se but the versions encoded into Windows + # import libraries (GtkMM 2.14.1 has a gtkmm-vc80-2_4.lib for example) + # Also the MSVC libraries use _ for . (this is handled below) + set(_versions 2.20 2.18 2.16 2.14 2.12 + 2.10 2.8 2.6 2.4 2.2 2.0 + 1.20 1.18 1.16 1.14 1.12 + 1.10 1.8 1.6 1.4 1.2 1.0) + + set(_library) + set(_library_d) + + set(_library ${_lib}) + + if(_expand_vc) + # Add vc80/vc90 midfixes + if(MSVC80) + set(_library ${_library}-vc80) + set(_library_d ${_library}-d) + elseif(MSVC90) + set(_library ${_library}-vc90) + set(_library_d ${_library}-d) + endif() + endif() + + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "After midfix addition = ${_library} and ${_library_d}") + endif() + + set(_lib_list) + set(_libd_list) + if(_append_version) + foreach(_ver ${_versions}) + list(APPEND _lib_list "${_library}-${_ver}") + list(APPEND _libd_list "${_library_d}-${_ver}") + endforeach() + else() + set(_lib_list ${_library}) + set(_libd_list ${_library_d}) + endif() + + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "library list = ${_lib_list} and library debug list = ${_libd_list}") + endif() + + # For some silly reason the MSVC libraries use _ instead of . + # in the version fields + if(_expand_vc AND MSVC) + set(_no_dots_lib_list) + set(_no_dots_libd_list) + foreach(_l ${_lib_list}) + string(REPLACE "." "_" _no_dots_library ${_l}) + list(APPEND _no_dots_lib_list ${_no_dots_library}) + endforeach() + # And for debug + set(_no_dots_libsd_list) + foreach(_l ${_libd_list}) + string(REPLACE "." "_" _no_dots_libraryd ${_l}) + list(APPEND _no_dots_libd_list ${_no_dots_libraryd}) + endforeach() + + # Copy list back to original names + set(_lib_list ${_no_dots_lib_list}) + set(_libd_list ${_no_dots_libd_list}) + endif() + + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "While searching for ${_var}, our proposed library list is ${_lib_list}") + endif() + + find_library(${_var} + NAMES ${_lib_list} + PATHS + /opt/gnome/lib + /opt/gnome/lib64 + /usr/openwin/lib + /usr/openwin/lib64 + $ENV{GTKMM_BASEPATH}/lib + [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib + [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib + ) + + if(_expand_vc AND MSVC) + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "While searching for ${_var}_DEBUG our proposed library list is ${_libd_list}") + endif() + + find_library(${_var}_DEBUG + NAMES ${_libd_list} + PATHS + $ENV{GTKMM_BASEPATH}/lib + [HKEY_CURRENT_USER\\SOFTWARE\\gtkmm\\2.4;Path]/lib + [HKEY_LOCAL_MACHINE\\SOFTWARE\\gtkmm\\2.4;Path]/lib + ) + + if(${_var} AND ${_var}_DEBUG) + if(NOT GTK2_SKIP_MARK_AS_ADVANCED) + mark_as_advanced(${_var}_DEBUG) + endif() + set(GTK2_LIBRARIES ${GTK2_LIBRARIES} optimized ${${_var}} debug ${${_var}_DEBUG}) + set(GTK2_LIBRARIES ${GTK2_LIBRARIES} PARENT_SCOPE) + endif() + else() + if(NOT GTK2_SKIP_MARK_AS_ADVANCED) + mark_as_advanced(${_var}) + endif() + set(GTK2_LIBRARIES ${GTK2_LIBRARIES} ${${_var}}) + set(GTK2_LIBRARIES ${GTK2_LIBRARIES} PARENT_SCOPE) + # Set debug to release + set(${_var}_DEBUG ${${_var}}) + set(${_var}_DEBUG ${${_var}} PARENT_SCOPE) + endif() +endfunction(_GTK2_FIND_LIBRARY) + +#============================================================= + +# +# main() +# + +set(GTK2_FOUND) +set(GTK2_INCLUDE_DIRS) +set(GTK2_LIBRARIES) + +if(NOT GTK2_FIND_COMPONENTS) + # Assume they only want GTK + set(GTK2_FIND_COMPONENTS gtk) +endif() + +# +# If specified, enforce version number +# +if(GTK2_FIND_VERSION) + cmake_minimum_required(VERSION 2.6.2) + set(GTK2_FAILED_VERSION_CHECK true) + if(GTK2_DEBUG) + message(STATUS "[FindGTK2.cmake:${CMAKE_CURRENT_LIST_LINE}] " + "Searching for version ${GTK2_FIND_VERSION}") + endif() + _GTK2_FIND_INCLUDE_DIR(GTK2_GTK_INCLUDE_DIR gtk/gtk.h) + if(GTK2_GTK_INCLUDE_DIR) + _GTK2_GET_VERSION(GTK2_MAJOR_VERSION + GTK2_MINOR_VERSION + GTK2_PATCH_VERSION + ${GTK2_GTK_INCLUDE_DIR}/gtk/gtkversion.h) + set(GTK2_VERSION + ${GTK2_MAJOR_VERSION}.${GTK2_MINOR_VERSION}.${GTK2_PATCH_VERSION}) + if(GTK2_FIND_VERSION_EXACT) + if(GTK2_VERSION VERSION_EQUAL GTK2_FIND_VERSION) + set(GTK2_FAILED_VERSION_CHECK false) + endif() + else() + if(GTK2_VERSION VERSION_EQUAL GTK2_FIND_VERSION OR + GTK2_VERSION VERSION_GREATER GTK2_FIND_VERSION) + set(GTK2_FAILED_VERSION_CHECK false) + endif() + endif() + else() + # If we can't find the GTK include dir, we can't do version checking + if(GTK2_FIND_REQUIRED AND NOT GTK2_FIND_QUIETLY) + message(FATAL_ERROR "Could not find GTK2 include directory") + endif() + return() + endif() + + if(GTK2_FAILED_VERSION_CHECK) + if(GTK2_FIND_REQUIRED AND NOT GTK2_FIND_QUIETLY) + if(GTK2_FIND_VERSION_EXACT) + message(FATAL_ERROR "GTK2 version check failed. Version ${GTK2_VERSION} was found, version ${GTK2_FIND_VERSION} is needed exactly.") + else() + message(FATAL_ERROR "GTK2 version check failed. Version ${GTK2_VERSION} was found, at least version ${GTK2_FIND_VERSION} is required") + endif() + endif() + + # If the version check fails, exit out of the module here + return() + endif() +endif() + +# +# Find all components +# + +foreach(_GTK2_component ${GTK2_FIND_COMPONENTS}) + if(_GTK2_component STREQUAL "gtk") + + _GTK2_FIND_INCLUDE_DIR(GTK2_GLIB_INCLUDE_DIR glib.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_GLIBCONFIG_INCLUDE_DIR glibconfig.h) + _GTK2_FIND_LIBRARY (GTK2_GLIB_LIBRARY glib false true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_GDK_INCLUDE_DIR gdk/gdk.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_GDKCONFIG_INCLUDE_DIR gdkconfig.h) + _GTK2_FIND_LIBRARY (GTK2_GDK_LIBRARY gdk-x11 false true) + _GTK2_FIND_LIBRARY (GTK2_GDK_LIBRARY gdk-win32 false true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_GTK_INCLUDE_DIR gtk/gtk.h) + _GTK2_FIND_LIBRARY (GTK2_GTK_LIBRARY gtk-x11 false true) + _GTK2_FIND_LIBRARY (GTK2_GTK_LIBRARY gtk-win32 false true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_CAIRO_INCLUDE_DIR cairo.h) + _GTK2_FIND_LIBRARY (GTK2_CAIRO_LIBRARY cairo false false) + + _GTK2_FIND_INCLUDE_DIR(GTK2_PANGO_INCLUDE_DIR pango/pango.h) + _GTK2_FIND_LIBRARY (GTK2_PANGO_LIBRARY pango false true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_ATK_INCLUDE_DIR atk/atk.h) + _GTK2_FIND_LIBRARY (GTK2_ATK_LIBRARY atk false true) + + #elseif(_GTK2_component STREQUAL "gdk_pixbuf") + #_GTK2_FIND_INCLUDE_DIR(GTK2_GDKPIXBUF_INCLUDE_DIR gdk-pixbuf/gdk-pixbuf.h) + #_GTK2_FIND_LIBRARY (GTK2_GDKPIXBUF_LIBRARY gdk_pixbuf false true) + + elseif(_GTK2_component STREQUAL "gtkmm") + + _GTK2_FIND_INCLUDE_DIR(GTK2_GLIBMM_INCLUDE_DIR glibmm.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_GLIBMMCONFIG_INCLUDE_DIR glibmmconfig.h) + _GTK2_FIND_LIBRARY (GTK2_GLIBMM_LIBRARY glibmm true true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_GDKMM_INCLUDE_DIR gdkmm.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_GDKMMCONFIG_INCLUDE_DIR gdkmmconfig.h) + _GTK2_FIND_LIBRARY (GTK2_GDKMM_LIBRARY gdkmm true true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_GTKMM_INCLUDE_DIR gtkmm.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_GTKMMCONFIG_INCLUDE_DIR gtkmmconfig.h) + _GTK2_FIND_LIBRARY (GTK2_GTKMM_LIBRARY gtkmm true true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_CAIROMM_INCLUDE_DIR cairomm/cairomm.h) + _GTK2_FIND_LIBRARY (GTK2_CAIROMM_LIBRARY cairomm true true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_PANGOMM_INCLUDE_DIR pangomm.h) + _GTK2_FIND_LIBRARY (GTK2_PANGOMM_LIBRARY pangomm true true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_SIGC++_INCLUDE_DIR sigc++/sigc++.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_SIGC++CONFIG_INCLUDE_DIR sigc++config.h) + _GTK2_FIND_LIBRARY (GTK2_SIGC++_LIBRARY sigc true true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_GIOMM_INCLUDE_DIR giomm.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_GIOMMCONFIG_INCLUDE_DIR giommconfig.h) + _GTK2_FIND_LIBRARY (GTK2_GIOMM_LIBRARY giomm true true) + + _GTK2_FIND_INCLUDE_DIR(GTK2_ATKMM_INCLUDE_DIR atkmm.h) + _GTK2_FIND_LIBRARY (GTK2_ATKMM_LIBRARY atkmm true true) + + elseif(_GTK2_component STREQUAL "glade") + + _GTK2_FIND_INCLUDE_DIR(GTK2_GLADE_INCLUDE_DIR glade/glade.h) + _GTK2_FIND_LIBRARY (GTK2_GLADE_LIBRARY glade false true) + + elseif(_GTK2_component STREQUAL "glademm") + + _GTK2_FIND_INCLUDE_DIR(GTK2_GLADEMM_INCLUDE_DIR libglademm.h) + _GTK2_FIND_INCLUDE_DIR(GTK2_GLADEMMCONFIG_INCLUDE_DIR libglademmconfig.h) + _GTK2_FIND_LIBRARY (GTK2_GLADEMM_LIBRARY glademm true true) + + else() + message(FATAL_ERROR "Unknown GTK2 component ${_component}") + endif() +endforeach() + +# +# Solve for the GTK2 version if we haven't already +# +if(NOT GTK2_FIND_VERSION AND GTK2_GTK_INCLUDE_DIR) + _GTK2_GET_VERSION(GTK2_MAJOR_VERSION + GTK2_MINOR_VERSION + GTK2_PATCH_VERSION + ${GTK2_GTK_INCLUDE_DIR}/gtk/gtkversion.h) + set(GTK2_VERSION ${GTK2_MAJOR_VERSION}.${GTK2_MINOR_VERSION}.${GTK2_PATCH_VERSION}) +endif() + +# +# Try to enforce components +# + +set(_GTK2_did_we_find_everything true) # This gets set to GTK2_FOUND + +include(FindPackageHandleStandardArgs) + +foreach(_GTK2_component ${GTK2_FIND_COMPONENTS}) + string(TOUPPER ${_GTK2_component} _COMPONENT_UPPER) + + if(_GTK2_component STREQUAL "gtk") + FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "Some or all of the gtk libraries were not found." + GTK2_GTK_LIBRARY + GTK2_GTK_INCLUDE_DIR + + GTK2_GLIB_INCLUDE_DIR + GTK2_GLIBCONFIG_INCLUDE_DIR + GTK2_GLIB_LIBRARY + + GTK2_GDK_INCLUDE_DIR + GTK2_GDKCONFIG_INCLUDE_DIR + GTK2_GDK_LIBRARY + ) + elseif(_GTK2_component STREQUAL "gtkmm") + FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "Some or all of the gtkmm libraries were not found." + GTK2_GTKMM_LIBRARY + GTK2_GTKMM_INCLUDE_DIR + GTK2_GTKMMCONFIG_INCLUDE_DIR + + GTK2_GLIBMM_INCLUDE_DIR + GTK2_GLIBMMCONFIG_INCLUDE_DIR + GTK2_GLIBMM_LIBRARY + + GTK2_GDKMM_INCLUDE_DIR + GTK2_GDKMMCONFIG_INCLUDE_DIR + GTK2_GDKMM_LIBRARY + ) + elseif(_GTK2_component STREQUAL "glade") + FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "The glade library was not found." + GTK2_GLADE_LIBRARY + GTK2_GLADE_INCLUDE_DIR + ) + elseif(_GTK2_component STREQUAL "glademm") + FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK2_${_COMPONENT_UPPER} "The glademm library was not found." + GTK2_GLADEMM_LIBRARY + GTK2_GLADEMM_INCLUDE_DIR + GTK2_GLADEMMCONFIG_INCLUDE_DIR + ) + endif() + + if(NOT GTK2_${_COMPONENT_UPPER}_FOUND) + set(_GTK2_did_we_find_everything false) + endif() +endforeach() + +if(_GTK2_did_we_find_everything AND NOT GTK2_VERSION_CHECK_FAILED) + set(GTK2_FOUND true) +else() + # Unset our variables. + set(GTK2_FOUND false) + set(GTK2_VERSION) + set(GTK2_VERSION_MAJOR) + set(GTK2_VERSION_MINOR) + set(GTK2_VERSION_PATCH) + set(GTK2_INCLUDE_DIRS) + set(GTK2_LIBRARIES) +endif() + +if(GTK2_INCLUDE_DIRS) + list(REMOVE_DUPLICATES GTK2_INCLUDE_DIRS) +endif() + diff --git a/Modules/FindGTest.cmake b/Modules/FindGTest.cmake new file mode 100644 index 000000000..4960b389c --- /dev/null +++ b/Modules/FindGTest.cmake @@ -0,0 +1,155 @@ +# Locate the Google C++ Testing Framework. +# +# Defines the following variables: +# +# GTEST_FOUND - Found the Google Testing framework +# GTEST_INCLUDE_DIRS - Include directories +# +# Also defines the library variables below as normal +# variables. These contain debug/optimized keywords when +# a debugging library is found. +# +# GTEST_BOTH_LIBRARIES - Both libgtest & libgtest-main +# GTEST_LIBRARIES - libgtest +# GTEST_MAIN_LIBRARIES - libgtest-main +# +# Accepts the following variables as input: +# +# GTEST_ROOT - (as CMake or env. variable) +# The root directory of the gtest install prefix +# +# GTEST_MSVC_SEARCH - If on MSVC, enables searching the build tree of +# GTest if set to MD or MT (defaults: MD) +# +#----------------------- +# Example Usage: +# +# enable_testing(true) +# find_package(GTest REQUIRED) +# include_directories(${GTEST_INCLUDE_DIRS}) +# +# add_executable(foo foo.cc) +# target_link_libraries(foo ${GTEST_BOTH_LIBRARIES}) +# +# add_test(AllTestsInFoo foo) +# +#----------------------- +# +# If you would like each Google test to show up in CTest as +# a test you may use the following macro. NOTE: It WILL slow +# down your tests, so be warned. +# +# GTEST_ADD_TESTS(executable extra_args ARGN) +# executable = The path to the test executable +# extra_args = Pass a list of extra arguments to be passed to +# executable enclosed in quotes (or "" for none) +# ARGN = A list of source files to search for tests & test +# fixtures. +# +# Example: +# set(FooTestArgs --foo 1 --bar 2) +# add_executable(FooTest FooUnitTest.cc) +# GTEST_ADD_TESTS(FooTest "${FooTestArgs}" FooUnitTest.cc) + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2009 Philip Lowman +# Copyright 2009 Daniel Blezek +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) +# +# Thanks to Daniel Blezek for the GTEST_ADD_TESTS code + +function(GTEST_ADD_TESTS executable extra_args) + if(NOT ARGN) + message(FATAL_ERROR "Missing ARGN: Read the documentation for GTEST_ADD_TESTS") + endif() + foreach(source ${ARGN}) + file(READ "${source}" contents) + string(REGEX MATCHALL "TEST_?F?\\(([A-Za-z_0-9 ,]+)\\)" found_tests ${contents}) + foreach(hit ${found_tests}) + string(REGEX REPLACE ".*\\(([A-Za-z_0-9]+)[, ]*([A-Za-z_0-9]+)\\).*" "\\1.\\2" test_name ${hit}) + add_test(${test_name} ${executable} --gtest_filter=${test_name} ${extra_args}) + endforeach() + endforeach() +endfunction() + +function(_gtest_append_debugs _endvar _library) + if(${_library} AND ${_library}_DEBUG) + set(_output optimized ${${_library}} debug ${${_library}_DEBUG}) + else() + set(_output ${${_library}}) + endif() + set(${_endvar} ${_output} PARENT_SCOPE) +endfunction() + +function(_gtest_find_library _name) + find_library(${_name} + NAMES ${ARGN} + HINTS + $ENV{GTEST_ROOT} + ${GTEST_ROOT} + PATH_SUFFIXES ${_gtest_libpath_suffixes} + ) + mark_as_advanced(${_name}) +endfunction() + +# + +if(NOT DEFINED GTEST_MSVC_SEARCH) + set(GTEST_MSVC_SEARCH MD) +endif() + +set(_gtest_libpath_suffixes lib) +if(MSVC) + if(GTEST_MSVC_SEARCH STREQUAL "MD") + list(APPEND _gtest_libpath_suffixes + msvc/gtest-md/Debug + msvc/gtest-md/Release) + elseif(GTEST_MSVC_SEARCH STREQUAL "MT") + list(APPEND _gtest_libpath_suffixes + msvc/gtest/Debug + msvc/gtest/Release) + endif() +endif() + + +find_path(GTEST_INCLUDE_DIR gtest/gtest.h + HINTS + $ENV{GTEST_ROOT}/include + ${GTEST_ROOT}/include +) +mark_as_advanced(GTEST_INCLUDE_DIR) + +if(MSVC AND GTEST_MSVC_SEARCH STREQUAL "MD") + # The provided /MD project files for Google Test add -md suffixes to the + # library names. + _gtest_find_library(GTEST_LIBRARY gtest-md gtest) + _gtest_find_library(GTEST_LIBRARY_DEBUG gtest-mdd gtestd) + _gtest_find_library(GTEST_MAIN_LIBRARY gtest_main-md gtest_main) + _gtest_find_library(GTEST_MAIN_LIBRARY_DEBUG gtest_main-mdd gtest_maind) +else() + _gtest_find_library(GTEST_LIBRARY gtest) + _gtest_find_library(GTEST_LIBRARY_DEBUG gtestd) + _gtest_find_library(GTEST_MAIN_LIBRARY gtest_main) + _gtest_find_library(GTEST_MAIN_LIBRARY_DEBUG gtest_maind) +endif() + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTest DEFAULT_MSG GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY) + +if(GTEST_FOUND) + set(GTEST_INCLUDE_DIRS ${GTEST_INCLUDE_DIR}) + _gtest_append_debugs(GTEST_LIBRARIES GTEST_LIBRARY) + _gtest_append_debugs(GTEST_MAIN_LIBRARIES GTEST_MAIN_LIBRARY) + set(GTEST_BOTH_LIBRARIES ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES}) +endif() + diff --git a/Modules/FindGettext.cmake b/Modules/FindGettext.cmake index c7dee5257..cdef44f60 100644 --- a/Modules/FindGettext.cmake +++ b/Modules/FindGettext.cmake @@ -12,7 +12,18 @@ # ALL option is used, the translations will also be created when # building the default target. - +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) FIND_PROGRAM(GETTEXT_MSGMERGE_EXECUTABLE msgmerge) diff --git a/Modules/FindGnuTLS.cmake b/Modules/FindGnuTLS.cmake new file mode 100644 index 000000000..a70823fb8 --- /dev/null +++ b/Modules/FindGnuTLS.cmake @@ -0,0 +1,65 @@ +# - Try to find the GNU Transport Layer Security library (gnutls) +# +# Once done this will define +# +# GNUTLS_FOUND - System has gnutls +# GNUTLS_INCLUDE_DIR - The gnutls include directory +# GNUTLS_LIBRARIES - The libraries needed to use gnutls +# GNUTLS_DEFINITIONS - Compiler switches required for using gnutls + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2009 Philip Lowman +# Copyright 2009 Brad Hards +# Copyright 2006 Alexander Neundorf +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# Note that this doesn't try to find the gnutls-extra package. + + +IF (GNUTLS_INCLUDE_DIR AND GNUTLS_LIBRARY) + # in cache already + SET(gnutls_FIND_QUIETLY TRUE) +ENDIF (GNUTLS_INCLUDE_DIR AND GNUTLS_LIBRARY) + +IF (NOT WIN32) + # try using pkg-config to get the directories and then use these values + # in the FIND_PATH() and FIND_LIBRARY() calls + # also fills in GNUTLS_DEFINITIONS, although that isn't normally useful + FIND_PACKAGE(PkgConfig) + PKG_CHECK_MODULES(PC_GNUTLS gnutls) + SET(GNUTLS_DEFINITIONS ${PC_GNUTLS_CFLAGS_OTHER}) +ENDIF (NOT WIN32) + +FIND_PATH(GNUTLS_INCLUDE_DIR gnutls.h + HINTS + ${PC_GNUTLS_INCLUDEDIR} + ${PC_GNUTLS_INCLUDE_DIRS} + PATH_SUFFIXES gnutls + ) + +FIND_LIBRARY(GNUTLS_LIBRARY NAMES gnutls libgnutls + HINTS + ${PC_GNUTLS_LIBDIR} + ${PC_GNUTLS_LIBRARY_DIRS} + ) + +# handle the QUIETLY and REQUIRED arguments and set GNUTLS_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(GnuTLS DEFAULT_MSG GNUTLS_LIBRARY GNUTLS_INCLUDE_DIR) + +MARK_AS_ADVANCED(GNUTLS_INCLUDE_DIR GNUTLS_LIBRARY) + +SET(GNUTLS_LIBRARIES ${GNUTLS_LIBRARY}) +SET(GNUTLS_INCLUDE_DIRS ${GNUTLS_INCLUDE_DIR}) + diff --git a/Modules/FindGnuplot.cmake b/Modules/FindGnuplot.cmake index c12ebb70a..a9b9ee5c9 100644 --- a/Modules/FindGnuplot.cmake +++ b/Modules/FindGnuplot.cmake @@ -5,6 +5,19 @@ # GNUPLOT_FOUND - system has Gnuplot # GNUPLOT_EXECUTABLE - the Gnuplot executable +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + INCLUDE(FindCygwin) FIND_PROGRAM(GNUPLOT_EXECUTABLE diff --git a/Modules/FindHDF5.cmake b/Modules/FindHDF5.cmake new file mode 100644 index 000000000..277cbfa93 --- /dev/null +++ b/Modules/FindHDF5.cmake @@ -0,0 +1,322 @@ +# - Find HDF5, a library for reading and writing self describing array data. +# +# This module invokes the HDF5 wrapper compiler that should be installed +# alongside HDF5. Depending upon the HDF5 Configuration, the wrapper compiler +# is called either h5cc or h5pcc. If this succeeds, the module will then call +# the compiler with the -show argument to see what flags are used when compiling +# an HDF5 client application. +# +# The module will optionally accept the COMPONENTS argument. If no COMPONENTS +# are specified, then the find module will default to finding only the HDF5 C +# library. If one or more COMPONENTS are specified, the module will attempt to +# find the language bindings for the specified components. Currently, the only +# valid components are C and CXX. The module does not yet support finding the +# Fortran bindings. If the COMPONENTS argument is not given, the module will +# attempt to find only the C bindings. +# +# On UNIX systems, this module will read the variable HDF5_USE_STATIC_LIBRARIES +# to determine whether or not to prefer a static link to a dynamic link for HDF5 +# and all of it's dependencies. To use this feature, make sure that the +# HDF5_USE_STATIC_LIBRARIES variable is set before the call to find_package. +# +# To provide the module with a hint about where to find your HDF5 installation, +# you can set the environment variable HDF5_ROOT. The Find module will then +# look in this path when searching for HDF5 executables, paths, and libraries. +# +# In addition to finding the includes and libraries required to compile an HDF5 +# client application, this module also makes an effort to find tools that come +# with the HDF5 distribution that may be useful for regression testing. +# +# This module will define the following variables: +# HDF5_INCLUDE_DIR - Location of the hdf5 includes +# HDF5_DEFINITIONS - Required compiler definitions for HDF5 +# HDF5_C_LIBRARIES - Required libraries for the HDF5 C bindings. +# HDF5_CXX_LIBRARIES - Required libraries for the HDF5 C++ bindings +# HDF5_LIBRARIES - Required libraries for all requested bindings +# HDF5_FOUND - true if HDF5 was found on the system +# HDF5_LIBRARY_DIRS - the full set of library directories +# HDF5_IS_PARALLEL - Whether or not HDF5 was found with parallel IO support +# HDF5_C_COMPILER_EXECUTABLE - the path to the HDF5 C wrapper compiler +# HDF5_CXX_COMPILER_EXECUTABLE - the path to the HDF5 C++ wrapper compiler +# HDF5_DIFF_EXECUTABLE - the path to the HDF5 dataset comparison tool + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# This module is maintained by Will Dicharry . + +include(SelectLibraryConfigurations) +include(FindPackageHandleStandardArgs) + +# List of the valid HDF5 components +set( HDF5_VALID_COMPONENTS + C + CXX +) + +# try to find the HDF5 wrapper compilers +find_program( HDF5_C_COMPILER_EXECUTABLE + NAMES h5cc h5pcc + HINTS ENV HDF5_ROOT + PATH_SUFFIXES bin Bin + DOC "HDF5 Wrapper compiler. Used only to detect HDF5 compile flags." ) +mark_as_advanced( HDF5_C_COMPILER_EXECUTABLE ) + +find_program( HDF5_CXX_COMPILER_EXECUTABLE + NAMES h5c++ h5pc++ + HINTS ENV HDF5_ROOT + PATH_SUFFIXES bin Bin + DOC "HDF5 C++ Wrapper compiler. Used only to detect HDF5 compile flags." ) +mark_as_advanced( HDF5_CXX_COMPILER_EXECUTABLE ) + +find_program( HDF5_DIFF_EXECUTABLE + NAMES h5diff + HINTS ENV HDF5_ROOT + PATH_SUFFIXES bin Bin + DOC "HDF5 file differencing tool." ) +mark_as_advanced( HDF5_DIFF_EXECUTABLE ) + +# Invoke the HDF5 wrapper compiler. The compiler return value is stored to the +# return_value argument, the text output is stored to the output variable. +macro( _HDF5_invoke_compiler language output return_value ) + if( HDF5_${language}_COMPILER_EXECUTABLE ) + exec_program( ${HDF5_${language}_COMPILER_EXECUTABLE} + ARGS -show + OUTPUT_VARIABLE ${output} + RETURN_VALUE ${return_value} + ) + if( ${${return_value}} EQUAL 0 ) + # do nothing + else() + message( STATUS + "Unable to determine HDF5 ${language} flags from HDF5 wrapper." ) + endif() + endif() +endmacro() + +# Parse a compile line for definitions, includes, library paths, and libraries. +macro( _HDF5_parse_compile_line + compile_line + include_paths + definitions + library_paths + libraries ) + + # Match the include paths + string( REGEX MATCHALL "-I([^\" ]+)" include_path_flags + "${compile_line}" + ) + foreach( IPATH ${include_path_flags} ) + string( REGEX REPLACE "^-I" "" IPATH ${IPATH} ) + string( REGEX REPLACE "//" "/" IPATH ${IPATH} ) + list( APPEND ${include_paths} ${IPATH} ) + endforeach() + + # Match the definitions + string( REGEX MATCHALL "-D[^ ]*" definition_flags "${compile_line}" ) + foreach( DEF ${definition_flags} ) + list( APPEND ${definitions} ${DEF} ) + endforeach() + + # Match the library paths + string( REGEX MATCHALL "-L([^\" ]+|\"[^\"]+\")" library_path_flags + "${compile_line}" + ) + + foreach( LPATH ${library_path_flags} ) + string( REGEX REPLACE "^-L" "" LPATH ${LPATH} ) + string( REGEX REPLACE "//" "/" LPATH ${LPATH} ) + list( APPEND ${library_paths} ${LPATH} ) + endforeach() + + # now search for the library names specified in the compile line (match -l...) + # match only -l's preceded by a space or comma + # this is to exclude directory names like xxx-linux/ + string( REGEX MATCHALL "[, ]-l([^\", ]+)" library_name_flags + "${compile_line}" ) + # strip the -l from all of the library flags and add to the search list + foreach( LIB ${library_name_flags} ) + string( REGEX REPLACE "^[, ]-l" "" LIB ${LIB} ) + list( APPEND ${libraries} ${LIB} ) + endforeach() +endmacro() + +if( HDF5_INCLUDE_DIR AND HDF5_LIBRARIES ) + # Do nothing: we already have HDF5_INCLUDE_PATH and HDF5_LIBRARIES in the + # cache, it would be a shame to override them +else() + _HDF5_invoke_compiler( C HDF5_C_COMPILE_LINE HDF5_C_RETURN_VALUE ) + _HDF5_invoke_compiler( CXX HDF5_CXX_COMPILE_LINE HDF5_CXX_RETURN_VALUE ) + + if( NOT HDF5_FIND_COMPONENTS ) + set( HDF5_LANGUAGE_BINDINGS "C" ) + else() + # add the extra specified components, ensuring that they are valid. + foreach( component ${HDF5_FIND_COMPONENTS} ) + list( FIND HDF5_VALID_COMPONENTS ${component} component_location ) + if( ${component_location} EQUAL -1 ) + message( FATAL_ERROR + "\"${component}\" is not a valid HDF5 component." ) + else() + list( APPEND HDF5_LANGUAGE_BINDINGS ${component} ) + endif() + endforeach() + endif() + + # seed the initial lists of libraries to find with items we know we need + set( HDF5_C_LIBRARY_NAMES_INIT hdf5_hl hdf5 ) + set( HDF5_CXX_LIBRARY_NAMES_INIT hdf5_cpp ${HDF5_C_LIBRARY_NAMES_INIT} ) + + foreach( LANGUAGE ${HDF5_LANGUAGE_BINDINGS} ) + if( HDF5_${LANGUAGE}_COMPILE_LINE ) + _HDF5_parse_compile_line( ${HDF5_${LANGUAGE}_COMPILE_LINE} + HDF5_${LANGUAGE}_INCLUDE_FLAGS + HDF5_${LANGUAGE}_DEFINITIONS + HDF5_${LANGUAGE}_LIBRARY_DIRS + HDF5_${LANGUAGE}_LIBRARY_NAMES + ) + + # take a guess that the includes may be in the 'include' sibling directory + # of a library directory. + foreach( dir ${HDF5_${LANGUAGE}_LIBRARY_DIRS} ) + list( APPEND HDF5_${LANGUAGE}_INCLUDE_FLAGS ${dir}/../include ) + endforeach() + endif() + + # set the definitions for the language bindings. + list( APPEND HDF5_DEFINITIONS ${HDF5_${LANGUAGE}_DEFINITIONS} ) + + # find the HDF5 include directories + find_path( HDF5_${LANGUAGE}_INCLUDE_DIR hdf5.h + HINTS + ${HDF5_${LANGUAGE}_INCLUDE_FLAGS} + ENV + HDF5_ROOT + PATHS + $ENV{HOME}/.local/include + PATH_SUFFIXES + include + Include + ) + mark_as_advanced( HDF5_${LANGUAGE}_INCLUDE_DIR ) + list( APPEND HDF5_INCLUDE_DIR ${HDF5_${LANGUAGE}_INCLUDE_DIR} ) + + set( HDF5_${LANGUAGE}_LIBRARY_NAMES + ${HDF5_${LANGUAGE}_LIBRARY_NAMES_INIT} + ${HDF5_${LANGUAGE}_LIBRARY_NAMES} ) + + # find the HDF5 libraries + foreach( LIB ${HDF5_${LANGUAGE}_LIBRARY_NAMES} ) + if( UNIX AND HDF5_USE_STATIC_LIBRARIES ) + # According to bug 1643 on the CMake bug tracker, this is the + # preferred method for searching for a static library. + # See http://www.cmake.org/Bug/view.php?id=1643. We search + # first for the full static library name, but fall back to a + # generic search on the name if the static search fails. + set( THIS_LIBRARY_SEARCH_DEBUG lib${LIB}d.a ${LIB}d ) + set( THIS_LIBRARY_SEARCH_RELEASE lib${LIB}.a ${LIB} ) + else() + set( THIS_LIBRARY_SEARCH_DEBUG ${LIB}d ) + set( THIS_LIBRARY_SEARCH_RELEASE ${LIB} ) + endif() + find_library( HDF5_${LIB}_LIBRARY_DEBUG + NAMES ${THIS_LIBRARY_SEARCH_DEBUG} + HINTS ${HDF5_${LANGUAGE}_LIBRARY_DIRS} + ENV HDF5_ROOT + PATH_SUFFIXES lib Lib ) + find_library( HDF5_${LIB}_LIBRARY_RELEASE + NAMES ${THIS_LIBRARY_SEARCH_RELEASE} + HINTS ${HDF5_${LANGUAGE}_LIBRARY_DIRS} + ENV HDF5_ROOT + PATH_SUFFIXES lib Lib ) + select_library_configurations( HDF5_${LIB} ) + # even though we adjusted the individual library names in + # select_library_configurations, we still need to distinguish + # between debug and release variants because HDF5_LIBRARIES will + # need to specify different lists for debug and optimized builds. + # We can't just use the HDF5_${LIB}_LIBRARY variable (which was set + # up by the selection macro above) because it may specify debug and + # optimized variants for a particular library, but a list of + # libraries is allowed to specify debug and optimized only once. + list( APPEND HDF5_${LANGUAGE}_LIBRARIES_DEBUG + ${HDF5_${LIB}_LIBRARY_DEBUG} ) + list( APPEND HDF5_${LANGUAGE}_LIBRARIES_RELEASE + ${HDF5_${LIB}_LIBRARY_RELEASE} ) + endforeach() + list( APPEND HDF5_LIBRARY_DIRS ${HDF5_${LANGUAGE}_LIBRARY_DIRS} ) + + # Append the libraries for this language binding to the list of all + # required libraries. + list( APPEND HDF5_LIBRARIES_DEBUG + ${HDF5_${LANGUAGE}_LIBRARIES_DEBUG} ) + list( APPEND HDF5_LIBRARIES_RELEASE + ${HDF5_${LANGUAGE}_LIBRARIES_RELEASE} ) + endforeach() + + # We may have picked up some duplicates in various lists during the above + # process for the language bindings (both the C and C++ bindings depend on + # libz for example). Remove the duplicates. + if( HDF5_INCLUDE_DIR ) + list( REMOVE_DUPLICATES HDF5_INCLUDE_DIR ) + endif() + if( HDF5_LIBRARIES_DEBUG ) + list( REMOVE_DUPLICATES HDF5_LIBRARIES_DEBUG ) + endif() + if( HDF5_LIBRARIES_RELEASE ) + list( REMOVE_DUPLICATES HDF5_LIBRARIES_RELEASE ) + endif() + if( HDF5_LIBRARY_DIRS ) + list( REMOVE_DUPLICATES HDF5_LIBRARY_DIRS ) + endif() + + # Construct the complete list of HDF5 libraries with debug and optimized + # variants when the generator supports them. + if( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE ) + set( HDF5_LIBRARIES + debug ${HDF5_LIBRARIES_DEBUG} + optimized ${HDF5_LIBRARIES_RELEASE} ) + else() + set( HDF5_LIBRARIES ${HDF5_LIBRARIES_RELEASE} ) + endif() + + # If the HDF5 include directory was found, open H5pubconf.h to determine if + # HDF5 was compiled with parallel IO support + if( HDF5_INCLUDE_DIR ) + file( STRINGS "${HDF5_INCLUDE_DIR}/H5pubconf.h" + HDF5_HAVE_PARALLEL_DEFINE + REGEX "HAVE_PARALLEL 1" ) + if( HDF5_HAVE_PARALLEL_DEFINE ) + set( HDF5_IS_PARALLEL TRUE ) + else() + set( HDF5_IS_PARALLEL FALSE ) + endif() + endif() + set( HDF5_IS_PARALLEL ${HDF5_IS_PARALLEL} CACHE BOOL + "HDF5 library compiled with parallel IO support" ) + mark_as_advanced( HDF5_IS_PARALLEL ) + +endif() + +find_package_handle_standard_args( HDF5 DEFAULT_MSG + HDF5_LIBRARIES + HDF5_INCLUDE_DIR +) + +mark_as_advanced( + HDF5_INCLUDE_DIR + HDF5_LIBRARIES + HDF5_DEFINTIONS + HDF5_LIBRARY_DIRS + HDF5_C_COMPILER_EXECUTABLE + HDF5_CXX_COMPILER_EXECUTABLE ) + diff --git a/Modules/FindHSPELL.cmake b/Modules/FindHSPELL.cmake index fa5c27559..9ae4a52a9 100644 --- a/Modules/FindHSPELL.cmake +++ b/Modules/FindHSPELL.cmake @@ -6,11 +6,19 @@ # HSPELL_LIBRARIES - The libraries needed to use HSPELL # HSPELL_DEFINITIONS - Compiler switches required for using HSPELL -# Copyright (c) 2006, Alexander Neundorf, +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Alexander Neundorf # -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) IF (HSPELL_INCLUDE_DIR AND HSPELL_LIBRARIES) # Already in cache, be silent diff --git a/Modules/FindHTMLHelp.cmake b/Modules/FindHTMLHelp.cmake index faa35c445..2deb297aa 100644 --- a/Modules/FindHTMLHelp.cmake +++ b/Modules/FindHTMLHelp.cmake @@ -5,6 +5,19 @@ # HTML_HELP_LIBRARY : full path to the library (htmlhelp.lib) # +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF(WIN32) FIND_PROGRAM(HTML_HELP_COMPILER diff --git a/Modules/FindITK.cmake b/Modules/FindITK.cmake index 2e2b0341b..40f03fb6c 100644 --- a/Modules/FindITK.cmake +++ b/Modules/FindITK.cmake @@ -20,6 +20,18 @@ # compatability. Use ITK_USE_FILE # instead. +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) SET(ITK_DIR_STRING "directory containing ITKConfig.cmake. This is either the root of the build tree, or PREFIX/lib/InsightToolkit for an installation.") diff --git a/Modules/FindImageMagick.cmake b/Modules/FindImageMagick.cmake index bba9e411c..33b8aad60 100644 --- a/Modules/FindImageMagick.cmake +++ b/Modules/FindImageMagick.cmake @@ -50,11 +50,19 @@ # Note that the standard FIND_PACKAGE features are supported # (i.e., QUIET, REQUIRED, etc.). -# Copyright (c) 2007-2008, -# Miguel A. Figueroa-Villanueva, miguelf at ieee dot org. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# Copyright 2007-2008 Miguel A. Figueroa-Villanueva # -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) #--------------------------------------------------------------------- # Helper functions diff --git a/Modules/FindJNI.cmake b/Modules/FindJNI.cmake index bed0e1d0d..8c9523a54 100644 --- a/Modules/FindJNI.cmake +++ b/Modules/FindJNI.cmake @@ -12,6 +12,53 @@ # JAVA_AWT_INCLUDE_PATH = the include path to jawt.h # +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# Expand {libarch} occurences to java_libarch subdirectory(-ies) and set ${_var} +MACRO(java_append_library_directories _var) + # Determine java arch-specific library subdir + IF (CMAKE_SYSTEM_NAME MATCHES "Linux") + # Based on openjdk/jdk/make/common/shared/Platform.gmk as of 6b16 + # and kaffe as of 1.1.8 which uses the first part of the + # GNU config.guess platform triplet. + IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^i[3-9]86$") + SET(_java_libarch "i386") + ELSEIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + SET(_java_libarch "amd64" "x86_64") + ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc") + SET(_java_libarch "ppc" "powerpc" "ppc64") + ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^sparc") + SET(_java_libarch "sparc" "sparcv9") + ELSE(CMAKE_SYSTEM_PROCESSOR MATCHES "^i[3-9]86$") + SET(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}") + ENDIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^i[3-9]86$") + ELSE(CMAKE_SYSTEM_NAME MATCHES "Linux") + SET(_java_libarch "i386" "amd64" "ppc") # previous default + ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux") + + FOREACH(_path ${ARGN}) + IF(_path MATCHES "{libarch}") + FOREACH(_libarch ${_java_libarch}) + STRING(REPLACE "{libarch}" "${_libarch}" _newpath "${_path}") + LIST(APPEND ${_var} "${_newpath}") + ENDFOREACH(_libarch) + ELSE(_path MATCHES "{libarch}") + LIST(APPEND ${_var} "${_path}") + ENDIF(_path MATCHES "{libarch}") + ENDFOREACH(_path) +ENDMACRO(java_append_library_directories) + GET_FILENAME_COMPONENT(java_install_version "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit;CurrentVersion]" NAME) @@ -19,29 +66,29 @@ SET(JAVA_AWT_LIBRARY_DIRECTORIES "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/lib" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/lib" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/lib" - $ENV{JAVA_HOME}/jre/lib/i386 - $ENV{JAVA_HOME}/jre/lib/amd64 - $ENV{JAVA_HOME}/jre/lib/ppc + ) +JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_LIBRARY_DIRECTORIES + $ENV{JAVA_HOME}/jre/lib/{libarch} + $ENV{JAVA_HOME}/jre/lib + $ENV{JAVA_HOME}/lib + $ENV{JAVA_HOME} /usr/lib /usr/local/lib /usr/lib/jvm/java/lib - /usr/lib/java/jre/lib/i386 - /usr/local/lib/java/jre/lib/i386 - /usr/local/share/java/jre/lib/i386 - /usr/lib/j2sdk1.4-sun/jre/lib/i386 - /usr/lib/j2sdk1.5-sun/jre/lib/i386 - /opt/sun-jdk-1.5.0.04/jre/lib/amd64 - /usr/lib/jvm/java-6-sun-1.6.0.00/jre/lib/amd64 - /usr/lib/java/jre/lib/amd64 - /usr/local/lib/java/jre/lib/amd64 - /usr/local/share/java/jre/lib/amd64 - /usr/lib/j2sdk1.4-sun/jre/lib/amd64 - /usr/lib/j2sdk1.5-sun/jre/lib/amd64 - /usr/lib/java/jre/lib/ppc - /usr/local/lib/java/jre/lib/ppc - /usr/local/share/java/jre/lib/ppc - /usr/lib/j2sdk1.4-sun/jre/lib/ppc - /usr/lib/j2sdk1.5-sun/jre/lib/ppc + /usr/lib/java/jre/lib/{libarch} + /usr/local/lib/java/jre/lib/{libarch} + /usr/local/share/java/jre/lib/{libarch} + /usr/lib/j2sdk1.4-sun/jre/lib/{libarch} + /usr/lib/j2sdk1.5-sun/jre/lib/{libarch} + /opt/sun-jdk-1.5.0.04/jre/lib/{libarch} + /usr/lib/jvm/java-6-sun/jre/lib/{libarch} + /usr/lib/jvm/java-1.5.0-sun/jre/lib/{libarch} + /usr/lib/jvm/java-6-sun-1.6.0.00/jre/lib/{libarch} # can this one be removed according to #8821 ? Alex + /usr/lib/jvm/java-6-openjdk/jre/lib/{libarch} + # Debian specific paths for default JVM + /usr/lib/jvm/default-java/jre/lib/{libarch} + /usr/lib/jvm/default-java/jre/lib + /usr/lib/jvm/default-java/lib ) SET(JAVA_JVM_LIBRARY_DIRECTORIES) @@ -65,11 +112,16 @@ SET(JAVA_AWT_INCLUDE_DIRECTORIES /usr/lib/java/include /usr/local/lib/java/include /usr/lib/jvm/java/include - /usr/lib/jvm/java-6-sun-1.6.0.00/include + /usr/lib/jvm/java-6-sun/include + /usr/lib/jvm/java-1.5.0-sun/include + /usr/lib/jvm/java-6-sun-1.6.0.00/include # can this one be removed according to #8821 ? Alex + /usr/lib/jvm/java-6-openjdk/include /usr/local/share/java/include /usr/lib/j2sdk1.4-sun/include /usr/lib/j2sdk1.5-sun/include /opt/sun-jdk-1.5.0.04/include + # Debian specific path for default JVM + /usr/lib/jvm/default-java/include ) FOREACH(JAVA_PROG "${JAVA_RUNTIME}" "${JAVA_COMPILE}" "${JAVA_ARCHIVE}") diff --git a/Modules/FindJPEG.cmake b/Modules/FindJPEG.cmake index 984929448..299e4588e 100644 --- a/Modules/FindJPEG.cmake +++ b/Modules/FindJPEG.cmake @@ -7,6 +7,19 @@ # also defined, but not for general use are # JPEG_LIBRARY, where to find the JPEG library. +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PATH(JPEG_INCLUDE_DIR jpeglib.h) SET(JPEG_NAMES ${JPEG_NAMES} jpeg) diff --git a/Modules/FindJasper.cmake b/Modules/FindJasper.cmake index d83fe7bb7..553654e80 100644 --- a/Modules/FindJasper.cmake +++ b/Modules/FindJasper.cmake @@ -5,11 +5,19 @@ # JASPER_INCLUDE_DIR - the Jasper include directory # JASPER_LIBRARIES - The libraries needed to use Jasper -# Copyright (c) 2006, Alexander Neundorf, +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Alexander Neundorf # -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) FIND_PACKAGE(JPEG) diff --git a/Modules/FindJava.cmake b/Modules/FindJava.cmake index a5944508c..4fddfeef3 100644 --- a/Modules/FindJava.cmake +++ b/Modules/FindJava.cmake @@ -7,6 +7,20 @@ # JAVA_COMPILE = the full path to the Java compiler # JAVA_ARCHIVE = the full path to the Java archiver # + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + SET(JAVA_BIN_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\2.0;JavaHome]/bin" "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/bin" diff --git a/Modules/FindKDE3.cmake b/Modules/FindKDE3.cmake index 0ae94dc47..5c5c5fed4 100644 --- a/Modules/FindKDE3.cmake +++ b/Modules/FindKDE3.cmake @@ -63,6 +63,20 @@ # # Author: Alexander Neundorf +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Alexander Neundorf +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF(NOT UNIX AND KDE3_FIND_REQUIRED) MESSAGE(FATAL_ERROR "Compiling KDE3 applications and libraries under Windows is not supported") ENDIF(NOT UNIX AND KDE3_FIND_REQUIRED) diff --git a/Modules/FindKDE4.cmake b/Modules/FindKDE4.cmake index 25c8d8aed..12fd30486 100644 --- a/Modules/FindKDE4.cmake +++ b/Modules/FindKDE4.cmake @@ -9,6 +9,20 @@ # # Author: Alexander Neundorf +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Alexander Neundorf +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # If Qt3 has already been found, fail. IF(QT_QT_LIBRARY) IF(KDE4_FIND_REQUIRED) diff --git a/Modules/FindLAPACK.cmake b/Modules/FindLAPACK.cmake index ca727af3a..b89a997e1 100644 --- a/Modules/FindLAPACK.cmake +++ b/Modules/FindLAPACK.cmake @@ -18,10 +18,24 @@ # interface is found # BLA_STATIC if set on this determines what kind of linkage we do (static) # BLA_VENDOR if set checks only the specified vendor, if not set checks -# all the posibilities +# all the possibilities # BLA_F95 if set on tries to find the f95 interfaces for BLAS/LAPACK ### List of vendors (BLA_VENDOR) valid in this module ## Intel(mkl), ACML,Apple, NAS, Generic + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + get_property(_LANGUAGES_ GLOBAL PROPERTY ENABLED_LANGUAGES) if(NOT _LANGUAGES_ MATCHES Fortran) if(LAPACK_FIND_REQUIRED) diff --git a/Modules/FindLATEX.cmake b/Modules/FindLATEX.cmake index a02d9e179..dbd96a778 100644 --- a/Modules/FindLATEX.cmake +++ b/Modules/FindLATEX.cmake @@ -11,6 +11,19 @@ # LATEX2HTML_CONVERTER: path to the LaTeX2Html converter # +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF (WIN32) # Try to find the MikTex binary path (look for its package manager). diff --git a/Modules/FindLibXml2.cmake b/Modules/FindLibXml2.cmake index c5efc721b..fc4c23d3a 100644 --- a/Modules/FindLibXml2.cmake +++ b/Modules/FindLibXml2.cmake @@ -7,11 +7,19 @@ # LIBXML2_DEFINITIONS - Compiler switches required for using LibXml2 # LIBXML2_XMLLINT_EXECUTABLE - The XML checking tool xmllint coming with LibXml2 -# Copyright (c) 2006, Alexander Neundorf, +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Alexander Neundorf # -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) IF (LIBXML2_INCLUDE_DIR AND LIBXML2_LIBRARIES) # in cache already diff --git a/Modules/FindLibXslt.cmake b/Modules/FindLibXslt.cmake index 95c6819f8..5c3953a5b 100644 --- a/Modules/FindLibXslt.cmake +++ b/Modules/FindLibXslt.cmake @@ -6,11 +6,19 @@ # LIBXSLT_LIBRARIES - Link these to LibXslt # LIBXSLT_DEFINITIONS - Compiler switches required for using LibXslt -# Copyright (c) 2006, Alexander Neundorf, +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Alexander Neundorf # -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) IF (LIBXSLT_INCLUDE_DIR AND LIBXSLT_LIBRARIES) # in cache already diff --git a/Modules/FindLua50.cmake b/Modules/FindLua50.cmake index 6d952c4f1..04f8b2855 100644 --- a/Modules/FindLua50.cmake +++ b/Modules/FindLua50.cmake @@ -11,6 +11,18 @@ # This is because, the lua location is not standardized and may exist # in locations other than lua/ +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) FIND_PATH(LUA_INCLUDE_DIR lua.h HINTS diff --git a/Modules/FindLua51.cmake b/Modules/FindLua51.cmake index 2be4a0132..473138d1d 100644 --- a/Modules/FindLua51.cmake +++ b/Modules/FindLua51.cmake @@ -11,6 +11,18 @@ # This is because, the lua location is not standardized and may exist # in locations other than lua/ +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) FIND_PATH(LUA_INCLUDE_DIR lua.h HINTS diff --git a/Modules/FindMFC.cmake b/Modules/FindMFC.cmake index ada220561..6a3a4b7ad 100644 --- a/Modules/FindMFC.cmake +++ b/Modules/FindMFC.cmake @@ -4,6 +4,19 @@ # MFC_FOUND - Was MFC support found # You don't need to include anything or link anything to use it. +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Assume no MFC support SET(MFC_FOUND "NO") diff --git a/Modules/FindMPEG.cmake b/Modules/FindMPEG.cmake index 7b0760a17..a19f73e08 100644 --- a/Modules/FindMPEG.cmake +++ b/Modules/FindMPEG.cmake @@ -7,6 +7,19 @@ # MPEG_mpeg2_LIBRARY, where to find the MPEG library. # MPEG_vo_LIBRARY, where to find the vo library. +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PATH(MPEG_INCLUDE_DIR mpeg2dec/include/video_out.h /usr/local/livid ) diff --git a/Modules/FindMPEG2.cmake b/Modules/FindMPEG2.cmake index 1aa791346..7fa7d518c 100644 --- a/Modules/FindMPEG2.cmake +++ b/Modules/FindMPEG2.cmake @@ -7,8 +7,22 @@ # MPEG2_mpeg2_LIBRARY, where to find the MPEG2 library. # MPEG2_vo_LIBRARY, where to find the vo library. -FIND_PATH(MPEG2_INCLUDE_DIR mpeg2.h - /usr/local/livid +#============================================================================= +# Copyright 2003-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +FIND_PATH(MPEG2_INCLUDE_DIR + NAMES mpeg2.h mpeg2dec/mpeg2.h + PATHS /usr/local/livid ) FIND_LIBRARY(MPEG2_mpeg2_LIBRARY mpeg2 @@ -37,3 +51,4 @@ IF(MPEG2_FOUND) ENDIF(SDL_FOUND) ENDIF(MPEG2_FOUND) +MARK_AS_ADVANCED(MPEG2_INCLUDE_DIR MPEG2_mpeg2_LIBRARY MPEG2_vo_LIBRARY) diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake index 03e95ef71..d5014dd5b 100644 --- a/Modules/FindMPI.cmake +++ b/Modules/FindMPI.cmake @@ -52,14 +52,33 @@ # EXECUTABLE is the MPI program, and ARGS are the arguments to pass to the # MPI program. +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Try to find the MPI driver program find_program(MPI_COMPILER NAMES mpic++ mpicxx mpiCC mpicc DOC "MPI compiler. Used only to detect MPI compilation flags.") mark_as_advanced(MPI_COMPILER) +file(TO_CMAKE_PATH "$ENV{ProgramFiles}" ProgramFiles) find_program(MPIEXEC NAMES mpiexec mpirun lamexec + PATHS /usr/bin /usr/local/bin /usr/local/mpi/bin + "$ENV{SystemDrive}/Program Files/MPICH/SDK/Bin" + "${ProgramFiles}/MPICH2/Bin" + "$ENV{SystemDrive}/Program Files/Microsoft Compute Cluster Pack/Bin" + "$ENV{SystemDrive}/Program Files/Microsoft HPC Pack 2008 SDK/Bin" DOC "Executable for running MPI programs.") set(MPIEXEC_NUMPROC_FLAG "-np" CACHE STRING "Flag used by MPI to specify the number of processes for MPIEXEC; the next option will be the number of processes.") @@ -247,34 +266,36 @@ else (MPI_COMPILE_CMDLINE) /usr/include /usr/include/mpi /usr/local/mpi/include - "C:/Program Files/MPICH/SDK/Include" - "$ENV{SystemDrive}/Program Files/MPICH2/include" + "$ENV{SystemDrive}/Program Files/MPICH/SDK/Include" + "${ProgramFiles}/MPICH2/include" "$ENV{SystemDrive}/Program Files/Microsoft Compute Cluster Pack/Include" + "$ENV{SystemDrive}/Program Files/Microsoft HPC Pack 2008 SDK/Include" ) - + # Decide between 32-bit and 64-bit libraries for Microsoft's MPI if (CMAKE_CL_64) set(MS_MPI_ARCH_DIR amd64) else (CMAKE_CL_64) set(MS_MPI_ARCH_DIR i386) endif (CMAKE_CL_64) - + find_library(MPI_LIBRARY NAMES mpi mpich msmpi PATHS /usr/lib /usr/local/lib /usr/local/mpi/lib - "C:/Program Files/MPICH/SDK/Lib" "$ENV{SystemDrive}/Program Files/MPICH/SDK/Lib" + "${ProgramFiles}/MPICH2/Lib" "$ENV{SystemDrive}/Program Files/Microsoft Compute Cluster Pack/Lib/${MS_MPI_ARCH_DIR}" + "$ENV{SystemDrive}/Program Files/Microsoft HPC Pack 2008 SDK/Lib/${MS_MPI_ARCH_DIR}" ) - find_library(MPI_LIBRARY + find_library(MPI_LIBRARY NAMES mpich2 PATHS - "$ENV{SystemDrive}/Program Files/MPICH2/Lib") + "${ProgramFiles}/MPICH2/Lib") find_library(MPI_EXTRA_LIBRARY NAMES mpi++ PATHS /usr/lib /usr/local/lib /usr/local/mpi/lib - "C:/Program Files/MPICH/SDK/Lib" + "$ENV{SystemDrive}/Program Files/MPICH/SDK/Lib" DOC "Extra MPI libraries to link against.") set(MPI_COMPILE_FLAGS "" CACHE STRING "MPI compilation flags") diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake old mode 100755 new mode 100644 index 37619c22a..13b961a8c --- a/Modules/FindMatlab.cmake +++ b/Modules/FindMatlab.cmake @@ -6,6 +6,18 @@ # MATLAB_MX_LIBRARY: path to libmx.lib # MATLAB_ENG_LIBRARY: path to libeng.lib +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) SET(MATLAB_FOUND 0) IF(WIN32) diff --git a/Modules/FindMotif.cmake b/Modules/FindMotif.cmake old mode 100755 new mode 100644 index e068202e4..c8715fdb3 --- a/Modules/FindMotif.cmake +++ b/Modules/FindMotif.cmake @@ -1,9 +1,22 @@ # - Try to find Motif (or lesstif) # Once done this will define: # MOTIF_FOUND - system has MOTIF -# MOTIF_INCLUDE_DIR - incude paths to use Motif +# MOTIF_INCLUDE_DIR - include paths to use Motif # MOTIF_LIBRARIES - Link these to use Motif +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + SET(MOTIF_FOUND 0) IF(UNIX) diff --git a/Modules/FindOpenAL.cmake b/Modules/FindOpenAL.cmake old mode 100755 new mode 100644 index d9cb7c180..b9b707827 --- a/Modules/FindOpenAL.cmake +++ b/Modules/FindOpenAL.cmake @@ -10,6 +10,19 @@ # # Created by Eric Wing. This was influenced by the FindSDL.cmake module. +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This makes the presumption that you are include al.h like # #include "al.h" # and not diff --git a/Modules/FindOpenGL.cmake b/Modules/FindOpenGL.cmake index 1c2648ab0..833d7eb96 100644 --- a/Modules/FindOpenGL.cmake +++ b/Modules/FindOpenGL.cmake @@ -15,6 +15,19 @@ # People will have to change the cache values of OPENGL_glu_LIBRARY # and OPENGL_gl_LIBRARY to use OpenGL with X11 on OSX +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF (WIN32) IF (CYGWIN) @@ -45,6 +58,15 @@ ELSE (WIN32) FIND_PATH(OPENGL_INCLUDE_DIR OpenGL/gl.h DOC "Include for OpenGL on OSX") ELSE(APPLE) + # Handle HP-UX cases where we only want to find OpenGL in either hpux64 + # or hpux32 depending on if we're doing a 64 bit build. + IF(CMAKE_SIZEOF_VOID_P EQUAL 4) + SET(HPUX_IA_OPENGL_LIB_PATH /opt/graphics/OpenGL/lib/hpux32/) + ELSE(CMAKE_SIZEOF_VOID_P EQUAL 4) + SET(HPUX_IA_OPENGL_LIB_PATH + /opt/graphics/OpenGL/lib/hpux64/ + /opt/graphics/OpenGL/lib/pa20_64) + ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 4) # The first line below is to make sure that the proper headers # are used on a Linux machine with the NVidia drivers installed. @@ -71,6 +93,7 @@ ELSE (WIN32) PATHS /opt/graphics/OpenGL/lib /usr/openwin/lib /usr/shlib /usr/X11R6/lib + ${HPUX_IA_OPENGL_LIB_PATH} ) # On Unix OpenGL most certainly always requires X11. diff --git a/Modules/FindOpenMP.cmake b/Modules/FindOpenMP.cmake old mode 100755 new mode 100644 index 848f57ff9..5ea329da4 --- a/Modules/FindOpenMP.cmake +++ b/Modules/FindOpenMP.cmake @@ -10,13 +10,19 @@ # # Supported compilers can be found at http://openmp.org/wp/openmp-compilers/ - -# Copyright 2008, 2009 Andre.Brodtkorb@ifi.uio.no +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2008-2009 André Rigland Brodtkorb # -# Redistribution AND use is allowed according to the terms of the New -# BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) include(CheckCSourceCompiles) include(CheckCXXSourceCompiles) diff --git a/Modules/FindOpenSSL.cmake b/Modules/FindOpenSSL.cmake index bc62286e5..0cb611f6d 100644 --- a/Modules/FindOpenSSL.cmake +++ b/Modules/FindOpenSSL.cmake @@ -5,11 +5,19 @@ # OPENSSL_INCLUDE_DIR - the OpenSSL include directory # OPENSSL_LIBRARIES - The libraries needed to use OpenSSL -# Copyright (c) 2006, Alexander Neundorf, +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Alexander Neundorf # -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) IF(OPENSSL_LIBRARIES) SET(OpenSSL_FIND_QUIETLY TRUE) diff --git a/Modules/FindOpenSceneGraph.cmake b/Modules/FindOpenSceneGraph.cmake index 7bdd2b28c..9a13ea2ab 100644 --- a/Modules/FindOpenSceneGraph.cmake +++ b/Modules/FindOpenSceneGraph.cmake @@ -1,13 +1,12 @@ # - Find OpenSceneGraph # This module searches for the OpenSceneGraph core "osg" library as well as -# OpenThreads, and whatever additional COMPONENTS that you specify. +# OpenThreads, and whatever additional COMPONENTS (nodekits) that you specify. # See http://www.openscenegraph.org # -# NOTE: If you would like to use this module in your CMAKE_MODULE_PATH instead -# of requiring CMake >= 2.6.3, you will also need to download -# FindOpenThreads.cmake, Findosg_functions.cmake, Findosg.cmake, as well as -# files for any Components you need to call (FindosgDB.cmake, -# FindosgUtil.cmake, etc.) +# NOTE: To use this module effectively you must either require CMake >= 2.6.3 +# with cmake_minimum_required(VERSION 2.6.3) or download and place +# FindOpenThreads.cmake, Findosg_functions.cmake, Findosg.cmake, +# and Find.cmake files into your CMAKE_MODULE_PATH. # #================================== # @@ -40,26 +39,34 @@ #================================== # Example Usage: # -# find_package(OpenSceneGraph 2.0.0 COMPONENTS osgDB osgUtil) +# find_package(OpenSceneGraph 2.0.0 REQUIRED osgDB osgUtil) +# # libOpenThreads & libosg automatically searched # include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS}) # # add_executable(foo foo.cc) # target_link_libraries(foo ${OPENSCENEGRAPH_LIBRARIES}) # -#================================== + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2009 Philip Lowman +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # # Naming convention: # Local variables of the form _osg_foo # Input variables of the form OpenSceneGraph_FOO # Output variables of the form OPENSCENEGRAPH_FOO # -# Copyright (c) 2009, Philip Lowman -# -# Redistribution AND use is allowed according to the terms of the New -# BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. -# -#================================== include(Findosg_functions) @@ -126,7 +133,7 @@ endif() # # Version checking # -if(OpenSceneGraph_FIND_VERSION) +if(OpenSceneGraph_FIND_VERSION AND OPENSCENEGRAPH_VERSION) if(OpenSceneGraph_FIND_VERSION_EXACT) if(NOT OPENSCENEGRAPH_VERSION VERSION_EQUAL ${OpenSceneGraph_FIND_VERSION}) set(_osg_version_not_exact TRUE) @@ -140,11 +147,7 @@ if(OpenSceneGraph_FIND_VERSION) endif() endif() -set(_osg_required) set(_osg_quiet) -if(OpenSceneGraph_FIND_REQUIRED) - set(_osg_required "REQUIRED") -endif() if(OpenSceneGraph_FIND_QUIETLY) set(_osg_quiet "QUIET") endif() @@ -156,7 +159,7 @@ foreach(_osg_module ${_osg_modules_to_process}) message("[ FindOpenSceneGraph.cmake:${CMAKE_CURRENT_LIST_LINE} ] " "Calling find_package(${_osg_module} ${_osg_required} ${_osg_quiet})") endif() - find_package(${_osg_module} ${_osg_required} ${_osg_quiet}) + find_package(${_osg_module} ${_osg_quiet}) string(TOUPPER ${_osg_module} _osg_module_UC) list(APPEND OPENSCENEGRAPH_INCLUDE_DIR ${${_osg_module_UC}_INCLUDE_DIR}) @@ -196,8 +199,29 @@ elseif(_osg_version_not_exact) "(exactly), version ${OPENSCENEGRAPH_VERSION} was found.") endif() else() - # If the version was OK, we should hit this case where we can do the - # typical user notifications + + # + # Check each module to see if it's found + # + if(OpenSceneGraph_FIND_REQUIRED) + set(_osg_missing_message) + foreach(_osg_module ${_osg_modules_to_process}) + string(TOUPPER ${_osg_module} _osg_module_UC) + if(NOT ${_osg_module_UC}_FOUND) + set(_osg_missing_nodekit_fail true) + set(_osg_missing_message "${_osg_missing_message} ${_osg_module}") + endif() + endforeach() + + if(_osg_missing_nodekit_fail) + message(FATAL_ERROR "ERROR: Missing the following osg " + "libraries: ${_osg_missing_message}.\n" + "Consider using CMAKE_PREFIX_PATH or the OSG_DIR " + "environment variable. See the " + "${CMAKE_CURRENT_LIST_FILE} for more details.") + endif() + endif() + include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenSceneGraph DEFAULT_MSG OPENSCENEGRAPH_LIBRARIES OPENSCENEGRAPH_INCLUDE_DIR) endif() diff --git a/Modules/FindOpenThreads.cmake b/Modules/FindOpenThreads.cmake index 3fe44b576..be53953db 100644 --- a/Modules/FindOpenThreads.cmake +++ b/Modules/FindOpenThreads.cmake @@ -17,6 +17,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include diff --git a/Modules/FindPHP4.cmake b/Modules/FindPHP4.cmake index 185d6287d..4afce99fe 100644 --- a/Modules/FindPHP4.cmake +++ b/Modules/FindPHP4.cmake @@ -7,6 +7,19 @@ # PHP4_EXECUTABLE = full path to the php4 binary # +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + SET(PHP4_POSSIBLE_INCLUDE_PATHS /usr/include/php4 /usr/local/include/php4 diff --git a/Modules/FindPNG.cmake b/Modules/FindPNG.cmake index d64b074bb..8df3573e9 100644 --- a/Modules/FindPNG.cmake +++ b/Modules/FindPNG.cmake @@ -3,42 +3,59 @@ # This module defines # PNG_INCLUDE_DIR, where to find png.h, etc. # PNG_LIBRARIES, the libraries to link against to use PNG. -# PNG_DEFINITIONS - You should ADD_DEFINITONS(${PNG_DEFINITIONS}) before compiling code that includes png library files. +# PNG_DEFINITIONS - You should add_definitons(${PNG_DEFINITIONS}) before compiling code that includes png library files. # PNG_FOUND, If false, do not try to use PNG. # also defined, but not for general use are # PNG_LIBRARY, where to find the PNG library. # None of the above will be defined unles zlib can be found. # PNG depends on Zlib -INCLUDE(FindZLIB) -IF(ZLIB_FOUND) - FIND_PATH(PNG_PNG_INCLUDE_DIR png.h +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +if(PNG_FIND_QUIETLY) + set(_FIND_ZLIB_ARG QUIET) +endif(PNG_FIND_QUIETLY) +find_package(ZLIB ${_FIND_ZLIB_ARG}) + +if(ZLIB_FOUND) + find_path(PNG_PNG_INCLUDE_DIR png.h /usr/local/include/libpng # OpenBSD ) - SET(PNG_NAMES ${PNG_NAMES} png libpng png12 libpng12) - FIND_LIBRARY(PNG_LIBRARY NAMES ${PNG_NAMES} ) + set(PNG_NAMES ${PNG_NAMES} png libpng png12 libpng12) + find_library(PNG_LIBRARY NAMES ${PNG_NAMES} ) - IF (PNG_LIBRARY AND PNG_PNG_INCLUDE_DIR) + if (PNG_LIBRARY AND PNG_PNG_INCLUDE_DIR) # png.h includes zlib.h. Sigh. SET(PNG_INCLUDE_DIR ${PNG_PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} ) SET(PNG_LIBRARIES ${PNG_LIBRARY} ${ZLIB_LIBRARY}) - IF (CYGWIN) - IF(BUILD_SHARED_LIBS) + if (CYGWIN) + if(BUILD_SHARED_LIBS) # No need to define PNG_USE_DLL here, because it's default for Cygwin. - ELSE(BUILD_SHARED_LIBS) + else(BUILD_SHARED_LIBS) SET (PNG_DEFINITIONS -DPNG_STATIC) - ENDIF(BUILD_SHARED_LIBS) - ENDIF (CYGWIN) + endif(BUILD_SHARED_LIBS) + endif (CYGWIN) - ENDIF (PNG_LIBRARY AND PNG_PNG_INCLUDE_DIR) + endif (PNG_LIBRARY AND PNG_PNG_INCLUDE_DIR) -ENDIF(ZLIB_FOUND) +endif(ZLIB_FOUND) -# handle the QUIETLY and REQUIRED arguments and set PNG_FOUND to TRUE if +# handle the QUIETLY and REQUIRED arguments and set PNG_FOUND to TRUE if # all listed variables are TRUE -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(PNG DEFAULT_MSG PNG_LIBRARY PNG_PNG_INCLUDE_DIR) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(PNG DEFAULT_MSG PNG_LIBRARY PNG_PNG_INCLUDE_DIR) -MARK_AS_ADVANCED(PNG_PNG_INCLUDE_DIR PNG_LIBRARY ) +mark_as_advanced(PNG_PNG_INCLUDE_DIR PNG_LIBRARY ) diff --git a/Modules/FindPackageHandleStandardArgs.cmake b/Modules/FindPackageHandleStandardArgs.cmake index 47cf017ae..e17105c3e 100644 --- a/Modules/FindPackageHandleStandardArgs.cmake +++ b/Modules/FindPackageHandleStandardArgs.cmake @@ -17,6 +17,19 @@ # be "Could NOT find LibXml2", if you don't like this message you can specify # your own custom failure message there. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + INCLUDE(FindPackageMessage) FUNCTION(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FAIL_MSG _VAR1 ) diff --git a/Modules/FindPackageMessage.cmake b/Modules/FindPackageMessage.cmake index 1106e0e87..aa1bbd97a 100644 --- a/Modules/FindPackageMessage.cmake +++ b/Modules/FindPackageMessage.cmake @@ -18,6 +18,19 @@ # ... # ENDIF(X11_FOUND) +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FUNCTION(FIND_PACKAGE_MESSAGE pkg msg details) # Avoid printing a message repeatedly for the same find result. IF(NOT ${pkg}_FIND_QUIETLY) diff --git a/Modules/FindPerl.cmake b/Modules/FindPerl.cmake index b3c5e4feb..bf982b24f 100644 --- a/Modules/FindPerl.cmake +++ b/Modules/FindPerl.cmake @@ -4,6 +4,19 @@ # PERL_EXECUTABLE - the full path to perl # PERL_FOUND - If false, don't attempt to use perl. +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + INCLUDE(FindCygwin) SET(PERL_POSSIBLE_BIN_PATHS diff --git a/Modules/FindPerlLibs.cmake b/Modules/FindPerlLibs.cmake index 50a5629ad..422282f5b 100644 --- a/Modules/FindPerlLibs.cmake +++ b/Modules/FindPerlLibs.cmake @@ -3,63 +3,240 @@ # and libraries are. It also determines what the name of the library is. This # code sets the following variables: # +# PERLLIBS_FOUND = True if perl.h & libperl were found # PERL_INCLUDE_PATH = path to where perl.h is found +# PERL_LIBRARY = path to libperl # PERL_EXECUTABLE = full path to the perl binary # +# The following variables are also available if needed +# (introduced after CMake 2.6.4) +# +# PERL_SITESEARCH = path to the sitesearch install dir +# PERL_SITELIB = path to the sitelib install directory +# PERL_VENDORARCH = path to the vendor arch install directory +# PERL_VENDORLIB = path to the vendor lib install directory +# PERL_ARCHLIB = path to the arch lib install directory +# PERL_PRIVLIB = path to the priv lib install directory +# PERL_EXTRA_C_FLAGS = Compilation flags used to build perl +# + +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# find the perl executable +include(FindPerl) + +if (PERL_EXECUTABLE) + ### PERL_PREFIX + execute_process( + COMMAND + ${PERL_EXECUTABLE} -V:prefix + OUTPUT_VARIABLE + PERL_PREFIX_OUTPUT_VARIABLE + RESULT_VARIABLE + PERL_PREFIX_RESULT_VARIABLE + ) + + if (NOT PERL_PREFIX_RESULT_VARIABLE) + string(REGEX REPLACE "prefix='([^']+)'.*" "\\1" PERL_PREFIX ${PERL_PREFIX_OUTPUT_VARIABLE}) + endif (NOT PERL_PREFIX_RESULT_VARIABLE) -SET(PERL_POSSIBLE_INCLUDE_PATHS - /usr/lib/perl/5.8.3/CORE - /usr/lib/perl/5.8.2/CORE - /usr/lib/perl/5.8.1/CORE - /usr/lib/perl/5.8.0/CORE - /usr/lib/perl/5.8/CORE + ### PERL_VERSION + execute_process( + COMMAND + ${PERL_EXECUTABLE} -V:version + OUTPUT_VARIABLE + PERL_VERSION_OUTPUT_VARIABLE + RESULT_VARIABLE + PERL_VERSION_RESULT_VARIABLE ) + if (NOT PERL_VERSION_RESULT_VARIABLE) + string(REGEX REPLACE "version='([^']+)'.*" "\\1" PERL_VERSION ${PERL_VERSION_OUTPUT_VARIABLE}) + endif (NOT PERL_VERSION_RESULT_VARIABLE) -SET(PERL_POSSIBLE_LIB_PATHS - /usr/lib + ### PERL_ARCHNAME + execute_process( + COMMAND + ${PERL_EXECUTABLE} -V:archname + OUTPUT_VARIABLE + PERL_ARCHNAME_OUTPUT_VARIABLE + RESULT_VARIABLE + PERL_ARCHNAME_RESULT_VARIABLE ) + if (NOT PERL_ARCHNAME_RESULT_VARIABLE) + string(REGEX REPLACE "archname='([^']+)'.*" "\\1" PERL_ARCHNAME ${PERL_ARCHNAME_OUTPUT_VARIABLE}) + endif (NOT PERL_ARCHNAME_RESULT_VARIABLE) -FIND_PATH(PERL_INCLUDE_PATH perl.h - ${PERL_POSSIBLE_INCLUDE_PATHS}) -# find the perl executable -INCLUDE(FindPerl) + ### PERL_EXTRA_C_FLAGS + execute_process( + COMMAND + ${PERL_EXECUTABLE} -V:cppflags + OUTPUT_VARIABLE + PERL_CPPFLAGS_OUTPUT_VARIABLE + RESULT_VARIABLE + PERL_CPPFLAGS_RESULT_VARIABLE + ) + if (NOT PERL_CPPFLAGS_RESULT_VARIABLE) + string(REGEX REPLACE "cppflags='([^']+)'.*" "\\1" PERL_EXTRA_C_FLAGS ${PERL_CPPFLAGS_OUTPUT_VARIABLE}) + endif (NOT PERL_CPPFLAGS_RESULT_VARIABLE) + + ### PERL_SITESEARCH + execute_process( + COMMAND + ${PERL_EXECUTABLE} -V:installsitesearch + OUTPUT_VARIABLE + PERL_SITESEARCH_OUTPUT_VARIABLE + RESULT_VARIABLE + PERL_SITESEARCH_RESULT_VARIABLE + ) + if (NOT PERL_SITESEARCH_RESULT_VARIABLE) + string(REGEX REPLACE "install[a-z]+='([^']+)'.*" "\\1" PERL_SITESEARCH ${PERL_SITESEARCH_OUTPUT_VARIABLE}) + endif (NOT PERL_SITESEARCH_RESULT_VARIABLE) + + ### PERL_SITELIB + execute_process( + COMMAND + ${PERL_EXECUTABLE} -V:installsitelib + OUTPUT_VARIABLE + PERL_SITELIB_OUTPUT_VARIABLE + RESULT_VARIABLE + PERL_SITELIB_RESULT_VARIABLE + ) + if (NOT PERL_SITELIB_RESULT_VARIABLE) + string(REGEX REPLACE "install[a-z]+='([^']+)'.*" "\\1" PERL_SITELIB ${PERL_SITELIB_OUTPUT_VARIABLE}) + endif (NOT PERL_SITELIB_RESULT_VARIABLE) -IF(PERL_EXECUTABLE) - EXEC_PROGRAM(${PERL_EXECUTABLE} - ARGS -e "'use Config; print \$Config{libperl}, \"\\n\"'" - OUTPUT_VARIABLE PERL_LIBRARY_OUTPUT_VARIABLE - RETURN_VALUE PERL_LIBRARY_RETURN_VALUE + ### PERL_VENDORARCH + execute_process( + COMMAND + ${PERL_EXECUTABLE} -V:installvendorarch + OUTPUT_VARIABLE + PERL_VENDORARCH_OUTPUT_VARIABLE + RESULT_VARIABLE + PERL_VENDORARCH_RESULT_VARIABLE ) - IF(NOT PERL_LIBRARY_RETURN_VALUE) - FOREACH(path ${PERL_POSSIBLE_LIB_PATHS}) - SET(PERL_POSSIBLE_LIBRARY_NAME ${PERL_POSSIBLE_LIBRARY_NAME} "${path}/${PERL_LIBRARY_OUTPUT_VARIABLE}") - ENDFOREACH(path ${PERL_POSSIBLE_LIB_PATHS}) - ENDIF(NOT PERL_LIBRARY_RETURN_VALUE) - EXEC_PROGRAM(${PERL_EXECUTABLE} - ARGS -e "'use Config; print \$Config{cppflags}, \"\\n\"'" - OUTPUT_VARIABLE PERL_CPPFLAGS_OUTPUT_VARIABLE - RETURN_VALUE PERL_CPPFLAGS_RETURN_VALUE + if (NOT PERL_VENDORARCH_RESULT_VARIABLE) + string(REGEX REPLACE "install[a-z]+='([^']+)'.*" "\\1" PERL_VENDORARCH ${PERL_VENDORARCH_OUTPUT_VARIABLE}) + endif (NOT PERL_VENDORARCH_RESULT_VARIABLE) + + ### PERL_VENDORLIB + execute_process( + COMMAND + ${PERL_EXECUTABLE} -V:installvendorlib + OUTPUT_VARIABLE + PERL_VENDORLIB_OUTPUT_VARIABLE + RESULT_VARIABLE + PERL_VENDORLIB_RESULT_VARIABLE + ) + if (NOT PERL_VENDORLIB_RESULT_VARIABLE) + string(REGEX REPLACE "install[a-z]+='([^']+)'.*" "\\1" PERL_VENDORLIB ${PERL_VENDORLIB_OUTPUT_VARIABLE}) + endif (NOT PERL_VENDORLIB_RESULT_VARIABLE) + + ### PERL_ARCHLIB + execute_process( + COMMAND + ${PERL_EXECUTABLE} -V:installarchlib + OUTPUT_VARIABLE + PERL_ARCHLIB_OUTPUT_VARIABLE + RESULT_VARIABLE + PERL_ARCHLIB_RESULT_VARIABLE + ) + if (NOT PERL_ARCHLIB_RESULT_VARIABLE) + string(REGEX REPLACE "install[a-z]+='([^']+)'.*" "\\1" PERL_ARCHLIB ${PERL_ARCHLIB_OUTPUT_VARIABLE}) + endif (NOT PERL_ARCHLIB_RESULT_VARIABLE) + + ### PERL_PRIVLIB + execute_process( + COMMAND + ${PERL_EXECUTABLE} -V:installprivlib + OUTPUT_VARIABLE + PERL_PRIVLIB_OUTPUT_VARIABLE + RESULT_VARIABLE + PERL_PRIVLIB_RESULT_VARIABLE + ) + if (NOT PERL_PRIVLIB_RESULT_VARIABLE) + string(REGEX REPLACE "install[a-z]+='([^']+)'.*" "\\1" PERL_PRIVLIB ${PERL_PRIVLIB_OUTPUT_VARIABLE}) + endif (NOT PERL_PRIVLIB_RESULT_VARIABLE) + + + ### PERL_POSSIBLE_INCLUDE_PATHS + set(PERL_POSSIBLE_INCLUDE_PATHS + ${PERL_ARCHLIB}/CORE + /usr/lib/perl5/${PERL_VERSION}/${PERL_ARCHNAME}/CORE + /usr/lib/perl/${PERL_VERSION}/${PERL_ARCHNAME}/CORE + /usr/lib/perl5/${PERL_VERSION}/CORE + /usr/lib/perl/${PERL_VERSION}/CORE ) - IF(NOT PERL_CPPFLAGS_RETURN_VALUE) - SET(PERL_EXTRA_C_FLAGS ${PERL_CPPFLAGS_OUTPUT_VARIABLE}) - ENDIF(NOT PERL_CPPFLAGS_RETURN_VALUE) -ENDIF(PERL_EXECUTABLE) - -FIND_LIBRARY(PERL_LIBRARY - NAMES ${PERL_POSSIBLE_LIBRARY_NAME} perl5.8.0 - PATHS ${PERL_POSSIBLE_LIB_PATHS} + + ### PERL_POSSIBLE_LIB_PATHS + set(PERL_POSSIBLE_LIB_PATHS + ${PERL_ARCHLIB}/CORE + /usr/lib/perl5/${PERL_VERSION}/${PERL_ARCHNAME}/CORE + /usr/lib/perl/${PERL_VERSION}/${PERL_ARCHNAME}/CORE + /usr/lib/perl5/${PERL_VERSION}/CORE + /usr/lib/perl/${PERL_VERSION}/CORE + ) + + ### PERL_POSSIBLE_LIBRARY_NAME + execute_process( + COMMAND + ${PERL_EXECUTABLE} -V:libperl + OUTPUT_VARIABLE + PERL_LIBRARY_OUTPUT_VARIABLE + RESULT_VARIABLE + PERL_LIBRARY_RESULT_VARIABLE + ) + if (NOT PERL_LIBRARY_RESULT_VARIABLE) + foreach(_perl_lib_path ${PERL_POSSIBLE_LIB_PATHS}) + string(REGEX REPLACE "libperl='([^']+)'" "\\1" PERL_LIBRARY_OUTPUT_VARIABLE ${PERL_LIBRARY_OUTPUT_VARIABLE}) + set(PERL_POSSIBLE_LIBRARY_NAME ${PERL_POSSIBLE_LIBRARY_NAME} "${_perl_lib_path}/${PERL_LIBRARY_OUTPUT_VARIABLE}") + endforeach(_perl_lib_path ${PERL_POSSIBLE_LIB_PATHS}) + endif (NOT PERL_LIBRARY_RESULT_VARIABLE) + + ### PERL_INCLUDE_PATH + find_path(PERL_INCLUDE_PATH + NAMES + perl.h + PATHS + ${PERL_POSSIBLE_INCLUDE_PATHS} + ) + + ### PERL_LIBRARY + find_library(PERL_LIBRARY + NAMES + ${PERL_POSSIBLE_LIBRARY_NAME} + perl${PERL_VERSION} + perl + PATHS + ${PERL_POSSIBLE_LIB_PATHS} ) +endif (PERL_EXECUTABLE) + # handle the QUIETLY and REQUIRED arguments and set PERLLIBS_FOUND to TRUE if # all listed variables are TRUE INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(PerlLibs DEFAULT_MSG PERL_LIBRARY PERL_INCLUDE_PATH) +# Introduced after CMake 2.6.4 to bring module into compliance +set(PERL_INCLUDE_DIR ${PERL_INCLUDE_PATH}) +set(PERL_INCLUDE_DIRS ${PERL_INCLUDE_PATH}) +set(PERL_LIBRARIES ${PERL_LIBRARY}) -MARK_AS_ADVANCED( +mark_as_advanced( PERL_INCLUDE_PATH PERL_EXECUTABLE PERL_LIBRARY - ) +) diff --git a/Modules/FindPhysFS.cmake b/Modules/FindPhysFS.cmake old mode 100755 new mode 100644 index 443ce3831..4775a8ebc --- a/Modules/FindPhysFS.cmake +++ b/Modules/FindPhysFS.cmake @@ -10,6 +10,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PATH(PHYSFS_INCLUDE_DIR physfs.h HINTS $ENV{PHYSFSDIR} diff --git a/Modules/FindPike.cmake b/Modules/FindPike.cmake index 12985e835..d1b5ea6e2 100644 --- a/Modules/FindPike.cmake +++ b/Modules/FindPike.cmake @@ -7,6 +7,19 @@ # PIKE_EXECUTABLE = full path to the pike binary # +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FILE(GLOB PIKE_POSSIBLE_INCLUDE_PATHS /usr/include/pike/* /usr/local/include/pike/*) diff --git a/Modules/FindPkgConfig.cmake b/Modules/FindPkgConfig.cmake old mode 100755 new mode 100644 index ea72491a7..f7d43c92e --- a/Modules/FindPkgConfig.cmake +++ b/Modules/FindPkgConfig.cmake @@ -67,6 +67,18 @@ # # pkg_search_module (BAR libxml-2.0 libxml2 libxml>=2) +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) # Copyright (C) 2006 Enrico Scholz # diff --git a/Modules/FindProducer.cmake b/Modules/FindProducer.cmake index d8151ef6f..352550934 100644 --- a/Modules/FindProducer.cmake +++ b/Modules/FindProducer.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include diff --git a/Modules/FindProtobuf.cmake b/Modules/FindProtobuf.cmake new file mode 100755 index 000000000..21344775b --- /dev/null +++ b/Modules/FindProtobuf.cmake @@ -0,0 +1,121 @@ +# Locate and configure the Google Protocol Buffers library. +# Defines the following variables: +# +# PROTOBUF_FOUND - Found the Google Protocol Buffers library +# PROTOBUF_INCLUDE_DIRS - Include directories for Google Protocol Buffers +# PROTOBUF_LIBRARIES - The protobuf library +# +# The following cache variables are also defined: +# PROTOBUF_LIBRARY - The protobuf library +# PROTOBUF_PROTOC_LIBRARY - The protoc library +# PROTOBUF_INCLUDE_DIR - The include directory for protocol buffers +# PROTOBUF_PROTOC_EXECUTABLE - The protoc compiler +# +#==================================================================== +# Example: +# +# find_package(Protobuf REQUIRED) +# include_directories(${PROTOBUF_INCLUDE_DIRS}) +# +# include_directories(${CMAKE_CURRENT_BINARY_DIR}) +# PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS foo.proto) +# add_executable(bar bar.cc ${PROTO_SRCS} ${PROTO_HDRS}) +# target_link_libraries(bar ${PROTOBUF_LIBRARY}) +# +# NOTE: You may need to link against pthreads, depending +# on the platform. +#==================================================================== +# +# PROTOBUF_GENERATE_CPP (public function) +# SRCS = Variable to define with autogenerated +# source files +# HDRS = Variable to define with autogenerated +# header files +# ARGN = proto files +# +#==================================================================== + + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2009 Philip Lowman +# Copyright 2008 Esben Mose Hansen, Ange Optimization ApS +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +function(PROTOBUF_GENERATE_CPP SRCS HDRS) + if(NOT ARGN) + message(SEND_ERROR "Error: PROTOBUF_GENERATE_CPP() called without any proto files") + return() + endif(NOT ARGN) + + set(${SRCS}) + set(${HDRS}) + foreach(FIL ${ARGN}) + get_filename_component(ABS_FIL ${FIL} ABSOLUTE) + get_filename_component(FIL_WE ${FIL} NAME_WE) + + list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc") + list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h") + + add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc" + "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h" + COMMAND ${PROTOBUF_PROTOC_EXECUTABLE} + ARGS --cpp_out ${CMAKE_CURRENT_BINARY_DIR} --proto_path ${CMAKE_CURRENT_SOURCE_DIR} ${ABS_FIL} + DEPENDS ${ABS_FIL} + COMMENT "Running C++ protocol buffer compiler on ${FIL}" + VERBATIM ) + endforeach() + + set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE) + set(${SRCS} ${${SRCS}} PARENT_SCOPE) + set(${HDRS} ${${HDRS}} PARENT_SCOPE) +endfunction() + + +find_path(PROTOBUF_INCLUDE_DIR google/protobuf/service.h) + +# Google's provided vcproj files generate libraries with a "lib" +# prefix on Windows +if(WIN32) + set(PROTOBUF_ORIG_FIND_LIBRARY_PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES}") + set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "") +endif() + +find_library(PROTOBUF_LIBRARY NAMES protobuf + DOC "The Google Protocol Buffers Library" +) +find_library(PROTOBUF_PROTOC_LIBRARY NAMES protoc + DOC "The Google Protocol Buffers Compiler Library" +) +find_program(PROTOBUF_PROTOC_EXECUTABLE NAMES protoc + DOC "The Google Protocol Buffers Compiler" +) + +mark_as_advanced(PROTOBUF_INCLUDE_DIR + PROTOBUF_LIBRARY + PROTOBUF_PROTOC_LIBRARY + PROTOBUF_PROTOC_EXECUTABLE) + +# Restore original find library prefixes +if(WIN32) + set(CMAKE_FIND_LIBRARY_PREFIXES "${PROTOBUF_ORIG_FIND_LIBRARY_PREFIXES}") +endif() + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROTOBUF DEFAULT_MSG + PROTOBUF_LIBRARY PROTOBUF_INCLUDE_DIR) + +if(PROTOBUF_FOUND) + set(PROTOBUF_INCLUDE_DIRS ${PROTOBUF_INCLUDE_DIR}) + set(PROTOBUF_LIBRARIES ${PROTOBUF_LIBRARY}) +endif() diff --git a/Modules/FindPythonInterp.cmake b/Modules/FindPythonInterp.cmake index 82ebd98c2..167f53358 100644 --- a/Modules/FindPythonInterp.cmake +++ b/Modules/FindPythonInterp.cmake @@ -6,6 +6,19 @@ # PYTHON_EXECUTABLE - path to the Python interpreter # +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PROGRAM(PYTHON_EXECUTABLE NAMES python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5 python PATHS diff --git a/Modules/FindPythonLibs.cmake b/Modules/FindPythonLibs.cmake index ab33792a5..2b1241e5d 100644 --- a/Modules/FindPythonLibs.cmake +++ b/Modules/FindPythonLibs.cmake @@ -3,12 +3,26 @@ # include files and libraries are. It also determines what the name of # the library is. This code sets the following variables: # -# PYTHONLIBS_FOUND = have the Python libs been found -# PYTHON_LIBRARIES = path to the python library -# PYTHON_INCLUDE_PATH = path to where Python.h is found -# PYTHON_DEBUG_LIBRARIES = path to the debug library +# PYTHONLIBS_FOUND - have the Python libs been found +# PYTHON_LIBRARIES - path to the python library +# PYTHON_INCLUDE_PATH - path to where Python.h is found (deprecated) +# PYTHON_INCLUDE_DIRS - path to where Python.h is found +# PYTHON_DEBUG_LIBRARIES - path to the debug library # +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + INCLUDE(CMakeFindFrameworks) # Search for the python framework on Apple. CMAKE_FIND_FRAMEWORKS(Python) @@ -33,15 +47,22 @@ FOREACH(_CURRENT_VERSION 2.6 2.5 2.4 2.3 2.2 2.1 2.0 1.6 1.5) NO_SYSTEM_ENVIRONMENT_PATH ) + # For backward compatibility, honour value of PYTHON_INCLUDE_PATH, if + # PYTHON_INCLUDE_DIR is not set. + IF(DEFINED PYTHON_INCLUDE_PATH AND NOT DEFINED PYTHON_INCLUDE_DIR) + SET(PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_PATH}" CACHE PATH + "Path to where Python.h is found" FORCE) + ENDIF(DEFINED PYTHON_INCLUDE_PATH AND NOT DEFINED PYTHON_INCLUDE_DIR) + SET(PYTHON_FRAMEWORK_INCLUDES) - IF(Python_FRAMEWORKS AND NOT PYTHON_INCLUDE_PATH) + IF(Python_FRAMEWORKS AND NOT PYTHON_INCLUDE_DIR) FOREACH(dir ${Python_FRAMEWORKS}) SET(PYTHON_FRAMEWORK_INCLUDES ${PYTHON_FRAMEWORK_INCLUDES} ${dir}/Versions/${_CURRENT_VERSION}/include/python${_CURRENT_VERSION}) ENDFOREACH(dir) - ENDIF(Python_FRAMEWORKS AND NOT PYTHON_INCLUDE_PATH) + ENDIF(Python_FRAMEWORKS AND NOT PYTHON_INCLUDE_DIR) - FIND_PATH(PYTHON_INCLUDE_PATH + FIND_PATH(PYTHON_INCLUDE_DIR NAMES Python.h PATHS ${PYTHON_FRAMEWORK_INCLUDES} @@ -49,23 +70,27 @@ FOREACH(_CURRENT_VERSION 2.6 2.5 2.4 2.3 2.2 2.1 2.0 1.6 1.5) PATH_SUFFIXES python${_CURRENT_VERSION} ) + + # For backward compatibility, set PYTHON_INCLUDE_PATH, but make it internal. + SET(PYTHON_INCLUDE_PATH "${PYTHON_INCLUDE_DIR}" CACHE INTERNAL + "Path to where Python.h is found (deprecated)") ENDFOREACH(_CURRENT_VERSION) MARK_AS_ADVANCED( PYTHON_DEBUG_LIBRARY PYTHON_LIBRARY - PYTHON_INCLUDE_PATH + PYTHON_INCLUDE_DIR ) # Python Should be built and installed as a Framework on OSX IF(Python_FRAMEWORKS) # If a framework has been selected for the include path, # make sure "-framework" is used to link it. - IF("${PYTHON_INCLUDE_PATH}" MATCHES "Python\\.framework") + IF("${PYTHON_INCLUDE_DIR}" MATCHES "Python\\.framework") SET(PYTHON_LIBRARY "") SET(PYTHON_DEBUG_LIBRARY "") - ENDIF("${PYTHON_INCLUDE_PATH}" MATCHES "Python\\.framework") + ENDIF("${PYTHON_INCLUDE_DIR}" MATCHES "Python\\.framework") IF(NOT PYTHON_LIBRARY) SET (PYTHON_LIBRARY "-framework Python" CACHE FILEPATH "Python Framework" FORCE) ENDIF(NOT PYTHON_LIBRARY) @@ -74,16 +99,17 @@ IF(Python_FRAMEWORKS) ENDIF(NOT PYTHON_DEBUG_LIBRARY) ENDIF(Python_FRAMEWORKS) -# We use PYTHON_LIBRARY and PYTHON_DEBUG_LIBRARY for the cache entries -# because they are meant to specify the location of a single library. -# We now set the variables listed by the documentation for this +# We use PYTHON_INCLUDE_DIR, PYTHON_LIBRARY and PYTHON_DEBUG_LIBRARY for the +# cache entries because they are meant to specify the location of a single +# library. We now set the variables listed by the documentation for this # module. +SET(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}") SET(PYTHON_LIBRARIES "${PYTHON_LIBRARY}") SET(PYTHON_DEBUG_LIBRARIES "${PYTHON_DEBUG_LIBRARY}") INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonLibs DEFAULT_MSG PYTHON_LIBRARIES PYTHON_INCLUDE_PATH) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonLibs DEFAULT_MSG PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) # PYTHON_ADD_MODULE( src1 src2 ... srcN) is used to build modules for python. diff --git a/Modules/FindQt.cmake b/Modules/FindQt.cmake index 63b6de951..85213e842 100644 --- a/Modules/FindQt.cmake +++ b/Modules/FindQt.cmake @@ -17,6 +17,18 @@ # QT4_INSTALLED is set to TRUE if qt4 is found. # QT3_INSTALLED is set to TRUE if qt3 is found. +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) # look for signs of qt3 installations FILE(GLOB GLOB_TEMP_VAR /usr/lib/qt-3*/bin/qmake) diff --git a/Modules/FindQt3.cmake b/Modules/FindQt3.cmake old mode 100755 new mode 100644 index dcfaad30c..46c337f17 --- a/Modules/FindQt3.cmake +++ b/Modules/FindQt3.cmake @@ -20,6 +20,19 @@ # QT_WRAP_CPP, set true if QT_MOC_EXECUTABLE is found # QT_WRAP_UI set true if QT_UIC_EXECUTABLE is found +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # If Qt4 has already been found, fail. IF(QT4_FOUND) IF(Qt3_FIND_REQUIRED) diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake index 2050dec8e..8fb95ee24 100644 --- a/Modules/FindQt4.cmake +++ b/Modules/FindQt4.cmake @@ -41,6 +41,7 @@ # QT_USE_QTWEBKIT # QT_USE_QTXMLPATTERNS # QT_USE_PHONON +# QT_USE_QTSCRIPTTOOLS # # There are also some files that need processing by some Qt tools such as moc # and uic. Listed below are macros that may be used to process those files. @@ -159,6 +160,7 @@ # QT_QTWEBKIT_FOUND True if QtWebKit was found. # QT_QTXMLPATTERNS_FOUND True if QtXmlPatterns was found. # QT_PHONON_FOUND True if phonon was found. +# QT_QTSCRIPTTOOLS_FOUND True if QtScriptTools was found. # # # QT_DEFINITIONS Definitions to use when compiling code that uses Qt. @@ -202,6 +204,7 @@ # QT_QTWEBKIT_INCLUDE_DIR Path to "include/QtWebKit" # QT_QTXMLPATTERNS_INCLUDE_DIR Path to "include/QtXmlPatterns" # QT_PHONON_INCLUDE_DIR Path to "include/phonon" +# QT_QTSCRIPTTOOLS_INCLUDE_DIR Path to "include/QtScriptTools" # # QT_BINARY_DIR Path to "bin" of Qt4 # QT_LIBRARY_DIR Path to "lib" of Qt4 @@ -241,16 +244,18 @@ # QT_QTWEBKIT_LIBRARY The QtWebKit library # QT_QTXMLPATTERNS_LIBRARY The QtXmlPatterns library # QT_PHONON_LIBRARY The phonon library +# QT_QTSCRIPTTOOLS_LIBRARY The QtScriptTools library # # also defined, but NOT for general use are -# QT_MOC_EXECUTABLE Where to find the moc tool. -# QT_UIC_EXECUTABLE Where to find the uic tool. -# QT_UIC3_EXECUTABLE Where to find the uic3 tool. -# QT_RCC_EXECUTABLE Where to find the rcc tool -# QT_DBUSCPP2XML_EXECUTABLE Where to find the qdbuscpp2xml tool. -# QT_DBUSXML2CPP_EXECUTABLE Where to find the qdbusxml2cpp tool. -# QT_LUPDATE_EXECUTABLE Where to find the lupdate tool. -# QT_LRELEASE_EXECUTABLE Where to find the lrelease tool. +# QT_MOC_EXECUTABLE Where to find the moc tool. +# QT_UIC_EXECUTABLE Where to find the uic tool. +# QT_UIC3_EXECUTABLE Where to find the uic3 tool. +# QT_RCC_EXECUTABLE Where to find the rcc tool +# QT_DBUSCPP2XML_EXECUTABLE Where to find the qdbuscpp2xml tool. +# QT_DBUSXML2CPP_EXECUTABLE Where to find the qdbusxml2cpp tool. +# QT_LUPDATE_EXECUTABLE Where to find the lupdate tool. +# QT_LRELEASE_EXECUTABLE Where to find the lrelease tool. +# QT_QCOLLECTIONGENERATOR_EXECUTABLE Where to find the qcollectiongenerator tool. # # # These are around for backwards compatibility @@ -265,6 +270,18 @@ # (They make no sense in Qt4) # QT_QT_LIBRARY Qt-Library is now split +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) # Use FIND_PACKAGE( Qt4 COMPONENTS ... ) to enable modules IF( Qt4_FIND_COMPONENTS ) @@ -287,10 +304,10 @@ ENDIF( Qt4_FIND_COMPONENTS ) # If Qt3 has already been found, fail. IF(QT_QT_LIBRARY) IF(Qt4_FIND_REQUIRED) - MESSAGE( FATAL_ERROR "Qt3 and Qt4 cannot be used together in one project.") + MESSAGE( FATAL_ERROR "Qt3 and Qt4 cannot be used together in one project. If switching to Qt4, the CMakeCache.txt needs to be cleaned.") ELSE(Qt4_FIND_REQUIRED) IF(NOT Qt4_FIND_QUIETLY) - MESSAGE( STATUS "Qt3 and Qt4 cannot be used together in one project.") + MESSAGE( STATUS "Qt3 and Qt4 cannot be used together in one project. If switching to Qt4, the CMakeCache.txt needs to be cleaned.") ENDIF(NOT Qt4_FIND_QUIETLY) RETURN() ENDIF(Qt4_FIND_REQUIRED) @@ -544,7 +561,7 @@ IF (QT4_QMAKE_FOUND) SET(QT_MODULES QtCore QtGui Qt3Support QtSvg QtScript QtTest QtUiTools QtHelp QtWebKit QtXmlPatterns phonon QtMotif QtNetwork - QtNsPlugin QtOpenGL QtSql QtXml QtDesigner QtDBus) + QtNsPlugin QtOpenGL QtSql QtXml QtDesigner QtDBus QtScriptTools) IF(QT_QMAKE_CHANGED) FOREACH(QT_MODULE ${QT_MODULES}) @@ -626,14 +643,14 @@ IF (QT4_QMAKE_FOUND) ) # Set QT_INCLUDE_DIR by removine "/QtCore" in the string ${QT_QTCORE_INCLUDE_DIR} - IF( QT_QTCORE_INCLUDE_DIR AND NOT QT_INCLUDE_DIR) + IF( QT_QTCORE_INCLUDE_DIR ) IF (QT_USE_FRAMEWORKS) SET(QT_INCLUDE_DIR ${QT_HEADERS_DIR}) ELSE (QT_USE_FRAMEWORKS) STRING( REGEX REPLACE "/QtCore$" "" qt4_include_dir ${QT_QTCORE_INCLUDE_DIR}) SET( QT_INCLUDE_DIR ${qt4_include_dir}) ENDIF (QT_USE_FRAMEWORKS) - ENDIF( QT_QTCORE_INCLUDE_DIR AND NOT QT_INCLUDE_DIR) + ENDIF( QT_QTCORE_INCLUDE_DIR ) IF( NOT QT_INCLUDE_DIR) IF(Qt4_FIND_REQUIRED) @@ -688,23 +705,44 @@ IF (QT4_QMAKE_FOUND) # ############################################# + + + ####################################### + # + # Qt configuration + # + ####################################### + IF(EXISTS "${QT_MKSPECS_DIR}/qconfig.pri") + FILE(READ ${QT_MKSPECS_DIR}/qconfig.pri _qconfig_FILE_contents) + STRING(REGEX MATCH "QT_CONFIG[^\n]+" QT_QCONFIG "${_qconfig_FILE_contents}") + STRING(REGEX MATCH "CONFIG[^\n]+" QT_CONFIG "${_qconfig_FILE_contents}") + STRING(REGEX MATCH "EDITION[^\n]+" QT_EDITION "${_qconfig_FILE_contents}") + STRING(REGEX MATCH "QT_LIBINFIX[^\n]+" _qconfig_qt_libinfix "${_qconfig_FILE_contents}") + STRING(REGEX REPLACE "QT_LIBINFIX *= *([^\n]*)" "\\1" QT_LIBINFIX "${_qconfig_qt_libinfix}") + ENDIF(EXISTS "${QT_MKSPECS_DIR}/qconfig.pri") + IF("${QT_EDITION}" MATCHES "DesktopLight") + SET(QT_EDITION_DESKTOPLIGHT 1) + ENDIF("${QT_EDITION}" MATCHES "DesktopLight") + + + # find the libraries FOREACH(QT_MODULE ${QT_MODULES}) STRING(TOUPPER ${QT_MODULE} _upper_qt_module) FIND_LIBRARY(QT_${_upper_qt_module}_LIBRARY_RELEASE - NAMES ${QT_MODULE} ${QT_MODULE}4 + NAMES ${QT_MODULE}${QT_LIBINFIX} ${QT_MODULE}${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH ) FIND_LIBRARY(QT_${_upper_qt_module}_LIBRARY_DEBUG - NAMES ${QT_MODULE}_debug ${QT_MODULE}d ${QT_MODULE}d4 + NAMES ${QT_MODULE}${QT_LIBINFIX}_debug ${QT_MODULE}${QT_LIBINFIX}d ${QT_MODULE}${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH ) ENDFOREACH(QT_MODULE) # QtUiTools not with other frameworks with binary installation (in /usr/lib) IF(Q_WS_MAC AND QT_QTCORE_LIBRARY_RELEASE AND NOT QT_QTUITOOLS_LIBRARY_RELEASE) - FIND_LIBRARY(QT_QTUITOOLS_LIBRARY_RELEASE NAMES QtUiTools PATHS ${QT_LIBRARY_DIR}) + FIND_LIBRARY(QT_QTUITOOLS_LIBRARY_RELEASE NAMES QtUiTools${QT_LIBINFIX} PATHS ${QT_LIBRARY_DIR}) ENDIF(Q_WS_MAC AND QT_QTCORE_LIBRARY_RELEASE AND NOT QT_QTUITOOLS_LIBRARY_RELEASE) IF( NOT QT_QTCORE_LIBRARY_DEBUG AND NOT QT_QTCORE_LIBRARY_RELEASE ) @@ -722,31 +760,31 @@ IF (QT4_QMAKE_FOUND) ENDIF( NOT QT_QTCORE_LIBRARY_DEBUG AND NOT QT_QTCORE_LIBRARY_RELEASE ) # Set QT_QTDESIGNERCOMPONENTS_LIBRARY - FIND_LIBRARY(QT_QTDESIGNERCOMPONENTS_LIBRARY_RELEASE NAMES QtDesignerComponents QtDesignerComponents4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) - FIND_LIBRARY(QT_QTDESIGNERCOMPONENTS_LIBRARY_DEBUG NAMES QtDesignerComponents_debug QtDesignerComponentsd QtDesignerComponentsd4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) + FIND_LIBRARY(QT_QTDESIGNERCOMPONENTS_LIBRARY_RELEASE NAMES QtDesignerComponents${QT_LIBINFIX} QtDesignerComponents${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) + FIND_LIBRARY(QT_QTDESIGNERCOMPONENTS_LIBRARY_DEBUG NAMES QtDesignerComponents${QT_LIBINFIX}_debug QtDesignerComponents${QT_LIBINFIX}d QtDesignerComponents${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) # Set QT_QTMAIN_LIBRARY IF(WIN32) - FIND_LIBRARY(QT_QTMAIN_LIBRARY_RELEASE NAMES qtmain PATHS ${QT_LIBRARY_DIR} + FIND_LIBRARY(QT_QTMAIN_LIBRARY_RELEASE NAMES qtmain${QT_LIBINFIX} PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) - FIND_LIBRARY(QT_QTMAIN_LIBRARY_DEBUG NAMES qtmaind PATHS ${QT_LIBRARY_DIR} + FIND_LIBRARY(QT_QTMAIN_LIBRARY_DEBUG NAMES qtmain${QT_LIBINFIX}d PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) ENDIF(WIN32) # Set QT_QTASSISTANTCLIENT_LIBRARY - FIND_LIBRARY(QT_QTASSISTANTCLIENT_LIBRARY_RELEASE NAMES QtAssistantClient QtAssistantClient4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) - FIND_LIBRARY(QT_QTASSISTANTCLIENT_LIBRARY_DEBUG NAMES QtAssistantClient_debug QtAssistantClientd QtAssistantClientd4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) + FIND_LIBRARY(QT_QTASSISTANTCLIENT_LIBRARY_RELEASE NAMES QtAssistantClient${QT_LIBINFIX} QtAssistantClient${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) + FIND_LIBRARY(QT_QTASSISTANTCLIENT_LIBRARY_DEBUG NAMES QtAssistantClient${QT_LIBINFIX}_debug QtAssistantClient${QT_LIBINFIX}d QtAssistantClient${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) # Set QT_QTASSISTANT_LIBRARY - FIND_LIBRARY(QT_QTASSISTANT_LIBRARY_RELEASE NAMES QtAssistantClient QtAssistantClient4 QtAssistant QtAssistant4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) - FIND_LIBRARY(QT_QTASSISTANT_LIBRARY_DEBUG NAMES QtAssistantClient_debug QtAssistantClientd QtAssistantClientd4 QtAssistant_debug QtAssistantd4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) + FIND_LIBRARY(QT_QTASSISTANT_LIBRARY_RELEASE NAMES QtAssistantClient${QT_LIBINFIX} QtAssistantClient${QT_LIBINFIX}4 QtAssistant${QT_LIBINFIX} QtAssistant${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) + FIND_LIBRARY(QT_QTASSISTANT_LIBRARY_DEBUG NAMES QtAssistantClient${QT_LIBINFIX}_debug QtAssistantClient${QT_LIBINFIX}d QtAssistantClient${QT_LIBINFIX}d4 QtAssistant${QT_LIBINFIX}_debug QtAssistant${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) # Set QT_QTHELP_LIBRARY - FIND_LIBRARY(QT_QTCLUCENE_LIBRARY_RELEASE NAMES QtCLucene QtCLucene4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) - FIND_LIBRARY(QT_QTCLUCENE_LIBRARY_DEBUG NAMES QtCLucene_debug QtCLucened QtCLucened4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) + FIND_LIBRARY(QT_QTCLUCENE_LIBRARY_RELEASE NAMES QtCLucene${QT_LIBINFIX} QtCLucene${QT_LIBINFIX}4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) + FIND_LIBRARY(QT_QTCLUCENE_LIBRARY_DEBUG NAMES QtCLucene${QT_LIBINFIX}_debug QtCLucene${QT_LIBINFIX}d QtCLucene${QT_LIBINFIX}d4 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH) # QtCLucene not with other frameworks with binary installation (in /usr/lib) IF(Q_WS_MAC AND QT_QTCORE_LIBRARY_RELEASE AND NOT QT_QTCLUCENE_LIBRARY_RELEASE) - FIND_LIBRARY(QT_QTCLUCENE_LIBRARY_RELEASE NAMES QtCLucene PATHS ${QT_LIBRARY_DIR}) + FIND_LIBRARY(QT_QTCLUCENE_LIBRARY_RELEASE NAMES QtCLucene${QT_LIBINFIX} PATHS ${QT_LIBRARY_DIR}) ENDIF(Q_WS_MAC AND QT_QTCORE_LIBRARY_RELEASE AND NOT QT_QTCLUCENE_LIBRARY_RELEASE) ############################################ @@ -785,11 +823,7 @@ IF (QT4_QMAKE_FOUND) SET(QT_${basename}_LIBRARIES optimized ${QT_${basename}_LIBRARY_RELEASE} debug ${QT_${basename}_LIBRARY_DEBUG}) ENDIF (QT_${basename}_LIBRARY_DEBUG AND QT_${basename}_LIBRARY_RELEASE) - IF(QT_QMAKE_CHANGED) - SET(QT_${basename}_LIBRARY ${QT_${basename}_LIBRARY} CACHE STRING "The Qt ${basename} library" FORCE) - ELSE(QT_QMAKE_CHANGED) - SET(QT_${basename}_LIBRARY ${QT_${basename}_LIBRARY} CACHE STRING "The Qt ${basename} library") - ENDIF(QT_QMAKE_CHANGED) + SET(QT_${basename}_LIBRARY ${QT_${basename}_LIBRARY} CACHE STRING "The Qt ${basename} library" FORCE) IF (QT_${basename}_LIBRARY) SET(QT_${basename}_FOUND 1) @@ -832,6 +866,7 @@ IF (QT4_QMAKE_FOUND) _QT4_ADJUST_LIB_VARS(PHONON) _QT4_ADJUST_LIB_VARS(QTCLUCENE) _QT4_ADJUST_LIB_VARS(QTMOTIF) + _QT4_ADJUST_LIB_VARS(QTSCRIPTTOOLS) # platform dependent libraries IF(WIN32) @@ -858,6 +893,7 @@ IF (QT4_QMAKE_FOUND) SET(QT_DBUSXML2CPP_EXECUTABLE NOTFOUND) SET(QT_LUPDATE_EXECUTABLE NOTFOUND) SET(QT_LRELEASE_EXECUTABLE NOTFOUND) + SET(QT_QCOLLECTIONGENERATOR_EXECUTABLE NOTFOUND) ENDIF(QT_QMAKE_CHANGED) FIND_PROGRAM(QT_MOC_EXECUTABLE @@ -908,6 +944,12 @@ IF (QT4_QMAKE_FOUND) NO_DEFAULT_PATH ) + FIND_PROGRAM(QT_QCOLLECTIONGENERATOR_EXECUTABLE + NAMES qcollectiongenerator-qt4 qcollectiongenerator + PATHS ${QT_BINARY_DIR} + NO_DEFAULT_PATH + ) + IF (QT_MOC_EXECUTABLE) SET(QT_WRAP_CPP "YES") ENDIF (QT_MOC_EXECUTABLE) @@ -920,7 +962,7 @@ IF (QT4_QMAKE_FOUND) MARK_AS_ADVANCED( QT_UIC_EXECUTABLE QT_UIC3_EXECUTABLE QT_MOC_EXECUTABLE QT_RCC_EXECUTABLE QT_DBUSXML2CPP_EXECUTABLE QT_DBUSCPP2XML_EXECUTABLE - QT_LUPDATE_EXECUTABLE QT_LRELEASE_EXECUTABLE) + QT_LUPDATE_EXECUTABLE QT_LRELEASE_EXECUTABLE QT_QCOLLECTIONGENERATOR_EXECUTABLE) ###################################### # @@ -960,6 +1002,9 @@ IF (QT4_QMAKE_FOUND) ELSE(_infileLength GREATER _binlength) FILE(RELATIVE_PATH rel ${CMAKE_CURRENT_SOURCE_DIR} ${infile}) ENDIF(_infileLength GREATER _binlength) + IF(WIN32 AND rel MATCHES "^[a-zA-Z]:") # absolute path + STRING(REGEX REPLACE "^([a-zA-Z]):(.*)$" "\\1_\\2" rel "${rel}") + ENDIF(WIN32 AND rel MATCHES "^[a-zA-Z]:") SET(_outfile "${CMAKE_CURRENT_BINARY_DIR}/${rel}") STRING(REPLACE ".." "__" _outfile ${_outfile}) GET_FILENAME_COMPONENT(outpath ${_outfile} PATH) @@ -1141,7 +1186,7 @@ IF (QT4_QMAKE_FOUND) ENDIF (_customName) ADD_CUSTOM_COMMAND(OUTPUT ${_target} - COMMAND ${QT_DBUSCPP2XML_EXECUTABLE} ${_in_file} > ${_target} + COMMAND ${QT_DBUSCPP2XML_EXECUTABLE} -o ${_target} ${_in_file} DEPENDS ${_in_file} ) ENDMACRO(QT4_GENERATE_DBUS_INTERFACE) @@ -1248,7 +1293,10 @@ IF (QT4_QMAKE_FOUND) # long for some systems GET_FILENAME_COMPONENT(_ts_name ${_ts_file} NAME_WE) SET(_ts_pro ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_ts_name}_lupdate.pro) - STRING(REPLACE ";" " " _pro_srcs "${_my_sources}") + SET(_pro_srcs) + FOREACH(_pro_src ${_my_sources}) + SET(_pro_srcs "${_pro_srcs} \"${_pro_src}\"") + ENDFOREACH(_pro_src ${_my_sources}) FILE(WRITE ${_ts_pro} "SOURCES = ${_pro_srcs}") ENDIF(_my_sources) ADD_CUSTOM_COMMAND(OUTPUT ${_ts_file} @@ -1310,22 +1358,6 @@ IF (QT4_QMAKE_FOUND) SET(QT_FOUND ${QT4_FOUND}) - ####################################### - # - # Qt configuration - # - ####################################### - IF(EXISTS "${QT_MKSPECS_DIR}/qconfig.pri") - FILE(READ ${QT_MKSPECS_DIR}/qconfig.pri _qconfig_FILE_contents) - STRING(REGEX MATCH "QT_CONFIG[^\n]+" QT_QCONFIG "${_qconfig_FILE_contents}") - STRING(REGEX MATCH "CONFIG[^\n]+" QT_CONFIG "${_qconfig_FILE_contents}") - STRING(REGEX MATCH "EDITION[^\n]+" QT_EDITION "${_qconfig_FILE_contents}") - ENDIF(EXISTS "${QT_MKSPECS_DIR}/qconfig.pri") - IF("${QT_EDITION}" MATCHES "DesktopLight") - SET(QT_EDITION_DESKTOPLIGHT 1) - ENDIF("${QT_EDITION}" MATCHES "DesktopLight") - - ############################################### # # configuration/system dependent settings @@ -1533,6 +1565,33 @@ IF (QT4_QMAKE_FOUND) ${QT_GTHREAD_LIBRARY} ${QT_GLIB_LIBRARY}) ENDIF(QT_GLIB_LIBRARY AND QT_GTHREAD_LIBRARY) + + # Qt 4.5+ also links to gobject-2.0 + IF(QT_VERSION_MINOR GREATER 4) + IF(NOT QT_GOBJECT_LIBRARY) + EXECUTE_PROCESS(COMMAND pkg-config --libs-only-L gobject-2.0 + OUTPUT_VARIABLE _glib_query_output + RESULT_VARIABLE _glib_result + ERROR_VARIABLE _glib_query_output ) + + IF(_glib_result MATCHES 0) + STRING(REPLACE "-L" "" _glib_query_output "${_glib_query_output}") + SEPARATE_ARGUMENTS(_glib_query_output) + ELSE(_glib_result MATCHES 0) + SET(_glib_query_output) + ENDIF(_glib_result MATCHES 0) + + FIND_LIBRARY(QT_GOBJECT_LIBRARY NAMES gobject-2.0 PATHS ${_glib_query_output} ) + + MARK_AS_ADVANCED(QT_GOBJECT_LIBRARY) + ENDIF(NOT QT_GOBJECT_LIBRARY) + + IF(QT_GOBJECT_LIBRARY) + SET(QT_QTCORE_LIB_DEPENDENCIES ${QT_QTCORE_LIB_DEPENDENCIES} + ${QT_GOBJECT_LIBRARY}) + ENDIF(QT_GOBJECT_LIBRARY) + ENDIF(QT_VERSION_MINOR GREATER 4) + ENDIF(QT_QCONFIG MATCHES "glib") ## clock-monotonic, just see if we need to link with rt diff --git a/Modules/FindQuickTime.cmake b/Modules/FindQuickTime.cmake index 5a4a580a3..aa13ae999 100644 --- a/Modules/FindQuickTime.cmake +++ b/Modules/FindQuickTime.cmake @@ -9,6 +9,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # QuickTime on OS X looks different than QuickTime for Windows, # so I am going to case the two. diff --git a/Modules/FindRTI.cmake b/Modules/FindRTI.cmake index 3bfa72d31..e2efe77ae 100644 --- a/Modules/FindRTI.cmake +++ b/Modules/FindRTI.cmake @@ -2,10 +2,10 @@ # This module finds if any HLA RTI is installed and locates the standard RTI # include files and libraries. # -# RTI is a simulation infrastructure standartized by IEEE and SISO. It has a +# RTI is a simulation infrastructure standardized by IEEE and SISO. It has a # well defined C++ API that assures that simulation applications are # independent on a particular RTI implementation. -# http://en.wikipedia.org/wiki/Run-Time_Infrastructure_(simulation) +# http://en.wikipedia.org/wiki/Run-Time_Infrastructure_(simulation) # # This code sets the following variables: # RTI_INCLUDE_DIR = the directory where RTI includes file are found @@ -15,6 +15,20 @@ # # Report problems to +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# Copyright 2008 Petr Gotthard +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(RTI_MESSAGE_QUIETLY QUIET TYPE MSG) IF(NOT ${QUIET}) MESSAGE(${TYPE} "${MSG}") @@ -85,4 +99,4 @@ INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(RTI DEFAULT_MSG RTI_LIBRARY RTI_INCLUDE_DIR) -# $Id: FindRTI.cmake,v 1.3.2.2 2009-02-04 16:44:12 hoffman Exp $ +# $Id: FindRTI.cmake,v 1.4.2.1 2009-10-01 21:20:32 hoffman Exp $ diff --git a/Modules/FindRuby.cmake b/Modules/FindRuby.cmake index ea604f9b2..cf7710e74 100644 --- a/Modules/FindRuby.cmake +++ b/Modules/FindRuby.cmake @@ -1,15 +1,31 @@ # - Find Ruby # This module finds if Ruby is installed and determines where the include files -# and libraries are. It also determines what the name of the library is. This +# and libraries are. Ruby 1.8 and 1.9 are supported. The minimum required version +# specified in the find_package() command is honored. +# It also determines what the name of the library is. This # code sets the following variables: # -# RUBY_INCLUDE_PATH = path to where ruby.h can be found # RUBY_EXECUTABLE = full path to the ruby binary +# RUBY_INCLUDE_DIRS = include dirs to be used when using the ruby library # RUBY_LIBRARY = full path to the ruby library +# RUBY_VERSION = the version of ruby which was found, e.g. "1.8.7" +# RUBY_FOUND = set to true if ruby ws found successfully +# +# RUBY_INCLUDE_PATH = same as RUBY_INCLUDE_DIRS, only provided for compatibility reasons, don't use it -# Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. -# See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# Copyright 2008-2009 Alexander Neundorf +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) # RUBY_ARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"archdir"@:>@)'` # RUBY_SITEARCHDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"sitearchdir"@:>@)'` @@ -17,13 +33,51 @@ # RUBY_LIBDIR=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"libdir"@:>@)'` # RUBY_LIBRUBYARG=`$RUBY -r rbconfig -e 'printf("%s",Config::CONFIG@<:@"LIBRUBYARG_SHARED"@:>@)'` -FIND_PROGRAM(RUBY_EXECUTABLE NAMES ruby ruby1.8 ruby18 ruby1.9 ruby19) +# uncomment the following line to get debug output for this file +# SET(_RUBY_DEBUG_OUTPUT TRUE) + +# Determine the list of possible names of the ruby executable depending +# on which version of ruby is required +SET(_RUBY_POSSIBLE_EXECUTABLE_NAMES ruby) + +# if 1.9 is required, don't look for ruby18 and ruby1.8, default to version 1.8 +IF(Ruby_FIND_VERSION_MAJOR AND Ruby_FIND_VERSION_MINOR) + SET(Ruby_FIND_VERSION_SHORT_NODOT "${Ruby_FIND_VERSION_MAJOR}${RUBY_FIND_VERSION_MINOR}") +ELSE(Ruby_FIND_VERSION_MAJOR AND Ruby_FIND_VERSION_MINOR) + SET(Ruby_FIND_VERSION_SHORT_NODOT "18") +ENDIF(Ruby_FIND_VERSION_MAJOR AND Ruby_FIND_VERSION_MINOR) + +SET(_RUBY_POSSIBLE_EXECUTABLE_NAMES ${_RUBY_POSSIBLE_EXECUTABLE_NAMES} ruby1.9 ruby19) + +# if we want a version below 1.9, also look for ruby 1.8 +IF("${Ruby_FIND_VERSION_SHORT_NODOT}" VERSION_LESS "19") + SET(_RUBY_POSSIBLE_EXECUTABLE_NAMES ${_RUBY_POSSIBLE_EXECUTABLE_NAMES} ruby1.8 ruby18) +ENDIF("${Ruby_FIND_VERSION_SHORT_NODOT}" VERSION_LESS "19") + +FIND_PROGRAM(RUBY_EXECUTABLE NAMES ${_RUBY_POSSIBLE_EXECUTABLE_NAMES}) + + +IF(RUBY_EXECUTABLE AND NOT RUBY_MAJOR_VERSION) + # query the ruby version + EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['MAJOR']" + OUTPUT_VARIABLE RUBY_VERSION_MAJOR) + + EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['MINOR']" + OUTPUT_VARIABLE RUBY_VERSION_MINOR) + EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['TEENY']" + OUTPUT_VARIABLE RUBY_VERSION_PATCH) -IF(RUBY_EXECUTABLE AND NOT RUBY_ARCH_DIR) + # query the different directories EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['archdir']" OUTPUT_VARIABLE RUBY_ARCH_DIR) + EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['arch']" + OUTPUT_VARIABLE RUBY_ARCH) + + EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['rubyhdrdir']" + OUTPUT_VARIABLE RUBY_HDR_DIR) + EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['libdir']" OUTPUT_VARIABLE RUBY_POSSIBLE_LIB_DIR) @@ -50,45 +104,152 @@ IF(RUBY_EXECUTABLE AND NOT RUBY_ARCH_DIR) ENDIF(RUBY_HAS_VENDOR_RUBY) # save the results in the cache so we don't have to run ruby the next time again - SET(RUBY_ARCH_DIR ${RUBY_ARCH_DIR} CACHE PATH "The Ruby arch dir") - SET(RUBY_POSSIBLE_LIB_DIR ${RUBY_POSSIBLE_LIB_DIR} CACHE PATH "The Ruby lib dir") - SET(RUBY_RUBY_LIB_DIR ${RUBY_RUBY_LIB_DIR} CACHE PATH "The Ruby ruby-lib dir") - SET(RUBY_SITEARCH_DIR ${RUBY_SITEARCH_DIR} CACHE PATH "The Ruby site arch dir") - SET(RUBY_SITELIB_DIR ${RUBY_SITELIB_DIR} CACHE PATH "The Ruby site lib dir") - SET(RUBY_HAS_VENDOR_RUBY ${RUBY_HAS_VENDOR_RUBY} CACHE BOOL "Vendor Ruby is available") - SET(RUBY_VENDORARCH_DIR ${RUBY_VENDORARCH_DIR} CACHE PATH "The Ruby vendor arch dir") - SET(RUBY_VENDORLIB_DIR ${RUBY_VENDORLIB_DIR} CACHE PATH "The Ruby vendor lib dir") - -ENDIF(RUBY_EXECUTABLE AND NOT RUBY_ARCH_DIR) - -# for compatibility -SET(RUBY_POSSIBLE_LIB_PATH ${RUBY_POSSIBLE_LIB_DIR}) -SET(RUBY_RUBY_LIB_PATH ${RUBY_RUBY_LIB_DIR}) - - -FIND_PATH(RUBY_INCLUDE_PATH + SET(RUBY_VERSION_MAJOR ${RUBY_VERSION_MAJOR} CACHE PATH "The Ruby major version" FORCE) + SET(RUBY_VERSION_MINOR ${RUBY_VERSION_MINOR} CACHE PATH "The Ruby minor version" FORCE) + SET(RUBY_VERSION_PATCH ${RUBY_VERSION_PATCH} CACHE PATH "The Ruby patch version" FORCE) + SET(RUBY_ARCH_DIR ${RUBY_ARCH_DIR} CACHE PATH "The Ruby arch dir" FORCE) + SET(RUBY_HDR_DIR ${RUBY_HDR_DIR} CACHE PATH "The Ruby header dir (1.9)" FORCE) + SET(RUBY_POSSIBLE_LIB_DIR ${RUBY_POSSIBLE_LIB_DIR} CACHE PATH "The Ruby lib dir" FORCE) + SET(RUBY_RUBY_LIB_DIR ${RUBY_RUBY_LIB_DIR} CACHE PATH "The Ruby ruby-lib dir" FORCE) + SET(RUBY_SITEARCH_DIR ${RUBY_SITEARCH_DIR} CACHE PATH "The Ruby site arch dir" FORCE) + SET(RUBY_SITELIB_DIR ${RUBY_SITELIB_DIR} CACHE PATH "The Ruby site lib dir" FORCE) + SET(RUBY_HAS_VENDOR_RUBY ${RUBY_HAS_VENDOR_RUBY} CACHE BOOL "Vendor Ruby is available" FORCE) + SET(RUBY_VENDORARCH_DIR ${RUBY_VENDORARCH_DIR} CACHE PATH "The Ruby vendor arch dir" FORCE) + SET(RUBY_VENDORLIB_DIR ${RUBY_VENDORLIB_DIR} CACHE PATH "The Ruby vendor lib dir" FORCE) + + MARK_AS_ADVANCED( + RUBY_ARCH_DIR + RUBY_ARCH + RUBY_HDR_DIR + RUBY_POSSIBLE_LIB_DIR + RUBY_RUBY_LIB_DIR + RUBY_SITEARCH_DIR + RUBY_SITELIB_DIR + RUBY_HAS_VENDOR_RUBY + RUBY_VENDORARCH_DIR + RUBY_VENDORLIB_DIR + RUBY_VERSION_MAJOR + RUBY_VERSION_MINOR + RUBY_VERSION_PATCH + ) +ENDIF(RUBY_EXECUTABLE AND NOT RUBY_MAJOR_VERSION) + +# In case RUBY_EXECUTABLE could not be executed (e.g. cross compiling) +# try to detect which version we found. This is not too good. +IF(NOT RUBY_VERSION_MAJOR) + # by default assume 1.8.0 + SET(RUBY_VERSION_MAJOR 1) + SET(RUBY_VERSION_MINOR 8) + SET(RUBY_VERSION_PATCH 0) + # check whether we found 1.9.x + IF(${RUBY_EXECUTABLE} MATCHES "ruby1.?9" OR RUBY_HDR_DIR) + SET(RUBY_VERSION_MAJOR 1) + SET(RUBY_VERSION_MINOR 9) + ENDIF(${RUBY_EXECUTABLE} MATCHES "ruby1.?9" OR RUBY_HDR_DIR) +ENDIF(NOT RUBY_VERSION_MAJOR) + + +SET(RUBY_VERSION "${RUBY_VERSION_MAJOR}.${RUBY_VERSION_MINOR}.${RUBY_VERSION_PATCH}") +SET(_RUBY_VERSION_SHORT "${RUBY_VERSION_MAJOR}.${RUBY_VERSION_MINOR}") +SET(_RUBY_VERSION_SHORT_NODOT "${RUBY_VERSION_MAJOR}${RUBY_VERSION_MINOR}") + +# Now we know which version we found +IF(Ruby_FIND_VERSION) + IF(${RUBY_VERSION} VERSION_LESS ${Ruby_FIND_VERSION}) + # force running ruby the next time again + SET(RUBY_VERSION_MAJOR "" CACHE PATH "The Ruby major version" FORCE) + IF(Ruby_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Ruby version ${Ruby_FIND_VERSION} required, but only version ${RUBY_VERSION} found.") + ELSE(Ruby_FIND_REQUIRED) + IF(NOT Ruby_FIND_QUIETLY) + MESSAGE(STATUS "Ruby version ${Ruby_FIND_VERSION} required, but only version ${RUBY_VERSION} found.") + ENDIF(NOT Ruby_FIND_QUIETLY) + RETURN() + ENDIF(Ruby_FIND_REQUIRED) + ENDIF(${RUBY_VERSION} VERSION_LESS ${Ruby_FIND_VERSION}) +ENDIF(Ruby_FIND_VERSION) + +FIND_PATH(RUBY_INCLUDE_DIR NAMES ruby.h - PATHS + HINTS + ${RUBY_HDR_DIR} ${RUBY_ARCH_DIR} - /usr/lib/ruby/1.8/i586-linux-gnu/ ) - -# search the ruby library, the version for MSVC can have the "msvc" prefix and the "static" suffix -FIND_LIBRARY(RUBY_LIBRARY - NAMES ruby ruby1.8 ruby1.9 - msvcrt-ruby18 msvcrt-ruby19 msvcrt-ruby18-static msvcrt-ruby19-static - PATHS ${RUBY_POSSIBLE_LIB_DIR} - ) + /usr/lib/ruby/${_RUBY_VERSION_SHORT}/i586-linux-gnu/ ) + +SET(RUBY_INCLUDE_DIRS ${RUBY_INCLUDE_DIR} ) + +# if ruby > 1.8 is required or if ruby > 1.8 was found, search for the config.h dir +IF( ${Ruby_FIND_VERSION_SHORT_NODOT} GREATER 18 OR ${_RUBY_VERSION_SHORT_NODOT} GREATER 18 OR RUBY_HDR_DIR) + message(STATUS "lookign for config.h") + FIND_PATH(RUBY_CONFIG_INCLUDE_DIR + NAMES ruby/config.h config.h + HINTS + ${RUBY_HDR_DIR}/${RUBY_ARCH} + ${RUBY_ARCH_DIR} + ) + + SET(RUBY_INCLUDE_DIRS ${RUBY_INCLUDE_DIRS} ${RUBY_CONFIG_INCLUDE_DIR} ) +ENDIF( ${Ruby_FIND_VERSION_SHORT_NODOT} GREATER 18 OR ${_RUBY_VERSION_SHORT_NODOT} GREATER 18 OR RUBY_HDR_DIR) + + +# Determine the list of possible names for the ruby library +SET(_RUBY_POSSIBLE_LIB_NAMES ruby ruby-static ruby${_RUBY_VERSION_SHORT}) + +IF(WIN32) + SET( _RUBY_MSVC_RUNTIME "" ) + IF( MSVC60 ) + SET( _RUBY_MSVC_RUNTIME "60" ) + ENDIF( MSVC60 ) + IF( MSVC70 ) + SET( _RUBY_MSVC_RUNTIME "70" ) + ENDIF( MSVC70 ) + IF( MSVC71 ) + SET( _RUBY_MSVC_RUNTIME "71" ) + ENDIF( MSVC71 ) + IF( MSVC80 ) + SET( _RUBY_MSVC_RUNTIME "80" ) + ENDIF( MSVC80 ) + IF( MSVC90 ) + SET( _RUBY_MSVC_RUNTIME "90" ) + ENDIF( MSVC90 ) + + LIST(APPEND _RUBY_POSSIBLE_LIB_NAMES + "msvcr${_RUBY_MSVC_RUNTIME}-ruby${RUBY_NODOT_VERSION}" + "msvcr${_RUBY_MSVC_RUNTIME}-ruby${RUBY_NODOT_VERSION}-static" + "msvcrt-ruby${RUBY_NODOT_VERSION}" + "msvcrt-ruby${RUBY_NODOT_VERSION}-static" ) +ENDIF(WIN32) + +FIND_LIBRARY(RUBY_LIBRARY NAMES ${_RUBY_POSSIBLE_LIB_NAMES} HINTS ${RUBY_POSSIBLE_LIB_DIR} ) + +INCLUDE(FindPackageHandleStandardArgs) +SET(_RUBY_REQUIRED_VARS RUBY_EXECUTABLE RUBY_INCLUDE_DIR RUBY_LIBRARY) +IF(_RUBY_VERSION_SHORT_NODOT GREATER 18) + LIST(APPEND _RUBY_REQUIRED_VARS RUBY_CONFIG_INCLUDE_DIR) +ENDIF(_RUBY_VERSION_SHORT_NODOT GREATER 18) + +IF(_RUBY_DEBUG_OUTPUT) + MESSAGE(STATUS "--------FindRuby.cmake debug------------") + MESSAGE(STATUS "_RUBY_POSSIBLE_EXECUTABLE_NAMES: ${_RUBY_POSSIBLE_EXECUTABLE_NAMES}") + MESSAGE(STATUS "_RUBY_POSSIBLE_LIB_NAMES: ${_RUBY_POSSIBLE_LIB_NAMES}") + MESSAGE(STATUS "RUBY_ARCH_DIR: ${RUBY_ARCH_DIR}") + MESSAGE(STATUS "RUBY_HDR_DIR: ${RUBY_HDR_DIR}") + MESSAGE(STATUS "RUBY_POSSIBLE_LIB_DIR: ${RUBY_POSSIBLE_LIB_DIR}") + MESSAGE(STATUS "Found RUBY_VERSION: \"${RUBY_VERSION}\" , short: \"${_RUBY_VERSION_SHORT}\", nodot: \"${_RUBY_VERSION_SHORT_NODOT}\"") + MESSAGE(STATUS "_RUBY_REQUIRED_VARS: ${_RUBY_REQUIRED_VARS}") + MESSAGE(STATUS "--------------------") +ENDIF(_RUBY_DEBUG_OUTPUT) + +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Ruby DEFAULT_MSG ${_RUBY_REQUIRED_VARS}) MARK_AS_ADVANCED( RUBY_EXECUTABLE RUBY_LIBRARY - RUBY_INCLUDE_PATH - RUBY_ARCH_DIR - RUBY_POSSIBLE_LIB_DIR - RUBY_RUBY_LIB_DIR - RUBY_SITEARCH_DIR - RUBY_SITELIB_DIR - RUBY_HAS_VENDOR_RUBY - RUBY_VENDORARCH_DIR - RUBY_VENDORLIB_DIR + RUBY_INCLUDE_DIR + RUBY_CONFIG_INCLUDE_DIR ) + +# Set some variables for compatibility with previous version of this file +SET(RUBY_POSSIBLE_LIB_PATH ${RUBY_POSSIBLE_LIB_DIR}) +SET(RUBY_RUBY_LIB_PATH ${RUBY_RUBY_LIB_DIR}) +SET(RUBY_INCLUDE_PATH ${RUBY_INCLUDE_DIRS}) diff --git a/Modules/FindSDL.cmake b/Modules/FindSDL.cmake index ee880a649..cc0711603 100644 --- a/Modules/FindSDL.cmake +++ b/Modules/FindSDL.cmake @@ -52,29 +52,34 @@ # is #include "SDL.h", not . This is done for portability # reasons because not all systems place things in SDL/ (see FreeBSD). +#============================================================================= +# Copyright 2003-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PATH(SDL_INCLUDE_DIR SDL.h HINTS $ENV{SDLDIR} - PATH_SUFFIXES include + PATH_SUFFIXES include/SDL include PATHS ~/Library/Frameworks /Library/Frameworks - /usr/local/include/SDL - /usr/include/SDL /usr/local/include/SDL12 /usr/local/include/SDL11 # FreeBSD ports /usr/include/SDL12 /usr/include/SDL11 - /usr/local/include - /usr/include - /sw/include/SDL # Fink - /sw/include - /opt/local/include/SDL # DarwinPorts - /opt/local/include - /opt/csw/include/SDL # Blastwave - /opt/csw/include - /opt/include/SDL - /opt/include + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave + /opt ) #MESSAGE("SDL_INCLUDE_DIR is ${SDL_INCLUDE_DIR}") @@ -86,8 +91,6 @@ FIND_LIBRARY(SDL_LIBRARY_TEMP $ENV{SDLDIR} PATH_SUFFIXES lib64 lib PATHS - /usr/local - /usr /sw /opt/local /opt/csw @@ -108,8 +111,6 @@ IF(NOT SDL_BUILDING_LIBRARY) $ENV{SDLDIR} PATH_SUFFIXES lib64 lib PATHS - /usr/local - /usr /sw /opt/local /opt/csw diff --git a/Modules/FindSDL_image.cmake b/Modules/FindSDL_image.cmake old mode 100755 new mode 100644 index e2481e1ab..c853971e2 --- a/Modules/FindSDL_image.cmake +++ b/Modules/FindSDL_image.cmake @@ -12,6 +12,19 @@ # module, but with modifications to recognize OS X frameworks and # additional Unix paths (FreeBSD, etc). +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PATH(SDLIMAGE_INCLUDE_DIR SDL_image.h HINTS $ENV{SDLIMAGEDIR} diff --git a/Modules/FindSDL_mixer.cmake b/Modules/FindSDL_mixer.cmake old mode 100755 new mode 100644 index 720a17a79..a5e213f3c --- a/Modules/FindSDL_mixer.cmake +++ b/Modules/FindSDL_mixer.cmake @@ -12,6 +12,19 @@ # module, but with modifications to recognize OS X frameworks and # additional Unix paths (FreeBSD, etc). +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PATH(SDLMIXER_INCLUDE_DIR SDL_mixer.h HINTS $ENV{SDLMIXERDIR} diff --git a/Modules/FindSDL_net.cmake b/Modules/FindSDL_net.cmake old mode 100755 new mode 100644 index 6de1946fa..169c8a547 --- a/Modules/FindSDL_net.cmake +++ b/Modules/FindSDL_net.cmake @@ -12,6 +12,18 @@ # module, but with modifications to recognize OS X frameworks and # additional Unix paths (FreeBSD, etc). +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) FIND_PATH(SDLNET_INCLUDE_DIR SDL_net.h HINTS diff --git a/Modules/FindSDL_sound.cmake b/Modules/FindSDL_sound.cmake old mode 100755 new mode 100644 index 21d6b1c7d..20d8f4ff3 --- a/Modules/FindSDL_sound.cmake +++ b/Modules/FindSDL_sound.cmake @@ -56,6 +56,18 @@ # CMAKE_INCLUDE_PATH to modify the search paths. # +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) SET(SDL_SOUND_EXTRAS "" CACHE STRING "SDL_sound extra flags") MARK_AS_ADVANCED(SDL_SOUND_EXTRAS) diff --git a/Modules/FindSDL_ttf.cmake b/Modules/FindSDL_ttf.cmake old mode 100755 new mode 100644 index 20d3e5af8..213b83584 --- a/Modules/FindSDL_ttf.cmake +++ b/Modules/FindSDL_ttf.cmake @@ -12,6 +12,19 @@ # module, but with modifications to recognize OS X frameworks and # additional Unix paths (FreeBSD, etc). +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PATH(SDLTTF_INCLUDE_DIR SDL_ttf.h HINTS $ENV{SDLTTFDIR} diff --git a/Modules/FindSWIG.cmake b/Modules/FindSWIG.cmake index e31aab570..05c09b453 100644 --- a/Modules/FindSWIG.cmake +++ b/Modules/FindSWIG.cmake @@ -10,6 +10,19 @@ # means of setting SWIG_EXECUTABLE # +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + SET(SWIG_FOUND FALSE) FIND_PROGRAM(SWIG_EXECUTABLE swig) diff --git a/Modules/FindSelfPackers.cmake b/Modules/FindSelfPackers.cmake index 78d6e1956..9fab6b9dc 100644 --- a/Modules/FindSelfPackers.cmake +++ b/Modules/FindSelfPackers.cmake @@ -5,6 +5,19 @@ # Examples: # UPX: http://wildsau.idv.uni-linz.ac.at/mfx/upx.html +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + INCLUDE(FindCygwin) FIND_PROGRAM(SELF_PACKER_FOR_EXECUTABLE diff --git a/Modules/FindSquish.cmake b/Modules/FindSquish.cmake index d51a04b8a..3b0eb2f0f 100644 --- a/Modules/FindSquish.cmake +++ b/Modules/FindSquish.cmake @@ -26,6 +26,19 @@ # ENDIF (SQUISH_FOUND) # +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + SET(SQUISH_INSTALL_DIR_STRING "Directory containing the bin, doc, and lib directories for Squish; this should be the root of the installation directory.") SET(SQUISH_SERVER_EXECUTABLE_STRING "The squishserver executable program.") SET(SQUISH_CLIENT_EXECUTABLE_STRING "The squishclient executable program.") diff --git a/Modules/FindSubversion.cmake b/Modules/FindSubversion.cmake index 5717e3c5c..c33df1d42 100644 --- a/Modules/FindSubversion.cmake +++ b/Modules/FindSubversion.cmake @@ -24,32 +24,19 @@ # MESSAGE("Last changed log is ${Project_LAST_CHANGED_LOG}") # ENDIF(Subversion_FOUND) -# Copyright (c) 2006, Tristan Carel -# All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Tristan Carel # -# * 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 University of California, Berkeley nor the -# names of its contributors may be used to endorse or promote products -# derived from this software without specific prior written permission. +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. # -# THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS AND 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. - -# $Id: FindSubversion.cmake,v 1.2.2.3 2008-05-23 20:09:34 hoffman Exp $ +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) SET(Subversion_FOUND FALSE) SET(Subversion_SVN_FOUND FALSE) diff --git a/Modules/FindTCL.cmake b/Modules/FindTCL.cmake index 568ab0e05..67a3f9a31 100644 --- a/Modules/FindTCL.cmake +++ b/Modules/FindTCL.cmake @@ -31,6 +31,19 @@ # this point it is safer you ask directly where the *source* tree is # and dig from there. +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + INCLUDE(CMakeFindFrameworks) INCLUDE(FindTclsh) INCLUDE(FindWish) diff --git a/Modules/FindTIFF.cmake b/Modules/FindTIFF.cmake index 2868bb9f3..87116347d 100644 --- a/Modules/FindTIFF.cmake +++ b/Modules/FindTIFF.cmake @@ -7,6 +7,19 @@ # also defined, but not for general use are # TIFF_LIBRARY, where to find the TIFF library. +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + FIND_PATH(TIFF_INCLUDE_DIR tiff.h) SET(TIFF_NAMES ${TIFF_NAMES} tiff libtiff libtiff3) diff --git a/Modules/FindTclStub.cmake b/Modules/FindTclStub.cmake index 196d57b41..896d4b13c 100644 --- a/Modules/FindTclStub.cmake +++ b/Modules/FindTclStub.cmake @@ -21,6 +21,19 @@ # Let's leave that choice to the user by allowing him to assign # TCL_STUB_LIBRARY to any Tcl library, debug or not. +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + INCLUDE(FindTCL) GET_FILENAME_COMPONENT(TCL_TCLSH_PATH "${TCL_TCLSH}" PATH) diff --git a/Modules/FindTclsh.cmake b/Modules/FindTclsh.cmake index 129c11ac2..ff0d0a588 100644 --- a/Modules/FindTclsh.cmake +++ b/Modules/FindTclsh.cmake @@ -7,6 +7,19 @@ # In cygwin, look for the cygwin version first. Don't look for it later to # avoid finding the cygwin version on a Win32 build. +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF(WIN32 AND UNIX) FIND_PROGRAM(TCL_TCLSH NAMES cygtclsh83 cygtclsh80) ENDIF(WIN32 AND UNIX) diff --git a/Modules/FindThreads.cmake b/Modules/FindThreads.cmake index 6facb5155..459129bc4 100644 --- a/Modules/FindThreads.cmake +++ b/Modules/FindThreads.cmake @@ -6,6 +6,19 @@ # CMAKE_USE_PTHREADS_INIT - are we using pthreads # CMAKE_HP_PTHREADS_INIT - are we using hp pthreads +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + INCLUDE (CheckIncludeFiles) INCLUDE (CheckLibraryExists) SET(Threads_FOUND FALSE) @@ -13,33 +26,39 @@ SET(Threads_FOUND FALSE) # Do we have sproc? IF(CMAKE_SYSTEM MATCHES IRIX) CHECK_INCLUDE_FILES("sys/types.h;sys/prctl.h" CMAKE_HAVE_SPROC_H) -ENDIF(CMAKE_SYSTEM MATCHES IRIX) +ENDIF() IF(CMAKE_HAVE_SPROC_H) # We have sproc SET(CMAKE_USE_SPROC_INIT 1) -ELSE(CMAKE_HAVE_SPROC_H) +ELSE() # Do we have pthreads? CHECK_INCLUDE_FILES("pthread.h" CMAKE_HAVE_PTHREAD_H) IF(CMAKE_HAVE_PTHREAD_H) + + # # We have pthread.h # Let's check for the library now. + # SET(CMAKE_HAVE_THREADS_LIBRARY) IF(NOT THREADS_HAVE_PTHREAD_ARG) + # Do we have -lpthreads CHECK_LIBRARY_EXISTS(pthreads pthread_create "" CMAKE_HAVE_PTHREADS_CREATE) IF(CMAKE_HAVE_PTHREADS_CREATE) SET(CMAKE_THREAD_LIBS_INIT "-lpthreads") SET(CMAKE_HAVE_THREADS_LIBRARY 1) SET(Threads_FOUND TRUE) - ENDIF(CMAKE_HAVE_PTHREADS_CREATE) + ENDIF() + # Ok, how about -lpthread CHECK_LIBRARY_EXISTS(pthread pthread_create "" CMAKE_HAVE_PTHREAD_CREATE) IF(CMAKE_HAVE_PTHREAD_CREATE) SET(CMAKE_THREAD_LIBS_INIT "-lpthread") SET(Threads_FOUND TRUE) SET(CMAKE_HAVE_THREADS_LIBRARY 1) - ENDIF(CMAKE_HAVE_PTHREAD_CREATE) + ENDIF() + IF(CMAKE_SYSTEM MATCHES "SunOS.*") # On sun also check for -lthread CHECK_LIBRARY_EXISTS(thread thr_create "" CMAKE_HAVE_THR_CREATE) @@ -47,8 +66,9 @@ ELSE(CMAKE_HAVE_SPROC_H) SET(CMAKE_THREAD_LIBS_INIT "-lthread") SET(CMAKE_HAVE_THREADS_LIBRARY 1) SET(Threads_FOUND TRUE) - ENDIF(CMAKE_HAVE_THR_CREATE) + ENDIF() ENDIF(CMAKE_SYSTEM MATCHES "SunOS.*") + ENDIF(NOT THREADS_HAVE_PTHREAD_ARG) IF(NOT CMAKE_HAVE_THREADS_LIBRARY) @@ -60,40 +80,44 @@ ELSE(CMAKE_HAVE_SPROC_H) ${CMAKE_ROOT}/Modules/CheckForPthreads.c CMAKE_FLAGS -DLINK_LIBRARIES:STRING=-pthread COMPILE_OUTPUT_VARIABLE OUTPUT) + IF(THREADS_HAVE_PTHREAD_ARG) IF(THREADS_PTHREAD_ARG MATCHES "^2$") SET(Threads_FOUND TRUE) MESSAGE(STATUS "Check if compiler accepts -pthread - yes") - ELSE(THREADS_PTHREAD_ARG MATCHES "^2$") + ELSE() MESSAGE(STATUS "Check if compiler accepts -pthread - no") FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "Determining if compiler accepts -pthread returned ${THREADS_PTHREAD_ARG} instead of 2. The compiler had the following output:\n${OUTPUT}\n\n") - ENDIF(THREADS_PTHREAD_ARG MATCHES "^2$") - ELSE(THREADS_HAVE_PTHREAD_ARG) + ENDIF() + ELSE() MESSAGE(STATUS "Check if compiler accepts -pthread - no") FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "Determining if compiler accepts -pthread failed with the following output:\n${OUTPUT}\n\n") - ENDIF(THREADS_HAVE_PTHREAD_ARG) + ENDIF() + ENDIF("THREADS_HAVE_PTHREAD_ARG" MATCHES "^THREADS_HAVE_PTHREAD_ARG") + IF(THREADS_HAVE_PTHREAD_ARG) SET(Threads_FOUND TRUE) SET(CMAKE_THREAD_LIBS_INIT "-pthread") - ENDIF(THREADS_HAVE_PTHREAD_ARG) + ENDIF() + ENDIF(NOT CMAKE_HAVE_THREADS_LIBRARY) ENDIF(CMAKE_HAVE_PTHREAD_H) -ENDIF(CMAKE_HAVE_SPROC_H) +ENDIF() IF(CMAKE_THREAD_LIBS_INIT) SET(CMAKE_USE_PTHREADS_INIT 1) SET(Threads_FOUND TRUE) -ENDIF(CMAKE_THREAD_LIBS_INIT) +ENDIF() IF(CMAKE_SYSTEM MATCHES "Windows") SET(CMAKE_USE_WIN32_THREADS_INIT 1) SET(Threads_FOUND TRUE) -ENDIF(CMAKE_SYSTEM MATCHES "Windows") +ENDIF() IF(CMAKE_USE_PTHREADS_INIT) IF(CMAKE_SYSTEM MATCHES "HP-UX-*") @@ -112,19 +136,19 @@ IF(CMAKE_USE_PTHREADS_INIT) SET(Threads_FOUND TRUE) ENDIF(CMAKE_HAVE_HP_CMA) SET(CMAKE_USE_PTHREADS_INIT 1) - ENDIF(CMAKE_SYSTEM MATCHES "HP-UX-*") + ENDIF() IF(CMAKE_SYSTEM MATCHES "OSF1-V*") SET(CMAKE_USE_PTHREADS_INIT 0) SET(CMAKE_THREAD_LIBS_INIT ) - ENDIF(CMAKE_SYSTEM MATCHES "OSF1-V*") + ENDIF() IF(CMAKE_SYSTEM MATCHES "CYGWIN_NT*") SET(CMAKE_USE_PTHREADS_INIT 1) SET(Threads_FOUND TRUE) SET(CMAKE_THREAD_LIBS_INIT ) SET(CMAKE_USE_WIN32_THREADS_INIT 0) - ENDIF(CMAKE_SYSTEM MATCHES "CYGWIN_NT*") + ENDIF() ENDIF(CMAKE_USE_PTHREADS_INIT) INCLUDE(FindPackageHandleStandardArgs) diff --git a/Modules/FindUnixCommands.cmake b/Modules/FindUnixCommands.cmake index 10a0bd87c..c1d2c4574 100644 --- a/Modules/FindUnixCommands.cmake +++ b/Modules/FindUnixCommands.cmake @@ -2,6 +2,19 @@ # This module looks for some usual Unix commands. # +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + INCLUDE(FindCygwin) FIND_PROGRAM(BASH diff --git a/Modules/FindVTK.cmake b/Modules/FindVTK.cmake index 6e42ba3fd..fce10bc08 100644 --- a/Modules/FindVTK.cmake +++ b/Modules/FindVTK.cmake @@ -27,6 +27,19 @@ # instead. # +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Construct consitent error messages for use below. SET(VTK_DIR_DESCRIPTION "directory containing VTKConfig.cmake. This is either the root of the build tree, or PREFIX/lib/vtk for an installation. For VTK 4.0, this is the location of UseVTK.cmake. This is either the root of the build tree or PREFIX/include/vtk for an installation.") SET(VTK_DIR_MESSAGE "VTK not found. Set the VTK_DIR cmake cache entry to the ${VTK_DIR_DESCRIPTION}") @@ -45,6 +58,7 @@ IF(NOT VTK_DIR) SET(VTK_DIR_SEARCH "") FOREACH(dir ${VTK_DIR_SEARCH2}) SET(VTK_DIR_SEARCH ${VTK_DIR_SEARCH} + ${dir}/../lib/vtk-5.4 ${dir}/../lib/vtk-5.2 ${dir}/../lib/vtk-5.1 ${dir}/../lib/vtk-5.0 diff --git a/Modules/FindWget.cmake b/Modules/FindWget.cmake index ff4134744..c898b89c9 100644 --- a/Modules/FindWget.cmake +++ b/Modules/FindWget.cmake @@ -4,6 +4,19 @@ # WGET_EXECUTABLE: the full path to the wget tool. # WGET_FOUND: True if wget has been found. +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + INCLUDE(FindCygwin) FIND_PROGRAM(WGET_EXECUTABLE diff --git a/Modules/FindWish.cmake b/Modules/FindWish.cmake index 0afd3c963..c086da5ed 100644 --- a/Modules/FindWish.cmake +++ b/Modules/FindWish.cmake @@ -6,6 +6,20 @@ # TK_WISH = the path to the wish executable # # if UNIX is defined, then it will look for the cygwin version first + +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF(UNIX) FIND_PROGRAM(TK_WISH cygwish80 ) ENDIF(UNIX) diff --git a/Modules/FindX11.cmake b/Modules/FindX11.cmake index 3155aac82..531c02663 100644 --- a/Modules/FindX11.cmake +++ b/Modules/FindX11.cmake @@ -34,8 +34,18 @@ # X11_Xutil_INCLUDE_PATH, X11_Xutil_FOUND # X11_Xv_INCLUDE_PATH, X11_Xv_LIB, X11_Xv_FOUND -# Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. -# See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) IF (UNIX) SET(X11_FOUND 0) diff --git a/Modules/FindXMLRPC.cmake b/Modules/FindXMLRPC.cmake index 2eefd2f75..48f87d7a3 100644 --- a/Modules/FindXMLRPC.cmake +++ b/Modules/FindXMLRPC.cmake @@ -12,6 +12,19 @@ # Typical usage: # FIND_PACKAGE(XMLRPC REQUIRED libwww-client) +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # First find the config script from which to obtain other values. FIND_PROGRAM(XMLRPC_C_CONFIG NAMES xmlrpc-c-config) diff --git a/Modules/FindZLIB.cmake b/Modules/FindZLIB.cmake index 23ea93726..dc80ed894 100644 --- a/Modules/FindZLIB.cmake +++ b/Modules/FindZLIB.cmake @@ -5,6 +5,18 @@ # ZLIB_LIBRARIES - List of libraries when using zlib. # ZLIB_FOUND - True if zlib found. +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) IF (ZLIB_INCLUDE_DIR) # Already in cache, be silent diff --git a/Modules/Findosg.cmake b/Modules/Findosg.cmake index f4ec42e29..00e471129 100644 --- a/Modules/Findosg.cmake +++ b/Modules/Findosg.cmake @@ -29,6 +29,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgAnimation.cmake b/Modules/FindosgAnimation.cmake index ed31232f6..a4bbb44cb 100644 --- a/Modules/FindosgAnimation.cmake +++ b/Modules/FindosgAnimation.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgDB.cmake b/Modules/FindosgDB.cmake index 9a1921085..d0d75b675 100644 --- a/Modules/FindosgDB.cmake +++ b/Modules/FindosgDB.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgFX.cmake b/Modules/FindosgFX.cmake index 43d5bd2fa..cf1a98bcd 100644 --- a/Modules/FindosgFX.cmake +++ b/Modules/FindosgFX.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgGA.cmake b/Modules/FindosgGA.cmake index 9dfa13b99..ca7e55a39 100644 --- a/Modules/FindosgGA.cmake +++ b/Modules/FindosgGA.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgIntrospection.cmake b/Modules/FindosgIntrospection.cmake index af1768767..3045cd52c 100644 --- a/Modules/FindosgIntrospection.cmake +++ b/Modules/FindosgIntrospection.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgManipulator.cmake b/Modules/FindosgManipulator.cmake index ca0b6b840..6de812efa 100644 --- a/Modules/FindosgManipulator.cmake +++ b/Modules/FindosgManipulator.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgParticle.cmake b/Modules/FindosgParticle.cmake index 5a5b31699..d693d044e 100644 --- a/Modules/FindosgParticle.cmake +++ b/Modules/FindosgParticle.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgProducer.cmake b/Modules/FindosgProducer.cmake index 19e00ed62..2810d86b8 100644 --- a/Modules/FindosgProducer.cmake +++ b/Modules/FindosgProducer.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgShadow.cmake b/Modules/FindosgShadow.cmake index 665aa5e2e..60f29ff12 100644 --- a/Modules/FindosgShadow.cmake +++ b/Modules/FindosgShadow.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgSim.cmake b/Modules/FindosgSim.cmake index eec216666..8f28d55ae 100644 --- a/Modules/FindosgSim.cmake +++ b/Modules/FindosgSim.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgTerrain.cmake b/Modules/FindosgTerrain.cmake index fbd732a8f..4fcd4bd63 100644 --- a/Modules/FindosgTerrain.cmake +++ b/Modules/FindosgTerrain.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgText.cmake b/Modules/FindosgText.cmake index b98ed2256..0c6c60604 100644 --- a/Modules/FindosgText.cmake +++ b/Modules/FindosgText.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgUtil.cmake b/Modules/FindosgUtil.cmake index e88c5d8d4..f314d2372 100644 --- a/Modules/FindosgUtil.cmake +++ b/Modules/FindosgUtil.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgViewer.cmake b/Modules/FindosgViewer.cmake index e1370a007..35be2f5bd 100644 --- a/Modules/FindosgViewer.cmake +++ b/Modules/FindosgViewer.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgVolume.cmake b/Modules/FindosgVolume.cmake index 52e51bd75..f89bbddb1 100644 --- a/Modules/FindosgVolume.cmake +++ b/Modules/FindosgVolume.cmake @@ -25,6 +25,19 @@ # # Created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/FindosgWidget.cmake b/Modules/FindosgWidget.cmake index 5f4342015..45ad1a6d4 100644 --- a/Modules/FindosgWidget.cmake +++ b/Modules/FindosgWidget.cmake @@ -25,6 +25,19 @@ # # FindosgWidget.cmake tweaked from Findosg* suite as created by Eric Wing. +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Header files are presumed to be included like # #include # #include diff --git a/Modules/Findosg_functions.cmake b/Modules/Findosg_functions.cmake index 128be376f..bc6f2de45 100644 --- a/Modules/Findosg_functions.cmake +++ b/Modules/Findosg_functions.cmake @@ -3,6 +3,20 @@ # libraries and nodekits. # +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2009 Philip Lowman +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # # OSG_FIND_PATH # diff --git a/Modules/FindwxWidgets.cmake b/Modules/FindwxWidgets.cmake old mode 100755 new mode 100644 index 11df1b56c..478282b74 --- a/Modules/FindwxWidgets.cmake +++ b/Modules/FindwxWidgets.cmake @@ -41,9 +41,11 @@ # rpath on UNIX. Typically an empty string # in WIN32 environment. # wxWidgets_DEFINITIONS - Contains defines required to compile/link -# against WX, e.g. -DWXUSINGDLL -# wxWidgets_CXX_FLAGS - Include dirs and ompiler flags for -# unices, empty on WIN32. Esentially +# against WX, e.g. WXUSINGDLL +# wxWidgets_DEFINITIONS_DEBUG- Contains defines required to compile/link +# against WX debug builds, e.g. __WXDEBUG__ +# wxWidgets_CXX_FLAGS - Include dirs and compiler flags for +# unices, empty on WIN32. Essentially # "`wx-config --cxxflags`". # wxWidgets_USE_FILE - Convenience include file. # @@ -61,6 +63,20 @@ # # and for each of your dependant executable/library targets: # TARGET_LINK_LIBRARIES( ${wxWidgets_LIBRARIES}) +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# Copyright 2007-2009 Miguel A. Figueroa-Villanueva +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # # FIXME: check this and provide a correct sample usage... # Remember to connect back to the upper text. @@ -69,7 +85,6 @@ # FIND_PACKAGE(wxWidgets COMPONENTS mono) # ... - # NOTES # # This module has been tested on the WIN32 platform with wxWidgets @@ -413,7 +428,7 @@ IF(wxWidgets_FIND_STYLE STREQUAL "win32") wxWidgets-2.7.4 wxWidgets-2.7.3 wxWidgets-2.7.2 - wxWidgest-2.7.1 + wxWidgets-2.7.1 wxWidgets-2.7.0 wxWidgets-2.7.0-1 wxWidgets-2.6.4 @@ -491,7 +506,7 @@ IF(wxWidgets_FIND_STYLE STREQUAL "win32") IF(WX_LIB_DIR) # If building shared libs, define WXUSINGDLL to use dllimport. IF(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*") - SET(wxWidgets_DEFINITIONS "-DWXUSINGDLL") + SET(wxWidgets_DEFINITIONS WXUSINGDLL) DBG_MSG_V("detected SHARED/DLL tree WX_LIB_DIR=${WX_LIB_DIR}") ENDIF(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*") @@ -564,6 +579,14 @@ IF(wxWidgets_FIND_STYLE STREQUAL "win32") # Settings for requested libs (i.e., include dir, libraries, etc.). WX_SET_LIBRARIES(wxWidgets_FIND_COMPONENTS "${DBG}") + # Add necessary definitions for unicode builds + IF("${UCD}" STREQUAL "u") + LIST(APPEND wxWidgets_DEFINITIONS UNICODE _UNICODE) + ENDIF("${UCD}" STREQUAL "u") + + # Add necessary definitions for debug builds + SET(wxWidgets_DEFINITIONS_DEBUG _DEBUG __WXDEBUG__) + ENDIF(WX_CONFIGURATION) ENDIF(WX_LIB_DIR) ENDIF(WX_ROOT_DIR) @@ -692,11 +715,13 @@ ELSE(wxWidgets_FIND_STYLE STREQUAL "win32") DBG_MSG_V("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}") - # parse definitions from cxxflags; drop -D* from CXXFLAGS + # parse definitions from cxxflags; drop -D* from CXXFLAGS and the -D prefix STRING(REGEX MATCHALL "-D[^;]+" wxWidgets_DEFINITIONS "${wxWidgets_CXX_FLAGS}") STRING(REGEX REPLACE "-D[^;]+;" "" wxWidgets_CXX_FLAGS "${wxWidgets_CXX_FLAGS}") + STRING(REPLACE "-D" "" + wxWidgets_DEFINITIONS "${wxWidgets_DEFINITIONS}") # parse include dirs from cxxflags; drop -I prefix STRING(REGEX MATCHALL "-I[^;]+" diff --git a/Modules/FindwxWindows.cmake b/Modules/FindwxWindows.cmake index 4614e222d..4cb4c9e93 100644 --- a/Modules/FindwxWindows.cmake +++ b/Modules/FindwxWindows.cmake @@ -47,6 +47,19 @@ # AUTHOR # Jan Woetzel (07/2003-01/2006) +#============================================================================= +# Copyright 2000-2009 Kitware, Inc. +# Copyright 2003-2006 Jan Woetzel +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) # ------------------------------------------------------------------ # diff --git a/Modules/FortranCInterface.cmake b/Modules/FortranCInterface.cmake old mode 100755 new mode 100644 index 6551658c7..7a360de16 --- a/Modules/FortranCInterface.cmake +++ b/Modules/FortranCInterface.cmake @@ -1,231 +1,275 @@ -# FortranCInterface.cmake +# - Fortran/C Interface Detection +# This module automatically detects the API by which C and Fortran +# languages interact. Variables indicate if the mangling is found: +# FortranCInterface_GLOBAL_FOUND = Global subroutines and functions +# FortranCInterface_MODULE_FOUND = Module subroutines and functions +# (declared by "MODULE PROCEDURE") +# A function is provided to generate a C header file containing macros +# to mangle symbol names: +# FortranCInterface_HEADER( +# [MACRO_NAMESPACE ] +# [SYMBOL_NAMESPACE ] +# [SYMBOLS [:] ...]) +# It generates in definitions of the following macros: +# #define FortranCInterface_GLOBAL (name,NAME) ... +# #define FortranCInterface_GLOBAL_(name,NAME) ... +# #define FortranCInterface_MODULE (mod,name, MOD,NAME) ... +# #define FortranCInterface_MODULE_(mod,name, MOD,NAME) ... +# These macros mangle four categories of Fortran symbols, +# respectively: +# - Global symbols without '_': call mysub() +# - Global symbols with '_' : call my_sub() +# - Module symbols without '_': use mymod; call mysub() +# - Module symbols with '_' : use mymod; call my_sub() +# If mangling for a category is not known, its macro is left undefined. +# All macros require raw names in both lower case and upper case. +# The MACRO_NAMESPACE option replaces the default "FortranCInterface_" +# prefix with a given namespace "". # -# This file defines the function create_fortran_c_interface. -# this function is used to create a configured header file -# that contains a mapping from C to a Fortran function using -# the correct name mangling scheme as defined by the current -# fortran compiler. +# The SYMBOLS option lists symbols to mangle automatically with C +# preprocessor definitions: +# ==> #define ... +# : ==> #define _ ... +# If the mangling for some symbol is not known then no preprocessor +# definition is created, and a warning is displayed. +# The SYMBOL_NAMESPACE option prefixes all preprocessor definitions +# generated by the SYMBOLS option with a given namespace "". # -# The function tages a list of functions and the name of -# a header file to configure. +# Example usage: +# include(FortranCInterface) +# FortranCInterface_HEADER(FC.h MACRO_NAMESPACE "FC_") +# This creates a "FC.h" header that defines mangling macros +# FC_GLOBAL(), FC_GLOBAL_(), FC_MODULE(), and FC_MODULE_(). # -# This file also defines some helper functions that are used -# to detect the fortran name mangling scheme used by the -# current Fortran compiler. -# test_fortran_mangling - test a single fortran mangling -# discover_fortran_mangling - loop over all combos of fortran -# name mangling and call test_fortran_mangling until one of them -# works. -# discover_fortran_module_mangling - try different types of -# fortran modle name mangling to find one that works +# Example usage: +# include(FortranCInterface) +# FortranCInterface_HEADER(FCMangle.h +# MACRO_NAMESPACE "FC_" +# SYMBOL_NAMESPACE "FC_" +# SYMBOLS mysub mymod:my_sub) +# This creates a "FC.h" header that defines the same FC_*() mangling +# macros as the previous example plus preprocessor symbols FC_mysub +# and FC_mymod_my_sub. # +# Another function is provided to verify that the Fortran and C/C++ +# compilers work together: +# FortranCInterface_VERIFY([CXX] [QUIET]) +# It tests whether a simple test executable using Fortran and C (and +# C++ when the CXX option is given) compiles and links successfully. +# The result is stored in the cache entry FortranCInterface_VERIFIED_C +# (or FortranCInterface_VERIFIED_CXX if CXX is given) as a boolean. +# If the check fails and QUIET is not given the function terminates +# with a FATAL_ERROR message describing the problem. The purpose of +# this check is to stop a build early for incompatible compiler +# combinations. # +# FortranCInterface is aware of possible GLOBAL and MODULE manglings +# for many Fortran compilers, but it also provides an interface to +# specify new possible manglings. Set the variables +# FortranCInterface_GLOBAL_SYMBOLS +# FortranCInterface_MODULE_SYMBOLS +# before including FortranCInterface to specify manglings of the +# symbols "MySub", "My_Sub", "MyModule:MySub", and "My_Module:My_Sub". +# For example, the code: +# set(FortranCInterface_GLOBAL_SYMBOLS mysub_ my_sub__ MYSUB_) +# # ^^^^^ ^^^^^^ ^^^^^ +# set(FortranCInterface_MODULE_SYMBOLS +# __mymodule_MOD_mysub __my_module_MOD_my_sub) +# # ^^^^^^^^ ^^^^^ ^^^^^^^^^ ^^^^^^ +# include(FortranCInterface) +# tells FortranCInterface to try given GLOBAL and MODULE manglings. +# (The carets point at raw symbol names for clarity in this example +# but are not needed.) + +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. # -# this function tests a single fortran mangling. -# CODE - test code to try should define a subroutine called "sub" -# PREFIX - string to put in front of sub -# POSTFIX - string to put after sub -# ISUPPER - if TRUE then sub will be called as SUB -# DOC - string used in status checking Fortran ${DOC} linkage -# SUB - the name of the SUB to call -# RESULT place to store result TRUE if this linkage works, FALSE -# if not. +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. # -function(test_fortran_mangling CODE PREFIX ISUPPER POSTFIX DOC SUB RESULT) - if(ISUPPER) - string(TOUPPER "${SUB}" sub) - else(ISUPPER) - string(TOLOWER "${SUB}" sub) - endif(ISUPPER) - set(FUNCTION "${PREFIX}${sub}${POSTFIX}") - # create a fortran file with sub called sub - # - set(TMP_DIR - "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckFortranLink") - file(REMOVE_RECURSE "${TMP_DIR}") - file(WRITE "${TMP_DIR}/test.f" "${CODE}" ) - message(STATUS "checking Fortran ${DOC} linkage: ${FUNCTION}") - file(WRITE "${TMP_DIR}/ctof.c" - " - extern ${FUNCTION}(); - int main() { ${FUNCTION}(); return 0;} - " - ) - file(WRITE "${TMP_DIR}/CMakeLists.txt" - " - project(testf C Fortran) - add_library(flib test.f) - add_executable(ctof ctof.c) - target_link_libraries(ctof flib) - " - ) - set(FORTRAN_NAME_MANGLE_TEST FALSE) - try_compile(FORTRAN_NAME_MANGLE_TEST "${TMP_DIR}" "${TMP_DIR}" - testf - OUTPUT_VARIABLE output) - if(FORTRAN_NAME_MANGLE_TEST) - set(${RESULT} TRUE PARENT_SCOPE) +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +#----------------------------------------------------------------------------- +# Execute at most once in a project. +if(FortranCInterface_SOURCE_DIR) + return() +endif() + +#----------------------------------------------------------------------------- +# Verify that C and Fortran are available. +foreach(lang C Fortran) + if(NOT CMAKE_${lang}_COMPILER_LOADED) + message(FATAL_ERROR + "FortranCInterface requires the ${lang} language to be enabled.") + endif() +endforeach() + +#----------------------------------------------------------------------------- +set(FortranCInterface_SOURCE_DIR ${CMAKE_ROOT}/Modules/FortranCInterface) + +# Create the interface detection project if it does not exist. +if(NOT FortranCInterface_BINARY_DIR) + set(FortranCInterface_BINARY_DIR ${CMAKE_BINARY_DIR}/CMakeFiles/FortranCInterface) + include(${FortranCInterface_SOURCE_DIR}/Detect.cmake) +endif() + +# Load the detection results. +include(${FortranCInterface_BINARY_DIR}/Output.cmake) + +#----------------------------------------------------------------------------- +function(FortranCInterface_HEADER file) + # Parse arguments. + if(IS_ABSOLUTE "${file}") + set(FILE "${file}") else() - set(${RESULT} FALSE PARENT_SCOPE) + set(FILE "${CMAKE_CURRENT_BINARY_DIR}/${file}") endif() -endfunction(test_fortran_mangling) - -# this function discovers the name mangling scheme used -# for functions in a fortran module. -function(discover_fortran_module_mangling prefix suffix found) - set(CODE - " - module test_interface - interface dummy - module procedure sub - end interface - contains - subroutine sub - end subroutine - end module test_interface - ") - set(worked FALSE) - foreach(interface - "test_interface$" - "TEST_INTERFACE_mp_" - "_test_interface__" - "__test_interface__" - "__test_interface_NMOD_" - "__test_interface_MOD_") - test_fortran_mangling("${CODE}" "${interface}" - ${FORTRAN_C_MANGLING_UPPERCASE} "" "module" "sub" worked) - if(worked) - # if this is the upper case module match then - # lower case it for the extraction of pre and post strings - if("${interface}" MATCHES "TEST_INTERFACE") - string(TOLOWER "${interface}" interface) - endif() - string(REGEX REPLACE "(.*)test_interface(.*)" "\\1" pre "${interface}") - string(REGEX REPLACE "(.*)test_interface(.*)" "\\2" post "${interface}") - set(${prefix} "${pre}" PARENT_SCOPE) - set(${suffix} "${post}" PARENT_SCOPE) - set(${found} TRUE PARENT_SCOPE) - return() - endif(worked) - endforeach(interface) - if(NOT worked) - message(STATUS "Failed to find C binding to Fortran module functions.") - set(${prefix} "BROKEN_C_FORTRAN_MODULE_BINDING" PARENT_SCOPE) - set(${suffix} "BROKEN_C_FORTRAN_MODULE_BINDING" PARENT_SCOPE) - set(${found} FALSE PARENT_SCOPE) - endif(NOT worked) -endfunction(discover_fortran_module_mangling) - - -function(discover_fortran_mangling prefix isupper suffix extra_under_score - found ) - set(CODE - " - subroutine sub - end subroutine sub - ") - foreach(post "_" "") - foreach(isup FALSE TRUE) - foreach(pre "" "_" "__") - set(worked FALSE) - test_fortran_mangling("${CODE}" "${pre}" ${isup} - "${post}" "function" sub worked ) - if(worked) - message(STATUS "found Fortran function linkage") - set(${isupper} "${isup}" PARENT_SCOPE) - set(${prefix} "${pre}" PARENT_SCOPE) - set(${suffix} "${post}" PARENT_SCOPE) - set(${found} TRUE PARENT_SCOPE) - set(CODE - " - subroutine my_sub - end subroutine my_sub - ") - set(worked FALSE) - test_fortran_mangling("${CODE}" "${pre}" ${isup} - "${post}" "function with _ " my_sub worked ) - if(worked) - set(${extra_under_score} FALSE PARENT_SCOPE) - else(worked) - test_fortran_mangling("${CODE}" "${pre}" ${isup} - "${post}_" "function with _ " my_sub worked ) - if(worked) - set(${extra_under_score} TRUE PARENT_SCOPE) - endif(worked) - endif(worked) - return() - endif() - endforeach() - endforeach() - endforeach() - set(${found} FALSE PARENT_SCOPE) -endfunction(discover_fortran_mangling) - -function(create_fortran_c_interface NAMESPACE FUNCTIONS HEADER) - if(NOT FORTRAN_C_MANGLING_FOUND) - # find regular fortran function mangling - discover_fortran_mangling(prefix isupper suffix extra_under found) - if(NOT found) - message(SEND_ERROR "Could not find fortran c name mangling.") - return() - endif(NOT found) - # find fortran module function mangling - set(FORTRAN_C_PREFIX "${prefix}" CACHE INTERNAL - "PREFIX for Fortran to c name mangling") - set(FORTRAN_C_SUFFIX "${suffix}" CACHE INTERNAL - "SUFFIX for Fortran to c name mangling") - set(FORTRAN_C_MANGLING_UPPERCASE ${isupper} CACHE INTERNAL - "Was fortran to c mangling found" ) - set(FORTRAN_C_MANGLING_EXTRA_UNDERSCORE ${extra_under} CACHE INTERNAL - "If a function has a _ in the name does the compiler append an extra _" ) - set(FORTRAN_C_MANGLING_FOUND TRUE CACHE INTERNAL - "Was fortran to c mangling found" ) - set(prefix ) - set(suffix ) - set(found FALSE) - # only try this if the compiler is F90 compatible - if(CMAKE_Fortran_COMPILER_SUPPORTS_F90) - discover_fortran_module_mangling(prefix suffix found) - endif(CMAKE_Fortran_COMPILER_SUPPORTS_F90) - if(found) - message(STATUS "found Fortran module linkage") - else(found) - message(STATUS "Failed to find Fortran module linkage") - endif(found) - set(FORTRAN_C_MODULE_PREFIX "${prefix}" CACHE INTERNAL - "PREFIX for Fortran to c name mangling") - set(FORTRAN_C_MODULE_SUFFIX "${suffix}" CACHE INTERNAL - "SUFFIX for Fortran to c name mangling") - set(FORTRAN_C_MODULE_MANGLING_FOUND ${found} CACHE INTERNAL - "Was for Fortran to c name mangling found for modules") - endif(NOT FORTRAN_C_MANGLING_FOUND) - foreach(f ${${FUNCTIONS}}) - if(FORTRAN_C_MANGLING_UPPERCASE) - string(TOUPPER "${f}" fcase) + set(MACRO_NAMESPACE "FortranCInterface_") + set(SYMBOL_NAMESPACE) + set(SYMBOLS) + set(doing) + foreach(arg ${ARGN}) + if("x${arg}" MATCHES "^x(SYMBOLS|SYMBOL_NAMESPACE|MACRO_NAMESPACE)$") + set(doing "${arg}") + elseif("x${doing}" MATCHES "^x(SYMBOLS)$") + list(APPEND "${doing}" "${arg}") + elseif("x${doing}" MATCHES "^x(SYMBOL_NAMESPACE|MACRO_NAMESPACE)$") + set("${doing}" "${arg}") + set(doing) else() - string(TOLOWER "${f}" fcase) + message(AUTHOR_WARNING "Unknown argument: \"${arg}\"") endif() - if("${f}" MATCHES ":") - string(REGEX REPLACE "(.*):(.*)" "\\1" module "${f}") - string(REGEX REPLACE "(.*):(.*)" "\\2" function "${f}") - string(REGEX REPLACE "(.*):(.*)" "\\1" module_case "${fcase}") - string(REGEX REPLACE "(.*):(.*)" "\\2" function_case "${fcase}") + endforeach() + + # Generate macro definitions. + set(HEADER_CONTENT) + set(_desc_GLOBAL "/* Mangling for Fortran global symbols without underscores. */") + set(_desc_GLOBAL_ "/* Mangling for Fortran global symbols with underscores. */") + set(_desc_MODULE "/* Mangling for Fortran module symbols without underscores. */") + set(_desc_MODULE_ "/* Mangling for Fortran module symbols with underscores. */") + foreach(macro GLOBAL GLOBAL_ MODULE MODULE_) + if(FortranCInterface_${macro}_MACRO) set(HEADER_CONTENT "${HEADER_CONTENT} -#define ${NAMESPACE}${module}_${function} ${FORTRAN_C_MODULE_PREFIX}${module_case}${FORTRAN_C_MODULE_SUFFIX}${function_case} +${_desc_${macro}} +#define ${MACRO_NAMESPACE}${macro}${FortranCInterface_${macro}_MACRO} ") - else("${f}" MATCHES ":") - set(function "${FORTRAN_C_PREFIX}${fcase}${FORTRAN_C_SUFFIX}") - if("${f}" MATCHES "_" AND FORTRAN_C_MANGLING_EXTRA_UNDERSCORE) - set(function "${function}_") - endif("${f}" MATCHES "_" AND FORTRAN_C_MANGLING_EXTRA_UNDERSCORE) - set(HEADER_CONTENT "${HEADER_CONTENT} -#define ${NAMESPACE}${f} ${function} + endif() + endforeach() + + # Generate symbol mangling definitions. + if(SYMBOLS) + set(HEADER_CONTENT "${HEADER_CONTENT} +/*--------------------------------------------------------------------------*/ +/* Mangle some symbols automatically. */ ") - endif("${f}" MATCHES ":") + endif() + foreach(f ${SYMBOLS}) + if("${f}" MATCHES ":") + # Module symbol name. Parse ":" syntax. + string(REPLACE ":" ";" pieces "${f}") + list(GET pieces 0 module) + list(GET pieces 1 function) + string(TOUPPER "${module}" m_upper) + string(TOLOWER "${module}" m_lower) + string(TOUPPER "${function}" f_upper) + string(TOLOWER "${function}" f_lower) + if("${function}" MATCHES "_") + set(form "_") + else() + set(form "") + endif() + if(FortranCInterface_MODULE${form}_MACRO) + set(HEADER_CONTENT "${HEADER_CONTENT}#define ${SYMBOL_NAMESPACE}${module}_${function} ${MACRO_NAMESPACE}MODULE${form}(${m_lower},${f_lower}, ${m_upper},${f_upper})\n") + else() + message(AUTHOR_WARNING "No FortranCInterface mangling known for ${f}") + endif() + else() + # Global symbol name. + if("${f}" MATCHES "_") + set(form "_") + else() + set(form "") + endif() + string(TOUPPER "${f}" f_upper) + string(TOLOWER "${f}" f_lower) + if(FortranCInterface_GLOBAL${form}_MACRO) + set(HEADER_CONTENT "${HEADER_CONTENT}#define ${SYMBOL_NAMESPACE}${f} ${MACRO_NAMESPACE}GLOBAL${form}(${f_lower}, ${f_upper})\n") + else() + message(AUTHOR_WARNING "No FortranCInterface mangling known for ${f}") + endif() + endif() endforeach(f) - configure_file( - "${CMAKE_ROOT}/Modules/FortranCInterface.h.in" - ${HEADER} @ONLY) - message(STATUS "created ${HEADER}") + + # Store the content. + configure_file(${FortranCInterface_SOURCE_DIR}/Macro.h.in ${FILE} @ONLY) endfunction() +function(FortranCInterface_VERIFY) + # Check arguments. + + set(lang C) + set(quiet 0) + set(verify_cxx 0) + foreach(arg ${ARGN}) + if("${arg}" STREQUAL "QUIET") + set(quiet 1) + elseif("${arg}" STREQUAL "CXX") + set(lang CXX) + set(verify_cxx 1) + else() + message(FATAL_ERROR + "FortranCInterface_VERIFY - called with unknown argument:\n ${arg}") + endif() + endforeach() + + if(NOT CMAKE_${lang}_COMPILER_LOADED) + message(FATAL_ERROR + "FortranCInterface_VERIFY(${lang}) requires ${lang} to be enabled.") + endif() + + # Build the verification project if not yet built. + if(NOT DEFINED FortranCInterface_VERIFIED_${lang}) + set(_desc "Verifying Fortran/${lang} Compiler Compatibility") + message(STATUS "${_desc}") + + # Build a sample project which reports symbols. + try_compile(FortranCInterface_VERIFY_${lang}_COMPILED + ${FortranCInterface_BINARY_DIR}/Verify${lang} + ${FortranCInterface_SOURCE_DIR}/Verify + VerifyFortranC + CMAKE_FLAGS -DVERIFY_CXX=${verify_cxx} + -DCMAKE_VERBOSE_MAKEFILE=ON + OUTPUT_VARIABLE _output) + file(WRITE "${FortranCInterface_BINARY_DIR}/Verify${lang}/output.txt" "${_output}") + + # Report results. + if(FortranCInterface_VERIFY_${lang}_COMPILED) + message(STATUS "${_desc} - Success") + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "${_desc} passed with the following output:\n${_output}\n\n") + set(FortranCInterface_VERIFIED_${lang} 1 CACHE INTERNAL "Fortran/${lang} compatibility") + else() + message(STATUS "${_desc} - Failed") + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "${_desc} failed with the following output:\n${_output}\n\n") + set(FortranCInterface_VERIFIED_${lang} 0 CACHE INTERNAL "Fortran/${lang} compatibility") + endif() + unset(FortranCInterface_VERIFY_${lang}_COMPILED CACHE) + endif() + + # Error if compilers are incompatible. + if(NOT FortranCInterface_VERIFIED_${lang} AND NOT quiet) + file(READ "${FortranCInterface_BINARY_DIR}/Verify${lang}/output.txt" _output) + string(REGEX REPLACE "\n" "\n " _output "${_output}") + message(FATAL_ERROR + "The Fortran compiler:\n ${CMAKE_Fortran_COMPILER}\n" + "and the ${lang} compiler:\n ${CMAKE_${lang}_COMPILER}\n" + "failed to compile a simple test project using both languages. " + "The output was:\n ${_output}") + endif() +endfunction() diff --git a/Modules/FortranCInterface.h.in b/Modules/FortranCInterface.h.in deleted file mode 100644 index 02501758f..000000000 --- a/Modules/FortranCInterface.h.in +++ /dev/null @@ -1,9 +0,0 @@ -/* This file is automatically generated by CMake, DO NOT EDIT. - It contains a mapping from Fortran functions so they can - be called from C or C++. */ - - -@HEADER_CONTENT@ - - - diff --git a/Modules/FortranCInterface/CMakeLists.txt b/Modules/FortranCInterface/CMakeLists.txt new file mode 100644 index 000000000..8402940e0 --- /dev/null +++ b/Modules/FortranCInterface/CMakeLists.txt @@ -0,0 +1,90 @@ +#============================================================================= +# Copyright 2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +cmake_minimum_required(VERSION 2.6.3) +project(FortranCInterface C Fortran) +include(${FortranCInterface_BINARY_DIR}/Input.cmake OPTIONAL) + +# Check if the C compiler supports '$' in identifiers. +include(CheckCSourceCompiles) +check_c_source_compiles(" +extern int dollar$(void); +int main() { return 0; } +" C_SUPPORTS_DOLLAR) + +# List manglings of global symbol names to try. +set(global_symbols + my_sub # VisualAge + my_sub_ # GNU, Intel, HP, SunPro, MIPSpro + my_sub__ # GNU g77 + mysub # VisualAge + mysub_ # GNU, Intel, HP, SunPro, MIPSpro + ${FortranCInterface_GLOBAL_SYMBOLS} + ) +list(REMOVE_DUPLICATES global_symbols) + +# List manglings of module symbol names to try. +set(module_symbols + __my_module_MOD_my_sub # GNU 4.3 + __my_module_NMOD_my_sub # VisualAge + __my_module__my_sub # GNU 4.2 + __mymodule_MOD_mysub # GNU 4.3 + __mymodule_NMOD_mysub # VisualAge + __mymodule__mysub # GNU 4.2 + my_module$my_sub # HP + my_module_mp_my_sub_ # Intel + my_module_my_sub_ # PGI + mymodule$mysub # HP + mymodule_mp_mysub_ # Intel + mymodule_mysub_ # PGI + ${FortranCInterface_MODULE_SYMBOLS} + ) +list(REMOVE_DUPLICATES module_symbols) + +# Note that some compiler manglings cannot be invoked from C: +# MIPSpro uses "MY_SUB.in.MY_MODULE" +# SunPro uses "my_module.my_sub_" + +# Add module symbols only with Fortran90. +if(CMAKE_Fortran_COMPILER_SUPPORTS_F90) + set(myfort_modules mymodule.f90 my_module.f90) + set(call_mod call_mod.f90) + set_property(SOURCE main.F PROPERTY COMPILE_DEFINITIONS CALL_MOD) +else() + set(module_symbols) +endif() + +# Generate C symbol sources. +foreach(symbol IN LISTS global_symbols module_symbols) + # Skip symbols with '$' if C cannot handle them. + if(C_SUPPORTS_DOLLAR OR NOT "${symbol}" MATCHES "\\$") + if("${symbol}" MATCHES "SUB") + set(upper "-UPPER") + else() + set(upper) + endif() + string(REPLACE "$" "S" name "${symbol}") + set(source ${CMAKE_CURRENT_BINARY_DIR}/symbols/${name}${upper}.c) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/symbol.c.in ${source} @ONLY) + list(APPEND symbol_sources ${source}) + endif() +endforeach() + +# Provide symbols through Fortran. +add_library(myfort STATIC mysub.f my_sub.f ${myfort_modules}) + +# Provide symbols through C but fall back to Fortran. +add_library(symbols STATIC mymodule_.c my_module_.c ${symbol_sources}) +target_link_libraries(symbols myfort) + +# Require symbols through Fortran. +add_executable(FortranCInterface main.F call_sub.f ${call_mod}) +target_link_libraries(FortranCInterface symbols) diff --git a/Modules/FortranCInterface/Detect.cmake b/Modules/FortranCInterface/Detect.cmake new file mode 100644 index 000000000..70dbe2735 --- /dev/null +++ b/Modules/FortranCInterface/Detect.cmake @@ -0,0 +1,180 @@ +#============================================================================= +# Copyright 2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +configure_file(${FortranCInterface_SOURCE_DIR}/Input.cmake.in + ${FortranCInterface_BINARY_DIR}/Input.cmake @ONLY) + +# Detect the Fortran/C interface on the first run or when the +# configuration changes. +if(${FortranCInterface_BINARY_DIR}/Input.cmake + IS_NEWER_THAN ${FortranCInterface_BINARY_DIR}/Output.cmake + OR ${FortranCInterface_SOURCE_DIR}/Output.cmake.in + IS_NEWER_THAN ${FortranCInterface_BINARY_DIR}/Output.cmake + OR ${FortranCInterface_SOURCE_DIR}/CMakeLists.txt + IS_NEWER_THAN ${FortranCInterface_BINARY_DIR}/Output.cmake + OR ${CMAKE_CURRENT_LIST_FILE} + IS_NEWER_THAN ${FortranCInterface_BINARY_DIR}/Output.cmake + ) + message(STATUS "Detecting Fortran/C Interface") +else() + return() +endif() + +# Invalidate verification results. +unset(FortranCInterface_VERIFIED_C CACHE) +unset(FortranCInterface_VERIFIED_CXX CACHE) + +set(_result) + +# Build a sample project which reports symbols. +try_compile(FortranCInterface_COMPILED + ${FortranCInterface_BINARY_DIR} + ${FortranCInterface_SOURCE_DIR} + FortranCInterface + OUTPUT_VARIABLE FortranCInterface_OUTPUT) +set(FortranCInterface_COMPILED ${FortranCInterface_COMPILED}) +unset(FortranCInterface_COMPILED CACHE) + +# Locate the sample project executable. +if(FortranCInterface_COMPILED) + find_program(FortranCInterface_EXE + NAMES FortranCInterface + PATHS ${FortranCInterface_BINARY_DIR} ${FortranCInterface_BINARY_DIR}/Debug + NO_DEFAULT_PATH + ) + set(FortranCInterface_EXE ${FortranCInterface_EXE}) + unset(FortranCInterface_EXE CACHE) +else() + set(_result "Failed to compile") + set(FortranCInterface_EXE) + file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Fortran/C interface test project failed with the following output:\n" + "${FortranCInterface_OUTPUT}\n") +endif() + +# Load symbols from INFO:symbol[] strings in the executable. +set(FortranCInterface_SYMBOLS) +if(FortranCInterface_EXE) + file(STRINGS "${FortranCInterface_EXE}" _info_strings + LIMIT_COUNT 8 REGEX "INFO:[^[]*\\[") + foreach(info ${_info_strings}) + if("${info}" MATCHES ".*INFO:symbol\\[([^]]*)\\].*") + string(REGEX REPLACE ".*INFO:symbol\\[([^]]*)\\].*" "\\1" symbol "${info}") + list(APPEND FortranCInterface_SYMBOLS ${symbol}) + endif() + endforeach() +elseif(NOT _result) + set(_result "Failed to load sample executable") +endif() + +set(_case_mysub "LOWER") +set(_case_my_sub "LOWER") +set(_case_MYSUB "UPPER") +set(_case_MY_SUB "UPPER") +set(_global_regex "^(_*)(mysub|MYSUB)([_$]*)$") +set(_global__regex "^(_*)(my_sub|MY_SUB)([_$]*)$") +set(_module_regex "^(_*)(mymodule|MYMODULE)([A-Za-z_$]*)(mysub|MYSUB)([_$]*)$") +set(_module__regex "^(_*)(my_module|MY_MODULE)([A-Za-z_$]*)(my_sub|MY_SUB)([_$]*)$") + +# Parse the symbol names. +foreach(symbol ${FortranCInterface_SYMBOLS}) + foreach(form "" "_") + # Look for global symbols. + string(REGEX REPLACE "${_global_${form}regex}" + "\\1;\\2;\\3" pieces "${symbol}") + list(LENGTH pieces len) + if(len EQUAL 3) + set(FortranCInterface_GLOBAL_${form}SYMBOL "${symbol}") + list(GET pieces 0 FortranCInterface_GLOBAL_${form}PREFIX) + list(GET pieces 1 name) + list(GET pieces 2 FortranCInterface_GLOBAL_${form}SUFFIX) + set(FortranCInterface_GLOBAL_${form}CASE "${_case_${name}}") + endif() + + # Look for module symbols. + string(REGEX REPLACE "${_module_${form}regex}" + "\\1;\\2;\\3;\\4;\\5" pieces "${symbol}") + list(LENGTH pieces len) + if(len EQUAL 5) + set(FortranCInterface_MODULE_${form}SYMBOL "${symbol}") + list(GET pieces 0 FortranCInterface_MODULE_${form}PREFIX) + list(GET pieces 1 module) + list(GET pieces 2 FortranCInterface_MODULE_${form}MIDDLE) + list(GET pieces 3 name) + list(GET pieces 4 FortranCInterface_MODULE_${form}SUFFIX) + set(FortranCInterface_MODULE_${form}CASE "${_case_${name}}") + endif() + endforeach() +endforeach() + +# Construct mangling macro definitions. +set(_name_LOWER "name") +set(_name_UPPER "NAME") +foreach(form "" "_") + if(FortranCInterface_GLOBAL_${form}SYMBOL) + if(FortranCInterface_GLOBAL_${form}PREFIX) + set(_prefix "${FortranCInterface_GLOBAL_${form}PREFIX}##") + else() + set(_prefix "") + endif() + if(FortranCInterface_GLOBAL_${form}SUFFIX) + set(_suffix "##${FortranCInterface_GLOBAL_${form}SUFFIX}") + else() + set(_suffix "") + endif() + set(_name "${_name_${FortranCInterface_GLOBAL_${form}CASE}}") + set(FortranCInterface_GLOBAL${form}_MACRO + "(name,NAME) ${_prefix}${_name}${_suffix}") + endif() + if(FortranCInterface_MODULE_${form}SYMBOL) + if(FortranCInterface_MODULE_${form}PREFIX) + set(_prefix "${FortranCInterface_MODULE_${form}PREFIX}##") + else() + set(_prefix "") + endif() + if(FortranCInterface_MODULE_${form}SUFFIX) + set(_suffix "##${FortranCInterface_MODULE_${form}SUFFIX}") + else() + set(_suffix "") + endif() + set(_name "${_name_${FortranCInterface_MODULE_${form}CASE}}") + set(_middle "##${FortranCInterface_MODULE_${form}MIDDLE}##") + set(FortranCInterface_MODULE${form}_MACRO + "(mod_name,name, mod_NAME,NAME) ${_prefix}mod_${_name}${_middle}${_name}${_suffix}") + endif() +endforeach() + +# Summarize what is available. +foreach(scope GLOBAL MODULE) + if(FortranCInterface_${scope}_SYMBOL AND + FortranCInterface_${scope}__SYMBOL) + set(FortranCInterface_${scope}_FOUND 1) + else() + set(FortranCInterface_${scope}_FOUND 0) + endif() +endforeach() + +# Record the detection results. +configure_file(${FortranCInterface_SOURCE_DIR}/Output.cmake.in + ${FortranCInterface_BINARY_DIR}/Output.cmake @ONLY) +file(APPEND ${FortranCInterface_BINARY_DIR}/Output.cmake "\n") + +# Report the results. +if(FortranCInterface_GLOBAL_FOUND) + if(FortranCInterface_MODULE_FOUND) + set(_result "Found GLOBAL and MODULE mangling") + else(FortranCInterface_MODULE_FOUND) + set(_result "Found GLOBAL but not MODULE mangling") + endif() +elseif(NOT _result) + set(_result "Failed to recognize symbols") +endif() +message(STATUS "Detecting Fortran/C Interface - ${_result}") diff --git a/Modules/FortranCInterface/Input.cmake.in b/Modules/FortranCInterface/Input.cmake.in new file mode 100644 index 000000000..f261e3b45 --- /dev/null +++ b/Modules/FortranCInterface/Input.cmake.in @@ -0,0 +1,3 @@ +set(CMAKE_Fortran_COMPILER_ID "@CMAKE_Fortran_COMPILER_ID@") +set(FortranCInterface_GLOBAL_SYMBOLS "@FortranCInterface_GLOBAL_SYMBOLS@") +set(FortranCInterface_MODULE_SYMBOLS "@FortranCInterface_MODULE_SYMBOLS@") diff --git a/Modules/FortranCInterface/Macro.h.in b/Modules/FortranCInterface/Macro.h.in new file mode 100644 index 000000000..d015a6239 --- /dev/null +++ b/Modules/FortranCInterface/Macro.h.in @@ -0,0 +1,4 @@ +#ifndef @MACRO_NAMESPACE@HEADER_INCLUDED +#define @MACRO_NAMESPACE@HEADER_INCLUDED +@HEADER_CONTENT@ +#endif diff --git a/Modules/FortranCInterface/Output.cmake.in b/Modules/FortranCInterface/Output.cmake.in new file mode 100644 index 000000000..bce410e76 --- /dev/null +++ b/Modules/FortranCInterface/Output.cmake.in @@ -0,0 +1,33 @@ +# Global symbol without underscore. +set(FortranCInterface_GLOBAL_SYMBOL "@FortranCInterface_GLOBAL_SYMBOL@") +set(FortranCInterface_GLOBAL_PREFIX "@FortranCInterface_GLOBAL_PREFIX@") +set(FortranCInterface_GLOBAL_SUFFIX "@FortranCInterface_GLOBAL_SUFFIX@") +set(FortranCInterface_GLOBAL_CASE "@FortranCInterface_GLOBAL_CASE@") +set(FortranCInterface_GLOBAL_MACRO "@FortranCInterface_GLOBAL_MACRO@") + +# Global symbol with underscore. +set(FortranCInterface_GLOBAL__SYMBOL "@FortranCInterface_GLOBAL__SYMBOL@") +set(FortranCInterface_GLOBAL__PREFIX "@FortranCInterface_GLOBAL__PREFIX@") +set(FortranCInterface_GLOBAL__SUFFIX "@FortranCInterface_GLOBAL__SUFFIX@") +set(FortranCInterface_GLOBAL__CASE "@FortranCInterface_GLOBAL__CASE@") +set(FortranCInterface_GLOBAL__MACRO "@FortranCInterface_GLOBAL__MACRO@") + +# Module symbol without underscore. +set(FortranCInterface_MODULE_SYMBOL "@FortranCInterface_MODULE_SYMBOL@") +set(FortranCInterface_MODULE_PREFIX "@FortranCInterface_MODULE_PREFIX@") +set(FortranCInterface_MODULE_MIDDLE "@FortranCInterface_MODULE_MIDDLE@") +set(FortranCInterface_MODULE_SUFFIX "@FortranCInterface_MODULE_SUFFIX@") +set(FortranCInterface_MODULE_CASE "@FortranCInterface_MODULE_CASE@") +set(FortranCInterface_MODULE_MACRO "@FortranCInterface_MODULE_MACRO@") + +# Module symbol with underscore. +set(FortranCInterface_MODULE__SYMBOL "@FortranCInterface_MODULE__SYMBOL@") +set(FortranCInterface_MODULE__PREFIX "@FortranCInterface_MODULE__PREFIX@") +set(FortranCInterface_MODULE__MIDDLE "@FortranCInterface_MODULE__MIDDLE@") +set(FortranCInterface_MODULE__SUFFIX "@FortranCInterface_MODULE__SUFFIX@") +set(FortranCInterface_MODULE__CASE "@FortranCInterface_MODULE__CASE@") +set(FortranCInterface_MODULE__MACRO "@FortranCInterface_MODULE__MACRO@") + +# Summarize what was found. +set(FortranCInterface_GLOBAL_FOUND @FortranCInterface_GLOBAL_FOUND@) +set(FortranCInterface_MODULE_FOUND @FortranCInterface_MODULE_FOUND@) diff --git a/Modules/FortranCInterface/Verify/CMakeLists.txt b/Modules/FortranCInterface/Verify/CMakeLists.txt new file mode 100644 index 000000000..052dd599f --- /dev/null +++ b/Modules/FortranCInterface/Verify/CMakeLists.txt @@ -0,0 +1,32 @@ +#============================================================================= +# Copyright 2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +cmake_minimum_required(VERSION 2.7) +project(VerifyFortranC C Fortran) + +option(VERIFY_CXX "Whether to verify C++ and Fortran" OFF) +if(VERIFY_CXX) + enable_language(CXX) + set(VerifyCXX VerifyCXX.cxx) + add_definitions(-DVERIFY_CXX) +endif() + +include(FortranCInterface) + +FortranCInterface_HEADER(VerifyFortran.h SYMBOLS VerifyFortran) +include_directories(${VerifyFortranC_BINARY_DIR}) + +add_executable(VerifyFortranC main.c VerifyC.c VerifyFortran.f ${VerifyCXX}) + +if(NOT VERIFY_CXX) + # The entry point (main) is defined in C; link with the C compiler. + set_property(TARGET VerifyFortranC PROPERTY LINKER_LANGUAGE C) +endif() diff --git a/Modules/FortranCInterface/Verify/VerifyC.c b/Modules/FortranCInterface/Verify/VerifyC.c new file mode 100644 index 000000000..7f847ef01 --- /dev/null +++ b/Modules/FortranCInterface/Verify/VerifyC.c @@ -0,0 +1,5 @@ +#include +void VerifyC(void) +{ + printf("VerifyC\n"); +} diff --git a/Modules/FortranCInterface/Verify/VerifyCXX.cxx b/Modules/FortranCInterface/Verify/VerifyCXX.cxx new file mode 100644 index 000000000..689fac53d --- /dev/null +++ b/Modules/FortranCInterface/Verify/VerifyCXX.cxx @@ -0,0 +1,4 @@ +extern "C" void VerifyCXX(void) +{ + delete new int; +} diff --git a/Modules/FortranCInterface/Verify/VerifyFortran.f b/Modules/FortranCInterface/Verify/VerifyFortran.f new file mode 100644 index 000000000..a17e48d1b --- /dev/null +++ b/Modules/FortranCInterface/Verify/VerifyFortran.f @@ -0,0 +1,3 @@ + subroutine VerifyFortran + print *, 'VerifyFortran' + end diff --git a/Modules/FortranCInterface/Verify/main.c b/Modules/FortranCInterface/Verify/main.c new file mode 100644 index 000000000..582ef1d90 --- /dev/null +++ b/Modules/FortranCInterface/Verify/main.c @@ -0,0 +1,16 @@ +extern void VerifyC(void); +#ifdef VERIFY_CXX +extern void VerifyCXX(void); +#endif +#include "VerifyFortran.h" +extern void VerifyFortran(void); + +int main(void) +{ + VerifyC(); +#ifdef VERIFY_CXX + VerifyCXX(); +#endif + VerifyFortran(); + return 0; +} diff --git a/Modules/FortranCInterface/call_mod.f90 b/Modules/FortranCInterface/call_mod.f90 new file mode 100644 index 000000000..9b6af640e --- /dev/null +++ b/Modules/FortranCInterface/call_mod.f90 @@ -0,0 +1,6 @@ +subroutine call_mod + use mymodule + use my_module + call mysub() + call my_sub() +end subroutine call_mod diff --git a/Modules/FortranCInterface/call_sub.f b/Modules/FortranCInterface/call_sub.f new file mode 100644 index 000000000..ce3d50b14 --- /dev/null +++ b/Modules/FortranCInterface/call_sub.f @@ -0,0 +1,4 @@ + subroutine call_sub + call mysub() + call my_sub() + end diff --git a/Modules/FortranCInterface/main.F b/Modules/FortranCInterface/main.F new file mode 100644 index 000000000..84991b0ee --- /dev/null +++ b/Modules/FortranCInterface/main.F @@ -0,0 +1,6 @@ + program main + call call_sub() +#ifdef CALL_MOD + call call_mod() +#endif + end diff --git a/Modules/FortranCInterface/my_module.f90 b/Modules/FortranCInterface/my_module.f90 new file mode 100644 index 000000000..82713b43e --- /dev/null +++ b/Modules/FortranCInterface/my_module.f90 @@ -0,0 +1,8 @@ +module my_module + interface my_interface + module procedure my_sub + end interface +contains + subroutine my_sub + end subroutine my_sub +end module my_module diff --git a/Modules/FortranCInterface/my_module_.c b/Modules/FortranCInterface/my_module_.c new file mode 100644 index 000000000..0d7091f2b --- /dev/null +++ b/Modules/FortranCInterface/my_module_.c @@ -0,0 +1,2 @@ +/* PGI Fortran wants my_module_ when calling any my_module symbol. */ +void my_module_(void) {} diff --git a/Modules/FortranCInterface/my_sub.f b/Modules/FortranCInterface/my_sub.f new file mode 100644 index 000000000..247ba0678 --- /dev/null +++ b/Modules/FortranCInterface/my_sub.f @@ -0,0 +1,2 @@ + subroutine my_sub + end diff --git a/Modules/FortranCInterface/mymodule.f90 b/Modules/FortranCInterface/mymodule.f90 new file mode 100644 index 000000000..ef6281a3f --- /dev/null +++ b/Modules/FortranCInterface/mymodule.f90 @@ -0,0 +1,8 @@ +module mymodule + interface myinterface + module procedure mysub + end interface +contains + subroutine mysub + end subroutine mysub +end module mymodule diff --git a/Modules/FortranCInterface/mymodule_.c b/Modules/FortranCInterface/mymodule_.c new file mode 100644 index 000000000..a7152afad --- /dev/null +++ b/Modules/FortranCInterface/mymodule_.c @@ -0,0 +1,2 @@ +/* PGI Fortran wants mymodule_ when calling any mymodule symbol. */ +void mymodule_(void) {} diff --git a/Modules/FortranCInterface/mysub.f b/Modules/FortranCInterface/mysub.f new file mode 100644 index 000000000..1c27ff452 --- /dev/null +++ b/Modules/FortranCInterface/mysub.f @@ -0,0 +1,2 @@ + subroutine mysub + end diff --git a/Modules/FortranCInterface/symbol.c.in b/Modules/FortranCInterface/symbol.c.in new file mode 100644 index 000000000..369fa4597 --- /dev/null +++ b/Modules/FortranCInterface/symbol.c.in @@ -0,0 +1,4 @@ +const char* @symbol@(void) +{ + return "INFO:symbol[@symbol@]"; +} diff --git a/Modules/GetPrerequisites.cmake b/Modules/GetPrerequisites.cmake index e7457d61b..67d4a1416 100644 --- a/Modules/GetPrerequisites.cmake +++ b/Modules/GetPrerequisites.cmake @@ -10,12 +10,13 @@ # # The following functions are provided by this script: # gp_append_unique -# gp_file_type # is_file_executable # gp_item_default_embedded_path # (projects can override with gp_item_default_embedded_path_override) # gp_resolve_item # (projects can override with gp_resolve_item_override) +# gp_resolved_file_type +# gp_file_type # get_prerequisites # list_prerequisites # list_prerequisites_by_glob @@ -23,6 +24,18 @@ # Requires CMake 2.6 or greater because it uses function, break, return and # PARENT_SCOPE. +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) # gp_append_unique list_var value # @@ -45,83 +58,6 @@ function(gp_append_unique list_var value) endfunction(gp_append_unique) -# gp_file_type original_file file type_var -# -# Return the type of ${file} with respect to ${original_file}. String -# describing type of prerequisite is returned in variable named ${type_var}. -# -# Possible types are: -# system -# local -# embedded -# other -# -function(gp_file_type original_file file type_var) - set(is_embedded 0) - set(is_local 0) - set(is_system 0) - - string(TOLOWER "${original_file}" original_lower) - string(TOLOWER "${file}" lower) - - if("${file}" MATCHES "^@(executable|loader)_path") - set(is_embedded 1) - endif("${file}" MATCHES "^@(executable|loader)_path") - - if(NOT is_embedded) - if(UNIX) - if("${file}" MATCHES "^(/lib/|/lib32/|/lib64/)") - set(is_system 1) - endif("${file}" MATCHES "^(/lib/|/lib32/|/lib64/)") - endif(UNIX) - - if(APPLE) - if("${file}" MATCHES "^(/System/Library/|/usr/lib/)") - set(is_system 1) - endif("${file}" MATCHES "^(/System/Library/|/usr/lib/)") - endif(APPLE) - - if(WIN32) - string(TOLOWER "$ENV{SystemRoot}" sysroot) - string(REGEX REPLACE "\\\\" "/" sysroot "${sysroot}") - - string(TOLOWER "$ENV{windir}" windir) - string(REGEX REPLACE "\\\\" "/" windir "${windir}") - - if("${lower}" MATCHES "^(${sysroot}/system|${windir}/system|msvc[^/]+dll)") - set(is_system 1) - endif("${lower}" MATCHES "^(${sysroot}/system|${windir}/system|msvc[^/]+dll)") - endif(WIN32) - - if(NOT is_system) - get_filename_component(original_path "${original_lower}" PATH) - get_filename_component(path "${lower}" PATH) - if("${original_path}" STREQUAL "${path}") - set(is_local 1) - endif("${original_path}" STREQUAL "${path}") - endif(NOT is_system) - endif(NOT is_embedded) - - # Return type string based on computed booleans: - # - set(type "other") - - if(is_system) - set(type "system") - else(is_system) - if(is_embedded) - set(type "embedded") - else(is_embedded) - if(is_local) - set(type "local") - endif(is_local) - endif(is_embedded) - endif(is_system) - - set(${type_var} "${type}" PARENT_SCOPE) -endfunction(gp_file_type) - - # is_file_executable file result_var # # Return 1 in ${result_var} if ${file} is a binary executable. @@ -137,16 +73,16 @@ function(is_file_executable file result_var) get_filename_component(file_full "${file}" ABSOLUTE) string(TOLOWER "${file_full}" file_full_lower) - # If file name ends in .exe or .dll on Windows, *assume* executable: + # If file name ends in .exe on Windows, *assume* executable: # if(WIN32) - if("${file_full_lower}" MATCHES "\\.(exe|dll)$") + if("${file_full_lower}" MATCHES "\\.exe$") set(${result_var} 1 PARENT_SCOPE) return() - endif("${file_full_lower}" MATCHES "\\.(exe|dll)$") + endif("${file_full_lower}" MATCHES "\\.exe$") # A clause could be added here that uses output or return value of dumpbin - # to determine ${result_var}. In 99%+? practical cases, the exe|dll name + # to determine ${result_var}. In 99%+? practical cases, the exe name # match will be sufficient... # endif(WIN32) @@ -204,39 +140,49 @@ endfunction(is_file_executable) # gp_item_default_embedded_path_override function. # function(gp_item_default_embedded_path item default_embedded_path_var) - # - # The assumption here is that all executables in the bundle will be - # in same-level-directories inside the bundle. The parent directory - # of an executable inside the bundle should be MacOS or a sibling of - # MacOS and all embedded paths returned from here will begin with - # "@executable_path/../" and will work from all executables in all - # such same-level-directories inside the bundle. - # - # By default, embed things right next to the main bundle executable: + # On Windows and Linux, "embed" prerequisites in the same directory + # as the executable by default: # - set(path "@executable_path/../../Contents/MacOS") - + set(path "@executable_path") set(overridden 0) - # Embed .dylibs right next to the main bundle executable: + # On the Mac, relative to the executable depending on the type + # of the thing we are embedding: # - if(item MATCHES "\\.dylib$") - set(path "@executable_path/../MacOS") - set(overridden 1) - endif(item MATCHES "\\.dylib$") + if(APPLE) + # + # The assumption here is that all executables in the bundle will be + # in same-level-directories inside the bundle. The parent directory + # of an executable inside the bundle should be MacOS or a sibling of + # MacOS and all embedded paths returned from here will begin with + # "@executable_path/../" and will work from all executables in all + # such same-level-directories inside the bundle. + # - # Embed frameworks in the embedded "Frameworks" directory (sibling of MacOS): - # - if(NOT overridden) - if(item MATCHES "[^/]+\\.framework/") - set(path "@executable_path/../Frameworks") + # By default, embed things right next to the main bundle executable: + # + set(path "@executable_path/../../Contents/MacOS") + + # Embed .dylibs right next to the main bundle executable: + # + if(item MATCHES "\\.dylib$") + set(path "@executable_path/../MacOS") set(overridden 1) - endif(item MATCHES "[^/]+\\.framework/") - endif(NOT overridden) + endif(item MATCHES "\\.dylib$") - # Provide a hook so that projects can override the default embedded location of - # any given library by whatever logic they choose: + # Embed frameworks in the embedded "Frameworks" directory (sibling of MacOS): + # + if(NOT overridden) + if(item MATCHES "[^/]+\\.framework/") + set(path "@executable_path/../Frameworks") + set(overridden 1) + endif(item MATCHES "[^/]+\\.framework/") + endif(NOT overridden) + endif() + + # Provide a hook so that projects can override the default embedded location + # of any given library by whatever logic they choose: # if(COMMAND gp_item_default_embedded_path_override) gp_item_default_embedded_path_override("${item}" path) @@ -276,7 +222,7 @@ function(gp_resolve_item context item exepath dirs resolved_item_var) set(resolved 1) set(resolved_item "${ri}") else(EXISTS "${ri}") - message(STATUS "info: embedded item does not exist '${ri}'") + message(STATUS "warning: embedded item does not exist '${ri}'") endif(EXISTS "${ri}") endif(item MATCHES "@executable_path") endif(NOT resolved) @@ -296,16 +242,17 @@ function(gp_resolve_item context item exepath dirs resolved_item_var) set(resolved 1) set(resolved_item "${ri}") else(EXISTS "${ri}") - message(STATUS "info: embedded item does not exist '${ri}'") + message(STATUS "warning: embedded item does not exist '${ri}'") endif(EXISTS "${ri}") endif(item MATCHES "@loader_path") endif(NOT resolved) if(NOT resolved) set(ri "ri-NOTFOUND") - find_file(ri "${item}" ${dirs}) + find_file(ri "${item}" ${exepath} ${dirs} NO_DEFAULT_PATH) + find_file(ri "${item}" ${exepath} ${dirs} /usr/lib) if(ri) - #message(STATUS "info: found item in dirs (${ri})") + #message(STATUS "info: 'find_file' in exepath/dirs (${ri})") set(resolved 1) set(resolved_item "${ri}") set(ri "ri-NOTFOUND") @@ -321,7 +268,7 @@ function(gp_resolve_item context item exepath dirs resolved_item_var) "/System/Library/Frameworks" ) if(fw) - #message(STATUS "info: found framework (${fw})") + #message(STATUS "info: 'find_file' found framework (${fw})") set(resolved 1) set(resolved_item "${fw}") set(fw "fw-NOTFOUND") @@ -335,8 +282,10 @@ function(gp_resolve_item context item exepath dirs resolved_item_var) if(WIN32) if(NOT resolved) set(ri "ri-NOTFOUND") - find_program(ri "${item}" PATHS "${dirs}") + find_program(ri "${item}" PATHS "${exepath};${dirs}" NO_DEFAULT_PATH) + find_program(ri "${item}" PATHS "${exepath};${dirs}") if(ri) + #message(STATUS "info: 'find_program' in exepath/dirs (${ri})") set(resolved 1) set(resolved_item "${ri}") set(ri "ri-NOTFOUND") @@ -352,13 +301,164 @@ function(gp_resolve_item context item exepath dirs resolved_item_var) endif(COMMAND gp_resolve_item_override) if(NOT resolved) - message(STATUS "warning: cannot resolve item '${item}'") + message(STATUS " +warning: cannot resolve item '${item}' + + possible problems: + need more directories? + need to use InstallRequiredSystemLibraries? + run in install tree instead of build tree? +") +# message(STATUS " +#****************************************************************************** +#warning: cannot resolve item '${item}' +# +# possible problems: +# need more directories? +# need to use InstallRequiredSystemLibraries? +# run in install tree instead of build tree? +# +# context='${context}' +# item='${item}' +# exepath='${exepath}' +# dirs='${dirs}' +# resolved_item_var='${resolved_item_var}' +#****************************************************************************** +#") endif(NOT resolved) set(${resolved_item_var} "${resolved_item}" PARENT_SCOPE) endfunction(gp_resolve_item) +# gp_resolved_file_type original_file file exepath dirs type_var +# +# Return the type of ${file} with respect to ${original_file}. String +# describing type of prerequisite is returned in variable named ${type_var}. +# +# Use ${exepath} and ${dirs} if necessary to resolve non-absolute ${file} +# values -- but only for non-embedded items. +# +# Possible types are: +# system +# local +# embedded +# other +# +function(gp_resolved_file_type original_file file exepath dirs type_var) + #message(STATUS "**") + + if(NOT IS_ABSOLUTE "${original_file}") + message(STATUS "warning: gp_resolved_file_type expects absolute full path for first arg original_file") + endif() + + set(is_embedded 0) + set(is_local 0) + set(is_system 0) + + set(resolved_file "${file}") + + if("${file}" MATCHES "^@(executable|loader)_path") + set(is_embedded 1) + endif() + + if(NOT is_embedded) + if(NOT IS_ABSOLUTE "${file}") + gp_resolve_item("${original_file}" "${file}" "${exepath}" "${dirs}" resolved_file) + endif() + + string(TOLOWER "${original_file}" original_lower) + string(TOLOWER "${resolved_file}" lower) + + if(UNIX) + if(resolved_file MATCHES "^(/lib/|/lib32/|/lib64/|/usr/lib/|/usr/lib32/|/usr/lib64/|/usr/X11R6/)") + set(is_system 1) + endif() + endif() + + if(APPLE) + if(resolved_file MATCHES "^(/System/Library/|/usr/lib/)") + set(is_system 1) + endif() + endif() + + if(WIN32) + string(TOLOWER "$ENV{SystemRoot}" sysroot) + string(REGEX REPLACE "\\\\" "/" sysroot "${sysroot}") + + string(TOLOWER "$ENV{windir}" windir) + string(REGEX REPLACE "\\\\" "/" windir "${windir}") + + if(lower MATCHES "^(${sysroot}/system|${windir}/system|(.*/)*msvc[^/]+dll)") + set(is_system 1) + endif() + endif() + + if(NOT is_system) + get_filename_component(original_path "${original_lower}" PATH) + get_filename_component(path "${lower}" PATH) + if("${original_path}" STREQUAL "${path}") + set(is_local 1) + endif() + endif() + endif() + + # Return type string based on computed booleans: + # + set(type "other") + + if(is_system) + set(type "system") + elseif(is_embedded) + set(type "embedded") + elseif(is_local) + set(type "local") + endif() + + #message(STATUS "gp_resolved_file_type: '${file}' '${resolved_file}'") + #message(STATUS " type: '${type}'") + + if(NOT is_embedded) + if(NOT IS_ABSOLUTE "${resolved_file}") + if(lower MATCHES "^msvc[^/]+dll" AND is_system) + message(STATUS "info: non-absolute msvc file '${file}' returning type '${type}'") + else() + message(STATUS "warning: gp_resolved_file_type non-absolute file '${file}' returning type '${type}' -- possibly incorrect") + endif() + endif() + endif() + + set(${type_var} "${type}" PARENT_SCOPE) + + #message(STATUS "**") +endfunction() + + +# gp_file_type original_file file type_var +# +# Return the type of ${file} with respect to ${original_file}. String +# describing type of prerequisite is returned in variable named ${type_var}. +# +# Possible types are: +# system +# local +# embedded +# other +# +function(gp_file_type original_file file type_var) + if(NOT IS_ABSOLUTE "${original_file}") + message(STATUS "warning: gp_file_type expects absolute full path for first arg original_file") + endif() + + get_filename_component(exepath "${original_file}" PATH) + + set(type "") + gp_resolved_file_type("${original_file}" "${file}" "${exepath}" "" type) + + set(${type_var} "${type}" PARENT_SCOPE) +endfunction(gp_file_type) + + # get_prerequisites target prerequisites_var exclude_system recurse dirs # # Get the list of shared library files required by ${target}. The list in @@ -477,6 +577,14 @@ function(get_prerequisites target prerequisites_var exclude_system recurse exepa # # + if("${gp_tool}" STREQUAL "ldd") + set(old_ld_env "$ENV{LD_LIBRARY_PATH}") + foreach(dir ${exepath} ${dirs}) + set(ENV{LD_LIBRARY_PATH} "${dir}:$ENV{LD_LIBRARY_PATH}") + endforeach(dir) + endif("${gp_tool}" STREQUAL "ldd") + + # Track new prerequisites at each new level of recursion. Start with an # empty list at each level: # @@ -489,6 +597,10 @@ function(get_prerequisites target prerequisites_var exclude_system recurse exepa OUTPUT_VARIABLE gp_cmd_ov ) + if("${gp_tool}" STREQUAL "ldd") + set(ENV{LD_LIBRARY_PATH} "${old_ld_env}") + endif("${gp_tool}" STREQUAL "ldd") + if(verbose) message(STATUS "") message(STATUS "gp_cmd_ov='${gp_cmd_ov}'") @@ -535,7 +647,7 @@ function(get_prerequisites target prerequisites_var exclude_system recurse exepa if(${exclude_system}) set(type "") - gp_file_type("${target}" "${item}" type) + gp_resolved_file_type("${target}" "${item}" "${exepath}" "${dirs}" type) if("${type}" STREQUAL "system") set(add_item 0) diff --git a/Modules/ITKCompatibility.cmake b/Modules/ITKCompatibility.cmake old mode 100755 new mode 100644 index 8a1392569..3693abcd5 --- a/Modules/ITKCompatibility.cmake +++ b/Modules/ITKCompatibility.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # work around an old bug in ITK prior to verison 3.0 SET(TIFF_RIGHT_VERSION 1) diff --git a/Modules/InstallRequiredSystemLibraries.cmake b/Modules/InstallRequiredSystemLibraries.cmake index 057924c92..6f24cd6a3 100644 --- a/Modules/InstallRequiredSystemLibraries.cmake +++ b/Modules/InstallRequiredSystemLibraries.cmake @@ -12,6 +12,19 @@ # If CMAKE_INSTALL_MFC_LIBRARIES is set then the MFC run time # libraries are installed as well as the CRT run time libraries. +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF(MSVC) FILE(TO_CMAKE_PATH "$ENV{SYSTEMROOT}" SYSTEMROOT) diff --git a/Modules/KDE3Macros.cmake b/Modules/KDE3Macros.cmake index 86cfd5725..f358cd7f6 100644 --- a/Modules/KDE3Macros.cmake +++ b/Modules/KDE3Macros.cmake @@ -1,5 +1,19 @@ # +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Alexander Neundorf +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # See FindKDE3.cmake for documentation. # # this file contains the following macros: diff --git a/Modules/MacroAddFileDependencies.cmake b/Modules/MacroAddFileDependencies.cmake index 13596912e..e4a82d1a5 100644 --- a/Modules/MacroAddFileDependencies.cmake +++ b/Modules/MacroAddFileDependencies.cmake @@ -1,14 +1,32 @@ # - MACRO_ADD_FILE_DEPENDENCIES(<_file> depend_files...) -# MACRO_OPTIONAL_FIND_PACKAGE( [QUIT] ) +# Using the macro MACRO_ADD_FILE_DEPENDENCIES() is discouraged. There are usually +# better ways to specifiy the correct dependencies. +# +# MACRO_ADD_FILE_DEPENDENCIES(<_file> depend_files...) is just a convenience +# wrapper around the OBJECT_DEPENDS source file property. You can just +# use SET_PROPERTY(SOURCE APPEND PROPERTY OBJECT_DEPENDS depend_files) instead. + +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) MACRO (MACRO_ADD_FILE_DEPENDENCIES _file) GET_SOURCE_FILE_PROPERTY(_deps ${_file} OBJECT_DEPENDS) - if (_deps) - set(_deps ${_deps} ${ARGN}) - else (_deps) - set(_deps ${ARGN}) - endif (_deps) + IF (_deps) + SET(_deps ${_deps} ${ARGN}) + ELSE (_deps) + SET(_deps ${ARGN}) + ENDIF (_deps) SET_SOURCE_FILES_PROPERTIES(${_file} PROPERTIES OBJECT_DEPENDS "${_deps}") diff --git a/Modules/NSIS.InstallOptions.ini.in b/Modules/NSIS.InstallOptions.ini.in old mode 100755 new mode 100644 diff --git a/Modules/NSIS.template.in b/Modules/NSIS.template.in old mode 100755 new mode 100644 index 19017c89b..99b3a9020 --- a/Modules/NSIS.template.in +++ b/Modules/NSIS.template.in @@ -25,22 +25,22 @@ !include "MUI.nsh" ;Default installation folder - InstallDir "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@" + InstallDir "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@" ;-------------------------------- ;General ;Name and file - Name "@CPACK_PACKAGE_INSTALL_DIRECTORY@" + Name "@CPACK_NSIS_PACKAGE_NAME@" OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@" ;Set compression SetCompressor @CPACK_NSIS_COMPRESSOR@ - + @CPACK_NSIS_DEFINES@ - + !include Sections.nsh - + ;--- Component support macros: --- ; The code for the add/remove functionality is from: ; http://nsis.sourceforge.net/Add/Remove_Functionality @@ -251,14 +251,24 @@ Function AddToPath Goto AddToPath_done AddToPath_NT: - ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH" + StrCmp $ADD_TO_PATH_ALL_USERS "1" ReadAllKey + ReadRegStr $1 ${NT_current_env} "PATH" + Goto DoTrim + ReadAllKey: + ReadRegStr $1 ${NT_all_env} "PATH" + DoTrim: StrCmp $1 "" AddToPath_NTdoIt Push $1 Call Trim Pop $1 StrCpy $0 "$1;$0" AddToPath_NTdoIt: - WriteRegExpandStr ${WriteEnvStr_RegKey} "PATH" $0 + StrCmp $ADD_TO_PATH_ALL_USERS "1" WriteAllKey + WriteRegExpandStr ${NT_current_env} "PATH" $0 + Goto DoSend + WriteAllKey: + WriteRegExpandStr ${NT_all_env} "PATH" $0 + DoSend: SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 AddToPath_done: @@ -320,7 +330,12 @@ Function un.RemoveFromPath Goto unRemoveFromPath_done unRemoveFromPath_NT: - ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH" + StrCmp $ADD_TO_PATH_ALL_USERS "1" unReadAllKey + ReadRegStr $1 ${NT_current_env} "PATH" + Goto unDoTrim + unReadAllKey: + ReadRegStr $1 ${NT_all_env} "PATH" + unDoTrim: StrCpy $5 $1 1 -1 # copy last char StrCmp $5 ";" +2 # if last char != ; StrCpy $1 "$1;" # append ; @@ -342,7 +357,12 @@ Function un.RemoveFromPath StrCmp $5 ";" 0 +2 # if last char == ; StrCpy $3 $3 -1 # remove last char - WriteRegExpandStr ${WriteEnvStr_RegKey} "PATH" $3 + StrCmp $ADD_TO_PATH_ALL_USERS "1" unWriteAllKey + WriteRegExpandStr ${NT_current_env} "PATH" $3 + Goto unDoSend + unWriteAllKey: + WriteRegExpandStr ${NT_all_env} "PATH" $3 + unDoSend: SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 unRemoveFromPath_done: @@ -663,6 +683,11 @@ Section "-Core installation" @CPACK_NSIS_CREATE_ICONS_EXTRA@ CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe" + ;Read a value from an InstallOptions INI file + !insertmacro MUI_INSTALLOPTIONS_READ $DO_NOT_ADD_TO_PATH "NSIS.InstallOptions.ini" "Field 2" "State" + !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_ALL_USERS "NSIS.InstallOptions.ini" "Field 3" "State" + !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_CURRENT_USER "NSIS.InstallOptions.ini" "Field 4" "State" + ; Write special uninstall registry entries Push "StartMenu" Push "$STARTMENU_FOLDER" @@ -688,10 +713,6 @@ SectionEnd Section "-Add to path" Push $INSTDIR\bin - ;Read a value from an InstallOptions INI file - !insertmacro MUI_INSTALLOPTIONS_READ $DO_NOT_ADD_TO_PATH "NSIS.InstallOptions.ini" "Field 2" "State" - !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_ALL_USERS "NSIS.InstallOptions.ini" "Field 3" "State" - !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_CURRENT_USER "NSIS.InstallOptions.ini" "Field 4" "State" StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 doNotAddToPath StrCmp $DO_NOT_ADD_TO_PATH "1" doNotAddToPath 0 Call AddToPath @@ -701,7 +722,7 @@ SectionEnd ;-------------------------------- ; Create custom pages Function InstallOptionsPage - !insertmacro MUI_HEADER_TEXT "Install Options" "Chose options for installing @CPACK_PACKAGE_INSTALL_DIRECTORY@" + !insertmacro MUI_HEADER_TEXT "Install Options" "Choose options for installing @CPACK_NSIS_PACKAGE_NAME@" !insertmacro MUI_INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini" FunctionEnd diff --git a/Modules/Platform/AIX-VisualAge-C.cmake b/Modules/Platform/AIX-VisualAge-C.cmake new file mode 100644 index 000000000..67b3171dc --- /dev/null +++ b/Modules/Platform/AIX-VisualAge-C.cmake @@ -0,0 +1 @@ +include(Platform/AIX-XL-C) diff --git a/Modules/Platform/AIX-VisualAge-CXX.cmake b/Modules/Platform/AIX-VisualAge-CXX.cmake new file mode 100644 index 000000000..7894d244f --- /dev/null +++ b/Modules/Platform/AIX-VisualAge-CXX.cmake @@ -0,0 +1 @@ +include(Platform/AIX-XL-CXX) diff --git a/Modules/Platform/AIX-VisualAge-Fortran.cmake b/Modules/Platform/AIX-VisualAge-Fortran.cmake deleted file mode 100755 index 086c592b3..000000000 --- a/Modules/Platform/AIX-VisualAge-Fortran.cmake +++ /dev/null @@ -1 +0,0 @@ -include(Platform/xlf) diff --git a/Modules/Platform/AIX-XL-C.cmake b/Modules/Platform/AIX-XL-C.cmake new file mode 100644 index 000000000..2de30d5b7 --- /dev/null +++ b/Modules/Platform/AIX-XL-C.cmake @@ -0,0 +1,4 @@ +SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-G -Wl,-brtl,-bnoipath") # -shared +SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "-Wl,-brtl,-bnoipath,-bexpall") # +s, flag for exe link to use shared lib +SET(CMAKE_SHARED_LIBRARY_C_FLAGS " ") +SET(CMAKE_SHARED_MODULE_C_FLAGS " ") diff --git a/Modules/Platform/AIX-XL-CXX.cmake b/Modules/Platform/AIX-XL-CXX.cmake new file mode 100644 index 000000000..648cb311b --- /dev/null +++ b/Modules/Platform/AIX-XL-CXX.cmake @@ -0,0 +1,4 @@ +SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-G -Wl,-brtl,-bnoipath") # -shared +SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "-Wl,-brtl,-bnoipath,-bexpall") # +s, flag for exe link to use shared lib +SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS " ") +SET(CMAKE_SHARED_MODULE_CXX_FLAGS " ") diff --git a/Modules/Platform/AIX-XL-Fortran.cmake b/Modules/Platform/AIX-XL-Fortran.cmake new file mode 100644 index 000000000..8292e785d --- /dev/null +++ b/Modules/Platform/AIX-XL-Fortran.cmake @@ -0,0 +1,4 @@ +SET(CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS "-G -Wl,-brtl,-bnoipath") # -shared +SET(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS "-Wl,-brtl,-bnoipath,-bexpall") # +s, flag for exe link to use shared lib +SET(CMAKE_SHARED_LIBRARY_Fortran_FLAGS " ") +SET(CMAKE_SHARED_MODULE_Fortran_FLAGS " ") diff --git a/Modules/Platform/AIX.cmake b/Modules/Platform/AIX.cmake index 455586d4f..c8a33c32f 100644 --- a/Modules/Platform/AIX.cmake +++ b/Modules/Platform/AIX.cmake @@ -18,44 +18,13 @@ SET_PROPERTY(GLOBAL PROPERTY TARGET_ARCHIVES_MAY_BE_SHARED_LIBS 1) # CXX Compiler IF(CMAKE_COMPILER_IS_GNUCXX) SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-shared -Wl,-G") # -shared -ELSE(CMAKE_COMPILER_IS_GNUCXX) - SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-G -Wl,-brtl,-bnoipath") # -shared - SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "-Wl,-brtl,-bnoipath,-bexpall") # +s, flag for exe link to use shared lib - SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS " ") - SET(CMAKE_SHARED_MODULE_CXX_FLAGS " ") - SET (CMAKE_CXX_FLAGS_DEBUG_INIT "-g") - SET (CMAKE_CXX_FLAGS_RELEASE_INIT "-O -DNDEBUG") - SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-O -DNDEBUG") - SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-g") ENDIF(CMAKE_COMPILER_IS_GNUCXX) # C Compiler IF(CMAKE_COMPILER_IS_GNUCC) SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared -Wl,-G") # -shared -ELSE(CMAKE_COMPILER_IS_GNUCC) - SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-G -Wl,-brtl,-bnoipath") # -shared - SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "-Wl,-brtl,-bnoipath,-bexpall") # +s, flag for exe link to use shared lib - SET(CMAKE_SHARED_LIBRARY_C_FLAGS " ") - SET(CMAKE_SHARED_MODULE_C_FLAGS " ") - SET (CMAKE_C_FLAGS_DEBUG_INIT "-g") - SET (CMAKE_C_FLAGS_RELEASE_INIT "-O -DNDEBUG") - SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "-O -DNDEBUG") - SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-g") ENDIF(CMAKE_COMPILER_IS_GNUCC) -IF(NOT CMAKE_COMPILER_IS_GNUCC) - SET (CMAKE_C_CREATE_PREPROCESSED_SOURCE " -E > ") - SET (CMAKE_C_CREATE_ASSEMBLY_SOURCE " -S -o ") -ENDIF(NOT CMAKE_COMPILER_IS_GNUCC) - -IF(NOT CMAKE_COMPILER_IS_GNUCXX) - SET(CMAKE_CXX_COMPILE_OBJECT - " -+ -o -c ") - SET (CMAKE_CXX_CREATE_PREPROCESSED_SOURCE " -E > ") - SET (CMAKE_CXX_CREATE_ASSEMBLY_SOURCE " -S -o ") -ENDIF(NOT CMAKE_COMPILER_IS_GNUCXX) - - # since .a can be a static or shared library on AIX, we can not do this. # at some point if we wanted it, we would have to figure out if a .a is # static or shared, then we could add this back: diff --git a/Modules/Platform/CMakeLists.txt b/Modules/Platform/CMakeLists.txt deleted file mode 100644 index 6d8f4a132..000000000 --- a/Modules/Platform/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -# just install the modules -INSTALL_FILES(${CMAKE_DATA_DIR}/Modules/Platform .*\\.cmake$) -INSTALL_FILES(${CMAKE_DATA_DIR}/Modules/Platform .*\\.in$) diff --git a/Modules/Platform/CYGWIN-g77.cmake b/Modules/Platform/CYGWIN-g77.cmake old mode 100755 new mode 100644 diff --git a/Modules/Platform/CYGWIN.cmake b/Modules/Platform/CYGWIN.cmake index c9170a01c..dd179a4d7 100644 --- a/Modules/Platform/CYGWIN.cmake +++ b/Modules/Platform/CYGWIN.cmake @@ -1,6 +1,7 @@ SET(WIN32 1) SET(CYGWIN 1) +SET(CMAKE_EXE_LINKER_FLAGS_INIT "-Wl,--enable-auto-import") SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared -Wl,--export-all-symbols -Wl,--enable-auto-import") SET(CMAKE_SHARED_MODULE_CREATE_C_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS}) SET(CMAKE_DL_LIBS "-lgdi32" ) diff --git a/Modules/Platform/Darwin-GNU-C.cmake b/Modules/Platform/Darwin-GNU-C.cmake new file mode 100644 index 000000000..100e8b184 --- /dev/null +++ b/Modules/Platform/Darwin-GNU-C.cmake @@ -0,0 +1,2 @@ +include(Platform/Darwin-GNU) +cmake_gnu_has_isysroot(C) diff --git a/Modules/Platform/Darwin-GNU-CXX.cmake b/Modules/Platform/Darwin-GNU-CXX.cmake new file mode 100644 index 000000000..a2c2e16bc --- /dev/null +++ b/Modules/Platform/Darwin-GNU-CXX.cmake @@ -0,0 +1,2 @@ +include(Platform/Darwin-GNU) +cmake_gnu_has_isysroot(CXX) diff --git a/Modules/Platform/Darwin-GNU.cmake b/Modules/Platform/Darwin-GNU.cmake new file mode 100644 index 000000000..8bbad88a2 --- /dev/null +++ b/Modules/Platform/Darwin-GNU.cmake @@ -0,0 +1,18 @@ +macro(cmake_gnu_has_isysroot lang) + if("x${CMAKE_${lang}_HAS_ISYSROOT}" STREQUAL "x") + set(_doc "${lang} compiler has -isysroot") + message(STATUS "Checking whether ${_doc}") + execute_process( + COMMAND ${CMAKE_${lang}_COMPILER} "-v" "--help" + OUTPUT_VARIABLE _gcc_help + ERROR_VARIABLE _gcc_help + ) + if("${_gcc_help}" MATCHES "isysroot") + message(STATUS "Checking whether ${_doc} - yes") + set(CMAKE_${lang}_HAS_ISYSROOT 1) + else() + message(STATUS "Checking whether ${_doc} - no") + set(CMAKE_${lang}_HAS_ISYSROOT 0) + endif() + endif() +endmacro() diff --git a/Modules/Platform/Darwin-VisualAge-C.cmake b/Modules/Platform/Darwin-VisualAge-C.cmake new file mode 100644 index 000000000..859914f86 --- /dev/null +++ b/Modules/Platform/Darwin-VisualAge-C.cmake @@ -0,0 +1 @@ +include(Platform/Darwin-XL-C) diff --git a/Modules/Platform/Darwin-VisualAge-CXX.cmake b/Modules/Platform/Darwin-VisualAge-CXX.cmake new file mode 100644 index 000000000..46c1005df --- /dev/null +++ b/Modules/Platform/Darwin-VisualAge-CXX.cmake @@ -0,0 +1 @@ +include(Platform/Darwin-XL-CXX) diff --git a/Modules/Platform/Darwin-xlc.cmake b/Modules/Platform/Darwin-XL-C.cmake similarity index 76% rename from Modules/Platform/Darwin-xlc.cmake rename to Modules/Platform/Darwin-XL-C.cmake index f7e4da339..934ebcc8c 100644 --- a/Modules/Platform/Darwin-xlc.cmake +++ b/Modules/Platform/Darwin-XL-C.cmake @@ -3,4 +3,3 @@ SET(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle") # Enable shared library versioning. SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-install_name") -SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-Wl,-install_name") diff --git a/Modules/Platform/Darwin-XL-CXX.cmake b/Modules/Platform/Darwin-XL-CXX.cmake new file mode 100644 index 000000000..22ae0183a --- /dev/null +++ b/Modules/Platform/Darwin-XL-CXX.cmake @@ -0,0 +1,5 @@ +SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-qmkshrobj") +SET(CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS "-bundle") + +# Enable shared library versioning. +SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-Wl,-install_name") diff --git a/Modules/Platform/Darwin.cmake b/Modules/Platform/Darwin.cmake index 00d0c96dc..825f21861 100644 --- a/Modules/Platform/Darwin.cmake +++ b/Modules/Platform/Darwin.cmake @@ -54,39 +54,112 @@ SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib" ".so" ".a") IF(NOT DEFINED CMAKE_INSTALL_NAME_TOOL) FIND_PROGRAM(CMAKE_INSTALL_NAME_TOOL install_name_tool) ENDIF(NOT DEFINED CMAKE_INSTALL_NAME_TOOL) -# find installed SDKs -FILE(GLOB _CMAKE_OSX_SDKS "/Developer/SDKs/*") -# setup for universal binaries if sysroot exists -IF(_CMAKE_OSX_SDKS) - # find the most recent sdk for the default - LIST(SORT _CMAKE_OSX_SDKS) - LIST(REVERSE _CMAKE_OSX_SDKS) - LIST(GET _CMAKE_OSX_SDKS 0 _CMAKE_OSX_SDKS) - SET(CMAKE_OSX_SYSROOT_DEFAULT "${_CMAKE_OSX_SDKS}") - # use the environment variable CMAKE_OSX_SYSROOT if it is set - IF(NOT "$ENV{CMAKE_OSX_SYSROOT}" STREQUAL "") - SET(_CMAKE_OSX_SDKS "$ENV{CMAKE_OSX_SYSROOT}") - ENDIF(NOT "$ENV{CMAKE_OSX_SYSROOT}" STREQUAL "") - SET(CMAKE_OSX_SYSROOT ${_CMAKE_OSX_SDKS} CACHE PATH - "isysroot used for universal binary support") - # set _CMAKE_OSX_MACHINE to umame -m - EXEC_PROGRAM(uname ARGS -m OUTPUT_VARIABLE _CMAKE_OSX_MACHINE) - # check for Power PC and change to ppc - IF("${_CMAKE_OSX_MACHINE}" MATCHES "Power") - SET(_CMAKE_OSX_MACHINE ppc) - ENDIF("${_CMAKE_OSX_MACHINE}" MATCHES "Power") - # set the default based on uname and not the environment variable - # as that is what is used to change it! - SET(CMAKE_OSX_ARCHITECTURES_DEFAULT ${_CMAKE_OSX_MACHINE}) - # check for environment variable CMAKE_OSX_ARCHITECTURES - # if it is set. - IF(NOT "$ENV{CMAKE_OSX_ARCHITECTURES}" STREQUAL "") - SET(_CMAKE_OSX_MACHINE "$ENV{CMAKE_OSX_ARCHITECTURES}") - ENDIF(NOT "$ENV{CMAKE_OSX_ARCHITECTURES}" STREQUAL "") - # now put _CMAKE_OSX_MACHINE into the cache - SET(CMAKE_OSX_ARCHITECTURES ${_CMAKE_OSX_MACHINE} - CACHE STRING "Build architectures for OSX") -ENDIF(_CMAKE_OSX_SDKS) + +# Set the assumed (Pre 10.5 or Default) location of the developer tools +SET(OSX_DEVELOPER_ROOT "/Developer") + +# Find installed SDKs +FILE(GLOB _CMAKE_OSX_SDKS "${OSX_DEVELOPER_ROOT}/SDKs/*") + +# If nothing is found there, then try locating the dev tools based on the xcode-select tool +# (available in Xcode >= 3.0 installations) +IF(NOT _CMAKE_OSX_SDKS) + FIND_PROGRAM(CMAKE_XCODE_SELECT xcode-select) + IF(CMAKE_XCODE_SELECT) + EXECUTE_PROCESS(COMMAND ${CMAKE_XCODE_SELECT} "-print-path" + OUTPUT_VARIABLE OSX_DEVELOPER_ROOT) + FILE(GLOB _CMAKE_OSX_SDKS "${OSX_DEVELOPER_ROOT}/SDKs/*") + ENDIF(CMAKE_XCODE_SELECT) +ENDIF(NOT _CMAKE_OSX_SDKS) + +# Set CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT to the current version of OS X +EXECUTE_PROCESS(COMMAND sw_vers -productVersion OUTPUT_VARIABLE CURRENT_OSX_VERSION) +STRING(REGEX REPLACE "^.*(10)\\.([0-9]+)\\.*([0-9]+)*.*$" "\\1.\\2" + CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT ${CURRENT_OSX_VERSION}) + +# Set CMAKE_OSX_SYSROOT_DEFAULT based on CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT. +# This next block assumes that Apple will start being consistent with +# its SDK names from here on out... +IF(CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT GREATER "10.4") + SET(CMAKE_OSX_SYSROOT_DEFAULT + "${OSX_DEVELOPER_ROOT}/SDKs/MacOSX${CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT}.sdk") +ENDIF(CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT GREATER "10.4") + +IF(CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT EQUAL "10.4") + SET(CMAKE_OSX_SYSROOT_DEFAULT + "${OSX_DEVELOPER_ROOT}/SDKs/MacOSX10.4u.sdk") +ENDIF(CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT EQUAL "10.4") + +IF(CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT EQUAL "10.3") + SET(CMAKE_OSX_SYSROOT_DEFAULT + "${OSX_DEVELOPER_ROOT}/SDKs/MacOSX10.3.9.sdk") +ENDIF(CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT EQUAL "10.3") + +# Allow environment variables set by the user to override our defaults. +# Use the same environment variables that Xcode uses. +SET(ENV_MACOSX_DEPLOYMENT_TARGET "$ENV{MACOSX_DEPLOYMENT_TARGET}") +SET(ENV_SDKROOT "$ENV{SDKROOT}") + +# See if we need to override the default SDK or Deployment target with the +# environment variables +IF(NOT ENV_MACOSX_DEPLOYMENT_TARGET STREQUAL "") + SET(CMAKE_OSX_DEPLOYMENT_TARGET_VALUE ${ENV_MACOSX_DEPLOYMENT_TARGET}) +ELSE(NOT ENV_MACOSX_DEPLOYMENT_TARGET STREQUAL "") + SET(CMAKE_OSX_DEPLOYMENT_TARGET_VALUE ${CMAKE_OSX_DEPLOYMENT_TARGET_DEFAULT}) +ENDIF(NOT ENV_MACOSX_DEPLOYMENT_TARGET STREQUAL "") + +IF(NOT ENV_SDKROOT STREQUAL "") + SET(CMAKE_OSX_SYSROOT_VALUE ${ENV_SDKROOT}) +ELSE(NOT ENV_SDKROOT STREQUAL "") + SET(CMAKE_OSX_SYSROOT_VALUE ${CMAKE_OSX_SYSROOT_DEFAULT}) +ENDIF(NOT ENV_SDKROOT STREQUAL "") + +# Set cache variables - end user may change these during ccmake or cmake-gui configure. +IF(CURRENT_OSX_VERSION GREATER 10.3) + SET(CMAKE_OSX_DEPLOYMENT_TARGET ${CMAKE_OSX_DEPLOYMENT_TARGET_VALUE} CACHE STRING + "Minimum OS X version to target for deployment (at runtime); newer APIs weak linked. Set to empty string for default value.") +ENDIF(CURRENT_OSX_VERSION GREATER 10.3) + +SET(CMAKE_OSX_SYSROOT ${CMAKE_OSX_SYSROOT_VALUE} CACHE PATH + "The product will be built against the headers and libraries located inside the indicated SDK.") + +#---------------------------------------------------------------------------- +function(SanityCheckSDKAndDeployTarget _sdk_path _deploy) + if (_deploy STREQUAL "") + return() + endif() + + string (REGEX REPLACE "(.*MacOSX*)(....)(.*\\.sdk)" "\\2" SDK ${_sdk_path}) + if (_deploy GREATER SDK) + message (FATAL_ERROR "CMAKE_OSX_DEPLOYMENT_TARGET (${_deploy}) is greater than CMAKE_OSX_SYSROOT SDK (${_sdk_path}). Please set CMAKE_OSX_DEPLOYMENT_TARGET to ${SDK}") + endif (_deploy GREATER SDK) +endfunction(SanityCheckSDKAndDeployTarget _sdk_path _deploy) +#---------------------------------------------------------------------------- + +# Make sure the combination of SDK and Deployment Target are allowed +SanityCheckSDKAndDeployTarget("${CMAKE_OSX_SYSROOT}" "${CMAKE_OSX_DEPLOYMENT_TARGET}") + +# set _CMAKE_OSX_MACHINE to uname -m +EXECUTE_PROCESS(COMMAND uname -m + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE _CMAKE_OSX_MACHINE) + +# check for Power PC and change to ppc +IF(_CMAKE_OSX_MACHINE MATCHES "Power") + SET(_CMAKE_OSX_MACHINE ppc) +ENDIF(_CMAKE_OSX_MACHINE MATCHES "Power") + +# check for environment variable CMAKE_OSX_ARCHITECTURES +# if it is set. +IF(NOT "$ENV{CMAKE_OSX_ARCHITECTURES}" STREQUAL "") + SET(CMAKE_OSX_ARCHITECTURES_VALUE "$ENV{CMAKE_OSX_ARCHITECTURES}") +ELSE(NOT "$ENV{CMAKE_OSX_ARCHITECTURES}" STREQUAL "") + SET(CMAKE_OSX_ARCHITECTURES_VALUE "") +ENDIF(NOT "$ENV{CMAKE_OSX_ARCHITECTURES}" STREQUAL "") + +# now put _CMAKE_OSX_MACHINE into the cache +SET(CMAKE_OSX_ARCHITECTURES ${CMAKE_OSX_ARCHITECTURES_VALUE} CACHE STRING + "Build architectures for OSX") IF("${CMAKE_BACKWARDS_COMPATIBILITY}" MATCHES "^1\\.[0-6]$") diff --git a/Modules/Platform/Generic.cmake b/Modules/Platform/Generic.cmake old mode 100755 new mode 100644 diff --git a/Modules/Platform/HP-UX.cmake b/Modules/Platform/HP-UX.cmake index 381ef395d..9584cbdbe 100644 --- a/Modules/Platform/HP-UX.cmake +++ b/Modules/Platform/HP-UX.cmake @@ -1,6 +1,7 @@ SET(CMAKE_SHARED_LIBRARY_SUFFIX ".sl") # .so SET(CMAKE_DL_LIBS "dld") SET(CMAKE_FIND_LIBRARY_SUFFIXES ".sl" ".so" ".a") +SET(CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES ".so") # The HP linker needs to find transitive shared library dependencies # in the -L path. Therefore the runtime path must be added to the @@ -89,6 +90,18 @@ ENDIF(CMAKE_COMPILER_IS_GNUCXX) # set flags for gcc support INCLUDE(Platform/UnixPaths) +# Look in both 32-bit and 64-bit implict link directories, but tell +# CMake not to pass the paths to the linker. The linker will find the +# library for the proper architecture. In the future we should detect +# which path will be used by the linker. Since the pointer type size +# CMAKE_SIZEOF_VOID_P is not set until after this file executes, we +# would need to append to CMAKE_SYSTEM_LIBRARY_PATH at a later point +# (after CMakeTest(LANG)Compiler.cmake runs for at least one language). +LIST(APPEND CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/hpux32) +LIST(APPEND CMAKE_SYSTEM_LIBRARY_PATH /usr/lib/hpux64) +LIST(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES + /usr/lib/hpux32 /usr/lib/hpux64) + IF(NOT CMAKE_COMPILER_IS_GNUCC) SET (CMAKE_C_CREATE_PREPROCESSED_SOURCE " -E > ") SET (CMAKE_C_CREATE_ASSEMBLY_SOURCE " -S -o ") diff --git a/Modules/Platform/Haiku.cmake b/Modules/Platform/Haiku.cmake old mode 100755 new mode 100644 index 84ded8086..6676f24b7 --- a/Modules/Platform/Haiku.cmake +++ b/Modules/Platform/Haiku.cmake @@ -19,3 +19,8 @@ LIST(APPEND CMAKE_SYSTEM_PROGRAM_PATH /boot/common/bin) LIST(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES /boot/common/lib) LIST(APPEND CMAKE_SYSTEM_INCLUDE_PATH /boot/develop/headers/3rdparty) LIST(APPEND CMAKE_SYSTEM_LIBRARY_PATH /boot/develop/lib/x86) + +IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + SET(CMAKE_INSTALL_PREFIX "/boot/common" CACHE PATH + "Install path prefix, prepended onto install directories." FORCE) +ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) diff --git a/Modules/Platform/Linux-Intel-C.cmake b/Modules/Platform/Linux-Intel-C.cmake old mode 100755 new mode 100644 index 4b8f6ad75..554945edf --- a/Modules/Platform/Linux-Intel-C.cmake +++ b/Modules/Platform/Linux-Intel-C.cmake @@ -1,16 +1,6 @@ -SET (CMAKE_C_FLAGS_INIT "") -SET (CMAKE_C_FLAGS_DEBUG_INIT "-g") -SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG") -SET (CMAKE_C_FLAGS_RELEASE_INIT "-O3 -DNDEBUG") -SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g") - -SET (CMAKE_C_CREATE_PREPROCESSED_SOURCE " -E > ") -SET (CMAKE_C_CREATE_ASSEMBLY_SOURCE " -S -o ") - -FIND_PROGRAM(XIAR xiar) +INCLUDE(Platform/Linux-Intel) IF(XIAR) SET(CMAKE_C_CREATE_STATIC_LIBRARY - "${XIAR} cr " - "${XIAR} -s ") + "${XIAR} cr " + "${XIAR} -s ") ENDIF(XIAR) -MARK_AS_ADVANCED(XIAR) diff --git a/Modules/Platform/Linux-Intel-CXX.cmake b/Modules/Platform/Linux-Intel-CXX.cmake old mode 100755 new mode 100644 index 6ce7f4632..faa19e3e0 --- a/Modules/Platform/Linux-Intel-CXX.cmake +++ b/Modules/Platform/Linux-Intel-CXX.cmake @@ -1,16 +1,6 @@ -SET (CMAKE_CXX_FLAGS_INIT "") -SET (CMAKE_CXX_FLAGS_DEBUG_INIT "-g") -SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG") -SET (CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -DNDEBUG") -SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g") - -SET (CMAKE_CXX_CREATE_PREPROCESSED_SOURCE " -E > ") -SET (CMAKE_CXX_CREATE_ASSEMBLY_SOURCE " -S -o ") - -FIND_PROGRAM(XIAR xiar) -IF(XIAR) - SET(CMAKE_CXX_CREATE_STATIC_LIBRARY - "${XIAR} cr " - "${XIAR} -s ") +INCLUDE(Platform/Linux-Intel) +IF(XIAR) + SET(CMAKE_CXX_CREATE_STATIC_LIBRARY + "${XIAR} cr " + "${XIAR} -s ") ENDIF(XIAR) -MARK_AS_ADVANCED(XIAR) diff --git a/Modules/Platform/Linux-Intel-Fortran.cmake b/Modules/Platform/Linux-Intel-Fortran.cmake old mode 100755 new mode 100644 index 06de82b24..1db5ba645 --- a/Modules/Platform/Linux-Intel-Fortran.cmake +++ b/Modules/Platform/Linux-Intel-Fortran.cmake @@ -1,14 +1,14 @@ -SET(CMAKE_DL_LIBS "dl") +INCLUDE(Platform/Linux-Intel) +IF(XIAR) + SET(CMAKE_Fortran_CREATE_STATIC_LIBRARY + "${XIAR} cr " + "${XIAR} -s ") +ENDIF(XIAR) + SET(CMAKE_SHARED_LIBRARY_Fortran_FLAGS "-fPIC") SET(CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS "-shared") SET(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS "-i_dynamic") SET(CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG "-Wl,-rpath,") SET(CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG_SEP ":") SET(CMAKE_SHARED_LIBRARY_SONAME_Fortran_FLAG "-Wl,-soname,") -SET(CMAKE_Fortran_MODDIR_FLAG "-module ") - -SET (CMAKE_Fortran_FLAGS_INIT "") -SET (CMAKE_Fortran_FLAGS_DEBUG_INIT "-g") -SET (CMAKE_Fortran_FLAGS_MINSIZEREL_INIT "-Os") -SET (CMAKE_Fortran_FLAGS_RELEASE_INIT "-O3") -SET (CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT "-O2 -g") +SET(CMAKE_DL_LIBS "dl") diff --git a/Modules/Platform/Linux-Intel.cmake b/Modules/Platform/Linux-Intel.cmake new file mode 100644 index 000000000..030f2c090 --- /dev/null +++ b/Modules/Platform/Linux-Intel.cmake @@ -0,0 +1,11 @@ +if(NOT XIAR) + set(_intel_xair_hints) + foreach(lang C CXX Fortran) + if(IS_ABSOLUTE "${CMAKE_${lang}_COMPILER}") + get_filename_component(_hint "${CMAKE_${lang}_COMPILER}" PATH) + list(APPEND _intel_xair_hints ${_hint}) + endif() + endforeach() + find_program(XIAR NAMES xiar HINTS ${_intel_xair_hints}) + mark_as_advanced(XIAR) +endif(NOT XIAR) diff --git a/Modules/Platform/Linux-SunPro-C.cmake b/Modules/Platform/Linux-SunPro-C.cmake index 529dfbabd..74aedd0fc 100644 --- a/Modules/Platform/Linux-SunPro-C.cmake +++ b/Modules/Platform/Linux-SunPro-C.cmake @@ -1,24 +1,3 @@ # Linux sun studio c options SET(CMAKE_DL_LIBS "dl") -SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-KPIC") -SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-G") -SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") -SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-R") -SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":") -SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-h") SET(CMAKE_EXE_EXPORTS_C_FLAG "-Wl,--export-dynamic") - -SET(CMAKE_C_FLAGS_INIT "") -SET(CMAKE_C_FLAGS_DEBUG_INIT "-g") -SET(CMAKE_C_FLAGS_MINSIZEREL_INIT "-xO2 -xspace -DNDEBUG") -SET(CMAKE_C_FLAGS_RELEASE_INIT "-xO3 -DNDEBUG") -SET(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-g -xO2") - -# Initialize C link type selection flags. These flags are used when -# building a shared library, shared module, or executable that links -# to other libraries to select whether to use the static or shared -# versions of the libraries. -FOREACH(type SHARED_LIBRARY SHARED_MODULE EXE) - SET(CMAKE_${type}_LINK_STATIC_C_FLAGS "-Bstatic") - SET(CMAKE_${type}_LINK_DYNAMIC_C_FLAGS "-Bdynamic") -ENDFOREACH(type) diff --git a/Modules/Platform/Linux-SunPro-CXX.cmake b/Modules/Platform/Linux-SunPro-CXX.cmake index ddc10bd3c..6d9d8a572 100644 --- a/Modules/Platform/Linux-SunPro-CXX.cmake +++ b/Modules/Platform/Linux-SunPro-CXX.cmake @@ -1,24 +1,4 @@ # Linux sun studio c++ options SET(CMAKE_DL_LIBS "dl") -SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-KPIC") -SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-G") -SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") -SET(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG "-R") -SET(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP ":") -SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-h") +SET(CMAKE_SHARED_LIBRARY_RPATH_LINK_CXX_FLAG "-rpath-link ") SET(CMAKE_EXE_EXPORTS_CXX_FLAG "--export-dynamic") - -SET(CMAKE_CXX_FLAGS_INIT "") -SET(CMAKE_CXX_FLAGS_DEBUG_INIT "-g") -SET(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-xO2 -xspace -DNDEBUG") -SET(CMAKE_CXX_FLAGS_RELEASE_INIT "-xO3 -DNDEBUG") -SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-g -xO2") - -# Initialize C link type selection flags. These flags are used when -# building a shared library, shared module, or executable that links -# to other libraries to select whether to use the static or shared -# versions of the libraries. -FOREACH(type SHARED_LIBRARY SHARED_MODULE EXE) - SET(CMAKE_${type}_LINK_STATIC_CXX_FLAGS "-Bstatic") - SET(CMAKE_${type}_LINK_DYNAMIC_CXX_FLAGS "-Bdynamic") -ENDFOREACH(type) diff --git a/Modules/Platform/Linux-SunPro-Fortran.cmake b/Modules/Platform/Linux-SunPro-Fortran.cmake index 699483926..2355aad73 100644 --- a/Modules/Platform/Linux-SunPro-Fortran.cmake +++ b/Modules/Platform/Linux-SunPro-Fortran.cmake @@ -1,16 +1,2 @@ # Linux sun studio fortran options SET(CMAKE_DL_LIBS "dl") -SET(CMAKE_SHARED_LIBRARY_Fortran_FLAGS "-KPIC") -SET(CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS "-G") -SET(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS "") -SET(CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG "-R") -SET(CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG_SEP ":") -SET(CMAKE_SHARED_LIBRARY_SONAME_Fortran_FLAG "-h") - -SET(CMAKE_Fortran_FLAGS_INIT "") -SET(CMAKE_Fortran_FLAGS_DEBUG_INIT "-g") -SET(CMAKE_Fortran_FLAGS_MINSIZEREL_INIT "-xO2 -xspace -DNDEBUG") -SET(CMAKE_Fortran_FLAGS_RELEASE_INIT "-xO3 -DNDEBUG") -SET(CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT "-g -xO2") -SET(CMAKE_Fortran_MODDIR_FLAG "-moddir=") -SET(CMAKE_Fortran_MODPATH_FLAG "-M") diff --git a/Modules/Platform/Linux-VisualAge-C.cmake b/Modules/Platform/Linux-VisualAge-C.cmake index 295226bbe..0622b63c3 100644 --- a/Modules/Platform/Linux-VisualAge-C.cmake +++ b/Modules/Platform/Linux-VisualAge-C.cmake @@ -1,2 +1 @@ -SET(CMAKE_SHARED_LIBRARY_C_FLAGS "") -SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") +include(Platform/Linux-XL-C) diff --git a/Modules/Platform/Linux-VisualAge-CXX.cmake b/Modules/Platform/Linux-VisualAge-CXX.cmake new file mode 100644 index 000000000..b878ba02c --- /dev/null +++ b/Modules/Platform/Linux-VisualAge-CXX.cmake @@ -0,0 +1 @@ +include(Platform/Linux-XL-CXX) diff --git a/Modules/Platform/Linux-VisualAge-Fortran.cmake b/Modules/Platform/Linux-VisualAge-Fortran.cmake index f6fcc1f0e..1939a8a2f 100644 --- a/Modules/Platform/Linux-VisualAge-Fortran.cmake +++ b/Modules/Platform/Linux-VisualAge-Fortran.cmake @@ -1,3 +1 @@ -SET(CMAKE_SHARED_LIBRARY_C_FLAGS "") -SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") -include(Platform/xlf) +include(Platform/Linux-XL-Fortran) diff --git a/Modules/Platform/Linux-XL-C.cmake b/Modules/Platform/Linux-XL-C.cmake new file mode 100644 index 000000000..efcdf87a1 --- /dev/null +++ b/Modules/Platform/Linux-XL-C.cmake @@ -0,0 +1,3 @@ +SET(CMAKE_SHARED_LIBRARY_C_FLAGS "") +SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") +SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-qmkshrobj") diff --git a/Modules/Platform/Linux-XL-CXX.cmake b/Modules/Platform/Linux-XL-CXX.cmake new file mode 100644 index 000000000..b1b6d8599 --- /dev/null +++ b/Modules/Platform/Linux-XL-CXX.cmake @@ -0,0 +1,5 @@ +SET(CMAKE_SHARED_LIBRARY_C_FLAGS "") +SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") +SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS "") +SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") +SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-qmkshrobj") diff --git a/Modules/Platform/Linux-XL-Fortran.cmake b/Modules/Platform/Linux-XL-Fortran.cmake new file mode 100644 index 000000000..3ebb89d87 --- /dev/null +++ b/Modules/Platform/Linux-XL-Fortran.cmake @@ -0,0 +1,3 @@ +SET(CMAKE_SHARED_LIBRARY_C_FLAGS "") +SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") +SET(CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS "-qmkshrobj") diff --git a/Modules/Platform/Linux-icpc.cmake b/Modules/Platform/Linux-icpc.cmake deleted file mode 100755 index 2d1d879dd..000000000 --- a/Modules/Platform/Linux-icpc.cmake +++ /dev/null @@ -1,23 +0,0 @@ -SET (CMAKE_C_FLAGS_INIT "") -SET (CMAKE_C_FLAGS_DEBUG_INIT "-g") -SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG") -SET (CMAKE_C_FLAGS_RELEASE_INIT "-O3 -DNDEBUG") -SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g") - -SET (CMAKE_CXX_FLAGS_INIT "") -SET (CMAKE_CXX_FLAGS_DEBUG_INIT "-g") -SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG") -SET (CMAKE_CXX_FLAGS_RELEASE_INIT "-O3 -DNDEBUG") -SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g") - -FIND_PROGRAM(XIAR xiar) -IF(XIAR) - SET(CMAKE_CXX_CREATE_STATIC_LIBRARY - "${XIAR} cr " - "${XIAR} -s ") - SET(CMAKE_C_CREATE_STATIC_LIBRARY - "${XIAR} cr " - "${XIAR} -s ") -ENDIF(XIAR) -MARK_AS_ADVANCED(XIAR) - diff --git a/Modules/Platform/Linux-ifort.cmake b/Modules/Platform/Linux-ifort.cmake deleted file mode 100755 index 06de82b24..000000000 --- a/Modules/Platform/Linux-ifort.cmake +++ /dev/null @@ -1,14 +0,0 @@ -SET(CMAKE_DL_LIBS "dl") -SET(CMAKE_SHARED_LIBRARY_Fortran_FLAGS "-fPIC") -SET(CMAKE_SHARED_LIBRARY_CREATE_Fortran_FLAGS "-shared") -SET(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS "-i_dynamic") -SET(CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG "-Wl,-rpath,") -SET(CMAKE_SHARED_LIBRARY_RUNTIME_Fortran_FLAG_SEP ":") -SET(CMAKE_SHARED_LIBRARY_SONAME_Fortran_FLAG "-Wl,-soname,") -SET(CMAKE_Fortran_MODDIR_FLAG "-module ") - -SET (CMAKE_Fortran_FLAGS_INIT "") -SET (CMAKE_Fortran_FLAGS_DEBUG_INIT "-g") -SET (CMAKE_Fortran_FLAGS_MINSIZEREL_INIT "-Os") -SET (CMAKE_Fortran_FLAGS_RELEASE_INIT "-O3") -SET (CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT "-O2 -g") diff --git a/Modules/Platform/OpenBSD.cmake b/Modules/Platform/OpenBSD.cmake index 422227be2..e7df46d97 100644 --- a/Modules/Platform/OpenBSD.cmake +++ b/Modules/Platform/OpenBSD.cmake @@ -1,3 +1,2 @@ -SET(CMAKE_DL_LIBS "") +INCLUDE(Platform/NetBSD) SET_PROPERTY(GLOBAL PROPERTY FIND_LIBRARY_USE_OPENBSD_VERSIONING 1) -INCLUDE(Platform/UnixPaths) diff --git a/Modules/Platform/OpenVMS.cmake b/Modules/Platform/OpenVMS.cmake new file mode 100644 index 000000000..c52effab6 --- /dev/null +++ b/Modules/Platform/OpenVMS.cmake @@ -0,0 +1,8 @@ +INCLUDE(Platform/UnixPaths) + +SET(CMAKE_C_CREATE_STATIC_LIBRARY + " cr " + " " + ) +SET(CMAKE_CXX_CREATE_STATIC_LIBRARY ${CMAKE_C_CREATE_STATIC_LIBRARY}) +SET(CMAKE_EXECUTABLE_SUFFIX ".exe") # .exe diff --git a/Modules/Platform/SunOS-SunPro-Fortran.cmake b/Modules/Platform/SunOS-SunPro-Fortran.cmake deleted file mode 100644 index 1006bf28e..000000000 --- a/Modules/Platform/SunOS-SunPro-Fortran.cmake +++ /dev/null @@ -1,5 +0,0 @@ -set(CMAKE_Fortran_MODDIR_FLAG "-moddir=") -set(CMAKE_Fortran_MODPATH_FLAG "-M") -set(CMAKE_EXECUTABLE_RUNTIME_Fortran_FLAG "-R") -set(CMAKE_SHARED_LIBRARY_Fortran_FLAGS "-KPIC") - diff --git a/Modules/Platform/SunOS.cmake b/Modules/Platform/SunOS.cmake index cccd0d4ba..7d25577ca 100644 --- a/Modules/Platform/SunOS.cmake +++ b/Modules/Platform/SunOS.cmake @@ -3,33 +3,15 @@ IF(CMAKE_SYSTEM MATCHES "SunOS-4.*") SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared -Wl,-r") SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-R") SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":") - SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-h") - SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-h") ENDIF(CMAKE_SYSTEM MATCHES "SunOS-4.*") IF(CMAKE_SYSTEM MATCHES "SunOS-5.*") - SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-KPIC") - SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-G") - SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-R") - SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":") - SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-h") - SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-h") - SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-KPIC") - SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-G") - SET(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG "-R") - SET(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP ":") IF(CMAKE_COMPILER_IS_GNUCC) SET(CMAKE_SHARED_LIBRARY_C_FLAGS "-fPIC") SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-shared") SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-R") SET(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":") SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-h") - ELSE(CMAKE_COMPILER_IS_GNUCC) - SET (CMAKE_C_FLAGS_INIT "") - SET (CMAKE_C_FLAGS_DEBUG_INIT "-g") - SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "-xO3 -DNDEBUG") - SET (CMAKE_C_FLAGS_RELEASE_INIT "-xO2 -DNDEBUG") - SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-xO2") ENDIF(CMAKE_COMPILER_IS_GNUCC) IF(CMAKE_COMPILER_IS_GNUCXX) SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-fPIC") @@ -37,12 +19,6 @@ IF(CMAKE_SYSTEM MATCHES "SunOS-5.*") SET(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG "-Wl,-R") SET(CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP ":") SET(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-Wl,-h") - ELSE(CMAKE_COMPILER_IS_GNUCXX) - SET (CMAKE_CXX_FLAGS_INIT "") - SET (CMAKE_CXX_FLAGS_DEBUG_INIT "-g") - SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-xO3 -DNDEBUG") - SET (CMAKE_CXX_FLAGS_RELEASE_INIT "-xO2 -DNDEBUG") - SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-xO2") ENDIF(CMAKE_COMPILER_IS_GNUCXX) ENDIF(CMAKE_SYSTEM MATCHES "SunOS-5.*") @@ -53,12 +29,6 @@ IF(CMAKE_COMPILER_IS_GNUCXX) ELSE(CMAKE_COMPILER_IS_GNUCC) # Take default rule from CMakeDefaultMakeRuleVariables.cmake. ENDIF(CMAKE_COMPILER_IS_GNUCC) -ELSE(CMAKE_COMPILER_IS_GNUCXX) - IF(CMAKE_CXX_COMPILER) - SET(CMAKE_CXX_CREATE_STATIC_LIBRARY - " -xar -o " - " ") - ENDIF(CMAKE_CXX_COMPILER) ENDIF(CMAKE_COMPILER_IS_GNUCXX) INCLUDE(Platform/UnixPaths) @@ -68,16 +38,6 @@ IF("${CMAKE_C_COMPILER_ID} ${CMAKE_CXX_COMPILER_ID}" MATCHES SunPro) /opt/SUNWspro/lib /opt/SUNWspro/prod/lib /usr/ccs/lib) ENDIF("${CMAKE_C_COMPILER_ID} ${CMAKE_CXX_COMPILER_ID}" MATCHES SunPro) -IF(NOT CMAKE_COMPILER_IS_GNUCC) - SET (CMAKE_C_CREATE_PREPROCESSED_SOURCE " -E > ") - SET (CMAKE_C_CREATE_ASSEMBLY_SOURCE " -S -o ") -ENDIF(NOT CMAKE_COMPILER_IS_GNUCC) - -IF(NOT CMAKE_COMPILER_IS_GNUCXX) - SET (CMAKE_CXX_CREATE_PREPROCESSED_SOURCE " -E > ") - SET (CMAKE_CXX_CREATE_ASSEMBLY_SOURCE " -S -o ") -ENDIF(NOT CMAKE_COMPILER_IS_GNUCXX) - # Initialize C link type selection flags. These flags are used when # building a shared library, shared module, or executable that links # to other libraries to select whether to use the static or shared @@ -87,22 +47,12 @@ IF(CMAKE_COMPILER_IS_GNUCC) SET(CMAKE_${type}_LINK_STATIC_C_FLAGS "-Wl,-Bstatic") SET(CMAKE_${type}_LINK_DYNAMIC_C_FLAGS "-Wl,-Bdynamic") ENDFOREACH(type) -ELSE(CMAKE_COMPILER_IS_GNUCC) - FOREACH(type SHARED_LIBRARY SHARED_MODULE EXE) - SET(CMAKE_${type}_LINK_STATIC_C_FLAGS "-Bstatic") - SET(CMAKE_${type}_LINK_DYNAMIC_C_FLAGS "-Bdynamic") - ENDFOREACH(type) ENDIF(CMAKE_COMPILER_IS_GNUCC) IF(CMAKE_COMPILER_IS_GNUCXX) FOREACH(type SHARED_LIBRARY SHARED_MODULE EXE) SET(CMAKE_${type}_LINK_STATIC_CXX_FLAGS "-Wl,-Bstatic") SET(CMAKE_${type}_LINK_DYNAMIC_CXX_FLAGS "-Wl,-Bdynamic") ENDFOREACH(type) -ELSE(CMAKE_COMPILER_IS_GNUCXX) - FOREACH(type SHARED_LIBRARY SHARED_MODULE EXE) - SET(CMAKE_${type}_LINK_STATIC_CXX_FLAGS "-Bstatic") - SET(CMAKE_${type}_LINK_DYNAMIC_CXX_FLAGS "-Bdynamic") - ENDFOREACH(type) ENDIF(CMAKE_COMPILER_IS_GNUCXX) # The Sun linker needs to find transitive shared library dependencies diff --git a/Modules/Platform/UnixPaths.cmake b/Modules/Platform/UnixPaths.cmake old mode 100755 new mode 100644 diff --git a/Modules/Platform/Windows-Intel.cmake b/Modules/Platform/Windows-Intel.cmake new file mode 100755 index 000000000..e89392582 --- /dev/null +++ b/Modules/Platform/Windows-Intel.cmake @@ -0,0 +1,17 @@ +INCLUDE("${CMAKE_PLATFORM_ROOT_BIN}/CMakeIntelInformation.cmake" OPTIONAL) + +IF(NOT _INTEL_XILINK_TEST_RUN) + EXECUTE_PROCESS(COMMAND xilink /? + ERROR_VARIABLE _XILINK_ERR + OUTPUT_VARIABLE _XILINK_HELP) + IF(_XILINK_HELP MATCHES MANIFEST) + SET(_INTEL_COMPILER_SUPPORTS_MANIFEST 1) + ENDIF(_XILINK_HELP MATCHES MANIFEST) + IF(NOT EXISTS "${CMAKE_PLATFORM_ROOT_BIN}/CMakeIntelInformation.cmake") + FILE(WRITE ${CMAKE_PLATFORM_ROOT_BIN}/CMakeIntelInformation.cmake + " +SET(_INTEL_XILINK_TEST_RUN 1) +SET(_INTEL_COMPILER_SUPPORTS_MANIFEST ${_INTEL_COMPILER_SUPPORTS_MANIFEST}) +") + ENDIF(NOT EXISTS "${CMAKE_PLATFORM_ROOT_BIN}/CMakeIntelInformation.cmake") +ENDIF(NOT _INTEL_XILINK_TEST_RUN) diff --git a/Modules/Platform/Windows-NMcl.cmake b/Modules/Platform/Windows-NMcl.cmake new file mode 100644 index 000000000..7add0b060 --- /dev/null +++ b/Modules/Platform/Windows-NMcl.cmake @@ -0,0 +1,4 @@ +# this is for the numega compiler which is really a front +# end for visual studio, but adds memory checking code. + +include(Platform/Windows-cl) diff --git a/Modules/Platform/Windows-bcc32.cmake b/Modules/Platform/Windows-bcc32.cmake index 4d01cc11c..a2035c284 100644 --- a/Modules/Platform/Windows-bcc32.cmake +++ b/Modules/Platform/Windows-bcc32.cmake @@ -57,7 +57,7 @@ SET(CMAKE_C_CREATE_SHARED_LIBRARY ${CMAKE_C_CREATE_IMPORT_LIBRARY}) # create a C++ static library -SET(CMAKE_CXX_CREATE_STATIC_LIBRARY "tlib ${CMAKE_START_TEMP_FILE}/p512 /a ${CMAKE_END_TEMP_FILE}") +SET(CMAKE_CXX_CREATE_STATIC_LIBRARY "tlib ${CMAKE_START_TEMP_FILE}/p512 /a ${CMAKE_END_TEMP_FILE}") # create a C static library SET(CMAKE_C_CREATE_STATIC_LIBRARY ${CMAKE_CXX_CREATE_STATIC_LIBRARY}) diff --git a/Modules/Platform/Windows-cl.cmake b/Modules/Platform/Windows-cl.cmake index 562b2b02d..303ef3472 100644 --- a/Modules/Platform/Windows-cl.cmake +++ b/Modules/Platform/Windows-cl.cmake @@ -103,6 +103,9 @@ IF(CMAKE_GENERATOR MATCHES "Makefiles") SET(MSVC90 1) SET(MSVC80 0) ENDIF("${compilerVersion}" GREATER 1500) + IF("${compilerVersion}" EQUAL 1600) + SET(MSVC10 1) + ENDIF() SET(MSVC_VERSION "${compilerVersion}") ELSE(NOT CMAKE_COMPILER_RETURN) MESSAGE(STATUS "Check for CL compiler version - failed") @@ -168,6 +171,9 @@ IF(CMAKE_FORCE_WIN64) SET(CMAKE_CL_64 1) ENDIF(CMAKE_FORCE_WIN64) +IF("${MSVC_VERSION}" GREATER 1599) + SET(MSVC_INCREMENTAL_DEFAULT ON) +ENDIF() # default to Debug builds IF(MSVC_VERSION GREATER 1310) @@ -193,7 +199,7 @@ IF(MSVC_VERSION GREATER 1310) SET (CMAKE_C_FLAGS_RELEASE_INIT "/MD /O2 /Ob2 /D NDEBUG") SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /Ob1 /D NDEBUG") SET (CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib ") - SET (CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT} /MANIFEST") + SET (CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT}") ELSE(MSVC_VERSION GREATER 1310) IF(CMAKE_USING_VC_FREE_TOOLS) MESSAGE(STATUS "Using FREE VC TOOLS, NO DEBUG available") @@ -239,12 +245,17 @@ ENDIF(CMAKE_CL_64) # add /debug and /INCREMENTAL:YES to DEBUG and RELWITHDEBINFO also add pdbtyp # on versions that support it +SET( MSVC_INCREMENTAL_YES_FLAG "") +IF(NOT MSVC_INCREMENTAL_DEFAULT) + SET( MSVC_INCREMENTAL_YES_FLAG "/INCREMENTAL:YES") +ENDIF() + IF (CMAKE_COMPILER_SUPPORTS_PDBTYPE) - SET (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug /pdbtype:sept /INCREMENTAL:YES") - SET (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug /pdbtype:sept /INCREMENTAL:YES") + SET (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug /pdbtype:sept ${MSVC_INCREMENTAL_YES_FLAG}") + SET (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug /pdbtype:sept ${MSVC_INCREMENTAL_YES_FLAG}") ELSE (CMAKE_COMPILER_SUPPORTS_PDBTYPE) - SET (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug /INCREMENTAL:YES") - SET (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug /INCREMENTAL:YES") + SET (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "/debug ${MSVC_INCREMENTAL_YES_FLAG}") + SET (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "/debug ${MSVC_INCREMENTAL_YES_FLAG}") ENDIF (CMAKE_COMPILER_SUPPORTS_PDBTYPE) # for release and minsize release default to no incremental linking SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT "/INCREMENTAL:NO") diff --git a/Modules/Platform/Windows-cl.cmake.in b/Modules/Platform/Windows-cl.cmake.in old mode 100755 new mode 100644 diff --git a/Modules/Platform/Windows-df.cmake b/Modules/Platform/Windows-df.cmake old mode 100755 new mode 100644 diff --git a/Modules/Platform/Windows-g++.cmake b/Modules/Platform/Windows-g++.cmake old mode 100755 new mode 100644 diff --git a/Modules/Platform/Windows-g77.cmake b/Modules/Platform/Windows-g77.cmake old mode 100755 new mode 100644 diff --git a/Modules/Platform/Windows-gcc.cmake b/Modules/Platform/Windows-gcc.cmake old mode 100755 new mode 100644 diff --git a/Modules/Platform/Windows-icl.cmake b/Modules/Platform/Windows-icl.cmake old mode 100755 new mode 100644 index dc40c87c1..6ba372b4c --- a/Modules/Platform/Windows-icl.cmake +++ b/Modules/Platform/Windows-icl.cmake @@ -40,7 +40,7 @@ SET(CMAKE_C_LINK_EXECUTABLE SET(CMAKE_COMPILE_RESOURCE "rc /fo ") SET(CMAKE_CXX_LINK_EXECUTABLE - " ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /Fe -link ${CMAKE_END_TEMP_FILE}") + " ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /Fe -link ${CMAKE_END_TEMP_FILE}") SET(CMAKE_CREATE_WIN32_EXE /subsystem:windows) SET(CMAKE_CREATE_CONSOLE_EXE /subsystem:console) @@ -75,3 +75,20 @@ SET (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBU SET (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT}) SET (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT}) SET (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT}) + +INCLUDE(Platform/Windows-Intel) + +IF(_INTEL_COMPILER_SUPPORTS_MANIFEST) + SET(CMAKE_C_LINK_EXECUTABLE + " -E vs_link_exe ${CMAKE_C_LINK_EXECUTABLE}") + SET(CMAKE_C_CREATE_SHARED_LIBRARY + " -E vs_link_dll ${CMAKE_C_CREATE_SHARED_LIBRARY}") + SET(CMAKE_C_CREATE_SHARED_MODULE + " -E vs_link_dll ${CMAKE_C_CREATE_SHARED_MODULE}") + SET(CMAKE_CXX_LINK_EXECUTABLE + " -E vs_link_exe ${CMAKE_CXX_LINK_EXECUTABLE}") + SET(CMAKE_CXX_CREATE_SHARED_LIBRARY + " -E vs_link_dll ${CMAKE_CXX_CREATE_SHARED_LIBRARY}") + SET(CMAKE_CXX_CREATE_SHARED_MODULE + " -E vs_link_dll ${CMAKE_CXX_CREATE_SHARED_MODULE}") +ENDIF(_INTEL_COMPILER_SUPPORTS_MANIFEST) diff --git a/Modules/Platform/Windows-ifort.cmake b/Modules/Platform/Windows-ifort.cmake old mode 100755 new mode 100644 index 2bf4753cf..01848a601 --- a/Modules/Platform/Windows-ifort.cmake +++ b/Modules/Platform/Windows-ifort.cmake @@ -26,7 +26,18 @@ SET(CMAKE_Fortran_COMPILE_OBJECT SET(CMAKE_COMPILE_RESOURCE "rc /fo ") SET(CMAKE_Fortran_LINK_EXECUTABLE - " ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /Fe -link ${CMAKE_END_TEMP_FILE}") + " ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /Fe -link ${CMAKE_END_TEMP_FILE}") + +INCLUDE(Platform/Windows-Intel) + +IF(_INTEL_COMPILER_SUPPORTS_MANIFEST) + SET(CMAKE_Fortran_LINK_EXECUTABLE + " -E vs_link_exe ${CMAKE_Fortran_LINK_EXECUTABLE}") + SET(CMAKE_Fortran_CREATE_SHARED_LIBRARY + " -E vs_link_dll ${CMAKE_Fortran_CREATE_SHARED_LIBRARY}") + SET(CMAKE_Fortran_CREATE_SHARED_MODULE + " -E vs_link_dll ${CMAKE_Fortran_CREATE_SHARED_MODULE}") +ENDIF(_INTEL_COMPILER_SUPPORTS_MANIFEST) SET(CMAKE_CREATE_WIN32_EXE /subsystem:windows) SET(CMAKE_CREATE_CONSOLE_EXE /subsystem:console) diff --git a/Modules/Platform/Windows-wcl386.cmake b/Modules/Platform/Windows-wcl386.cmake old mode 100755 new mode 100644 diff --git a/Modules/Platform/WindowsPaths.cmake b/Modules/Platform/WindowsPaths.cmake old mode 100755 new mode 100644 diff --git a/Modules/Platform/g77.cmake b/Modules/Platform/g77.cmake old mode 100755 new mode 100644 diff --git a/Modules/Platform/kFreeBSD.cmake b/Modules/Platform/kFreeBSD.cmake old mode 100755 new mode 100644 diff --git a/Modules/Platform/xlf.cmake b/Modules/Platform/xlf.cmake deleted file mode 100755 index adf146f8a..000000000 --- a/Modules/Platform/xlf.cmake +++ /dev/null @@ -1 +0,0 @@ -set(CMAKE_Fortran_DEFINE_FLAG "-WF,-D") diff --git a/Modules/RepositoryInfo.txt.in b/Modules/RepositoryInfo.txt.in new file mode 100644 index 000000000..df8e32272 --- /dev/null +++ b/Modules/RepositoryInfo.txt.in @@ -0,0 +1,3 @@ +repository='@repository@' +module='@module@' +tag='@tag@' diff --git a/Modules/SelectLibraryConfigurations.cmake b/Modules/SelectLibraryConfigurations.cmake new file mode 100644 index 000000000..edba5d9d6 --- /dev/null +++ b/Modules/SelectLibraryConfigurations.cmake @@ -0,0 +1,82 @@ +# select_library_configurations( basename ) +# +# This macro takes a library base name as an argument, and will choose good +# values for basename_LIBRARY, basename_LIBRARIES, basename_LIBRARY_DEBUG, and +# basename_LIBRARY_RELEASE depending on what has been found and set. If only +# basename_LIBRARY_RELEASE is defined, basename_LIBRARY, basename_LIBRARY_DEBUG, +# and basename_LIBRARY_RELEASE will be set to the release value. If only +# basename_LIBRARY_DEBUG is defined, then basename_LIBRARY, +# basename_LIBRARY_DEBUG and basename_LIBRARY_RELEASE will take the debug value. +# +# If the generator supports configuration types, then basename_LIBRARY and +# basename_LIBRARIES will be set with debug and optimized flags specifying the +# library to be used for the given configuration. If no build type has been set +# or the generator in use does not support configuration types, then +# basename_LIBRARY and basename_LIBRARIES will take only the release values. + +#============================================================================= +# Copyright 2009 Kitware, Inc. +# Copyright 2009 Will Dicharry +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +# This macro was adapted from the FindQt4 CMake module and is maintained by Will +# Dicharry . + +# Utility macro to check if one variable exists while another doesn't, and set +# one that doesn't exist to the one that exists. +macro( _set_library_name basename GOOD BAD ) + if( ${basename}_LIBRARY_${GOOD} AND NOT ${basename}_LIBRARY_${BAD} ) + set( ${basename}_LIBRARY_${BAD} ${${basename}_LIBRARY_${GOOD}} ) + set( ${basename}_LIBRARY ${${basename}_LIBRARY_${GOOD}} ) + set( ${basename}_LIBRARIES ${${basename}_LIBRARY_${GOOD}} ) + endif( ${basename}_LIBRARY_${GOOD} AND NOT ${basename}_LIBRARY_${BAD} ) +endmacro( _set_library_name ) + +macro( select_library_configurations basename ) + # if only the release version was found, set the debug to be the release + # version. + _set_library_name( ${basename} RELEASE DEBUG ) + # if only the debug version was found, set the release value to be the + # debug value. + _set_library_name( ${basename} DEBUG RELEASE ) + if (${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE ) + # if the generator supports configuration types or CMAKE_BUILD_TYPE + # is set, then set optimized and debug options. + if( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE ) + set( ${basename}_LIBRARY + optimized ${${basename}_LIBRARY_RELEASE} + debug ${${basename}_LIBRARY_DEBUG} ) + set( ${basename}_LIBRARIES + optimized ${${basename}_LIBRARY_RELEASE} + debug ${${basename}_LIBRARY_DEBUG} ) + else( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE ) + # If there are no configuration types or build type, just use + # the release version + set( ${basename}_LIBRARY ${${basename}_LIBRARY_RELEASE} ) + set( ${basename}_LIBRARIES ${${basename}_LIBRARY_RELEASE} ) + endif( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE ) + endif( ${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE ) + + set( ${basename}_LIBRARY ${${basename}_LIBRARY} CACHE FILEPATH + "The ${basename} library" ) + + if( ${basename}_LIBRARY ) + set( ${basename}_FOUND TRUE ) + endif( ${basename}_LIBRARY ) + + mark_as_advanced( ${basename}_LIBRARY + ${basename}_LIBRARY_RELEASE + ${basename}_LIBRARY_DEBUG + ) +endmacro( select_library_configurations ) + diff --git a/Modules/SquishTestScript.cmake b/Modules/SquishTestScript.cmake index 775134579..d42a84c21 100644 --- a/Modules/SquishTestScript.cmake +++ b/Modules/SquishTestScript.cmake @@ -1,6 +1,6 @@ # # This script launches a GUI test using Squish. You should not call -# the script directly; instead, you should acces it via the +# the script directly; instead, you should access it via the # SQUISH_ADD_TEST macro that is defined in FindSquish.cmake. # # This script starts the Squish server, launches the test on the @@ -9,6 +9,19 @@ # raised. # +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + cmake_minimum_required(VERSION 2.6 FATAL_ERROR) # print out the variable that we are using diff --git a/Modules/SystemInformation.cmake b/Modules/SystemInformation.cmake old mode 100755 new mode 100644 index 370778c32..ef9b427e2 --- a/Modules/SystemInformation.cmake +++ b/Modules/SystemInformation.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + PROJECT(DumpInformation) # first get the standard information for th platform diff --git a/Modules/TestBigEndian.cmake b/Modules/TestBigEndian.cmake index ffc3a0cda..751412799 100644 --- a/Modules/TestBigEndian.cmake +++ b/Modules/TestBigEndian.cmake @@ -4,6 +4,19 @@ # VARIABLE - variable to store the result to # +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(TEST_BIG_ENDIAN VARIABLE) IF("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$") MESSAGE(STATUS "Check if the system is big endian") diff --git a/Modules/TestCXXAcceptsFlag.cmake b/Modules/TestCXXAcceptsFlag.cmake old mode 100755 new mode 100644 index 2242dcf20..98b2f9bcd --- a/Modules/TestCXXAcceptsFlag.cmake +++ b/Modules/TestCXXAcceptsFlag.cmake @@ -7,6 +7,19 @@ # VARIABLE - variable to store the result # +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + MACRO(CHECK_CXX_ACCEPTS_FLAG FLAGS VARIABLE) IF(NOT DEFINED ${VARIABLE}) MESSAGE(STATUS "Checking to see if CXX compiler accepts flag ${FLAGS}") diff --git a/Modules/TestForANSIForScope.cmake b/Modules/TestForANSIForScope.cmake index 5d27bb421..f8089e5ae 100644 --- a/Modules/TestForANSIForScope.cmake +++ b/Modules/TestForANSIForScope.cmake @@ -3,6 +3,19 @@ # CMAKE_NO_ANSI_FOR_SCOPE - holds result # +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF("CMAKE_ANSI_FOR_SCOPE" MATCHES "^CMAKE_ANSI_FOR_SCOPE$") MESSAGE(STATUS "Check for ANSI scope") TRY_COMPILE(CMAKE_ANSI_FOR_SCOPE ${CMAKE_BINARY_DIR} diff --git a/Modules/TestForANSIStreamHeaders.cmake b/Modules/TestForANSIStreamHeaders.cmake index e3d4483b2..2ce2a5576 100644 --- a/Modules/TestForANSIStreamHeaders.cmake +++ b/Modules/TestForANSIStreamHeaders.cmake @@ -2,6 +2,20 @@ # check if we they have the standard ansi stream files (without the .h) # CMAKE_NO_ANSI_STREAM_HEADERS - defined by the results # + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + INCLUDE(CheckIncludeFileCXX) IF(NOT CMAKE_NO_ANSI_STREAM_HEADERS) diff --git a/Modules/TestForSSTREAM.cmake b/Modules/TestForSSTREAM.cmake old mode 100755 new mode 100644 index 1884bf24d..959c9df9c --- a/Modules/TestForSSTREAM.cmake +++ b/Modules/TestForSSTREAM.cmake @@ -2,6 +2,20 @@ # check if the compiler supports std:: on stl classes # CMAKE_NO_ANSI_STRING_STREAM - defined by the results # + +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF("CMAKE_HAS_ANSI_STRING_STREAM" MATCHES "^CMAKE_HAS_ANSI_STRING_STREAM$") MESSAGE(STATUS "Check for sstream") TRY_COMPILE(CMAKE_HAS_ANSI_STRING_STREAM ${CMAKE_BINARY_DIR} diff --git a/Modules/TestForSSTREAM.cxx b/Modules/TestForSSTREAM.cxx old mode 100755 new mode 100644 diff --git a/Modules/TestForSTDNamespace.cmake b/Modules/TestForSTDNamespace.cmake index 58d2ff36c..f0966d01d 100644 --- a/Modules/TestForSTDNamespace.cmake +++ b/Modules/TestForSTDNamespace.cmake @@ -2,6 +2,20 @@ # check if the compiler supports std:: on stl classes # CMAKE_NO_STD_NAMESPACE - defined by the results # + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF("CMAKE_STD_NAMESPACE" MATCHES "^CMAKE_STD_NAMESPACE$") MESSAGE(STATUS "Check for STD namespace") TRY_COMPILE(CMAKE_STD_NAMESPACE ${CMAKE_BINARY_DIR} diff --git a/Modules/UseEcos.cmake b/Modules/UseEcos.cmake index 73d3f2a1e..9785cd533 100644 --- a/Modules/UseEcos.cmake +++ b/Modules/UseEcos.cmake @@ -16,6 +16,19 @@ # for internal use only: # ECOS_ADD_TARGET_LIB +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # first check that ecosconfig is available FIND_PROGRAM(ECOSCONFIG_EXECUTABLE NAMES ecosconfig) IF(NOT ECOSCONFIG_EXECUTABLE) diff --git a/Modules/UsePkgConfig.cmake b/Modules/UsePkgConfig.cmake index 5d7d65c08..e8194d5d2 100644 --- a/Modules/UsePkgConfig.cmake +++ b/Modules/UsePkgConfig.cmake @@ -10,7 +10,18 @@ # variable will be empty when the function returns, otherwise they will contain the respective information # - +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) FIND_PROGRAM(PKGCONFIG_EXECUTABLE NAMES pkg-config ) @@ -53,6 +64,11 @@ MACRO(PKGCONFIG _package _include_DIR _link_DIR _link_FLAGS _cflags) MESSAGE(STATUS "PKGCONFIG() indicates that ${_package} is not installed (install the package which contains ${_package}.pc if you want to support this feature)") ENDIF(NOT _return_VALUE) + + # if pkg-config has NOT been found, INFORM the user + ELSE(PKGCONFIG_EXECUTABLE) + + MESSAGE(STATUS "WARNING: PKGCONFIG() indicates that the tool pkg-config has not been found on your system. You should install it.") ENDIF(PKGCONFIG_EXECUTABLE) diff --git a/Modules/UseQt4.cmake b/Modules/UseQt4.cmake old mode 100755 new mode 100644 index 29de8cb53..f92500bd0 --- a/Modules/UseQt4.cmake +++ b/Modules/UseQt4.cmake @@ -3,6 +3,18 @@ # has already been loaded. See FindQt.cmake for information on # how to load Qt 4 into your CMake project. +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) ADD_DEFINITIONS(${QT_DEFINITIONS}) SET_PROPERTY(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG QT_DEBUG) @@ -43,7 +55,7 @@ ENDIF (QT_USE_QT3SUPPORT) SET(QT_QT3SUPPORT_MODULE_DEPENDS QTGUI QTSQL QTXML QTNETWORK QTCORE) SET(QT_QTSVG_MODULE_DEPENDS QTGUI QTXML QTCORE) SET(QT_QTUITOOLS_MODULE_DEPENDS QTGUI QTXML QTCORE) -SET(QT_QTHELP_MODULE_DEPENDS QTGUI QTSQL QTXML QTCORE) +SET(QT_QTHELP_MODULE_DEPENDS QTGUI QTSQL QTXML QTNETWORK QTCORE) IF(QT_QTDBUS_FOUND) SET(QT_PHONON_MODULE_DEPENDS QTGUI QTDBUS QTCORE) ELSE(QT_QTDBUS_FOUND) @@ -53,12 +65,13 @@ SET(QT_QTDBUS_MODULE_DEPENDS QTXML QTCORE) SET(QT_QTXMLPATTERNS_MODULE_DEPENDS QTNETWORK QTCORE) SET(QT_QAXCONTAINER_MODULE_DEPENDS QTGUI QTCORE) SET(QT_QAXSERVER_MODULE_DEPENDS QTGUI QTCORE) +SET(QT_QTSCRIPTTOOLS_MODULE_DEPENDS QTGUI QTCORE) # Qt modules (in order of dependence) FOREACH(module QT3SUPPORT QTOPENGL QTASSISTANT QTDESIGNER QTMOTIF QTNSPLUGIN QAXSERVER QAXCONTAINER QTSCRIPT QTSVG QTUITOOLS QTHELP - QTWEBKIT PHONON QTGUI QTTEST QTDBUS QTXML QTSQL QTXMLPATTERNS - QTNETWORK QTCORE) + QTWEBKIT PHONON QTSCRIPTTOOLS QTGUI QTTEST QTDBUS QTXML QTSQL + QTXMLPATTERNS QTNETWORK QTCORE) IF (QT_USE_${module} OR QT_USE_${module}_DEPENDS) IF (QT_${module}_FOUND) diff --git a/Modules/UseSWIG.cmake b/Modules/UseSWIG.cmake index 5499f84f8..5e0d18c29 100644 --- a/Modules/UseSWIG.cmake +++ b/Modules/UseSWIG.cmake @@ -15,6 +15,19 @@ # The name-specific variable SWIG_MODULE__EXTRA_DEPS may be used # to specify extra dependencies for the generated modules. +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + SET(SWIG_CXX_EXTENSION "cxx") SET(SWIG_EXTRA_LIBRARIES "") diff --git a/Modules/UseVTK40.cmake b/Modules/UseVTK40.cmake index 750d44b12..560039fd1 100644 --- a/Modules/UseVTK40.cmake +++ b/Modules/UseVTK40.cmake @@ -1,16 +1,23 @@ # +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This is an implementation detail for using VTK 4.0 with the # FindVTK.cmake module. Do not include directly by name. This should # be included only when FindVTK.cmake sets the VTK_USE_FILE variable # to point here. -# Load the compiler settings used for VTK. -IF(VTK_BUILD_SETTINGS_FILE) - INCLUDE(CMakeImportBuildSettings) - CMAKE_IMPORT_BUILD_SETTINGS(${VTK_BUILD_SETTINGS_FILE}) -ENDIF(VTK_BUILD_SETTINGS_FILE) - # Add compiler flags needed to use VTK. SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${VTK_REQUIRED_C_FLAGS}") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${VTK_REQUIRED_CXX_FLAGS}") diff --git a/Modules/UseVTKBuildSettings40.cmake b/Modules/UseVTKBuildSettings40.cmake index a43bb0bef..693743c25 100644 --- a/Modules/UseVTKBuildSettings40.cmake +++ b/Modules/UseVTKBuildSettings40.cmake @@ -1,5 +1,18 @@ # +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # Implementation detail for FindVTK.cmake to let it provide a # VTK_BUILD_SETTINGS_FILE for VTK 4.0. diff --git a/Modules/UseVTKConfig40.cmake b/Modules/UseVTKConfig40.cmake index 623c6075a..2100d84e2 100644 --- a/Modules/UseVTKConfig40.cmake +++ b/Modules/UseVTKConfig40.cmake @@ -1,5 +1,18 @@ # +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # This is an implementation detail for using VTK 4.0 with the # FindVTK.cmake module. Do not include directly. diff --git a/Modules/Use_wxWindows.cmake b/Modules/Use_wxWindows.cmake index da8bdd1be..2bae99c5f 100644 --- a/Modules/Use_wxWindows.cmake +++ b/Modules/Use_wxWindows.cmake @@ -12,10 +12,24 @@ # if you are sure you need GL then # SET(WXWINDOWS_USE_GL 1) # *before* you include this file. + +#============================================================================= +# Copyright 2003-2009 Kitware, Inc. +# Copyright 2003 Jan Woetzel +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. # +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + # ----------------------------------------------------- # 16.Feb.2004: changed INCLUDE to FIND_PACKAGE to read from users own non-system CMAKE_MODULE_PATH (Jan Woetzel JW) -# 07/2006: rewrite as FindwxWidgets.cmake, kept for backward compatibilty JW +# 07/2006: rewrite as FindwxWidgets.cmake, kept for backward compatibility JW MESSAGE(STATUS "Use_wxWindows.cmake is DEPRECATED. \n" "Please use FIND_PACKAGE(wxWidgets) and INCLUDE(${wxWidgets_USE_FILE}) instead. (JW)") diff --git a/Modules/UsewxWidgets.cmake b/Modules/UsewxWidgets.cmake old mode 100755 new mode 100644 index 6f5cb2642..b001f6a81 --- a/Modules/UsewxWidgets.cmake +++ b/Modules/UsewxWidgets.cmake @@ -17,6 +17,19 @@ # AUTHOR # Jan Woetzel +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# Copyright 2006 Jan Woetzel +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) # debug message and logging. # comment these out for distribution @@ -46,10 +59,17 @@ IF (wxWidgets_FOUND) ENDIF(wxWidgets_LIBRARY_DIRS) IF (wxWidgets_DEFINITIONS) - ADD_DEFINITIONS( ${wxWidgets_DEFINITIONS} ) + SET_PROPERTY(DIRECTORY APPEND + PROPERTY COMPILE_DEFINITIONS ${wxWidgets_DEFINITIONS}) MSG("wxWidgets_DEFINITIONS=${wxWidgets_DEFINITIONS}") ENDIF(wxWidgets_DEFINITIONS) + IF (wxWidgets_DEFINITIONS_DEBUG) + SET_PROPERTY(DIRECTORY APPEND + PROPERTY COMPILE_DEFINITIONS_DEBUG ${wxWidgets_DEFINITIONS_DEBUG}) + MSG("wxWidgets_DEFINITIONS_DEBUG=${wxWidgets_DEFINITIONS_DEBUG}") + ENDIF(wxWidgets_DEFINITIONS_DEBUG) + IF (wxWidgets_CXX_FLAGS) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${wxWidgets_CXX_FLAGS}") MSG("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}") diff --git a/Modules/VTKCompatibility.cmake b/Modules/VTKCompatibility.cmake index 75e2f4051..c0b3d6226 100644 --- a/Modules/VTKCompatibility.cmake +++ b/Modules/VTKCompatibility.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2005-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + IF(APPLE) SET(CMAKE_CXX_CREATE_SHARED_LIBRARY "${CMAKE_C_CREATE_SHARED_LIBRARY}") SET(CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_C_CREATE_SHARED_MODULE}") diff --git a/Modules/ecos_clean.cmake b/Modules/ecos_clean.cmake index 57af343d9..b76137ce0 100644 --- a/Modules/ecos_clean.cmake +++ b/Modules/ecos_clean.cmake @@ -1,3 +1,17 @@ + +#============================================================================= +# Copyright 2007-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + file(GLOB _files ${ECOS_DIR}/*) # remove all directories, which consist of lower-case letters only diff --git a/Modules/kde3uic.cmake b/Modules/kde3uic.cmake index 0dbbbcf1d..b52dc093f 100644 --- a/Modules/kde3uic.cmake +++ b/Modules/kde3uic.cmake @@ -1,4 +1,17 @@ +#============================================================================= +# Copyright 2006-2009 Kitware, Inc. +# Copyright 2006 Alexander Neundorf +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) # used internally by KDE3Macros.cmake # neundorf@kde.org diff --git a/Modules/readme.txt b/Modules/readme.txt index 8e4474ead..d23c4c3e8 100644 --- a/Modules/readme.txt +++ b/Modules/readme.txt @@ -1,3 +1,6 @@ +For more information about how to contribute modules to CMake, see this page: +http://www.itk.org/Wiki/CMake:Module_Maintainers + Note to authors of FindXXX.cmake files We would like all FindXXX.cmake files to produce consistent variable names. @@ -68,7 +71,7 @@ line. A FindXXX.cmake module will typically be loaded by the command FIND_PACKAGE(XXX [major[.minor[.patch[.tweak]]]] [EXACT] - [QUIET] [REQUIRED [components...]]) + [QUIET] [[REQUIRED|COMPONENTS] [components...]]) If any version numbers are given to the command it will set the following variables before loading the module: @@ -96,7 +99,8 @@ XXX_FIND_REQUIRED to true before loading the FindXXX.cmake module. If this variable is set the module should issue a FATAL_ERROR if the package cannot be found. For each package-specific component, say YYY, listed after the REQUIRED option a variable XXX_FIND_REQUIRED_YYY -to true. The set of components listed will also be specified in a +to true. The set of components listed after either the REQUIRED +option or the COMPONENTS option will be specified in a XXX_FIND_COMPONENTS variable. This can be used by the FindXXX.cmake module to determine which sub-components of the package must be found. If neither the QUIET nor REQUIRED options are given then the @@ -105,3 +109,4 @@ error if the module is not found. To get this behaviour you can use the FIND_PACKAGE_HANDLE_STANDARD_ARGS() macro, as an example see FindJPEG.cmake. + diff --git a/Readme.txt b/Readme.txt index 315783620..11926bc53 100644 --- a/Readme.txt +++ b/Readme.txt @@ -1,6 +1,6 @@ This is CMake, the cross-platform, open-source make system. -CMake is free software under a BSD-like license, see Copyright.txt. -For documentation see the Docs/ directory once you have built CMake +CMake is distributed under the BSD License, see Copyright.txt. +For documentation see the Docs/ directory once you have built CMake or visit http://www.cmake.org. @@ -36,10 +36,10 @@ projects: $ ./bootstrap; make; make install -* Other Windows: +* Other Windows: You need to download and install a binary release of CMake in order to build -CMake. You can get these releases from +CMake. You can get these releases from http://www.cmake.org/HTML/Download.html . Then proceed with the instructions below. @@ -50,6 +50,4 @@ You already have a version of CMake installed You can build CMake as any other project with a CMake-based build system: run the installed CMake on the sources of this CMake with your preferred options and generators. Then build it and install it. -For instructions how to do this, see http://www.cmake.org/HTML/RunningCMake.html - - +For instructions how to do this, see http://www.cmake.org/HTML/RunningCMake.html diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 2621c9dac..d188b11a8 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -1,3 +1,14 @@ +#============================================================================= +# CMake - Cross Platform Makefile Generator +# Copyright 2000-2009 Kitware, Inc., Insight Software Consortium +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= INCLUDE(CheckIncludeFile) # Check if we can build support for ELF parsing. CHECK_INCLUDE_FILE("elf.h" HAVE_ELF_H) @@ -12,6 +23,10 @@ CONFIGURE_FILE( "${CMake_SOURCE_DIR}/Source/cmConfigure.cmake.h.in" "${CMake_BINARY_DIR}/Source/cmConfigure.h" ) +CONFIGURE_FILE( + "${CMake_SOURCE_DIR}/Source/cmVersionConfig.h.in" + "${CMake_BINARY_DIR}/Source/cmVersionConfig.h" + ) CONFIGURE_FILE( "${CMake_SOURCE_DIR}/Source/CPack/cmCPackConfigure.h.in" "${CMake_BINARY_DIR}/Source/CPack/cmCPackConfigure.h" @@ -112,6 +127,8 @@ SET(SRCS cmComputeTargetDepends.cxx cmCustomCommand.cxx cmCustomCommand.h + cmDefinitions.cxx + cmDefinitions.h cmDepends.cxx cmDepends.h cmDependsC.cxx @@ -153,6 +170,8 @@ SET(SRCS cmFileTimeComparison.cxx cmFileTimeComparison.h cmGeneratedFileStream.cxx + cmGeneratorExpression.cxx + cmGeneratorExpression.h cmGlobalGenerator.cxx cmGlobalGenerator.h cmGlobalUnixMakefileGenerator3.cxx @@ -187,6 +206,8 @@ SET(SRCS cmOrderDirectories.h cmPolicies.h cmPolicies.cxx + cmProcessTools.cxx + cmProcessTools.h cmProperty.cxx cmProperty.h cmPropertyDefinition.cxx @@ -195,6 +216,8 @@ SET(SRCS cmPropertyDefinitionMap.h cmPropertyMap.cxx cmPropertyMap.h + cmScriptGenerator.h + cmScriptGenerator.cxx cmSourceFile.cxx cmSourceFile.h cmSourceFileLocation.cxx @@ -207,12 +230,16 @@ SET(SRCS cmTarget.h cmTest.cxx cmTest.h + cmTestGenerator.cxx + cmTestGenerator.h cmVariableWatch.cxx cmVariableWatch.h cmVersion.cxx cmVersion.h cmXMLParser.cxx cmXMLParser.h + cmXMLSafe.cxx + cmXMLSafe.h cmake.cxx cmake.h cmakewizard.cxx @@ -235,8 +262,6 @@ IF(APPLE) cmXCode21Object.cxx cmGlobalXCodeGenerator.cxx cmGlobalXCodeGenerator.h - cmGlobalXCode21Generator.cxx - cmGlobalXCode21Generator.h cmLocalXCodeGenerator.cxx cmLocalXCodeGenerator.h) ENDIF(APPLE) @@ -270,9 +295,20 @@ IF (WIN32) cmGlobalVisualStudio8Win64Generator.h cmGlobalVisualStudio9Win64Generator.cxx cmGlobalVisualStudio9Win64Generator.h + cmVisualStudioGeneratorOptions.h + cmVisualStudioGeneratorOptions.cxx + cmVisualStudio10TargetGenerator.h + cmVisualStudio10TargetGenerator.cxx + cmLocalVisualStudio10Generator.cxx + cmLocalVisualStudio10Generator.h + cmGlobalVisualStudio10Generator.h + cmGlobalVisualStudio10Generator.cxx cmGlobalVisualStudioGenerator.cxx cmGlobalVisualStudioGenerator.h cmGlobalWatcomWMakeGenerator.cxx + cmIDEFlagTable.h + cmIDEOptions.cxx + cmIDEOptions.h cmLocalVisualStudio6Generator.cxx cmLocalVisualStudio6Generator.h cmLocalVisualStudio7Generator.cxx @@ -314,6 +350,8 @@ INCLUDE_DIRECTORIES( # Sources for CTestLib # SET(CTEST_SRCS cmCTest.cxx + CTest/cmProcess.cxx + CTest/cmCTestBatchTestHandler.cxx CTest/cmCTestBuildAndTestHandler.cxx CTest/cmCTestBuildCommand.cxx CTest/cmCTestBuildHandler.cxx @@ -324,10 +362,13 @@ SET(CTEST_SRCS cmCTest.cxx CTest/cmCTestEmptyBinaryDirectoryCommand.cxx CTest/cmCTestGenericHandler.cxx CTest/cmCTestHandlerCommand.cxx + CTest/cmCTestLaunch.cxx CTest/cmCTestMemCheckCommand.cxx CTest/cmCTestMemCheckHandler.cxx + CTest/cmCTestMultiProcessHandler.cxx CTest/cmCTestReadCustomFilesCommand.cxx CTest/cmCTestRunScriptCommand.cxx + CTest/cmCTestRunTest.cxx CTest/cmCTestScriptHandler.cxx CTest/cmCTestSleepCommand.cxx CTest/cmCTestStartCommand.cxx @@ -337,6 +378,21 @@ SET(CTEST_SRCS cmCTest.cxx CTest/cmCTestTestHandler.cxx CTest/cmCTestUpdateCommand.cxx CTest/cmCTestUpdateHandler.cxx + + CTest/cmCTestVC.cxx + CTest/cmCTestVC.h + CTest/cmCTestGlobalVC.cxx + CTest/cmCTestGlobalVC.h + CTest/cmCTestCVS.cxx + CTest/cmCTestCVS.h + CTest/cmCTestSVN.cxx + CTest/cmCTestSVN.h + CTest/cmCTestBZR.cxx + CTest/cmCTestBZR.h + CTest/cmCTestGIT.cxx + CTest/cmCTestGIT.h + CTest/cmCTestHG.cxx + CTest/cmCTestHG.h ) # Build CTestLib @@ -423,32 +479,12 @@ IF(BUILD_CursesDialog) INCLUDE(${CMake_SOURCE_DIR}/Source/CursesDialog/CMakeLists.txt) ENDIF(BUILD_CursesDialog) -# MFC GUI -# MFC libraries are only available on Visual Studio -IF(BUILD_MFCDialog) - SUBDIRS(MFCDialog) -ENDIF(BUILD_MFCDialog) - # Qt GUI OPTION(BUILD_QtDialog "Build Qt dialog for CMake" FALSE) IF(BUILD_QtDialog) SUBDIRS(QtDialog) ENDIF(BUILD_QtDialog) -# WX Widgets GUI -OPTION(BUILD_WXDialog "Build wxWidgets dialog for CMake" FALSE) -MARK_AS_ADVANCED(BUILD_WXDialog) -IF(BUILD_WXDialog) - SUBDIRS(WXDialog) -ENDIF(BUILD_WXDialog) - -# FLTK GUI, needs some work: generator selection, paths with spaces, ... -# OPTION(BUILD_FLTKDialog "Build FLTK dialog for CMake" FALSE) -# MARK_AS_ADVANCED(BUILD_FLTKDialog) -# IF(BUILD_FLTKDialog) -# SUBDIRS(FLTKDialog) -# ENDIF(BUILD_FLTKDialog) - INCLUDE (${CMAKE_BINARY_DIR}/Source/LocalUserOptions.cmake OPTIONAL) INCLUDE (${CMAKE_SOURCE_DIR}/Source/LocalUserOptions.cmake OPTIONAL) @@ -460,3 +496,4 @@ IF(APPLE) ENDIF(APPLE) INSTALL_FILES(${CMAKE_DATA_DIR}/include cmCPluginAPI.h) + diff --git a/Source/CPack/OSXLauncherScript.scpt b/Source/CPack/OSXLauncherScript.scpt new file mode 100644 index 0000000000000000000000000000000000000000..342cf8c01b8b82a51936c76b2262680cb629ec3f GIT binary patch literal 3102 zcmai0=YJGc6g@MWvdr){y98t@N)!@Xi~&JK5kv@zC{aPh&XO!-HO*{L{N|tFR~3+A z!GcOv0YOnf0YOnL^lqU_7s2DbGh4nSoBidTnKyHD-?``Ad*6(TC2JoZKCYyHMgK}2 zApm(rBrMnnSaJg+_ttarTz`2s^5jiE3XFiA@E!(Gh@cS&jFxxu|z8-j4-oAqCjal)9G(%o=H#?yBY}7{gXqN5E>Gv6Y4JQ@@tg+NEgRe^m#5IX5}lKE@%s97 zc>XLCV6g<)izf|w`TB>^oqwY@PdIY%^^Z@B*Qn;?%bsk${=H#Ol4%&lxExm)0grAN z5gvDWyn}@euJHFSBFgp&p^xrgNdzU5k0mIxc|x=4qyP$JT#2iUfJp8qD%IXs+B<=Up2Y$}JLd1i36zquOiHT;u* z7+jN;^>>%Qqe~?UC1)ll>f_$cD7mrtr&9Stng6AGQI@WQzPQ%LwZiT?TyF$2bx@8Q z49e51<)ea!c+jB2PZ3Ch-H1vf;H5|a`8?q8Kqi$c({=&$#{eVX*;xp1zr+2RR2qD+5Mj%rigK)FKAiuP= z7H*M0Uw)Z!4{qgdM=rTa`&K_SB=a#igu$8`w?%MU?$X|^#Ba_L-{o>wj+(JCP{`ko zAx6L>FPV=!Fw_Wmr5%=98pfU6VKB_sS)bgA;YPsIxftEJ-Qo7kehg3B72__9Fan-k z1jXFua9d_SM))+fR(^B&TMn8Qcj~U}(BOtKta7y+;Jqv*k(T>jJnF@rJw{z~`5 zeIeYZ`+I)`_Y2(;gVDaTUebepbopaDxo2>kM!9>I? znaIKL6!N%&%ejo7Ib4yV+t#;(!{zC>ZM0*D%W{bA@Ut93goILIn4coZPq-A5P{SpT zOmlt5e4@cE)c__b)X0e*=3*}5LN4IP=);d3E*1~%eVVvjl%t>>E=;unhYM1T!xgu= z&uNDrrB-a~Fph8uqI;f|@2RRS)vNcHA1JTdTD|5_sXQqx3dx>`1RtV|^Z5a45$F4k zOj8oHA-K!=ZJrRe{JRKJE8F@W-{m~MWEnU9bPTjhkmqQ$v?{pwUSia~A`8MCe zV7@7>V=U)7d^@A)TPZ~ydD;FBIh>nQ&G*r7)}Hdc%?PBJ #include #include diff --git a/Source/CPack/bills-comments.txt b/Source/CPack/bills-comments.txt old mode 100755 new mode 100644 diff --git a/Source/CPack/cmCPackBundleGenerator.cxx b/Source/CPack/cmCPackBundleGenerator.cxx index 81d5545c5..247a04301 100644 --- a/Source/CPack/cmCPackBundleGenerator.cxx +++ b/Source/CPack/cmCPackBundleGenerator.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackBundleGenerator.cxx,v $ - Language: C++ - Date: $Date: 2009-02-04 16:44:18 $ - Version: $Revision: 1.2.2.6 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackBundleGenerator.h" #include "cmCPackLog.h" @@ -98,9 +93,6 @@ int cmCPackBundleGenerator::CompressFiles(const char* outFileName, } // Get optional arguments ... - const std::string cpack_package_icon = this->GetOption("CPACK_PACKAGE_ICON") - ? this->GetOption("CPACK_PACKAGE_ICON") : ""; - const std::string cpack_bundle_startup_command = this->GetOption("CPACK_BUNDLE_STARTUP_COMMAND") ? this->GetOption("CPACK_BUNDLE_STARTUP_COMMAND") : ""; @@ -175,126 +167,5 @@ int cmCPackBundleGenerator::CompressFiles(const char* outFileName, cmSystemTools::SetPermissions(command_target.str().c_str(), 0777); } - // Add a symlink to /Applications so users can drag-and-drop the bundle - // into it - cmOStringStream application_link; - application_link << staging.str() << "/Applications"; - cmSystemTools::CreateSymlink("/Applications", - application_link.str().c_str()); - - // Optionally add a custom volume icon ... - if(!cpack_package_icon.empty()) - { - cmOStringStream package_icon_source; - package_icon_source << cpack_package_icon; - - cmOStringStream package_icon_destination; - package_icon_destination << staging.str() << "/.VolumeIcon.icns"; - - if(!this->CopyFile(package_icon_source, package_icon_destination)) - { - cmCPackLogger(cmCPackLog::LOG_ERROR, - "Error copying disk volume icon. " - "Check the value of CPACK_PACKAGE_ICON." - << std::endl); - - return 0; - } - } - - // Create a temporary read-write disk image ... - cmOStringStream temp_image; - temp_image << this->GetOption("CPACK_TOPLEVEL_DIRECTORY") << "/temp.dmg"; - - cmOStringStream temp_image_command; - temp_image_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); - temp_image_command << " create"; - temp_image_command << " -ov"; - temp_image_command << " -srcfolder \"" << staging.str() << "\""; - temp_image_command << " -volname \"" - << this->GetOption("CPACK_PACKAGE_FILE_NAME") << "\""; - temp_image_command << " -format UDRW"; - temp_image_command << " \"" << temp_image.str() << "\""; - - if(!this->RunCommand(temp_image_command)) - { - cmCPackLogger(cmCPackLog::LOG_ERROR, - "Error generating temporary disk image." - << std::endl); - - return 0; - } - - // Optionally set the custom icon flag for the image ... - if(!cpack_package_icon.empty()) - { - cmOStringStream temp_mount; - - cmOStringStream attach_command; - attach_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); - attach_command << " attach"; - attach_command << " \"" << temp_image.str() << "\""; - - std::string attach_output; - if(!this->RunCommand(attach_command, &attach_output)) - { - cmCPackLogger(cmCPackLog::LOG_ERROR, - "Error attaching temporary disk image." - << std::endl); - - return 0; - } - - cmsys::RegularExpression mountpoint_regex(".*(/Volumes/[^\n]+)\n.*"); - mountpoint_regex.find(attach_output.c_str()); - temp_mount << mountpoint_regex.match(1); - - cmOStringStream setfile_command; - setfile_command << this->GetOption("CPACK_COMMAND_SETFILE"); - setfile_command << " -a C"; - setfile_command << " \"" << temp_mount.str() << "\""; - - if(!this->RunCommand(setfile_command)) - { - cmCPackLogger(cmCPackLog::LOG_ERROR, - "Error assigning custom icon to temporary disk image." - << std::endl); - - return 0; - } - - cmOStringStream detach_command; - detach_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); - detach_command << " detach"; - detach_command << " \"" << temp_mount.str() << "\""; - - if(!this->RunCommand(detach_command)) - { - cmCPackLogger(cmCPackLog::LOG_ERROR, - "Error detaching temporary disk image." - << std::endl); - - return 0; - } - } - - // Create the final compressed read-only disk image ... - cmOStringStream final_image_command; - final_image_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); - final_image_command << " convert \"" << temp_image.str() << "\""; - final_image_command << " -format UDZO"; - final_image_command << " -imagekey"; - final_image_command << " zlib-level=9"; - final_image_command << " -o \"" << outFileName << "\""; - - if(!this->RunCommand(final_image_command)) - { - cmCPackLogger(cmCPackLog::LOG_ERROR, - "Error compressing disk image." - << std::endl); - - return 0; - } - - return 1; + return this->CreateDMG(toplevel, outFileName); } diff --git a/Source/CPack/cmCPackBundleGenerator.h b/Source/CPack/cmCPackBundleGenerator.h index 7416fcb9a..ce055419f 100644 --- a/Source/CPack/cmCPackBundleGenerator.h +++ b/Source/CPack/cmCPackBundleGenerator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackBundleGenerator.h,v $ - Language: C++ - Date: $Date: 2009-02-04 16:44:18 $ - Version: $Revision: 1.1.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackBundleGenerator_h #define cmCPackBundleGenerator_h diff --git a/Source/CPack/cmCPackComponentGroup.cxx b/Source/CPack/cmCPackComponentGroup.cxx index 052adcd4b..1d21fb11c 100644 --- a/Source/CPack/cmCPackComponentGroup.cxx +++ b/Source/CPack/cmCPackComponentGroup.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackComponentGroup.cxx,v $ - Language: C++ - Date: $Date: 2008-07-14 13:22:45 $ - Version: $Revision: 1.1.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackComponentGroup.h" #include "cmSystemTools.h" diff --git a/Source/CPack/cmCPackComponentGroup.h b/Source/CPack/cmCPackComponentGroup.h index 74b4f9967..cebdd6d20 100644 --- a/Source/CPack/cmCPackComponentGroup.h +++ b/Source/CPack/cmCPackComponentGroup.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackComponentGroup.h,v $ - Language: C++ - Date: $Date: 2008-07-13 21:55:24 $ - Version: $Revision: 1.1.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackComponentGroup_h #define cmCPackComponentGroup_h diff --git a/Source/CPack/cmCPackConfigure.h.in b/Source/CPack/cmCPackConfigure.h.in old mode 100755 new mode 100644 index 84da9ac35..3d7702e1a --- a/Source/CPack/cmCPackConfigure.h.in +++ b/Source/CPack/cmCPackConfigure.h.in @@ -1,16 +1,11 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackConfigure.h.in,v $ - Language: C++ - Date: $Date: 2007-07-27 14:55:24 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ diff --git a/Source/CPack/cmCPackCygwinBinaryGenerator.cxx b/Source/CPack/cmCPackCygwinBinaryGenerator.cxx old mode 100755 new mode 100644 index 10f1e6737..8a7679cf9 --- a/Source/CPack/cmCPackCygwinBinaryGenerator.cxx +++ b/Source/CPack/cmCPackCygwinBinaryGenerator.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackCygwinBinaryGenerator.cxx,v $ - Language: C++ - Date: $Date: 2008-03-13 01:54:27 $ - Version: $Revision: 1.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackCygwinBinaryGenerator.h" diff --git a/Source/CPack/cmCPackCygwinBinaryGenerator.h b/Source/CPack/cmCPackCygwinBinaryGenerator.h old mode 100755 new mode 100644 index ce31b0be4..19b09f0b9 --- a/Source/CPack/cmCPackCygwinBinaryGenerator.h +++ b/Source/CPack/cmCPackCygwinBinaryGenerator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackCygwinBinaryGenerator.h,v $ - Language: C++ - Date: $Date: 2007-10-31 12:50:17 $ - Version: $Revision: 1.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackCygwinBinaryGenerator_h #define cmCPackCygwinBinaryGenerator_h diff --git a/Source/CPack/cmCPackCygwinSourceGenerator.cxx b/Source/CPack/cmCPackCygwinSourceGenerator.cxx old mode 100755 new mode 100644 index 58ff110a7..32c4e38ff --- a/Source/CPack/cmCPackCygwinSourceGenerator.cxx +++ b/Source/CPack/cmCPackCygwinSourceGenerator.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackCygwinSourceGenerator.cxx,v $ - Language: C++ - Date: $Date: 2008-03-13 01:54:27 $ - Version: $Revision: 1.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackCygwinSourceGenerator.h" diff --git a/Source/CPack/cmCPackCygwinSourceGenerator.h b/Source/CPack/cmCPackCygwinSourceGenerator.h old mode 100755 new mode 100644 index 0618c975c..9817cf9ac --- a/Source/CPack/cmCPackCygwinSourceGenerator.h +++ b/Source/CPack/cmCPackCygwinSourceGenerator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackCygwinSourceGenerator.h,v $ - Language: C++ - Date: $Date: 2007-10-31 12:50:17 $ - Version: $Revision: 1.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackCygwinSourceGenerator_h #define cmCPackCygwinSourceGenerator_h diff --git a/Source/CPack/cmCPackDebGenerator.cxx b/Source/CPack/cmCPackDebGenerator.cxx index 30f5e08e3..9c77cc198 100644 --- a/Source/CPack/cmCPackDebGenerator.cxx +++ b/Source/CPack/cmCPackDebGenerator.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackDebGenerator.cxx,v $ - Language: C++ - Date: $Date: 2008-09-12 14:56:21 $ - Version: $Revision: 1.20.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackDebGenerator.h" #include "cmSystemTools.h" diff --git a/Source/CPack/cmCPackDebGenerator.h b/Source/CPack/cmCPackDebGenerator.h index 487fc9b78..d2299449e 100644 --- a/Source/CPack/cmCPackDebGenerator.h +++ b/Source/CPack/cmCPackDebGenerator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackDebGenerator.h,v $ - Language: C++ - Date: $Date: 2007-11-05 21:55:45 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackDebGenerator_h #define cmCPackDebGenerator_h diff --git a/Source/CPack/cmCPackDragNDropGenerator.cxx b/Source/CPack/cmCPackDragNDropGenerator.cxx index 9682d81b1..95324cf64 100644 --- a/Source/CPack/cmCPackDragNDropGenerator.cxx +++ b/Source/CPack/cmCPackDragNDropGenerator.cxx @@ -1,26 +1,53 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackDragNDropGenerator.cxx,v $ - Language: C++ - Date: $Date: 2009-02-05 03:04:12 $ - Version: $Revision: 1.1.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackDragNDropGenerator.h" #include "cmCPackLog.h" #include "cmSystemTools.h" +#include "cmGeneratedFileStream.h" #include +static const char* SLAHeader = +"data 'LPic' (5000) {\n" +" $\"0002 0011 0003 0001 0000 0000 0002 0000\"\n" +" $\"0008 0003 0000 0001 0004 0000 0004 0005\"\n" +" $\"0000 000E 0006 0001 0005 0007 0000 0007\"\n" +" $\"0008 0000 0047 0009 0000 0034 000A 0001\"\n" +" $\"0035 000B 0001 0020 000C 0000 0011 000D\"\n" +" $\"0000 005B 0004 0000 0033 000F 0001 000C\"\n" +" $\"0010 0000 000B 000E 0000\"\n" +"};\n" +"\n"; + +static const char* SLASTREnglish = +"resource 'STR#' (5002, \"English\") {\n" +" {\n" +" \"English\",\n" +" \"Agree\",\n" +" \"Disagree\",\n" +" \"Print\",\n" +" \"Save...\",\n" +" \"You agree to the License Agreement terms when you click \"\n" +" \"the \\\"Agree\\\" button.\",\n" +" \"Software License Agreement\",\n" +" \"This text cannot be saved. This disk may be full or locked, " +"or the \"\n" +" \"file may be locked.\",\n" +" \"Unable to print. Make sure you have selected a printer.\"\n" +" }\n" +"};\n" +"\n"; + //---------------------------------------------------------------------- cmCPackDragNDropGenerator::cmCPackDragNDropGenerator() { @@ -55,6 +82,17 @@ int cmCPackDragNDropGenerator::InitializeInternal() return 0; } this->SetOptionIfNotSet("CPACK_COMMAND_SETFILE", setfile_path.c_str()); + + const std::string rez_path = cmSystemTools::FindProgram("Rez", + std::vector(1, "/Developer/Tools"), false); + if(rez_path.empty()) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, + "Cannot locate Rez command" + << std::endl); + return 0; + } + this->SetOptionIfNotSet("CPACK_COMMAND_REZ", rez_path.c_str()); return this->Superclass::InitializeInternal(); } @@ -71,9 +109,93 @@ int cmCPackDragNDropGenerator::CompressFiles(const char* outFileName, { (void) files; + return this->CreateDMG(toplevel, outFileName); +} + +//---------------------------------------------------------------------- +bool cmCPackDragNDropGenerator::CopyFile(cmOStringStream& source, + cmOStringStream& target) +{ + if(!cmSystemTools::CopyFileIfDifferent( + source.str().c_str(), + target.str().c_str())) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, + "Error copying " + << source.str() + << " to " + << target.str() + << std::endl); + + return false; + } + + return true; +} + +//---------------------------------------------------------------------- +bool cmCPackDragNDropGenerator::RunCommand(cmOStringStream& command, + std::string* output) +{ + int exit_code = 1; + + bool result = cmSystemTools::RunSingleCommand( + command.str().c_str(), + output, + &exit_code, + 0, + this->GeneratorVerbose, + 0); + + if(!result || exit_code) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, + "Error executing: " + << command.str() + << std::endl); + + return false; + } + + return true; +} + +//---------------------------------------------------------------------- +int cmCPackDragNDropGenerator::CreateDMG(const std::string& toplevel, + const std::string& outFileName) +{ // Get optional arguments ... const std::string cpack_package_icon = this->GetOption("CPACK_PACKAGE_ICON") ? this->GetOption("CPACK_PACKAGE_ICON") : ""; + + const std::string cpack_dmg_volume_name = + this->GetOption("CPACK_DMG_VOLUME_NAME") + ? this->GetOption("CPACK_DMG_VOLUME_NAME") + : this->GetOption("CPACK_PACKAGE_FILE_NAME"); + + const std::string cpack_dmg_format = + this->GetOption("CPACK_DMG_FORMAT") + ? this->GetOption("CPACK_DMG_FORMAT") : "UDZO"; + + // Get optional arguments ... + std::string cpack_license_file = + this->GetOption("CPACK_RESOURCE_FILE_LICENSE") ? + this->GetOption("CPACK_RESOURCE_FILE_LICENSE") : ""; + + const std::string cpack_dmg_background_image = + this->GetOption("CPACK_DMG_BACKGROUND_IMAGE") + ? this->GetOption("CPACK_DMG_BACKGROUND_IMAGE") : ""; + + const std::string cpack_dmg_ds_store = + this->GetOption("CPACK_DMG_DS_STORE") + ? this->GetOption("CPACK_DMG_DS_STORE") : ""; + + // only put license on dmg if is user provided + if(!cpack_license_file.empty() && + cpack_license_file.find("CPack.GenericLicense.txt") != std::string::npos) + { + cpack_license_file = ""; + } // The staging directory contains everything that will end-up inside the // final disk image ... @@ -107,9 +229,66 @@ int cmCPackDragNDropGenerator::CompressFiles(const char* outFileName, } } + // Optionally add a custom .DS_Store file + // (e.g. for setting background/layout) ... + if(!cpack_dmg_ds_store.empty()) + { + cmOStringStream package_settings_source; + package_settings_source << cpack_dmg_ds_store; + + cmOStringStream package_settings_destination; + package_settings_destination << staging.str() << "/.DS_Store"; + + if(!this->CopyFile(package_settings_source, package_settings_destination)) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, + "Error copying disk volume settings file. " + "Check the value of CPACK_DMG_DS_STORE." + << std::endl); + + return 0; + } + } + + // Optionally add a custom background image ... + if(!cpack_dmg_background_image.empty()) + { + cmOStringStream package_background_source; + package_background_source << cpack_dmg_background_image; + + cmOStringStream package_background_destination; + package_background_destination << staging.str() << "/background.png"; + + if(!this->CopyFile(package_background_source, + package_background_destination)) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, + "Error copying disk volume background image. " + "Check the value of CPACK_DMG_BACKGROUND_IMAGE." + << std::endl); + + return 0; + } + + cmOStringStream temp_background_hiding_command; + temp_background_hiding_command << this->GetOption("CPACK_COMMAND_SETFILE"); + temp_background_hiding_command << " -a V \""; + temp_background_hiding_command << package_background_destination.str(); + temp_background_hiding_command << "\""; + + if(!this->RunCommand(temp_background_hiding_command)) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, + "Error setting attributes on disk volume background image." + << std::endl); + + return 0; + } + } + // Create a temporary read-write disk image ... - cmOStringStream temp_image; - temp_image << this->GetOption("CPACK_TOPLEVEL_DIRECTORY") << "/temp.dmg"; + std::string temp_image = this->GetOption("CPACK_TOPLEVEL_DIRECTORY"); + temp_image += "/temp.dmg"; cmOStringStream temp_image_command; temp_image_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); @@ -117,9 +296,9 @@ int cmCPackDragNDropGenerator::CompressFiles(const char* outFileName, temp_image_command << " -ov"; temp_image_command << " -srcfolder \"" << staging.str() << "\""; temp_image_command << " -volname \"" - << this->GetOption("CPACK_PACKAGE_FILE_NAME") << "\""; + << cpack_dmg_volume_name << "\""; temp_image_command << " -format UDRW"; - temp_image_command << " \"" << temp_image.str() << "\""; + temp_image_command << " \"" << temp_image << "\""; if(!this->RunCommand(temp_image_command)) { @@ -138,7 +317,7 @@ int cmCPackDragNDropGenerator::CompressFiles(const char* outFileName, cmOStringStream attach_command; attach_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); attach_command << " attach"; - attach_command << " \"" << temp_image.str() << "\""; + attach_command << " \"" << temp_image << "\""; std::string attach_output; if(!this->RunCommand(attach_command, &attach_output)) @@ -182,16 +361,122 @@ int cmCPackDragNDropGenerator::CompressFiles(const char* outFileName, return 0; } } + + if(!cpack_license_file.empty()) + { + std::string sla_r = this->GetOption("CPACK_TOPLEVEL_DIRECTORY"); + sla_r += "/sla.r"; + + std::ifstream ifs; + ifs.open(cpack_license_file.c_str()); + if(ifs.is_open()) + { + cmGeneratedFileStream osf(sla_r.c_str()); + osf << SLAHeader; + osf << "\n"; + osf << "data 'TEXT' (5002, \"English\") {\n"; + while(ifs.good()) + { + std::string line; + std::getline(ifs, line); + // escape quotes + std::string::size_type pos = line.find('\"'); + while(pos != std::string::npos) + { + line.replace(pos, 1, "\\\""); + pos = line.find('\"', pos+2); + } + osf << " \"" << line << "\\n\"\n"; + } + osf << "};\n"; + osf << "\n"; + osf << SLASTREnglish; + ifs.close(); + osf.close(); + } + + // convert to UDCO + std::string temp_udco = this->GetOption("CPACK_TOPLEVEL_DIRECTORY"); + temp_udco += "/temp-udco.dmg"; + + cmOStringStream udco_image_command; + udco_image_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); + udco_image_command << " convert \"" << temp_image << "\""; + udco_image_command << " -format UDCO"; + udco_image_command << " -o \"" << temp_udco << "\""; + + std::string error; + if(!this->RunCommand(udco_image_command, &error)) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, + "Error converting to UDCO dmg for adding SLA." << std::endl + << error + << std::endl); + return 0; + } + + // unflatten dmg + cmOStringStream unflatten_command; + unflatten_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); + unflatten_command << " unflatten "; + unflatten_command << "\"" << temp_udco << "\""; + + if(!this->RunCommand(unflatten_command, &error)) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, + "Error unflattening dmg for adding SLA." << std::endl + << error + << std::endl); + return 0; + } + + // Rez the SLA + cmOStringStream embed_sla_command; + embed_sla_command << "/bin/bash -c \""; // need expansion of "*.r" + embed_sla_command << this->GetOption("CPACK_COMMAND_REZ"); + embed_sla_command << " /Developer/Headers/FlatCarbon/*.r "; + embed_sla_command << "'" << sla_r << "'"; + embed_sla_command << " -a -o "; + embed_sla_command << "'" << temp_udco << "'\""; + + if(!this->RunCommand(embed_sla_command, &error)) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, + "Error adding SLA." << std::endl + << error + << std::endl); + return 0; + } + + // flatten dmg + cmOStringStream flatten_command; + flatten_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); + flatten_command << " flatten "; + flatten_command << "\"" << temp_udco << "\""; + + if(!this->RunCommand(flatten_command, &error)) + { + cmCPackLogger(cmCPackLog::LOG_ERROR, + "Error flattening dmg for adding SLA." << std::endl + << error + << std::endl); + return 0; + } + + temp_image = temp_udco; + } + // Create the final compressed read-only disk image ... cmOStringStream final_image_command; final_image_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); - final_image_command << " convert \"" << temp_image.str() << "\""; - final_image_command << " -format UDZO"; + final_image_command << " convert \"" << temp_image << "\""; + final_image_command << " -format "; + final_image_command << cpack_dmg_format; final_image_command << " -imagekey"; final_image_command << " zlib-level=9"; final_image_command << " -o \"" << outFileName << "\""; - + if(!this->RunCommand(final_image_command)) { cmCPackLogger(cmCPackLog::LOG_ERROR, @@ -203,51 +488,3 @@ int cmCPackDragNDropGenerator::CompressFiles(const char* outFileName, return 1; } - -//---------------------------------------------------------------------- -bool cmCPackDragNDropGenerator::CopyFile(cmOStringStream& source, - cmOStringStream& target) -{ - if(!cmSystemTools::CopyFileIfDifferent( - source.str().c_str(), - target.str().c_str())) - { - cmCPackLogger(cmCPackLog::LOG_ERROR, - "Error copying " - << source.str() - << " to " - << target.str() - << std::endl); - - return false; - } - - return true; -} - -//---------------------------------------------------------------------- -bool cmCPackDragNDropGenerator::RunCommand(cmOStringStream& command, - std::string* output) -{ - int exit_code = 1; - - bool result = cmSystemTools::RunSingleCommand( - command.str().c_str(), - output, - &exit_code, - 0, - this->GeneratorVerbose, - 0); - - if(!result || exit_code) - { - cmCPackLogger(cmCPackLog::LOG_ERROR, - "Error executing: " - << command.str() - << std::endl); - - return false; - } - - return true; -} diff --git a/Source/CPack/cmCPackDragNDropGenerator.h b/Source/CPack/cmCPackDragNDropGenerator.h index 3dd676671..43a9617e0 100644 --- a/Source/CPack/cmCPackDragNDropGenerator.h +++ b/Source/CPack/cmCPackDragNDropGenerator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackDragNDropGenerator.h,v $ - Language: C++ - Date: $Date: 2009-02-05 03:04:18 $ - Version: $Revision: 1.1.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackDragNDropGenerator_h #define cmCPackDragNDropGenerator_h @@ -40,8 +35,10 @@ protected: bool CopyFile(cmOStringStream& source, cmOStringStream& target); bool RunCommand(cmOStringStream& command, std::string* output = 0); + virtual int CreateDMG(const std::string& installdir, + const std::string& outdmg); + std::string InstallPrefix; }; #endif - diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx old mode 100755 new mode 100644 index 235d513e8..7c8405e9c --- a/Source/CPack/cmCPackGenerator.cxx +++ b/Source/CPack/cmCPackGenerator.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackGenerator.cxx,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:55 $ - Version: $Revision: 1.6.2.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackGenerator.h" @@ -24,11 +19,16 @@ #include "cmLocalGenerator.h" #include "cmGeneratedFileStream.h" #include "cmCPackComponentGroup.h" +#include "cmXMLSafe.h" #include #include #include // auto_ptr +#if defined(__HAIKU__) +#include +#endif + //---------------------------------------------------------------------- cmCPackGenerator::cmCPackGenerator() { @@ -143,7 +143,7 @@ int cmCPackGenerator::PrepareNames() "Read description file: " << descFileName << std::endl); while ( ifs && cmSystemTools::GetLineFromStream(ifs, line) ) { - ostr << cmSystemTools::MakeXMLSafe(line.c_str()) << std::endl; + ostr << cmXMLSafe(line) << std::endl; } this->SetOptionIfNotSet("CPACK_PACKAGE_DESCRIPTION", ostr.str().c_str()); } @@ -622,7 +622,6 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects( cmGlobalGenerator gg; gg.SetCMakeInstance(&cm); std::auto_ptr lg(gg.CreateLocalGenerator()); - lg->SetGlobalGenerator(&gg); cmMakefile *mf = lg->GetMakefile(); std::string realInstallDirectory = tempInstallDirectory; if ( !installSubDirectory.empty() && installSubDirectory != "/" ) @@ -1025,6 +1024,16 @@ const char* cmCPackGenerator::GetInstallPath() this->InstallPath += this->GetOption("CPACK_PACKAGE_NAME"); this->InstallPath += "-"; this->InstallPath += this->GetOption("CPACK_PACKAGE_VERSION"); +#elif defined(__HAIKU__) + BPath dir; + if (find_directory(B_COMMON_DIRECTORY, &dir) == B_OK) + { + this->InstallPath = dir.Path(); + } + else + { + this->InstallPath = "/boot/common"; + } #else this->InstallPath = "/usr/local/"; #endif diff --git a/Source/CPack/cmCPackGenerator.h b/Source/CPack/cmCPackGenerator.h old mode 100755 new mode 100644 index f86768fd7..45188fef5 --- a/Source/CPack/cmCPackGenerator.h +++ b/Source/CPack/cmCPackGenerator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackGenerator.h,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:55 $ - Version: $Revision: 1.2.2.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackGenerator_h #define cmCPackGenerator_h diff --git a/Source/CPack/cmCPackGeneratorFactory.cxx b/Source/CPack/cmCPackGeneratorFactory.cxx old mode 100755 new mode 100644 index 6cd3297d8..a04b40394 --- a/Source/CPack/cmCPackGeneratorFactory.cxx +++ b/Source/CPack/cmCPackGeneratorFactory.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackGeneratorFactory.cxx,v $ - Language: C++ - Date: $Date: 2009-02-04 16:44:18 $ - Version: $Revision: 1.2.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackGeneratorFactory.h" diff --git a/Source/CPack/cmCPackGeneratorFactory.h b/Source/CPack/cmCPackGeneratorFactory.h old mode 100755 new mode 100644 index 321efe4d1..dff2e49eb --- a/Source/CPack/cmCPackGeneratorFactory.h +++ b/Source/CPack/cmCPackGeneratorFactory.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackGeneratorFactory.h,v $ - Language: C++ - Date: $Date: 2007-11-05 21:55:45 $ - Version: $Revision: 1.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackGeneratorFactory_h #define cmCPackGeneratorFactory_h diff --git a/Source/CPack/cmCPackLog.cxx b/Source/CPack/cmCPackLog.cxx index 4244bd3a4..4e8bf0f4e 100644 --- a/Source/CPack/cmCPackLog.cxx +++ b/Source/CPack/cmCPackLog.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackLog.cxx,v $ - Language: C++ - Date: $Date: 2009-02-04 16:44:18 $ - Version: $Revision: 1.7.12.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackLog.h" diff --git a/Source/CPack/cmCPackLog.h b/Source/CPack/cmCPackLog.h index 7e9ca1092..812f1de27 100644 --- a/Source/CPack/cmCPackLog.h +++ b/Source/CPack/cmCPackLog.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackLog.h,v $ - Language: C++ - Date: $Date: 2006-03-10 18:06:26 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackLog_h #define cmCPackLog_h diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx index 6105c4f88..ad773862b 100644 --- a/Source/CPack/cmCPackNSISGenerator.cxx +++ b/Source/CPack/cmCPackNSISGenerator.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackNSISGenerator.cxx,v $ - Language: C++ - Date: $Date: 2009-02-04 16:44:18 $ - Version: $Revision: 1.31.2.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackNSISGenerator.h" diff --git a/Source/CPack/cmCPackNSISGenerator.h b/Source/CPack/cmCPackNSISGenerator.h index b795ff3da..dff5b8ff6 100644 --- a/Source/CPack/cmCPackNSISGenerator.h +++ b/Source/CPack/cmCPackNSISGenerator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackNSISGenerator.h,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:55 $ - Version: $Revision: 1.11.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackNSISGenerator_h #define cmCPackNSISGenerator_h diff --git a/Source/CPack/cmCPackOSXX11Generator.cxx b/Source/CPack/cmCPackOSXX11Generator.cxx index 20cf7262c..11058c9a3 100644 --- a/Source/CPack/cmCPackOSXX11Generator.cxx +++ b/Source/CPack/cmCPackOSXX11Generator.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackOSXX11Generator.cxx,v $ - Language: C++ - Date: $Date: 2009-02-04 16:44:18 $ - Version: $Revision: 1.5.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackOSXX11Generator.h" #include "cmake.h" diff --git a/Source/CPack/cmCPackOSXX11Generator.h b/Source/CPack/cmCPackOSXX11Generator.h index 5c666bc27..7fd60b4b1 100644 --- a/Source/CPack/cmCPackOSXX11Generator.h +++ b/Source/CPack/cmCPackOSXX11Generator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackOSXX11Generator.h,v $ - Language: C++ - Date: $Date: 2007-11-05 21:55:45 $ - Version: $Revision: 1.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackOSXX11Generator_h #define cmCPackOSXX11Generator_h diff --git a/Source/CPack/cmCPackPackageMakerGenerator.cxx b/Source/CPack/cmCPackPackageMakerGenerator.cxx index ebdab77ad..befbc9489 100644 --- a/Source/CPack/cmCPackPackageMakerGenerator.cxx +++ b/Source/CPack/cmCPackPackageMakerGenerator.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackPackageMakerGenerator.cxx,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:55 $ - Version: $Revision: 1.23.2.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackPackageMakerGenerator.h" #include "cmake.h" diff --git a/Source/CPack/cmCPackPackageMakerGenerator.h b/Source/CPack/cmCPackPackageMakerGenerator.h index a09742856..36cd5940e 100644 --- a/Source/CPack/cmCPackPackageMakerGenerator.h +++ b/Source/CPack/cmCPackPackageMakerGenerator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackPackageMakerGenerator.h,v $ - Language: C++ - Date: $Date: 2008-07-30 18:54:50 $ - Version: $Revision: 1.12.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackPackageMakerGenerator_h #define cmCPackPackageMakerGenerator_h diff --git a/Source/CPack/cmCPackRPMGenerator.cxx b/Source/CPack/cmCPackRPMGenerator.cxx index 19d941bd7..fb85581b8 100644 --- a/Source/CPack/cmCPackRPMGenerator.cxx +++ b/Source/CPack/cmCPackRPMGenerator.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackRPMGenerator.cxx,v $ - Language: C++ - Date: $Date: 2007-10-31 12:50:17 $ - Version: $Revision: 1.6 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackRPMGenerator.h" #include "cmCPackLog.h" diff --git a/Source/CPack/cmCPackRPMGenerator.h b/Source/CPack/cmCPackRPMGenerator.h index 3de998de6..c607f3577 100644 --- a/Source/CPack/cmCPackRPMGenerator.h +++ b/Source/CPack/cmCPackRPMGenerator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackRPMGenerator.h,v $ - Language: C++ - Date: $Date: 2007-11-05 21:55:45 $ - Version: $Revision: 1.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackRPMGenerator_h #define cmCPackRPMGenerator_h diff --git a/Source/CPack/cmCPackSTGZGenerator.cxx b/Source/CPack/cmCPackSTGZGenerator.cxx index f7a7aed03..a687e0d45 100644 --- a/Source/CPack/cmCPackSTGZGenerator.cxx +++ b/Source/CPack/cmCPackSTGZGenerator.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackSTGZGenerator.cxx,v $ - Language: C++ - Date: $Date: 2006-05-12 18:44:24 $ - Version: $Revision: 1.15 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackSTGZGenerator.h" diff --git a/Source/CPack/cmCPackSTGZGenerator.h b/Source/CPack/cmCPackSTGZGenerator.h index 790bd33d2..fc51e4d79 100644 --- a/Source/CPack/cmCPackSTGZGenerator.h +++ b/Source/CPack/cmCPackSTGZGenerator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackSTGZGenerator.h,v $ - Language: C++ - Date: $Date: 2007-02-02 19:40:26 $ - Version: $Revision: 1.8 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackSTGZGenerator_h #define cmCPackSTGZGenerator_h diff --git a/Source/CPack/cmCPackTGZGenerator.cxx b/Source/CPack/cmCPackTGZGenerator.cxx index b57242438..3ca0e53ce 100644 --- a/Source/CPack/cmCPackTGZGenerator.cxx +++ b/Source/CPack/cmCPackTGZGenerator.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackTGZGenerator.cxx,v $ - Language: C++ - Date: $Date: 2007-09-27 18:44:10 $ - Version: $Revision: 1.19 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackTGZGenerator.h" diff --git a/Source/CPack/cmCPackTGZGenerator.h b/Source/CPack/cmCPackTGZGenerator.h index e7b490003..099775dd8 100644 --- a/Source/CPack/cmCPackTGZGenerator.h +++ b/Source/CPack/cmCPackTGZGenerator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackTGZGenerator.h,v $ - Language: C++ - Date: $Date: 2007-11-05 21:55:45 $ - Version: $Revision: 1.11 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackTGZGenerator_h #define cmCPackTGZGenerator_h diff --git a/Source/CPack/cmCPackTarBZip2Generator.cxx b/Source/CPack/cmCPackTarBZip2Generator.cxx index e64ebcedb..de7f16c18 100644 --- a/Source/CPack/cmCPackTarBZip2Generator.cxx +++ b/Source/CPack/cmCPackTarBZip2Generator.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackTarBZip2Generator.cxx,v $ - Language: C++ - Date: $Date: 2007-02-02 21:52:20 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackTarBZip2Generator.h" diff --git a/Source/CPack/cmCPackTarBZip2Generator.h b/Source/CPack/cmCPackTarBZip2Generator.h index 4142bad9a..7b4ed650e 100644 --- a/Source/CPack/cmCPackTarBZip2Generator.h +++ b/Source/CPack/cmCPackTarBZip2Generator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackTarBZip2Generator.h,v $ - Language: C++ - Date: $Date: 2007-02-02 19:40:26 $ - Version: $Revision: 1.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackTarBZip2Generator_h #define cmCPackTarBZip2Generator_h diff --git a/Source/CPack/cmCPackTarCompressGenerator.cxx b/Source/CPack/cmCPackTarCompressGenerator.cxx index 6775eeaf4..d7513b633 100644 --- a/Source/CPack/cmCPackTarCompressGenerator.cxx +++ b/Source/CPack/cmCPackTarCompressGenerator.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackTarCompressGenerator.cxx,v $ - Language: C++ - Date: $Date: 2007-07-31 02:51:21 $ - Version: $Revision: 1.9 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackTarCompressGenerator.h" diff --git a/Source/CPack/cmCPackTarCompressGenerator.h b/Source/CPack/cmCPackTarCompressGenerator.h index 82df3dee4..3c18056f4 100644 --- a/Source/CPack/cmCPackTarCompressGenerator.h +++ b/Source/CPack/cmCPackTarCompressGenerator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackTarCompressGenerator.h,v $ - Language: C++ - Date: $Date: 2007-02-02 19:40:26 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackTarCompressGenerator_h #define cmCPackTarCompressGenerator_h diff --git a/Source/CPack/cmCPackZIPGenerator.cxx b/Source/CPack/cmCPackZIPGenerator.cxx index 27de554f4..992449792 100644 --- a/Source/CPack/cmCPackZIPGenerator.cxx +++ b/Source/CPack/cmCPackZIPGenerator.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackZIPGenerator.cxx,v $ - Language: C++ - Date: $Date: 2007-07-27 14:55:24 $ - Version: $Revision: 1.11 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCPackZIPGenerator.h" diff --git a/Source/CPack/cmCPackZIPGenerator.h b/Source/CPack/cmCPackZIPGenerator.h index 6aa141060..7ff0dc3b8 100644 --- a/Source/CPack/cmCPackZIPGenerator.h +++ b/Source/CPack/cmCPackZIPGenerator.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPackZIPGenerator.h,v $ - Language: C++ - Date: $Date: 2007-11-05 21:55:45 $ - Version: $Revision: 1.6 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCPackZIPGenerator_h #define cmCPackZIPGenerator_h diff --git a/Source/CPack/cpack.cxx b/Source/CPack/cpack.cxx index 91ae67f1d..243d9c995 100644 --- a/Source/CPack/cpack.cxx +++ b/Source/CPack/cpack.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cpack.cxx,v $ - Language: C++ - Date: $Date: 2009-02-04 16:44:18 $ - Version: $Revision: 1.42.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmSystemTools.h" // Need these for documentation support. @@ -359,10 +354,11 @@ int main (int argc, char *argv[]) "CPack project name not specified" << std::endl); parsed = 0; } - if ( parsed && !(mf->GetDefinition("CPACK_PACKAGE_VERSION") - || mf->GetDefinition("CPACK_PACKAGE_VERSION_MAJOR") && - mf->GetDefinition("CPACK_PACKAGE_VERSION_MINOR") - && mf->GetDefinition("CPACK_PACKAGE_VERSION_PATCH")) ) + if (parsed && + !(mf->GetDefinition("CPACK_PACKAGE_VERSION") || + (mf->GetDefinition("CPACK_PACKAGE_VERSION_MAJOR") && + mf->GetDefinition("CPACK_PACKAGE_VERSION_MINOR") && + mf->GetDefinition("CPACK_PACKAGE_VERSION_PATCH")))) { cmCPack_Log(&log, cmCPackLog::LOG_ERROR, "CPack project version not specified" << std::endl diff --git a/Source/CTest/cmCTestBZR.cxx b/Source/CTest/cmCTestBZR.cxx new file mode 100644 index 000000000..d8ec9cdd5 --- /dev/null +++ b/Source/CTest/cmCTestBZR.cxx @@ -0,0 +1,520 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmCTestBZR.h" + +#include "cmCTest.h" +#include "cmSystemTools.h" +#include "cmXMLParser.h" +#include "cmXMLSafe.h" + +#include + +#include + +//---------------------------------------------------------------------------- +extern "C" +int cmBZRXMLParserUnknownEncodingHandler(void*, + const XML_Char *name, + XML_Encoding *info) +{ + static const int latin1[]= + { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, + 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008D, 0x017D, 0x008F, + 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, + 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x009D, 0x017E, 0x0178, + 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, + 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, + 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, + 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, + 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, + 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, + 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, + 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, + 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, + 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, + 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF + }; + + // The BZR xml output plugin can use some encodings that are not + // recognized by expat. This will lead to an error, e.g. "Error + // parsing bzr log xml: unknown encoding", the following is a + // workaround for these unknown encodings. + if(name == std::string("ascii") || name == std::string("cp1252") || + name == std::string("ANSI_X3.4-1968")) + { + for(unsigned int i=0;i<256;++i) info->map[i] = latin1[i]; + return 1; + } + + return 0; +} + +//---------------------------------------------------------------------------- +cmCTestBZR::cmCTestBZR(cmCTest* ct, std::ostream& log): + cmCTestGlobalVC(ct, log) +{ + this->PriorRev = this->Unknown; + // Even though it is specified in the documention, with bzr 1.13 + // BZR_PROGRESS_BAR has no effect. In the future this bug might be fixed. + // Since it doesn't hurt, we specify this environment variable. + cmSystemTools::PutEnv("BZR_PROGRESS_BAR=none"); +} + +//---------------------------------------------------------------------------- +cmCTestBZR::~cmCTestBZR() +{ +} + +//---------------------------------------------------------------------------- +class cmCTestBZR::InfoParser: public cmCTestVC::LineParser +{ +public: + InfoParser(cmCTestBZR* bzr, const char* prefix): + BZR(bzr), CheckOutFound(false) + { + this->SetLog(&bzr->Log, prefix); + this->RegexCheckOut.compile("checkout of branch: *([^\t\r\n]+)$"); + this->RegexParent.compile("parent branch: *([^\t\r\n]+)$"); + } +private: + cmCTestBZR* BZR; + bool CheckOutFound; + cmsys::RegularExpression RegexCheckOut; + cmsys::RegularExpression RegexParent; + virtual bool ProcessLine() + { + if(this->RegexCheckOut.find(this->Line)) + { + this->BZR->URL = this->RegexCheckOut.match(1); + CheckOutFound = true; + } + else if(!CheckOutFound && this->RegexParent.find(this->Line)) + { + this->BZR->URL = this->RegexParent.match(1); + } + return true; + } +}; + +//---------------------------------------------------------------------------- +class cmCTestBZR::RevnoParser: public cmCTestVC::LineParser +{ +public: + RevnoParser(cmCTestBZR* bzr, const char* prefix, std::string& rev): + BZR(bzr), Rev(rev) + { + this->SetLog(&bzr->Log, prefix); + this->RegexRevno.compile("^([0-9]+)$"); + } +private: + cmCTestBZR* BZR; + std::string& Rev; + cmsys::RegularExpression RegexRevno; + virtual bool ProcessLine() + { + if(this->RegexRevno.find(this->Line)) + { + this->Rev = this->RegexRevno.match(1); + } + return true; + } +}; + +//---------------------------------------------------------------------------- +std::string cmCTestBZR::LoadInfo() +{ + // Run "bzr info" to get the repository info from the work tree. + const char* bzr = this->CommandLineTool.c_str(); + const char* bzr_info[] = {bzr, "info", 0}; + InfoParser iout(this, "info-out> "); + OutputLogger ierr(this->Log, "info-err> "); + this->RunChild(bzr_info, &iout, &ierr); + + // Run "bzr revno" to get the repository revision number from the work tree. + const char* bzr_revno[] = {bzr, "revno", 0}; + std::string rev; + RevnoParser rout(this, "revno-out> ", rev); + OutputLogger rerr(this->Log, "revno-err> "); + this->RunChild(bzr_revno, &rout, &rerr); + + return rev; +} + +void cmCTestBZR::NoteOldRevision() +{ + this->OldRevision = this->LoadInfo(); + this->Log << "Revision before update: " << this->OldRevision << "\n"; + cmCTestLog(this->CTest, HANDLER_OUTPUT, " Old revision of repository is: " + << this->OldRevision << "\n"); + this->PriorRev.Rev = this->OldRevision; +} + +//---------------------------------------------------------------------------- +void cmCTestBZR::NoteNewRevision() +{ + this->NewRevision = this->LoadInfo(); + this->Log << "Revision after update: " << this->NewRevision << "\n"; + cmCTestLog(this->CTest, HANDLER_OUTPUT, " New revision of repository is: " + << this->NewRevision << "\n"); + this->Log << "URL = " << this->URL << "\n"; +} + +//---------------------------------------------------------------------------- +class cmCTestBZR::LogParser: public cmCTestVC::OutputLogger, + private cmXMLParser +{ +public: + LogParser(cmCTestBZR* bzr, const char* prefix): + OutputLogger(bzr->Log, prefix), BZR(bzr), + EmailRegex("(.*) <([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+)>") + { this->InitializeParser(); } + ~LogParser() { this->CleanupParser(); } + + virtual int InitializeParser() + { + int res = cmXMLParser::InitializeParser(); + if (res) + { + XML_SetUnknownEncodingHandler(static_cast(this->Parser), + cmBZRXMLParserUnknownEncodingHandler, 0); + } + return res; + } +private: + cmCTestBZR* BZR; + + typedef cmCTestBZR::Revision Revision; + typedef cmCTestBZR::Change Change; + Revision Rev; + std::vector Changes; + Change CurChange; + std::vector CData; + + cmsys::RegularExpression EmailRegex; + + virtual bool ProcessChunk(const char* data, int length) + { + this->OutputLogger::ProcessChunk(data, length); + this->ParseChunk(data, length); + return true; + } + + virtual void StartElement(const char* name, const char**) + { + this->CData.clear(); + if(strcmp(name, "log") == 0) + { + this->Rev = Revision(); + this->Changes.clear(); + } + // affected-files can contain blocks of + // modified, unknown, renamed, kind-changed, removed, conflicts, added + else if(strcmp(name, "modified") == 0 + || strcmp(name, "renamed") == 0 + || strcmp(name, "kind-changed") == 0) + { + this->CurChange = Change(); + this->CurChange.Action = 'M'; + } + else if(strcmp(name, "added") == 0) + { + this->CurChange = Change(); + this->CurChange = 'A'; + } + else if(strcmp(name, "removed") == 0) + { + this->CurChange = Change(); + this->CurChange = 'D'; + } + else if(strcmp(name, "unknown") == 0 + || strcmp(name, "conflicts") == 0) + { + // Should not happen here + this->CurChange = Change(); + } + } + + virtual void CharacterDataHandler(const char* data, int length) + { + this->CData.insert(this->CData.end(), data, data+length); + } + + virtual void EndElement(const char* name) + { + if(strcmp(name, "log") == 0) + { + this->BZR->DoRevision(this->Rev, this->Changes); + } + else if((strcmp(name, "file") == 0 || strcmp(name, "directory") == 0) + && !this->CData.empty()) + { + this->CurChange.Path.assign(&this->CData[0], this->CData.size()); + this->Changes.push_back(this->CurChange); + } + else if(strcmp(name, "symlink") == 0 && !this->CData.empty()) + { + // symlinks have an arobase at the end in the log + this->CurChange.Path.assign(&this->CData[0], this->CData.size()-1); + this->Changes.push_back(this->CurChange); + } + else if(strcmp(name, "committer") == 0 && !this->CData.empty()) + { + this->Rev.Author.assign(&this->CData[0], this->CData.size()); + if(this->EmailRegex.find(this->Rev.Author)) + { + this->Rev.Author = this->EmailRegex.match(1); + //email = email_regex.match(2); + } + } + else if(strcmp(name, "timestamp") == 0 && !this->CData.empty()) + { + this->Rev.Date.assign(&this->CData[0], this->CData.size()); + } + else if(strcmp(name, "message") == 0 && !this->CData.empty()) + { + this->Rev.Log.assign(&this->CData[0], this->CData.size()); + } + else if(strcmp(name, "revno") == 0 && !this->CData.empty()) + { + this->Rev.Rev.assign(&this->CData[0], this->CData.size()); + } + this->CData.clear(); + } + + virtual void ReportError(int, int, const char* msg) + { + this->BZR->Log << "Error parsing bzr log xml: " << msg << "\n"; + } +}; + +//---------------------------------------------------------------------------- +class cmCTestBZR::UpdateParser: public cmCTestVC::LineParser +{ +public: + UpdateParser(cmCTestBZR* bzr, const char* prefix): BZR(bzr) + { + this->SetLog(&bzr->Log, prefix); + this->RegexUpdate.compile("^([-+R?XCP ])([NDKM ])([* ]) +(.+)$"); + } +private: + cmCTestBZR* BZR; + cmsys::RegularExpression RegexUpdate; + + virtual bool ProcessChunk(const char* first, int length) + { + bool last_is_new_line = (*first == '\r' || *first == '\n'); + + const char* const last = first + length; + for(const char* c = first; c != last; ++c) + { + if(*c == '\r' || *c == '\n') + { + if(!last_is_new_line) + { + // Log this line. + if(this->Log && this->Prefix) + { + *this->Log << this->Prefix << this->Line << "\n"; + } + + // Hand this line to the subclass implementation. + if(!this->ProcessLine()) + { + this->Line = ""; + return false; + } + + this->Line = ""; + last_is_new_line = true; + } + } + else + { + // Append this character to the line under construction. + this->Line.append(1, *c); + last_is_new_line = false; + } + } + return true; + } + + bool ProcessLine() + { + if(this->RegexUpdate.find(this->Line)) + { + this->DoPath(this->RegexUpdate.match(1)[0], + this->RegexUpdate.match(2)[0], + this->RegexUpdate.match(3)[0], + this->RegexUpdate.match(4)); + } + return true; + } + + void DoPath(char c0, char c1, char c2, std::string const& path) + { + if(path.empty()) return; + + const std::string dir = cmSystemTools::GetFilenamePath(path); + const std::string name = cmSystemTools::GetFilenameName(path); + + if ( c0=='C' ) + { + this->BZR->Dirs[dir][name].Status = PathConflicting; + return; + } + + if ( c1=='M' || c1=='K' || c1=='N' || c1=='D' || c2 =='*' ) + { + this->BZR->Dirs[dir][name].Status = PathUpdated; + return; + } + } +}; + +//---------------------------------------------------------------------------- +bool cmCTestBZR::UpdateImpl() +{ + // Get user-specified update options. + std::string opts = this->CTest->GetCTestConfiguration("UpdateOptions"); + if(opts.empty()) + { + opts = this->CTest->GetCTestConfiguration("BZRUpdateOptions"); + } + std::vector args = cmSystemTools::ParseArguments(opts.c_str()); + + // TODO: if(this->CTest->GetTestModel() == cmCTest::NIGHTLY) + + // Use "bzr pull" to update the working tree. + std::vector bzr_update; + bzr_update.push_back(this->CommandLineTool.c_str()); + bzr_update.push_back("pull"); + + for(std::vector::const_iterator ai = args.begin(); + ai != args.end(); ++ai) + { + bzr_update.push_back(ai->c_str()); + } + + bzr_update.push_back(this->URL.c_str()); + + bzr_update.push_back(0); + + // For some reason bzr uses stderr to display the update status. + OutputLogger out(this->Log, "pull-out> "); + UpdateParser err(this, "pull-err> "); + return this->RunUpdateCommand(&bzr_update[0], &out, &err); +} + +//---------------------------------------------------------------------------- +void cmCTestBZR::LoadRevisions() +{ + cmCTestLog(this->CTest, HANDLER_OUTPUT, + " Gathering version information (one . per revision):\n" + " " << std::flush); + + // We are interested in every revision included in the update. + this->Revisions.clear(); + std::string revs; + if(atoi(this->OldRevision.c_str()) <= atoi(this->NewRevision.c_str())) + { + // DoRevision takes care of discarding the information about OldRevision + revs = this->OldRevision + ".." + this->NewRevision; + } + else + { + return; + } + + // Run "bzr log" to get all global revisions of interest. + const char* bzr = this->CommandLineTool.c_str(); + const char* bzr_log[] = {bzr, "log", "-v", "-r", revs.c_str(), "--xml", + this->URL.c_str(), 0}; + { + LogParser out(this, "log-out> "); + OutputLogger err(this->Log, "log-err> "); + this->RunChild(bzr_log, &out, &err); + } + cmCTestLog(this->CTest, HANDLER_OUTPUT, std::endl); +} + +//---------------------------------------------------------------------------- +class cmCTestBZR::StatusParser: public cmCTestVC::LineParser +{ +public: + StatusParser(cmCTestBZR* bzr, const char* prefix): BZR(bzr) + { + this->SetLog(&bzr->Log, prefix); + this->RegexStatus.compile("^([-+R?XCP ])([NDKM ])([* ]) +(.+)$"); + } +private: + cmCTestBZR* BZR; + cmsys::RegularExpression RegexStatus; + bool ProcessLine() + { + if(this->RegexStatus.find(this->Line)) + { + this->DoPath(this->RegexStatus.match(1)[0], + this->RegexStatus.match(2)[0], + this->RegexStatus.match(3)[0], + this->RegexStatus.match(4)); + } + return true; + } + + void DoPath(char c0, char c1, char c2, std::string const& path) + { + if(path.empty()) return; + + if ( c0=='C' ) + { + this->BZR->DoModification(PathConflicting, path); + return; + } + + if ( c0 == '+' || c0 == 'R' || c0 == 'P' + || c1=='M' || c1=='K' || c1=='N' || c1=='D' + || c2 =='*' ) + { + this->BZR->DoModification(PathModified, path); + return; + } + } +}; + +//---------------------------------------------------------------------------- +void cmCTestBZR::LoadModifications() +{ + // Run "bzr status" which reports local modifications. + const char* bzr = this->CommandLineTool.c_str(); + const char* bzr_status[] = {bzr, "status", "-SV", 0}; + StatusParser out(this, "status-out> "); + OutputLogger err(this->Log, "status-err> "); + this->RunChild(bzr_status, &out, &err); +} diff --git a/Source/CTest/cmCTestBZR.h b/Source/CTest/cmCTestBZR.h new file mode 100644 index 000000000..df688e1ee --- /dev/null +++ b/Source/CTest/cmCTestBZR.h @@ -0,0 +1,55 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmCTestBZR_h +#define cmCTestBZR_h + +#include "cmCTestGlobalVC.h" + +/** \class cmCTestBZR + * \brief Interaction with bzr command-line tool + * + */ +class cmCTestBZR: public cmCTestGlobalVC +{ +public: + /** Construct with a CTest instance and update log stream. */ + cmCTestBZR(cmCTest* ctest, std::ostream& log); + + virtual ~cmCTestBZR(); + +private: + // Implement cmCTestVC internal API. + virtual void NoteOldRevision(); + virtual void NoteNewRevision(); + virtual bool UpdateImpl(); + + // URL of repository directory checked out in the working tree. + std::string URL; + + std::string LoadInfo(); + void LoadModifications(); + void LoadRevisions(); + + // Parsing helper classes. + class InfoParser; + class RevnoParser; + class LogParser; + class UpdateParser; + class StatusParser; + friend class InfoParser; + friend class RevnoParser; + friend class LogParser; + friend class UpdateParser; + friend class StatusParser; +}; + +#endif diff --git a/Source/CTest/cmCTestBatchTestHandler.cxx b/Source/CTest/cmCTestBatchTestHandler.cxx new file mode 100644 index 000000000..7c33d7015 --- /dev/null +++ b/Source/CTest/cmCTestBatchTestHandler.cxx @@ -0,0 +1,143 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ + +#include "cmCTestBatchTestHandler.h" +#include "cmProcess.h" +#include "cmStandardIncludes.h" +#include "cmCTest.h" +#include "cmSystemTools.h" +#include + +cmCTestBatchTestHandler::~cmCTestBatchTestHandler() +{ +} + +//--------------------------------------------------------- +void cmCTestBatchTestHandler::RunTests() +{ + this->WriteBatchScript(); + //this->SubmitBatchScript(); +} + +//--------------------------------------------------------- +void cmCTestBatchTestHandler::WriteBatchScript() +{ + this->Script = this->CTest->GetBinaryDir() + + "/Testing/CTestBatch.txt"; + std::fstream fout; + fout.open(this->Script.c_str(), std::ios::out); + fout << "#!/bin/sh\n"; + + for(TestMap::iterator i = this->Tests.begin(); i != this->Tests.end(); ++i) + { + this->WriteSrunArgs(i->first, fout); + this->WriteTestCommand(i->first, fout); + fout << "\n"; + } + fout.flush(); + fout.close(); +} + +//--------------------------------------------------------- +void cmCTestBatchTestHandler::WriteSrunArgs(int test, std::fstream& fout) +{ + cmCTestTestHandler::cmCTestTestProperties* properties = + this->Properties[test]; + + fout << "srun "; + //fout << "--jobid=" << test << " "; + fout << "-J=" << properties->Name << " "; + + //Write dependency information + /*if(this->Tests[test].size() > 0) + { + fout << "-P=afterany"; + for(TestSet::iterator i = this->Tests[test].begin(); + i != this->Tests[test].end(); ++i) + { + fout << ":" << *i; + } + fout << " "; + }*/ + if(properties->RunSerial) + { + fout << "--exclusive "; + } + if(properties->Processors > 1) + { + fout << "-n" << properties->Processors << " "; + } +} + +//--------------------------------------------------------- +void cmCTestBatchTestHandler::WriteTestCommand(int test, std::fstream& fout) +{ + std::vector args = this->Properties[test]->Args; + std::vector processArgs; + std::string command; + + command = this->TestHandler->FindTheExecutable(args[1].c_str()); + command = cmSystemTools::ConvertToOutputPath(command.c_str()); + + //Prepends memcheck args to our command string if this is a memcheck + this->TestHandler->GenerateTestCommand(processArgs); + processArgs.push_back(command); + + for(std::vector::iterator arg = processArgs.begin(); + arg != processArgs.end(); ++arg) + { + fout << *arg << " "; + } + + std::vector::iterator i = args.begin(); + ++i; //the test name + ++i; //the executable (command) + if(args.size() > 2) + { + fout << "'"; + } + while(i != args.end()) + { + fout << "\"" << *i << "\""; //args to the test executable + ++i; + + if(i == args.end() && args.size() > 2) + { + fout << "'"; + } + fout << " "; + } + //TODO ZACH build TestResult.FullCommandLine + //this->TestResult.FullCommandLine = this->TestCommand; +} + +//--------------------------------------------------------- +void cmCTestBatchTestHandler::SubmitBatchScript() +{ + cmProcess sbatch; + std::vector args; + args.push_back(this->Script); + args.push_back("-o"); + args.push_back(this->CTest->GetBinaryDir() + + "/Testing/CTestBatchOutput.txt"); + + sbatch.SetCommand("sbatch"); + sbatch.SetCommandArguments(args); + if(sbatch.StartProcess()) + { + //success condition + } + else + { + //fail condition + } +} diff --git a/Source/CTest/cmCTestBatchTestHandler.h b/Source/CTest/cmCTestBatchTestHandler.h new file mode 100644 index 000000000..fdfd1be29 --- /dev/null +++ b/Source/CTest/cmCTestBatchTestHandler.h @@ -0,0 +1,41 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ + +#ifndef cmCTestBatchTestHandler_h +#define cmCTestBatchTestHandler_h + +#include +#include +#include +#include + +/** \class cmCTestBatchTestHandler + * \brief run parallel ctest + * + * cmCTestBatchTestHandler + */ +class cmCTestBatchTestHandler : public cmCTestMultiProcessHandler +{ +public: + ~cmCTestBatchTestHandler(); + virtual void RunTests(); +protected: + void WriteBatchScript(); + void WriteSrunArgs(int test, std::fstream& fout); + void WriteTestCommand(int test, std::fstream& fout); + + void SubmitBatchScript(); + + std::string Script; +}; + +#endif diff --git a/Source/CTest/cmCTestBuildAndTestHandler.cxx b/Source/CTest/cmCTestBuildAndTestHandler.cxx index ea534f717..46d9f2601 100644 --- a/Source/CTest/cmCTestBuildAndTestHandler.cxx +++ b/Source/CTest/cmCTestBuildAndTestHandler.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestBuildAndTestHandler.cxx,v $ - Language: C++ - Date: $Date: 2009-01-13 18:03:54 $ - Version: $Revision: 1.20.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestBuildAndTestHandler.h" @@ -159,6 +154,14 @@ void CMakeStdoutCallback(const char* m, int len, void* s) std::string* out = (std::string*)s; out->append(m, len); } +struct cmSetupOutputCaptureCleanup +{ + ~cmSetupOutputCaptureCleanup() + { + cmSystemTools::SetErrorCallback(0, 0); + cmSystemTools::SetStdoutCallback(0, 0); + } +}; //---------------------------------------------------------------------- int cmCTestBuildAndTestHandler::RunCMakeAndTest(std::string* outstring) @@ -167,6 +170,11 @@ int cmCTestBuildAndTestHandler::RunCMakeAndTest(std::string* outstring) std::string cmakeOutString; cmSystemTools::SetErrorCallback(CMakeMessageCallback, &cmakeOutString); cmSystemTools::SetStdoutCallback(CMakeStdoutCallback, &cmakeOutString); + // make sure SetStdoutCallback and SetErrorCallback are set to null + // after this function exits so that they do not point at a destroyed + // string cmakeOutString + cmSetupOutputCaptureCleanup cleanup; + static_cast(cleanup); cmOStringStream out; // if the generator and make program are not specified then it is an error @@ -382,7 +390,7 @@ int cmCTestBuildAndTestHandler::RunCMakeAndTest(std::string* outstring) } int runTestRes = this->CTest->RunTest(testCommand, &outs, &retval, 0, - remainingTime); + remainingTime, 0); if(runTestRes != cmsysProcess_State_Exited || retval != 0) { diff --git a/Source/CTest/cmCTestBuildAndTestHandler.h b/Source/CTest/cmCTestBuildAndTestHandler.h index 750b8f7f4..6e5f7a6ab 100644 --- a/Source/CTest/cmCTestBuildAndTestHandler.h +++ b/Source/CTest/cmCTestBuildAndTestHandler.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestBuildAndTestHandler.h,v $ - Language: C++ - Date: $Date: 2007-03-19 17:04:10 $ - Version: $Revision: 1.6 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestBuildAndTestHandler_h #define cmCTestBuildAndTestHandler_h diff --git a/Source/CTest/cmCTestBuildCommand.cxx b/Source/CTest/cmCTestBuildCommand.cxx old mode 100755 new mode 100644 index 5515bd699..3fe1c0002 --- a/Source/CTest/cmCTestBuildCommand.cxx +++ b/Source/CTest/cmCTestBuildCommand.cxx @@ -1,23 +1,19 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestBuildCommand.cxx,v $ - Language: C++ - Date: $Date: 2007-09-17 14:40:57 $ - Version: $Revision: 1.18 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestBuildCommand.h" #include "cmCTest.h" #include "cmCTestGenericHandler.h" +#include "cmCTestBuildHandler.h" #include "cmake.h" #include "cmGlobalGenerator.h" @@ -26,6 +22,10 @@ cmCTestBuildCommand::cmCTestBuildCommand() { this->GlobalGenerator = 0; + this->Arguments[ctb_NUMBER_ERRORS] = "NUMBER_ERRORS"; + this->Arguments[ctb_NUMBER_WARNINGS] = "NUMBER_WARNINGS"; + this->Arguments[ctb_LAST] = 0; + this->Last = ctb_LAST; } //---------------------------------------------------------------------------- @@ -48,7 +48,7 @@ cmCTestGenericHandler* cmCTestBuildCommand::InitializeHandler() this->SetError("internal CTest error. Cannot instantiate build handler"); return 0; } - + this->Handler = (cmCTestBuildHandler*)handler; const char* ctestBuildCommand = this->Makefile->GetDefinition("CTEST_BUILD_COMMAND"); if ( ctestBuildCommand && *ctestBuildCommand ) @@ -128,7 +128,34 @@ cmCTestGenericHandler* cmCTestBuildCommand::InitializeHandler() } } + if(const char* useLaunchers = + this->Makefile->GetDefinition("CTEST_USE_LAUNCHERS")) + { + this->CTest->SetCTestConfiguration("UseLaunchers", useLaunchers); + } + return handler; } +bool cmCTestBuildCommand::InitialPass(std::vector const& args, + cmExecutionStatus &status) +{ + bool ret = cmCTestHandlerCommand::InitialPass(args, status); + if ( this->Values[ctb_NUMBER_ERRORS] && *this->Values[ctb_NUMBER_ERRORS]) + { + cmOStringStream str; + str << this->Handler->GetTotalErrors(); + this->Makefile->AddDefinition( + this->Values[ctb_NUMBER_ERRORS], str.str().c_str()); + } + if ( this->Values[ctb_NUMBER_WARNINGS] + && *this->Values[ctb_NUMBER_WARNINGS]) + { + cmOStringStream str; + str << this->Handler->GetTotalWarnings(); + this->Makefile->AddDefinition( + this->Values[ctb_NUMBER_WARNINGS], str.str().c_str()); + } + return ret; +} diff --git a/Source/CTest/cmCTestBuildCommand.h b/Source/CTest/cmCTestBuildCommand.h old mode 100755 new mode 100644 index 245b71099..8122eeedf --- a/Source/CTest/cmCTestBuildCommand.h +++ b/Source/CTest/cmCTestBuildCommand.h @@ -1,25 +1,21 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestBuildCommand.h,v $ - Language: C++ - Date: $Date: 2008-05-15 19:39:57 $ - Version: $Revision: 1.5.12.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestBuildCommand_h #define cmCTestBuildCommand_h #include "cmCTestHandlerCommand.h" class cmGlobalGenerator; +class cmCTestBuildHandler; /** \class cmCTestBuild * \brief Run a ctest script @@ -54,17 +50,26 @@ public: */ virtual const char* GetTerseDocumentation() { - return "Builds the repository."; + return "Build the project."; } - + virtual bool InitialPass(std::vector const& args, + cmExecutionStatus &status); /** * More documentation. */ virtual const char* GetFullDocumentation() { return - " ctest_build([BUILD build_dir] [RETURN_VALUE res])\n" - "Builds the given build directory and stores results in Build.xml."; + " ctest_build([BUILD build_dir] [RETURN_VALUE res] [APPEND]\n" + " [NUMBER_ERRORS val] [NUMBER_WARNINGS val])\n" + "Builds the given build directory and stores results in Build.xml. " + "If no BUILD is given, the CTEST_BINARY_DIRECTORY variable is used. " + "The RETURN_VALUE option specifies a variable in which to store the " + "return value of the native build tool. " + "The NUMBER_ERRORS and NUMBER_WARNINGS options specify variables in " + "which to store the number of build errors and warnings detected." + "\n" + CTEST_COMMAND_APPEND_OPTION_DOCS; } cmTypeMacro(cmCTestBuildCommand, cmCTestHandlerCommand); @@ -72,6 +77,14 @@ public: cmGlobalGenerator* GlobalGenerator; protected: + cmCTestBuildHandler* Handler; + enum { + ctb_BUILD = ct_LAST, + ctb_NUMBER_ERRORS, + ctb_NUMBER_WARNINGS, + ctb_LAST + }; + cmCTestGenericHandler* InitializeHandler(); }; diff --git a/Source/CTest/cmCTestBuildHandler.cxx b/Source/CTest/cmCTestBuildHandler.cxx old mode 100755 new mode 100644 index 7f25ebc31..d93da07b8 --- a/Source/CTest/cmCTestBuildHandler.cxx +++ b/Source/CTest/cmCTestBuildHandler.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestBuildHandler.cxx,v $ - Language: C++ - Date: $Date: 2009-01-13 18:03:54 $ - Version: $Revision: 1.61.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestBuildHandler.h" @@ -23,9 +18,12 @@ #include "cmLocalGenerator.h" #include "cmGlobalGenerator.h" #include "cmGeneratedFileStream.h" +#include "cmXMLSafe.h" +#include "cmFileTimeComparison.h" //#include #include +#include // used for sleep #ifdef _WIN32 @@ -184,6 +182,7 @@ cmCTestBuildHandler::cmCTestBuildHandler() this->LastErrorOrWarning = this->ErrorsAndWarnings.end(); + this->UseCTestLaunch = false; } //---------------------------------------------------------------------- @@ -196,6 +195,8 @@ void cmCTestBuildHandler::Initialize() this->CustomErrorExceptions.clear(); this->CustomWarningMatches.clear(); this->CustomWarningExceptions.clear(); + this->ReallyCustomWarningMatches.clear(); + this->ReallyCustomWarningExceptions.clear(); this->ErrorWarningFileLineRegex.clear(); this->ErrorMatchRegex.clear(); @@ -226,6 +227,8 @@ void cmCTestBuildHandler::Initialize() this->MaxErrors = 50; this->MaxWarnings = 50; + + this->UseCTestLaunch = false; } //---------------------------------------------------------------------- @@ -245,6 +248,20 @@ void cmCTestBuildHandler::PopulateCustomVectors(cmMakefile *mf) this->CTest->PopulateCustomInteger(mf, "CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS", this->MaxWarnings); + + // Record the user-specified custom warning rules. + if(const char* customWarningMatchers = + mf->GetDefinition("CTEST_CUSTOM_WARNING_MATCH")) + { + cmSystemTools::ExpandListArgument(customWarningMatchers, + this->ReallyCustomWarningMatches); + } + if(const char* customWarningExceptions = + mf->GetDefinition("CTEST_CUSTOM_WARNING_EXCEPTION")) + { + cmSystemTools::ExpandListArgument(customWarningExceptions, + this->ReallyCustomWarningExceptions); + } } //---------------------------------------------------------------------- @@ -305,6 +322,10 @@ int cmCTestBuildHandler::ProcessHandler() return -1; } + std::string const& useLaunchers = + this->CTest->GetCTestConfiguration("UseLaunchers"); + this->UseCTestLaunch = cmSystemTools::IsOn(useLaunchers.c_str()); + // Create a last build log cmGeneratedFileStream ofs; double elapsed_time_start = cmSystemTools::GetTime(); @@ -419,11 +440,6 @@ int cmCTestBuildHandler::ProcessHandler() this->EndBuild = this->CTest->CurrentTime(); this->EndBuildTime = cmSystemTools::GetTime(); double elapsed_build_time = cmSystemTools::GetTime() - elapsed_time_start; - if (res != cmsysProcess_State_Exited || retVal ) - { - cmCTestLog(this->CTest, ERROR_MESSAGE, "Error(s) when building project" - << std::endl); - } // Cleanups strings in the errors and warnings list. t_ErrorsAndWarningsVector::iterator evit; @@ -457,6 +473,31 @@ int cmCTestBuildHandler::ProcessHandler() } } + // Generate XML output + cmGeneratedFileStream xofs; + if(!this->StartResultingXML(cmCTest::PartBuild, "Build", xofs)) + { + cmCTestLog(this->CTest, ERROR_MESSAGE, "Cannot create build XML file" + << std::endl); + return -1; + } + this->GenerateXMLHeader(xofs); + if(this->UseCTestLaunch) + { + this->GenerateXMLLaunched(xofs); + } + else + { + this->GenerateXMLLogScraped(xofs); + } + this->GenerateXMLFooter(xofs, elapsed_build_time); + + if (res != cmsysProcess_State_Exited || retVal || this->TotalErrors > 0) + { + cmCTestLog(this->CTest, ERROR_MESSAGE, "Error(s) when building project" + << std::endl); + } + // Display message about number of errors and warnings cmCTestLog(this->CTest, HANDLER_OUTPUT, " " << this->TotalErrors << (this->TotalErrors >= this->MaxErrors ? " or more" : "") @@ -465,36 +506,93 @@ int cmCTestBuildHandler::ProcessHandler() << (this->TotalWarnings >= this->MaxWarnings ? " or more" : "") << " Compiler warnings" << std::endl); - // Generate XML output - cmGeneratedFileStream xofs; - if( !this->StartResultingXML("Build", xofs)) - { - cmCTestLog(this->CTest, ERROR_MESSAGE, "Cannot create build XML file" - << std::endl); - return -1; - } - this->GenerateDartBuildOutput( - xofs, this->ErrorsAndWarnings, elapsed_build_time); - return 0; + return retVal; } -//---------------------------------------------------------------------- -void cmCTestBuildHandler::GenerateDartBuildOutput( - std::ostream& os, - std::vector ew, - double elapsed_build_time) +//---------------------------------------------------------------------------- +void cmCTestBuildHandler::GenerateXMLHeader(std::ostream& os) { - this->CTest->StartXML(os); + this->CTest->StartXML(os, this->AppendXML); os << "\n" << "\t" << this->StartBuild << "\n" << "\t" << static_cast(this->StartBuildTime) << "\n" << "" - << this->CTest->MakeXMLSafe( + << cmXMLSafe( this->CTest->GetCTestConfiguration("MakeCommand")) << "" << std::endl; +} + +//---------------------------------------------------------------------------- +class cmCTestBuildHandler::FragmentCompare +{ +public: + FragmentCompare(cmFileTimeComparison* ftc): FTC(ftc) {} + bool operator()(std::string const& l, std::string const& r) + { + // Order files by modification time. Use lexicographic order + // among files with the same time. + int result; + if(this->FTC->FileTimeCompare(l.c_str(), r.c_str(), &result) && + result != 0) + { + return result < 0; + } + else + { + return l < r; + } + } +private: + cmFileTimeComparison* FTC; +}; +//---------------------------------------------------------------------------- +void cmCTestBuildHandler::GenerateXMLLaunched(std::ostream& os) +{ + if(this->CTestLaunchDir.empty()) + { + return; + } + + // Sort XML fragments in chronological order. + cmFileTimeComparison ftc; + FragmentCompare fragmentCompare(&ftc); + typedef std::set Fragments; + Fragments fragments(fragmentCompare); + + // Identify fragments on disk. + cmsys::Directory launchDir; + launchDir.Load(this->CTestLaunchDir.c_str()); + unsigned long n = launchDir.GetNumberOfFiles(); + for(unsigned long i=0; i < n; ++i) + { + const char* fname = launchDir.GetFile(i); + if(this->IsLaunchedErrorFile(fname)) + { + fragments.insert(this->CTestLaunchDir + "/" + fname); + ++this->TotalErrors; + } + else if(this->IsLaunchedWarningFile(fname)) + { + fragments.insert(this->CTestLaunchDir + "/" + fname); + ++this->TotalWarnings; + } + } + + // Copy the fragments into the final XML file. + for(Fragments::const_iterator fi = fragments.begin(); + fi != fragments.end(); ++fi) + { + this->GenerateXMLLaunchedFragment(os, fi->c_str()); + } +} + +//---------------------------------------------------------------------------- +void cmCTestBuildHandler::GenerateXMLLogScraped(std::ostream& os) +{ + std::vector& ew = this->ErrorsAndWarnings; std::vector::iterator it; // only report the first 50 warnings and first 50 errors @@ -509,8 +607,8 @@ void cmCTestBuildHandler::GenerateDartBuildOutput( it != ew.end() && (numErrorsAllowed || numWarningsAllowed); it++ ) { cmCTestBuildErrorWarning *cm = &(*it); - if (cm->Error && numErrorsAllowed || - !cm->Error && numWarningsAllowed) + if ((cm->Error && numErrorsAllowed) || + (!cm->Error && numWarningsAllowed)) { if (cm->Error) { @@ -522,7 +620,7 @@ void cmCTestBuildHandler::GenerateDartBuildOutput( } os << "\t<" << (cm->Error ? "Error" : "Warning") << ">\n" << "\t\t" << cm->LogLine << "\n" - << "\t\t" << this->CTest->MakeXMLSafe(cm->Text) + << "\t\t" << cmXMLSafe(cm->Text).Quotes(false) << "\n" << std::endl; std::vector::iterator rit; for ( rit = this->ErrorWarningFileLineRegex.begin(); @@ -575,12 +673,12 @@ void cmCTestBuildHandler::GenerateDartBuildOutput( << "" << std::endl; } } - os << "\t\t" << this->CTest->MakeXMLSafe(cm->PreContext) + os << "\t\t" << cmXMLSafe(cm->PreContext).Quotes(false) << "\n" - << "\t\t" << this->CTest->MakeXMLSafe(cm->PostContext); + << "\t\t" << cmXMLSafe(cm->PostContext).Quotes(false); // is this the last warning or error, if so notify - if (cm->Error && !numErrorsAllowed || - !cm->Error && !numWarningsAllowed) + if ((cm->Error && !numErrorsAllowed) || + (!cm->Error && !numWarningsAllowed)) { os << "\nThe maximum number of reported warnings or errors has been " "reached!!!\n"; @@ -591,6 +689,12 @@ void cmCTestBuildHandler::GenerateDartBuildOutput( << std::endl; } } +} + +//---------------------------------------------------------------------------- +void cmCTestBuildHandler::GenerateXMLFooter(std::ostream& os, + double elapsed_build_time) +{ os << "\t\n\t\n" << "\t" << this->EndBuild << "\n" << "\t" << static_cast(this->EndBuildTime) @@ -601,11 +705,142 @@ void cmCTestBuildHandler::GenerateDartBuildOutput( this->CTest->EndXML(os); } +//---------------------------------------------------------------------------- +void cmCTestBuildHandler::GenerateXMLLaunchedFragment(std::ostream& os, + const char* fname) +{ + std::ifstream fin(fname, std::ios::in | std::ios::binary); + std::string line; + while(cmSystemTools::GetLineFromStream(fin, line)) + { + os << line << "\n"; + } +} + +//---------------------------------------------------------------------------- +bool cmCTestBuildHandler::IsLaunchedErrorFile(const char* fname) +{ + // error-{hash}.xml + return (strncmp(fname, "error-", 6) == 0 && + strcmp(fname+strlen(fname)-4, ".xml") == 0); +} + +//---------------------------------------------------------------------------- +bool cmCTestBuildHandler::IsLaunchedWarningFile(const char* fname) +{ + // warning-{hash}.xml + return (strncmp(fname, "warning-", 8) == 0 && + strcmp(fname+strlen(fname)-4, ".xml") == 0); +} + //###################################################################### //###################################################################### //###################################################################### //###################################################################### +//---------------------------------------------------------------------------- +class cmCTestBuildHandler::LaunchHelper +{ +public: + LaunchHelper(cmCTestBuildHandler* handler); + ~LaunchHelper(); +private: + cmCTestBuildHandler* Handler; + cmCTest* CTest; + + void WriteLauncherConfig(); + void WriteScrapeMatchers(const char* purpose, + std::vector const& matchers); +}; + +//---------------------------------------------------------------------------- +cmCTestBuildHandler::LaunchHelper::LaunchHelper(cmCTestBuildHandler* handler): + Handler(handler), CTest(handler->CTest) +{ + std::string tag = this->CTest->GetCurrentTag(); + if(tag.empty()) + { + // This is not for a dashboard submission, so there is no XML. + // Skip enabling the launchers. + this->Handler->UseCTestLaunch = false; + } + else + { + // Compute a directory in which to store launcher fragments. + std::string& launchDir = this->Handler->CTestLaunchDir; + launchDir = this->CTest->GetBinaryDir(); + launchDir += "/Testing/"; + launchDir += tag; + launchDir += "/Build"; + + // Clean out any existing launcher fragments. + cmSystemTools::RemoveADirectory(launchDir.c_str()); + + if(this->Handler->UseCTestLaunch) + { + // Enable launcher fragments. + cmSystemTools::MakeDirectory(launchDir.c_str()); + this->WriteLauncherConfig(); + std::string launchEnv = "CTEST_LAUNCH_LOGS="; + launchEnv += launchDir; + cmSystemTools::PutEnv(launchEnv.c_str()); + } + } + + // If not using launchers, make sure they passthru. + if(!this->Handler->UseCTestLaunch) + { + cmSystemTools::UnsetEnv("CTEST_LAUNCH_LOGS"); + } +} + +//---------------------------------------------------------------------------- +cmCTestBuildHandler::LaunchHelper::~LaunchHelper() +{ + if(this->Handler->UseCTestLaunch) + { + cmSystemTools::UnsetEnv("CTEST_LAUNCH_LOGS"); + } +} + +//---------------------------------------------------------------------------- +void cmCTestBuildHandler::LaunchHelper::WriteLauncherConfig() +{ + this->WriteScrapeMatchers("Warning", + this->Handler->ReallyCustomWarningMatches); + this->WriteScrapeMatchers("WarningSuppress", + this->Handler->ReallyCustomWarningExceptions); + + // Give some testing configuration information to the launcher. + std::string fname = this->Handler->CTestLaunchDir; + fname += "/CTestLaunchConfig.cmake"; + cmGeneratedFileStream fout(fname.c_str()); + std::string srcdir = this->CTest->GetCTestConfiguration("SourceDirectory"); + fout << "set(CTEST_SOURCE_DIRECTORY \"" << srcdir << "\")\n"; +} + +//---------------------------------------------------------------------------- +void +cmCTestBuildHandler::LaunchHelper +::WriteScrapeMatchers(const char* purpose, + std::vector const& matchers) +{ + if(matchers.empty()) + { + return; + } + std::string fname = this->Handler->CTestLaunchDir; + fname += "/Custom"; + fname += purpose; + fname += ".txt"; + cmGeneratedFileStream fout(fname.c_str()); + for(std::vector::const_iterator mi = matchers.begin(); + mi != matchers.end(); ++mi) + { + fout << *mi << "\n"; + } +} + //---------------------------------------------------------------------- int cmCTestBuildHandler::RunMakeCommand(const char* command, int* retVal, const char* dir, int timeout, std::ofstream& ofs) @@ -634,6 +869,10 @@ int cmCTestBuildHandler::RunMakeCommand(const char* command, } cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, std::endl); + // Optionally use make rule launchers to record errors and warnings. + LaunchHelper launchHelper(this); + static_cast(launchHelper); + // Now create process object cmsysProcess* cp = cmsysProcess_New(); cmsysProcess_SetCommand(cp, &*argv.begin()); @@ -651,7 +890,8 @@ int cmCTestBuildHandler::RunMakeCommand(const char* command, cmCTestLog(this->CTest, HANDLER_OUTPUT, " Each symbol represents " << tick_len << " bytes of output." << std::endl - << " '!' represents an error and '*' a warning." << std::endl + << (this->UseCTestLaunch? "" : + " '!' represents an error and '*' a warning.\n") << " " << std::flush); // Initialize building structures @@ -757,7 +997,6 @@ int cmCTestBuildHandler::RunMakeCommand(const char* command, } cmsysProcess_Delete(cp); - return result; } @@ -929,6 +1168,12 @@ void cmCTestBuildHandler::ProcessBuffer(const char* data, int length, //---------------------------------------------------------------------- int cmCTestBuildHandler::ProcessSingleLine(const char* data) { + if(this->UseCTestLaunch) + { + // No log scraping when using launchers. + return b_REGULAR_LINE; + } + cmCTestLog(this->CTest, DEBUG, "Line: [" << data << "]" << std::endl); std::vector::iterator it; diff --git a/Source/CTest/cmCTestBuildHandler.h b/Source/CTest/cmCTestBuildHandler.h old mode 100755 new mode 100644 index ee45a0927..7ee50be0b --- a/Source/CTest/cmCTestBuildHandler.h +++ b/Source/CTest/cmCTestBuildHandler.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestBuildHandler.h,v $ - Language: C++ - Date: $Date: 2008-01-30 16:17:36 $ - Version: $Revision: 1.13 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestBuildHandler_h #define cmCTestBuildHandler_h @@ -49,6 +44,8 @@ public: */ virtual void Initialize(); + int GetTotalErrors() { return this->TotalErrors;} + int GetTotalWarnings() { return this->TotalWarnings;} private: //! Run command specialized for make and configure. Returns process status // and retVal is return value or exception. @@ -84,10 +81,13 @@ private: }; // generate the XML output - void GenerateDartBuildOutput(std::ostream& os, - std::vector, - double elapsed_time); - + void GenerateXMLHeader(std::ostream& os); + void GenerateXMLLaunched(std::ostream& os); + void GenerateXMLLogScraped(std::ostream& os); + void GenerateXMLFooter(std::ostream& os, double elapsed_build_time); + void GenerateXMLLaunchedFragment(std::ostream& os, const char* fname); + bool IsLaunchedErrorFile(const char* fname); + bool IsLaunchedWarningFile(const char* fname); std::string StartBuild; std::string EndBuild; @@ -98,6 +98,8 @@ private: std::vector CustomErrorExceptions; std::vector CustomWarningMatches; std::vector CustomWarningExceptions; + std::vector ReallyCustomWarningMatches; + std::vector ReallyCustomWarningExceptions; std::vector ErrorWarningFileLineRegex; std::vector ErrorMatchRegex; @@ -136,6 +138,12 @@ private: int MaxErrors; int MaxWarnings; + + bool UseCTestLaunch; + std::string CTestLaunchDir; + class LaunchHelper; + friend class LaunchHelper; + class FragmentCompare; }; #endif diff --git a/Source/CTest/cmCTestCVS.cxx b/Source/CTest/cmCTestCVS.cxx new file mode 100644 index 000000000..726950704 --- /dev/null +++ b/Source/CTest/cmCTestCVS.cxx @@ -0,0 +1,319 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmCTestCVS.h" + +#include "cmCTest.h" +#include "cmSystemTools.h" +#include "cmXMLSafe.h" + +#include + +//---------------------------------------------------------------------------- +cmCTestCVS::cmCTestCVS(cmCTest* ct, std::ostream& log): cmCTestVC(ct, log) +{ +} + +//---------------------------------------------------------------------------- +cmCTestCVS::~cmCTestCVS() +{ +} + +//---------------------------------------------------------------------------- +class cmCTestCVS::UpdateParser: public cmCTestVC::LineParser +{ +public: + UpdateParser(cmCTestCVS* cvs, const char* prefix): CVS(cvs) + { + this->SetLog(&cvs->Log, prefix); + // See "man cvs", section "update output". + this->RegexFileUpdated.compile("^([UP]) *(.*)"); + this->RegexFileModified.compile("^([MRA]) *(.*)"); + this->RegexFileConflicting.compile("^([C]) *(.*)"); + this->RegexFileRemoved1.compile( + "cvs[^ ]* update: `?([^']*)'? is no longer in the repository"); + this->RegexFileRemoved2.compile( + "cvs[^ ]* update: " + "warning: `?([^']*)'? is not \\(any longer\\) pertinent"); + } +private: + cmCTestCVS* CVS; + cmsys::RegularExpression RegexFileUpdated; + cmsys::RegularExpression RegexFileModified; + cmsys::RegularExpression RegexFileConflicting; + cmsys::RegularExpression RegexFileRemoved1; + cmsys::RegularExpression RegexFileRemoved2; + + virtual bool ProcessLine() + { + if(this->RegexFileUpdated.find(this->Line)) + { + this->DoFile(PathUpdated, this->RegexFileUpdated.match(2)); + } + else if(this->RegexFileModified.find(this->Line)) + { + this->DoFile(PathModified, this->RegexFileModified.match(2)); + } + else if(this->RegexFileConflicting.find(this->Line)) + { + this->DoFile(PathConflicting, this->RegexFileConflicting.match(2)); + } + else if(this->RegexFileRemoved1.find(this->Line)) + { + this->DoFile(PathUpdated, this->RegexFileRemoved1.match(1)); + } + else if(this->RegexFileRemoved2.find(this->Line)) + { + this->DoFile(PathUpdated, this->RegexFileRemoved2.match(1)); + } + return true; + } + + void DoFile(PathStatus status, std::string const& file) + { + std::string dir = cmSystemTools::GetFilenamePath(file); + std::string name = cmSystemTools::GetFilenameName(file); + this->CVS->Dirs[dir][name] = status; + } +}; + +//---------------------------------------------------------------------------- +bool cmCTestCVS::UpdateImpl() +{ + // Get user-specified update options. + std::string opts = this->CTest->GetCTestConfiguration("UpdateOptions"); + if(opts.empty()) + { + opts = this->CTest->GetCTestConfiguration("CVSUpdateOptions"); + if(opts.empty()) + { + opts = "-dP"; + } + } + std::vector args = cmSystemTools::ParseArguments(opts.c_str()); + + // Specify the start time for nightly testing. + if(this->CTest->GetTestModel() == cmCTest::NIGHTLY) + { + args.push_back("-D" + this->GetNightlyTime() + " UTC"); + } + + // Run "cvs update" to update the work tree. + std::vector cvs_update; + cvs_update.push_back(this->CommandLineTool.c_str()); + cvs_update.push_back("-z3"); + cvs_update.push_back("update"); + for(std::vector::const_iterator ai = args.begin(); + ai != args.end(); ++ai) + { + cvs_update.push_back(ai->c_str()); + } + cvs_update.push_back(0); + + UpdateParser out(this, "up-out> "); + UpdateParser err(this, "up-err> "); + return this->RunUpdateCommand(&cvs_update[0], &out, &err); +} + +//---------------------------------------------------------------------------- +class cmCTestCVS::LogParser: public cmCTestVC::LineParser +{ +public: + typedef cmCTestCVS::Revision Revision; + LogParser(cmCTestCVS* cvs, const char* prefix, std::vector& revs): + CVS(cvs), Revisions(revs), Section(SectionHeader) + { + this->SetLog(&cvs->Log, prefix), + this->RegexRevision.compile("^revision +([^ ]*) *$"); + this->RegexBranches.compile("^branches: .*$"); + this->RegexPerson.compile("^date: +([^;]+); +author: +([^;]+);"); + } +private: + cmCTestCVS* CVS; + std::vector& Revisions; + cmsys::RegularExpression RegexRevision; + cmsys::RegularExpression RegexBranches; + cmsys::RegularExpression RegexPerson; + enum SectionType { SectionHeader, SectionRevisions, SectionEnd }; + SectionType Section; + Revision Rev; + + virtual bool ProcessLine() + { + if(this->Line == ("=======================================" + "======================================")) + { + // This line ends the revision list. + if(this->Section == SectionRevisions) + { + this->FinishRevision(); + } + this->Section = SectionEnd; + } + else if(this->Line == "----------------------------") + { + // This line divides revisions from the header and each other. + if(this->Section == SectionHeader) + { + this->Section = SectionRevisions; + } + else if(this->Section == SectionRevisions) + { + this->FinishRevision(); + } + } + else if(this->Section == SectionRevisions) + { + if(!this->Rev.Log.empty()) + { + // Continue the existing log. + this->Rev.Log += this->Line; + this->Rev.Log += "\n"; + } + else if(this->Rev.Rev.empty() && this->RegexRevision.find(this->Line)) + { + this->Rev.Rev = this->RegexRevision.match(1); + } + else if(this->Rev.Date.empty() && this->RegexPerson.find(this->Line)) + { + this->Rev.Date = this->RegexPerson.match(1); + this->Rev.Author = this->RegexPerson.match(2); + } + else if(!this->RegexBranches.find(this->Line)) + { + // Start the log. + this->Rev.Log += this->Line; + this->Rev.Log += "\n"; + } + } + return this->Section != SectionEnd; + } + + void FinishRevision() + { + if(!this->Rev.Rev.empty()) + { + // Record this revision. + this->CVS->Log << "Found revision " << this->Rev.Rev << "\n" + << " author = " << this->Rev.Author << "\n" + << " date = " << this->Rev.Date << "\n"; + this->Revisions.push_back(this->Rev); + + // We only need two revisions. + if(this->Revisions.size() >= 2) + { + this->Section = SectionEnd; + } + } + this->Rev = Revision(); + } +}; + +//---------------------------------------------------------------------------- +std::string cmCTestCVS::ComputeBranchFlag(std::string const& dir) +{ + // Compute the tag file location for this directory. + std::string tagFile = this->SourceDirectory; + if(!dir.empty()) + { + tagFile += "/"; + tagFile += dir; + } + tagFile += "/CVS/Tag"; + + // Lookup the branch in the tag file, if any. + std::string tagLine; + std::ifstream tagStream(tagFile.c_str()); + if(tagStream && cmSystemTools::GetLineFromStream(tagStream, tagLine) && + tagLine.size() > 1 && tagLine[0] == 'T') + { + // Use the branch specified in the tag file. + std::string flag = "-r"; + flag += tagLine.substr(1); + return flag; + } + else + { + // Use the default branch. + return "-b"; + } +} + +//---------------------------------------------------------------------------- +void cmCTestCVS::LoadRevisions(std::string const& file, + const char* branchFlag, + std::vector& revisions) +{ + cmCTestLog(this->CTest, HANDLER_OUTPUT, "." << std::flush); + + // Run "cvs log" to get revisions of this file on this branch. + const char* cvs = this->CommandLineTool.c_str(); + const char* cvs_log[] = + {cvs, "log", "-N", branchFlag, file.c_str(), 0}; + + LogParser out(this, "log-out> ", revisions); + OutputLogger err(this->Log, "log-err> "); + this->RunChild(cvs_log, &out, &err); +} + +//---------------------------------------------------------------------------- +void cmCTestCVS::WriteXMLDirectory(std::ostream& xml, + std::string const& path, + Directory const& dir) +{ + const char* slash = path.empty()? "":"/"; + xml << "\t\n" + << "\t\t" << cmXMLSafe(path) << "\n"; + + // Lookup the branch checked out in the working tree. + std::string branchFlag = this->ComputeBranchFlag(path); + + // Load revisions and write an entry for each file in this directory. + std::vector revisions; + for(Directory::const_iterator fi = dir.begin(); fi != dir.end(); ++fi) + { + std::string full = path + slash + fi->first; + + // Load two real or unknown revisions. + revisions.clear(); + if(fi->second != PathUpdated) + { + // For local modifications the current rev is unknown and the + // prior rev is the latest from cvs. + revisions.push_back(this->Unknown); + } + this->LoadRevisions(full, branchFlag.c_str(), revisions); + revisions.resize(2, this->Unknown); + + // Write the entry for this file with these revisions. + File f(fi->second, &revisions[0], &revisions[1]); + this->WriteXMLEntry(xml, path, fi->first, full, f); + } + xml << "\t\n"; +} + +//---------------------------------------------------------------------------- +bool cmCTestCVS::WriteXMLUpdates(std::ostream& xml) +{ + cmCTestLog(this->CTest, HANDLER_OUTPUT, + " Gathering version information (one . per updated file):\n" + " " << std::flush); + + for(std::map::const_iterator + di = this->Dirs.begin(); di != this->Dirs.end(); ++di) + { + this->WriteXMLDirectory(xml, di->first, di->second); + } + + cmCTestLog(this->CTest, HANDLER_OUTPUT, std::endl); + + return true; +} diff --git a/Source/CTest/cmCTestCVS.h b/Source/CTest/cmCTestCVS.h new file mode 100644 index 000000000..b7fe567d8 --- /dev/null +++ b/Source/CTest/cmCTestCVS.h @@ -0,0 +1,51 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmCTestCVS_h +#define cmCTestCVS_h + +#include "cmCTestVC.h" + +/** \class cmCTestCVS + * \brief Interaction with cvs command-line tool + * + */ +class cmCTestCVS: public cmCTestVC +{ +public: + /** Construct with a CTest instance and update log stream. */ + cmCTestCVS(cmCTest* ctest, std::ostream& log); + + virtual ~cmCTestCVS(); + +private: + // Implement cmCTestVC internal API. + virtual bool UpdateImpl(); + virtual bool WriteXMLUpdates(std::ostream& xml); + + // Update status for files in each directory. + class Directory: public std::map {}; + std::map Dirs; + + std::string ComputeBranchFlag(std::string const& dir); + void LoadRevisions(std::string const& file, const char* branchFlag, + std::vector& revisions); + void WriteXMLDirectory(std::ostream& xml, std::string const& path, + Directory const& dir); + + // Parsing helper classes. + class UpdateParser; + class LogParser; + friend class UpdateParser; + friend class LogParser; +}; + +#endif diff --git a/Source/CTest/cmCTestCommand.h b/Source/CTest/cmCTestCommand.h old mode 100755 new mode 100644 index 18462a5cc..e2ebba8fd --- a/Source/CTest/cmCTestCommand.h +++ b/Source/CTest/cmCTestCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestCommand.h,v $ - Language: C++ - Date: $Date: 2006-03-10 20:03:09 $ - Version: $Revision: 1.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestCommand_h #define cmCTestCommand_h diff --git a/Source/CTest/cmCTestConfigureCommand.cxx b/Source/CTest/cmCTestConfigureCommand.cxx old mode 100755 new mode 100644 index a5187102a..00d9ec564 --- a/Source/CTest/cmCTestConfigureCommand.cxx +++ b/Source/CTest/cmCTestConfigureCommand.cxx @@ -1,26 +1,35 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestConfigureCommand.cxx,v $ - Language: C++ - Date: $Date: 2006-07-11 19:58:07 $ - Version: $Revision: 1.11 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestConfigureCommand.h" #include "cmCTest.h" #include "cmCTestGenericHandler.h" +cmCTestConfigureCommand::cmCTestConfigureCommand() +{ + this->Arguments[ctc_OPTIONS] = "OPTIONS"; + this->Arguments[ctc_LAST] = 0; + this->Last = ctc_LAST; +} + cmCTestGenericHandler* cmCTestConfigureCommand::InitializeHandler() { + std::vector options; + + if (this->Values[ctc_OPTIONS]) + { + cmSystemTools::ExpandListArgument(this->Values[ctc_OPTIONS], options); + } + if ( this->Values[ct_BUILD] ) { this->CTest->SetCTestConfiguration("BuildDirectory", @@ -33,6 +42,7 @@ cmCTestGenericHandler* cmCTestConfigureCommand::InitializeHandler() cmSystemTools::CollapseFullPath( this->Makefile->GetDefinition("CTEST_BINARY_DIRECTORY")).c_str()); } + if ( this->Values[ct_SOURCE] ) { this->CTest->SetCTestConfiguration("SourceDirectory", @@ -45,6 +55,7 @@ cmCTestGenericHandler* cmCTestConfigureCommand::InitializeHandler() cmSystemTools::CollapseFullPath( this->Makefile->GetDefinition("CTEST_SOURCE_DIRECTORY")).c_str()); } + if ( this->CTest->GetCTestConfiguration("BuildDirectory").empty() ) { this->SetError("Build directory not specified. Either use BUILD " @@ -77,11 +88,26 @@ cmCTestGenericHandler* cmCTestConfigureCommand::InitializeHandler() } std::string cmakeConfigureCommand = "\""; cmakeConfigureCommand += this->CTest->GetCMakeExecutable(); - cmakeConfigureCommand += "\" \"-G"; + cmakeConfigureCommand += "\""; + + std::vector::const_iterator it; + std::string option; + for (it= options.begin(); it!=options.end(); ++it) + { + option = *it; + cmakeConfigureCommand += " \""; + cmakeConfigureCommand += option; + cmakeConfigureCommand += "\""; + } + + cmakeConfigureCommand += " \"-G"; cmakeConfigureCommand += cmakeGeneratorName; - cmakeConfigureCommand += "\" \""; + cmakeConfigureCommand += "\""; + + cmakeConfigureCommand += " \""; cmakeConfigureCommand += source_dir; cmakeConfigureCommand += "\""; + this->CTest->SetCTestConfiguration("ConfigureCommand", cmakeConfigureCommand.c_str()); } @@ -104,5 +130,3 @@ cmCTestGenericHandler* cmCTestConfigureCommand::InitializeHandler() } return handler; } - - diff --git a/Source/CTest/cmCTestConfigureCommand.h b/Source/CTest/cmCTestConfigureCommand.h old mode 100755 new mode 100644 index 530d28796..156e6f211 --- a/Source/CTest/cmCTestConfigureCommand.h +++ b/Source/CTest/cmCTestConfigureCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestConfigureCommand.h,v $ - Language: C++ - Date: $Date: 2008-05-15 19:39:58 $ - Version: $Revision: 1.5.12.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestConfigureCommand_h #define cmCTestConfigureCommand_h @@ -27,8 +22,7 @@ class cmCTestConfigureCommand : public cmCTestHandlerCommand { public: - - cmCTestConfigureCommand() {} + cmCTestConfigureCommand(); /** * This is a virtual constructor for the command. @@ -51,7 +45,7 @@ public: */ virtual const char* GetTerseDocumentation() { - return "Configures the repository."; + return "Configure the project build tree."; } /** @@ -60,10 +54,18 @@ public: virtual const char* GetFullDocumentation() { return - " ctest_configure(BUILD build_dir RETURN_VALUE res)\n" + " ctest_configure([BUILD build_dir] [SOURCE source_dir] [APPEND]\n" + " [OPTIONS options] [RETURN_VALUE res])\n" "Configures the given build directory and stores results in " - "Configure.xml. The second argument is a variable that will hold " - "return value."; + "Configure.xml. " + "If no BUILD is given, the CTEST_BINARY_DIRECTORY variable is used. " + "If no SOURCE is given, the CTEST_SOURCE_DIRECTORY variable is used. " + "The OPTIONS argument specifies command line arguments to pass to " + "the configuration tool. " + "The RETURN_VALUE option specifies a variable in which to store the " + "return value of the native build tool." + "\n" + CTEST_COMMAND_APPEND_OPTION_DOCS; } cmTypeMacro(cmCTestConfigureCommand, cmCTestHandlerCommand); @@ -71,6 +73,11 @@ public: protected: cmCTestGenericHandler* InitializeHandler(); + enum { + ctc_FIRST = ct_LAST, + ctc_OPTIONS, + ctc_LAST + }; }; diff --git a/Source/CTest/cmCTestConfigureHandler.cxx b/Source/CTest/cmCTestConfigureHandler.cxx old mode 100755 new mode 100644 index 218c4d174..33297564e --- a/Source/CTest/cmCTestConfigureHandler.cxx +++ b/Source/CTest/cmCTestConfigureHandler.cxx @@ -1,25 +1,21 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestConfigureHandler.cxx,v $ - Language: C++ - Date: $Date: 2008-01-30 16:17:36 $ - Version: $Revision: 1.14 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestConfigureHandler.h" #include "cmCTest.h" #include "cmGeneratedFileStream.h" #include "cmake.h" +#include "cmXMLSafe.h" #include @@ -67,7 +63,7 @@ int cmCTestConfigureHandler::ProcessHandler() if ( !this->CTest->GetShowOnly() ) { cmGeneratedFileStream os; - if ( !this->StartResultingXML("Configure", os) ) + if(!this->StartResultingXML(cmCTest::PartConfigure, "Configure", os)) { cmCTestLog(this->CTest, ERROR_MESSAGE, "Cannot open configure file" << std::endl); @@ -92,13 +88,13 @@ int cmCTestConfigureHandler::ProcessHandler() if ( os ) { - this->CTest->StartXML(os); + this->CTest->StartXML(os, this->AppendXML); os << "\n" << "\t" << start_time << "" << std::endl << "\t" << start_time_time << "\n"; - + if ( res == cmsysProcess_State_Exited && retVal ) { os << retVal; @@ -106,7 +102,7 @@ int cmCTestConfigureHandler::ProcessHandler() os << "" << cCommand.c_str() << "" << std::endl; cmCTestLog(this->CTest, DEBUG, "End" << std::endl); - os << "" << cmCTest::MakeXMLSafe(output) << "" << std::endl; + os << "" << cmXMLSafe(output) << "" << std::endl; std::string end_time = this->CTest->CurrentTime(); os << "\t" << retVal << "\n" << "\t" << end_time << "\n" @@ -129,7 +125,7 @@ int cmCTestConfigureHandler::ProcessHandler() if (! res || retVal ) { cmCTestLog(this->CTest, ERROR_MESSAGE, - "Error(s) when updating the project" << std::endl); + "Error(s) when configuring the project" << std::endl); return -1; } return 0; diff --git a/Source/CTest/cmCTestConfigureHandler.h b/Source/CTest/cmCTestConfigureHandler.h old mode 100755 new mode 100644 index 73e076aa7..d880bd7df --- a/Source/CTest/cmCTestConfigureHandler.h +++ b/Source/CTest/cmCTestConfigureHandler.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestConfigureHandler.h,v $ - Language: C++ - Date: $Date: 2006-03-09 16:17:10 $ - Version: $Revision: 1.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestConfigureHandler_h #define cmCTestConfigureHandler_h diff --git a/Source/CTest/cmCTestCoverageCommand.cxx b/Source/CTest/cmCTestCoverageCommand.cxx index 58e276003..72ff720d3 100644 --- a/Source/CTest/cmCTestCoverageCommand.cxx +++ b/Source/CTest/cmCTestCoverageCommand.cxx @@ -1,38 +1,73 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestCoverageCommand.cxx,v $ - Language: C++ - Date: $Date: 2006-03-29 17:33:41 $ - Version: $Revision: 1.8 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestCoverageCommand.h" #include "cmCTest.h" -#include "cmCTestGenericHandler.h" +#include "cmCTestCoverageHandler.h" + +//---------------------------------------------------------------------------- +cmCTestCoverageCommand::cmCTestCoverageCommand() +{ + this->LabelsMentioned = false; +} +//---------------------------------------------------------------------------- cmCTestGenericHandler* cmCTestCoverageCommand::InitializeHandler() { this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, "CoverageCommand", "CTEST_COVERAGE_COMMAND"); - cmCTestGenericHandler* handler - = this->CTest->GetInitializedHandler("coverage"); + cmCTestCoverageHandler* handler = static_cast( + this->CTest->GetInitializedHandler("coverage")); if ( !handler ) { this->SetError("internal CTest error. Cannot instantiate test handler"); return 0; } + + // If a LABELS option was given, select only files with the labels. + if(this->LabelsMentioned) + { + handler->SetLabelFilter(this->Labels); + } + return handler; } +//---------------------------------------------------------------------------- +bool cmCTestCoverageCommand::CheckArgumentKeyword(std::string const& arg) +{ + // Look for arguments specific to this command. + if(arg == "LABELS") + { + this->ArgumentDoing = ArgumentDoingLabels; + this->LabelsMentioned = true; + return true; + } + // Look for other arguments. + return this->Superclass::CheckArgumentKeyword(arg); +} +//---------------------------------------------------------------------------- +bool cmCTestCoverageCommand::CheckArgumentValue(std::string const& arg) +{ + // Handle states specific to this command. + if(this->ArgumentDoing == ArgumentDoingLabels) + { + this->Labels.insert(arg); + return true; + } + + // Look for other arguments. + return this->Superclass::CheckArgumentValue(arg); +} diff --git a/Source/CTest/cmCTestCoverageCommand.h b/Source/CTest/cmCTestCoverageCommand.h index 3d9bb1c5c..25c10dcab 100644 --- a/Source/CTest/cmCTestCoverageCommand.h +++ b/Source/CTest/cmCTestCoverageCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestCoverageCommand.h,v $ - Language: C++ - Date: $Date: 2008-05-15 19:39:58 $ - Version: $Revision: 1.4.12.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestCoverageCommand_h #define cmCTestCoverageCommand_h @@ -28,7 +23,7 @@ class cmCTestCoverageCommand : public cmCTestHandlerCommand { public: - cmCTestCoverageCommand() {} + cmCTestCoverageCommand(); /** * This is a virtual constructor for the command. @@ -51,7 +46,7 @@ public: */ virtual const char* GetTerseDocumentation() { - return "Tests the repository."; + return "Collect coverage tool results."; } /** @@ -60,16 +55,34 @@ public: virtual const char* GetFullDocumentation() { return - " ctest_coverage([BUILD build_dir] [RETURN_VALUE res])\n" + " ctest_coverage([BUILD build_dir] [RETURN_VALUE res] [APPEND]\n" + " [LABELS label1 [label2 [...]]])\n" "Perform the coverage of the given build directory and stores results " "in Coverage.xml. The second argument is a variable that will hold " - "value."; + "value." + "\n" + "The LABELS option filters the coverage report to include only " + "source files labeled with at least one of the labels specified." + "\n" + CTEST_COMMAND_APPEND_OPTION_DOCS; } cmTypeMacro(cmCTestCoverageCommand, cmCTestHandlerCommand); protected: cmCTestGenericHandler* InitializeHandler(); + + virtual bool CheckArgumentKeyword(std::string const& arg); + virtual bool CheckArgumentValue(std::string const& arg); + + enum + { + ArgumentDoingLabels = Superclass::ArgumentDoingLast1, + ArgumentDoingLast2 + }; + + bool LabelsMentioned; + std::set Labels; }; diff --git a/Source/CTest/cmCTestCoverageHandler.cxx b/Source/CTest/cmCTestCoverageHandler.cxx old mode 100755 new mode 100644 index be4848a59..b6e10bfe1 --- a/Source/CTest/cmCTestCoverageHandler.cxx +++ b/Source/CTest/cmCTestCoverageHandler.cxx @@ -1,28 +1,27 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestCoverageHandler.cxx,v $ - Language: C++ - Date: $Date: 2008-09-03 13:43:18 $ - Version: $Revision: 1.51.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestCoverageHandler.h" #include "cmCTest.h" #include "cmake.h" +#include "cmMakefile.h" #include "cmSystemTools.h" #include "cmGeneratedFileStream.h" +#include "cmXMLSafe.h" #include #include #include +#include +#include #include #include @@ -151,7 +150,29 @@ cmCTestCoverageHandler::cmCTestCoverageHandler() void cmCTestCoverageHandler::Initialize() { this->Superclass::Initialize(); - this->CustomCoverageExclude.empty(); + this->CustomCoverageExclude.clear(); + this->SourceLabels.clear(); + this->LabelIdMap.clear(); + this->Labels.clear(); + this->LabelFilter.clear(); +} + +//---------------------------------------------------------------------------- +void cmCTestCoverageHandler::CleanCoverageLogFiles(std::ostream& log) +{ + std::string logGlob = this->CTest->GetCTestConfiguration("BuildDirectory"); + logGlob += "/Testing/"; + logGlob += this->CTest->GetCurrentTag(); + logGlob += "/CoverageLog*"; + cmsys::Glob gl; + gl.FindFiles(logGlob.c_str()); + std::vector const& files = gl.GetFiles(); + for(std::vector::const_iterator fi = files.begin(); + fi != files.end(); ++fi) + { + log << "Removing old coverage log: " << *fi << "\n"; + cmSystemTools::RemoveFile(fi->c_str()); + } } //---------------------------------------------------------------------- @@ -162,14 +183,15 @@ bool cmCTestCoverageHandler::StartCoverageLogFile( sprintf(covLogFilename, "CoverageLog-%d", logFileCount); cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Open file: " << covLogFilename << std::endl); - if (!this->StartResultingXML(covLogFilename, covLogFile) ) + if(!this->StartResultingXML(cmCTest::PartCoverage, + covLogFilename, covLogFile)) { cmCTestLog(this->CTest, ERROR_MESSAGE, "Cannot open log file: " << covLogFilename << std::endl); return false; } std::string local_start_time = this->CTest->CurrentTime(); - this->CTest->StartXML(covLogFile); + this->CTest->StartXML(covLogFile, this->AppendXML); covLogFile << "" << std::endl << "\t" << local_start_time << "" << "\t" @@ -202,6 +224,11 @@ bool cmCTestCoverageHandler::ShouldIDoCoverage(const char* file, const char* srcDir, const char* binDir) { + if(this->IsFilteredOut(file)) + { + return false; + } + std::vector::iterator sit; for ( sit = this->CustomCoverageExcludeRegex.begin(); sit != this->CustomCoverageExcludeRegex.end(); ++ sit ) @@ -302,6 +329,7 @@ bool cmCTestCoverageHandler::ShouldIDoCoverage(const char* file, //functions and commented... int cmCTestCoverageHandler::ProcessHandler() { + this->CTest->ClearSubmitFiles(cmCTest::PartCoverage); int error = 0; // do we have time for this if (this->CTest->GetRemainingTimeAllowed() < 120) @@ -317,6 +345,8 @@ int cmCTestCoverageHandler::ProcessHandler() std::string binaryDir = this->CTest->GetCTestConfiguration("BuildDirectory"); + this->LoadLabels(); + cmGeneratedFileStream ofs; double elapsed_time_start = cmSystemTools::GetTime(); if ( !this->StartLogFile("Coverage", ofs) ) @@ -326,6 +356,7 @@ int cmCTestCoverageHandler::ProcessHandler() } ofs << "Performing coverage: " << elapsed_time_start << std::endl; + this->CleanCoverageLogFiles(ofs); cmSystemTools::ConvertToUnixSlashes(sourceDir); cmSystemTools::ConvertToUnixSlashes(binaryDir); @@ -342,7 +373,7 @@ int cmCTestCoverageHandler::ProcessHandler() cont.OFS = &ofs; // setup the regex exclude stuff - this->CustomCoverageExcludeRegex.empty(); + this->CustomCoverageExcludeRegex.clear(); std::vector::iterator rexIt; for ( rexIt = this->CustomCoverageExclude.begin(); rexIt != this->CustomCoverageExclude.end(); @@ -381,14 +412,14 @@ int cmCTestCoverageHandler::ProcessHandler() cmGeneratedFileStream covSumFile; cmGeneratedFileStream covLogFile; - if (!this->StartResultingXML("Coverage", covSumFile)) + if(!this->StartResultingXML(cmCTest::PartCoverage, "Coverage", covSumFile)) { cmCTestLog(this->CTest, ERROR_MESSAGE, "Cannot open coverage summary file." << std::endl); return -1; } - this->CTest->StartXML(covSumFile); + this->CTest->StartXML(covSumFile, this->AppendXML); // Produce output xml files covSumFile << "" << std::endl @@ -428,25 +459,23 @@ int cmCTestCoverageHandler::ProcessHandler() << cont.TotalCoverage.size() << std::endl); cmCTestLog(this->CTest, HANDLER_OUTPUT, " "); } - if ( cnt % 100 == 0 ) + + const std::string fullFileName = fileIterator->first; + bool shouldIDoCoverage + = this->ShouldIDoCoverage(fullFileName.c_str(), + sourceDir.c_str(), binaryDir.c_str()); + if ( !shouldIDoCoverage ) { - this->EndCoverageLogFile(covLogFile, logFileCount); - logFileCount ++; - if ( !this->StartCoverageLogFile(covLogFile, logFileCount) ) - { - return -1; - } + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, + ".NoDartCoverage found, so skip coverage check for: " + << fullFileName.c_str() + << std::endl); + continue; } - const std::string fullFileName = fileIterator->first; - const std::string fileName - = cmSystemTools::GetFilenameName(fullFileName.c_str()); - std::string fullFilePath - = cmSystemTools::GetFilenamePath(fullFileName.c_str()); + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "Process file: " << fullFileName << std::endl); - cmSystemTools::ConvertToUnixSlashes(fullFilePath); - if ( !cmSystemTools::FileExists(fullFileName.c_str()) ) { cmCTestLog(this->CTest, ERROR_MESSAGE, "Cannot find file: " @@ -454,25 +483,24 @@ int cmCTestCoverageHandler::ProcessHandler() continue; } - bool shouldIDoCoverage - = this->ShouldIDoCoverage(fullFileName.c_str(), - sourceDir.c_str(), binaryDir.c_str()); - if ( !shouldIDoCoverage ) + if ( ++cnt % 100 == 0 ) { - cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, - ".NoDartCoverage found, so skip coverage check for: " - << fullFileName.c_str() - << std::endl); - continue; + this->EndCoverageLogFile(covLogFile, logFileCount); + logFileCount ++; + if ( !this->StartCoverageLogFile(covLogFile, logFileCount) ) + { + return -1; + } } + const std::string fileName + = cmSystemTools::GetFilenameName(fullFileName.c_str()); + std::string shortFileName = + this->CTest->GetShortPathToFile(fullFileName.c_str()); const cmCTestCoverageHandlerContainer::SingleFileCoverageVector& fcov = fileIterator->second; - covLogFile << "\tCTest->MakeXMLSafe(fileName.c_str()) - << "\" FullPath=\"" << this->CTest->MakeXMLSafe( - this->CTest->GetShortPathToFile( - fileIterator->first.c_str())) << "\">" << std::endl + covLogFile << "\t\n" << "\t\t" << std::endl; std::ifstream ifs(fullFileName.c_str()); @@ -506,7 +534,7 @@ int cmCTestCoverageHandler::ProcessHandler() } covLogFile << "\t\t" - << this->CTest->MakeXMLSafe(line.c_str()) << "" << std::endl; + << cmXMLSafe(line) << "" << std::endl; if ( fcov[cc] == 0 ) { untested ++; @@ -535,8 +563,8 @@ int cmCTestCoverageHandler::ProcessHandler() total_untested += untested; covLogFile << "\t\t" << std::endl << "\t" << std::endl; - covSumFile << "\tCTest->MakeXMLSafe(fileName) - << "\" FullPath=\"" << this->CTest->MakeXMLSafe( + covSumFile << "\tCTest->GetShortPathToFile(fullFileName.c_str())) << "\" Covered=\"" << (tested > 0 ? "true":"false") << "\">\n" << "\t\t" << tested << "\n" @@ -548,9 +576,9 @@ int cmCTestCoverageHandler::ProcessHandler() << "\t\t"; covSumFile.setf(std::ios::fixed, std::ios::floatfield); covSumFile.precision(2); - covSumFile << (cmet) << "\n" - << "\t" << std::endl; - cnt ++; + covSumFile << (cmet) << "\n"; + this->WriteXMLLabels(covSumFile, shortFileName); + covSumFile << "\t" << std::endl; } this->EndCoverageLogFile(covLogFile, logFileCount); @@ -569,7 +597,7 @@ int cmCTestCoverageHandler::ProcessHandler() } } - int total_lines = total_tested + total_untested; + long total_lines = total_tested + total_untested; float percent_coverage = 100 * SAFEDIV(static_cast(total_tested), static_cast(total_lines)); if ( total_lines == 0 ) @@ -682,17 +710,8 @@ int cmCTestCoverageHandler::HandleGCovCoverage( cmsys::RegularExpression st2re5(st2gcovOutputRex5.c_str()); cmsys::RegularExpression st2re6(st2gcovOutputRex6.c_str()); - - cmsys::Glob gl; - gl.RecurseOn(); - gl.RecurseThroughSymlinksOff(); - std::string daGlob = cont->BinaryDir + "/*.da"; - gl.FindFiles(daGlob); - std::vector files = gl.GetFiles(); - daGlob = cont->BinaryDir + "/*.gcda"; - gl.FindFiles(daGlob); - std::vector& moreFiles = gl.GetFiles(); - files.insert(files.end(), moreFiles.begin(), moreFiles.end()); + std::vector files; + this->FindGCovFiles(files); std::vector::iterator it; if ( files.size() == 0 ) @@ -1049,6 +1068,37 @@ int cmCTestCoverageHandler::HandleGCovCoverage( return file_count; } +//---------------------------------------------------------------------------- +void cmCTestCoverageHandler::FindGCovFiles(std::vector& files) +{ + cmsys::Glob gl; + gl.RecurseOn(); + gl.RecurseThroughSymlinksOff(); + + for(LabelMapType::const_iterator lmi = this->TargetDirs.begin(); + lmi != this->TargetDirs.end(); ++lmi) + { + // Skip targets containing no interesting labels. + if(!this->IntersectsFilter(lmi->second)) + { + continue; + } + + // Coverage files appear next to their object files in the target + // support directory. + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, + " globbing for coverage in: " << lmi->first << std::endl); + std::string daGlob = lmi->first; + daGlob += "/*.da"; + gl.FindFiles(daGlob); + files.insert(files.end(), gl.GetFiles().begin(), gl.GetFiles().end()); + daGlob = lmi->first; + daGlob += "/*.gcda"; + gl.FindFiles(daGlob); + files.insert(files.end(), gl.GetFiles().begin(), gl.GetFiles().end()); + } +} + //---------------------------------------------------------------------- int cmCTestCoverageHandler::HandleTracePyCoverage( cmCTestCoverageHandlerContainer* cont) @@ -1156,7 +1206,7 @@ int cmCTestCoverageHandler::HandleTracePyCoverage( << std::endl); // Read the line number starting at the 10th character of the gcov // output line - int lineIdx = cnt; + long lineIdx = cnt; if ( lineIdx >= 0 ) { while ( vec->size() <= @@ -1328,8 +1378,8 @@ int cmCTestCoverageHandler::RunBullseyeCoverageBranch( << std::endl); // start the file output covLogFile << "\tCTest->MakeXMLSafe(i->first.c_str()) - << "\" FullPath=\"" << this->CTest->MakeXMLSafe( + << cmXMLSafe(i->first) + << "\" FullPath=\"" << cmXMLSafe( this->CTest->GetShortPathToFile( i->second.c_str())) << "\">" << std::endl << "\t\t" << std::endl; @@ -1338,7 +1388,7 @@ int cmCTestCoverageHandler::RunBullseyeCoverageBranch( for(int k =0; bullseyeHelp[k] != 0; ++k) { covLogFile << "\t\t" - << this->CTest->MakeXMLSafe(bullseyeHelp[k]) + << cmXMLSafe(bullseyeHelp[k]) << "" << std::endl; line++; } @@ -1354,7 +1404,7 @@ int cmCTestCoverageHandler::RunBullseyeCoverageBranch( else if(valid) { covLogFile << "\t\t" - << this->CTest->MakeXMLSafe(lineIn.c_str()) + << cmXMLSafe(lineIn) << "" << std::endl; line++; } @@ -1434,13 +1484,13 @@ int cmCTestCoverageHandler::RunBullseyeSourceSummary( std::ostream& tmpLog = *cont->OFS; // copen the Coverage.xml file in the Testing directory cmGeneratedFileStream covSumFile; - if (!this->StartResultingXML("Coverage", covSumFile)) + if(!this->StartResultingXML(cmCTest::PartCoverage, "Coverage", covSumFile)) { cmCTestLog(this->CTest, ERROR_MESSAGE, "Cannot open coverage summary file." << std::endl); return 0; } - this->CTest->StartXML(covSumFile); + this->CTest->StartXML(covSumFile, this->AppendXML); double elapsed_time_start = cmSystemTools::GetTime(); std::string coverage_start_time = this->CTest->CurrentTime(); covSumFile << "" << std::endl @@ -1537,6 +1587,8 @@ int cmCTestCoverageHandler::RunBullseyeSourceSummary( total_untested += (totalFunctions - functionsCalled); std::string fileName = cmSystemTools::GetFilenameName(file.c_str()); + std::string shortFileName = + this->CTest->GetShortPathToFile(file.c_str()); float cper = percentBranch + percentFunction; if(totalBranches > 0) @@ -1560,9 +1612,8 @@ int cmCTestCoverageHandler::RunBullseyeSourceSummary( tmpLog << "percentBranch: " << percentBranch << "\n"; tmpLog << "percentCoverage: " << percent_coverage << "\n"; tmpLog << "coverage metric: " << cmet << "\n"; - covSumFile << "\tCTest->MakeXMLSafe(sourceFile) - << "\" FullPath=\"" << this->CTest->MakeXMLSafe( - this->CTest->GetShortPathToFile(file.c_str())) + covSumFile << "\t0?"true":"false") << "\">\n" << "\t\t" << branchCovered @@ -1590,8 +1641,9 @@ int cmCTestCoverageHandler::RunBullseyeSourceSummary( << "\t\t"; covSumFile.setf(std::ios::fixed, std::ios::floatfield); covSumFile.precision(2); - covSumFile << (cmet) << "\n" - << "\t" << std::endl; + covSumFile << (cmet) << "\n"; + this->WriteXMLLabels(covSumFile, shortFileName); + covSumFile << "\t" << std::endl; } } std::string end_time = this->CTest->CurrentTime(); @@ -1641,6 +1693,8 @@ int cmCTestCoverageHandler::HandleBullseyeCoverage( "Error running bullseye summary.\n"); return 0; } + cmCTestLog(this->CTest, DEBUG, "HandleBullseyeCoverage return 1 " + << std::endl); return 1; } @@ -1713,3 +1767,158 @@ bool cmCTestCoverageHandler::ParseBullsEyeCovsrcLine( } return true; } + +//---------------------------------------------------------------------- +int cmCTestCoverageHandler::GetLabelId(std::string const& label) +{ + LabelIdMapType::iterator i = this->LabelIdMap.find(label); + if(i == this->LabelIdMap.end()) + { + int n = int(this->Labels.size()); + this->Labels.push_back(label); + LabelIdMapType::value_type entry(label, n); + i = this->LabelIdMap.insert(entry).first; + } + return i->second; +} + +//---------------------------------------------------------------------- +void cmCTestCoverageHandler::LoadLabels() +{ + std::string fileList = this->CTest->GetBinaryDir(); + fileList += cmake::GetCMakeFilesDirectory(); + fileList += "/TargetDirectories.txt"; + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, + " target directory list [" << fileList << "]\n"); + std::ifstream finList(fileList.c_str()); + std::string line; + while(cmSystemTools::GetLineFromStream(finList, line)) + { + this->LoadLabels(line.c_str()); + } +} + +//---------------------------------------------------------------------- +void cmCTestCoverageHandler::LoadLabels(const char* dir) +{ + LabelSet& dirLabels = this->TargetDirs[dir]; + std::string fname = dir; + fname += "/Labels.txt"; + std::ifstream fin(fname.c_str()); + if(!fin) + { + return; + } + + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, + " loading labels from [" << fname << "]\n"); + bool inTarget = true; + std::string source; + std::string line; + std::vector targetLabels; + while(cmSystemTools::GetLineFromStream(fin, line)) + { + if(line.empty() || line[0] == '#') + { + // Ignore blank and comment lines. + continue; + } + else if(line[0] == ' ') + { + // Label lines appear indented by one space. + std::string label = line.substr(1); + int id = this->GetLabelId(label); + dirLabels.insert(id); + if(inTarget) + { + targetLabels.push_back(id); + } + else + { + this->SourceLabels[source].insert(id); + } + } + else + { + // Non-indented lines specify a source file name. The first one + // is the end of the target-wide labels. + inTarget = false; + + source = this->CTest->GetShortPathToFile(line.c_str()); + + // Label the source with the target labels. + LabelSet& labelSet = this->SourceLabels[source]; + for(std::vector::const_iterator li = targetLabels.begin(); + li != targetLabels.end(); ++li) + { + labelSet.insert(*li); + } + } + } +} + +//---------------------------------------------------------------------- +void cmCTestCoverageHandler::WriteXMLLabels(std::ofstream& os, + std::string const& source) +{ + LabelMapType::const_iterator li = this->SourceLabels.find(source); + if(li != this->SourceLabels.end() && !li->second.empty()) + { + os << "\t\t\n"; + for(LabelSet::const_iterator lsi = li->second.begin(); + lsi != li->second.end(); ++lsi) + { + os << "\t\t\t\n"; + } + os << "\t\t\n"; + } +} + +//---------------------------------------------------------------------------- +void +cmCTestCoverageHandler::SetLabelFilter(std::set const& labels) +{ + this->LabelFilter.clear(); + for(std::set::const_iterator li = labels.begin(); + li != labels.end(); ++li) + { + this->LabelFilter.insert(this->GetLabelId(*li)); + } +} + +//---------------------------------------------------------------------- +bool cmCTestCoverageHandler::IntersectsFilter(LabelSet const& labels) +{ + // If there is no label filter then nothing is filtered out. + if(this->LabelFilter.empty()) + { + return true; + } + + std::vector ids; + cmsys_stl::set_intersection + (labels.begin(), labels.end(), + this->LabelFilter.begin(), this->LabelFilter.end(), + cmsys_stl::back_inserter(ids)); + return !ids.empty(); +} + +//---------------------------------------------------------------------- +bool cmCTestCoverageHandler::IsFilteredOut(std::string const& source) +{ + // If there is no label filter then nothing is filtered out. + if(this->LabelFilter.empty()) + { + return false; + } + + // The source is filtered out if it does not have any labels in + // common with the filter set. + std::string shortSrc = this->CTest->GetShortPathToFile(source.c_str()); + LabelMapType::const_iterator li = this->SourceLabels.find(shortSrc); + if(li != this->SourceLabels.end()) + { + return !this->IntersectsFilter(li->second); + } + return true; +} diff --git a/Source/CTest/cmCTestCoverageHandler.h b/Source/CTest/cmCTestCoverageHandler.h old mode 100755 new mode 100644 index 6f68d5f21..b3e4db693 --- a/Source/CTest/cmCTestCoverageHandler.h +++ b/Source/CTest/cmCTestCoverageHandler.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestCoverageHandler.h,v $ - Language: C++ - Date: $Date: 2007-06-08 16:29:40 $ - Version: $Revision: 1.17 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestCoverageHandler_h #define cmCTestCoverageHandler_h @@ -50,14 +45,19 @@ public: */ void PopulateCustomVectors(cmMakefile *mf); + /** Report coverage only for sources with these labels. */ + void SetLabelFilter(std::set const& labels); + private: bool ShouldIDoCoverage(const char* file, const char* srcDir, const char* binDir); + void CleanCoverageLogFiles(std::ostream& log); bool StartCoverageLogFile(cmGeneratedFileStream& ostr, int logFileCount); void EndCoverageLogFile(cmGeneratedFileStream& ostr, int logFileCount); //! Handle coverage using GCC's GCov int HandleGCovCoverage(cmCTestCoverageHandlerContainer* cont); + void FindGCovFiles(std::vector& files); //! Handle coverage using Bullseye int HandleBullseyeCoverage(cmCTestCoverageHandlerContainer* cont); @@ -137,6 +137,28 @@ private: std::vector CustomCoverageExcludeRegex; typedef std::map CoverageMap; + + // Map from source file to label ids. + class LabelSet: public std::set {}; + typedef std::map LabelMapType; + LabelMapType SourceLabels; + LabelMapType TargetDirs; + + // Map from label name to label id. + typedef std::map LabelIdMapType; + LabelIdMapType LabelIdMap; + std::vector Labels; + int GetLabelId(std::string const& label); + + // Label reading and writing methods. + void LoadLabels(); + void LoadLabels(const char* dir); + void WriteXMLLabels(std::ofstream& os, std::string const& source); + + // Label-based filtering. + std::set LabelFilter; + bool IntersectsFilter(LabelSet const& labels); + bool IsFilteredOut(std::string const& source); }; #endif diff --git a/Source/CTest/cmCTestEmptyBinaryDirectoryCommand.cxx b/Source/CTest/cmCTestEmptyBinaryDirectoryCommand.cxx old mode 100755 new mode 100644 index ddfebdbe6..56312c0fb --- a/Source/CTest/cmCTestEmptyBinaryDirectoryCommand.cxx +++ b/Source/CTest/cmCTestEmptyBinaryDirectoryCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestEmptyBinaryDirectoryCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-01-23 15:28:01 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestEmptyBinaryDirectoryCommand.h" #include "cmCTestScriptHandler.h" diff --git a/Source/CTest/cmCTestEmptyBinaryDirectoryCommand.h b/Source/CTest/cmCTestEmptyBinaryDirectoryCommand.h old mode 100755 new mode 100644 index 6494b95c0..cf6104594 --- a/Source/CTest/cmCTestEmptyBinaryDirectoryCommand.h +++ b/Source/CTest/cmCTestEmptyBinaryDirectoryCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestEmptyBinaryDirectoryCommand.h,v $ - Language: C++ - Date: $Date: 2008-05-15 19:39:59 $ - Version: $Revision: 1.4.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestEmptyBinaryDirectoryCommand_h #define cmCTestEmptyBinaryDirectoryCommand_h diff --git a/Source/CTest/cmCTestGIT.cxx b/Source/CTest/cmCTestGIT.cxx new file mode 100644 index 000000000..5b0e8ff3b --- /dev/null +++ b/Source/CTest/cmCTestGIT.cxx @@ -0,0 +1,411 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmCTestGIT.h" + +#include "cmCTest.h" +#include "cmSystemTools.h" +#include "cmXMLSafe.h" + +#include +#include +#include + +#include + +//---------------------------------------------------------------------------- +cmCTestGIT::cmCTestGIT(cmCTest* ct, std::ostream& log): + cmCTestGlobalVC(ct, log) +{ + this->PriorRev = this->Unknown; +} + +//---------------------------------------------------------------------------- +cmCTestGIT::~cmCTestGIT() +{ +} + +//---------------------------------------------------------------------------- +class cmCTestGIT::OneLineParser: public cmCTestVC::LineParser +{ +public: + OneLineParser(cmCTestGIT* git, const char* prefix, + std::string& l): Line1(l) + { + this->SetLog(&git->Log, prefix); + } +private: + std::string& Line1; + virtual bool ProcessLine() + { + // Only the first line is of interest. + this->Line1 = this->Line; + return false; + } +}; + +//---------------------------------------------------------------------------- +std::string cmCTestGIT::GetWorkingRevision() +{ + // Run plumbing "git rev-list" to get work tree revision. + const char* git = this->CommandLineTool.c_str(); + const char* git_rev_list[] = {git, "rev-list", "-n", "1", "HEAD", 0}; + std::string rev; + OneLineParser out(this, "rl-out> ", rev); + OutputLogger err(this->Log, "rl-err> "); + this->RunChild(git_rev_list, &out, &err); + return rev; +} + +//---------------------------------------------------------------------------- +void cmCTestGIT::NoteOldRevision() +{ + this->OldRevision = this->GetWorkingRevision(); + cmCTestLog(this->CTest, HANDLER_OUTPUT, " Old revision of repository is: " + << this->OldRevision << "\n"); + this->PriorRev.Rev = this->OldRevision; +} + +//---------------------------------------------------------------------------- +void cmCTestGIT::NoteNewRevision() +{ + this->NewRevision = this->GetWorkingRevision(); + cmCTestLog(this->CTest, HANDLER_OUTPUT, " New revision of repository is: " + << this->NewRevision << "\n"); +} + +//---------------------------------------------------------------------------- +bool cmCTestGIT::UpdateImpl() +{ + // Use "git pull" to update the working tree. + std::vector git_pull; + git_pull.push_back(this->CommandLineTool.c_str()); + git_pull.push_back("pull"); + + // TODO: if(this->CTest->GetTestModel() == cmCTest::NIGHTLY) + + // Add user-specified update options. + std::string opts = this->CTest->GetCTestConfiguration("UpdateOptions"); + if(opts.empty()) + { + opts = this->CTest->GetCTestConfiguration("GITUpdateOptions"); + } + std::vector args = cmSystemTools::ParseArguments(opts.c_str()); + for(std::vector::const_iterator ai = args.begin(); + ai != args.end(); ++ai) + { + git_pull.push_back(ai->c_str()); + } + + // Sentinel argument. + git_pull.push_back(0); + + OutputLogger out(this->Log, "pull-out> "); + OutputLogger err(this->Log, "pull-err> "); + return this->RunUpdateCommand(&git_pull[0], &out, &err); +} + +//---------------------------------------------------------------------------- +/* Diff format: + + :src-mode dst-mode src-sha1 dst-sha1 status\0 + src-path\0 + [dst-path\0] + + The format is repeated for every file changed. The [dst-path\0] + line appears only for lines with status 'C' or 'R'. See 'git help + diff-tree' for details. +*/ +class cmCTestGIT::DiffParser: public cmCTestVC::LineParser +{ +public: + DiffParser(cmCTestGIT* git, const char* prefix): + LineParser('\0', false), GIT(git), DiffField(DiffFieldNone) + { + this->SetLog(&git->Log, prefix); + } + + typedef cmCTestGIT::Change Change; + std::vector Changes; +protected: + cmCTestGIT* GIT; + enum DiffFieldType { DiffFieldNone, DiffFieldChange, + DiffFieldSrc, DiffFieldDst }; + DiffFieldType DiffField; + Change CurChange; + + void DiffReset() + { + this->DiffField = DiffFieldNone; + this->Changes.clear(); + } + + virtual bool ProcessLine() + { + if(this->Line[0] == ':') + { + this->DiffField = DiffFieldChange; + this->CurChange = Change(); + } + if(this->DiffField == DiffFieldChange) + { + // :src-mode dst-mode src-sha1 dst-sha1 status + if(this->Line[0] != ':') + { + this->DiffField = DiffFieldNone; + return true; + } + const char* src_mode_first = this->Line.c_str()+1; + const char* src_mode_last = this->ConsumeField(src_mode_first); + const char* dst_mode_first = this->ConsumeSpace(src_mode_last); + const char* dst_mode_last = this->ConsumeField(dst_mode_first); + const char* src_sha1_first = this->ConsumeSpace(dst_mode_last); + const char* src_sha1_last = this->ConsumeField(src_sha1_first); + const char* dst_sha1_first = this->ConsumeSpace(src_sha1_last); + const char* dst_sha1_last = this->ConsumeField(dst_sha1_first); + const char* status_first = this->ConsumeSpace(dst_sha1_last); + const char* status_last = this->ConsumeField(status_first); + if(status_first != status_last) + { + this->CurChange.Action = *status_first; + this->DiffField = DiffFieldSrc; + } + else + { + this->DiffField = DiffFieldNone; + } + } + else if(this->DiffField == DiffFieldSrc) + { + // src-path + if(this->CurChange.Action == 'C') + { + // Convert copy to addition of destination. + this->CurChange.Action = 'A'; + this->DiffField = DiffFieldDst; + } + else if(this->CurChange.Action == 'R') + { + // Convert rename to deletion of source and addition of destination. + this->CurChange.Action = 'D'; + this->CurChange.Path = this->Line; + this->Changes.push_back(this->CurChange); + + this->CurChange = Change('A'); + this->DiffField = DiffFieldDst; + } + else + { + this->CurChange.Path = this->Line; + this->Changes.push_back(this->CurChange); + this->DiffField = this->DiffFieldNone; + } + } + else if(this->DiffField == DiffFieldDst) + { + // dst-path + this->CurChange.Path = this->Line; + this->Changes.push_back(this->CurChange); + this->DiffField = this->DiffFieldNone; + } + return true; + } + + const char* ConsumeSpace(const char* c) + { + while(*c && isspace(*c)) { ++c; } + return c; + } + const char* ConsumeField(const char* c) + { + while(*c && !isspace(*c)) { ++c; } + return c; + } +}; + +//---------------------------------------------------------------------------- +/* Commit format: + + commit ...\n + tree ...\n + parent ...\n + author ...\n + committer ...\n + \n + Log message indented by (4) spaces\n + (even blank lines have the spaces)\n + \n + [Diff format] + + The header may have more fields. See 'git help diff-tree'. +*/ +class cmCTestGIT::CommitParser: public cmCTestGIT::DiffParser +{ +public: + CommitParser(cmCTestGIT* git, const char* prefix): + DiffParser(git, prefix), Section(SectionHeader) + { + this->Separator = SectionSep[this->Section]; + } + +private: + typedef cmCTestGIT::Revision Revision; + enum SectionType { SectionHeader, SectionBody, SectionDiff, SectionCount }; + static char const SectionSep[SectionCount]; + SectionType Section; + Revision Rev; + + struct Person + { + std::string Name; + std::string EMail; + unsigned long Time; + long TimeZone; + Person(): Name(), EMail(), Time(0), TimeZone(0) {} + }; + + void ParsePerson(const char* str, Person& person) + { + // Person Name 1234567890 +0000 + const char* c = str; + while(*c && isspace(*c)) { ++c; } + + const char* name_first = c; + while(*c && *c != '<') { ++c; } + const char* name_last = c; + while(name_last != name_first && isspace(*(name_last-1))) { --name_last; } + person.Name.assign(name_first, name_last-name_first); + + const char* email_first = *c? ++c : c; + while(*c && *c != '>') { ++c; } + const char* email_last = *c? c++ : c; + person.EMail.assign(email_first, email_last-email_first); + + person.Time = strtoul(c, (char**)&c, 10); + person.TimeZone = strtol(c, (char**)&c, 10); + } + + virtual bool ProcessLine() + { + if(this->Line.empty()) + { + this->NextSection(); + } + else + { + switch(this->Section) + { + case SectionHeader: this->DoHeaderLine(); break; + case SectionBody: this->DoBodyLine(); break; + case SectionDiff: this->DiffParser::ProcessLine(); break; + case SectionCount: break; // never happens + } + } + return true; + } + + void NextSection() + { + this->Section = SectionType((this->Section+1) % SectionCount); + this->Separator = SectionSep[this->Section]; + if(this->Section == SectionHeader) + { + this->GIT->DoRevision(this->Rev, this->Changes); + this->Rev = Revision(); + this->DiffReset(); + } + } + + void DoHeaderLine() + { + // Look for header fields that we need. + if(strncmp(this->Line.c_str(), "commit ", 7) == 0) + { + this->Rev.Rev = this->Line.c_str()+7; + } + else if(strncmp(this->Line.c_str(), "author ", 7) == 0) + { + Person author; + this->ParsePerson(this->Line.c_str()+7, author); + this->Rev.Author = author.Name; + char buf[1024]; + if(author.TimeZone >= 0) + { + sprintf(buf, "%lu +%04ld", author.Time, author.TimeZone); + } + else + { + sprintf(buf, "%lu -%04ld", author.Time, -author.TimeZone); + } + this->Rev.Date = buf; + } + } + + void DoBodyLine() + { + // Commit log lines are indented by 4 spaces. + if(this->Line.size() >= 4) + { + this->Rev.Log += this->Line.substr(4); + } + this->Rev.Log += "\n"; + } +}; + +char const cmCTestGIT::CommitParser::SectionSep[SectionCount] = +{'\n', '\n', '\0'}; + +//---------------------------------------------------------------------------- +void cmCTestGIT::LoadRevisions() +{ + // Use 'git rev-list ... | git diff-tree ...' to get revisions. + std::string range = this->OldRevision + ".." + this->NewRevision; + const char* git = this->CommandLineTool.c_str(); + const char* git_rev_list[] = + {git, "rev-list", "--reverse", range.c_str(), "--", 0}; + const char* git_diff_tree[] = + {git, "diff-tree", "--stdin", "--always", "-z", "-r", "--pretty=raw", + "--encoding=utf-8", 0}; + this->Log << this->ComputeCommandLine(git_rev_list) << " | " + << this->ComputeCommandLine(git_diff_tree) << "\n"; + + cmsysProcess* cp = cmsysProcess_New(); + cmsysProcess_AddCommand(cp, git_rev_list); + cmsysProcess_AddCommand(cp, git_diff_tree); + cmsysProcess_SetWorkingDirectory(cp, this->SourceDirectory.c_str()); + + CommitParser out(this, "dt-out> "); + OutputLogger err(this->Log, "dt-err> "); + this->RunProcess(cp, &out, &err); + + // Send one extra zero-byte to terminate the last record. + out.Process("", 1); + + cmsysProcess_Delete(cp); +} + +//---------------------------------------------------------------------------- +void cmCTestGIT::LoadModifications() +{ + // Use 'git diff-index' to get modified files. + const char* git = this->CommandLineTool.c_str(); + const char* git_diff_index[] = {git, "diff-index", "-z", "HEAD", 0}; + + DiffParser out(this, "di-out> "); + OutputLogger err(this->Log, "di-err> "); + this->RunChild(git_diff_index, &out, &err); + + for(std::vector::const_iterator ci = out.Changes.begin(); + ci != out.Changes.end(); ++ci) + { + this->DoModification(PathModified, ci->Path); + } +} diff --git a/Source/CTest/cmCTestGIT.h b/Source/CTest/cmCTestGIT.h new file mode 100644 index 000000000..2561ed4e6 --- /dev/null +++ b/Source/CTest/cmCTestGIT.h @@ -0,0 +1,47 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmCTestGIT_h +#define cmCTestGIT_h + +#include "cmCTestGlobalVC.h" + +/** \class cmCTestGIT + * \brief Interaction with git command-line tool + * + */ +class cmCTestGIT: public cmCTestGlobalVC +{ +public: + /** Construct with a CTest instance and update log stream. */ + cmCTestGIT(cmCTest* ctest, std::ostream& log); + + virtual ~cmCTestGIT(); + +private: + std::string GetWorkingRevision(); + virtual void NoteOldRevision(); + virtual void NoteNewRevision(); + virtual bool UpdateImpl(); + + void LoadRevisions(); + void LoadModifications(); + + // Parsing helper classes. + class OneLineParser; + class DiffParser; + class CommitParser; + friend class OneLineParser; + friend class DiffParser; + friend class CommitParser; +}; + +#endif diff --git a/Source/CTest/cmCTestGenericHandler.cxx b/Source/CTest/cmCTestGenericHandler.cxx index 974537848..8c3c22acf 100644 --- a/Source/CTest/cmCTestGenericHandler.cxx +++ b/Source/CTest/cmCTestGenericHandler.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestGenericHandler.cxx,v $ - Language: C++ - Date: $Date: 2007-08-28 17:46:57 $ - Version: $Revision: 1.16 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestGenericHandler.h" #include "cmSystemTools.h" @@ -26,6 +21,7 @@ cmCTestGenericHandler::cmCTestGenericHandler() this->HandlerVerbose = false; this->CTest = 0; this->SubmitIndex = 0; + this->AppendXML = false; } //---------------------------------------------------------------------- @@ -80,6 +76,7 @@ void cmCTestGenericHandler::SetPersistentOption(const char* op, //---------------------------------------------------------------------- void cmCTestGenericHandler::Initialize() { + this->AppendXML = false; this->Options.clear(); t_StringToString::iterator it; for ( it = this->PersistentOptions.begin(); @@ -103,8 +100,9 @@ const char* cmCTestGenericHandler::GetOption(const char* op) } //---------------------------------------------------------------------- -bool cmCTestGenericHandler::StartResultingXML(const char* name, - cmGeneratedFileStream& xofs) +bool cmCTestGenericHandler::StartResultingXML(cmCTest::Part part, + const char* name, + cmGeneratedFileStream& xofs) { if ( !name ) { @@ -123,8 +121,10 @@ bool cmCTestGenericHandler::StartResultingXML(const char* name, if(this->CTest->GetCurrentTag().empty()) { cmCTestLog(this->CTest, ERROR_MESSAGE, - "Current Tag empty, this may mean" - " NightlyStartTime was not set correctly." << std::endl); + "Current Tag empty, this may mean NightlyStartTime / " + "CTEST_NIGHTLY_START_TIME was not set correctly. Or " + "maybe you forgot to call ctest_start() before calling " + "ctest_configure()." << std::endl); cmSystemTools::SetFatalErrorOccured(); return false; } @@ -136,7 +136,7 @@ bool cmCTestGenericHandler::StartResultingXML(const char* name, << std::endl); return false; } - this->CTest->AddSubmitFile(ostr.str().c_str()); + this->CTest->AddSubmitFile(part, ostr.str().c_str()); return true; } @@ -169,4 +169,3 @@ bool cmCTestGenericHandler::StartLogFile(const char* name, } return true; } - diff --git a/Source/CTest/cmCTestGenericHandler.h b/Source/CTest/cmCTestGenericHandler.h index dc907c2d5..739314521 100644 --- a/Source/CTest/cmCTestGenericHandler.h +++ b/Source/CTest/cmCTestGenericHandler.h @@ -1,27 +1,22 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestGenericHandler.h,v $ - Language: C++ - Date: $Date: 2006-04-28 15:59:31 $ - Version: $Revision: 1.11 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestGenericHandler_h #define cmCTestGenericHandler_h #include "cmObject.h" +#include "cmCTest.h" -class cmCTest; class cmMakefile; class cmCTestCommand; class cmGeneratedFileStream; @@ -88,10 +83,14 @@ public: void SetSubmitIndex(int idx) { this->SubmitIndex = idx; } int GetSubmitIndex() { return this->SubmitIndex; } + void SetAppendXML(bool b) { this->AppendXML = b; } + protected: - bool StartResultingXML(const char* name, cmGeneratedFileStream& xofs); + bool StartResultingXML(cmCTest::Part part, + const char* name, cmGeneratedFileStream& xofs); bool StartLogFile(const char* name, cmGeneratedFileStream& xofs); + bool AppendXML; bool HandlerVerbose; cmCTest *CTest; t_StringToString Options; diff --git a/Source/CTest/cmCTestGlobalVC.cxx b/Source/CTest/cmCTestGlobalVC.cxx new file mode 100644 index 000000000..73a36da89 --- /dev/null +++ b/Source/CTest/cmCTestGlobalVC.cxx @@ -0,0 +1,127 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmCTestGlobalVC.h" + +#include "cmCTest.h" +#include "cmSystemTools.h" +#include "cmXMLSafe.h" + +#include + +//---------------------------------------------------------------------------- +cmCTestGlobalVC::cmCTestGlobalVC(cmCTest* ct, std::ostream& log): + cmCTestVC(ct, log) +{ + this->PriorRev = this->Unknown; +} + +//---------------------------------------------------------------------------- +cmCTestGlobalVC::~cmCTestGlobalVC() +{ +} + +//---------------------------------------------------------------------------- +const char* cmCTestGlobalVC::LocalPath(std::string const& path) +{ + return path.c_str(); +} + +//---------------------------------------------------------------------------- +void cmCTestGlobalVC::DoRevision(Revision const& revision, + std::vector const& changes) +{ + // Ignore changes in the old revision. + if(revision.Rev == this->OldRevision) + { + this->PriorRev = revision; + return; + } + + // Indicate we found a revision. + cmCTestLog(this->CTest, HANDLER_OUTPUT, "." << std::flush); + + // Store the revision. + this->Revisions.push_back(revision); + + // Report this revision. + Revision const& rev = this->Revisions.back(); + this->Log << "Found revision " << rev.Rev << "\n" + << " author = " << rev.Author << "\n" + << " date = " << rev.Date << "\n"; + + // Update information about revisions of the changed files. + for(std::vector::const_iterator ci = changes.begin(); + ci != changes.end(); ++ci) + { + if(const char* local = this->LocalPath(ci->Path)) + { + std::string dir = cmSystemTools::GetFilenamePath(local); + std::string name = cmSystemTools::GetFilenameName(local); + File& file = this->Dirs[dir][name]; + file.PriorRev = file.Rev? file.Rev : &this->PriorRev; + file.Rev = &rev; + this->Log << " " << ci->Action << " " << local << " " << "\n"; + } + } +} + +//---------------------------------------------------------------------------- +void cmCTestGlobalVC::DoModification(PathStatus status, + std::string const& path) +{ + std::string dir = cmSystemTools::GetFilenamePath(path); + std::string name = cmSystemTools::GetFilenameName(path); + File& file = this->Dirs[dir][name]; + file.Status = status; + // For local modifications the current rev is unknown and the + // prior rev is the latest from svn. + if(!file.Rev && !file.PriorRev) + { + file.PriorRev = &this->PriorRev; + } +} + +//---------------------------------------------------------------------------- +void cmCTestGlobalVC::WriteXMLDirectory(std::ostream& xml, + std::string const& path, + Directory const& dir) +{ + const char* slash = path.empty()? "":"/"; + xml << "\t\n" + << "\t\t" << cmXMLSafe(path) << "\n"; + for(Directory::const_iterator fi = dir.begin(); fi != dir.end(); ++fi) + { + std::string full = path + slash + fi->first; + this->WriteXMLEntry(xml, path, fi->first, full, fi->second); + } + xml << "\t\n"; +} + +//---------------------------------------------------------------------------- +bool cmCTestGlobalVC::WriteXMLUpdates(std::ostream& xml) +{ + cmCTestLog(this->CTest, HANDLER_OUTPUT, + " Gathering version information (one . per revision):\n" + " " << std::flush); + this->LoadRevisions(); + cmCTestLog(this->CTest, HANDLER_OUTPUT, std::endl); + + this->LoadModifications(); + + for(std::map::const_iterator + di = this->Dirs.begin(); di != this->Dirs.end(); ++di) + { + this->WriteXMLDirectory(xml, di->first, di->second); + } + + return true; +} diff --git a/Source/CTest/cmCTestGlobalVC.h b/Source/CTest/cmCTestGlobalVC.h new file mode 100644 index 000000000..d88016b60 --- /dev/null +++ b/Source/CTest/cmCTestGlobalVC.h @@ -0,0 +1,67 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmCTestGlobalVC_h +#define cmCTestGlobalVC_h + +#include "cmCTestVC.h" + +/** \class cmCTestGlobalVC + * \brief Base class for handling globally-versioned trees + * + */ +class cmCTestGlobalVC: public cmCTestVC +{ +public: + /** Construct with a CTest instance and update log stream. */ + cmCTestGlobalVC(cmCTest* ctest, std::ostream& log); + + virtual ~cmCTestGlobalVC(); + +protected: + // Implement cmCTestVC internal API. + virtual bool WriteXMLUpdates(std::ostream& xml); + + /** Represent a vcs-reported action for one path in a revision. */ + struct Change + { + char Action; + std::string Path; + Change(char a = '?'): Action(a) {} + }; + + // Update status for files in each directory. + class Directory: public std::map {}; + std::map Dirs; + + // Old and new repository revisions. + std::string OldRevision; + std::string NewRevision; + + // Information known about old revision. + Revision PriorRev; + + // Information about revisions from a svn log. + std::list Revisions; + + virtual const char* LocalPath(std::string const& path); + + virtual void DoRevision(Revision const& revision, + std::vector const& changes); + virtual void DoModification(PathStatus status, std::string const& path); + virtual void LoadModifications() = 0; + virtual void LoadRevisions() = 0; + + void WriteXMLDirectory(std::ostream& xml, std::string const& path, + Directory const& dir); +}; + +#endif diff --git a/Source/CTest/cmCTestHG.cxx b/Source/CTest/cmCTestHG.cxx new file mode 100644 index 000000000..b26367739 --- /dev/null +++ b/Source/CTest/cmCTestHG.cxx @@ -0,0 +1,338 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmCTestHG.h" + +#include "cmCTest.h" +#include "cmSystemTools.h" +#include "cmXMLParser.h" + +#include + +//---------------------------------------------------------------------------- +cmCTestHG::cmCTestHG(cmCTest* ct, std::ostream& log): + cmCTestGlobalVC(ct, log) +{ + this->PriorRev = this->Unknown; +} + +//---------------------------------------------------------------------------- +cmCTestHG::~cmCTestHG() +{ +} + +//---------------------------------------------------------------------------- +class cmCTestHG::IdentifyParser: public cmCTestVC::LineParser +{ +public: + IdentifyParser(cmCTestHG* hg, const char* prefix, + std::string& rev): Rev(rev) + { + this->SetLog(&hg->Log, prefix); + this->RegexIdentify.compile("^([0-9a-f]+)"); + } +private: + std::string& Rev; + cmsys::RegularExpression RegexIdentify; + + bool ProcessLine() + { + if(this->RegexIdentify.find(this->Line)) + { + this->Rev = this->RegexIdentify.match(1); + return false; + } + return true; + } +}; + +//---------------------------------------------------------------------------- +class cmCTestHG::StatusParser: public cmCTestVC::LineParser +{ +public: + StatusParser(cmCTestHG* hg, const char* prefix): HG(hg) + { + this->SetLog(&hg->Log, prefix); + this->RegexStatus.compile("([MARC!?I]) (.*)"); + } + +private: + cmCTestHG* HG; + cmsys::RegularExpression RegexStatus; + + bool ProcessLine() + { + if(this->RegexStatus.find(this->Line)) + { + this->DoPath(this->RegexStatus.match(1)[0], + this->RegexStatus.match(2)); + } + return true; + } + + void DoPath(char status, std::string const& path) + { + if(path.empty()) return; + + // See "hg help status". Note that there is no 'conflict' status. + switch(status) + { + case 'M': case 'A': case '!': case 'R': + this->HG->DoModification(PathModified, path); + break; + case 'I': case '?': case 'C': case ' ': default: + break; + } + } +}; + +//---------------------------------------------------------------------------- +std::string cmCTestHG::GetWorkingRevision() +{ + // Run plumbing "hg identify" to get work tree revision. + const char* hg = this->CommandLineTool.c_str(); + const char* hg_identify[] = {hg, "identify","-i", 0}; + std::string rev; + IdentifyParser out(this, "rev-out> ", rev); + OutputLogger err(this->Log, "rev-err> "); + this->RunChild(hg_identify, &out, &err); + return rev; +} + +//---------------------------------------------------------------------------- +void cmCTestHG::NoteOldRevision() +{ + this->OldRevision = this->GetWorkingRevision(); + cmCTestLog(this->CTest, HANDLER_OUTPUT, " Old revision of repository is: " + << this->OldRevision << "\n"); + this->PriorRev.Rev = this->OldRevision; +} + +//---------------------------------------------------------------------------- +void cmCTestHG::NoteNewRevision() +{ + this->NewRevision = this->GetWorkingRevision(); + cmCTestLog(this->CTest, HANDLER_OUTPUT, " New revision of repository is: " + << this->NewRevision << "\n"); +} + +//---------------------------------------------------------------------------- +bool cmCTestHG::UpdateImpl() +{ + // Use "hg pull" followed by "hg update" to update the working tree. + { + const char* hg = this->CommandLineTool.c_str(); + const char* hg_pull[] = {hg, "pull","-v", 0}; + OutputLogger out(this->Log, "pull-out> "); + OutputLogger err(this->Log, "pull-err> "); + this->RunChild(&hg_pull[0], &out, &err); + } + + // TODO: if(this->CTest->GetTestModel() == cmCTest::NIGHTLY) + + std::vector hg_update; + hg_update.push_back(this->CommandLineTool.c_str()); + hg_update.push_back("update"); + hg_update.push_back("-v"); + + // Add user-specified update options. + std::string opts = this->CTest->GetCTestConfiguration("UpdateOptions"); + if(opts.empty()) + { + opts = this->CTest->GetCTestConfiguration("HGUpdateOptions"); + } + std::vector args = cmSystemTools::ParseArguments(opts.c_str()); + for(std::vector::const_iterator ai = args.begin(); + ai != args.end(); ++ai) + { + hg_update.push_back(ai->c_str()); + } + + // Sentinel argument. + hg_update.push_back(0); + + OutputLogger out(this->Log, "update-out> "); + OutputLogger err(this->Log, "update-err> "); + return this->RunUpdateCommand(&hg_update[0], &out, &err); +} + +//---------------------------------------------------------------------------- +class cmCTestHG::LogParser: public cmCTestVC::OutputLogger, + private cmXMLParser +{ +public: + LogParser(cmCTestHG* hg, const char* prefix): + OutputLogger(hg->Log, prefix), HG(hg) { this->InitializeParser(); } + ~LogParser() { this->CleanupParser(); } +private: + cmCTestHG* HG; + + typedef cmCTestHG::Revision Revision; + typedef cmCTestHG::Change Change; + Revision Rev; + std::vector Changes; + Change CurChange; + std::vector CData; + + virtual bool ProcessChunk(const char* data, int length) + { + this->OutputLogger::ProcessChunk(data, length); + this->ParseChunk(data, length); + return true; + } + + virtual void StartElement(const char* name, const char** atts) + { + this->CData.clear(); + if(strcmp(name, "logentry") == 0) + { + this->Rev = Revision(); + if(const char* rev = this->FindAttribute(atts, "revision")) + { + this->Rev.Rev = rev; + } + this->Changes.clear(); + } + } + + virtual void CharacterDataHandler(const char* data, int length) + { + this->CData.insert(this->CData.end(), data, data+length); + } + + virtual void EndElement(const char* name) + { + if(strcmp(name, "logentry") == 0) + { + this->HG->DoRevision(this->Rev, this->Changes); + } + else if(strcmp(name, "author") == 0 && !this->CData.empty()) + { + this->Rev.Author.assign(&this->CData[0], this->CData.size()); + } + else if ( strcmp(name, "email") == 0 && !this->CData.empty()) + { + // this->Rev.Email.assign(&this->CData[0], this->CData.size()); + } + else if(strcmp(name, "date") == 0 && !this->CData.empty()) + { + this->Rev.Date.assign(&this->CData[0], this->CData.size()); + } + else if(strcmp(name, "msg") == 0 && !this->CData.empty()) + { + this->Rev.Log.assign(&this->CData[0], this->CData.size()); + } + else if(strcmp(name, "files") == 0 && !this->CData.empty()) + { + std::vector paths = this->SplitCData(); + for(unsigned int i = 0; i < paths.size(); ++i) + { + // Updated by default, will be modified using file_adds and + // file_dels. + this->CurChange = Change('U'); + this->CurChange.Path = paths[i]; + this->Changes.push_back(this->CurChange); + } + } + else if(strcmp(name, "file_adds") == 0 && !this->CData.empty()) + { + std::string added_paths(this->CData.begin(), this->CData.end()); + for(unsigned int i = 0; i < this->Changes.size(); ++i) + { + if(added_paths.find(this->Changes[i].Path) != std::string::npos) + { + this->Changes[i].Action = 'A'; + } + } + } + else if(strcmp(name, "file_dels") == 0 && !this->CData.empty()) + { + std::string added_paths(this->CData.begin(), this->CData.end()); + for(unsigned int i = 0; i < this->Changes.size(); ++i) + { + if(added_paths.find(this->Changes[i].Path) != std::string::npos) + { + this->Changes[i].Action = 'D'; + } + } + } + this->CData.clear(); + } + + std::vector SplitCData() + { + std::vector output; + std::string currPath; + for(unsigned int i=0; i < this->CData.size(); ++i) + { + if(this->CData[i] != ' ') + { + currPath += this->CData[i]; + } + else + { + output.push_back(currPath); + currPath = ""; + } + } + output.push_back(currPath); + return output; + } + + virtual void ReportError(int, int, const char* msg) + { + this->HG->Log << "Error parsing hg log xml: " << msg << "\n"; + } +}; + +//---------------------------------------------------------------------------- +void cmCTestHG::LoadRevisions() +{ + // Use 'hg log' to get revisions in a xml format. + // + // TODO: This should use plumbing or python code to be more precise. + // The "list of strings" templates like {files} will not work when + // the project has spaces in the path. Also, they may not have + // proper XML escapes. + std::string range = this->OldRevision + ":" + this->NewRevision; + const char* hg = this->CommandLineTool.c_str(); + const char* hgXMLTemplate = + "\n" + " {author|person}\n" + " {author|email}\n" + " {date|isodate}\n" + " {desc}\n" + " {files}\n" + " {file_adds}\n" + " {file_dels}\n" + "\n"; + const char* hg_log[] = {hg, "log","--removed", "-r", range.c_str(), + "--template", hgXMLTemplate, 0}; + + LogParser out(this, "log-out> "); + out.Process("\n" + "\n"); + OutputLogger err(this->Log, "log-err> "); + this->RunChild(hg_log, &out, &err); + out.Process("\n"); +} + +//---------------------------------------------------------------------------- +void cmCTestHG::LoadModifications() +{ + // Use 'hg status' to get modified files. + const char* hg = this->CommandLineTool.c_str(); + const char* hg_status[] = {hg, "status", 0}; + StatusParser out(this, "status-out> "); + OutputLogger err(this->Log, "status-err> "); + this->RunChild(hg_status, &out, &err); +} diff --git a/Source/CTest/cmCTestHG.h b/Source/CTest/cmCTestHG.h new file mode 100644 index 000000000..1eaf9337e --- /dev/null +++ b/Source/CTest/cmCTestHG.h @@ -0,0 +1,47 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmCTestHG_h +#define cmCTestHG_h + +#include "cmCTestGlobalVC.h" + +/** \class cmCTestHG + * \brief Interaction with Mercurial command-line tool + * + */ +class cmCTestHG: public cmCTestGlobalVC +{ +public: + /** Construct with a CTest instance and update log stream. */ + cmCTestHG(cmCTest* ctest, std::ostream& log); + + virtual ~cmCTestHG(); + +private: + std::string GetWorkingRevision(); + virtual void NoteOldRevision(); + virtual void NoteNewRevision(); + virtual bool UpdateImpl(); + + void LoadRevisions(); + void LoadModifications(); + + // Parsing helper classes. + class IdentifyParser; + class StatusParser; + class LogParser; + friend class IdentifyParser; + friend class StatusParser; + friend class LogParser; +}; + +#endif diff --git a/Source/CTest/cmCTestHandlerCommand.cxx b/Source/CTest/cmCTestHandlerCommand.cxx index 07e1d972e..1c9f08061 100644 --- a/Source/CTest/cmCTestHandlerCommand.cxx +++ b/Source/CTest/cmCTestHandlerCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestHandlerCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-01-23 15:28:01 $ - Version: $Revision: 1.11 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestHandlerCommand.h" #include "cmCTest.h" @@ -33,15 +28,35 @@ cmCTestHandlerCommand::cmCTestHandlerCommand() this->Arguments[ct_BUILD] = "BUILD"; this->Arguments[ct_SUBMIT_INDEX] = "SUBMIT_INDEX"; this->Last = ct_LAST; + this->AppendXML = false; } bool cmCTestHandlerCommand ::InitialPass(std::vector const& args, cmExecutionStatus &) { - if ( !this->ProcessArguments(args, (unsigned int)this->Last, - &*this->Arguments.begin(),this->Values) ) + // Allocate space for argument values. + this->Values.clear(); + this->Values.resize(this->Last, 0); + + // Process input arguments. + this->ArgumentDoing = ArgumentDoingNone; + for(unsigned int i=0; i < args.size(); ++i) { - return false; + // Check this argument. + if(!this->CheckArgumentKeyword(args[i]) && + !this->CheckArgumentValue(args[i])) + { + cmOStringStream e; + e << "called with unknown argument \"" << args[i] << "\"."; + this->SetError(e.str().c_str()); + return false; + } + + // Quit if an argument is invalid. + if(this->ArgumentDoing == ArgumentDoingError) + { + return false; + } } cmCTestLog(this->CTest, DEBUG, "Initialize handler" << std::endl;); @@ -54,9 +69,9 @@ bool cmCTestHandlerCommand return false; } - cmCTestLog(this->CTest, DEBUG, "Populate Custom Vectors" << std::endl;); - handler->PopulateCustomVectors(this->Makefile); + handler->SetAppendXML(this->AppendXML); + handler->PopulateCustomVectors(this->Makefile); if ( this->Values[ct_BUILD] ) { this->CTest->SetCTestConfiguration("BuildDirectory", @@ -65,9 +80,19 @@ bool cmCTestHandlerCommand } else { - this->CTest->SetCTestConfiguration("BuildDirectory", - cmSystemTools::CollapseFullPath( - this->Makefile->GetDefinition("CTEST_BINARY_DIRECTORY")).c_str()); + const char* bdir = + this->Makefile->GetSafeDefinition("CTEST_BINARY_DIRECTORY"); + if(bdir) + { + this-> + CTest->SetCTestConfiguration("BuildDirectory", + cmSystemTools::CollapseFullPath(bdir).c_str()); + } + else + { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "CTEST_BINARY_DIRECTORY not set" << std::endl;); + } } if ( this->Values[ct_SOURCE] ) { @@ -81,7 +106,7 @@ bool cmCTestHandlerCommand { this->CTest->SetCTestConfiguration("SourceDirectory", cmSystemTools::CollapseFullPath( - this->Makefile->GetDefinition("CTEST_SOURCE_DIRECTORY")).c_str()); + this->Makefile->GetSafeDefinition("CTEST_SOURCE_DIRECTORY")).c_str()); } if ( this->Values[ct_SUBMIT_INDEX] ) { @@ -98,7 +123,6 @@ bool cmCTestHandlerCommand handler->SetSubmitIndex(atoi(this->Values[ct_SUBMIT_INDEX])); } } - std::string current_dir = cmSystemTools::GetCurrentWorkingDirectory(); cmSystemTools::ChangeDirectory( this->CTest->GetCTestConfiguration("BuildDirectory").c_str()); @@ -114,57 +138,49 @@ bool cmCTestHandlerCommand return true; } -bool cmCTestHandlerCommand::ProcessArguments( - std::vector const& args, int last, const char** strings, - std::vector& values) +//---------------------------------------------------------------------------- +bool cmCTestHandlerCommand::CheckArgumentKeyword(std::string const& arg) { - int state = 0; - int cc; - values.resize(last); - for ( cc = 0; cc < last; ++ cc ) + // Look for non-value arguments common to all commands. + if(arg == "APPEND") { - values[cc] = 0; + this->ArgumentDoing = ArgumentDoingNone; + this->AppendXML = true; + return true; } - for(size_t i=0; i < args.size(); ++i) + // Check for a keyword in our argument/value table. + for(unsigned int k=0; k < this->Arguments.size(); ++k) { - if ( state > 0 && state < last ) + if(this->Arguments[k] && arg == this->Arguments[k]) { - values[state] = args[i].c_str(); - cmCTestLog(this->CTest, DEBUG, "Set " << strings[state] << " to " - << args[i].c_str() << std::endl); - state = 0; + this->ArgumentDoing = ArgumentDoingKeyword; + this->ArgumentIndex = k; + return true; } - else + } + return false; +} + +//---------------------------------------------------------------------------- +bool cmCTestHandlerCommand::CheckArgumentValue(std::string const& arg) +{ + if(this->ArgumentDoing == ArgumentDoingKeyword) + { + this->ArgumentDoing = ArgumentDoingNone; + unsigned int k = this->ArgumentIndex; + if(this->Values[k]) { - bool found = false; - for ( cc = 0; cc < last; ++ cc ) - { - if ( strings[cc] && args[i] == strings[cc] ) - { - state = cc; - if ( values[state] ) - { - cmOStringStream ostr; - ostr << "called with incorrect number of arguments. " - << strings[state] << " specified twice."; - this->SetError(ostr.str().c_str()); - return false; - } - found = true; - break; - } - } - if ( !found ) - { - cmOStringStream str; - str - << "called with incorrect number of arguments. Extra argument is: " - << args[i].c_str() << "."; - this->SetError(str.str().c_str()); - return false; - } + cmOStringStream e; + e << "Called with more than one value for " << this->Arguments[k]; + this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); + this->ArgumentDoing = ArgumentDoingError; + return true; } + this->Values[k] = arg.c_str(); + cmCTestLog(this->CTest, DEBUG, "Set " << this->Arguments[k] + << " to " << arg << "\n"); + return true; } - return true; + return false; } diff --git a/Source/CTest/cmCTestHandlerCommand.h b/Source/CTest/cmCTestHandlerCommand.h index c095edd46..8ef2b8028 100644 --- a/Source/CTest/cmCTestHandlerCommand.h +++ b/Source/CTest/cmCTestHandlerCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestHandlerCommand.h,v $ - Language: C++ - Date: $Date: 2008-01-23 15:28:01 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestHandlerCommand_h #define cmCTestHandlerCommand_h @@ -52,8 +47,21 @@ public: protected: virtual cmCTestGenericHandler* InitializeHandler() = 0; - bool ProcessArguments(std::vector const& args, - int last, const char** strings, std::vector& values); + + // Command argument handling. + virtual bool CheckArgumentKeyword(std::string const& arg); + virtual bool CheckArgumentValue(std::string const& arg); + enum + { + ArgumentDoingNone, + ArgumentDoingError, + ArgumentDoingKeyword, + ArgumentDoingLast1 + }; + int ArgumentDoing; + unsigned int ArgumentIndex; + + bool AppendXML; std::string ReturnVariable; std::vector Arguments; @@ -61,4 +69,9 @@ protected: size_t Last; }; +#define CTEST_COMMAND_APPEND_OPTION_DOCS \ + "The APPEND option marks results for append to those previously " \ + "submitted to a dashboard server since the last ctest_start. " \ + "Append semantics are defined by the dashboard server in use." + #endif diff --git a/Source/CTest/cmCTestLaunch.cxx b/Source/CTest/cmCTestLaunch.cxx new file mode 100644 index 000000000..8e305b72e --- /dev/null +++ b/Source/CTest/cmCTestLaunch.cxx @@ -0,0 +1,712 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmCTestLaunch.h" + +#include "cmGeneratedFileStream.h" +#include "cmSystemTools.h" +#include "cmXMLSafe.h" +#include "cmake.h" + +#include +#include +#include + +//---------------------------------------------------------------------------- +cmCTestLaunch::cmCTestLaunch(int argc, const char* const* argv) +{ + this->Passthru = true; + this->Process = 0; + this->ExitCode = 1; + this->CWD = cmSystemTools::GetCurrentWorkingDirectory(); + + if(!this->ParseArguments(argc, argv)) + { + return; + } + + this->ComputeFileNames(); + + this->ScrapeRulesLoaded = false; + this->HaveOut = false; + this->HaveErr = false; + this->Process = cmsysProcess_New(); +} + +//---------------------------------------------------------------------------- +cmCTestLaunch::~cmCTestLaunch() +{ + cmsysProcess_Delete(this->Process); + if(!this->Passthru) + { + cmSystemTools::RemoveFile(this->LogOut.c_str()); + cmSystemTools::RemoveFile(this->LogErr.c_str()); + } +} + +//---------------------------------------------------------------------------- +bool cmCTestLaunch::ParseArguments(int argc, const char* const* argv) +{ + // Launcher options occur first and are separated from the real + // command line by a '--' option. + enum Doing { DoingNone, + DoingOutput, + DoingSource, + DoingLanguage, + DoingTargetName, + DoingTargetType, + DoingBuildDir, + DoingCount }; + Doing doing = DoingNone; + int arg0 = 0; + for(int i=1; !arg0 && i < argc; ++i) + { + const char* arg = argv[i]; + if(strcmp(arg, "--") == 0) + { + arg0 = i+1; + } + else if(strcmp(arg, "--output") == 0) + { + doing = DoingOutput; + } + else if(strcmp(arg, "--source") == 0) + { + doing = DoingSource; + } + else if(strcmp(arg, "--language") == 0) + { + doing = DoingLanguage; + } + else if(strcmp(arg, "--target-name") == 0) + { + doing = DoingTargetName; + } + else if(strcmp(arg, "--target-type") == 0) + { + doing = DoingTargetType; + } + else if(strcmp(arg, "--build-dir") == 0) + { + doing = DoingBuildDir; + } + else if(doing == DoingOutput) + { + this->OptionOutput = arg; + doing = DoingNone; + } + else if(doing == DoingSource) + { + this->OptionSource = arg; + doing = DoingNone; + } + else if(doing == DoingLanguage) + { + this->OptionLanguage = arg; + if(this->OptionLanguage == "CXX") + { + this->OptionLanguage = "C++"; + } + doing = DoingNone; + } + else if(doing == DoingTargetName) + { + this->OptionTargetName = arg; + doing = DoingNone; + } + else if(doing == DoingTargetType) + { + this->OptionTargetType = arg; + doing = DoingNone; + } + else if(doing == DoingBuildDir) + { + this->OptionBuildDir = arg; + doing = DoingNone; + } + } + + // Extract the real command line. + if(arg0) + { + this->RealArgC = argc - arg0; + this->RealArgV = argv + arg0; + for(int i=0; i < this->RealArgC; ++i) + { + this->HandleRealArg(this->RealArgV[i]); + } + return true; + } + else + { + this->RealArgC = 0; + this->RealArgV = 0; + std::cerr << "No launch/command separator ('--') found!\n"; + return false; + } +} + +//---------------------------------------------------------------------------- +void cmCTestLaunch::HandleRealArg(const char* arg) +{ +#ifdef _WIN32 + // Expand response file arguments. + if(arg[0] == '@' && cmSystemTools::FileExists(arg+1)) + { + std::ifstream fin(arg+1); + std::string line; + while(cmSystemTools::GetLineFromStream(fin, line)) + { + cmSystemTools::ParseWindowsCommandLine(line.c_str(), this->RealArgs); + } + return; + } +#endif + this->RealArgs.push_back(arg); +} + +//---------------------------------------------------------------------------- +void cmCTestLaunch::ComputeFileNames() +{ + // We just passthru the behavior of the real command unless the + // CTEST_LAUNCH_LOGS environment variable is set. + const char* d = getenv("CTEST_LAUNCH_LOGS"); + if(!(d && *d)) + { + return; + } + this->Passthru = false; + + // The environment variable specifies the directory into which we + // generate build logs. + this->LogDir = d; + cmSystemTools::ConvertToUnixSlashes(this->LogDir); + this->LogDir += "/"; + + // We hash the input command working dir and command line to obtain + // a repeatable and (probably) unique name for log files. + char hash[32]; + cmsysMD5* md5 = cmsysMD5_New(); + cmsysMD5_Initialize(md5); + cmsysMD5_Append(md5, (unsigned char const*)(this->CWD.c_str()), -1); + for(std::vector::const_iterator ai = this->RealArgs.begin(); + ai != this->RealArgs.end(); ++ai) + { + cmsysMD5_Append(md5, (unsigned char const*)ai->c_str(), -1); + } + cmsysMD5_FinalizeHex(md5, hash); + cmsysMD5_Delete(md5); + this->LogHash.assign(hash, 32); + + // We store stdout and stderr in temporary log files. + this->LogOut = this->LogDir; + this->LogOut += "launch-"; + this->LogOut += this->LogHash; + this->LogOut += "-out.txt"; + this->LogErr = this->LogDir; + this->LogErr += "launch-"; + this->LogErr += this->LogHash; + this->LogErr += "-err.txt"; +} + +//---------------------------------------------------------------------------- +void cmCTestLaunch::RunChild() +{ + // Prepare to run the real command. + cmsysProcess* cp = this->Process; + cmsysProcess_SetCommand(cp, this->RealArgV); + + std::ofstream fout; + std::ofstream ferr; + if(this->Passthru) + { + // In passthru mode we just share the output pipes. + cmsysProcess_SetPipeShared(cp, cmsysProcess_Pipe_STDOUT, 1); + cmsysProcess_SetPipeShared(cp, cmsysProcess_Pipe_STDERR, 1); + } + else + { + // In full mode we record the child output pipes to log files. + fout.open(this->LogOut.c_str(), + std::ios::out | std::ios::binary); + ferr.open(this->LogErr.c_str(), + std::ios::out | std::ios::binary); + } + + // Run the real command. + cmsysProcess_Execute(cp); + + // Record child stdout and stderr if necessary. + if(!this->Passthru) + { + char* data = 0; + int length = 0; + while(int p = cmsysProcess_WaitForData(cp, &data, &length, 0)) + { + if(p == cmsysProcess_Pipe_STDOUT) + { + fout.write(data, length); + std::cout.write(data, length); + this->HaveOut = true; + } + else if(p == cmsysProcess_Pipe_STDERR) + { + ferr.write(data, length); + std::cerr.write(data, length); + this->HaveErr = true; + } + } + } + + // Wait for the real command to finish. + cmsysProcess_WaitForExit(cp, 0); + this->ExitCode = cmsysProcess_GetExitValue(cp); +} + +//---------------------------------------------------------------------------- +int cmCTestLaunch::Run() +{ + if(!this->Process) + { + std::cerr << "Could not allocate cmsysProcess instance!\n"; + return -1; + } + + this->RunChild(); + + if(this->CheckResults()) + { + return this->ExitCode; + } + + this->LoadConfig(); + this->WriteXML(); + + return this->ExitCode; +} + +//---------------------------------------------------------------------------- +void cmCTestLaunch::LoadLabels() +{ + if(this->OptionBuildDir.empty() || this->OptionTargetName.empty()) + { + return; + } + + // Labels are listed in per-target files. + std::string fname = this->OptionBuildDir; + fname += cmake::GetCMakeFilesDirectory(); + fname += "/"; + fname += this->OptionTargetName; + fname += ".dir/Labels.txt"; + + // We are interested in per-target labels for this source file. + std::string source = this->OptionSource; + cmSystemTools::ConvertToUnixSlashes(source); + + // Load the labels file. + std::ifstream fin(fname.c_str(), std::ios::in | std::ios::binary); + if(!fin) { return; } + bool inTarget = true; + bool inSource = false; + std::string line; + while(cmSystemTools::GetLineFromStream(fin, line)) + { + if(line.empty() || line[0] == '#') + { + // Ignore blank and comment lines. + continue; + } + else if(line[0] == ' ') + { + // Label lines appear indented by one space. + if(inTarget || inSource) + { + this->Labels.insert(line.c_str()+1); + } + } + else if(!this->OptionSource.empty() && !inSource) + { + // Non-indented lines specify a source file name. The first one + // is the end of the target-wide labels. Use labels following a + // matching source. + inTarget = false; + inSource = this->SourceMatches(line, source); + } + else + { + return; + } + } +} + +//---------------------------------------------------------------------------- +bool cmCTestLaunch::SourceMatches(std::string const& lhs, + std::string const& rhs) +{ + // TODO: Case sensitivity, UseRelativePaths, etc. Note that both + // paths in the comparison get generated by CMake. This is done for + // every source in the target, so it should be efficient (cannot use + // cmSystemTools::IsSameFile). + return lhs == rhs; +} + +//---------------------------------------------------------------------------- +bool cmCTestLaunch::IsError() const +{ + return this->ExitCode != 0; +} + +//---------------------------------------------------------------------------- +void cmCTestLaunch::WriteXML() +{ + // Name the xml file. + std::string logXML = this->LogDir; + logXML += this->IsError()? "error-" : "warning-"; + logXML += this->LogHash; + logXML += ".xml"; + + // Use cmGeneratedFileStream to atomically create the report file. + cmGeneratedFileStream fxml(logXML.c_str()); + fxml << "\tIsError()? "Error" : "Warning") << "\">\n"; + this->WriteXMLAction(fxml); + this->WriteXMLCommand(fxml); + this->WriteXMLResult(fxml); + this->WriteXMLLabels(fxml); + fxml << "\t\n"; +} + +//---------------------------------------------------------------------------- +void cmCTestLaunch::WriteXMLAction(std::ostream& fxml) +{ + fxml << "\t\t\n"; + fxml << "\t\t\n"; + + // TargetName + if(!this->OptionTargetName.empty()) + { + fxml << "\t\t\t" + << cmXMLSafe(this->OptionTargetName) + << "\n"; + } + + // Language + if(!this->OptionLanguage.empty()) + { + fxml << "\t\t\t" + << cmXMLSafe(this->OptionLanguage) + << "\n"; + } + + // SourceFile + if(!this->OptionSource.empty()) + { + std::string source = this->OptionSource; + cmSystemTools::ConvertToUnixSlashes(source); + + // If file is in source tree use its relative location. + if(cmSystemTools::FileIsFullPath(this->SourceDir.c_str()) && + cmSystemTools::FileIsFullPath(source.c_str()) && + cmSystemTools::IsSubDirectory(source.c_str(), + this->SourceDir.c_str())) + { + source = cmSystemTools::RelativePath(this->SourceDir.c_str(), + source.c_str()); + } + + fxml << "\t\t\t" + << cmXMLSafe(source) + << "\n"; + } + + // OutputFile + if(!this->OptionOutput.empty()) + { + fxml << "\t\t\t" + << cmXMLSafe(this->OptionOutput) + << "\n"; + } + + // OutputType + const char* outputType = 0; + if(!this->OptionTargetType.empty()) + { + if(this->OptionTargetType == "EXECUTABLE") + { + outputType = "executable"; + } + else if(this->OptionTargetType == "SHARED_LIBRARY") + { + outputType = "shared library"; + } + else if(this->OptionTargetType == "MODULE_LIBRARY") + { + outputType = "module library"; + } + else if(this->OptionTargetType == "STATIC_LIBRARY") + { + outputType = "static library"; + } + } + else if(!this->OptionSource.empty()) + { + outputType = "object file"; + } + if(outputType) + { + fxml << "\t\t\t" + << cmXMLSafe(outputType) + << "\n"; + } + + fxml << "\t\t\n"; +} + +//---------------------------------------------------------------------------- +void cmCTestLaunch::WriteXMLCommand(std::ostream& fxml) +{ + fxml << "\n"; + fxml << "\t\t\n"; + fxml << "\t\t\n"; + if(!this->CWD.empty()) + { + fxml << "\t\t\t" + << cmXMLSafe(this->CWD) + << "\n"; + } + for(std::vector::const_iterator ai = this->RealArgs.begin(); + ai != this->RealArgs.end(); ++ai) + { + fxml << "\t\t\t" + << cmXMLSafe(ai->c_str()) + << "\n"; + } + fxml << "\t\t\n"; +} + +//---------------------------------------------------------------------------- +void cmCTestLaunch::WriteXMLResult(std::ostream& fxml) +{ + fxml << "\n"; + fxml << "\t\t\n"; + fxml << "\t\t\n"; + + // StdOut + fxml << "\t\t\t"; + this->DumpFileToXML(fxml, this->LogOut); + fxml << "\n"; + + // StdErr + fxml << "\t\t\t"; + this->DumpFileToXML(fxml, this->LogErr); + fxml << "\n"; + + // ExitCondition + fxml << "\t\t\t"; + cmsysProcess* cp = this->Process; + switch (cmsysProcess_GetState(cp)) + { + case cmsysProcess_State_Starting: + fxml << "No process has been executed"; break; + case cmsysProcess_State_Executing: + fxml << "The process is still executing"; break; + case cmsysProcess_State_Disowned: + fxml << "Disowned"; break; + case cmsysProcess_State_Killed: + fxml << "Killed by parent"; break; + + case cmsysProcess_State_Expired: + fxml << "Killed when timeout expired"; break; + case cmsysProcess_State_Exited: + fxml << this->ExitCode; break; + case cmsysProcess_State_Exception: + fxml << "Terminated abnormally: " + << cmXMLSafe(cmsysProcess_GetExceptionString(cp)); break; + case cmsysProcess_State_Error: + fxml << "Error administrating child process: " + << cmXMLSafe(cmsysProcess_GetErrorString(cp)); break; + }; + fxml << "\n"; + + fxml << "\t\t\n"; +} + +//---------------------------------------------------------------------------- +void cmCTestLaunch::WriteXMLLabels(std::ostream& fxml) +{ + this->LoadLabels(); + if(!this->Labels.empty()) + { + fxml << "\n"; + fxml << "\t\t\n"; + fxml << "\t\t\n"; + for(std::set::const_iterator li = this->Labels.begin(); + li != this->Labels.end(); ++li) + { + fxml << "\t\t\t\n"; + } + fxml << "\t\t\n"; + } +} + +//---------------------------------------------------------------------------- +void cmCTestLaunch::DumpFileToXML(std::ostream& fxml, + std::string const& fname) +{ + std::ifstream fin(fname.c_str(), std::ios::in | std::ios::binary); + + std::string line; + const char* sep = ""; + while(cmSystemTools::GetLineFromStream(fin, line)) + { + fxml << sep << cmXMLSafe(line).Quotes(false); + sep = "\n"; + } +} + +//---------------------------------------------------------------------------- +bool cmCTestLaunch::CheckResults() +{ + // Skip XML in passthru mode. + if(this->Passthru) + { + return true; + } + + // We always report failure for error conditions. + if(this->IsError()) + { + return false; + } + + // Scrape the output logs to look for warnings. + if((this->HaveErr && this->ScrapeLog(this->LogErr)) || + (this->HaveOut && this->ScrapeLog(this->LogOut))) + { + return false; + } + return true; +} + +//---------------------------------------------------------------------------- +void cmCTestLaunch::LoadScrapeRules() +{ + if(this->ScrapeRulesLoaded) + { + return; + } + this->ScrapeRulesLoaded = true; + + // Common compiler warning formats. These are much simpler than the + // full log-scraping expressions because we do not need to extract + // file and line information. + this->RegexWarning.push_back("(^|[ :])[Ww][Aa][Rr][Nn][Ii][Nn][Gg]"); + this->RegexWarning.push_back("(^|[ :])[Rr][Ee][Mm][Aa][Rr][Kk]"); + this->RegexWarning.push_back("(^|[ :])[Nn][Oo][Tt][Ee]"); + + // Load custom match rules given to us by CTest. + this->LoadScrapeRules("Warning", this->RegexWarning); + this->LoadScrapeRules("WarningSuppress", this->RegexWarningSuppress); +} + +//---------------------------------------------------------------------------- +void +cmCTestLaunch +::LoadScrapeRules(const char* purpose, + std::vector& regexps) +{ + std::string fname = this->LogDir; + fname += "Custom"; + fname += purpose; + fname += ".txt"; + std::ifstream fin(fname.c_str(), std::ios::in | std::ios::binary); + std::string line; + cmsys::RegularExpression rex; + while(cmSystemTools::GetLineFromStream(fin, line)) + { + if(rex.compile(line.c_str())) + { + regexps.push_back(rex); + } + } +} + +//---------------------------------------------------------------------------- +bool cmCTestLaunch::ScrapeLog(std::string const& fname) +{ + this->LoadScrapeRules(); + + // Look for log file lines matching warning expressions but not + // suppression expressions. + std::ifstream fin(fname.c_str(), std::ios::in | std::ios::binary); + std::string line; + while(cmSystemTools::GetLineFromStream(fin, line)) + { + if(this->Match(line.c_str(), this->RegexWarning) && + !this->Match(line.c_str(), this->RegexWarningSuppress)) + { + return true; + } + } + return false; +} + +//---------------------------------------------------------------------------- +bool cmCTestLaunch::Match(std::string const& line, + std::vector& regexps) +{ + for(std::vector::iterator ri = regexps.begin(); + ri != regexps.end(); ++ri) + { + if(ri->find(line.c_str())) + { + return true; + } + } + return false; +} + +//---------------------------------------------------------------------------- +int cmCTestLaunch::Main(int argc, const char* const argv[]) +{ + if(argc == 2) + { + std::cerr << "ctest --launch: this mode is for internal CTest use only" + << std::endl; + return 1; + } + cmCTestLaunch self(argc, argv); + return self.Run(); +} + +//---------------------------------------------------------------------------- +#include "cmGlobalGenerator.h" +#include "cmLocalGenerator.h" +#include "cmMakefile.h" +#include "cmake.h" +#include +void cmCTestLaunch::LoadConfig() +{ + cmake cm; + cmGlobalGenerator gg; + gg.SetCMakeInstance(&cm); + cmsys::auto_ptr lg(gg.CreateLocalGenerator()); + cmMakefile* mf = lg->GetMakefile(); + std::string fname = this->LogDir; + fname += "CTestLaunchConfig.cmake"; + if(cmSystemTools::FileExists(fname.c_str()) && + mf->ReadListFile(0, fname.c_str())) + { + this->SourceDir = mf->GetSafeDefinition("CTEST_SOURCE_DIRECTORY"); + cmSystemTools::ConvertToUnixSlashes(this->SourceDir); + } +} diff --git a/Source/CTest/cmCTestLaunch.h b/Source/CTest/cmCTestLaunch.h new file mode 100644 index 000000000..cd876d085 --- /dev/null +++ b/Source/CTest/cmCTestLaunch.h @@ -0,0 +1,104 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmCTestLaunch_h +#define cmCTestLaunch_h + +#include "cmStandardIncludes.h" +#include + +/** \class cmCTestLaunch + * \brief Launcher for make rules to report results for ctest + * + * This implements the 'ctest --launch' tool. + */ +class cmCTestLaunch +{ +public: + /** Entry point from ctest executable main(). */ + static int Main(int argc, const char* const* argv); +private: + // Initialize the launcher from its command line. + cmCTestLaunch(int argc, const char* const* argv); + ~cmCTestLaunch(); + + // Run the real command. + int Run(); + void RunChild(); + + // Methods to check the result of the real command. + bool IsError() const; + bool CheckResults(); + + // Launcher options specified before the real command. + std::string OptionOutput; + std::string OptionSource; + std::string OptionLanguage; + std::string OptionTargetName; + std::string OptionTargetType; + std::string OptionBuildDir; + bool ParseArguments(int argc, const char* const* argv); + + // The real command line appearing after launcher arguments. + int RealArgC; + const char* const* RealArgV; + std::string CWD; + + // The real command line after response file expansion. + std::vector RealArgs; + void HandleRealArg(const char* arg); + + // A hash of the real command line is unique and unlikely to collide. + std::string LogHash; + void ComputeFileNames(); + + bool Passthru; + struct cmsysProcess_s* Process; + int ExitCode; + + // Temporary log files for stdout and stderr of real command. + std::string LogDir; + std::string LogOut; + std::string LogErr; + bool HaveOut; + bool HaveErr; + + // Labels associated with the build rule. + std::set Labels; + void LoadLabels(); + bool SourceMatches(std::string const& lhs, + std::string const& rhs); + + // Regular expressions to match warnings and their exceptions. + bool ScrapeRulesLoaded; + std::vector RegexWarning; + std::vector RegexWarningSuppress; + void LoadScrapeRules(); + void LoadScrapeRules(const char* purpose, + std::vector& regexps); + bool ScrapeLog(std::string const& fname); + bool Match(std::string const& line, + std::vector& regexps); + + // Methods to generate the xml fragment. + void WriteXML(); + void WriteXMLAction(std::ostream& fxml); + void WriteXMLCommand(std::ostream& fxml); + void WriteXMLResult(std::ostream& fxml); + void WriteXMLLabels(std::ostream& fxml); + void DumpFileToXML(std::ostream& fxml, std::string const& fname); + + // Configuration + void LoadConfig(); + std::string SourceDir; +}; + +#endif diff --git a/Source/CTest/cmCTestMemCheckCommand.cxx b/Source/CTest/cmCTestMemCheckCommand.cxx index d72d17373..535c9934f 100644 --- a/Source/CTest/cmCTestMemCheckCommand.cxx +++ b/Source/CTest/cmCTestMemCheckCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestMemCheckCommand.cxx,v $ - Language: C++ - Date: $Date: 2006-03-15 16:02:08 $ - Version: $Revision: 1.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestMemCheckCommand.h" #include "cmCTest.h" diff --git a/Source/CTest/cmCTestMemCheckCommand.h b/Source/CTest/cmCTestMemCheckCommand.h index bf35f323a..8fa142f69 100644 --- a/Source/CTest/cmCTestMemCheckCommand.h +++ b/Source/CTest/cmCTestMemCheckCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestMemCheckCommand.h,v $ - Language: C++ - Date: $Date: 2008-05-15 19:39:59 $ - Version: $Revision: 1.4.12.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestMemCheckCommand_h #define cmCTestMemCheckCommand_h @@ -53,7 +48,7 @@ public: */ virtual const char* GetTerseDocumentation() { - return "Tests the repository."; + return "Run tests with a dynamic analysis tool."; } /** @@ -62,10 +57,24 @@ public: virtual const char* GetFullDocumentation() { return - " ctest_memcheck([BUILD build_dir] [RETURN_VALUE res])\n" - "Performs a memory checking of tests in the given build directory and " - "stores results in MemCheck.xml. The second argument is a variable " - "that will hold value."; + " ctest_memcheck([BUILD build_dir] [RETURN_VALUE res] [APPEND]\n" + " [START start number] [END end number]\n" + " [STRIDE stride number] [EXCLUDE exclude regex ]\n" + " [INCLUDE include regex] \n" + " [EXCLUDE_LABEL exclude regex] \n" + " [INCLUDE_LABEL label regex] \n" + " [PARALLEL_LEVEL level] )\n" + "Tests the given build directory and stores results in MemCheck.xml. " + "The second argument is a variable that will hold value. Optionally, " + "you can specify the starting test number START, the ending test number " + "END, the number of tests to skip between each test STRIDE, a regular " + "expression for tests to run INCLUDE, or a regular expression for tests " + "not to run EXCLUDE. EXCLUDE_LABEL and INCLUDE_LABEL are regular " + "expressions for tests to be included or excluded by the test " + "property LABEL. PARALLEL_LEVEL should be set to a positive number " + "representing the number of tests to be run in parallel." + "\n" + CTEST_COMMAND_APPEND_OPTION_DOCS; } cmTypeMacro(cmCTestMemCheckCommand, cmCTestTestCommand); diff --git a/Source/CTest/cmCTestMemCheckHandler.cxx b/Source/CTest/cmCTestMemCheckHandler.cxx index 77b744209..0c63d833e 100644 --- a/Source/CTest/cmCTestMemCheckHandler.cxx +++ b/Source/CTest/cmCTestMemCheckHandler.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestMemCheckHandler.cxx,v $ - Language: C++ - Date: $Date: 2008-01-30 16:17:36 $ - Version: $Revision: 1.19 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestMemCheckHandler.h" #include "cmXMLParser.h" @@ -24,6 +19,7 @@ #include #include #include "cmMakefile.h" +#include "cmXMLSafe.h" #include #include @@ -77,8 +73,8 @@ public: int i = 0; for(; atts[i] != 0; i+=2) { - ostr << " " << this->CTest->MakeXMLSafe(atts[i]).c_str() - << " - " << this->CTest->MakeXMLSafe(atts[i+1]).c_str() << "\n"; + ostr << " " << cmXMLSafe(atts[i]) + << " - " << cmXMLSafe(atts[i+1]) << "\n"; } ostr << "\n"; this->Log += ostr.str(); @@ -248,15 +244,14 @@ int cmCTestMemCheckHandler::PostProcessHandler() //---------------------------------------------------------------------- void cmCTestMemCheckHandler::GenerateTestCommand( - std::vector& args) + std::vector& args) { std::vector::size_type pp; - args.push_back(this->MemoryTester.c_str()); std::string memcheckcommand = ""; memcheckcommand = this->MemoryTester; for ( pp = 0; pp < this->MemoryTesterOptionsParsed.size(); pp ++ ) { - args.push_back(this->MemoryTesterOptionsParsed[pp].c_str()); + args.push_back(this->MemoryTesterOptionsParsed[pp]); memcheckcommand += " "; memcheckcommand += cmSystemTools::EscapeSpaces( this->MemoryTesterOptionsParsed[pp].c_str()); @@ -287,7 +282,7 @@ void cmCTestMemCheckHandler::GenerateDartOutput(std::ostream& os) return; } - this->CTest->StartXML(os); + this->CTest->StartXML(os, this->AppendXML); os << "MemoryTesterStyle ) { @@ -313,7 +308,7 @@ void cmCTestMemCheckHandler::GenerateDartOutput(std::ostream& os) { cmCTestTestResult *result = &this->TestResults[cc]; std::string testPath = result->Path + "/" + result->Name; - os << "\t\t" << cmCTest::MakeXMLSafe( + os << "\t\t" << cmXMLSafe( this->CTest->GetShortPathToFile(testPath.c_str())) << "" << std::endl; } @@ -337,30 +332,8 @@ void cmCTestMemCheckHandler::GenerateDartOutput(std::ostream& os) } this->CleanTestOutput(memcheckstr, static_cast(this->CustomMaximumFailedTestOutputSize)); - os << "\tStatus == cmCTestMemCheckHandler::COMPLETED ) - { - os << "passed"; - } - else if ( result->Status == cmCTestMemCheckHandler::NOT_RUN ) - { - os << "notrun"; - } - else - { - os << "failed"; - } - std::string testPath = result->Path + "/" + result->Name; - os << "\">\n" - << "\t\t" << cmCTest::MakeXMLSafe(result->Name) << "\n" - << "\t\t" << cmCTest::MakeXMLSafe( - this->CTest->GetShortPathToFile(result->Path.c_str())) << "\n" - << "\t\t" << cmCTest::MakeXMLSafe( - this->CTest->GetShortPathToFile(testPath.c_str())) << "\n" - << "\t\t" - << cmCTest::MakeXMLSafe(result->FullCommandLine) - << "\n" - << "\t\t" << std::endl; + this->WriteTestResultHeader(os, result); + os << "\t\t" << std::endl; for ( kk = 0; cmCTestMemCheckResultLongStrings[kk]; kk ++ ) { if ( memcheckresults[kk] ) @@ -375,8 +348,8 @@ void cmCTestMemCheckHandler::GenerateDartOutput(std::ostream& os) os << "\t\t\n" << "\t\n" << memcheckstr << std::endl - << "\t\n" - << "\t" << std::endl; + << "\t\n"; + this->WriteTestResultFooter(os, result); if ( current < cc ) { cmCTestLog(this->CTest, HANDLER_OUTPUT, "#" << std::flush); @@ -515,6 +488,22 @@ bool cmCTestMemCheckHandler::InitializeMemoryChecking() cmSystemTools::EscapeSpaces(this->MemoryTesterOutputFile.c_str()); #ifdef _WIN32 + if( this->CTest->GetCTestConfiguration( + "MemoryCheckSuppressionFile").size() ) + { + if( !cmSystemTools::FileExists(this->CTest->GetCTestConfiguration( + "MemoryCheckSuppressionFile").c_str()) ) + { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "Cannot find memory checker suppression file: " + << this->CTest->GetCTestConfiguration( + "MemoryCheckSuppressionFile").c_str() << std::endl); + return false; + } + this->MemoryTesterOptions += " /FilterFiles=" + + cmSystemTools::EscapeSpaces(this->CTest->GetCTestConfiguration( + "MemoryCheckSuppressionFile").c_str()); + } this->MemoryTesterOptions += " /SAVETEXTDATA=" + outputFile; #else this->MemoryTesterOptions += " -log-file=" + outputFile; @@ -632,7 +621,7 @@ bool cmCTestMemCheckHandler::ProcessMemCheckPurifyOutput( results[failure] ++; defects ++; } - ostr << cmCTest::MakeXMLSafe(*i) << std::endl; + ostr << cmXMLSafe(*i) << std::endl; } log = ostr.str(); @@ -772,7 +761,7 @@ bool cmCTestMemCheckHandler::ProcessMemCheckValgrindOutput( defects ++; } totalOutputSize += lines[cc].size(); - ostr << cmCTest::MakeXMLSafe(lines[cc]) << std::endl; + ostr << cmXMLSafe(lines[cc]) << std::endl; } else { @@ -789,9 +778,9 @@ bool cmCTestMemCheckHandler::ProcessMemCheckValgrindOutput( cmCTestLog(this->CTest, DEBUG, "before xml safe " << lines[*i] << std::endl); cmCTestLog(this->CTest, DEBUG, "after xml safe " - << cmCTest::MakeXMLSafe(lines[*i]) << std::endl); + << cmXMLSafe(lines[*i]) << std::endl); - ostr << cmCTest::MakeXMLSafe(lines[*i]) << std::endl; + ostr << cmXMLSafe(lines[*i]) << std::endl; if(!unlimitedOutput && totalOutputSize > static_cast(this->CustomMaximumFailedTestOutputSize)) { @@ -873,27 +862,6 @@ bool cmCTestMemCheckHandler::ProcessMemCheckBoundsCheckerOutput( return true; } -void -cmCTestMemCheckHandler::ProcessOneTest(cmCTestTestProperties *props, - std::vector &passed, - std::vector &failed, - int count, int tmsize) -{ - // run parent test - cmCTestTestHandler::ProcessOneTest(props, passed, failed, count, tmsize); - cmCTestTestResult& res = this->TestResults[this->TestResults.size()-1]; - cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "process test output now: " - << props->Name.c_str() << " " << res.Name.c_str() << std::endl); - if( this->MemoryTesterStyle == cmCTestMemCheckHandler::BOUNDS_CHECKER) - { - this->PostProcessBoundsCheckerTest(res); - } - else if(this->MemoryTesterStyle == cmCTestMemCheckHandler::PURIFY ) - { - this->PostProcessPurifyTest(res); - } -} - // This method puts the bounds checker output file into the output // for the test void @@ -962,5 +930,6 @@ cmCTestMemCheckHandler::PostProcessPurifyTest(cmCTestTestResult& res) while ( cmSystemTools::GetLineFromStream(ifs, line) ) { res.Output += line; + res.Output += "\n"; } } diff --git a/Source/CTest/cmCTestMemCheckHandler.h b/Source/CTest/cmCTestMemCheckHandler.h index 9a739b814..db426f086 100644 --- a/Source/CTest/cmCTestMemCheckHandler.h +++ b/Source/CTest/cmCTestMemCheckHandler.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestMemCheckHandler.h,v $ - Language: C++ - Date: $Date: 2007-07-24 18:43:31 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestMemCheckHandler_h #define cmCTestMemCheckHandler_h @@ -30,6 +25,7 @@ class cmMakefile; */ class cmCTestMemCheckHandler : public cmCTestTestHandler { + friend class cmCTestRunTest; public: cmTypeMacro(cmCTestMemCheckHandler, cmCTestTestHandler); @@ -41,7 +37,7 @@ public: protected: virtual int PreProcessHandler(); virtual int PostProcessHandler(); - virtual void GenerateTestCommand(std::vector& args); + virtual void GenerateTestCommand(std::vector& args); private: @@ -121,13 +117,7 @@ private: std::string& log, int* results); bool ProcessMemCheckBoundsCheckerOutput(const std::string& str, std::string& log, int* results); - /** - * Run one test - */ - virtual void ProcessOneTest(cmCTestTestProperties *props, - std::vector &passed, - std::vector &failed, - int count, int tmsize); + void PostProcessPurifyTest(cmCTestTestResult& res); void PostProcessBoundsCheckerTest(cmCTestTestResult& res); }; diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx new file mode 100644 index 000000000..7ab9caca4 --- /dev/null +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -0,0 +1,424 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmCTestMultiProcessHandler.h" +#include "cmProcess.h" +#include "cmStandardIncludes.h" +#include "cmCTest.h" +#include "cmSystemTools.h" +#include + +cmCTestMultiProcessHandler::cmCTestMultiProcessHandler() +{ + this->ParallelLevel = 1; + this->Completed = 0; + this->RunningCount = 0; +} + +cmCTestMultiProcessHandler::~cmCTestMultiProcessHandler() +{ +} + + // Set the tests +void +cmCTestMultiProcessHandler::SetTests(TestMap& tests, + PropertiesMap& properties) +{ + this->Tests = tests; + this->Properties = properties; + this->Total = this->Tests.size(); + // set test run map to false for all + for(TestMap::iterator i = this->Tests.begin(); + i != this->Tests.end(); ++i) + { + this->TestRunningMap[i->first] = false; + this->TestFinishMap[i->first] = false; + } + this->ReadCostData(); + this->CreateTestCostList(); +} + + // Set the max number of tests that can be run at the same time. +void cmCTestMultiProcessHandler::SetParallelLevel(size_t level) +{ + this->ParallelLevel = level < 1 ? 1 : level; +} + +//--------------------------------------------------------- +void cmCTestMultiProcessHandler::RunTests() +{ + this->CheckResume(); + this->TestHandler->SetMaxIndex(this->FindMaxIndex()); + this->StartNextTests(); + while(this->Tests.size() != 0) + { + this->CheckOutput(); + this->StartNextTests(); + } + // let all running tests finish + while(this->CheckOutput()) + { + } + this->MarkFinished(); +} + +//--------------------------------------------------------- +void cmCTestMultiProcessHandler::StartTestProcess(int test) +{ + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "test " << test << "\n"); + this->TestRunningMap[test] = true; // mark the test as running + // now remove the test itself + this->EraseTest(test); + + cmCTestRunTest* testRun = new cmCTestRunTest(this->TestHandler); + testRun->SetIndex(test); + testRun->SetTestProperties(this->Properties[test]); + if(testRun->StartTest()) + { + this->RunningTests.insert(testRun); + } + else + { + this->Completed++; + this->RunningCount -= GetProcessorsUsed(test); + testRun->EndTest(this->Completed, this->Total, false); + this->Failed->push_back(this->Properties[test]->Name); + } +} + +//--------------------------------------------------------- +void cmCTestMultiProcessHandler::EraseTest(int test) +{ + this->Tests.erase(test); + for(TestCostMap::iterator i = this->TestCosts.begin(); + i != this->TestCosts.end(); ++i) + { + if(i->second.find(test) != i->second.end()) + { + i->second.erase(test); + return; + } + } +} + +//--------------------------------------------------------- +inline size_t cmCTestMultiProcessHandler::GetProcessorsUsed(int test) +{ + size_t processors = + static_cast(this->Properties[test]->Processors); + //If this is set to run serially, it must run alone. + //Also, if processors setting is set higher than the -j + //setting, we default to using all of the process slots. + if(this->Properties[test]->RunSerial + || processors > this->ParallelLevel) + { + processors = this->ParallelLevel; + } + return processors; +} + +//--------------------------------------------------------- +bool cmCTestMultiProcessHandler::StartTest(int test) +{ + // copy the depend tests locally because when + // a test is finished it will be removed from the depend list + // and we don't want to be iterating a list while removing from it + TestSet depends = this->Tests[test]; + size_t totalDepends = depends.size(); + if(totalDepends) + { + for(TestSet::const_iterator i = depends.begin(); + i != depends.end(); ++i) + { + // if the test is not already running then start it + if(!this->TestRunningMap[*i]) + { + // this test might be finished, but since + // this is a copy of the depend map we might + // still have it + if(!this->TestFinishMap[*i]) + { + // only start one test in this function + return this->StartTest(*i); + } + else + { + // the depend has been and finished + totalDepends--; + } + } + } + } + // if there are no depends left then run this test + if(totalDepends == 0) + { + this->StartTestProcess(test); + return true; + } + // This test was not able to start because it is waiting + // on depends to run + return false; +} + +//--------------------------------------------------------- +void cmCTestMultiProcessHandler::StartNextTests() +{ + size_t numToStart = this->ParallelLevel - this->RunningCount; + if(numToStart == 0) + { + return; + } + + for(TestCostMap::reverse_iterator i = this->TestCosts.rbegin(); + i != this->TestCosts.rend(); ++i) + { + TestSet tests = i->second; //copy the test set + for(TestSet::iterator test = tests.begin(); + test != tests.end(); ++test) + { + size_t processors = GetProcessorsUsed(*test); + if(processors > numToStart) + { + return; + } + if(this->StartTest(*test)) + { + numToStart -= processors; + this->RunningCount += processors; + } + else + { + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, std::endl + << "Test did not start waiting on depends to finish: " + << *test << "\n"); + } + if(numToStart == 0) + { + return; + } + } + } +} + +//--------------------------------------------------------- +bool cmCTestMultiProcessHandler::CheckOutput() +{ + // no more output we are done + if(this->RunningTests.size() == 0) + { + return false; + } + std::vector finished; + std::string out, err; + for(std::set::const_iterator i = this->RunningTests.begin(); + i != this->RunningTests.end(); ++i) + { + cmCTestRunTest* p = *i; + if(!p->CheckOutput()) + { + finished.push_back(p); + } + } + for( std::vector::iterator i = finished.begin(); + i != finished.end(); ++i) + { + this->Completed++; + cmCTestRunTest* p = *i; + int test = p->GetIndex(); + + if(p->EndTest(this->Completed, this->Total, true)) + { + this->Passed->push_back(p->GetTestProperties()->Name); + } + else + { + this->Failed->push_back(p->GetTestProperties()->Name); + } + for(TestMap::iterator j = this->Tests.begin(); + j != this->Tests.end(); ++j) + { + j->second.erase(test); + } + this->TestFinishMap[test] = true; + this->TestRunningMap[test] = false; + this->RunningTests.erase(p); + this->WriteCheckpoint(test); + this->WriteCostData(test, p->GetTestResults().ExecutionTime); + this->RunningCount -= GetProcessorsUsed(test); + delete p; + } + return true; +} + +//--------------------------------------------------------- +void cmCTestMultiProcessHandler::ReadCostData() +{ + std::string fname = this->CTest->GetBinaryDir() + + "/Testing/Temporary/CTestCostData.txt"; + + if(cmSystemTools::FileExists(fname.c_str(), true) + && this->ParallelLevel > 1) + { + std::ifstream fin; + fin.open(fname.c_str()); + std::string line; + while(std::getline(fin, line)) + { + std::vector parts = + cmSystemTools::SplitString(line.c_str(), ' '); + + int index = atoi(parts[0].c_str()); + float cost = atof(parts[1].c_str()); + if(this->Properties[index] && this->Properties[index]->Cost == 0) + { + this->Properties[index]->Cost = cost; + } + } + fin.close(); + } + cmSystemTools::RemoveFile(fname.c_str()); +} + +//--------------------------------------------------------- +void cmCTestMultiProcessHandler::CreateTestCostList() +{ + for(TestMap::iterator i = this->Tests.begin(); + i != this->Tests.end(); ++i) + { + this->TestCosts[this->Properties[i->first]->Cost].insert(i->first); + } +} + +//--------------------------------------------------------- +void cmCTestMultiProcessHandler::WriteCostData(int index, float cost) +{ + std::string fname = this->CTest->GetBinaryDir() + + "/Testing/Temporary/CTestCostData.txt"; + std::fstream fout; + fout.open(fname.c_str(), std::ios::app); + fout << index << " " << cost << "\n"; + fout.close(); +} + +//--------------------------------------------------------- +void cmCTestMultiProcessHandler::WriteCheckpoint(int index) +{ + std::string fname = this->CTest->GetBinaryDir() + + "/Testing/Temporary/CTestCheckpoint.txt"; + std::fstream fout; + fout.open(fname.c_str(), std::ios::app); + fout << index << "\n"; + fout.close(); +} + +//--------------------------------------------------------- +void cmCTestMultiProcessHandler::MarkFinished() +{ + std::string fname = this->CTest->GetBinaryDir() + + "/Testing/Temporary/CTestCheckpoint.txt"; + cmSystemTools::RemoveFile(fname.c_str()); +} + +//--------------------------------------------------------- +//For ShowOnly mode +void cmCTestMultiProcessHandler::PrintTestList() +{ + this->TestHandler->SetMaxIndex(this->FindMaxIndex()); + int count = 0; + for (PropertiesMap::iterator it = this->Properties.begin(); + it != this->Properties.end(); it ++ ) + { + count++; + cmCTestTestHandler::cmCTestTestProperties& p = *it->second; + + cmCTestRunTest testRun(this->TestHandler); + testRun.SetIndex(p.Index); + testRun.SetTestProperties(&p); + testRun.ComputeArguments(); //logs the command in verbose mode + + if (this->TestHandler->MemCheck) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, " Memory Check"); + } + else + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, " Test"); + } + cmOStringStream indexStr; + indexStr << " #" << p.Index << ":"; + cmCTestLog(this->CTest, HANDLER_OUTPUT, + std::setw(3 + getNumWidth(this->TestHandler->GetMaxIndex())) + << indexStr.str().c_str()); + cmCTestLog(this->CTest, HANDLER_OUTPUT, " "); + cmCTestLog(this->CTest, HANDLER_OUTPUT, p.Name.c_str() << std::endl); + } + cmCTestLog(this->CTest, HANDLER_OUTPUT, std::endl << "Total Tests: " + << this->Total << std::endl); +} + +//--------------------------------------------------------- +void cmCTestMultiProcessHandler::CheckResume() +{ + std::string fname = this->CTest->GetBinaryDir() + + "/Testing/Temporary/CTestCheckpoint.txt"; + if(this->CTest->GetFailover()) + { + if(cmSystemTools::FileExists(fname.c_str(), true)) + { + *this->TestHandler->LogFile << "Resuming previously interrupted test set" + << std::endl + << "----------------------------------------------------------" + << std::endl; + + std::ifstream fin; + fin.open(fname.c_str()); + std::string line; + while(std::getline(fin, line)) + { + int index = atoi(line.c_str()); + this->RemoveTest(index); + } + fin.close(); + } + } + else + { + if(cmSystemTools::FileExists(fname.c_str(), true)) + { + cmSystemTools::RemoveFile(fname.c_str()); + } + } +} + +//--------------------------------------------------------- +void cmCTestMultiProcessHandler::RemoveTest(int index) +{ + this->EraseTest(index); + this->Properties.erase(index); + this->TestRunningMap[index] = false; + this->TestFinishMap[index] = true; + this->Completed++; +} + +//--------------------------------------------------------- +int cmCTestMultiProcessHandler::FindMaxIndex() +{ + int max = 0; + cmCTestMultiProcessHandler::TestMap::iterator i = this->Tests.begin(); + for(; i != this->Tests.end(); ++i) + { + if(i->first > max) + { + max = i->first; + } + } + return max; +} diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h new file mode 100644 index 000000000..c99eb3dac --- /dev/null +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -0,0 +1,102 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmCTestMultiProcessHandler_h +#define cmCTestMultiProcessHandler_h + +#include +#include +#include + +/** \class cmCTestMultiProcessHandler + * \brief run parallel ctest + * + * cmCTestMultiProcessHandler + */ +class cmCTestMultiProcessHandler +{ +public: + struct TestSet : public std::set {}; + struct TestMap : public std::map {}; + struct TestCostMap : public std::map {}; + struct PropertiesMap : public + std::map {}; + + cmCTestMultiProcessHandler(); + virtual ~cmCTestMultiProcessHandler(); + // Set the tests + void SetTests(TestMap& tests, PropertiesMap& properties); + // Set the max number of tests that can be run at the same time. + void SetParallelLevel(size_t); + virtual void RunTests(); + void PrintTestList(); + + void SetPassFailVectors(std::vector* passed, + std::vector* failed) + { + this->Passed = passed; + this->Failed = failed; + } + void SetTestResults(std::vector* r) + { this->TestResults = r; } + + void SetCTest(cmCTest* ctest) { this->CTest = ctest;} + + void SetTestHandler(cmCTestTestHandler * handler) + { this->TestHandler = handler; } + + cmCTestTestHandler * GetTestHandler() + { return this->TestHandler; } +protected: + cmCTest* CTest; + // Start the next test or tests as many as are allowed by + // ParallelLevel + void StartNextTests(); + void StartTestProcess(int test); + bool StartTest(int test); + // Mark the checkpoint for the given test + void WriteCheckpoint(int index); + void WriteCostData(int index, float cost); + void ReadCostData(); + void CreateTestCostList(); + // Removes the checkpoint file + void MarkFinished(); + void EraseTest(int index); + // Return true if there are still tests running + // check all running processes for output and exit case + bool CheckOutput(); + void RemoveTest(int index); + //Check if we need to resume an interrupted test set + void CheckResume(); + int FindMaxIndex(); + inline size_t GetProcessorsUsed(int index); + // map from test number to set of depend tests + TestMap Tests; + TestCostMap TestCosts; + //Total number of tests we'll be running + size_t Total; + //Number of tests that are complete + size_t Completed; + size_t RunningCount; + //list of test properties (indices concurrent to the test map) + PropertiesMap Properties; + std::map TestRunningMap; + std::map TestFinishMap; + std::map TestOutput; + std::vector* Passed; + std::vector* Failed; + std::vector* TestResults; + size_t ParallelLevel; // max number of process that can be run at once + std::set RunningTests; // current running tests + cmCTestTestHandler * TestHandler; +}; + +#endif diff --git a/Source/CTest/cmCTestReadCustomFilesCommand.cxx b/Source/CTest/cmCTestReadCustomFilesCommand.cxx old mode 100755 new mode 100644 index 65e9b7578..5db01f98d --- a/Source/CTest/cmCTestReadCustomFilesCommand.cxx +++ b/Source/CTest/cmCTestReadCustomFilesCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestReadCustomFilesCommand.cxx,v $ - Language: C++ - Date: $Date: 2006/03/10 20:03:09 $ - Version: $Revision: 1.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestReadCustomFilesCommand.h" #include "cmCTest.h" diff --git a/Source/CTest/cmCTestReadCustomFilesCommand.h b/Source/CTest/cmCTestReadCustomFilesCommand.h old mode 100755 new mode 100644 index 81dc5f10f..2213c8fc6 --- a/Source/CTest/cmCTestReadCustomFilesCommand.h +++ b/Source/CTest/cmCTestReadCustomFilesCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestReadCustomFilesCommand.h,v $ - Language: C++ - Date: $Date: 2006/03/10 20:03:09 $ - Version: $Revision: 1.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestReadCustomFilesCommand_h #define cmCTestReadCustomFilesCommand_h diff --git a/Source/CTest/cmCTestRunScriptCommand.cxx b/Source/CTest/cmCTestRunScriptCommand.cxx old mode 100755 new mode 100644 index 925627fb6..fe429bd9d --- a/Source/CTest/cmCTestRunScriptCommand.cxx +++ b/Source/CTest/cmCTestRunScriptCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestRunScriptCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-01-23 15:28:01 $ - Version: $Revision: 1.7 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestRunScriptCommand.h" #include "cmCTestScriptHandler.h" @@ -34,10 +29,35 @@ bool cmCTestRunScriptCommand np = true; i++; } + int start = i; // run each script - for (; i < args.size(); ++i) + std::string returnVariable; + for (i = start; i < args.size(); ++i) + { + if(args[i] == "RETURN_VALUE") + { + ++i; + if(i < args.size()) + { + returnVariable = args[i]; + } + } + } + for (i = start; i < args.size(); ++i) { - cmCTestScriptHandler::RunScript(this->CTest, args[i].c_str(), !np); + if(args[i] == "RETURN_VALUE") + { + ++i; + } + else + { + int ret; + cmCTestScriptHandler::RunScript(this->CTest, args[i].c_str(), !np, + &ret); + cmOStringStream str; + str << ret; + this->Makefile->AddDefinition(returnVariable.c_str(), str.str().c_str()); + } } return true; } diff --git a/Source/CTest/cmCTestRunScriptCommand.h b/Source/CTest/cmCTestRunScriptCommand.h old mode 100755 new mode 100644 index fcdbff8dd..c2cda667a --- a/Source/CTest/cmCTestRunScriptCommand.h +++ b/Source/CTest/cmCTestRunScriptCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestRunScriptCommand.h,v $ - Language: C++ - Date: $Date: 2008-05-15 19:39:59 $ - Version: $Revision: 1.4.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestRunScriptCommand_h #define cmCTestRunScriptCommand_h @@ -69,15 +64,16 @@ public: { return " ctest_run_script([NEW_PROCESS] script_file_name script_file_name1 \n" - " script_file_name2 ...)\n" + " script_file_name2 ... [RETURN_VALUE var])\n" "Runs a script or scripts much like if it was run from ctest -S. " "If no argument is provided then the current script is run using " "the current settings of the variables. If NEW_PROCESS is specified " - "then each script will be run in a seperate process."; + "then each script will be run in a seperate process." + "If RETURN_VALUE is specified the return value of the last script " + "run will be put into var."; } cmTypeMacro(cmCTestRunScriptCommand, cmCTestCommand); - }; diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx new file mode 100644 index 000000000..ffc257a7f --- /dev/null +++ b/Source/CTest/cmCTestRunTest.cxx @@ -0,0 +1,503 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ + +#include "cmCTestRunTest.h" +#include "cmCTestMemCheckHandler.h" +#include "cmCTest.h" +#include "cmSystemTools.h" + +cmCTestRunTest::cmCTestRunTest(cmCTestTestHandler* handler) +{ + this->CTest = handler->CTest; + this->TestHandler = handler; + this->ModifyEnv = false; + this->TestProcess = 0; + this->TestResult.ExecutionTime =0; + this->TestResult.ReturnValue = 0; + this->TestResult.Status = 0; + this->TestResult.TestCount = 0; + this->TestResult.Properties = 0; +} + +cmCTestRunTest::~cmCTestRunTest() +{ +} + +//---------------------------------------------------------------------------- +bool cmCTestRunTest::CheckOutput() +{ + // Read lines for up to 0.1 seconds of total time. + double timeout = 0.1; + double timeEnd = cmSystemTools::GetTime() + timeout; + std::string line; + while((timeout = timeEnd - cmSystemTools::GetTime(), timeout > 0)) + { + int p = this->TestProcess->GetNextOutputLine(line, timeout); + if(p == cmsysProcess_Pipe_None) + { + // Process has terminated and all output read. + return false; + } + else if(p == cmsysProcess_Pipe_STDOUT || + p == cmsysProcess_Pipe_STDERR) + { + // Store this line of output. + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, + this->GetIndex() << ": " << line << std::endl); + this->ProcessOutput += line; + this->ProcessOutput += "\n"; + } + else // if(p == cmsysProcess_Pipe_Timeout) + { + break; + } + } + return true; +} + +//--------------------------------------------------------- +bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started) +{ + //restore the old environment + if (this->ModifyEnv) + { + cmSystemTools::RestoreEnv(this->OrigEnv); + } + this->WriteLogOutputTop(completed, total); + std::string reason; + bool passed = true; + int res = started ? this->TestProcess->GetProcessStatus() + : cmsysProcess_State_Error; + int retVal = this->TestProcess->GetExitValue(); + std::vector >::iterator passIt; + bool forceFail = false; + bool outputTestErrorsToConsole = false; + if ( this->TestProperties->RequiredRegularExpressions.size() > 0 ) + { + bool found = false; + for ( passIt = this->TestProperties->RequiredRegularExpressions.begin(); + passIt != this->TestProperties->RequiredRegularExpressions.end(); + ++ passIt ) + { + if ( passIt->first.find(this->ProcessOutput.c_str()) ) + { + found = true; + reason = "Required regular expression found."; + } + } + if ( !found ) + { + reason = "Required regular expression not found."; + forceFail = true; + } + reason += "Regex=["; + for ( passIt = this->TestProperties->RequiredRegularExpressions.begin(); + passIt != this->TestProperties->RequiredRegularExpressions.end(); + ++ passIt ) + { + reason += passIt->second; + reason += "\n"; + } + reason += "]"; + } + if ( this->TestProperties->ErrorRegularExpressions.size() > 0 ) + { + for ( passIt = this->TestProperties->ErrorRegularExpressions.begin(); + passIt != this->TestProperties->ErrorRegularExpressions.end(); + ++ passIt ) + { + if ( passIt->first.find(this->ProcessOutput.c_str()) ) + { + reason = "Error regular expression found in output."; + reason += " Regex=["; + reason += passIt->second; + reason += "]"; + forceFail = true; + } + } + } + if (res == cmsysProcess_State_Exited) + { + bool success = + !forceFail && (retVal == 0 || + this->TestProperties->RequiredRegularExpressions.size()); + if((success && !this->TestProperties->WillFail) + || (!success && this->TestProperties->WillFail)) + { + this->TestResult.Status = cmCTestTestHandler::COMPLETED; + cmCTestLog(this->CTest, HANDLER_OUTPUT, " Passed " ); + } + else + { + this->TestResult.Status = cmCTestTestHandler::FAILED; + cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Failed " << reason ); + outputTestErrorsToConsole = this->CTest->OutputTestOutputOnTestFailure; + } + } + else if ( res == cmsysProcess_State_Expired ) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Timeout"); + this->TestResult.Status = cmCTestTestHandler::TIMEOUT; + outputTestErrorsToConsole = this->CTest->OutputTestOutputOnTestFailure; + } + else if ( res == cmsysProcess_State_Exception ) + { + outputTestErrorsToConsole = this->CTest->OutputTestOutputOnTestFailure; + cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Exception: "); + switch ( retVal ) + { + case cmsysProcess_Exception_Fault: + cmCTestLog(this->CTest, HANDLER_OUTPUT, "SegFault"); + this->TestResult.Status = cmCTestTestHandler::SEGFAULT; + break; + case cmsysProcess_Exception_Illegal: + cmCTestLog(this->CTest, HANDLER_OUTPUT, "Illegal"); + this->TestResult.Status = cmCTestTestHandler::ILLEGAL; + break; + case cmsysProcess_Exception_Interrupt: + cmCTestLog(this->CTest, HANDLER_OUTPUT, "Interrupt"); + this->TestResult.Status = cmCTestTestHandler::INTERRUPT; + break; + case cmsysProcess_Exception_Numerical: + cmCTestLog(this->CTest, HANDLER_OUTPUT, "Numerical"); + this->TestResult.Status = cmCTestTestHandler::NUMERICAL; + break; + default: + cmCTestLog(this->CTest, HANDLER_OUTPUT, "Other"); + this->TestResult.Status = cmCTestTestHandler::OTHER_FAULT; + } + } + else // if ( res == cmsysProcess_State_Error ) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Bad command " << res ); + this->TestResult.Status = cmCTestTestHandler::BAD_COMMAND; + } + + passed = this->TestResult.Status == cmCTestTestHandler::COMPLETED; + char buf[1024]; + sprintf(buf, "%6.2f sec", this->TestProcess->GetTotalTime()); + cmCTestLog(this->CTest, HANDLER_OUTPUT, buf << "\n" ); + + if ( outputTestErrorsToConsole ) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, this->ProcessOutput << std::endl ); + } + + if ( this->TestHandler->LogFile ) + { + *this->TestHandler->LogFile << "Test time = " << buf << std::endl; + } + this->DartProcessing(); + // if this is doing MemCheck then all the output needs to be put into + // Output since that is what is parsed by cmCTestMemCheckHandler + if(!this->TestHandler->MemCheck && started) + { + if (this->TestResult.Status == cmCTestTestHandler::COMPLETED) + { + this->TestHandler->CleanTestOutput(this->ProcessOutput, + static_cast + (this->TestHandler->CustomMaximumPassedTestOutputSize)); + } + else + { + this->TestHandler->CleanTestOutput(this->ProcessOutput, + static_cast + (this->TestHandler->CustomMaximumFailedTestOutputSize)); + } + } + this->TestResult.Reason = reason; + if (this->TestHandler->LogFile) + { + bool pass = true; + const char* reasonType = "Test Pass Reason"; + if(this->TestResult.Status != cmCTestTestHandler::COMPLETED && + this->TestResult.Status != cmCTestTestHandler::NOT_RUN) + { + reasonType = "Test Fail Reason"; + pass = false; + } + double ttime = this->TestProcess->GetTotalTime(); + int hours = static_cast(ttime / (60 * 60)); + int minutes = static_cast(ttime / 60) % 60; + int seconds = static_cast(ttime) % 60; + char buffer[100]; + sprintf(buffer, "%02d:%02d:%02d", hours, minutes, seconds); + *this->TestHandler->LogFile + << "----------------------------------------------------------" + << std::endl; + if(this->TestResult.Reason.size()) + { + *this->TestHandler->LogFile << reasonType << ":\n" + << this->TestResult.Reason << "\n"; + } + else + { + if(pass) + { + *this->TestHandler->LogFile << "Test Passed.\n"; + } + else + { + *this->TestHandler->LogFile << "Test Failed.\n"; + } + } + *this->TestHandler->LogFile << "\"" << this->TestProperties->Name.c_str() + << "\" end time: " << this->CTest->CurrentTime() << std::endl + << "\"" << this->TestProperties->Name.c_str() << "\" time elapsed: " + << buffer << std::endl + << "----------------------------------------------------------" + << std::endl << std::endl; + } + if(started) + { + this->TestResult.Output = this->ProcessOutput; + this->TestResult.ReturnValue = this->TestProcess->GetExitValue(); + this->TestResult.CompletionStatus = "Completed"; + this->TestResult.ExecutionTime = this->TestProcess->GetTotalTime(); + this->TestHandler->TestResults.push_back(this->TestResult); + + this->MemCheckPostProcess(); + } + delete this->TestProcess; + return passed; +} + +//-------------------------------------------------------------- +void cmCTestRunTest::MemCheckPostProcess() +{ + if(!this->TestHandler->MemCheck) + { + return; + } + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, this->Index + << ": process test output now: " + << this->TestProperties->Name.c_str() << " " + << this->TestResult.Name.c_str() << std::endl); + cmCTestMemCheckHandler * handler = static_cast + (this->TestHandler); + if(handler->MemoryTesterStyle == cmCTestMemCheckHandler::BOUNDS_CHECKER) + { + handler->PostProcessBoundsCheckerTest(this->TestResult); + } + else if(handler->MemoryTesterStyle == cmCTestMemCheckHandler::PURIFY) + { + handler->PostProcessPurifyTest(this->TestResult); + } +} + +//---------------------------------------------------------------------- +// Starts the execution of a test. Returns once it has started +bool cmCTestRunTest::StartTest() +{ + cmCTestLog(this->CTest, HANDLER_OUTPUT, " Start " + << this->TestProperties->Index << ": " + << this->TestProperties->Name << std::endl); + this->ComputeArguments(); + std::vector& args = this->TestProperties->Args; + this->TestResult.Properties = this->TestProperties; + this->TestResult.ExecutionTime = 0; + this->TestResult.ReturnValue = -1; + this->TestResult.CompletionStatus = "Not Run"; + this->TestResult.Status = cmCTestTestHandler::NOT_RUN; + this->TestResult.TestCount = this->TestProperties->Index; + this->TestResult.Name = this->TestProperties->Name; + this->TestResult.Path = this->TestProperties->Directory.c_str(); + + // log and return if we did not find the executable + if (this->ActualCommand == "") + { + this->TestProcess = new cmProcess; + *this->TestHandler->LogFile << "Unable to find executable: " + << args[1].c_str() << std::endl; + cmCTestLog(this->CTest, ERROR_MESSAGE, "Unable to find executable: " + << args[1].c_str() << std::endl); + this->TestResult.Output = "Unable to find executable: " + args[1]; + this->TestResult.FullCommandLine = ""; + this->TestHandler->TestResults.push_back(this->TestResult); + return false; + } + this->StartTime = this->CTest->CurrentTime(); + + return this->CreateProcess(this->TestProperties->Timeout, + &this->TestProperties->Environment); +} + +void cmCTestRunTest::ComputeArguments() +{ + std::vector::const_iterator j = + this->TestProperties->Args.begin(); + ++j; // skip test name + + // find the test executable + if(this->TestHandler->MemCheck) + { + cmCTestMemCheckHandler * handler = static_cast + (this->TestHandler); + this->ActualCommand = handler->MemoryTester.c_str(); + } + else + { + this->ActualCommand = + this->TestHandler->FindTheExecutable( + this->TestProperties->Args[1].c_str()); + ++j; //skip the executable (it will be actualCommand) + } + this->TestCommand + = cmSystemTools::ConvertToOutputPath(this->ActualCommand.c_str()); + + //Prepends memcheck args to our command string + this->TestHandler->GenerateTestCommand(this->Arguments); + for(std::vector::iterator i = this->Arguments.begin(); + i != this->Arguments.end(); ++i) + { + this->TestCommand += " "; + this->TestCommand += cmSystemTools::EscapeSpaces(j->c_str()); + } + + for(;j != this->TestProperties->Args.end(); ++j) + { + this->TestCommand += " "; + this->TestCommand += cmSystemTools::EscapeSpaces(j->c_str()); + this->Arguments.push_back(*j); + } + this->TestResult.FullCommandLine = this->TestCommand; + + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, std::endl + << this->Index << ": " + << (this->TestHandler->MemCheck?"MemCheck":"Test") + << " command: " << this->TestCommand + << std::endl); +} + +//---------------------------------------------------------------------- +void cmCTestRunTest::DartProcessing() +{ + if (!this->ProcessOutput.empty() && + this->ProcessOutput.find("ProcessOutput.npos) + { + if (this->TestHandler->DartStuff.find(this->ProcessOutput.c_str())) + { + std::string dartString = this->TestHandler->DartStuff.match(1); + // keep searching and replacing until none are left + while (this->TestHandler->DartStuff1.find(this->ProcessOutput.c_str())) + { + // replace the exact match for the string + cmSystemTools::ReplaceString(this->ProcessOutput, + this->TestHandler->DartStuff1.match(1).c_str(), ""); + } + this->TestResult.RegressionImages + = this->TestHandler->GenerateRegressionImages(dartString); + } + } +} + +//---------------------------------------------------------------------- +bool cmCTestRunTest::CreateProcess(double testTimeOut, + std::vector* environment) +{ + this->TestProcess = new cmProcess; + this->TestProcess->SetId(this->Index); + this->TestProcess->SetWorkingDirectory( + this->TestProperties->Directory.c_str()); + this->TestProcess->SetCommand(this->ActualCommand.c_str()); + this->TestProcess->SetCommandArguments(this->Arguments); + + std::vector origEnv; + this->ModifyEnv = (environment && environment->size()>0); + + // determine how much time we have + double timeout = this->CTest->GetRemainingTimeAllowed() - 120; + if (this->CTest->GetTimeOut() && this->CTest->GetTimeOut() < timeout) + { + timeout = this->CTest->GetTimeOut(); + } + if (testTimeOut + && testTimeOut < this->CTest->GetRemainingTimeAllowed()) + { + timeout = testTimeOut; + } + + // always have at least 1 second if we got to here + if (timeout <= 0) + { + timeout = 1; + } + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, this->Index << ": " + << "Test timeout computed to be: " << timeout << "\n"); + + this->TestProcess->SetTimeout(timeout); + + if (this->ModifyEnv) + { + this->OrigEnv = cmSystemTools::AppendEnv(environment); + } + + return this->TestProcess->StartProcess(); +} + +void cmCTestRunTest::WriteLogOutputTop(size_t completed, size_t total) +{ + cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(getNumWidth(total)) + << completed << "/"); + cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(getNumWidth(total)) + << total << " "); + + if ( this->TestHandler->MemCheck ) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, "MemCheck"); + } + else + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, "Test"); + } + + cmOStringStream indexStr; + indexStr << " #" << this->Index << ":"; + cmCTestLog(this->CTest, HANDLER_OUTPUT, + std::setw(3 + getNumWidth(this->TestHandler->GetMaxIndex())) + << indexStr.str().c_str()); + cmCTestLog(this->CTest, HANDLER_OUTPUT, " "); + const int maxTestNameWidth = this->CTest->GetMaxTestNameWidth(); + std::string outname = this->TestProperties->Name + " "; + outname.resize(maxTestNameWidth + 4, '.'); + + *this->TestHandler->LogFile << this->TestProperties->Index << "/" + << this->TestHandler->TotalNumberOfTests << " Testing: " + << this->TestProperties->Name << std::endl; + *this->TestHandler->LogFile << this->TestProperties->Index << "/" + << this->TestHandler->TotalNumberOfTests + << " Test: " << this->TestProperties->Name.c_str() << std::endl; + *this->TestHandler->LogFile << "Command: \"" << this->ActualCommand << "\""; + + for (std::vector::iterator i = this->Arguments.begin(); + i != this->Arguments.end(); ++i) + { + *this->TestHandler->LogFile + << " \"" << i->c_str() << "\""; + } + *this->TestHandler->LogFile << std::endl + << "Directory: " << this->TestProperties->Directory << std::endl + << "\"" << this->TestProperties->Name.c_str() << "\" start time: " + << this->StartTime << std::endl; + + *this->TestHandler->LogFile + << "Output:" << std::endl + << "----------------------------------------------------------" + << std::endl; + *this->TestHandler->LogFile + << this->ProcessOutput.c_str() << "" << std::endl; + + cmCTestLog(this->CTest, HANDLER_OUTPUT, outname.c_str()); + cmCTestLog(this->CTest, DEBUG, "Testing " + << this->TestProperties->Name.c_str() << " ... "); +} diff --git a/Source/CTest/cmCTestRunTest.h b/Source/CTest/cmCTestRunTest.h new file mode 100644 index 000000000..aeffbb802 --- /dev/null +++ b/Source/CTest/cmCTestRunTest.h @@ -0,0 +1,100 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmCTestRunTest_h +#define cmCTestRunTest_h + +#include +#include +#include + +/** \class cmRunTest + * \brief represents a single test to be run + * + * cmRunTest contains the information related to running a single test + */ +class cmCTestRunTest +{ +public: + cmCTestRunTest(cmCTestTestHandler* handler); + ~cmCTestRunTest(); + + void SetTestProperties(cmCTestTestHandler::cmCTestTestProperties * prop) + { this->TestProperties = prop; } + + cmCTestTestHandler::cmCTestTestProperties * GetTestProperties() + { return this->TestProperties; } + + void SetIndex(int i) { this->Index = i; } + + int GetIndex() { return this->Index; } + + std::string GetProcessOutput() { return this->ProcessOutput; } + + cmCTestTestHandler::cmCTestTestResult GetTestResults() + { return this->TestResult; } + + // Read and store output. Returns true if it must be called again. + bool CheckOutput(); + + //launch the test process, return whether it started correctly + bool StartTest(); + //capture and report the test results + bool EndTest(size_t completed, size_t total, bool started); + //Called by ctest -N to log the command string + void ComputeArguments(); +private: + void DartProcessing(); + bool CreateProcess(double testTimeOut, + std::vector* environment); + void WriteLogOutputTop(size_t completed, size_t total); + //Run post processing of the process output for MemCheck + void MemCheckPostProcess(); + + cmCTestTestHandler::cmCTestTestProperties * TestProperties; + //Pointer back to the "parent"; the handler that invoked this test run + cmCTestTestHandler * TestHandler; + cmCTest * CTest; + cmProcess * TestProcess; + //If the executable to run is ctest, don't create a new process; + //just instantiate a new cmTest. (Can be disabled for a single test + //if this option is set to false.) + //bool OptimizeForCTest; + + //flag for whether the env was modified for this run + bool ModifyEnv; + //stores the original environment if we are modifying it + std::vector OrigEnv; + std::string ProcessOutput; + //The test results + cmCTestTestHandler::cmCTestTestResult TestResult; + int Index; + std::string StartTime; + std::string TestCommand; + std::string ActualCommand; + std::vector Arguments; +}; + +inline int getNumWidth(size_t n) +{ + int numWidth = 1; + if(n >= 10) + { + numWidth = 2; + } + if(n >= 100) + { + numWidth = 3; + } + return numWidth; +} +#endif + diff --git a/Source/CTest/cmCTestSVN.cxx b/Source/CTest/cmCTestSVN.cxx new file mode 100644 index 000000000..82e5845f9 --- /dev/null +++ b/Source/CTest/cmCTestSVN.cxx @@ -0,0 +1,442 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmCTestSVN.h" + +#include "cmCTest.h" +#include "cmSystemTools.h" +#include "cmXMLParser.h" +#include "cmXMLSafe.h" + +#include + +//---------------------------------------------------------------------------- +cmCTestSVN::cmCTestSVN(cmCTest* ct, std::ostream& log): + cmCTestGlobalVC(ct, log) +{ + this->PriorRev = this->Unknown; +} + +//---------------------------------------------------------------------------- +cmCTestSVN::~cmCTestSVN() +{ +} + +//---------------------------------------------------------------------------- +void cmCTestSVN::CleanupImpl() +{ + const char* svn = this->CommandLineTool.c_str(); + const char* svn_cleanup[] = {svn, "cleanup", 0}; + OutputLogger out(this->Log, "cleanup-out> "); + OutputLogger err(this->Log, "cleanup-err> "); + this->RunChild(svn_cleanup, &out, &err); +} + +//---------------------------------------------------------------------------- +class cmCTestSVN::InfoParser: public cmCTestVC::LineParser +{ +public: + InfoParser(cmCTestSVN* svn, const char* prefix, std::string& rev): + SVN(svn), Rev(rev) + { + this->SetLog(&svn->Log, prefix); + this->RegexRev.compile("^Revision: ([0-9]+)"); + this->RegexURL.compile("^URL: +([^ ]+) *$"); + this->RegexRoot.compile("^Repository Root: +([^ ]+) *$"); + } +private: + cmCTestSVN* SVN; + std::string& Rev; + cmsys::RegularExpression RegexRev; + cmsys::RegularExpression RegexURL; + cmsys::RegularExpression RegexRoot; + virtual bool ProcessLine() + { + if(this->RegexRev.find(this->Line)) + { + this->Rev = this->RegexRev.match(1); + } + else if(this->RegexURL.find(this->Line)) + { + this->SVN->URL = this->RegexURL.match(1); + } + else if(this->RegexRoot.find(this->Line)) + { + this->SVN->Root = this->RegexRoot.match(1); + } + return true; + } +}; + +//---------------------------------------------------------------------------- +static bool cmCTestSVNPathStarts(std::string const& p1, std::string const& p2) +{ + // Does path p1 start with path p2? + if(p1.size() == p2.size()) + { + return p1 == p2; + } + else if(p1.size() > p2.size() && p1[p2.size()] == '/') + { + return strncmp(p1.c_str(), p2.c_str(), p2.size()) == 0; + } + else + { + return false; + } +} + +//---------------------------------------------------------------------------- +std::string cmCTestSVN::LoadInfo() +{ + // Run "svn info" to get the repository info from the work tree. + const char* svn = this->CommandLineTool.c_str(); + const char* svn_info[] = {svn, "info", 0}; + std::string rev; + InfoParser out(this, "info-out> ", rev); + OutputLogger err(this->Log, "info-err> "); + this->RunChild(svn_info, &out, &err); + return rev; +} + +//---------------------------------------------------------------------------- +void cmCTestSVN::NoteOldRevision() +{ + this->OldRevision = this->LoadInfo(); + this->Log << "Revision before update: " << this->OldRevision << "\n"; + cmCTestLog(this->CTest, HANDLER_OUTPUT, " Old revision of repository is: " + << this->OldRevision << "\n"); + this->PriorRev.Rev = this->OldRevision; +} + +//---------------------------------------------------------------------------- +void cmCTestSVN::NoteNewRevision() +{ + this->NewRevision = this->LoadInfo(); + this->Log << "Revision after update: " << this->NewRevision << "\n"; + cmCTestLog(this->CTest, HANDLER_OUTPUT, " New revision of repository is: " + << this->NewRevision << "\n"); + + // this->Root = ""; // uncomment to test GuessBase + this->Log << "URL = " << this->URL << "\n"; + this->Log << "Root = " << this->Root << "\n"; + + // Compute the base path the working tree has checked out under + // the repository root. + if(!this->Root.empty() && cmCTestSVNPathStarts(this->URL, this->Root)) + { + this->Base = cmCTest::DecodeURL(this->URL.substr(this->Root.size())); + this->Base += "/"; + } + this->Log << "Base = " << this->Base << "\n"; +} + +//---------------------------------------------------------------------------- +void cmCTestSVN::GuessBase(std::vector const& changes) +{ + // Subversion did not give us a good repository root so we need to + // guess the base path from the URL and the paths in a revision with + // changes under it. + + // Consider each possible URL suffix from longest to shortest. + for(std::string::size_type slash = this->URL.find('/'); + this->Base.empty() && slash != std::string::npos; + slash = this->URL.find('/', slash+1)) + { + // If the URL suffix is a prefix of at least one path then it is the base. + std::string base = cmCTest::DecodeURL(this->URL.substr(slash)); + for(std::vector::const_iterator ci = changes.begin(); + this->Base.empty() && ci != changes.end(); ++ci) + { + if(cmCTestSVNPathStarts(ci->Path, base)) + { + this->Base = base; + } + } + } + + // We always append a slash so that we know paths beginning in the + // base lie under its path. If no base was found then the working + // tree must be a checkout of the entire repo and this will match + // the leading slash in all paths. + this->Base += "/"; + + this->Log << "Guessed Base = " << this->Base << "\n"; +} + +//---------------------------------------------------------------------------- +const char* cmCTestSVN::LocalPath(std::string const& path) +{ + if(path.size() > this->Base.size() && + strncmp(path.c_str(), this->Base.c_str(), this->Base.size()) == 0) + { + // This path lies under the base, so return a relative path. + return path.c_str() + this->Base.size(); + } + else + { + // This path does not lie under the base, so ignore it. + return 0; + } +} + +//---------------------------------------------------------------------------- +class cmCTestSVN::UpdateParser: public cmCTestVC::LineParser +{ +public: + UpdateParser(cmCTestSVN* svn, const char* prefix): SVN(svn) + { + this->SetLog(&svn->Log, prefix); + this->RegexUpdate.compile("^([ADUCGE ])([ADUCGE ])[B ] +(.+)$"); + } +private: + cmCTestSVN* SVN; + cmsys::RegularExpression RegexUpdate; + + bool ProcessLine() + { + if(this->RegexUpdate.find(this->Line)) + { + this->DoPath(this->RegexUpdate.match(1)[0], + this->RegexUpdate.match(2)[0], + this->RegexUpdate.match(3)); + } + return true; + } + + void DoPath(char path_status, char prop_status, std::string const& path) + { + char status = (path_status != ' ')? path_status : prop_status; + std::string dir = cmSystemTools::GetFilenamePath(path); + std::string name = cmSystemTools::GetFilenameName(path); + // See "svn help update". + switch(status) + { + case 'G': + this->SVN->Dirs[dir][name].Status = PathModified; + break; + case 'C': + this->SVN->Dirs[dir][name].Status = PathConflicting; + break; + case 'A': case 'D': case 'U': + this->SVN->Dirs[dir][name].Status = PathUpdated; + break; + case 'E': // TODO? + case '?': case ' ': default: + break; + } + } +}; + +//---------------------------------------------------------------------------- +bool cmCTestSVN::UpdateImpl() +{ + // Get user-specified update options. + std::string opts = this->CTest->GetCTestConfiguration("UpdateOptions"); + if(opts.empty()) + { + opts = this->CTest->GetCTestConfiguration("SVNUpdateOptions"); + } + std::vector args = cmSystemTools::ParseArguments(opts.c_str()); + + // Specify the start time for nightly testing. + if(this->CTest->GetTestModel() == cmCTest::NIGHTLY) + { + args.push_back("-r{" + this->GetNightlyTime() + " +0000}"); + } + + std::vector svn_update; + svn_update.push_back(this->CommandLineTool.c_str()); + svn_update.push_back("update"); + svn_update.push_back("--non-interactive"); + for(std::vector::const_iterator ai = args.begin(); + ai != args.end(); ++ai) + { + svn_update.push_back(ai->c_str()); + } + svn_update.push_back(0); + + UpdateParser out(this, "up-out> "); + OutputLogger err(this->Log, "up-err> "); + return this->RunUpdateCommand(&svn_update[0], &out, &err); +} + +//---------------------------------------------------------------------------- +class cmCTestSVN::LogParser: public cmCTestVC::OutputLogger, + private cmXMLParser +{ +public: + LogParser(cmCTestSVN* svn, const char* prefix): + OutputLogger(svn->Log, prefix), SVN(svn) { this->InitializeParser(); } + ~LogParser() { this->CleanupParser(); } +private: + cmCTestSVN* SVN; + + typedef cmCTestSVN::Revision Revision; + typedef cmCTestSVN::Change Change; + Revision Rev; + std::vector Changes; + Change CurChange; + std::vector CData; + + virtual bool ProcessChunk(const char* data, int length) + { + this->OutputLogger::ProcessChunk(data, length); + this->ParseChunk(data, length); + return true; + } + + virtual void StartElement(const char* name, const char** atts) + { + this->CData.clear(); + if(strcmp(name, "logentry") == 0) + { + this->Rev = Revision(); + if(const char* rev = this->FindAttribute(atts, "revision")) + { + this->Rev.Rev = rev; + } + this->Changes.clear(); + } + else if(strcmp(name, "path") == 0) + { + this->CurChange = Change(); + if(const char* action = this->FindAttribute(atts, "action")) + { + this->CurChange.Action = action[0]; + } + } + } + + virtual void CharacterDataHandler(const char* data, int length) + { + this->CData.insert(this->CData.end(), data, data+length); + } + + virtual void EndElement(const char* name) + { + if(strcmp(name, "logentry") == 0) + { + this->SVN->DoRevision(this->Rev, this->Changes); + } + else if(strcmp(name, "path") == 0 && !this->CData.empty()) + { + this->CurChange.Path.assign(&this->CData[0], this->CData.size()); + this->Changes.push_back(this->CurChange); + } + else if(strcmp(name, "author") == 0 && !this->CData.empty()) + { + this->Rev.Author.assign(&this->CData[0], this->CData.size()); + } + else if(strcmp(name, "date") == 0 && !this->CData.empty()) + { + this->Rev.Date.assign(&this->CData[0], this->CData.size()); + } + else if(strcmp(name, "msg") == 0 && !this->CData.empty()) + { + this->Rev.Log.assign(&this->CData[0], this->CData.size()); + } + this->CData.clear(); + } + + virtual void ReportError(int, int, const char* msg) + { + this->SVN->Log << "Error parsing svn log xml: " << msg << "\n"; + } +}; + +//---------------------------------------------------------------------------- +void cmCTestSVN::LoadRevisions() +{ + // We are interested in every revision included in the update. + std::string revs; + if(atoi(this->OldRevision.c_str()) < atoi(this->NewRevision.c_str())) + { + revs = "-r" + this->OldRevision + ":" + this->NewRevision; + } + else + { + revs = "-r" + this->NewRevision; + } + + // Run "svn log" to get all global revisions of interest. + const char* svn = this->CommandLineTool.c_str(); + const char* svn_log[] = {svn, "log", "--xml", "-v", revs.c_str(), 0}; + { + LogParser out(this, "log-out> "); + OutputLogger err(this->Log, "log-err> "); + this->RunChild(svn_log, &out, &err); + } +} + +//---------------------------------------------------------------------------- +void cmCTestSVN::DoRevision(Revision const& revision, + std::vector const& changes) +{ + // Guess the base checkout path from the changes if necessary. + if(this->Base.empty() && !changes.empty()) + { + this->GuessBase(changes); + } + this->cmCTestGlobalVC::DoRevision(revision, changes); +} + +//---------------------------------------------------------------------------- +class cmCTestSVN::StatusParser: public cmCTestVC::LineParser +{ +public: + StatusParser(cmCTestSVN* svn, const char* prefix): SVN(svn) + { + this->SetLog(&svn->Log, prefix); + this->RegexStatus.compile("^([ACDIMRX?!~ ])([CM ])[ L]... +(.+)$"); + } +private: + cmCTestSVN* SVN; + cmsys::RegularExpression RegexStatus; + bool ProcessLine() + { + if(this->RegexStatus.find(this->Line)) + { + this->DoPath(this->RegexStatus.match(1)[0], + this->RegexStatus.match(2)[0], + this->RegexStatus.match(3)); + } + return true; + } + + void DoPath(char path_status, char prop_status, std::string const& path) + { + char status = (path_status != ' ')? path_status : prop_status; + // See "svn help status". + switch(status) + { + case 'M': case '!': case 'A': case 'D': case 'R': + this->SVN->DoModification(PathModified, path); + break; + case 'C': case '~': + this->SVN->DoModification(PathConflicting, path); + break; + case 'X': case 'I': case '?': case ' ': default: + break; + } + } +}; + +//---------------------------------------------------------------------------- +void cmCTestSVN::LoadModifications() +{ + // Run "svn status" which reports local modifications. + const char* svn = this->CommandLineTool.c_str(); + const char* svn_status[] = {svn, "status", "--non-interactive", 0}; + StatusParser out(this, "status-out> "); + OutputLogger err(this->Log, "status-err> "); + this->RunChild(svn_status, &out, &err); +} diff --git a/Source/CTest/cmCTestSVN.h b/Source/CTest/cmCTestSVN.h new file mode 100644 index 000000000..ff9ff0f65 --- /dev/null +++ b/Source/CTest/cmCTestSVN.h @@ -0,0 +1,66 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmCTestSVN_h +#define cmCTestSVN_h + +#include "cmCTestGlobalVC.h" + +/** \class cmCTestSVN + * \brief Interaction with subversion command-line tool + * + */ +class cmCTestSVN: public cmCTestGlobalVC +{ +public: + /** Construct with a CTest instance and update log stream. */ + cmCTestSVN(cmCTest* ctest, std::ostream& log); + + virtual ~cmCTestSVN(); + +private: + // Implement cmCTestVC internal API. + virtual void CleanupImpl(); + virtual void NoteOldRevision(); + virtual void NoteNewRevision(); + virtual bool UpdateImpl(); + + // URL of repository directory checked out in the working tree. + std::string URL; + + // URL of repository root directory. + std::string Root; + + // Directory under repository root checked out in working tree. + std::string Base; + + std::string LoadInfo(); + void LoadModifications(); + void LoadRevisions(); + + void GuessBase(std::vector const& changes); + const char* LocalPath(std::string const& path); + + void DoRevision(Revision const& revision, + std::vector const& changes); + + // Parsing helper classes. + class InfoParser; + class LogParser; + class StatusParser; + class UpdateParser; + friend class InfoParser; + friend class LogParser; + friend class StatusParser; + friend class UpdateParser; +}; + +#endif diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx old mode 100755 new mode 100644 index 33cdfe6e2..5983e688b --- a/Source/CTest/cmCTestScriptHandler.cxx +++ b/Source/CTest/cmCTestScriptHandler.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestScriptHandler.cxx,v $ - Language: C++ - Date: $Date: 2008-12-02 12:07:40 $ - Version: $Revision: 1.43.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestScriptHandler.h" @@ -117,7 +112,7 @@ void cmCTestScriptHandler::Initialize() this->CTestCmd = ""; this->UpdateCmd = ""; this->CTestEnv = ""; - this->InitCache = ""; + this->InitialCache = ""; this->CMakeCmd = ""; this->CMOutFile = ""; this->ExtraUpdates.clear(); @@ -236,6 +231,7 @@ int cmCTestScriptHandler::ExecuteScript(const std::string& total_script_arg) // now pass through all the other arguments std::vector &initArgs = this->CTest->GetInitialCommandLineArguments(); + //*** need to make sure this does not have the current script *** for(size_t i=1; i < initArgs.size(); ++i) { argv.push_back(initArgs[i].c_str()); @@ -272,15 +268,49 @@ int cmCTestScriptHandler::ExecuteScript(const std::string& total_script_arg) // Properly handle output of the build command cmsysProcess_WaitForExit(cp, 0); int result = cmsysProcess_GetState(cp); - int retVal = 0; + bool failed = false; if(result == cmsysProcess_State_Exited) { retVal = cmsysProcess_GetExitValue(cp); } - else + else if(result == cmsysProcess_State_Exception) + { + retVal = cmsysProcess_GetExitException(cp); + cmCTestLog(this->CTest, ERROR_MESSAGE, "\tThere was an exception: " + << cmsysProcess_GetExceptionString(cp) << " " << + retVal << std::endl); + failed = true; + } + else if(result == cmsysProcess_State_Expired) + { + cmCTestLog(this->CTest, ERROR_MESSAGE, "\tThere was a timeout" + << std::endl); + failed = true; + } + else if(result == cmsysProcess_State_Error) + { + cmCTestLog(this->CTest, ERROR_MESSAGE, "\tError executing ctest: " + << cmsysProcess_GetErrorString(cp) << std::endl); + failed = true; + } + cmsysProcess_Delete(cp); + if(failed) { - abort(); + cmOStringStream message; + message << "Error running command: ["; + message << result << "] "; + for(std::vector::iterator i = argv.begin(); + i != argv.end(); ++i) + { + if(*i) + { + message << *i << " "; + } + } + cmCTestLog(this->CTest, ERROR_MESSAGE, + message.str() << argv[0] << std::endl); + return -1; } return retVal; } @@ -300,9 +330,14 @@ void cmCTestScriptHandler::CreateCMake() this->GlobalGenerator->SetCMakeInstance(this->CMake); this->LocalGenerator = this->GlobalGenerator->CreateLocalGenerator(); - this->LocalGenerator->SetGlobalGenerator(this->GlobalGenerator); this->Makefile = this->LocalGenerator->GetMakefile(); + // Set CMAKE_CURRENT_SOURCE_DIR and CMAKE_CURRENT_BINARY_DIR. + // Also, some commands need Makefile->GetCurrentDirectory(). + std::string cwd = cmSystemTools::GetCurrentWorkingDirectory(); + this->Makefile->SetStartDirectory(cwd.c_str()); + this->Makefile->SetStartOutputDirectory(cwd.c_str()); + // remove all cmake commands which are not scriptable, since they can't be // used in ctest scripts this->CMake->RemoveUnscriptableCommands(); @@ -335,6 +370,9 @@ void cmCTestScriptHandler::GetCommandDocumentation( // cmake instance and generators, and then reads in the script int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg) { + // Reset the error flag so that the script is read in no matter what + cmSystemTools::ResetErrorOccuredFlag(); + // if the argument has a , in it then it needs to be broken into the fist // argument (which is the script) and the second argument which will be // passed into the scripts as S_ARG @@ -345,7 +383,6 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg) script = total_script_arg.substr(0,total_script_arg.find(",")); script_arg = total_script_arg.substr(total_script_arg.find(",")+1); } - // make sure the file exists if (!cmSystemTools::FileExists(script.c_str())) { @@ -380,25 +417,19 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg) f->CTestScriptHandler = this; this->Makefile->AddFunctionBlocker(f); - /* Execute CMakeDetermineSystem and CMakeSystemSpecificInformation, so + + /* Execute CTestScriptMode.cmake, which loads CMakeDetermineSystem and + CMakeSystemSpecificInformation, so that variables like CMAKE_SYSTEM and also the search paths for libraries, header and executables are set correctly and can be used. Makes new-style ctest scripting easier. */ std::string systemFile = - this->Makefile->GetModulesFile("CMakeDetermineSystem.cmake"); + this->Makefile->GetModulesFile("CTestScriptMode.cmake"); if (!this->Makefile->ReadListFile(0, systemFile.c_str()) || cmSystemTools::GetErrorOccuredFlag()) - { - return 2; - } - - systemFile = - this->Makefile->GetModulesFile("CMakeSystemSpecificInformation.cmake"); - if (!this->Makefile->ReadListFile(0, systemFile.c_str()) || - cmSystemTools::GetErrorOccuredFlag()) - { - cmCTestLog(this->CTest, DEBUG, "Error in read: " << systemFile.c_str() - << std::endl); + { + cmCTestLog(this->CTest, ERROR_MESSAGE, "Error in read:" + << systemFile.c_str() << "\n"); return 2; } @@ -406,9 +437,13 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg) if (!this->Makefile->ReadListFile(0, script.c_str()) || cmSystemTools::GetErrorOccuredFlag()) { - cmCTestLog(this->CTest, DEBUG, "Error in read script: " + cmCTestLog(this->CTest, ERROR_MESSAGE, "Error in read script: " << script.c_str() << std::endl); + // Reset the error flag so that it can run more than + // one script with an error when you + // use ctest_run_script + cmSystemTools::ResetErrorOccuredFlag(); return 2; } @@ -448,7 +483,7 @@ int cmCTestScriptHandler::ExtractVariables() } this->CTestEnv = this->Makefile->GetSafeDefinition("CTEST_ENVIRONMENT"); - this->InitCache + this->InitialCache = this->Makefile->GetSafeDefinition("CTEST_INITIAL_CACHE"); this->CMakeCmd = this->Makefile->GetSafeDefinition("CTEST_CMAKE_COMMAND"); @@ -839,24 +874,14 @@ int cmCTestScriptHandler::RunConfigurationDashboard() } // put the initial cache into the bin dir - if (!this->InitCache.empty()) + if (!this->InitialCache.empty()) { - std::string cacheFile = this->BinaryDir; - cacheFile += "/CMakeCache.txt"; - cmGeneratedFileStream fout(cacheFile.c_str()); - if(!fout) + if (!this->WriteInitialCache(this->BinaryDir.c_str(), + this->InitialCache.c_str())) { this->RestoreBackupDirectories(); return 9; } - - fout.write(this->InitCache.c_str(), this->InitCache.size()); - - // Make sure the operating system has finished writing the file - // before closing it. This will ensure the file is finished before - // the check below. - fout.flush(); - fout.close(); } // do an initial cmake to setup the DartConfig file @@ -936,7 +961,8 @@ int cmCTestScriptHandler::RunConfigurationDashboard() } cmCTestLog(this->CTest, ERROR_MESSAGE, "Unable to run ctest:" << std::endl - << output.c_str() << std::endl); + << "command: " << command.c_str() << std::endl + << "output: " << output.c_str() << std::endl); if (!res) { return 11; @@ -955,6 +981,30 @@ int cmCTestScriptHandler::RunConfigurationDashboard() return 0; } +//------------------------------------------------------------------------- +bool cmCTestScriptHandler::WriteInitialCache(const char* directory, + const char* text) +{ + std::string cacheFile = directory; + cacheFile += "/CMakeCache.txt"; + cmGeneratedFileStream fout(cacheFile.c_str()); + if(!fout) + { + return false; + } + + if (text!=0) + { + fout.write(text, strlen(text)); + } + + // Make sure the operating system has finished writing the file + // before closing it. This will ensure the file is finished before + // the check below. + fout.flush(); + fout.close(); + return true; +} //------------------------------------------------------------------------- void cmCTestScriptHandler::RestoreBackupDirectories() @@ -979,12 +1029,16 @@ void cmCTestScriptHandler::RestoreBackupDirectories() } bool cmCTestScriptHandler::RunScript(cmCTest* ctest, const char *sname, - bool InProcess) + bool InProcess, int* returnValue) { cmCTestScriptHandler* sh = new cmCTestScriptHandler(); sh->SetCTestInstance(ctest); sh->AddConfigurationScript(sname,InProcess); - sh->ProcessHandler(); + int res = sh->ProcessHandler(); + if(returnValue) + { + *returnValue = res; + } delete sh; return true; } diff --git a/Source/CTest/cmCTestScriptHandler.h b/Source/CTest/cmCTestScriptHandler.h old mode 100755 new mode 100644 index 60574b634..a7cf6ba65 --- a/Source/CTest/cmCTestScriptHandler.h +++ b/Source/CTest/cmCTestScriptHandler.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestScriptHandler.h,v $ - Language: C++ - Date: $Date: 2007-06-08 20:06:33 $ - Version: $Revision: 1.19 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestScriptHandler_h #define cmCTestScriptHandler_h @@ -82,7 +77,8 @@ public: /* * Run a script */ - static bool RunScript(cmCTest* ctest, const char *script, bool InProcess); + static bool RunScript(cmCTest* ctest, const char *script, bool InProcess, + int* returnValue); int RunCurrentScript(); /* @@ -90,6 +86,11 @@ public: */ static bool EmptyBinaryDirectory(const char *dir); + /* + * Write an initial CMakeCache.txt from the given contents. + */ + static bool WriteInitialCache(const char* directory, const char* text); + /* * Some elapsed time handling functions */ @@ -110,7 +111,7 @@ public: void CreateCMake(); void GetCommandDocumentation(std::vector& v) const; - + cmake* GetCMake() { return this->CMake;} private: // reads in a script int ReadInScript(const std::string& total_script_arg); @@ -151,7 +152,7 @@ private: cmStdString CTestCmd; cmStdString UpdateCmd; cmStdString CTestEnv; - cmStdString InitCache; + cmStdString InitialCache; cmStdString CMakeCmd; cmStdString CMOutFile; std::vector ExtraUpdates; diff --git a/Source/CTest/cmCTestSleepCommand.cxx b/Source/CTest/cmCTestSleepCommand.cxx old mode 100755 new mode 100644 index 171456a4b..5b0697219 --- a/Source/CTest/cmCTestSleepCommand.cxx +++ b/Source/CTest/cmCTestSleepCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestSleepCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-01-23 15:28:01 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestSleepCommand.h" #include "cmCTestScriptHandler.h" diff --git a/Source/CTest/cmCTestSleepCommand.h b/Source/CTest/cmCTestSleepCommand.h old mode 100755 new mode 100644 index 978a819d7..411eb018e --- a/Source/CTest/cmCTestSleepCommand.h +++ b/Source/CTest/cmCTestSleepCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestSleepCommand.h,v $ - Language: C++ - Date: $Date: 2008-05-15 19:39:59 $ - Version: $Revision: 1.3.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestSleepCommand_h #define cmCTestSleepCommand_h diff --git a/Source/CTest/cmCTestStartCommand.cxx b/Source/CTest/cmCTestStartCommand.cxx old mode 100755 new mode 100644 index 165f06053..779a38c55 --- a/Source/CTest/cmCTestStartCommand.cxx +++ b/Source/CTest/cmCTestStartCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestStartCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-01-23 15:28:01 $ - Version: $Revision: 1.16 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestStartCommand.h" #include "cmCTest.h" diff --git a/Source/CTest/cmCTestStartCommand.h b/Source/CTest/cmCTestStartCommand.h old mode 100755 new mode 100644 index 57ecd8b1c..84f763152 --- a/Source/CTest/cmCTestStartCommand.h +++ b/Source/CTest/cmCTestStartCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestStartCommand.h,v $ - Language: C++ - Date: $Date: 2008-05-15 19:39:59 $ - Version: $Revision: 1.5.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestStartCommand_h #define cmCTestStartCommand_h diff --git a/Source/CTest/cmCTestSubmitCommand.cxx b/Source/CTest/cmCTestSubmitCommand.cxx index 266281b9f..d1226da1f 100644 --- a/Source/CTest/cmCTestSubmitCommand.cxx +++ b/Source/CTest/cmCTestSubmitCommand.cxx @@ -1,23 +1,19 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestSubmitCommand.cxx,v $ - Language: C++ - Date: $Date: 2009-03-31 14:29:12 $ - Version: $Revision: 1.13.12.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestSubmitCommand.h" #include "cmCTest.h" #include "cmCTestGenericHandler.h" +#include "cmCTestSubmitHandler.h" cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler() { @@ -37,47 +33,19 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler() ctestDropMethod = "http"; } - if ( ctestDropSiteCDash ) + if ( !ctestDropSite ) { - // drop site is a CDash server... - // - if ( !ctestDropSite ) - { - // error: CDash requires CTEST_DROP_SITE definition - // in CTestConfig.cmake - } - if ( !ctestDropLocation ) - { - // error: CDash requires CTEST_DROP_LOCATION definition - // in CTestConfig.cmake - } + // error: CDash requires CTEST_DROP_SITE definition + // in CTestConfig.cmake } - else + if ( !ctestDropLocation ) { - // drop site is a *NOT* a CDash server... - // - // Keep all this code in case anybody out there is still - // using newer CMake with non-CDash servers - // - if ( !ctestDropSite ) - { - ctestDropSite = "public.kitware.com"; - } - if ( !ctestDropLocation ) - { - ctestDropLocation = "/cgi-bin/HTTPUploadDartFile.cgi"; - } - if ( !ctestTriggerSite ) - { - ctestTriggerSite - = "http://public.kitware.com/cgi-bin/Submit-Random-TestingResults.cgi"; - cmCTestLog(this->CTest, HANDLER_OUTPUT, "* Use default trigger site: " - << ctestTriggerSite << std::endl;); - } + // error: CDash requires CTEST_DROP_LOCATION definition + // in CTestConfig.cmake } - this->CTest->SetCTestConfiguration("DropMethod", ctestDropMethod); - this->CTest->SetCTestConfiguration("DropSite", ctestDropSite); + this->CTest->SetCTestConfiguration("DropMethod", ctestDropMethod); + this->CTest->SetCTestConfiguration("DropSite", ctestDropSite); this->CTest->SetCTestConfiguration("DropLocation", ctestDropLocation); this->CTest->SetCTestConfiguration("IsCDash", @@ -90,6 +58,8 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler() this->CTest->SetCTestConfiguration("TriggerSite", ctestTriggerSite); } + this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, + "CurlOptions", "CTEST_CURL_OPTIONS"); this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, "DropSiteUser", "CTEST_DROP_SITE_USER"); this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, @@ -113,6 +83,7 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler() } this->CTest->GenerateNotesFile(newNotesFiles); } + const char* extraFilesVariable = this->Makefile->GetDefinition("CTEST_EXTRA_SUBMIT_FILES"); if (extraFilesVariable) @@ -141,7 +112,107 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler() this->SetError("internal CTest error. Cannot instantiate submit handler"); return 0; } + + // If no FILES or PARTS given, *all* PARTS are submitted by default. + // + // If FILES are given, but not PARTS, only the FILES are submitted + // and *no* PARTS are submitted. + // (This is why we select the empty "noParts" set in the + // FilesMentioned block below...) + // + // If PARTS are given, only the selected PARTS are submitted. + // + // If both PARTS and FILES are given, only the selected PARTS *and* + // all the given FILES are submitted. + + // If given explicit FILES to submit, pass them to the handler. + // + if(this->FilesMentioned) + { + // Intentionally select *no* PARTS. (Pass an empty set.) If PARTS + // were also explicitly mentioned, they will be selected below... + // But FILES with no PARTS mentioned should just submit the FILES + // without any of the default parts. + // + std::set noParts; + static_cast(handler)->SelectParts(noParts); + + static_cast(handler)->SelectFiles(this->Files); + } + + // If a PARTS option was given, select only the named parts for submission. + // + if(this->PartsMentioned) + { + static_cast(handler)->SelectParts(this->Parts); + } + return handler; } +//---------------------------------------------------------------------------- +bool cmCTestSubmitCommand::CheckArgumentKeyword(std::string const& arg) +{ + // Look for arguments specific to this command. + if(arg == "PARTS") + { + this->ArgumentDoing = ArgumentDoingParts; + this->PartsMentioned = true; + return true; + } + + if(arg == "FILES") + { + this->ArgumentDoing = ArgumentDoingFiles; + this->FilesMentioned = true; + return true; + } + + // Look for other arguments. + return this->Superclass::CheckArgumentKeyword(arg); +} + + +//---------------------------------------------------------------------------- +bool cmCTestSubmitCommand::CheckArgumentValue(std::string const& arg) +{ + // Handle states specific to this command. + if(this->ArgumentDoing == ArgumentDoingParts) + { + cmCTest::Part p = this->CTest->GetPartFromName(arg.c_str()); + if(p != cmCTest::PartCount) + { + this->Parts.insert(p); + } + else + { + cmOStringStream e; + e << "Part name \"" << arg << "\" is invalid."; + this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); + this->ArgumentDoing = ArgumentDoingError; + } + return true; + } + + if(this->ArgumentDoing == ArgumentDoingFiles) + { + cmStdString filename(arg); + if(cmSystemTools::FileExists(filename.c_str())) + { + this->Files.insert(filename); + } + else + { + cmOStringStream e; + e << "File \"" << filename << "\" does not exist. Cannot submit " + << "a non-existent file."; + this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); + this->ArgumentDoing = ArgumentDoingError; + } + return true; + } + + // Look for other arguments. + return this->Superclass::CheckArgumentValue(arg); +} diff --git a/Source/CTest/cmCTestSubmitCommand.h b/Source/CTest/cmCTestSubmitCommand.h index bf7fcfa06..ccaef7e36 100644 --- a/Source/CTest/cmCTestSubmitCommand.h +++ b/Source/CTest/cmCTestSubmitCommand.h @@ -1,23 +1,19 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestSubmitCommand.h,v $ - Language: C++ - Date: $Date: 2008-05-15 19:40:00 $ - Version: $Revision: 1.5.12.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestSubmitCommand_h #define cmCTestSubmitCommand_h #include "cmCTestHandlerCommand.h" +#include "cmCTest.h" /** \class cmCTestSubmit * \brief Run a ctest script @@ -29,7 +25,11 @@ class cmCTestSubmitCommand : public cmCTestHandlerCommand { public: - cmCTestSubmitCommand() {} + cmCTestSubmitCommand() + { + this->PartsMentioned = false; + this->FilesMentioned = false; + } /** * This is a virtual constructor for the command. @@ -52,7 +52,7 @@ public: */ virtual const char* GetTerseDocumentation() { - return "Submits the repository."; + return "Submit results to a dashboard server."; } /** @@ -61,14 +61,44 @@ public: virtual const char* GetFullDocumentation() { return - " ctest_submit([RETURN_VALUE res])\n" - "Submits the test results for the project."; + " ctest_submit([PARTS ...] [FILES ...] [RETURN_VALUE res])\n" + "By default all available parts are submitted if no PARTS or FILES " + "are specified. " + "The PARTS option lists a subset of parts to be submitted. " + "Valid part names are:\n" + " Start = nothing\n" + " Update = ctest_update results, in Update.xml\n" + " Configure = ctest_configure results, in Configure.xml\n" + " Build = ctest_build results, in Build.xml\n" + " Test = ctest_test results, in Test.xml\n" + " Coverage = ctest_coverage results, in Coverage.xml\n" + " MemCheck = ctest_memcheck results, in DynamicAnalysis.xml\n" + " Notes = Files listed by CTEST_NOTES_FILES, in Notes.xml\n" + " ExtraFiles = Files listed by CTEST_EXTRA_SUBMIT_FILES\n" + " Submit = nothing\n" + "The FILES option explicitly lists specific files to be submitted. " + "Each individual file must exist at the time of the call.\n"; } cmTypeMacro(cmCTestSubmitCommand, cmCTestHandlerCommand); protected: cmCTestGenericHandler* InitializeHandler(); + + virtual bool CheckArgumentKeyword(std::string const& arg); + virtual bool CheckArgumentValue(std::string const& arg); + + enum + { + ArgumentDoingParts = Superclass::ArgumentDoingLast1, + ArgumentDoingFiles, + ArgumentDoingLast2 + }; + + bool PartsMentioned; + std::set Parts; + bool FilesMentioned; + cmCTest::SetOfStrings Files; }; diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx index de346e5fa..cbef1f17b 100644 --- a/Source/CTest/cmCTestSubmitHandler.cxx +++ b/Source/CTest/cmCTestSubmitHandler.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. -Program: CMake - Cross-Platform Makefile Generator -Module: $RCSfile: cmCTestSubmitHandler.cxx,v $ -Language: C++ -Date: $Date: 2008-03-04 18:34:21 $ -Version: $Revision: 1.31 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. -Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. -See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - -This software is distributed WITHOUT ANY WARRANTY; without even -the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestSubmitHandler.h" #include "cmSystemTools.h" @@ -32,6 +27,8 @@ PURPOSE. See the above copyright notices for more information. #include +#define SUBMIT_TIMEOUT_IN_SECONDS_DEFAULT 120 + typedef std::vector cmCTestSubmitHandlerVectorOfChar; static size_t @@ -62,18 +59,18 @@ cmCTestSubmitHandlerCurlDebugCallback(CURL *, curl_infotype, char *chPtr, //---------------------------------------------------------------------------- cmCTestSubmitHandler::cmCTestSubmitHandler() : HTTPProxy(), FTPProxy() { - this->HTTPProxy = ""; - this->HTTPProxyType = 0; - this->HTTPProxyAuth = ""; - - this->FTPProxy = ""; - this->FTPProxyType = 0; - this->CDash = false; + this->Initialize(); } //---------------------------------------------------------------------------- void cmCTestSubmitHandler::Initialize() { + // We submit all available parts by default. + for(cmCTest::Part p = cmCTest::PartStart; + p != cmCTest::PartCount; p = cmCTest::Part(p+1)) + { + this->SubmitPart[p] = true; + } this->CDash = false; this->Superclass::Initialize(); this->HTTPProxy = ""; @@ -82,6 +79,7 @@ void cmCTestSubmitHandler::Initialize() this->FTPProxy = ""; this->FTPProxyType = 0; this->LogFile = 0; + this->Files.clear(); } //---------------------------------------------------------------------------- @@ -123,7 +121,14 @@ bool cmCTestSubmitHandler::SubmitUsingFTP(const cmStdString& localprefix, } // enable uploading - ::curl_easy_setopt(curl, CURLOPT_UPLOAD, 1) ; + ::curl_easy_setopt(curl, CURLOPT_UPLOAD, 1); + + // if there is little to no activity for too long stop submitting + ::curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 1); + ::curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, + SUBMIT_TIMEOUT_IN_SECONDS_DEFAULT); + + ::curl_easy_setopt(curl, CURLOPT_UPLOAD, 1); cmStdString local_file = *file; if ( !cmSystemTools::FileExists(local_file.c_str()) ) @@ -244,7 +249,24 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(const cmStdString& localprefix, /* In windows, this will init the winsock stuff */ ::curl_global_init(CURL_GLOBAL_ALL); - + cmStdString dropMethod(this->CTest->GetCTestConfiguration("DropMethod")); + cmStdString curlopt(this->CTest->GetCTestConfiguration("CurlOptions")); + std::vector args; + cmSystemTools::ExpandListArgument(curlopt.c_str(), args); + bool verifyPeerOff = false; + bool verifyHostOff = false; + for( std::vector::iterator i = args.begin(); + i != args.end(); ++i) + { + if(*i == "CURLOPT_SSL_VERIFYPEER_OFF") + { + verifyPeerOff = true; + } + if(*i == "CURLOPT_SSL_VERIFYHOST_OFF") + { + verifyHostOff = true; + } + } cmStdString::size_type kk; cmCTest::SetOfStrings::const_iterator file; for ( file = files.begin(); file != files.end(); ++file ) @@ -253,6 +275,18 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(const cmStdString& localprefix, curl = curl_easy_init(); if(curl) { + if(verifyPeerOff) + { + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, + " Set CURLOPT_SSL_VERIFYPEER to off\n"); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0); + } + if(verifyHostOff) + { + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, + " Set CURLOPT_SSL_VERIFYHOST to off\n"); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0); + } // Using proxy if ( this->HTTPProxyType > 0 ) @@ -277,7 +311,12 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(const cmStdString& localprefix, } /* enable uploading */ - curl_easy_setopt(curl, CURLOPT_UPLOAD, 1) ; + curl_easy_setopt(curl, CURLOPT_UPLOAD, 1); + + // if there is little to no activity for too long stop submitting + ::curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 1); + ::curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, + SUBMIT_TIMEOUT_IN_SECONDS_DEFAULT); /* HTTP PUT please */ ::curl_easy_setopt(curl, CURLOPT_PUT, 1); @@ -423,7 +462,6 @@ bool cmCTestSubmitHandler::TriggerUsingHTTP( { CURL *curl; char error_buffer[1024]; - /* In windows, this will init the winsock stuff */ ::curl_global_init(CURL_GLOBAL_ALL); @@ -505,6 +543,7 @@ bool cmCTestSubmitHandler::TriggerUsingHTTP( *this->LogFile << "Trigger url: " << turl.c_str() << std::endl; cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, " Trigger url: " << turl.c_str() << std::endl); + curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_easy_setopt(curl, CURLOPT_URL, turl.c_str()); if ( curl_easy_perform(curl) ) { @@ -656,6 +695,48 @@ bool cmCTestSubmitHandler::SubmitUsingSCP( } //---------------------------------------------------------------------------- +bool cmCTestSubmitHandler::SubmitUsingCP( + const cmStdString& localprefix, + const std::set& files, + const cmStdString& remoteprefix, + const cmStdString& destination) +{ + if ( !localprefix.size() || + !files.size() || !remoteprefix.size() || !destination.size() ) + { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "Missing arguments for submit via cp:\n" + << "\tlocalprefix: " << localprefix << "\n" + << "\tNumber of files: " << files.size() << "\n" + << "\tremoteprefix: " << remoteprefix << "\n" + << "\tdestination: " << destination << std::endl); + return 0; + } + cmCTest::SetOfStrings::const_iterator file; + bool problems = false; + for ( file = files.begin(); file != files.end(); ++file ) + { + std::string lfname = localprefix; + cmSystemTools::ConvertToUnixSlashes(lfname); + lfname += "/" + *file; + std::string rfname = destination + "/" + remoteprefix + *file; + cmSystemTools::CopyFileAlways(lfname.c_str(), rfname.c_str()); + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, " Copy file: " + << lfname.c_str() << " to " + << rfname.c_str() << std::endl); + } + std::string tagDoneFile = destination + "/" + remoteprefix + "DONE"; + cmSystemTools::Touch(tagDoneFile.c_str(), true); + if ( problems ) + { + return false; + } + return true; +} + + +//---------------------------------------------------------------------------- +#if defined(CTEST_USE_XMLRPC) bool cmCTestSubmitHandler::SubmitUsingXMLRPC(const cmStdString& localprefix, const std::set& files, const cmStdString& remoteprefix, @@ -753,6 +834,15 @@ bool cmCTestSubmitHandler::SubmitUsingXMLRPC(const cmStdString& localprefix, xmlrpc_client_cleanup(); return true; } +#else +bool cmCTestSubmitHandler::SubmitUsingXMLRPC(cmStdString const&, + std::set const&, + cmStdString const&, + cmStdString const&) +{ + return false; +} +#endif //---------------------------------------------------------------------------- int cmCTestSubmitHandler::ProcessHandler() @@ -854,13 +944,29 @@ int cmCTestSubmitHandler::ProcessHandler() cmCTest::SetOfStrings files; std::string prefix = this->GetSubmitResultsPrefix(); + + if (!this->Files.empty()) + { + // Submit the explicitly selected files: + // + cmCTest::SetOfStrings::const_iterator it; + for (it = this->Files.begin(); it != this->Files.end(); ++it) + { + files.insert(*it); + } + } + + // Add to the list of files to submit from any selected, existing parts: + // + // TODO: // Check if test is enabled - this->CTest->AddIfExists(files, "Update.xml"); - this->CTest->AddIfExists(files, "Configure.xml"); - this->CTest->AddIfExists(files, "Build.xml"); - this->CTest->AddIfExists(files, "Test.xml"); - if ( this->CTest->AddIfExists(files, "Coverage.xml") ) + + this->CTest->AddIfExists(cmCTest::PartUpdate, "Update.xml"); + this->CTest->AddIfExists(cmCTest::PartConfigure, "Configure.xml"); + this->CTest->AddIfExists(cmCTest::PartBuild, "Build.xml"); + this->CTest->AddIfExists(cmCTest::PartTest, "Test.xml"); + if(this->CTest->AddIfExists(cmCTest::PartCoverage, "Coverage.xml")) { cmCTest::VectorOfStrings gfiles; std::string gpath @@ -877,7 +983,7 @@ int cmCTestSubmitHandler::ProcessHandler() gfiles[cc] = gfiles[cc].substr(glen); cmCTestLog(this->CTest, DEBUG, "Glob file: " << gfiles[cc].c_str() << std::endl); - files.insert(gfiles[cc]); + this->CTest->AddSubmitFile(cmCTest::PartCoverage, gfiles[cc].c_str()); } } else @@ -885,22 +991,34 @@ int cmCTestSubmitHandler::ProcessHandler() cmCTestLog(this->CTest, ERROR_MESSAGE, "Problem globbing" << std::endl); } } - this->CTest->AddIfExists(files, "DynamicAnalysis.xml"); - this->CTest->AddIfExists(files, "Purify.xml"); - this->CTest->AddIfExists(files, "Notes.xml"); - - cmCTest::SetOfStrings::iterator it; - for ( it = this->CTest->GetSubmitFiles()->begin(); - it != this->CTest->GetSubmitFiles()->end(); - ++ it ) + this->CTest->AddIfExists(cmCTest::PartMemCheck, "DynamicAnalysis.xml"); + this->CTest->AddIfExists(cmCTest::PartMemCheck, "Purify.xml"); + this->CTest->AddIfExists(cmCTest::PartNotes, "Notes.xml"); + + // Query parts for files to submit. + for(cmCTest::Part p = cmCTest::PartStart; + p != cmCTest::PartCount; p = cmCTest::Part(p+1)) { - files.insert(files.end(), *it); + // Skip parts we are not submitting. + if(!this->SubmitPart[p]) + { + continue; + } + + // Submit files from this part. + std::vector const& pfiles = this->CTest->GetSubmitFiles(p); + for(std::vector::const_iterator pi = pfiles.begin(); + pi != pfiles.end(); ++pi) + { + files.insert(*pi); + } } if ( ofs ) { ofs << "Upload files:" << std::endl; int cnt = 0; + cmCTest::SetOfStrings::iterator it; for ( it = files.begin(); it != files.end(); ++ it ) { ofs << cnt << "\t" << it->c_str() << std::endl; @@ -917,8 +1035,10 @@ int cmCTestSubmitHandler::ProcessHandler() << specificTrack << std::endl); } this->SetLogFile(&ofs); - if ( this->CTest->GetCTestConfiguration("DropMethod") == "" || - this->CTest->GetCTestConfiguration("DropMethod") == "ftp" ) + + cmStdString dropMethod(this->CTest->GetCTestConfiguration("DropMethod")); + + if ( dropMethod == "" || dropMethod == "ftp" ) { ofs << "Using drop method: FTP" << std::endl; cmCTestLog(this->CTest, HANDLER_OUTPUT, " Using FTP submit method" @@ -955,7 +1075,7 @@ int cmCTestSubmitHandler::ProcessHandler() << std::endl); ofs << " Problems when submitting via FTP" << std::endl; return -1; - } + } if(!this->CDash) { cmCTestLog(this->CTest, HANDLER_OUTPUT, " Using HTTP trigger method" @@ -978,14 +1098,15 @@ int cmCTestSubmitHandler::ProcessHandler() return 0; } } - else if ( this->CTest->GetCTestConfiguration("DropMethod") == "http" ) + else if ( dropMethod == "http" || dropMethod == "https" ) { - ofs << "Using drop method: HTTP" << std::endl; + std::string url = dropMethod; + url += "://"; + ofs << "Using drop method: " << dropMethod << std::endl; cmCTestLog(this->CTest, HANDLER_OUTPUT, " Using HTTP submit method" << std::endl - << " Drop site: http://"); - std::string url = "http://"; - if ( this->CTest->GetCTestConfiguration("DropSiteUser").size() > 0 ) + << " Drop site:" << url); + if ( this->CTest->GetCTestConfiguration("DropSiteUser").size() > 0 ) { url += this->CTest->GetCTestConfiguration("DropSiteUser"); cmCTestLog(this->CTest, HANDLER_OUTPUT, @@ -1033,8 +1154,9 @@ int cmCTestSubmitHandler::ProcessHandler() ofs << " Submission successful" << std::endl; return 0; } - else if ( this->CTest->GetCTestConfiguration("DropMethod") == "xmlrpc" ) + else if ( dropMethod == "xmlrpc" ) { +#if defined(CTEST_USE_XMLRPC) ofs << "Using drop method: XML-RPC" << std::endl; cmCTestLog(this->CTest, HANDLER_OUTPUT, " Using XML-RPC submit method" << std::endl); @@ -1052,8 +1174,14 @@ int cmCTestSubmitHandler::ProcessHandler() << std::endl); ofs << " Submission successful" << std::endl; return 0; +#else + cmCTestLog(this->CTest, ERROR_MESSAGE, + " Submission method \"xmlrpc\" not compiled into CTest!" + << std::endl); + return -1; +#endif } - else if ( this->CTest->GetCTestConfiguration("DropMethod") == "scp" ) + else if ( dropMethod == "scp" ) { std::string url; std::string oldWorkingDirectory; @@ -1086,9 +1214,42 @@ int cmCTestSubmitHandler::ProcessHandler() ofs << " Submission successful" << std::endl; return 0; } + else if ( dropMethod == "cp" ) + { + std::string location + = this->CTest->GetCTestConfiguration("DropLocation"); + + + // change to the build directory so that we can uses a relative path + // on windows since scp dosn't support "c:" a drive in the path + std::string + oldWorkingDirectory = cmSystemTools::GetCurrentWorkingDirectory(); + cmSystemTools::ChangeDirectory(buildDirectory.c_str()); + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, " Change directory: " + << buildDirectory.c_str() << std::endl); + + if ( !this->SubmitUsingCP( + "Testing/"+this->CTest->GetCurrentTag(), + files, + prefix, + location) ) + { + cmSystemTools::ChangeDirectory(oldWorkingDirectory.c_str()); + cmCTestLog(this->CTest, ERROR_MESSAGE, + " Problems when submitting via CP" + << std::endl); + ofs << " Problems when submitting via cp" << std::endl; + return -1; + } + cmSystemTools::ChangeDirectory(oldWorkingDirectory.c_str()); + cmCTestLog(this->CTest, HANDLER_OUTPUT, " Submission successful" + << std::endl); + ofs << " Submission successful" << std::endl; + return 0; + } cmCTestLog(this->CTest, ERROR_MESSAGE, " Unknown submission method: \"" - << this->CTest->GetCTestConfiguration("DropMethod") << "\"" << std::endl); + << dropMethod << "\"" << std::endl); return -1; } @@ -1102,4 +1263,24 @@ std::string cmCTestSubmitHandler::GetSubmitResultsPrefix() return name; } +//---------------------------------------------------------------------------- +void cmCTestSubmitHandler::SelectParts(std::set const& parts) +{ + // Check whether each part is selected. + for(cmCTest::Part p = cmCTest::PartStart; + p != cmCTest::PartCount; p = cmCTest::Part(p+1)) + { + this->SubmitPart[p] = + (std::set::const_iterator(parts.find(p)) != parts.end()); + } +} +//---------------------------------------------------------------------------- +void cmCTestSubmitHandler::SelectFiles(cmCTest::SetOfStrings const& files) +{ + cmCTest::SetOfStrings::const_iterator it; + for (it = files.begin(); it != files.end(); ++it) + { + this->Files.insert(*it); + } +} diff --git a/Source/CTest/cmCTestSubmitHandler.h b/Source/CTest/cmCTestSubmitHandler.h index 60906bf15..d93f94dfa 100644 --- a/Source/CTest/cmCTestSubmitHandler.h +++ b/Source/CTest/cmCTestSubmitHandler.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestSubmitHandler.h,v $ - Language: C++ - Date: $Date: 2008-02-29 19:58:33 $ - Version: $Revision: 1.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestSubmitHandler_h #define cmCTestSubmitHandler_h @@ -39,7 +34,13 @@ public: int ProcessHandler(); void Initialize(); - + + /** Specify a set of parts (by name) to submit. */ + void SelectParts(std::set const& parts); + + /** Specify a set of files to submit. */ + void SelectFiles(cmCTest::SetOfStrings const& files); + private: void SetLogFile(std::ostream* ost) { this->LogFile = ost; } @@ -60,6 +61,11 @@ private: const cmStdString& remoteprefix, const cmStdString& url); + bool SubmitUsingCP( const cmStdString& localprefix, + const std::set& files, + const cmStdString& remoteprefix, + const cmStdString& url); + bool TriggerUsingHTTP(const std::set& files, const cmStdString& remoteprefix, const cmStdString& url); @@ -77,7 +83,9 @@ private: cmStdString FTPProxy; int FTPProxyType; std::ostream* LogFile; + bool SubmitPart[cmCTest::PartCount]; bool CDash; + cmCTest::SetOfStrings Files; }; #endif diff --git a/Source/CTest/cmCTestTestCommand.cxx b/Source/CTest/cmCTestTestCommand.cxx index ba000532b..a719b0902 100644 --- a/Source/CTest/cmCTestTestCommand.cxx +++ b/Source/CTest/cmCTestTestCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestTestCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-12-02 12:07:40 $ - Version: $Revision: 1.10.12.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestTestCommand.h" #include "cmCTest.h" @@ -26,6 +21,9 @@ cmCTestTestCommand::cmCTestTestCommand() this->Arguments[ctt_STRIDE] = "STRIDE"; this->Arguments[ctt_EXCLUDE] = "EXCLUDE"; this->Arguments[ctt_INCLUDE] = "INCLUDE"; + this->Arguments[ctt_EXCLUDE_LABEL] = "EXCLUDE_LABEL"; + this->Arguments[ctt_INCLUDE_LABEL] = "INCLUDE_LABEL"; + this->Arguments[ctt_PARALLEL_LEVEL] = "PARALLEL_LEVEL"; this->Arguments[ctt_LAST] = 0; this->Last = ctt_LAST; } @@ -78,6 +76,21 @@ cmCTestGenericHandler* cmCTestTestCommand::InitializeHandler() { handler->SetOption("IncludeRegularExpression", this->Values[ctt_INCLUDE]); } + if(this->Values[ctt_EXCLUDE_LABEL]) + { + handler->SetOption("ExcludeLabelRegularExpression", + this->Values[ctt_EXCLUDE_LABEL]); + } + if(this->Values[ctt_INCLUDE_LABEL]) + { + handler->SetOption("LabelRegularExpression", + this->Values[ctt_INCLUDE_LABEL]); + } + if(this->Values[ctt_PARALLEL_LEVEL]) + { + handler->SetOption("ParallelLevel", + this->Values[ctt_PARALLEL_LEVEL]); + } return handler; } diff --git a/Source/CTest/cmCTestTestCommand.h b/Source/CTest/cmCTestTestCommand.h index 046a5ff81..73ce91329 100644 --- a/Source/CTest/cmCTestTestCommand.h +++ b/Source/CTest/cmCTestTestCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestTestCommand.h,v $ - Language: C++ - Date: $Date: 2008-12-02 12:07:40 $ - Version: $Revision: 1.6.12.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestTestCommand_h #define cmCTestTestCommand_h @@ -51,7 +46,7 @@ public: */ virtual const char* GetTerseDocumentation() { - return "Tests the repository."; + return "Run tests in the project build tree."; } /** @@ -60,16 +55,24 @@ public: virtual const char* GetFullDocumentation() { return - " ctest_test([BUILD build_dir]\n" + " ctest_test([BUILD build_dir] [APPEND]\n" " [START start number] [END end number]\n" " [STRIDE stride number] [EXCLUDE exclude regex ]\n" - " [INCLUDE include regex] [RETURN_VALUE res] )\n" + " [INCLUDE include regex] [RETURN_VALUE res] \n" + " [EXCLUDE_LABEL exclude regex] \n" + " [INCLUDE_LABEL label regex] \n" + " [PARALLEL_LEVEL level]) \n" "Tests the given build directory and stores results in Test.xml. The " "second argument is a variable that will hold value. Optionally, " "you can specify the starting test number START, the ending test number " "END, the number of tests to skip between each test STRIDE, a regular " "expression for tests to run INCLUDE, or a regular expression for tests " - "to not run EXCLUDE."; + "to not run EXCLUDE. EXCLUDE_LABEL and INCLUDE_LABEL are regular " + "expression for test to be included or excluded by the test " + "property LABEL. PARALLEL_LEVEL should be set to a positive number " + "representing the number of tests to be run in parallel." + "\n" + CTEST_COMMAND_APPEND_OPTION_DOCS; } cmTypeMacro(cmCTestTestCommand, cmCTestHandlerCommand); @@ -86,6 +89,9 @@ protected: ctt_STRIDE, ctt_EXCLUDE, ctt_INCLUDE, + ctt_EXCLUDE_LABEL, + ctt_INCLUDE_LABEL, + ctt_PARALLEL_LEVEL, ctt_LAST }; }; diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx old mode 100755 new mode 100644 index bba857ef4..2ad2e37f3 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1,23 +1,20 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestTestHandler.cxx,v $ - Language: C++ - Date: $Date: 2008-06-25 13:51:45 $ - Version: $Revision: 1.68.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestTestHandler.h" - +#include "cmCTestMultiProcessHandler.h" +#include "cmCTestBatchTestHandler.h" #include "cmCTest.h" +#include "cmCTestRunTest.h" #include "cmake.h" #include "cmGeneratedFileStream.h" #include @@ -28,6 +25,7 @@ #include "cmLocalGenerator.h" #include "cmCommand.h" #include "cmSystemTools.h" +#include "cmXMLSafe.h" #include #include @@ -390,6 +388,8 @@ cmCTestTestHandler::cmCTestTestHandler() { this->UseUnion = false; + this->UseIncludeLabelRegExpFlag = false; + this->UseExcludeLabelRegExpFlag = false; this->UseIncludeRegExpFlag = false; this->UseExcludeRegExpFlag = false; this->UseExcludeRegExpFirst = false; @@ -401,7 +401,12 @@ cmCTestTestHandler::cmCTestTestHandler() this->LogFile = 0; - this->DartStuff.compile("()"); + // regex to detect ... + this->DartStuff.compile( + "()"); + // regex to detect each individual ... + this->DartStuff1.compile( + "()"); } //---------------------------------------------------------------------- @@ -427,6 +432,8 @@ void cmCTestTestHandler::Initialize() this->UseIncludeRegExpFlag = false; this->UseExcludeRegExpFlag = false; this->UseExcludeRegExpFirst = false; + this->IncludeLabelRegularExpression = ""; + this->ExcludeLabelRegularExpression = ""; this->IncludeRegExp = ""; this->ExcludeRegExp = ""; @@ -484,8 +491,24 @@ int cmCTestTestHandler::ProcessHandler() { // Update internal data structure from generic one this->SetTestsToRunInformation(this->GetOption("TestsToRunInformation")); - this->SetUseUnion(cmSystemTools::IsOn(this->GetOption("UseUnion"))); + this->SetUseUnion(cmSystemTools::IsOn(this->GetOption("UseUnion"))); + if(this->GetOption("ParallelLevel")) + { + this->CTest->SetParallelLevel(atoi(this->GetOption("ParallelLevel"))); + } const char* val; + val = this->GetOption("LabelRegularExpression"); + if ( val ) + { + this->UseIncludeLabelRegExpFlag = true; + this->IncludeLabelRegExp = val; + } + val = this->GetOption("ExcludeLabelRegularExpression"); + if ( val ) + { + this->UseExcludeLabelRegExpFlag = true; + this->ExcludeLabelRegularExpression = val; + } val = this->GetOption("IncludeRegularExpression"); if ( val ) { @@ -502,7 +525,7 @@ int cmCTestTestHandler::ProcessHandler() this->TestResults.clear(); cmCTestLog(this->CTest, HANDLER_OUTPUT, - (this->MemCheck ? "Memory check" : "Test") + (this->MemCheck ? "Memory check" : "Test") << " project " << cmSystemTools::GetCurrentWorkingDirectory() << std::endl); if ( ! this->PreProcessHandler() ) @@ -518,8 +541,14 @@ int cmCTestTestHandler::ProcessHandler() std::vector failed; int total; + //start the real time clock + double clock_start, clock_finish; + clock_start = cmSystemTools::GetTime(); + this->ProcessDirectory(passed, failed); + clock_finish = cmSystemTools::GetTime(); + total = int(passed.size()) + int(failed.size()); if (total == 0) @@ -550,33 +579,41 @@ int cmCTestTestHandler::ProcessHandler() { percent = 99; } + cmCTestLog(this->CTest, HANDLER_OUTPUT, std::endl - << static_cast(percent + .5) << "% tests passed, " - << failed.size() << " tests failed out of " << total << std::endl); - //fprintf(stderr,"\n%.0f%% tests passed, %i tests failed out of %i\n", - // percent, int(failed.size()), total); + << static_cast(percent + .5) << "% tests passed, " + << failed.size() << " tests failed out of " + << total << std::endl); + if(this->CTest->GetLabelSummary()) + { + this->PrintLabelSummary(); + } + char realBuf[1024]; + sprintf(realBuf, "%6.2f sec", (double)(clock_finish - clock_start)); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "\nTotal Test time (real) = " + << realBuf << "\n" ); if (failed.size()) { cmGeneratedFileStream ofs; - cmCTestLog(this->CTest, ERROR_MESSAGE, std::endl - << "The following tests FAILED:" << std::endl); + << "The following tests FAILED:" << std::endl); this->StartLogFile("TestsFailed", ofs); - + std::vector::iterator ftit; for(ftit = this->TestResults.begin(); - ftit != this->TestResults.end(); ++ftit) + ftit != this->TestResults.end(); ++ftit) { if ( ftit->Status != cmCTestTestHandler::COMPLETED ) { ofs << ftit->TestCount << ":" << ftit->Name << std::endl; cmCTestLog(this->CTest, HANDLER_OUTPUT, "\t" << std::setw(3) - << ftit->TestCount << " - " << ftit->Name.c_str() << " (" - << this->GetTestStatus(ftit->Status) << ")" << std::endl); + << ftit->TestCount << " - " + << ftit->Name.c_str() << " (" + << this->GetTestStatus(ftit->Status) << ")" + << std::endl); } } - } } @@ -584,6 +621,7 @@ int cmCTestTestHandler::ProcessHandler() { cmGeneratedFileStream xmlfile; if( !this->StartResultingXML( + (this->MemCheck ? cmCTest::PartMemCheck : cmCTest::PartTest), (this->MemCheck ? "DynamicAnalysis" : "Test"), xmlfile) ) { cmCTestLog(this->CTest, ERROR_MESSAGE, "Cannot create " @@ -611,334 +649,164 @@ int cmCTestTestHandler::ProcessHandler() } //---------------------------------------------------------------------- -void cmCTestTestHandler::ProcessOneTest(cmCTestTestProperties *it, - std::vector &passed, - std::vector &failed, - int cnt, int tmsize) +void cmCTestTestHandler::PrintLabelSummary() { - const std::string& testname = it->Name; - std::vector& args = it->Args; - cmCTestTestResult cres; - cres.Properties = &*it; - cres.ExecutionTime = 0; - cres.ReturnValue = -1; - cres.Status = cmCTestTestHandler::NOT_RUN; - cres.TestCount = cnt; - cres.Name = testname; - cres.Path = it->Directory.c_str(); - - cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3) << cnt << "/"); - cmCTestLog(this->CTest, HANDLER_OUTPUT, std::setw(3) << tmsize << " "); - if ( this->MemCheck ) - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Memory Check"); + cmCTestTestHandler::ListOfTests::iterator it = this->TestList.begin(); + cmCTestTestHandler::TestResultsVector::iterator ri = + this->TestResults.begin(); + std::map labelTimes; + std::set labels; + // initialize maps + std::string::size_type maxlen = 0; + for(; it != this->TestList.end(); ++it) + { + cmCTestTestProperties& p = *it; + if(p.Labels.size() != 0) + { + for(std::vector::iterator l = p.Labels.begin(); + l != p.Labels.end(); ++l) + { + if((*l).size() > maxlen) + { + maxlen = (*l).size(); + } + labels.insert(*l); + labelTimes[*l] = 0; + } + } } - else + it = this->TestList.begin(); + ri = this->TestResults.begin(); + // fill maps + for(; it != this->TestList.end(); ++it, ++ri) { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Testing"); + cmCTestTestProperties& p = *it; + cmCTestTestResult &result = *ri; + if(p.Labels.size() != 0) + { + for(std::vector::iterator l = p.Labels.begin(); + l != p.Labels.end(); ++l) + { + labelTimes[*l] += result.ExecutionTime; + } + } } - cmCTestLog(this->CTest, HANDLER_OUTPUT, " "); - std::string outname = testname; - outname.resize(30, ' '); - *this->LogFile << cnt << "/" << tmsize << " Testing: " << testname - << std::endl; - - if ( this->CTest->GetShowOnly() ) + // now print times + if(labels.size()) { - cmCTestLog(this->CTest, HANDLER_OUTPUT, outname.c_str() << std::endl); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "\nLabel Time Summary:"); } - else + for(std::set::const_iterator i = labels.begin(); + i != labels.end(); ++i) { - cmCTestLog(this->CTest, HANDLER_OUTPUT, outname.c_str()); + std::string label = *i; + label.resize(maxlen +3, ' '); + char buf[1024]; + sprintf(buf, "%6.2f sec", labelTimes[*i]); + cmCTestLog(this->CTest, HANDLER_OUTPUT, "\n" + << label << " = " << buf ); + if ( this->LogFile ) + { + *this->LogFile << "\n" << *i << " = " + << buf << "\n"; + } } - - cmCTestLog(this->CTest, DEBUG, "Testing " << args[0].c_str() << " ... "); - // find the test executable - std::string actualCommand = this->FindTheExecutable(args[1].c_str()); - std::string testCommand - = cmSystemTools::ConvertToOutputPath(actualCommand.c_str()); - - // continue if we did not find the executable - if (testCommand == "") - { - *this->LogFile << "Unable to find executable: " << args[1].c_str() - << std::endl; - cmCTestLog(this->CTest, ERROR_MESSAGE, "Unable to find executable: " - << args[1].c_str() << std::endl); - cres.Output = "Unable to find executable: " + args[1]; - if ( !this->CTest->GetShowOnly() ) + if(labels.size()) + { + if(this->LogFile) { - cres.FullCommandLine = actualCommand; - this->TestResults.push_back( cres ); - failed.push_back(testname); - return; + *this->LogFile << "\n"; } + cmCTestLog(this->CTest, HANDLER_OUTPUT, "\n"); } - - // add the arguments - std::vector::const_iterator j = args.begin(); - ++j; - ++j; - std::vector arguments; - this->GenerateTestCommand(arguments); - arguments.push_back(actualCommand.c_str()); - for(;j != args.end(); ++j) - { - testCommand += " "; - testCommand += cmSystemTools::EscapeSpaces(j->c_str()); - arguments.push_back(j->c_str()); - } - arguments.push_back(0); - - /** - * Run an executable command and put the stdout in output. - */ - std::string output; - int retVal = 0; - - - cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, std::endl - << (this->MemCheck?"MemCheck":"Test") - << " command: " << testCommand - << std::endl); - *this->LogFile << cnt << "/" << tmsize - << " Test: " << testname.c_str() << std::endl; - *this->LogFile << "Command: "; - std::vector::size_type ll; - for ( ll = 0; ll < arguments.size()-1; ll ++ ) - { - *this->LogFile << "\"" << arguments[ll] << "\" "; - } - *this->LogFile - << std::endl - << "Directory: " << it->Directory << std::endl - << "\"" << testname.c_str() << "\" start time: " - << this->CTest->CurrentTime() << std::endl - << "Output:" << std::endl - << "----------------------------------------------------------" - << std::endl; - int res = 0; - double clock_start, clock_finish; - clock_start = cmSystemTools::GetTime(); - - if ( !this->CTest->GetShowOnly() ) + +} + +//---------------------------------------------------------------------- +void cmCTestTestHandler::CheckLabelFilterInclude(cmCTestTestProperties& it) +{ + // if not using Labels to filter then return + if (!this->UseIncludeLabelRegExpFlag ) { - res = this->CTest->RunTest(arguments, &output, &retVal, this->LogFile, - it->Timeout); + return; } - - clock_finish = cmSystemTools::GetTime(); - - if ( this->LogFile ) - { - double ttime = clock_finish - clock_start; - int hours = static_cast(ttime / (60 * 60)); - int minutes = static_cast(ttime / 60) % 60; - int seconds = static_cast(ttime) % 60; - char buffer[100]; - sprintf(buffer, "%02d:%02d:%02d", hours, minutes, seconds); - *this->LogFile - << "----------------------------------------------------------" - << std::endl - << "\"" << testname.c_str() << "\" end time: " - << this->CTest->CurrentTime() << std::endl - << "\"" << testname.c_str() << "\" time elapsed: " - << buffer << std::endl - << "----------------------------------------------------------" - << std::endl << std::endl; + // if there are no labels and we are filtering by labels + // then exclude the test as it does not have the label + if(it.Labels.size() == 0 ) + { + it.IsInBasedOnREOptions = false; + return; } - - cres.ExecutionTime = (double)(clock_finish - clock_start); - cres.FullCommandLine = testCommand; - std::string reason; - if ( !this->CTest->GetShowOnly() ) - { - bool testFailed = false; - std::vector >::iterator passIt; - bool forceFail = false; - if ( it->RequiredRegularExpressions.size() > 0 ) - { - bool found = false; - for ( passIt = it->RequiredRegularExpressions.begin(); - passIt != it->RequiredRegularExpressions.end(); - ++ passIt ) - { - if ( passIt->first.find(output.c_str()) ) - { - found = true; - } - } - if ( !found ) - { - reason = "Required regular expression not found."; - reason += "Regex=["; - for ( passIt = it->RequiredRegularExpressions.begin(); - passIt != it->RequiredRegularExpressions.end(); - ++ passIt ) - { - reason += passIt->second; - reason += "\n"; - } - reason += "]"; - forceFail = true; - } - } - if ( it->ErrorRegularExpressions.size() > 0 ) - { - for ( passIt = it->ErrorRegularExpressions.begin(); - passIt != it->ErrorRegularExpressions.end(); - ++ passIt ) - { - if ( passIt->first.find(output.c_str()) ) - { - reason = "Error regular expression found in output."; - reason += " Regex=["; - reason += passIt->second; - reason += "]"; - forceFail = true; - } - } - } - - if (res == cmsysProcess_State_Exited && - (retVal == 0 || it->RequiredRegularExpressions.size()) && - !forceFail) - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, " Passed"); - if ( it->WillFail ) - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, " - But it should fail!"); - cres.Status = cmCTestTestHandler::FAILED; - testFailed = true; - } - else - { - cres.Status = cmCTestTestHandler::COMPLETED; - } - cmCTestLog(this->CTest, HANDLER_OUTPUT, std::endl); - } - else - { - testFailed = true; - - cres.Status = cmCTestTestHandler::FAILED; - if ( res == cmsysProcess_State_Expired ) - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Timeout" << std::endl); - cres.Status = cmCTestTestHandler::TIMEOUT; - } - else if ( res == cmsysProcess_State_Exception ) - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Exception: "); - switch ( retVal ) - { - case cmsysProcess_Exception_Fault: - cmCTestLog(this->CTest, HANDLER_OUTPUT, "SegFault"); - cres.Status = cmCTestTestHandler::SEGFAULT; - break; - case cmsysProcess_Exception_Illegal: - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Illegal"); - cres.Status = cmCTestTestHandler::ILLEGAL; - break; - case cmsysProcess_Exception_Interrupt: - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Interrupt"); - cres.Status = cmCTestTestHandler::INTERRUPT; - break; - case cmsysProcess_Exception_Numerical: - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Numerical"); - cres.Status = cmCTestTestHandler::NUMERICAL; - break; - default: - cmCTestLog(this->CTest, HANDLER_OUTPUT, "Other"); - cres.Status = cmCTestTestHandler::OTHER_FAULT; - } - cmCTestLog(this->CTest, HANDLER_OUTPUT, std::endl); - } - else if ( res == cmsysProcess_State_Error ) - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Bad command " << res - << std::endl); - cres.Status = cmCTestTestHandler::BAD_COMMAND; - } - else - { - // Force fail will also be here? - cmCTestLog(this->CTest, HANDLER_OUTPUT, "***Failed " << reason); - if ( it->WillFail ) - { - cres.Status = cmCTestTestHandler::COMPLETED; - cmCTestLog(this->CTest, HANDLER_OUTPUT, " - supposed to fail"); - testFailed = false; - } - cmCTestLog(this->CTest, HANDLER_OUTPUT, std::endl); - } - } - if ( testFailed ) - { - failed.push_back(testname); - } - else - { - passed.push_back(testname); - } - if (!output.empty() && output.find("::iterator l = it.Labels.begin(); + l != it.Labels.end(); ++l) + { + if(this->IncludeLabelRegularExpression.find(*l)) { - if (this->DartStuff.find(output.c_str())) - { - std::string dartString = this->DartStuff.match(1); - cmSystemTools::ReplaceString(output, dartString.c_str(),""); - cres.RegressionImages - = this->GenerateRegressionImages(dartString); - } + found = true; } } + // if no match was found, exclude the test + if(!found) + { + it.IsInBasedOnREOptions = false; + } +} - // if this is doing MemCheck then all the output needs to be put into - // Output since that it what is parsed to by cmCTestMemCheckHandler - if(!this->MemCheck) + +//---------------------------------------------------------------------- +void cmCTestTestHandler::CheckLabelFilterExclude(cmCTestTestProperties& it) +{ + // if not using Labels to filter then return + if (!this->UseExcludeLabelRegExpFlag ) { - if ( cres.Status == cmCTestTestHandler::COMPLETED ) - { - this->CleanTestOutput(output, static_cast - (this->CustomMaximumPassedTestOutputSize)); - } - else + return; + } + // if there are no labels and we are excluding by labels + // then do nothing as a no label can not be a match + if(it.Labels.size() == 0 ) + { + return; + } + // check to see if the label regular expression matches + bool found = false; // assume it does not match + // loop over all labels and look for match + for(std::vector::iterator l = it.Labels.begin(); + l != it.Labels.end(); ++l) + { + if(this->ExcludeLabelRegularExpression.find(*l)) { - this->CleanTestOutput(output, static_cast - (this->CustomMaximumFailedTestOutputSize)); + found = true; } } - - cres.Output = output; - cres.ReturnValue = retVal; - cres.CompletionStatus = "Completed"; - this->TestResults.push_back( cres ); + // if match was found, exclude the test + if(found) + { + it.IsInBasedOnREOptions = false; + } } //---------------------------------------------------------------------- -void cmCTestTestHandler::ProcessDirectory(std::vector &passed, - std::vector &failed) +void cmCTestTestHandler::CheckLabelFilter(cmCTestTestProperties& it) { - std::string current_dir = cmSystemTools::GetCurrentWorkingDirectory(); - this->TestList.clear(); + this->CheckLabelFilterInclude(it); + this->CheckLabelFilterExclude(it); +} +//---------------------------------------------------------------------- +void cmCTestTestHandler::ComputeTestList() +{ + this->TestList.clear(); // clear list of test this->GetListOfTests(); cmCTestTestHandler::ListOfTests::size_type tmsize = this->TestList.size(); - - this->StartTest = this->CTest->CurrentTime(); - this->StartTestTime = static_cast(cmSystemTools::GetTime()); - double elapsed_time_start = cmSystemTools::GetTime(); - - *this->LogFile << "Start testing: " << this->StartTest << std::endl - << "----------------------------------------------------------" - << std::endl; - // how many tests are in based on RegExp? int inREcnt = 0; cmCTestTestHandler::ListOfTests::iterator it; for ( it = this->TestList.begin(); it != this->TestList.end(); it ++ ) { + this->CheckLabelFilter(*it); if (it->IsInBasedOnREOptions) { inREcnt ++; @@ -953,10 +821,11 @@ void cmCTestTestHandler::ProcessDirectory(std::vector &passed, { this->ExpandTestsToRunInformation(inREcnt); } - + // Now create a final list of tests to run int cnt = 0; inREcnt = 0; - std::string last_directory = ""; + std::string last_directory = ""; + ListOfTests finalList; for ( it = this->TestList.begin(); it != this->TestList.end(); it ++ ) { cnt ++; @@ -965,23 +834,6 @@ void cmCTestTestHandler::ProcessDirectory(std::vector &passed, inREcnt++; } - // if we are out of time then skip this test, we leave two minutes - // to submit results - if (this->CTest->GetRemainingTimeAllowed() - 120 <= 0) - { - continue; - } - - if (!(last_directory == it->Directory)) - { - cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, - "Changing directory into " << it->Directory.c_str() << "\n"); - *this->LogFile << "Changing directory into: " << it->Directory.c_str() - << std::endl; - last_directory = it->Directory; - cmSystemTools::ChangeDirectory(it->Directory.c_str()); - } - if (this->UseUnion) { // if it is not in the list and not in the regexp then skip @@ -1003,24 +855,219 @@ void cmCTestTestHandler::ProcessDirectory(std::vector &passed, continue; } } - - // process this one test - this->ProcessOneTest(&(*it), passed, failed, cnt, - static_cast(tmsize)); + it->Index = cnt; // save the index into the test list for this test + finalList.push_back(*it); + } + // Save the total number of tests before exclusions + this->TotalNumberOfTests = this->TestList.size(); + // Set the TestList to the final list of all test + this->TestList = finalList; + std::string::size_type max = this->CTest->GetMaxTestNameWidth(); + for (it = this->TestList.begin(); + it != this->TestList.end(); it ++ ) + { + cmCTestTestProperties& p = *it; + if(max < p.Name.size()) + { + max = p.Name.size(); + } + } + if(static_cast(this->CTest->GetMaxTestNameWidth()) + != max) + { + this->CTest->SetMaxTestNameWidth(static_cast(max)); + } +} + +bool cmCTestTestHandler::GetValue(const char* tag, + int& value, + std::ifstream& fin) +{ + std::string line; + bool ret = true; + cmSystemTools::GetLineFromStream(fin, line); + if(line == tag) + { + fin >> value; + ret = cmSystemTools::GetLineFromStream(fin, line); // read blank line } + else + { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "parse error: missing tag: " + << tag << " found [" << line << "]" << std::endl); + ret = false; + } + return ret; +} +bool cmCTestTestHandler::GetValue(const char* tag, + double& value, + std::ifstream& fin) +{ + std::string line; + cmSystemTools::GetLineFromStream(fin, line); + bool ret = true; + if(line == tag) + { + fin >> value; + ret = cmSystemTools::GetLineFromStream(fin, line); // read blank line + } + else + { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "parse error: missing tag: " + << tag << " found [" << line << "]" << std::endl); + ret = false; + } + return ret; +} + +bool cmCTestTestHandler::GetValue(const char* tag, + bool& value, + std::ifstream& fin) +{ + std::string line; + cmSystemTools::GetLineFromStream(fin, line); + bool ret = true; + if(line == tag) + { +#ifdef __HAIKU__ + int tmp = 0; + fin >> tmp; + value = false; + if(tmp) + { + value = true; + } +#else + fin >> value; +#endif + ret = cmSystemTools::GetLineFromStream(fin, line); // read blank line + } + else + { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "parse error: missing tag: " + << tag << " found [" << line << "]" << std::endl); + ret = false; + } + return ret; +} + +bool cmCTestTestHandler::GetValue(const char* tag, + size_t& value, + std::ifstream& fin) +{ + std::string line; + cmSystemTools::GetLineFromStream(fin, line); + bool ret = true; + if(line == tag) + { + fin >> value; + ret = cmSystemTools::GetLineFromStream(fin, line); // read blank line + } + else + { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "parse error: missing tag: " + << tag << " found [" << line.c_str() << "]" << std::endl); + ret = false; + } + return ret; +} + +bool cmCTestTestHandler::GetValue(const char* tag, + std::string& value, + std::ifstream& fin) +{ + std::string line; + cmSystemTools::GetLineFromStream(fin, line); + bool ret = true; + if(line == tag) + { + ret = cmSystemTools::GetLineFromStream(fin, value); + } + else + { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "parse error: missing tag: " + << tag << " found [" << line << "]" << std::endl); + ret = false; + } + return ret; +} + +//--------------------------------------------------------------------- +void cmCTestTestHandler::ProcessDirectory(std::vector &passed, + std::vector &failed) +{ + this->ComputeTestList(); + this->StartTest = this->CTest->CurrentTime(); + this->StartTestTime = static_cast(cmSystemTools::GetTime()); + double elapsed_time_start = cmSystemTools::GetTime(); + + cmCTestMultiProcessHandler* parallel = this->CTest->GetBatchJobs() ? + new cmCTestBatchTestHandler : new cmCTestMultiProcessHandler; + parallel->SetCTest(this->CTest); + parallel->SetParallelLevel(this->CTest->GetParallelLevel()); + parallel->SetTestHandler(this); + + *this->LogFile << "Start testing: " + << this->CTest->CurrentTime() << std::endl + << "----------------------------------------------------------" + << std::endl; + + cmCTestMultiProcessHandler::TestMap tests; + cmCTestMultiProcessHandler::PropertiesMap properties; + + for (ListOfTests::iterator it = this->TestList.begin(); + it != this->TestList.end(); ++it) + { + cmCTestTestProperties& p = *it; + cmCTestMultiProcessHandler::TestSet depends; + + if(p.Depends.size()) + { + for(std::vector::iterator i = p.Depends.begin(); + i != p.Depends.end(); ++i) + { + for(ListOfTests::iterator it2 = this->TestList.begin(); + it2 != this->TestList.end(); ++it2) + { + if(it2->Name == *i) + { + depends.insert(it2->Index); + break; // break out of test loop as name can only match 1 + } + } + } + } + tests[it->Index] = depends; + properties[it->Index] = &*it; + } + parallel->SetTests(tests, properties); + parallel->SetPassFailVectors(&passed, &failed); + this->TestResults.clear(); + parallel->SetTestResults(&this->TestResults); + if(this->CTest->GetShowOnly()) + { + parallel->PrintTestList(); + } + else + { + parallel->RunTests(); + } + delete parallel; this->EndTest = this->CTest->CurrentTime(); this->EndTestTime = static_cast(cmSystemTools::GetTime()); this->ElapsedTestingTime = cmSystemTools::GetTime() - elapsed_time_start; - if ( this->LogFile ) - { - *this->LogFile << "End testing: " << this->EndTest << std::endl; - } - cmSystemTools::ChangeDirectory(current_dir.c_str()); + *this->LogFile << "End testing: " + << this->CTest->CurrentTime() << std::endl; } //---------------------------------------------------------------------- -void cmCTestTestHandler::GenerateTestCommand(std::vector&) +void cmCTestTestHandler::GenerateTestCommand(std::vector&) { } @@ -1032,7 +1079,7 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os) return; } - this->CTest->StartXML(os); + this->CTest->StartXML(os, this->AppendXML); os << "\n" << "\t" << this->StartTest << "\n" << "\t" << this->StartTestTime << "\n" @@ -1042,7 +1089,7 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os) { cmCTestTestResult *result = &this->TestResults[cc]; std::string testPath = result->Path + "/" + result->Name; - os << "\t\t" << cmCTest::MakeXMLSafe( + os << "\t\t" << cmXMLSafe( this->CTest->GetShortPathToFile(testPath.c_str())) << "" << std::endl; } @@ -1050,30 +1097,8 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os) for ( cc = 0; cc < this->TestResults.size(); cc ++ ) { cmCTestTestResult *result = &this->TestResults[cc]; - os << "\tStatus == cmCTestTestHandler::COMPLETED ) - { - os << "passed"; - } - else if ( result->Status == cmCTestTestHandler::NOT_RUN ) - { - os << "notrun"; - } - else - { - os << "failed"; - } - std::string testPath = result->Path + "/" + result->Name; - os << "\">\n" - << "\t\t" << cmCTest::MakeXMLSafe(result->Name) << "\n" - << "\t\t" << cmCTest::MakeXMLSafe( - this->CTest->GetShortPathToFile(result->Path.c_str())) << "\n" - << "\t\t" << cmCTest::MakeXMLSafe( - this->CTest->GetShortPathToFile(testPath.c_str())) << "\n" - << "\t\t" - << cmCTest::MakeXMLSafe(result->FullCommandLine) - << "\n" - << "\t\t" << std::endl; + this->WriteTestResultHeader(os, result); + os << "\t\t" << std::endl; if ( result->Status != cmCTestTestHandler::NOT_RUN ) { if ( result->Status != cmCTestTestHandler::COMPLETED || @@ -1081,26 +1106,44 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os) { os << "\t\t\t" - << this->GetTestStatus(result->Status) << "" + << cmXMLSafe(this->GetTestStatus(result->Status)) + << "" "\n" << "\t\t\t" - << result->ReturnValue << "" + << result->ReturnValue + << "" << std::endl; } os << result->RegressionImages; os << "\t\t\t" - << result->ExecutionTime << "\n"; + << result->ExecutionTime + << "\n"; + if(result->Reason.size()) + { + const char* reasonType = "Pass Reason"; + if(result->Status != cmCTestTestHandler::COMPLETED && + result->Status != cmCTestTestHandler::NOT_RUN) + { + reasonType = "Fail Reason"; + } + os << "\t\t\t" + << cmXMLSafe(result->Reason) + << "\n"; + } os << "\t\t\t" - << result->CompletionStatus << "\n"; + << cmXMLSafe(result->CompletionStatus) + << "\n"; } os << "\t\t\t" - << result->FullCommandLine << "\n"; + << cmXMLSafe(result->FullCommandLine) + << "\n"; std::map::iterator measureIt; for ( measureIt = result->Properties->Measurements.begin(); measureIt != result->Properties->Measurements.end(); @@ -1109,17 +1152,18 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os) os << "\t\t\tfirst.c_str() << "\">" - << measureIt->second.c_str() << "\n"; + << cmXMLSafe(measureIt->second) + << "\n"; } os << "\t\t\t\n" << "\t\t\t\t"; - os << cmCTest::MakeXMLSafe(result->Output); + os << cmXMLSafe(result->Output); os << "\n" << "\t\t\t\n" - << "\t\t\n" - << "\t" << std::endl; + << "\t\t\n"; + this->WriteTestResultFooter(os, result); } os << "\t" << this->EndTest << "\n" @@ -1131,6 +1175,55 @@ void cmCTestTestHandler::GenerateDartOutput(std::ostream& os) this->CTest->EndXML(os); } +//---------------------------------------------------------------------------- +void cmCTestTestHandler::WriteTestResultHeader(std::ostream& os, + cmCTestTestResult* result) +{ + os << "\tStatus == cmCTestTestHandler::COMPLETED ) + { + os << "passed"; + } + else if ( result->Status == cmCTestTestHandler::NOT_RUN ) + { + os << "notrun"; + } + else + { + os << "failed"; + } + std::string testPath = result->Path + "/" + result->Name; + os << "\">\n" + << "\t\t" << cmXMLSafe(result->Name) << "\n" + << "\t\t" << cmXMLSafe( + this->CTest->GetShortPathToFile(result->Path.c_str())) << "\n" + << "\t\t" << cmXMLSafe( + this->CTest->GetShortPathToFile(testPath.c_str())) << "\n" + << "\t\t" + << cmXMLSafe(result->FullCommandLine) + << "\n"; +} + +//---------------------------------------------------------------------------- +void cmCTestTestHandler::WriteTestResultFooter(std::ostream& os, + cmCTestTestResult* result) +{ + if(!result->Properties->Labels.empty()) + { + os << "\t\t\n"; + std::vector const& labels = result->Properties->Labels; + for(std::vector::const_iterator li = labels.begin(); + li != labels.end(); ++li) + { + os << "\t\t\t\n"; + } + os << "\t\t\n"; + } + + os + << "\t" << std::endl; +} + //---------------------------------------------------------------------- int cmCTestTestHandler::ExecuteCommands(std::vector& vec) { @@ -1260,7 +1353,8 @@ std::string cmCTestTestHandler attemptedConfigs, filepath,filename); - // even if a fullpath was specified also try it relative to the current directory + // even if a fullpath was specified also try it relative to the current + // directory if (filepath.size() && filepath[0] == '/') { std::string localfilepath = filepath.substr(1,filepath.size()-1); @@ -1351,6 +1445,16 @@ std::string cmCTestTestHandler //---------------------------------------------------------------------- void cmCTestTestHandler::GetListOfTests() { + if ( !this->IncludeLabelRegExp.empty() ) + { + this->IncludeLabelRegularExpression. + compile(this->IncludeLabelRegExp.c_str()); + } + if ( !this->IncludeLabelRegExp.empty() ) + { + this->ExcludeLabelRegularExpression. + compile(this->ExcludeLabelRegExp.c_str()); + } if ( !this->IncludeRegExp.empty() ) { this->IncludeTestsRegularExpression.compile(this->IncludeRegExp.c_str()); @@ -1365,7 +1469,6 @@ void cmCTestTestHandler::GetListOfTests() cmGlobalGenerator gg; gg.SetCMakeInstance(&cm); std::auto_ptr lg(gg.CreateLocalGenerator()); - lg->SetGlobalGenerator(&gg); cmMakefile *mf = lg->GetMakefile(); mf->AddDefinition("CTEST_CONFIGURATION_TYPE", this->CTest->GetConfigType().c_str()); @@ -1459,7 +1562,7 @@ const char* cmCTestTestHandler::GetTestStatus(int status) } //---------------------------------------------------------------------- -void cmCTestTestHandler::ExpandTestsToRunInformation(int numTests) +void cmCTestTestHandler::ExpandTestsToRunInformation(size_t numTests) { if (this->TestsToRunString.empty()) { @@ -1500,7 +1603,7 @@ void cmCTestTestHandler::ExpandTestsToRunInformation(int numTests) // if end isnot specified then we assume we end with the last test if(end == -1) { - end = numTests; + end = static_cast(numTests); } // if the stride wasn't specified then it defaults to 1 @@ -1877,6 +1980,14 @@ bool cmCTestTestHandler::SetTestsProperties( { rtit->Timeout = atof(val.c_str()); } + if ( key == "COST" ) + { + rtit->Cost = atof(val.c_str()); + } + if ( key == "RUN_SERIAL" ) + { + rtit->RunSerial = cmSystemTools::IsOn(val.c_str()); + } if ( key == "FAIL_REGULAR_EXPRESSION" ) { std::vector lval; @@ -1890,6 +2001,45 @@ bool cmCTestTestHandler::SetTestsProperties( std::string(crit->c_str()))); } } + if ( key == "PROCESSORS" ) + { + rtit->Processors = atoi(val.c_str()); + if(rtit->Processors < 1) + { + rtit->Processors = 1; + } + } + if ( key == "DEPENDS" ) + { + std::vector lval; + cmSystemTools::ExpandListArgument(val.c_str(), lval); + std::vector::iterator crit; + for ( crit = lval.begin(); crit != lval.end(); ++ crit ) + { + rtit->Depends.push_back(*crit); + } + } + if ( key == "ENVIRONMENT" ) + { + std::vector lval; + cmSystemTools::ExpandListArgument(val.c_str(), lval); + std::vector::iterator crit; + for ( crit = lval.begin(); crit != lval.end(); ++ crit ) + { + rtit->Environment.push_back(*crit); + } + } + if ( key == "LABELS" ) + { + std::vector lval; + cmSystemTools::ExpandListArgument(val.c_str(), lval); + std::vector::iterator crit; + for ( crit = lval.begin(); crit != lval.end(); ++ crit ) + { + rtit->Labels.push_back(*crit); + } + + } if ( key == "MEASUREMENT" ) { size_t pos = val.find_first_of("="); @@ -1985,7 +2135,10 @@ bool cmCTestTestHandler::AddTest(const std::vector& args) test.IsInBasedOnREOptions = true; test.WillFail = false; + test.RunSerial = false; test.Timeout = 0; + test.Cost = 0; + test.Processors = 1; if (this->UseIncludeRegExpFlag && !this->IncludeTestsRegularExpression.find(testname.c_str())) { diff --git a/Source/CTest/cmCTestTestHandler.h b/Source/CTest/cmCTestTestHandler.h old mode 100755 new mode 100644 index e20b3d0ed..ceb502084 --- a/Source/CTest/cmCTestTestHandler.h +++ b/Source/CTest/cmCTestTestHandler.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestTestHandler.h,v $ - Language: C++ - Date: $Date: 2008-01-30 16:17:36 $ - Version: $Revision: 1.27 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestTestHandler_h #define cmCTestTestHandler_h @@ -30,6 +25,9 @@ class cmMakefile; */ class cmCTestTestHandler : public cmCTestGenericHandler { + friend class cmCTestRunTest; + friend class cmCTestMultiProcessHandler; + friend class cmCTestBatchTestHandler; public: cmTypeMacro(cmCTestTestHandler, cmCTestGenericHandler); @@ -57,6 +55,8 @@ public: void SetIncludeRegExp(const char *); void SetExcludeRegExp(const char *); + void SetMaxIndex(int n) {this->MaxIndex = n;} + int GetMaxIndex() {return this->MaxIndex;} ///! pass the -I argument down void SetTestsToRunInformation(const char*); @@ -75,11 +75,16 @@ public: void Initialize(); + // NOTE: This struct is Saved/Restored + // in cmCTestTestHandler, if you add to this class + // then you must add the new members to that code or + // ctest -j N will break for that feature struct cmCTestTestProperties { cmStdString Name; cmStdString Directory; std::vector Args; + std::vector Depends; std::vector > ErrorRegularExpressions; std::vector Measurements; bool IsInBasedOnREOptions; bool WillFail; + float Cost; + bool RunSerial; double Timeout; + int Index; + //Requested number of process slots + int Processors; + std::vector Environment; + std::vector Labels; }; struct cmCTestTestResult { std::string Name; std::string Path; + std::string Reason; std::string FullCommandLine; double ExecutionTime; int ReturnValue; @@ -119,12 +132,17 @@ public: std::vector &extraPaths, std::vector &failed); + typedef std::vector ListOfTests; protected: + // comput a final test list virtual int PreProcessHandler(); virtual int PostProcessHandler(); - virtual void GenerateTestCommand(std::vector& args); + virtual void GenerateTestCommand(std::vector& args); int ExecuteCommands(std::vector& vec); + void WriteTestResultHeader(std::ostream& os, cmCTestTestResult* result); + void WriteTestResultFooter(std::ostream& os, cmCTestTestResult* result); + //! Clean test output to specified length bool CleanTestOutput(std::string& output, size_t length); @@ -141,18 +159,8 @@ protected: bool MemCheck; int CustomMaximumPassedTestOutputSize; int CustomMaximumFailedTestOutputSize; -protected: - /** - * Run one test - */ - virtual void ProcessOneTest(cmCTestTestProperties *props, - std::vector &passed, - std::vector &failed, - int count, int tmsize); - - - -private: + int MaxIndex; +public: enum { // Program statuses NOT_RUN = 0, TIMEOUT, @@ -166,50 +174,79 @@ private: COMPLETED }; - +private: /** * Generate the Dart compatible output */ virtual void GenerateDartOutput(std::ostream& os); + void PrintLabelSummary(); /** * Run the tests for a directory and any subdirectories */ void ProcessDirectory(std::vector &passed, std::vector &failed); - typedef std::vector ListOfTests; /** * Get the list of tests in directory and subdirectories. */ void GetListOfTests(); - + // compute the lists of tests that will actually run + // based on union regex and -I stuff + void ComputeTestList(); + + bool GetValue(const char* tag, + std::string& value, + std::ifstream& fin); + bool GetValue(const char* tag, + int& value, + std::ifstream& fin); + bool GetValue(const char* tag, + size_t& value, + std::ifstream& fin); + bool GetValue(const char* tag, + bool& value, + std::ifstream& fin); + bool GetValue(const char* tag, + double& value, + std::ifstream& fin); /** * Find the executable for a test */ std::string FindTheExecutable(const char *exe); const char* GetTestStatus(int status); - void ExpandTestsToRunInformation(int numPossibleTests); + void ExpandTestsToRunInformation(size_t numPossibleTests); std::vector CustomPreTest; std::vector CustomPostTest; std::vector TestsToRun; + bool UseIncludeLabelRegExpFlag; + bool UseExcludeLabelRegExpFlag; bool UseIncludeRegExpFlag; bool UseExcludeRegExpFlag; bool UseExcludeRegExpFirst; + std::string IncludeLabelRegExp; + std::string ExcludeLabelRegExp; std::string IncludeRegExp; std::string ExcludeRegExp; + cmsys::RegularExpression IncludeLabelRegularExpression; + cmsys::RegularExpression ExcludeLabelRegularExpression; cmsys::RegularExpression IncludeTestsRegularExpression; cmsys::RegularExpression ExcludeTestsRegularExpression; std::string GenerateRegressionImages(const std::string& xml); + cmsys::RegularExpression DartStuff1; + void CheckLabelFilter(cmCTestTestProperties& it); + void CheckLabelFilterExclude(cmCTestTestProperties& it); + void CheckLabelFilterInclude(cmCTestTestProperties& it); std::string TestsToRunString; bool UseUnion; ListOfTests TestList; + size_t TotalNumberOfTests; cmsys::RegularExpression DartStuff; std::ostream* LogFile; diff --git a/Source/CTest/cmCTestUpdateCommand.cxx b/Source/CTest/cmCTestUpdateCommand.cxx old mode 100755 new mode 100644 index 2ba292833..6dbe81580 --- a/Source/CTest/cmCTestUpdateCommand.cxx +++ b/Source/CTest/cmCTestUpdateCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestUpdateCommand.cxx,v $ - Language: C++ - Date: $Date: 2006-07-11 19:58:07 $ - Version: $Revision: 1.15 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestUpdateCommand.h" #include "cmCTest.h" @@ -48,6 +43,18 @@ cmCTestGenericHandler* cmCTestUpdateCommand::InitializeHandler() "SVNCommand", "CTEST_SVN_COMMAND"); this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, "SVNUpdateOptions", "CTEST_SVN_UPDATE_OPTIONS"); + this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, + "BZRCommand", "CTEST_BZR_COMMAND"); + this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, + "BZRUpdateOptions", "CTEST_BZR_UPDATE_OPTIONS"); + this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, + "GITCommand", "CTEST_GIT_COMMAND"); + this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, + "GITUpdateOptions", "CTEST_GIT_UPDATE_OPTIONS"); + this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, + "HGCommand", "CTEST_HG_COMMAND"); + this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, + "HGUpdateOptions", "CTEST_HG_UPDATE_OPTIONS"); const char* initialCheckoutCommand = this->Makefile->GetDefinition("CTEST_CHECKOUT_COMMAND"); diff --git a/Source/CTest/cmCTestUpdateCommand.h b/Source/CTest/cmCTestUpdateCommand.h old mode 100755 new mode 100644 index dc07a4061..7f369283d --- a/Source/CTest/cmCTestUpdateCommand.h +++ b/Source/CTest/cmCTestUpdateCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestUpdateCommand.h,v $ - Language: C++ - Date: $Date: 2008-05-15 19:40:00 $ - Version: $Revision: 1.5.12.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestUpdateCommand_h #define cmCTestUpdateCommand_h @@ -51,7 +46,7 @@ public: */ virtual const char* GetTerseDocumentation() { - return "Updates the repository."; + return "Update the work tree from version control."; } /** @@ -62,8 +57,10 @@ public: return " ctest_update([SOURCE source] [RETURN_VALUE res])\n" "Updates the given source directory and stores results in Update.xml. " - "The second argument is a variable that will hold the number of files " - "modified. If there is a problem, the variable will be -1."; + "If no SOURCE is given, the CTEST_SOURCE_DIRECTORY variable is used. " + "The RETURN_VALUE option specifies a variable in which to store the " + "result, which is the number of files updated or -1 on error." + ; } cmTypeMacro(cmCTestUpdateCommand, cmCTestHandlerCommand); diff --git a/Source/CTest/cmCTestUpdateHandler.cxx b/Source/CTest/cmCTestUpdateHandler.cxx old mode 100755 new mode 100644 index 0b3e2d949..cd2f6613f --- a/Source/CTest/cmCTestUpdateHandler.cxx +++ b/Source/CTest/cmCTestUpdateHandler.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestUpdateHandler.cxx,v $ - Language: C++ - Date: $Date: 2009-03-23 17:58:49 $ - Version: $Revision: 1.41.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCTestUpdateHandler.h" @@ -25,6 +20,16 @@ #include "cmVersion.h" #include "cmGeneratedFileStream.h" #include "cmXMLParser.h" +#include "cmXMLSafe.h" + +#include "cmCTestVC.h" +#include "cmCTestCVS.h" +#include "cmCTestSVN.h" +#include "cmCTestBZR.h" +#include "cmCTestGIT.h" +#include "cmCTestHG.h" + +#include //#include #include @@ -43,7 +48,10 @@ static const char* cmCTestUpdateHandlerUpdateStrings[] = { "Unknown", "CVS", - "SVN" + "SVN", + "BZR", + "GIT", + "HG" }; static const char* cmCTestUpdateHandlerUpdateToString(int type) @@ -56,130 +64,6 @@ static const char* cmCTestUpdateHandlerUpdateToString(int type) return cmCTestUpdateHandlerUpdateStrings[type]; } -//---------------------------------------------------------------------- -//********************************************************************** -class cmCTestUpdateHandlerSVNXMLParser : public cmXMLParser -{ -public: - struct t_CommitLog - { - int Revision; - std::string Author; - std::string Date; - std::string Message; - }; - cmCTestUpdateHandlerSVNXMLParser(cmCTestUpdateHandler* up) - : cmXMLParser(), UpdateHandler(up), MinRevision(-1), MaxRevision(-1) - { - } - - int Parse(const char* str) - { - this->MinRevision = -1; - this->MaxRevision = -1; - int res = this->cmXMLParser::Parse(str); - if ( this->MinRevision == -1 || this->MaxRevision == -1 ) - { - return 0; - } - return res; - } - - typedef std::vector t_VectorOfCommits; - - t_VectorOfCommits* GetCommits() { return &this->Commits; } - int GetMinRevision() { return this->MinRevision; } - int GetMaxRevision() { return this->MaxRevision; } - -protected: - void StartElement(const char* name, const char** atts) - { - if ( strcmp(name, "logentry") == 0 ) - { - this->CommitLog = t_CommitLog(); - const char* rev = this->FindAttribute(atts, "revision"); - if ( rev) - { - this->CommitLog.Revision = atoi(rev); - if ( this->MinRevision < 0 || - this->MinRevision > this->CommitLog.Revision ) - { - this->MinRevision = this->CommitLog.Revision; - } - if ( this->MaxRevision < 0 || - this->MaxRevision < this->CommitLog.Revision ) - { - this->MaxRevision = this->CommitLog.Revision; - } - } - } - this->CharacterData.erase( - this->CharacterData.begin(), this->CharacterData.end()); - } - void EndElement(const char* name) - { - if ( strcmp(name, "logentry") == 0 ) - { - cmCTestLog(this->UpdateHandler->GetCTestInstance(), - HANDLER_VERBOSE_OUTPUT, - "\tRevision: " << this->CommitLog.Revision<< std::endl - << "\tAuthor: " << this->CommitLog.Author.c_str() << std::endl - << "\tDate: " << this->CommitLog.Date.c_str() << std::endl - << "\tMessage: " << this->CommitLog.Message.c_str() << std::endl); - this->Commits.push_back(this->CommitLog); - } - else if ( strcmp(name, "author") == 0 ) - { - this->CommitLog.Author.assign(&(*(this->CharacterData.begin())), - this->CharacterData.size()); - } - else if ( strcmp(name, "date") == 0 ) - { - this->CommitLog.Date.assign(&(*(this->CharacterData.begin())), - this->CharacterData.size()); - } - else if ( strcmp(name, "msg") == 0 ) - { - this->CommitLog.Message.assign(&(*(this->CharacterData.begin())), - this->CharacterData.size()); - } - this->CharacterData.erase(this->CharacterData.begin(), - this->CharacterData.end()); - } - void CharacterDataHandler(const char* data, int length) - { - this->CharacterData.insert(this->CharacterData.end(), data, data+length); - } - const char* FindAttribute( const char** atts, const char* attribute ) - { - if ( !atts || !attribute ) - { - return 0; - } - const char **atr = atts; - while ( *atr && **atr && **(atr+1) ) - { - if ( strcmp(*atr, attribute) == 0 ) - { - return *(atr+1); - } - atr+=2; - } - return 0; - } - -private: - std::vector CharacterData; - cmCTestUpdateHandler* UpdateHandler; - t_CommitLog CommitLog; - - t_VectorOfCommits Commits; - int MinRevision; - int MaxRevision; -}; -//********************************************************************** -//---------------------------------------------------------------------- - class cmCTestUpdateHandlerLocale { public: @@ -229,6 +113,8 @@ cmCTestUpdateHandler::cmCTestUpdateHandler() void cmCTestUpdateHandler::Initialize() { this->Superclass::Initialize(); + this->UpdateCommand = ""; + this->UpdateType = e_CVS; } //---------------------------------------------------------------------- @@ -248,6 +134,18 @@ int cmCTestUpdateHandler::DetermineType(const char* cmd, const char* type) { return cmCTestUpdateHandler::e_SVN; } + if ( stype.find("bzr") != std::string::npos ) + { + return cmCTestUpdateHandler::e_BZR; + } + if ( stype.find("git") != std::string::npos ) + { + return cmCTestUpdateHandler::e_GIT; + } + if ( stype.find("hg") != std::string::npos ) + { + return cmCTestUpdateHandler::e_HG; + } } else { @@ -262,20 +160,18 @@ int cmCTestUpdateHandler::DetermineType(const char* cmd, const char* type) { return cmCTestUpdateHandler::e_SVN; } - } - std::string sourceDirectory = this->GetOption("SourceDirectory"); - cmCTestLog(this->CTest, DEBUG, "Check directory: " - << sourceDirectory.c_str() << std::endl); - sourceDirectory += "/.svn"; - if ( cmSystemTools::FileExists(sourceDirectory.c_str()) ) - { - return cmCTestUpdateHandler::e_SVN; - } - sourceDirectory = this->GetOption("SourceDirectory"); - sourceDirectory += "/CVS"; - if ( cmSystemTools::FileExists(sourceDirectory.c_str()) ) - { - return cmCTestUpdateHandler::e_CVS; + if ( stype.find("bzr") != std::string::npos ) + { + return cmCTestUpdateHandler::e_BZR; + } + if ( stype.find("git") != std::string::npos ) + { + return cmCTestUpdateHandler::e_GIT; + } + if ( stype.find("hg") != std::string::npos ) + { + return cmCTestUpdateHandler::e_HG; + } } return cmCTestUpdateHandler::e_UNKNOWN; } @@ -285,20 +181,10 @@ int cmCTestUpdateHandler::DetermineType(const char* cmd, const char* type) //functions and commented... int cmCTestUpdateHandler::ProcessHandler() { - int count = 0; - int updateType = e_CVS; - std::string::size_type cc, kk; - bool updateProducedError = false; - std::string goutput; - std::string errors; - // Make sure VCS tool messages are in English so we can parse them. cmCTestUpdateHandlerLocale fixLocale; static_cast(fixLocale); - std::string checkoutErrorMessages; - int retVal = 0; - // Get source dir const char* sourceDirectory = this->GetOption("SourceDirectory"); if ( !sourceDirectory ) @@ -318,267 +204,47 @@ int cmCTestUpdateHandler::ProcessHandler() cmCTestLog(this->CTest, HANDLER_OUTPUT, "Updating the repository" << std::endl); - const char* initialCheckoutCommand = this->GetOption("InitialCheckout"); - if ( initialCheckoutCommand ) + // Make sure the source directory exists. + if(!this->InitialCheckout(ofs)) { - cmCTestLog(this->CTest, HANDLER_OUTPUT, - " First perform the initial checkout: " << initialCheckoutCommand - << std::endl); - cmStdString parent = cmSystemTools::GetParentDirectory(sourceDirectory); - if ( parent.empty() ) - { - cmCTestLog(this->CTest, ERROR_MESSAGE, - "Something went wrong when trying " - "to determine the parent directory of " << sourceDirectory - << std::endl); - return -1; - } - cmCTestLog(this->CTest, HANDLER_OUTPUT, - " Perform checkout in directory: " << parent.c_str() << std::endl); - if ( !cmSystemTools::MakeDirectory(parent.c_str()) ) - { - cmCTestLog(this->CTest, ERROR_MESSAGE, - "Cannot create parent directory: " << parent.c_str() - << " of the source directory: " << sourceDirectory << std::endl); - return -1; - } - ofs << "* Run initial checkout" << std::endl; - ofs << " Command: " << initialCheckoutCommand << std::endl; - cmCTestLog(this->CTest, DEBUG, " Before: " - << initialCheckoutCommand << std::endl); - bool retic = this->CTest->RunCommand(initialCheckoutCommand, &goutput, - &errors, &retVal, parent.c_str(), 0 /* Timeout */); - cmCTestLog(this->CTest, DEBUG, " After: " - << initialCheckoutCommand << std::endl); - ofs << " Output: " << goutput.c_str() << std::endl; - ofs << " Errors: " << errors.c_str() << std::endl; - if ( !retic || retVal ) - { - cmOStringStream ostr; - ostr << "Problem running initial checkout Output [" << goutput - << "] Errors [" << errors << "]"; - cmCTestLog(this->CTest, ERROR_MESSAGE, ostr.str().c_str() << std::endl); - checkoutErrorMessages += ostr.str(); - updateProducedError = true; - } - if(!this->CTest->InitializeFromCommand(this->Command)) - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, - " Fatal Error in initialize: " - << std::endl); - cmSystemTools::SetFatalErrorOccured(); - return -1; - } + return -1; } + cmCTestLog(this->CTest, HANDLER_OUTPUT, " Updating the repository: " << sourceDirectory << std::endl); - // Get update command - std::string updateCommand - = this->CTest->GetCTestConfiguration("UpdateCommand"); - if ( updateCommand.empty() ) - { - updateCommand = this->CTest->GetCTestConfiguration("CVSCommand"); - if ( updateCommand.empty() ) - { - updateCommand = this->CTest->GetCTestConfiguration("SVNCommand"); - if ( updateCommand.empty() ) - { - cmCTestLog(this->CTest, ERROR_MESSAGE, - "Cannot find CVSCommand, SVNCommand, or UpdateCommand key in the " - "DartConfiguration.tcl" << std::endl); - return -1; - } - else - { - updateType = e_SVN; - } - } - else - { - updateType = e_CVS; - } - } - else + if(!this->SelectVCS()) { - updateType = this->DetermineType(updateCommand.c_str(), - this->CTest->GetCTestConfiguration("UpdateType").c_str()); + return -1; } cmCTestLog(this->CTest, HANDLER_OUTPUT, " Use " - << cmCTestUpdateHandlerUpdateToString(updateType) << " repository type" + << cmCTestUpdateHandlerUpdateToString(this->UpdateType) + << " repository type" << std::endl;); - // And update options - std::string updateOptions - = this->CTest->GetCTestConfiguration("UpdateOptions"); - if ( updateOptions.empty() ) - { - switch (updateType) - { - case cmCTestUpdateHandler::e_CVS: - updateOptions = this->CTest->GetCTestConfiguration("CVSUpdateOptions"); - if ( updateOptions.empty() ) - { - updateOptions = "-dP"; - } - break; - case cmCTestUpdateHandler::e_SVN: - updateOptions = this->CTest->GetCTestConfiguration("SVNUpdateOptions"); - break; - } - } - - // Get update time - std::string extra_update_opts; - if ( this->CTest->GetTestModel() == cmCTest::NIGHTLY ) - { - struct tm* t = this->CTest->GetNightlyTime( - this->CTest->GetCTestConfiguration("NightlyStartTime"), - this->CTest->GetTomorrowTag()); - char current_time[1024]; - sprintf(current_time, "%04d-%02d-%02d %02d:%02d:%02d", - t->tm_year + 1900, - t->tm_mon + 1, - t->tm_mday, - t->tm_hour, - t->tm_min, - t->tm_sec); - std::string today_update_date = current_time; - - // TODO: SVN - switch ( updateType ) - { - case cmCTestUpdateHandler::e_CVS: - extra_update_opts += "-D \"" + today_update_date +" UTC\""; - break; - case cmCTestUpdateHandler::e_SVN: - extra_update_opts += "-r \"{" + today_update_date +" +0000}\""; - break; - } - } - - bool res = true; - - updateCommand = "\"" + updateCommand + "\""; - - // First, check what the current state of repository is - std::string command = ""; - switch( updateType ) - { - case cmCTestUpdateHandler::e_CVS: - // TODO: CVS - for now just leave empty - break; - case cmCTestUpdateHandler::e_SVN: - command = updateCommand + " cleanup"; - break; - } - - // - // Get initial repository information if that is possible. With subversion, - // this will check the current revision. - // - if ( !command.empty() ) - { - cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, - "* Cleanup repository: " << command.c_str() << std::endl); - if ( !this->CTest->GetShowOnly() ) - { - ofs << "* Cleanup repository" << std::endl; - ofs << " Command: " << command.c_str() << std::endl; - res = this->CTest->RunCommand(command.c_str(), &goutput, &errors, - &retVal, sourceDirectory, 0 /*this->TimeOut*/); - - ofs << " Output: " << goutput.c_str() << std::endl; - ofs << " Errors: " << errors.c_str() << std::endl; - if ( ofs ) - { - ofs << "--- Cleanup ---" << std::endl; - ofs << goutput << std::endl; - } - } - else - { - cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, - "Cleanup with command: " << command << std::endl); - } - } - - // First, check what the current state of repository is - command = ""; - switch( updateType ) - { - case cmCTestUpdateHandler::e_CVS: - // TODO: CVS - for now just leave empty - break; - case cmCTestUpdateHandler::e_SVN: - command = updateCommand + " info"; - break; - } - - // CVS variables - // SVN variables - int svn_current_revision = 0; - int svn_latest_revision = 0; - int svn_use_status = 0; - - // - // Get initial repository information if that is possible. With subversion, - // this will check the current revision. - // - if ( !command.empty() ) + // Create an object to interact with the VCS tool. + cmsys::auto_ptr vc; + switch (this->UpdateType) { - cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, - "* Get repository information: " << command.c_str() << std::endl); - if ( !this->CTest->GetShowOnly() ) - { - ofs << "* Get repository information" << std::endl; - ofs << " Command: " << command.c_str() << std::endl; - res = this->CTest->RunCommand(command.c_str(), &goutput, &errors, - &retVal, sourceDirectory, 0 /*this->TimeOut*/); - - ofs << " Output: " << goutput.c_str() << std::endl; - ofs << " Errors: " << errors.c_str() << std::endl; - if ( ofs ) - { - ofs << "--- Update information ---" << std::endl; - ofs << goutput << std::endl; - } - switch ( updateType ) - { - case cmCTestUpdateHandler::e_CVS: - // TODO: CVS - for now just leave empty - break; - case cmCTestUpdateHandler::e_SVN: - { - cmsys::RegularExpression current_revision_regex( - "Revision: ([0-9]+)"); - if ( current_revision_regex.find(goutput.c_str()) ) - { - std::string currentRevisionString - = current_revision_regex.match(1); - svn_current_revision = atoi(currentRevisionString.c_str()); - cmCTestLog(this->CTest, HANDLER_OUTPUT, - " Old revision of repository is: " << svn_current_revision - << std::endl); - } - } - break; - } - } - else - { - cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, - "Get information with command: " << command << std::endl); - } + case e_CVS: vc.reset(new cmCTestCVS(this->CTest, ofs)); break; + case e_SVN: vc.reset(new cmCTestSVN(this->CTest, ofs)); break; + case e_BZR: vc.reset(new cmCTestBZR(this->CTest, ofs)); break; + case e_GIT: vc.reset(new cmCTestGIT(this->CTest, ofs)); break; + case e_HG: vc.reset(new cmCTestHG(this->CTest, ofs)); break; + default: vc.reset(new cmCTestVC(this->CTest, ofs)); break; } + vc->SetCommandLineTool(this->UpdateCommand); + vc->SetSourceDirectory(sourceDirectory); + // Cleanup the working tree. + vc->Cleanup(); // // Now update repository and remember what files were updated // cmGeneratedFileStream os; - if ( !this->StartResultingXML("Update", os) ) + if(!this->StartResultingXML(cmCTest::PartUpdate, "Update", os)) { cmCTestLog(this->CTest, ERROR_MESSAGE, "Cannot open log file" << std::endl); @@ -589,59 +255,7 @@ int cmCTestUpdateHandler::ProcessHandler() static_cast(cmSystemTools::GetTime()); double elapsed_time_start = cmSystemTools::GetTime(); - cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "* Update repository: " - << command.c_str() << std::endl); - if ( !this->CTest->GetShowOnly() ) - { - command = ""; - switch( updateType ) - { - case cmCTestUpdateHandler::e_CVS: - command = updateCommand + " -z3 update " + updateOptions + - " " + extra_update_opts; - ofs << "* Update repository: " << std::endl; - ofs << " Command: " << command.c_str() << std::endl; - res = this->CTest->RunCommand(command.c_str(), &goutput, &errors, - &retVal, sourceDirectory, 0 /*this->TimeOut*/); - ofs << " Output: " << goutput.c_str() << std::endl; - ofs << " Errors: " << errors.c_str() << std::endl; - break; - case cmCTestUpdateHandler::e_SVN: - { - std::string partialOutput; - command = updateCommand + " update " + updateOptions + - " " + extra_update_opts; - ofs << "* Update repository: " << std::endl; - ofs << " Command: " << command.c_str() << std::endl; - bool res1 = this->CTest->RunCommand(command.c_str(), &partialOutput, - &errors, - &retVal, sourceDirectory, 0 /*this->TimeOut*/); - ofs << " Output: " << partialOutput.c_str() << std::endl; - ofs << " Errors: " << errors.c_str() << std::endl; - goutput = partialOutput; - command = updateCommand + " status"; - ofs << "* Status repository: " << std::endl; - ofs << " Command: " << command.c_str() << std::endl; - res = this->CTest->RunCommand(command.c_str(), &partialOutput, - &errors, &retVal, sourceDirectory, 0 /*this->TimeOut*/); - ofs << " Output: " << partialOutput.c_str() << std::endl; - ofs << " Errors: " << errors.c_str() << std::endl; - goutput += partialOutput; - res = res && res1; - ofs << " Total output of update: " << goutput.c_str() << std::endl; - } - } - if ( ofs ) - { - ofs << "--- Update repository ---" << std::endl; - ofs << goutput << std::endl; - } - } - if ( !res || retVal ) - { - updateProducedError = true; - checkoutErrorMessages += " " + goutput; - } + bool updated = vc->Update(); os << "\n" << "CTest->GetTestModelString() << "" << std::endl; os << "\t" << start_time << "\n" << "\t" << start_time_time << "\n" - << "\t" << this->CTest->MakeXMLSafe(command) + << "\t" << cmXMLSafe(vc->GetUpdateCommandLine()) << "\n" - << "\t" << this->CTest->MakeXMLSafe( - cmCTestUpdateHandlerUpdateToString(updateType)) + << "\t" << cmXMLSafe( + cmCTestUpdateHandlerUpdateToString(this->UpdateType)) << "\n"; - // Even though it failed, we may have some useful information. Try to - // continue... - std::vector lines; - cmSystemTools::Split(goutput.c_str(), lines); - std::vector errLines; - cmSystemTools::Split(errors.c_str(), errLines); - lines.insert(lines.end(), errLines.begin(), errLines.end()); + vc->WriteXML(os); - // CVS style regular expressions - cmsys::RegularExpression cvs_date_author_regex( - "^date: +([^;]+); +author: +([^;]+); +state: +[^;]+;"); - cmsys::RegularExpression cvs_revision_regex("^revision +([^ ]*) *$"); - cmsys::RegularExpression cvs_end_of_file_regex( - "^==========================================" - "===================================$"); - cmsys::RegularExpression cvs_end_of_comment_regex( - "^----------------------------$"); - - // Subversion style regular expressions - cmsys::RegularExpression svn_status_line_regex( - "^ *([0-9]+) *([0-9]+) *([^ ]+) *([^ ][^\t\r\n]*)[ \t\r\n]*$"); - cmsys::RegularExpression svn_latest_revision_regex( - "(Updated to|At) revision ([0-9]+)\\."); - - cmsys::RegularExpression file_removed_line( - "cvs update: `?([^']*)'? is no longer in the repository"); - cmsys::RegularExpression file_removed_line2( - "cvs update: warning: `?([^']*)'? is not \\(any longer\\) pertinent"); - cmsys::RegularExpression file_update_line("([A-Z]) *(.*)"); - std::string current_path = ""; - bool first_file = true; - - cmCTestUpdateHandler::AuthorsToUpdatesMap authors_files_map; - int numUpdated = 0; - int numModified = 0; - int numConflicting = 0; - // In subversion, get the latest revision - if ( updateType == cmCTestUpdateHandler::e_SVN ) - { - for ( cc= 0; cc < lines.size(); cc ++ ) - { - const char* line = lines[cc].c_str(); - if ( svn_latest_revision_regex.find(line) ) - { - svn_latest_revision = atoi( - svn_latest_revision_regex.match(2).c_str()); - } - } - if ( svn_latest_revision <= 0 ) - { - cmCTestLog(this->CTest, ERROR_MESSAGE, - "Problem determining the current " - "revision of the repository from output:" << std::endl - << goutput.c_str() << std::endl); - } - else - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, - " Current revision of repository is: " << svn_latest_revision - << std::endl); - } - } - - cmCTestLog(this->CTest, HANDLER_OUTPUT, - " Gathering version information (each . represents one updated file):" - << std::endl); - int file_count = 0; - std::string removed_line; - for ( cc= 0; cc < lines.size(); cc ++ ) - { - const char* line = lines[cc].c_str(); - if ( file_removed_line.find(line) ) - { - removed_line = "D " + file_removed_line.match(1); - line = removed_line.c_str(); - } - else if ( file_removed_line2.find(line) ) - { - removed_line = "D " + file_removed_line2.match(1); - line = removed_line.c_str(); - } - if ( file_update_line.find(line) ) - { - if ( file_count == 0 ) - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, " " << std::flush); - } - cmCTestLog(this->CTest, HANDLER_OUTPUT, "." << std::flush); - std::string upChar = file_update_line.match(1); - std::string upFile = file_update_line.match(2); - char mod = upChar[0]; - bool notLocallyModified = false; - if ( mod == 'X' || mod == 'L') - { - continue; - } - if ( mod != 'M' && mod != 'C' && mod != 'G' ) - { - count ++; - notLocallyModified = true; - } - const char* file = upFile.c_str(); - cmCTestLog(this->CTest, DEBUG, "Line" << cc << ": " << mod << " - " - << file << std::endl); - - std::string output; - if ( notLocallyModified ) - { - std::string logcommand; - switch ( updateType ) - { - case cmCTestUpdateHandler::e_CVS: - logcommand = updateCommand + " -z3 log -N \"" + file + "\""; - break; - case cmCTestUpdateHandler::e_SVN: - if ( svn_latest_revision > 0 && - svn_latest_revision > svn_current_revision ) - { - cmOStringStream logCommandStream; - logCommandStream << updateCommand << " log -r " - << svn_current_revision << ":" << svn_latest_revision - << " --xml \"" << file << "\""; - logcommand = logCommandStream.str(); - } - else - { - logcommand = updateCommand + - " status --verbose \"" + file + "\""; - svn_use_status = 1; - } - break; - } - cmCTestLog(this->CTest, DEBUG, "Do log: " << logcommand << std::endl); - cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, - "* Get file update information: " << logcommand.c_str() - << std::endl); - ofs << "* Get log information for file: " << file << std::endl; - ofs << " Command: " << logcommand.c_str() << std::endl; - res = this->CTest->RunCommand(logcommand.c_str(), &output, &errors, - &retVal, sourceDirectory, 0 /*this->TimeOut*/); - ofs << " Output: " << output.c_str() << std::endl; - ofs << " Errors: " << errors.c_str() << std::endl; - if ( ofs ) - { - ofs << output << std::endl; - } - } - else - { - res = false; - } - if ( res ) - { - cmCTestLog(this->CTest, DEBUG, output << std::endl); - std::string::size_type sline = 0; - std::string srevision1 = "Unknown"; - std::string sdate1 = "Unknown"; - std::string sauthor1 = "Unknown"; - std::string semail1 = "Unknown"; - std::string comment1 = ""; - std::string srevision2 = "Unknown"; - std::string sdate2 = "Unknown"; - std::string sauthor2 = "Unknown"; - std::string comment2 = ""; - std::string semail2 = "Unknown"; - if ( updateType == cmCTestUpdateHandler::e_CVS ) - { - bool have_first = false; - bool have_second = false; - std::vector ulines; - cmSystemTools::Split(output.c_str(), ulines); - for ( kk = 0; kk < ulines.size(); kk ++ ) - { - const char* clp = ulines[kk].c_str(); - if ( !have_second && !sline && cvs_revision_regex.find(clp) ) - { - if ( !have_first ) - { - srevision1 = cvs_revision_regex.match(1); - } - else - { - srevision2 = cvs_revision_regex.match(1); - } - } - else if ( !have_second && !sline && - cvs_date_author_regex.find(clp) ) - { - sline = kk + 1; - if ( !have_first ) - { - sdate1 = cvs_date_author_regex.match(1); - sauthor1 = cvs_date_author_regex.match(2); - } - else - { - sdate2 = cvs_date_author_regex.match(1); - sauthor2 = cvs_date_author_regex.match(2); - } - } - else if ( sline && cvs_end_of_comment_regex.find(clp) || - cvs_end_of_file_regex.find(clp)) - { - if ( !have_first ) - { - have_first = true; - } - else if ( !have_second ) - { - have_second = true; - } - sline = 0; - } - else if ( sline ) - { - if ( !have_first ) - { - comment1 += clp; - comment1 += "\n"; - } - else - { - comment2 += clp; - comment2 += "\n"; - } - } - } - } - else if ( updateType == cmCTestUpdateHandler::e_SVN ) - { - if ( svn_use_status ) - { - cmOStringStream str; - str << svn_current_revision; - srevision1 = str.str(); - if (!svn_status_line_regex.find(output)) - { - cmCTestLog(this->CTest, ERROR_MESSAGE, - "Bad output from SVN status command: " << output - << std::endl); - } - else if ( svn_status_line_regex.match(4) != file ) - { - cmCTestLog(this->CTest, ERROR_MESSAGE, - "Bad output from SVN status command. " - "The file name returned: \"" - << svn_status_line_regex.match(4) - << "\" was different than the file specified: \"" << file - << "\"" << std::endl); - } - else - { - srevision1 = svn_status_line_regex.match(2); - int latest_revision = atoi( - svn_status_line_regex.match(2).c_str()); - if ( svn_current_revision < latest_revision ) - { - srevision2 = str.str(); - } - sauthor1 = svn_status_line_regex.match(3); - } - } - else - { - cmCTestUpdateHandlerSVNXMLParser parser(this); - if ( parser.Parse(output.c_str()) ) - { - int minrev = parser.GetMinRevision(); - int maxrev = parser.GetMaxRevision(); - cmCTestUpdateHandlerSVNXMLParser:: - t_VectorOfCommits::iterator it; - for ( it = parser.GetCommits()->begin(); - it != parser.GetCommits()->end(); - ++ it ) - { - if ( it->Revision == maxrev ) - { - cmOStringStream mRevStream; - mRevStream << maxrev; - srevision1 = mRevStream.str(); - sauthor1 = it->Author; - comment1 = it->Message; - sdate1 = it->Date; - } - else if ( it->Revision == minrev ) - { - cmOStringStream mRevStream; - mRevStream << minrev; - srevision2 = mRevStream.str(); - sauthor2 = it->Author; - comment2 = it->Message; - sdate2 = it->Date; - } - } - } - } - } - if ( mod == 'M' ) - { - comment1 = "Locally modified file\n"; - sauthor1 = "Local User"; - } - if ( mod == 'D' ) - { - comment1 += " - Removed file\n"; - } - if ( mod == 'C' ) - { - comment1 = "Conflict while updating\n"; - sauthor1 = "Local User"; - } - std::string path = cmSystemTools::GetFilenamePath(file); - std::string fname = cmSystemTools::GetFilenameName(file); - if ( path != current_path ) - { - if ( !first_file ) - { - os << "\t" << std::endl; - } - else - { - first_file = false; - } - os << "\t\n" - << "\t\t" << path << "" << std::endl; - } - if ( mod == 'C' ) - { - numConflicting ++; - os << "\t" << std::endl; - } - else if ( mod == 'G' ) - { - numConflicting ++; - os << "\t" << std::endl; - } - else if ( mod == 'M' ) - { - numModified ++; - os << "\t" << std::endl; - } - else - { - numUpdated ++; - os << "\t" << std::endl; - } - if ( srevision2 == "Unknown" ) - { - srevision2 = srevision1; - } - cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, "File: " - << path.c_str() << " / " << fname.c_str() << " was updated by " - << sauthor1.c_str() << " to revision: " << srevision1.c_str() - << " from revision: " << srevision2.c_str() << std::endl); - os << "\t\t" - << cmCTest::MakeXMLSafe(fname) - << "\n" - << "\t\t" << cmCTest::MakeXMLSafe(path) - << "\n" - << "\t\t" << cmCTest::MakeXMLSafe(file) << "\n" - << "\t\t" << cmCTest::MakeXMLSafe(sdate1) - << "\n" - << "\t\t" << cmCTest::MakeXMLSafe(sauthor1) << "\n" - << "\t\t" << cmCTest::MakeXMLSafe(semail1) << "\n" - << "\t\t" << cmCTest::MakeXMLSafe(comment1) << "\n" - << "\t\t" << srevision1 << "\n" - << "\t\t" << srevision2 << "" - << std::endl; - if ( srevision2 != srevision1 ) - { - os - << "\t\t\n" - << "\t\t\t" << srevision1 << "\n" - << "\t\t\t" << srevision2 - << "\n" - << "\t\t\t" << cmCTest::MakeXMLSafe(sauthor1) - << "\n" - << "\t\t\t" << cmCTest::MakeXMLSafe(sdate1) - << "\n" - << "\t\t\t" << cmCTest::MakeXMLSafe(comment1) - << "\n" - << "\t\t\t" << cmCTest::MakeXMLSafe(semail1) - << "\n" - << "\t\t\n" - << "\t\t\n" - << "\t\t\t" << srevision2 << "\n" - << "\t\t\t" << srevision2 - << "\n" - << "\t\t\t" << cmCTest::MakeXMLSafe(sauthor2) - << "\n" - << "\t\t\t" << cmCTest::MakeXMLSafe(sdate2) - << "\n" - << "\t\t\t" << cmCTest::MakeXMLSafe(comment2) - << "\n" - << "\t\t\t" << cmCTest::MakeXMLSafe(semail2) - << "\n" - << "\t\t" << std::endl; - } - if ( mod == 'C' ) - { - os << "\t" << std::endl; - } - else if ( mod == 'G' ) - { - os << "\t" << std::endl; - } - else if ( mod == 'M' ) - { - os << "\t" << std::endl; - } - else - { - os << "\t" << std::endl; - } - cmCTestUpdateHandler::UpdateFiles *u = &authors_files_map[sauthor1]; - cmCTestUpdateHandler::StringPair p; - p.first = path; - p.second = fname; - u->push_back(p); - - current_path = path; - } - file_count ++; - } - } - if ( file_count ) - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, std::endl); - } - if ( numUpdated ) - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, " Found " << numUpdated - << " updated files" << std::endl); - } - if ( numModified ) - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, " Found " << numModified - << " locally modified files" - << std::endl); - } - if ( numConflicting ) - { - cmCTestLog(this->CTest, HANDLER_OUTPUT, " Found " << numConflicting - << " conflicting files" - << std::endl); - } - if ( numModified == 0 && numConflicting == 0 && numUpdated == 0 ) + int localModifications = 0; + int numUpdated = vc->GetPathCount(cmCTestVC::PathUpdated); + if(numUpdated) { - cmCTestLog(this->CTest, HANDLER_OUTPUT, " Project is up-to-date" - << std::endl); + cmCTestLog(this->CTest, HANDLER_OUTPUT, + " Found " << numUpdated << " updated files\n"); } - if ( !first_file ) + if(int numModified = vc->GetPathCount(cmCTestVC::PathModified)) { - os << "\t" << std::endl; + cmCTestLog(this->CTest, HANDLER_OUTPUT, + " Found " << numModified << " locally modified files\n"); + localModifications += numModified; } - - cmCTestUpdateHandler::AuthorsToUpdatesMap::iterator it; - for ( it = authors_files_map.begin(); - it != authors_files_map.end(); - it ++ ) + if(int numConflicting = vc->GetPathCount(cmCTestVC::PathConflicting)) { - os << "\t\n" - << "\t\t" << it->first << "" << std::endl; - cmCTestUpdateHandler::UpdateFiles *u = &(it->second); - for ( cc = 0; cc < u->size(); cc ++ ) - { - os << "\t\t" - << (*u)[cc].second << "" << std::endl; - } - os << "\t" << std::endl; + cmCTestLog(this->CTest, HANDLER_OUTPUT, + " Found " << numConflicting << " conflicting files\n"); + localModifications += numConflicting; } cmCTestLog(this->CTest, DEBUG, "End" << std::endl); @@ -1140,7 +304,7 @@ int cmCTestUpdateHandler::ProcessHandler() static_cast((cmSystemTools::GetTime() - elapsed_time_start)/6)/10.0 << "\n" << "\t"; - if ( numModified > 0 || numConflicting > 0 ) + if(localModifications) { os << "Update error: There are modified or conflicting files in the " "repository"; @@ -1148,22 +312,126 @@ int cmCTestUpdateHandler::ProcessHandler() " There are modified or conflicting files in the repository" << std::endl); } - if ( updateProducedError ) + if(!updated) { - os << "Update error: "; - os << this->CTest->MakeXMLSafe(checkoutErrorMessages); - cmCTestLog(this->CTest, ERROR_MESSAGE, " Update with command: " - << command << " failed" << std::endl); + cmCTestLog(this->CTest, ERROR_MESSAGE, " Update command failed: " + << vc->GetUpdateCommandLine() << "\n"); } os << "" << std::endl; os << "" << std::endl; - if (! res ) + return numUpdated; +} + +//---------------------------------------------------------------------- +bool cmCTestUpdateHandler::InitialCheckout(std::ostream& ofs) +{ + // Use the user-provided command to create the source tree. + if(const char* command = this->GetOption("InitialCheckout")) { - cmCTestLog(this->CTest, ERROR_MESSAGE, - "Error(s) when updating the project" << std::endl); - cmCTestLog(this->CTest, ERROR_MESSAGE, "Output: " - << goutput << std::endl); - return -1; + // Use a generic VC object to run and log the command. + cmCTestVC vc(this->CTest, ofs); + vc.SetSourceDirectory(this->GetOption("SourceDirectory")); + if(!vc.InitialCheckout(command)) + { + return false; + } + + if(!this->CTest->InitializeFromCommand(this->Command)) + { + cmCTestLog(this->CTest, HANDLER_OUTPUT, + " Fatal Error in initialize: " + << std::endl); + cmSystemTools::SetFatalErrorOccured(); + return false; + } + } + return true; +} + +//---------------------------------------------------------------------- +int cmCTestUpdateHandler::DetectVCS(const char* dir) +{ + std::string sourceDirectory = dir; + cmCTestLog(this->CTest, DEBUG, "Check directory: " + << sourceDirectory.c_str() << std::endl); + sourceDirectory += "/.svn"; + if ( cmSystemTools::FileExists(sourceDirectory.c_str()) ) + { + return cmCTestUpdateHandler::e_SVN; + } + sourceDirectory = dir; + sourceDirectory += "/CVS"; + if ( cmSystemTools::FileExists(sourceDirectory.c_str()) ) + { + return cmCTestUpdateHandler::e_CVS; + } + sourceDirectory = dir; + sourceDirectory += "/.bzr"; + if ( cmSystemTools::FileExists(sourceDirectory.c_str()) ) + { + return cmCTestUpdateHandler::e_BZR; + } + sourceDirectory = dir; + sourceDirectory += "/.git"; + if ( cmSystemTools::FileExists(sourceDirectory.c_str()) ) + { + return cmCTestUpdateHandler::e_GIT; } - return count; + sourceDirectory = dir; + sourceDirectory += "/.hg"; + if ( cmSystemTools::FileExists(sourceDirectory.c_str()) ) + { + return cmCTestUpdateHandler::e_HG; + } + return cmCTestUpdateHandler::e_UNKNOWN; +} + +//---------------------------------------------------------------------- +bool cmCTestUpdateHandler::SelectVCS() +{ + // Get update command + this->UpdateCommand = this->CTest->GetCTestConfiguration("UpdateCommand"); + + // Detect the VCS managing the source tree. + this->UpdateType = this->DetectVCS(this->GetOption("SourceDirectory")); + if (this->UpdateType == e_UNKNOWN) + { + // The source tree does not have a recognized VCS. Check the + // configuration value or command name. + this->UpdateType = this->DetermineType(this->UpdateCommand.c_str(), + this->CTest->GetCTestConfiguration("UpdateType").c_str()); + } + + // If no update command was specified, lookup one for this VCS tool. + if (this->UpdateCommand.empty()) + { + const char* key = 0; + switch (this->UpdateType) + { + case e_CVS: key = "CVSCommand"; break; + case e_SVN: key = "SVNCommand"; break; + case e_BZR: key = "BZRCommand"; break; + case e_GIT: key = "GITCommand"; break; + case e_HG: key = "HGCommand"; break; + default: break; + } + if (key) + { + this->UpdateCommand = this->CTest->GetCTestConfiguration(key); + } + if (this->UpdateCommand.empty()) + { + cmOStringStream e; + e << "Cannot find UpdateCommand "; + if (key) + { + e << "or " << key; + } + e << " configuration key."; + cmCTestLog(this->CTest, ERROR_MESSAGE, e.str() << std::endl); + return false; + } + } + + return true; } diff --git a/Source/CTest/cmCTestUpdateHandler.h b/Source/CTest/cmCTestUpdateHandler.h old mode 100755 new mode 100644 index 6091f2b2a..78426ea80 --- a/Source/CTest/cmCTestUpdateHandler.h +++ b/Source/CTest/cmCTestUpdateHandler.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTestUpdateHandler.h,v $ - Language: C++ - Date: $Date: 2006-03-10 20:03:09 $ - Version: $Revision: 1.8 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTestUpdateHandler_h #define cmCTestUpdateHandler_h @@ -46,6 +41,9 @@ public: e_UNKNOWN = 0, e_CVS, e_SVN, + e_BZR, + e_GIT, + e_HG, e_LAST }; @@ -59,11 +57,17 @@ private: struct StringPair : public std::pair{}; struct UpdateFiles : public std::vector{}; - struct AuthorsToUpdatesMap : - public std::map{}; // Determine the type of version control int DetermineType(const char* cmd, const char* type); + + // The VCS command to update the working tree. + std::string UpdateCommand; + int UpdateType; + + bool InitialCheckout(std::ostream& ofs); + int DetectVCS(const char* dir); + bool SelectVCS(); }; #if defined(__sgi) && !defined(__GNUC__) diff --git a/Source/CTest/cmCTestVC.cxx b/Source/CTest/cmCTestVC.cxx new file mode 100644 index 000000000..35f567a5c --- /dev/null +++ b/Source/CTest/cmCTestVC.cxx @@ -0,0 +1,235 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmCTestVC.h" + +#include "cmCTest.h" +#include "cmSystemTools.h" +#include "cmXMLSafe.h" + +#include + +//---------------------------------------------------------------------------- +cmCTestVC::cmCTestVC(cmCTest* ct, std::ostream& log): CTest(ct), Log(log) +{ + this->PathCount[PathUpdated] = 0; + this->PathCount[PathModified] = 0; + this->PathCount[PathConflicting] = 0; + this->Unknown.Date = "Unknown"; + this->Unknown.Author = "Unknown"; + this->Unknown.Rev = "Unknown"; +} + +//---------------------------------------------------------------------------- +cmCTestVC::~cmCTestVC() +{ +} + +//---------------------------------------------------------------------------- +void cmCTestVC::SetCommandLineTool(std::string const& tool) +{ + this->CommandLineTool = tool; +} + +//---------------------------------------------------------------------------- +void cmCTestVC::SetSourceDirectory(std::string const& dir) +{ + this->SourceDirectory = dir; +} + +//---------------------------------------------------------------------------- +bool cmCTestVC::InitialCheckout(const char* command) +{ + cmCTestLog(this->CTest, HANDLER_OUTPUT, + " First perform the initial checkout: " << command << "\n"); + + // Make the parent directory in which to perform the checkout. + std::string parent = cmSystemTools::GetFilenamePath(this->SourceDirectory); + cmCTestLog(this->CTest, HANDLER_OUTPUT, + " Perform checkout in directory: " << parent << "\n"); + if(!cmSystemTools::MakeDirectory(parent.c_str())) + { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "Cannot create directory: " << parent << std::endl); + return false; + } + + // Construct the initial checkout command line. + std::vector args = cmSystemTools::ParseArguments(command); + std::vector vc_co; + for(std::vector::const_iterator ai = args.begin(); + ai != args.end(); ++ai) + { + vc_co.push_back(ai->c_str()); + } + vc_co.push_back(0); + + // Run the initial checkout command and log its output. + this->Log << "--- Begin Initial Checkout ---\n"; + OutputLogger out(this->Log, "co-out> "); + OutputLogger err(this->Log, "co-err> "); + bool result = this->RunChild(&vc_co[0], &out, &err, parent.c_str()); + this->Log << "--- End Initial Checkout ---\n"; + if(!result) + { + cmCTestLog(this->CTest, ERROR_MESSAGE, + "Initial checkout failed!" << std::endl); + } + return result; +} + +//---------------------------------------------------------------------------- +bool cmCTestVC::RunChild(char const* const* cmd, OutputParser* out, + OutputParser* err, const char* workDir) +{ + this->Log << this->ComputeCommandLine(cmd) << "\n"; + + cmsysProcess* cp = cmsysProcess_New(); + cmsysProcess_SetCommand(cp, cmd); + workDir = workDir? workDir : this->SourceDirectory.c_str(); + cmsysProcess_SetWorkingDirectory(cp, workDir); + this->RunProcess(cp, out, err); + int result = cmsysProcess_GetExitValue(cp); + cmsysProcess_Delete(cp); + return result == 0; +} + +//---------------------------------------------------------------------------- +std::string cmCTestVC::ComputeCommandLine(char const* const* cmd) +{ + cmOStringStream line; + const char* sep = ""; + for(const char* const* arg = cmd; *arg; ++arg) + { + line << sep << "\"" << *arg << "\""; + sep = " "; + } + return line.str(); +} + +//---------------------------------------------------------------------------- +bool cmCTestVC::RunUpdateCommand(char const* const* cmd, + OutputParser* out, OutputParser* err) +{ + // Report the command line. + this->UpdateCommandLine = this->ComputeCommandLine(cmd); + if(this->CTest->GetShowOnly()) + { + this->Log << this->UpdateCommandLine << "\n"; + return true; + } + + // Run the command. + return this->RunChild(cmd, out, err); +} + +//---------------------------------------------------------------------------- +std::string cmCTestVC::GetNightlyTime() +{ + // Get the nightly start time corresponding to the current dau. + struct tm* t = this->CTest->GetNightlyTime( + this->CTest->GetCTestConfiguration("NightlyStartTime"), + this->CTest->GetTomorrowTag()); + char current_time[1024]; + sprintf(current_time, "%04d-%02d-%02d %02d:%02d:%02d", + t->tm_year + 1900, + t->tm_mon + 1, + t->tm_mday, + t->tm_hour, + t->tm_min, + t->tm_sec); + return std::string(current_time); +} + +//---------------------------------------------------------------------------- +void cmCTestVC::Cleanup() +{ + this->Log << "--- Begin Cleanup ---\n"; + this->CleanupImpl(); + this->Log << "--- End Cleanup ---\n"; +} + +//---------------------------------------------------------------------------- +void cmCTestVC::CleanupImpl() +{ + // We do no cleanup by default. +} + +//---------------------------------------------------------------------------- +bool cmCTestVC::Update() +{ + this->NoteOldRevision(); + this->Log << "--- Begin Update ---\n"; + bool result = this->UpdateImpl(); + this->Log << "--- End Update ---\n"; + this->NoteNewRevision(); + return result; +} + +//---------------------------------------------------------------------------- +void cmCTestVC::NoteOldRevision() +{ + // We do nothing by default. +} + +//---------------------------------------------------------------------------- +void cmCTestVC::NoteNewRevision() +{ + // We do nothing by default. +} + +//---------------------------------------------------------------------------- +bool cmCTestVC::UpdateImpl() +{ + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, + "* Unknown VCS tool, not updating!" << std::endl); + return true; +} + +//---------------------------------------------------------------------------- +bool cmCTestVC::WriteXML(std::ostream& xml) +{ + this->Log << "--- Begin Revisions ---\n"; + bool result = this->WriteXMLUpdates(xml); + this->Log << "--- End Revisions ---\n"; + return result; +} + +//---------------------------------------------------------------------------- +bool cmCTestVC::WriteXMLUpdates(std::ostream&) +{ + cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, + "* CTest cannot extract updates for this VCS tool.\n"); + return true; +} + +//---------------------------------------------------------------------------- +void cmCTestVC::WriteXMLEntry(std::ostream& xml, + std::string const& path, + std::string const& name, + std::string const& full, + File const& f) +{ + static const char* desc[3] = { "Updated", "Modified", "Conflicting"}; + Revision const& rev = f.Rev? *f.Rev : this->Unknown; + std::string prior = f.PriorRev? f.PriorRev->Rev : std::string("Unknown"); + xml << "\t\t<" << desc[f.Status] << ">\n" + << "\t\t\t" << cmXMLSafe(name) << "\n" + << "\t\t\t" << cmXMLSafe(path) << "\n" + << "\t\t\t" << cmXMLSafe(full) << "\n" + << "\t\t\t" << cmXMLSafe(rev.Date) << "\n" + << "\t\t\t" << cmXMLSafe(rev.Author) << "\n" + << "\t\t\t" << cmXMLSafe(rev.Log) << "\n" + << "\t\t\t" << cmXMLSafe(rev.Rev) << "\n" + << "\t\t\t" << cmXMLSafe(prior) << "\n" + << "\t\t\n"; + ++this->PathCount[f.Status]; +} diff --git a/Source/CTest/cmCTestVC.h b/Source/CTest/cmCTestVC.h new file mode 100644 index 000000000..e6ea76ddb --- /dev/null +++ b/Source/CTest/cmCTestVC.h @@ -0,0 +1,129 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc. + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmCTestVC_h +#define cmCTestVC_h + +#include "cmProcessTools.h" + +class cmCTest; + +/** \class cmCTestVC + * \brief Base class for version control system handlers + * + */ +class cmCTestVC: public cmProcessTools +{ +public: + /** Construct with a CTest instance and update log stream. */ + cmCTestVC(cmCTest* ctest, std::ostream& log); + + virtual ~cmCTestVC(); + + /** Command line tool to invoke. */ + void SetCommandLineTool(std::string const& tool); + + /** Top-level source directory. */ + void SetSourceDirectory(std::string const& dir); + + /** Get the date/time specification for the current nightly start time. */ + std::string GetNightlyTime(); + + /** Prepare the work tree. */ + bool InitialCheckout(const char* command); + + /** Perform cleanup operations on the work tree. */ + void Cleanup(); + + /** Update the working tree to the new revision. */ + bool Update(); + + /** Get the command line used by the Update method. */ + std::string const& GetUpdateCommandLine() const + { return this->UpdateCommandLine; } + + /** Write Update.xml entries for the updates found. */ + bool WriteXML(std::ostream& xml); + + /** Enumerate non-trivial working tree states during update. */ + enum PathStatus { PathUpdated, PathModified, PathConflicting }; + + /** Get the number of working tree paths in each state after update. */ + int GetPathCount(PathStatus s) const { return this->PathCount[s]; } + +protected: + // Internal API to be implemented by subclasses. + virtual void CleanupImpl(); + virtual void NoteOldRevision(); + virtual bool UpdateImpl(); + virtual void NoteNewRevision(); + virtual bool WriteXMLUpdates(std::ostream& xml); + + /** Basic information about one revision of a tree or file. */ + struct Revision + { + std::string Rev; + std::string Date; + std::string Author; + std::string Log; + }; + + struct File; + friend struct File; + + /** Represent change to one file. */ + struct File + { + PathStatus Status; + Revision const* Rev; + Revision const* PriorRev; + File(): Status(PathUpdated), Rev(0), PriorRev(0) {} + File(PathStatus status, Revision const* rev, Revision const* priorRev): + Status(status), Rev(rev), PriorRev(priorRev) {} + }; + + /** Convert a list of arguments to a human-readable command line. */ + static std::string ComputeCommandLine(char const* const* cmd); + + /** Run a command line and send output to given parsers. */ + bool RunChild(char const* const* cmd, OutputParser* out, + OutputParser* err, const char* workDir = 0); + + /** Run VC update command line and send output to given parsers. */ + bool RunUpdateCommand(char const* const* cmd, + OutputParser* out, OutputParser* err = 0); + + /** Write xml element for one file. */ + void WriteXMLEntry(std::ostream& xml, std::string const& path, + std::string const& name, std::string const& full, + File const& f); + + // Instance of cmCTest running the script. + cmCTest* CTest; + + // A stream to which we write log information. + std::ostream& Log; + + // Basic information about the working tree. + std::string CommandLineTool; + std::string SourceDirectory; + + // Record update command info. + std::string UpdateCommandLine; + + // Placeholder for unknown revisions. + Revision Unknown; + + // Count paths reported with each PathStatus value. + int PathCount[3]; +}; + +#endif diff --git a/Source/CTest/cmProcess.cxx b/Source/CTest/cmProcess.cxx new file mode 100644 index 000000000..1895066a8 --- /dev/null +++ b/Source/CTest/cmProcess.cxx @@ -0,0 +1,264 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ + +#include +#include + +cmProcess::cmProcess() +{ + this->Process = 0; + this->Timeout = 0; + this->TotalTime = 0; + this->ExitValue = 0; + this->Id = 0; + this->StartTime = 0; +} + +cmProcess::~cmProcess() +{ + cmsysProcess_Delete(this->Process); +} +void cmProcess::SetCommand(const char* command) +{ + this->Command = command; +} + +void cmProcess::SetCommandArguments(std::vector const& args) +{ + this->Arguments = args; +} + +bool cmProcess::StartProcess() +{ + if(this->Command.size() == 0) + { + return false; + } + this->StartTime = cmSystemTools::GetTime(); + this->ProcessArgs.clear(); + // put the command as arg0 + this->ProcessArgs.push_back(this->Command.c_str()); + // now put the command arguments in + for(std::vector::iterator i = this->Arguments.begin(); + i != this->Arguments.end(); ++i) + { + this->ProcessArgs.push_back(i->c_str()); + } + this->ProcessArgs.push_back(0); // null terminate the list + this->Process = cmsysProcess_New(); + cmsysProcess_SetCommand(this->Process, &*this->ProcessArgs.begin()); + if(this->WorkingDirectory.size()) + { + cmsysProcess_SetWorkingDirectory(this->Process, + this->WorkingDirectory.c_str()); + } + cmsysProcess_SetOption(this->Process, cmsysProcess_Option_HideWindow, 1); + cmsysProcess_SetTimeout(this->Process, this->Timeout); + cmsysProcess_Execute(this->Process); + return (cmsysProcess_GetState(this->Process) + == cmsysProcess_State_Executing); +} + +//---------------------------------------------------------------------------- +bool cmProcess::Buffer::GetLine(std::string& line) +{ + // Scan for the next newline. + for(size_type sz = this->size(); this->Last != sz; ++this->Last) + { + if((*this)[this->Last] == '\n' || (*this)[this->Last] == '\0') + { + // Extract the range first..last as a line. + const char* text = &*this->begin() + this->First; + size_type length = this->Last - this->First; + length -= (length && text[length-1] == '\r')? 1:0; + line.assign(text, length); + + // Start a new range for the next line. + ++this->Last; + this->First = Last; + + // Return the line extracted. + return true; + } + } + + // Available data have been exhausted without a newline. + if(this->First != 0) + { + // Move the partial line to the beginning of the buffer. + this->erase(this->begin(), this->begin() + this->First); + this->First = 0; + this->Last = this->size(); + } + return false; +} + +//---------------------------------------------------------------------------- +bool cmProcess::Buffer::GetLast(std::string& line) +{ + // Return the partial last line, if any. + if(!this->empty()) + { + line.assign(&*this->begin(), this->size()); + this->First = this->Last = 0; + this->clear(); + return true; + } + return false; +} + +//---------------------------------------------------------------------------- +int cmProcess::GetNextOutputLine(std::string& line, double timeout) +{ + for(;;) + { + // Look for lines already buffered. + if(this->StdOut.GetLine(line)) + { + return cmsysProcess_Pipe_STDOUT; + } + else if(this->StdErr.GetLine(line)) + { + return cmsysProcess_Pipe_STDERR; + } + + // Check for more data from the process. + char* data; + int length; + int p = cmsysProcess_WaitForData(this->Process, &data, &length, &timeout); + if(p == cmsysProcess_Pipe_Timeout) + { + return cmsysProcess_Pipe_Timeout; + } + else if(p == cmsysProcess_Pipe_STDOUT) + { + this->StdOut.insert(this->StdOut.end(), data, data+length); + } + else if(p == cmsysProcess_Pipe_STDERR) + { + this->StdErr.insert(this->StdErr.end(), data, data+length); + } + else // p == cmsysProcess_Pipe_None + { + // The process will provide no more data. + break; + } + } + + // Look for partial last lines. + if(this->StdOut.GetLast(line)) + { + return cmsysProcess_Pipe_STDOUT; + } + else if(this->StdErr.GetLast(line)) + { + return cmsysProcess_Pipe_STDERR; + } + + // No more data. Wait for process exit. + if(!cmsysProcess_WaitForExit(this->Process, &timeout)) + { + return cmsysProcess_Pipe_Timeout; + } + + // Record exit information. + this->ExitValue = cmsysProcess_GetExitValue(this->Process); + this->TotalTime = cmSystemTools::GetTime() - this->StartTime; + // std::cerr << "Time to run: " << this->TotalTime << "\n"; + return cmsysProcess_Pipe_None; +} + +// return the process status +int cmProcess::GetProcessStatus() +{ + if(!this->Process) + { + return cmsysProcess_State_Exited; + } + return cmsysProcess_GetState(this->Process); +} + +int cmProcess::ReportStatus() +{ + int result = 1; + switch(cmsysProcess_GetState(this->Process)) + { + case cmsysProcess_State_Starting: + { + std::cerr << "cmProcess: Never started " + << this->Command << " process.\n"; + } break; + case cmsysProcess_State_Error: + { + std::cerr << "cmProcess: Error executing " << this->Command + << " process: " + << cmsysProcess_GetErrorString(this->Process) + << "\n"; + } break; + case cmsysProcess_State_Exception: + { + std::cerr << "cmProcess: " << this->Command + << " process exited with an exception: "; + switch(cmsysProcess_GetExitException(this->Process)) + { + case cmsysProcess_Exception_None: + { + std::cerr << "None"; + } break; + case cmsysProcess_Exception_Fault: + { + std::cerr << "Segmentation fault"; + } break; + case cmsysProcess_Exception_Illegal: + { + std::cerr << "Illegal instruction"; + } break; + case cmsysProcess_Exception_Interrupt: + { + std::cerr << "Interrupted by user"; + } break; + case cmsysProcess_Exception_Numerical: + { + std::cerr << "Numerical exception"; + } break; + case cmsysProcess_Exception_Other: + { + std::cerr << "Unknown"; + } break; + } + std::cerr << "\n"; + } break; + case cmsysProcess_State_Executing: + { + std::cerr << "cmProcess: Never terminated " << + this->Command << " process.\n"; + } break; + case cmsysProcess_State_Exited: + { + result = cmsysProcess_GetExitValue(this->Process); + std::cerr << "cmProcess: " << this->Command + << " process exited with code " + << result << "\n"; + } break; + case cmsysProcess_State_Expired: + { + std::cerr << "cmProcess: killed " << this->Command + << " process due to timeout.\n"; + } break; + case cmsysProcess_State_Killed: + { + std::cerr << "cmProcess: killed " << this->Command << " process.\n"; + } break; + } + return result; + +} diff --git a/Source/CTest/cmProcess.h b/Source/CTest/cmProcess.h new file mode 100644 index 000000000..01dacf925 --- /dev/null +++ b/Source/CTest/cmProcess.h @@ -0,0 +1,82 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmProcess_h +#define cmProcess_h + + +#include "cmStandardIncludes.h" +#include + + +/** \class cmProcess + * \brief run a process with c++ + * + * cmProcess wraps the kwsys process stuff in a c++ class. + */ +class cmProcess +{ +public: + cmProcess(); + ~cmProcess(); + const char* GetCommand() { return this->Command.c_str();} + void SetCommand(const char* command); + void SetCommandArguments(std::vector const& arg); + void SetWorkingDirectory(const char* dir) { this->WorkingDirectory = dir;} + void SetTimeout(double t) { this->Timeout = t;} + // Return true if the process starts + bool StartProcess(); + + // return the process status + int GetProcessStatus(); + // Report the status of the program + int ReportStatus(); + int GetId() { return this->Id; } + void SetId(int id) { this->Id = id;} + int GetExitValue() { return this->ExitValue;} + double GetTotalTime() { return this->TotalTime;} + + /** + * Read one line of output but block for no more than timeout. + * Returns: + * cmsysProcess_Pipe_None = Process terminated and all output read + * cmsysProcess_Pipe_STDOUT = Line came from stdout + * cmsysProcess_Pipe_STDOUT = Line came from stderr + * cmsysProcess_Pipe_Timeout = Timeout expired while waiting + */ + int GetNextOutputLine(std::string& line, double timeout); +private: + double Timeout; + double StartTime; + double TotalTime; + cmsysProcess* Process; + class Buffer: public std::vector + { + // Half-open index range of partial line already scanned. + size_type First; + size_type Last; + public: + Buffer(): First(0), Last(0) {} + bool GetLine(std::string& line); + bool GetLast(std::string& line); + }; + Buffer StdErr; + Buffer StdOut; + std::string Command; + std::string WorkingDirectory; + std::vector Arguments; + std::vector ProcessArgs; + std::string Output; + int Id; + int ExitValue; +}; + +#endif diff --git a/Source/CursesDialog/CMakeLists.txt b/Source/CursesDialog/CMakeLists.txt index a6a16adda..3349ebe96 100644 --- a/Source/CursesDialog/CMakeLists.txt +++ b/Source/CursesDialog/CMakeLists.txt @@ -1,3 +1,14 @@ +#============================================================================= +# CMake - Cross Platform Makefile Generator +# Copyright 2000-2009 Kitware, Inc., Insight Software Consortium +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= SET( CURSES_SRCS CursesDialog/cmCursesBoolWidget diff --git a/Source/CursesDialog/ccmake.cxx b/Source/CursesDialog/ccmake.cxx index 4c931be1d..9ede7a6cc 100644 --- a/Source/CursesDialog/ccmake.cxx +++ b/Source/CursesDialog/ccmake.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: ccmake.cxx,v $ - Language: C++ - Date: $Date: 2007-12-13 22:56:50 $ - Version: $Revision: 1.37 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "../cmCacheManager.h" #include "../cmSystemTools.h" #include "../cmake.h" diff --git a/Source/CursesDialog/cmCursesBoolWidget.cxx b/Source/CursesDialog/cmCursesBoolWidget.cxx index aea9a09fe..9c4c5a577 100644 --- a/Source/CursesDialog/cmCursesBoolWidget.cxx +++ b/Source/CursesDialog/cmCursesBoolWidget.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesBoolWidget.cxx,v $ - Language: C++ - Date: $Date: 2006-03-16 15:44:55 $ - Version: $Revision: 1.8 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCursesBoolWidget.h" #include "cmCursesMainForm.h" diff --git a/Source/CursesDialog/cmCursesBoolWidget.h b/Source/CursesDialog/cmCursesBoolWidget.h index f873716ad..0d1d6a6cf 100644 --- a/Source/CursesDialog/cmCursesBoolWidget.h +++ b/Source/CursesDialog/cmCursesBoolWidget.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesBoolWidget.h,v $ - Language: C++ - Date: $Date: 2002-10-23 22:03:27 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef __cmCursesBoolWidget_h #define __cmCursesBoolWidget_h diff --git a/Source/CursesDialog/cmCursesCacheEntryComposite.cxx b/Source/CursesDialog/cmCursesCacheEntryComposite.cxx index 979c5a560..828384d71 100644 --- a/Source/CursesDialog/cmCursesCacheEntryComposite.cxx +++ b/Source/CursesDialog/cmCursesCacheEntryComposite.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesCacheEntryComposite.cxx,v $ - Language: C++ - Date: $Date: 2008-03-07 21:32:09 $ - Version: $Revision: 1.9 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCursesCacheEntryComposite.h" #include "cmCursesStringWidget.h" #include "cmCursesLabelWidget.h" diff --git a/Source/CursesDialog/cmCursesCacheEntryComposite.h b/Source/CursesDialog/cmCursesCacheEntryComposite.h index 80c7cc9fb..a40ea28e1 100644 --- a/Source/CursesDialog/cmCursesCacheEntryComposite.h +++ b/Source/CursesDialog/cmCursesCacheEntryComposite.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesCacheEntryComposite.h,v $ - Language: C++ - Date: $Date: 2006-03-16 15:44:55 $ - Version: $Revision: 1.9 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef __cmCursesCacheEntryComposite_h #define __cmCursesCacheEntryComposite_h diff --git a/Source/CursesDialog/cmCursesDummyWidget.cxx b/Source/CursesDialog/cmCursesDummyWidget.cxx index 3c41e6c6f..1d8a45d79 100644 --- a/Source/CursesDialog/cmCursesDummyWidget.cxx +++ b/Source/CursesDialog/cmCursesDummyWidget.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesDummyWidget.cxx,v $ - Language: C++ - Date: $Date: 2006-03-16 15:44:55 $ - Version: $Revision: 1.6 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCursesDummyWidget.h" cmCursesDummyWidget::cmCursesDummyWidget(int width, int height, diff --git a/Source/CursesDialog/cmCursesDummyWidget.h b/Source/CursesDialog/cmCursesDummyWidget.h index 35d390b30..cc4cc748d 100644 --- a/Source/CursesDialog/cmCursesDummyWidget.h +++ b/Source/CursesDialog/cmCursesDummyWidget.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesDummyWidget.h,v $ - Language: C++ - Date: $Date: 2002-10-23 22:03:27 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef __cmCursesDummyWidget_h #define __cmCursesDummyWidget_h diff --git a/Source/CursesDialog/cmCursesFilePathWidget.cxx b/Source/CursesDialog/cmCursesFilePathWidget.cxx index e3b5965d1..13bbcc936 100644 --- a/Source/CursesDialog/cmCursesFilePathWidget.cxx +++ b/Source/CursesDialog/cmCursesFilePathWidget.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesFilePathWidget.cxx,v $ - Language: C++ - Date: $Date: 2006-03-16 15:44:55 $ - Version: $Revision: 1.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCursesFilePathWidget.h" cmCursesFilePathWidget::cmCursesFilePathWidget(int width, int height, diff --git a/Source/CursesDialog/cmCursesFilePathWidget.h b/Source/CursesDialog/cmCursesFilePathWidget.h index fb4d8405e..9d2972ee7 100644 --- a/Source/CursesDialog/cmCursesFilePathWidget.h +++ b/Source/CursesDialog/cmCursesFilePathWidget.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesFilePathWidget.h,v $ - Language: C++ - Date: $Date: 2002-11-05 13:52:31 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef __cmCursesFilePathWidget_h #define __cmCursesFilePathWidget_h diff --git a/Source/CursesDialog/cmCursesForm.cxx b/Source/CursesDialog/cmCursesForm.cxx index 95a8b0c3e..72ae5eef7 100644 --- a/Source/CursesDialog/cmCursesForm.cxx +++ b/Source/CursesDialog/cmCursesForm.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesForm.cxx,v $ - Language: C++ - Date: $Date: 2006-03-16 15:44:55 $ - Version: $Revision: 1.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCursesForm.h" std::ofstream cmCursesForm::DebugFile; diff --git a/Source/CursesDialog/cmCursesForm.h b/Source/CursesDialog/cmCursesForm.h index bffda42e4..7556d74b5 100644 --- a/Source/CursesDialog/cmCursesForm.h +++ b/Source/CursesDialog/cmCursesForm.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesForm.h,v $ - Language: C++ - Date: $Date: 2006-03-16 15:44:55 $ - Version: $Revision: 1.9 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef __cmCursesForm_h #define __cmCursesForm_h diff --git a/Source/CursesDialog/cmCursesLabelWidget.cxx b/Source/CursesDialog/cmCursesLabelWidget.cxx index bd493615c..2ad4813c6 100644 --- a/Source/CursesDialog/cmCursesLabelWidget.cxx +++ b/Source/CursesDialog/cmCursesLabelWidget.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesLabelWidget.cxx,v $ - Language: C++ - Date: $Date: 2006-03-16 15:44:55 $ - Version: $Revision: 1.7 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCursesLabelWidget.h" cmCursesLabelWidget::cmCursesLabelWidget(int width, int height, diff --git a/Source/CursesDialog/cmCursesLabelWidget.h b/Source/CursesDialog/cmCursesLabelWidget.h index 15d86b79d..bbcc58618 100644 --- a/Source/CursesDialog/cmCursesLabelWidget.h +++ b/Source/CursesDialog/cmCursesLabelWidget.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesLabelWidget.h,v $ - Language: C++ - Date: $Date: 2002-10-23 22:03:27 $ - Version: $Revision: 1.7 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef __cmCursesLabelWidget_h #define __cmCursesLabelWidget_h diff --git a/Source/CursesDialog/cmCursesLongMessageForm.cxx b/Source/CursesDialog/cmCursesLongMessageForm.cxx index b22585393..c66147b31 100644 --- a/Source/CursesDialog/cmCursesLongMessageForm.cxx +++ b/Source/CursesDialog/cmCursesLongMessageForm.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesLongMessageForm.cxx,v $ - Language: C++ - Date: $Date: 2006-11-29 22:25:46 $ - Version: $Revision: 1.16 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "../cmCacheManager.h" #include "../cmSystemTools.h" #include "../cmake.h" @@ -80,8 +75,7 @@ void cmCursesLongMessageForm::UpdateStatusBar() char version[cmCursesMainForm::MAX_WIDTH]; char vertmp[128]; - sprintf(vertmp,"CMake Version %d.%d - %s", cmVersion::GetMajorVersion(), - cmVersion::GetMinorVersion(),cmVersion::GetReleaseVersion().c_str()); + sprintf(vertmp,"CMake Version %s", cmVersion::GetCMakeVersion()); int sideSpace = (width-strlen(vertmp)); for(int i=0; iCMakeInstance->GetCacheManager()->GetCacheIterator((*it)->GetValue()); - if (mit.IsAtEnd() || !this->AdvancedMode && mit.GetPropertyAsBool("ADVANCED")) + if (mit.IsAtEnd() || + (!this->AdvancedMode && mit.GetPropertyAsBool("ADVANCED"))) { continue; } @@ -259,7 +255,8 @@ void cmCursesMainForm::RePost() { cmCacheManager::CacheIterator mit = this->CMakeInstance->GetCacheManager()->GetCacheIterator((*it)->GetValue()); - if (mit.IsAtEnd() || !this->AdvancedMode && mit.GetPropertyAsBool("ADVANCED")) + if (mit.IsAtEnd() || + (!this->AdvancedMode && mit.GetPropertyAsBool("ADVANCED"))) { continue; } @@ -327,7 +324,8 @@ void cmCursesMainForm::Render(int left, int top, int width, int height) { cmCacheManager::CacheIterator mit = this->CMakeInstance->GetCacheManager()->GetCacheIterator((*it)->GetValue()); - if (mit.IsAtEnd() || !this->AdvancedMode && mit.GetPropertyAsBool("ADVANCED")) + if (mit.IsAtEnd() || + (!this->AdvancedMode && mit.GetPropertyAsBool("ADVANCED"))) { continue; } @@ -344,7 +342,8 @@ void cmCursesMainForm::Render(int left, int top, int width, int height) { cmCacheManager::CacheIterator mit = this->CMakeInstance->GetCacheManager()->GetCacheIterator((*it)->GetValue()); - if (mit.IsAtEnd() || !this->AdvancedMode && mit.GetPropertyAsBool("ADVANCED")) + if (mit.IsAtEnd() || + (!this->AdvancedMode && mit.GetPropertyAsBool("ADVANCED"))) { continue; } @@ -592,8 +591,7 @@ void cmCursesMainForm::UpdateStatusBar(const char* message) // We want to display this on the right char version[cmCursesMainForm::MAX_WIDTH]; char vertmp[128]; - sprintf(vertmp,"CMake Version %d.%d - %s", cmVersion::GetMajorVersion(), - cmVersion::GetMinorVersion(),cmVersion::GetReleaseVersion().c_str()); + sprintf(vertmp,"CMake Version %s", cmVersion::GetCMakeVersion()); int sideSpace = (width-strlen(vertmp)); for(i=0; iSearchMode = false; } */ - else if ( key >= 'a' && key <= 'z' || - key >= 'A' && key <= 'Z' || - key >= '0' && key <= '9' || - key == '_' ) + else if ((key >= 'a' && key <= 'z') || + (key >= 'A' && key <= 'Z') || + (key >= '0' && key <= '9') || + (key == '_' )) { if ( this->SearchString.size() < static_cast(x-10) ) { diff --git a/Source/CursesDialog/cmCursesMainForm.h b/Source/CursesDialog/cmCursesMainForm.h index 40e04aa6b..975199988 100644 --- a/Source/CursesDialog/cmCursesMainForm.h +++ b/Source/CursesDialog/cmCursesMainForm.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesMainForm.h,v $ - Language: C++ - Date: $Date: 2006-03-16 15:44:55 $ - Version: $Revision: 1.24 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef __cmCursesMainForm_h #define __cmCursesMainForm_h diff --git a/Source/CursesDialog/cmCursesPathWidget.cxx b/Source/CursesDialog/cmCursesPathWidget.cxx index 93684f4bb..b113c2e6a 100644 --- a/Source/CursesDialog/cmCursesPathWidget.cxx +++ b/Source/CursesDialog/cmCursesPathWidget.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesPathWidget.cxx,v $ - Language: C++ - Date: $Date: 2006-03-16 15:44:55 $ - Version: $Revision: 1.10 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCursesPathWidget.h" #include "cmCursesMainForm.h" diff --git a/Source/CursesDialog/cmCursesPathWidget.h b/Source/CursesDialog/cmCursesPathWidget.h index f115de87e..45c22a392 100644 --- a/Source/CursesDialog/cmCursesPathWidget.h +++ b/Source/CursesDialog/cmCursesPathWidget.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesPathWidget.h,v $ - Language: C++ - Date: $Date: 2006-03-16 15:44:55 $ - Version: $Revision: 1.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef __cmCursesPathWidget_h #define __cmCursesPathWidget_h diff --git a/Source/CursesDialog/cmCursesStandardIncludes.h b/Source/CursesDialog/cmCursesStandardIncludes.h index a5fab94db..b157a289b 100644 --- a/Source/CursesDialog/cmCursesStandardIncludes.h +++ b/Source/CursesDialog/cmCursesStandardIncludes.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesStandardIncludes.h,v $ - Language: C++ - Date: $Date: 2007-08-27 13:01:14 $ - Version: $Revision: 1.16 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCursesStandardIncludes_h #define cmCursesStandardIncludes_h #if defined(__sun__) && defined(__GNUC__) diff --git a/Source/CursesDialog/cmCursesStringWidget.cxx b/Source/CursesDialog/cmCursesStringWidget.cxx index 80e2d1a71..d363f0090 100644 --- a/Source/CursesDialog/cmCursesStringWidget.cxx +++ b/Source/CursesDialog/cmCursesStringWidget.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesStringWidget.cxx,v $ - Language: C++ - Date: $Date: 2008-09-03 13:43:19 $ - Version: $Revision: 1.13.12.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCursesStringWidget.h" #include "cmCursesMainForm.h" diff --git a/Source/CursesDialog/cmCursesStringWidget.h b/Source/CursesDialog/cmCursesStringWidget.h index 53f0f7bcb..cd54f249b 100644 --- a/Source/CursesDialog/cmCursesStringWidget.h +++ b/Source/CursesDialog/cmCursesStringWidget.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesStringWidget.h,v $ - Language: C++ - Date: $Date: 2006-03-16 15:44:55 $ - Version: $Revision: 1.6 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef __cmCursesStringWidget_h #define __cmCursesStringWidget_h diff --git a/Source/CursesDialog/cmCursesWidget.cxx b/Source/CursesDialog/cmCursesWidget.cxx index 75390e344..5dffcaa5c 100644 --- a/Source/CursesDialog/cmCursesWidget.cxx +++ b/Source/CursesDialog/cmCursesWidget.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesWidget.cxx,v $ - Language: C++ - Date: $Date: 2006-03-16 15:44:55 $ - Version: $Revision: 1.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCursesWidget.h" cmCursesWidget::cmCursesWidget(int width, int height, int left, int top) diff --git a/Source/CursesDialog/cmCursesWidget.h b/Source/CursesDialog/cmCursesWidget.h index a355557cc..ee36af613 100644 --- a/Source/CursesDialog/cmCursesWidget.h +++ b/Source/CursesDialog/cmCursesWidget.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCursesWidget.h,v $ - Language: C++ - Date: $Date: 2006-03-16 15:44:55 $ - Version: $Revision: 1.8 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef __cmCursesWidget_h #define __cmCursesWidget_h diff --git a/Source/CursesDialog/form/CMakeLists.txt b/Source/CursesDialog/form/CMakeLists.txt index a3d99777a..2435f3935 100644 --- a/Source/CursesDialog/form/CMakeLists.txt +++ b/Source/CursesDialog/form/CMakeLists.txt @@ -1,3 +1,14 @@ +#============================================================================= +# CMake - Cross Platform Makefile Generator +# Copyright 2000-2009 Kitware, Inc., Insight Software Consortium +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= PROJECT(CMAKE_FORM) INCLUDE_REGULAR_EXPRESSION("^.*$") diff --git a/Source/CursesDialog/form/cmFormConfigure.h.in b/Source/CursesDialog/form/cmFormConfigure.h.in index 9cfcb3371..a43169d03 100644 --- a/Source/CursesDialog/form/cmFormConfigure.h.in +++ b/Source/CursesDialog/form/cmFormConfigure.h.in @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmFormConfigure.h.in,v $ - Language: C++ - Date: $Date: 2007-08-27 13:01:14 $ - Version: $Revision: 1.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef CMFORMCONFIGURE_H #define CMFORMCONFIGURE_H diff --git a/Source/FLTKDialog/CMakeLists.txt b/Source/FLTKDialog/CMakeLists.txt deleted file mode 100644 index 47eea5576..000000000 --- a/Source/FLTKDialog/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -FIND_PACKAGE(FLTK REQUIRED) - -SET(SRCS - CMakeSetupGUIImplementation.cxx - FLTKDialog.cxx - FLTKPropertyItemRow.cxx - FLTKPropertyList.cxx - ) - -SET(FLTK_GUI_Files_SRCS - CMakeSetupGUI.fl - ) - -INCLUDE_DIRECTORIES(${FLTK_INCLUDE_PATH}) - -FLTK_WRAP_UI(FLCMakeSetup ${FLTK_GUI_Files_SRCS}) - -ADD_EXECUTABLE(FLCMakeSetup ${SRCS} ${FLCMakeSetup_FLTK_UI_SRCS} ) -TARGET_LINK_LIBRARIES(FLCMakeSetup ${FLTK_LIBRARY} CMakeLib) - diff --git a/Source/FLTKDialog/CMakeSetupGUI.fl b/Source/FLTKDialog/CMakeSetupGUI.fl deleted file mode 100644 index f13d6968a..000000000 --- a/Source/FLTKDialog/CMakeSetupGUI.fl +++ /dev/null @@ -1,116 +0,0 @@ -# data file for the Fltk User Interface Designer (fluid) -version 1.0009 -header_name {.h} -code_name {.cxx} -gridx 5 -gridy 5 -snap 3 -class CMakeSetupGUI {open -} { - Function {CMakeSetupGUI()} {open - } { - Fl_Window dialogWindow { - label CMakeSetupDialog - callback {recentSourceDirectoriesBrowser->hide(); -recentBinaryDirectoriesBrowser->hide();} - xywh {646 144 562 373} resizable visible - } { - Fl_Input sourcePathTextInput { - label {Where is the source code: } - callback {SetSourcePath( sourcePathTextInput->value() );} - xywh {219 15 200 20} labelsize 11 when 8 textsize 11 - } - Fl_Button {} { - label {Browse...} - callback {BrowseForSourcePath();} - xywh {453 14 65 22} shortcut 0x80073 labelsize 11 - } - Fl_Input binaryPathTextInput { - label {Where do you want to build the binaries: } - callback {SetBinaryPath( binaryPathTextInput->value() );} - xywh {219 50 200 20} labelsize 11 when 8 textsize 11 - } - Fl_Button {} { - label {Browse...} - callback {BrowseForBinaryPath();} - xywh {453 49 65 22} shortcut 0x80062 labelsize 11 - } - Fl_Button m_CancelButton { - label Cancel - callback {ClickOnCancel();} - xywh {390 332 100 23} shortcut 0x80071 labelsize 11 - } - Fl_Button m_ConfigureButton { - label Configure - callback {ClickOnConfigure();} - xywh {105 332 100 23} shortcut 0x8006d labelsize 11 - } - Fl_Group {} { - xywh {25 80 515 222} box ENGRAVED_BOX labelsize 11 align 0 resizable - } { - Fl_Scroll cacheValuesScroll { - label {Cache Values} open - xywh {40 98 485 190} type BOTH_ALWAYS box DOWN_FRAME labelsize 11 align 5 when 1 resizable - } { - Fl_Pack propertyListPack { - xywh {40 99 485 185} resizable - } {} - } - } - Fl_Box {} { - label {Right click on cache entries for additional options} - xywh {160 305 275 25} labelsize 11 - } - Fl_Button {} { - label {@\#2>} - callback {ShowRecentSourceDirectories();} - xywh {420 15 22 21} labeltype SYMBOL_LABEL - } - Fl_Button {} { - label {@\#2>} - callback {ShowRecentBinaryDirectories();} - xywh {420 50 22 21} labeltype SYMBOL_LABEL - } - Fl_Browser recentSourceDirectoriesBrowser { - callback {SelectOneRecentSourceDirectory();} - xywh {15 35 535 115} type Hold box BORDER_BOX hide - } - Fl_Browser recentBinaryDirectoriesBrowser { - callback {SelectOneRecentBinaryDirectory();} - xywh {15 70 535 115} type Hold box BORDER_BOX hide - } - Fl_Button m_OKButton { - label OK - callback {ClickOnOK();} selected - xywh {250 332 100 23} shortcut 0x8006d labelsize 11 - } - } - } - Function {~CMakeSetupGUI()} {} {} - Function {Close(void)} {return_type {virtual void} - } {} - Function {BrowseForSourcePath(void)} {return_type {virtual void} - } {} - Function {BrowseForBinaryPath(void)} {return_type {virtual void} - } {} - Function {Show(void)} {return_type {virtual void} - } {} - Function {SetBinaryPath(const char *)} {return_type {virtual void} - } { } - Function {SetSourcePath(const char *)} {return_type {virtual void} - } { } - Function {ShowRecentBinaryDirectories(void)} {return_type {virtual void} - } {} - Function {ShowRecentSourceDirectories(void)} {return_type {virtual void} - } {} - Function {SelectOneRecentBinaryDirectory(void)} {return_type {virtual void} - } {} - Function {SelectOneRecentSourceDirectory(void)} {return_type {virtual void} - } {} - Function {ClickOnConfigure(void)} {return_type {virtual void} - } {} - Function {ClickOnOK(void)} {return_type {virtual void} - } {} - Function {ClickOnCancel(void)} {return_type {virtual void} - } {} -} diff --git a/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx b/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx deleted file mode 100644 index eeee809f4..000000000 --- a/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx +++ /dev/null @@ -1,844 +0,0 @@ -/*========================================================================= - - Program: Insight Segmentation & Registration Toolkit - Module: $RCSfile: CMakeSetupGUIImplementation.cxx,v $ - Language: C++ - Date: $Date: 2007-08-21 20:21:09 $ - Version: $Revision: 1.30 $ - - Copyright (c) 2002 Insight Consortium. All rights reserved. - See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#include "CMakeSetupGUIImplementation.h" -#include "FL/Fl_File_Chooser.H" -#include "FL/filename.H" -#include "FL/fl_ask.H" -#include "../cmCacheManager.h" -#include "../cmMakefile.h" -#include -#include "FLTKPropertyList.h" -#include "FLTKPropertyItemRow.h" -#include "FL/fl_draw.H" -#include "../cmake.h" - -void FLTKMessageCallback(const char* message, const char* title, bool& nomore, void*) -{ - std::string msg = message; - msg += "\nPress cancel to suppress any further messages."; - int choice = fl_choice( msg.c_str(), "Cancel","Ok",0); - if(choice==0) - { - nomore = true; - } -} - -/** - * Constructor - */ -CMakeSetupGUIImplementation -::CMakeSetupGUIImplementation():m_CacheEntriesList(this) -{ - m_CMakeInstance = new cmake; - cmSystemTools::SetErrorCallback(FLTKMessageCallback); - m_BuildPathChanged = false; -} - - - -/** - * Destructor - */ -CMakeSetupGUIImplementation -::~CMakeSetupGUIImplementation() -{ -} - - - - -/** - * Show the graphic interface - */ -void -CMakeSetupGUIImplementation -::Show( void ) -{ - dialogWindow->show(); -} - - - - - -/** - * Hide the graphic interface - */ -void -CMakeSetupGUIImplementation -::Close( void ) -{ - SaveRecentDirectories(); - dialogWindow->hide(); -} - - - - - -/** - * Browse for the path to the sources - */ -void -CMakeSetupGUIImplementation -::BrowseForSourcePath( void ) -{ - const char * path = - fl_dir_chooser( - "Path to Sources", - sourcePathTextInput->value() ); - - if( !path ) - { - return; - } - - SetSourcePath( path ); - -} - - - - -/** - * Browse for the path to the binaries - */ -void -CMakeSetupGUIImplementation -::BrowseForBinaryPath( void ) -{ - const char * path = - fl_dir_chooser( - "Path to Binaries", - binaryPathTextInput->value() ); - - if( !path ) - { - return; - } - - SetBinaryPath( path ); - -} - - - - - -/** - * Set path to executable. Used to get the path to CMake - */ -void -CMakeSetupGUIImplementation -::SetPathToExecutable( const char * path ) -{ - m_PathToExecutable = cmSystemTools::CollapseFullPath(path); - m_PathToExecutable = cmSystemTools::GetProgramPath(m_PathToExecutable.c_str()).c_str(); -#ifdef _WIN32 - m_PathToExecutable += "/cmake.exe"; -#else - m_PathToExecutable += "/cmake"; -#endif -} - - - -/** - * Set the source path - */ -void -CMakeSetupGUIImplementation -::SetSourcePath( const char * path ) -{ - - if( !path || strlen(path)==0 ) - { - fl_alert("Please select the path to the sources"); - return; - } - - std::string expandedAbsolutePath = ExpandPathAndMakeItAbsolute( path ); - - sourcePathTextInput->value( expandedAbsolutePath.c_str() ); - - if( VerifySourcePath( expandedAbsolutePath ) ) - { - m_WhereSource = expandedAbsolutePath; - } - -} - - - - -/** - * Expand environment variables in the path and make it absolute - */ -std::string -CMakeSetupGUIImplementation -::ExpandPathAndMakeItAbsolute( const std::string & inputPath ) const -{ - return cmSystemTools::CollapseFullPath(inputPath.c_str()); -} - - -/** - * Set the binary path - */ -void -CMakeSetupGUIImplementation -::SetBinaryPath( const char * path ) -{ - - if( !path || strlen(path)==0 ) - { - fl_alert("Please select the path to the binaries"); - return; - } - - std::string expandedAbsolutePath = ExpandPathAndMakeItAbsolute( path ); - - binaryPathTextInput->value( expandedAbsolutePath.c_str() ); - - if( !VerifyBinaryPath( expandedAbsolutePath.c_str() ) ) - { - return; - } - - if( m_WhereBuild != expandedAbsolutePath ) - { - m_BuildPathChanged = true; - m_WhereBuild = expandedAbsolutePath; - m_CacheEntriesList.RemoveAll(); // remove data from other project - this->LoadCacheFromDiskToGUI(); - } - else - { - m_BuildPathChanged = false; - } - - -} - - - -/** - * Verify the path to binaries - */ -bool -CMakeSetupGUIImplementation -::VerifyBinaryPath( const std::string & path ) const -{ - - bool pathIsOK = false; - - if( cmSystemTools::FileIsDirectory( path.c_str() ) ) - { - pathIsOK = true; - } - else - { - int userWantsToCreateDirectory = - fl_ask("The directory \n %s \n Doesn't exist. Do you want to create it ?", - path.c_str() ); - - if( userWantsToCreateDirectory ) - { - cmSystemTools::MakeDirectory( path.c_str() ); - pathIsOK = true; - } - else - { - pathIsOK = false; - } - } - - return pathIsOK; - -} - - - -/** - * Verify the path to sources - */ -bool -CMakeSetupGUIImplementation -::VerifySourcePath( const std::string & path ) const -{ - - if( !cmSystemTools::FileIsDirectory(( path.c_str()))) - { - fl_alert("The Source directory \n %s \n Doesn't exist or is not a directory", path.c_str() ); - return false; - } - - return true; -} - - - - -/** - * Build the project files - */ -void -CMakeSetupGUIImplementation -::RunCMake( bool generateProjectFiles ) -{ - - if(!cmSystemTools::FileIsDirectory( m_WhereBuild.c_str() )) - { - std::string message = - "Build directory does not exist, should I create it?\n\n" - "Directory: "; - message += m_WhereBuild; - int userWantToCreateDirectory = - fl_ask(message.c_str()); - if( userWantToCreateDirectory ) - { - cmSystemTools::MakeDirectory( m_WhereBuild.c_str() ); - } - else - { - fl_alert("Build Project aborted, nothing done."); - return; - } - } - - - // set the wait cursor - fl_cursor(FL_CURSOR_WAIT,FL_BLACK,FL_WHITE); - - - // save the current GUI values to the cache - this->SaveCacheFromGUI(); - - // Make sure we are working from the cache on disk - this->LoadCacheFromDiskToGUI(); - - UpdateListOfRecentDirectories(); - SaveRecentDirectories(); - if (generateProjectFiles) - { - if(m_CMakeInstance->Generate() != 0) - { - cmSystemTools::Error( - "Error in generation process, project files may be invalid"); - } - } - else - { - m_CMakeInstance->SetHomeDirectory(m_WhereSource.c_str()); - m_CMakeInstance->SetStartDirectory(m_WhereSource.c_str()); - m_CMakeInstance->SetHomeOutputDirectory(m_WhereBuild.c_str()); - m_CMakeInstance->SetStartOutputDirectory(m_WhereBuild.c_str()); - const char* defaultGenerator = 0; -#if defined(_WIN32) - defaultGenerator = "NMake Makefiles"; -#else defined(_WIN32) - defaultGenerator = "Unix Makefiles"; -#endif defined(_WIN32) - m_CMakeInstance->SetGlobalGenerator( - m_CMakeInstance->CreateGlobalGenerator(defaultGenerator)); - m_CMakeInstance->SetCMakeCommand(m_PathToExecutable.c_str()); - m_CMakeInstance->LoadCache(); - if(m_CMakeInstance->Configure() != 0) - { - cmSystemTools::Error( - "Error in configuration process, project files may be invalid"); - } - // update the GUI with any new values in the caused by the - // generation process - this->LoadCacheFromDiskToGUI(); - } - - // path is up-to-date now - m_BuildPathChanged = false; - - - // put the cursor back - fl_cursor(FL_CURSOR_DEFAULT,FL_BLACK,FL_WHITE); - fl_message("Done !"); - -} - - - - -/** - * Load Cache from disk to GUI - */ -void -CMakeSetupGUIImplementation -::LoadCacheFromDiskToGUI( void ) -{ - - - if( m_WhereBuild != "" ) - { - cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager(); - cachem->LoadCache( m_WhereBuild.c_str() ); - this->FillCacheGUIFromCacheManager(); - } -} - - -/** - * Save Cache from disk to GUI - */ -void -CMakeSetupGUIImplementation -::SaveCacheFromGUI( void ) -{ - cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager(); - this->FillCacheManagerFromCacheGUI(); - if(m_WhereBuild != "") - { - cachem->SaveCache(m_WhereBuild.c_str()); - } -} - - -/** - * Fill Cache GUI from cache manager - */ -void -CMakeSetupGUIImplementation -::FillCacheGUIFromCacheManager( void ) -{ - cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager(); - cmCacheManager::CacheIterator it = cachem->NewIterator(); - size_t size = m_CacheEntriesList.GetItems().size(); - bool reverseOrder = false; - // if there are already entries in the cache, then - // put the new ones in the top, so they show up first - if(size) - { - reverseOrder = true; - } - - // all the current values are not new any more - std::set items = m_CacheEntriesList.GetItems(); - for(std::set::iterator i = items.begin(); - i != items.end(); ++i) - { - fltk::PropertyItem* item = *i; - item->m_NewValue = false; - } - // Prepare to add rows to the FLTK scroll/pack - propertyListPack->clear(); - propertyListPack->begin(); - -// const cmCacheManager::CacheEntryMap &cache = -// cmCacheManager::GetInstance()->GetCacheMap(); -// if(cache.size() == 0) -// { -// m_OKButton->deactivate(); -// } -// else -// { -// m_OKButton->activate(); -// } - - - - - for(cmCacheManager::CacheIterator i = cachem->NewIterator(); - !i.IsAtEnd(); i.Next()) - { - const char* key = i.GetName(); - std::string value = i.GetValue(); - bool advanced = i.GetPropertyAsBool("ADVANCED"); - switch(i.GetType() ) - { - case cmCacheManager::BOOL: - if(cmSystemTools::IsOn(value.c_str())) - { - m_CacheEntriesList.AddProperty(key, - "ON", - i.GetProperty("HELPSTRING"), - fltk::PropertyList::CHECKBOX,"", - reverseOrder); - } - else - { - m_CacheEntriesList.AddProperty(key, - "OFF", - i.GetProperty("HELPSTRING"), - fltk::PropertyList::CHECKBOX,"", - reverseOrder); - } - break; - case cmCacheManager::PATH: - m_CacheEntriesList.AddProperty(key, - value.c_str(), - i.GetProperty("HELPSTRING"), - fltk::PropertyList::PATH,"", - reverseOrder); - break; - case cmCacheManager::FILEPATH: - m_CacheEntriesList.AddProperty(key, - value.c_str(), - i.GetProperty("HELPSTRING"), - fltk::PropertyList::FILE,"", - reverseOrder); - break; - case cmCacheManager::STRING: - m_CacheEntriesList.AddProperty(key, - value.c_str(), - i.GetProperty("HELPSTRING"), - fltk::PropertyList::EDIT,"", - reverseOrder); - break; - case cmCacheManager::STATIC: - case cmCacheManager::INTERNAL: - m_CacheEntriesList.RemoveProperty(key); - break; - } - } - - // Add the old entry to the end of the pack - for(std::set::iterator i = items.begin(); - i != items.end(); ++i) - { - fltk::PropertyItem* item = *i; - if( !(item->m_NewValue) ) - { - new fltk::PropertyItemRow( item ); // GUI of the old property row - } - } - - propertyListPack->end(); - propertyListPack->init_sizes(); - cacheValuesScroll->position( 0, 0 ); - - propertyListPack->redraw(); - - Fl::check(); - - this->UpdateData(false); - -} - - -/** - * UpdateData - */ -void -CMakeSetupGUIImplementation -::UpdateData( bool option ) -{ - dialogWindow->redraw(); - Fl::check(); -} - - - -/** - * Fill cache manager from Cache GUI - */ -void -CMakeSetupGUIImplementation -::FillCacheManagerFromCacheGUI( void ) -{ - cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager(); - cmCacheManager::CacheIterator it = cachem->NewIterator(); - std::set items = m_CacheEntriesList.GetItems(); - for(std::set::iterator i = items.begin(); - i != items.end(); ++i) - { - fltk::PropertyItem* item = *i; - if ( it.Find((const char*)item->m_propName.c_str()) ) - { - it.SetValue(item->m_curValue.c_str()); - } - if( item->m_Dirty ) - { - m_CacheEntriesList.SetDirty(); - } - } -} - - - - -/** - * Load Recent Directories - */ -void -CMakeSetupGUIImplementation -::LoadRecentDirectories( void ) -{ - std::string home = getenv("HOME"); - std::string filename = home + "/.cmakerc"; - - std::ifstream input; - input.open(filename.c_str()); - - if( input.fail() ) - { - // probably the file doesn't exist - return; - } - - m_RecentBinaryDirectories.clear(); - m_RecentSourceDirectories.clear(); - - std::string key; - std::string onedirectory; - - while( !input.eof() ) - { - input >> key; - - if( input.eof() ) break; - - if( key == "MostRecentSource" ) - { - input >> onedirectory; - m_WhereSource = onedirectory; - sourcePathTextInput->value( m_WhereSource.c_str() ); - } else - if( key == "MostRecentBinary" ) - { - input >> onedirectory; - m_WhereBuild = onedirectory; - binaryPathTextInput->value( m_WhereBuild.c_str() ); - LoadCacheFromDiskToGUI(); - } else - if( key == "Binary" ) - { - input >> onedirectory; - // insert is only done if the directory doesn't exist - m_RecentBinaryDirectories.insert( onedirectory ); - recentBinaryDirectoriesBrowser->add( - (onedirectory.c_str()), - (void*)(onedirectory.c_str()) ); - } else - if( key == "Source" ) - { - input >> onedirectory; - // insert is only done if the directory doesn't exist - m_RecentSourceDirectories.insert( onedirectory ); - recentSourceDirectoriesBrowser->add( - (onedirectory.c_str()), - (void*)(onedirectory.c_str()) ); - } - - } - - input.close(); -} - - - -/** - * Save Recent Directories - */ -void -CMakeSetupGUIImplementation -::SaveRecentDirectories( void ) -{ - std::string home = getenv("HOME"); - - if( home.empty() ) - { - return; - } - - std::string filename = home + "/.cmakerc"; - - std::ofstream output; - output.open(filename.c_str()); - - output << "MostRecentBinary " << m_WhereBuild << std::endl; - output << "MostRecentSource " << m_WhereSource << std::endl; - - // Save Recent binary directories - std::set< std::string >::iterator bindir = - m_RecentBinaryDirectories.begin(); - - while( bindir != m_RecentBinaryDirectories.end() ) - { - output << "Binary " << *bindir << std::endl; - bindir++; - } - - - // Save Recent source directories - std::set< std::string >::iterator srcdir = - m_RecentSourceDirectories.begin(); - - while( srcdir != m_RecentSourceDirectories.end() ) - { - output << "Source " << *srcdir << std::endl; - srcdir++; - } - -} - - -/** - * Show Recent Binary Directories - */ -void -CMakeSetupGUIImplementation -::ShowRecentBinaryDirectories( void ) -{ - if( recentBinaryDirectoriesBrowser->size() ) - { - recentBinaryDirectoriesBrowser->Fl_Widget::show(); - } -} - - -/** - * Show Recent Source Directories - */ -void -CMakeSetupGUIImplementation -::ShowRecentSourceDirectories( void ) -{ - if( recentSourceDirectoriesBrowser->size() ) - { - recentSourceDirectoriesBrowser->Fl_Widget::show(); - } -} - - -/** - * Select one Recent Binary Directory - */ -void -CMakeSetupGUIImplementation -::SelectOneRecentBinaryDirectory( void ) -{ - const int selected = recentBinaryDirectoriesBrowser->value(); - if( selected == 0 ) - { - return; - } - - m_WhereBuild = static_cast( - recentBinaryDirectoriesBrowser->data( selected )); - binaryPathTextInput->value( m_WhereBuild.c_str() ); - recentBinaryDirectoriesBrowser->Fl_Widget::hide(); - m_CacheEntriesList.RemoveAll(); // remove data from other project - LoadCacheFromDiskToGUI(); -} - - -/** - * Select one Recent Source Directory - */ -void -CMakeSetupGUIImplementation -::SelectOneRecentSourceDirectory( void ) -{ - const int selected = recentSourceDirectoriesBrowser->value(); - if( selected == 0 ) - { - return; - } - m_WhereSource = static_cast< char * >( - recentSourceDirectoriesBrowser->data( selected )); - sourcePathTextInput->value( m_WhereSource.c_str() ); - recentSourceDirectoriesBrowser->Fl_Widget::hide(); -} - - - -/** - * Update List of Recent Directories - */ -void -CMakeSetupGUIImplementation -::UpdateListOfRecentDirectories( void ) -{ - - // Update Recent binary directories - // insert is only done if the directory doesn't exist - m_RecentBinaryDirectories.insert( m_WhereBuild ); - - // Update Recent source directories - // insert is only done if the directory doesn't exist - m_RecentSourceDirectories.insert( m_WhereSource ); - -} - - - - - -/** - * Clicked on Configure Button - */ -void -CMakeSetupGUIImplementation -::ClickOnConfigure( void ) -{ - this->RunCMake(false); -} - - - - -/** - * Clicked on OK Button - */ -void -CMakeSetupGUIImplementation -::ClickOnOK( void ) -{ - m_CacheEntriesList.ClearDirty(); - this->RunCMake(true); - this->Close(); -} - - - - -/** - * Clicked on Cancel Button - */ -void -CMakeSetupGUIImplementation -::ClickOnCancel( void ) -{ - if(m_CacheEntriesList.IsDirty()) - { - int userWantsExitEvenThoughOptionsHaveChanged = - fl_ask("You have changed options but not rebuilt, \n" - "are you sure you want to exit?"); - if( userWantsExitEvenThoughOptionsHaveChanged ) - { - this->Close(); - } - } - else - { - this->Close(); - } - -} - - - - - diff --git a/Source/FLTKDialog/CMakeSetupGUIImplementation.h b/Source/FLTKDialog/CMakeSetupGUIImplementation.h deleted file mode 100644 index 3a71ecc5c..000000000 --- a/Source/FLTKDialog/CMakeSetupGUIImplementation.h +++ /dev/null @@ -1,85 +0,0 @@ -/*========================================================================= - - Program: Insight Segmentation & Registration Toolkit - Module: $RCSfile: CMakeSetupGUIImplementation.h,v $ - Language: C++ - Date: $Date: 2005-09-23 21:47:32 $ - Version: $Revision: 1.14 $ - - Copyright (c) 2002 Insight Consortium. All rights reserved. - See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#ifndef CMakeSetupGUIImplementation_h -#define CMakeSetupGUIImplementation_h - -#include "CMakeSetupGUI.h" -#include "FLTKPropertyList.h" -#include - - -/** - * - * This class implements the virtual methods - * declared in the GUI interface - * - */ - -class cmake; - -class CMakeSetupGUIImplementation : public CMakeSetupGUI -{ - -public: - - CMakeSetupGUIImplementation(); - virtual ~CMakeSetupGUIImplementation(); - virtual void Close( void ); - virtual void Show( void ); - virtual void UpdateData( bool option ); - virtual void BrowseForBinaryPath( void ); - virtual void BrowseForSourcePath( void ); - virtual void SetBinaryPath( const char * path ); - virtual void SetSourcePath( const char * path ); - virtual void SaveCacheFromGUI( void ); - virtual void LoadCacheFromDiskToGUI( void ); - virtual void FillCacheGUIFromCacheManager( void ); - virtual void FillCacheManagerFromCacheGUI( void ); - virtual void SetPathToExecutable( const char * path ); - virtual void LoadRecentDirectories(void); - virtual void SaveRecentDirectories(void); - virtual void ShowRecentBinaryDirectories(void); - virtual void ShowRecentSourceDirectories(void); - virtual void SelectOneRecentSourceDirectory(void); - virtual void SelectOneRecentBinaryDirectory(void); - virtual void UpdateListOfRecentDirectories(void); - virtual void ClickOnConfigure(void); - virtual void ClickOnOK(void); - virtual void ClickOnCancel(void); - virtual void RunCMake( bool generateProjectFiles ); - cmake *GetCMakeInstance() {return m_CMakeInstance; } -private: - virtual bool VerifyBinaryPath( const std::string & path ) const; - virtual bool VerifySourcePath( const std::string & path ) const; - virtual std::string ExpandPathAndMakeItAbsolute( const std::string & inputPath ) const; - -private: - fltk::PropertyList m_CacheEntriesList; - std::string m_WhereBuild; - std::string m_WhereSource; - std::string m_PathToExecutable; - std::string m_GeneratorChoiceString; - bool m_BuildPathChanged; - - std::set< std::string > m_RecentBinaryDirectories; - std::set< std::string > m_RecentSourceDirectories; - cmake *m_CMakeInstance; -}; - - -#endif diff --git a/Source/FLTKDialog/FLTKDialog.cxx b/Source/FLTKDialog/FLTKDialog.cxx deleted file mode 100644 index 56bef6a0c..000000000 --- a/Source/FLTKDialog/FLTKDialog.cxx +++ /dev/null @@ -1,44 +0,0 @@ -/*========================================================================= - - Program: Insight Segmentation & Registration Toolkit - Module: $RCSfile: FLTKDialog.cxx,v $ - Language: C++ - Date: $Date: 2007-12-13 22:56:50 $ - Version: $Revision: 1.8 $ - - Copyright (c) 2002 Insight Consortium. All rights reserved. - See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#include "CMakeSetupGUIImplementation.h" -#include "FL/Fl.H" -#include "FL/fl_ask.H" - -#include "cmSystemTools.h" - -int main(int argc, char * argv[] ) -{ - cmSystemTools::FindExecutableDirectory(argv[0]); - - fl_message_font(FL_HELVETICA,11); - - CMakeSetupGUIImplementation * gui - = new CMakeSetupGUIImplementation; - - gui->SetPathToExecutable( argv[0] ); - gui->Show(); - gui->LoadRecentDirectories(); - gui->LoadCacheFromDiskToGUI(); - - Fl::run(); - - delete gui; - - return 0; - -} diff --git a/Source/FLTKDialog/FLTKDialog.dsp b/Source/FLTKDialog/FLTKDialog.dsp deleted file mode 100644 index d912409f0..000000000 --- a/Source/FLTKDialog/FLTKDialog.dsp +++ /dev/null @@ -1,116 +0,0 @@ -# Microsoft Developer Studio Project File - Name="FLTKDialog" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=FLTKDialog - 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 "FLTKDialog.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 "FLTKDialog.mak" CFG="FLTKDialog - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "FLTKDialog - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "FLTKDialog - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "FLTKDialog - 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 "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "H:/usr/local/fltk" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /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 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 fltk.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "FLTKDialog - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "FLTKDialog___Win32_Debug" -# PROP BASE Intermediate_Dir "FLTKDialog___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "FLTKDialog___Win32_Debug" -# PROP Intermediate_Dir "FLTKDialog___Win32_Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "H:/usr/local/fltk" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /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 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 fltk.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"H:/usr/local/fltk/lib/Debug" - -!ENDIF - -# Begin Target - -# Name "FLTKDialog - Win32 Release" -# Name "FLTKDialog - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\CMakeSetupGUI.cpp -# End Source File -# Begin Source File - -SOURCE=.\CMakeSetupGUIImplementation.cpp -# End Source File -# Begin Source File - -SOURCE=.\FLTKDialog.cpp -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\CMakeSetupGUI.h -# End Source File -# Begin Source File - -SOURCE=.\CMakeSetupGUIImplementation.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/Source/FLTKDialog/FLTKPropertyItemRow.cxx b/Source/FLTKDialog/FLTKPropertyItemRow.cxx deleted file mode 100644 index f183e30a8..000000000 --- a/Source/FLTKDialog/FLTKPropertyItemRow.cxx +++ /dev/null @@ -1,387 +0,0 @@ -/*========================================================================= - - Program: Insight Segmentation & Registration Toolkit - Module: $RCSfile: FLTKPropertyItemRow.cxx,v $ - Language: C++ - Date: $Date: 2007-08-21 20:21:09 $ - Version: $Revision: 1.20 $ - - Copyright (c) 2002 Insight Consortium. All rights reserved. - See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -#include "FLTKPropertyItemRow.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "../cmCacheManager.h" -#include "FLTKPropertyList.h" -#include "CMakeSetupGUIImplementation.h" -#include -#include "../cmake.h" -#include "../cmCacheManager.h" - -namespace fltk { - - - -CMakeSetupGUIImplementation * PropertyItemRow::m_CMakeSetup = 0; - - - - -PropertyItemRow -::PropertyItemRow( PropertyItem * pItem ):Fl_Tile(0,0,10,10,"") -{ - - m_PropertyItem = pItem; - m_ItemValue = new ItemValue; - - const unsigned int fontsize = 11; - const unsigned int nameWidth = 200; - const unsigned int textWidth = 1400; - const unsigned int checkWidth = textWidth; - const unsigned int browseWidth = 20; - const unsigned int firstColumn = 0; - - const unsigned int secondColumn = nameWidth; - - const unsigned int rowHeight = 20; - - size( nameWidth + textWidth , rowHeight ); - - // Make the parent Fl_Pack widget at least a row wide. - parent()->size( nameWidth + textWidth , rowHeight ); - - m_NameButton = new - Fl_Button( firstColumn, 0, nameWidth, rowHeight, - m_PropertyItem->m_propName.c_str() ); - - m_NameButton->align( FL_ALIGN_CLIP | FL_ALIGN_LEFT | FL_ALIGN_INSIDE ); - m_NameButton->labelsize( fontsize ); - m_NameButton->box( FL_DOWN_BOX ); - m_NameButton->size( secondColumn, rowHeight ); - m_NameButton->callback( NameButtonCallback, (void *)m_PropertyItem ); - if( m_PropertyItem->m_NewValue ) - { - m_NameButton->color(FL_RED); - } - - switch( m_PropertyItem->m_nItemType ) - { - case PropertyList::COMBO: - { - break; - } - case PropertyList::EDIT: - { - - Fl_Input * input = new - Fl_Input( secondColumn, 0, textWidth ,rowHeight ,""); - input->value( m_PropertyItem->m_curValue.c_str() ); - input->textsize( fontsize ); - input->callback( InputTextCallback, (void *)m_PropertyItem ); - input->when( FL_WHEN_CHANGED ); - - break; - } - case PropertyList::COLOR: - { - Fl_Button * colorButton = new - Fl_Button( secondColumn, 0, textWidth ,rowHeight ,""); - colorButton->labelsize( fontsize ); - //colorButton->color(); - colorButton->callback( ColorSelectionCallback, (void *)m_PropertyItem ); - - break; - } - case PropertyList::FILE: - { - - Fl_Button * browseButton = new - Fl_Button( secondColumn, 0, browseWidth ,rowHeight ,"..."); - browseButton->labelsize( fontsize ); - - Fl_Input * input = new - Fl_Input( secondColumn+browseWidth, 0, textWidth ,rowHeight ,""); - input->value( m_PropertyItem->m_curValue.c_str() ); - input->textsize( fontsize ); - - m_ItemValue->m_InputText = input; - m_ItemValue->m_PropertyItem = m_PropertyItem; - - browseButton->callback( BrowsePathCallback, (void *)m_ItemValue ); - input->callback( InputTextCallback, m_PropertyItem ); - input->when( FL_WHEN_CHANGED ); - - break; - } - case PropertyList::CHECKBOX: - { - Fl_Button * button = new - Fl_Button( secondColumn, 0, checkWidth ,rowHeight ,""); - button->align( FL_ALIGN_INSIDE | FL_ALIGN_LEFT ); - button->callback( CheckButtonCallback, (void *)m_PropertyItem ); - - if( m_PropertyItem->m_curValue == "ON" ) - { - button->label(" ON "); - button->value(1); - } - else if( m_PropertyItem->m_curValue == "OFF" ) - { - button->label(" OFF "); - button->value(0); - } - button->type( FL_TOGGLE_BUTTON ); - button->labelsize( fontsize ); - break; - } - case PropertyList::PATH: - { - - Fl_Button * browseButton = new - Fl_Button( secondColumn, 0, browseWidth ,rowHeight ,"..."); - browseButton->labelsize( fontsize ); - - Fl_Input * input = new - Fl_Input( secondColumn+browseWidth, 0, textWidth ,rowHeight ,""); - input->value( m_PropertyItem->m_curValue.c_str() ); - input->textsize( fontsize ); - - m_ItemValue->m_InputText = input; - m_ItemValue->m_PropertyItem = m_PropertyItem; - - browseButton->callback( BrowsePathCallback, (void *)m_ItemValue ); - input->callback( InputTextCallback, (void *)m_PropertyItem ); - input->when( FL_WHEN_CHANGED ); - - break; - } - break; - default: - fl_alert("Unkown item type %d",m_PropertyItem->m_nItemType); - break; - } - - - end(); // Close the inclusion of widgets in the Tile object - -} - - - - - -PropertyItemRow::~PropertyItemRow( ) -{ - delete m_ItemValue; -} - - - -void PropertyItemRow -::SetCMakeSetupGUI( CMakeSetupGUIImplementation * cmakeSetup ) -{ - m_CMakeSetup = cmakeSetup; -} - - - -void -PropertyItemRow:: -NameButtonCallback( Fl_Widget * widget, void * data) -{ - Fl_Button * button = (Fl_Button *)widget; - PropertyItem * pItem = (PropertyItem *)data; - - static Fl_Menu_Button * popupMenu = 0; - if( !popupMenu ) - { - int lastMousePositionX = Fl::event_x(); - int lastMousePositionY = Fl::event_y(); - popupMenu = new Fl_Menu_Button(lastMousePositionX, - lastMousePositionY,100,200); - } - - popupMenu->type( Fl_Menu_Button::POPUP3 ); - popupMenu->add("Help|Remove|Properties..."); - popupMenu->popup(); - - typedef enum { - HELP=0, - REMOVE, - PROPERTIES - } MenuOptions; - - - switch( popupMenu->value() ) - { - case HELP: - fl_message( pItem->m_HelpString.c_str() ); - break; - case REMOVE: // Remove - { - const char * propertyName = pItem->m_propName.c_str(); - int answer = fl_ask( "Do you want to remove property %s", propertyName ); - if( answer == 1 ) - { - // Remove the entry from the cache - m_CMakeSetup->GetCMakeInstance()->GetCacheManager()->RemoveCacheEntry(propertyName); - // Get the parent: Fl_Tile that manages the whole row in the GUI - Fl_Group * parentGroup = dynamic_cast(button->parent()); - // Get the grandParent: Fl_Pack with the property list - Fl_Group * grandParentGroup = dynamic_cast( parentGroup->parent() ); - // Remove the row from the list - grandParentGroup->remove( *parentGroup ); - // Destroy the row - delete parentGroup; // Patricide... ? - // Redraw the list - grandParentGroup->redraw(); - FillCacheManagerFromCacheGUI(); - return; - } - break; - } - case PROPERTIES: // Properties - break; - } -} - - - -void -PropertyItemRow:: -FillCacheManagerFromCacheGUI( void ) -{ - if( m_CMakeSetup ) - { - m_CMakeSetup->FillCacheManagerFromCacheGUI(); - } -} - - - -void -PropertyItemRow:: -CheckButtonCallback( Fl_Widget * widget, void * data) -{ - Fl_Button * button = (Fl_Button *)widget; - PropertyItem * pItem = (PropertyItem *)data; - - int value = button->value(); - - if( value ) - { - button->label(" ON "); - pItem->m_curValue = "ON"; - } - else - { - button->label(" OFF "); - pItem->m_curValue = "OFF"; - } - - pItem->m_Dirty = true; - - button->redraw(); - - FillCacheManagerFromCacheGUI(); - -} - - - -void -PropertyItemRow:: -InputTextCallback( Fl_Widget * widget, void * data) -{ - Fl_Input * input = (Fl_Input *)widget; - PropertyItem * item = (PropertyItem *)data; - - item->m_curValue = input->value(); - - item->m_Dirty = true; - - FillCacheManagerFromCacheGUI(); - -} - - - -void -PropertyItemRow:: -ColorSelectionCallback( Fl_Widget * widget, void * data) -{ - Fl_Button * colorButton = (Fl_Button *)widget; - PropertyItem * propertyItem = (PropertyItem *)data; - - static Fl_Color colorIndex = FL_FREE_COLOR; - - unsigned char red = 0; - unsigned char blue = 0; - unsigned char green = 0; - fl_color_chooser("Please pick a color",red,green,blue); - char buffer[300]; - sprintf( buffer,"RGB(%d,%d,%d)", red, green, blue ); - propertyItem->m_curValue = buffer; - Fl::set_color( colorIndex, red, green, blue ); - colorButton->color( colorIndex ); - colorIndex = (Fl_Color)( colorIndex + 1 ); - if( colorIndex == FL_FREE_COLOR + FL_NUM_FREE_COLOR ) - { - fl_alert("Maximum number of free colors used, recycling..."); - colorIndex = FL_FREE_COLOR; - } - - propertyItem->m_Dirty = true; - - colorButton->redraw(); - - FillCacheManagerFromCacheGUI(); - -} - - - - - - -void -PropertyItemRow:: -BrowsePathCallback( Fl_Widget * widget, void * data) -{ - ItemValue * itemValue = (ItemValue *)data; - Fl_Input * inputText = itemValue->m_InputText; - PropertyItem * propertyItem = itemValue->m_PropertyItem; - - const char * newpath = - fl_file_chooser("Select a path","*", inputText->value() ); - - if( newpath ) - { - propertyItem->m_curValue = newpath; - inputText->value( newpath ); - } - - propertyItem->m_Dirty = true; - - FillCacheManagerFromCacheGUI(); - -} - - - - -} // end namespace fltk diff --git a/Source/FLTKDialog/FLTKPropertyItemRow.h b/Source/FLTKDialog/FLTKPropertyItemRow.h deleted file mode 100644 index 84446b8d3..000000000 --- a/Source/FLTKDialog/FLTKPropertyItemRow.h +++ /dev/null @@ -1,83 +0,0 @@ -/*========================================================================= - - Program: Insight Segmentation & Registration Toolkit - Module: $RCSfile: FLTKPropertyItemRow.h,v $ - Language: C++ - Date: $Date: 2005-09-23 21:47:32 $ - Version: $Revision: 1.12 $ - - Copyright (c) 2002 Insight Consortium. All rights reserved. - See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#ifndef FLTKPropertyItemRow_h -#define FLTKPropertyItemRow_h - -#include "FLTKPropertyList.h" - -#include -#include -#include - - -class CMakeSetupGUIImplementation; - - -namespace fltk { - - -/** - - Class to manage a GUI row corresponding to a property - - */ -class PropertyItemRow : public Fl_Tile -{ - - // Helper class for passing data to callbacks - struct ItemValue - { - PropertyItem * m_PropertyItem; - Fl_Input * m_InputText; - }; - - - public: - - PropertyItemRow( PropertyItem *); - ~PropertyItemRow(); - - private: - - PropertyItem * m_PropertyItem; - ItemValue * m_ItemValue; - Fl_Button * m_NameButton; - - static CMakeSetupGUIImplementation * m_CMakeSetup; - - static void CheckButtonCallback( Fl_Widget *, void *); - static void NameButtonCallback( Fl_Widget *, void *); - static void InputTextCallback( Fl_Widget *, void *); - static void BrowsePathCallback( Fl_Widget *, void *); - static void ColorSelectionCallback( Fl_Widget * widget, void * data); - - - static void FillCacheManagerFromCacheGUI( void ); - - public: - - static void SetCMakeSetupGUI( CMakeSetupGUIImplementation * ); -}; - - -} // end namespace fltk - - -#endif - - diff --git a/Source/FLTKDialog/FLTKPropertyList.cxx b/Source/FLTKDialog/FLTKPropertyList.cxx deleted file mode 100644 index 59627bca9..000000000 --- a/Source/FLTKDialog/FLTKPropertyList.cxx +++ /dev/null @@ -1,184 +0,0 @@ -/*========================================================================= - - Program: Insight Segmentation & Registration Toolkit - Module: $RCSfile: FLTKPropertyList.cxx,v $ - Language: C++ - Date: $Date: 2007-08-21 20:21:09 $ - Version: $Revision: 1.10 $ - - Copyright (c) 2002 Insight Consortium. All rights reserved. - See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -// FLTKPropertyList.cxx : implementation file -// - -#include "FLTKPropertyList.h" -#include "../cmCacheManager.h" -#include "FLTKPropertyItemRow.h" -#include "FL/filename.H" -#include "FL/Fl_File_Chooser.H" -#include "FL/Fl_Color_Chooser.H" -#include "FL/fl_ask.H" -#include "FL/Fl_Button.H" -#include "CMakeSetupGUIImplementation.h" - - -namespace fltk { - -///////////////////////////////////////////////////////////////////////////// -// PropertyList - -PropertyList::PropertyList( CMakeSetupGUIImplementation * cmakeSetup ) -{ - m_CMakeSetup = cmakeSetup; - PropertyItemRow::SetCMakeSetupGUI( cmakeSetup ); - m_Dirty = false; -} - - - -PropertyList::~PropertyList() -{ - for(std::set::iterator i = m_PropertyItems.begin(); - i != m_PropertyItems.end(); ++i) - { - delete *i; - } -} - - - - -int PropertyList::AddItem( std::string txt) -{ - int nIndex =0; - return nIndex; -} - - - -int PropertyList::AddPropItem(PropertyItem* pItem, bool reverseOrder) -{ - - int nIndex =0; - if(reverseOrder) - { - nIndex = 0; - } - else - { - nIndex = m_PropertyItems.size(); - } - - new PropertyItemRow( pItem ); // GUI of the new property row - - m_PropertyItems.insert(pItem); - - return nIndex; -} - - - -int PropertyList::AddProperty(const char* name, - const char* value, - const char* helpString, - int type, - const char* comboItems, - bool reverseOrder) -{ - - PropertyItem* pItem = 0; - for(int i =0; i < this->GetCount(); ++i) - { - PropertyItem* item = this->GetItem(i); - if(item->m_propName == name) - { - pItem = item; - if(pItem->m_curValue != value) - { - pItem->m_curValue = value; - pItem->m_HelpString = helpString; - Invalidate(); - } - return i; - } - } - // if it is not found, then create a new one - if(!pItem) - { - pItem = new PropertyItem(name, value, helpString, type, comboItems); - } - return this->AddPropItem(pItem,reverseOrder); -} - - -void PropertyList::RemoveProperty(const char* name) -{ - for(int i =0; i < this->GetCount(); ++i) - { - PropertyItem* pItem = (PropertyItem*) GetItemDataPtr(i); - if(pItem->m_propName == name) - { - m_PropertyItems.erase(pItem); - delete pItem; - return; - } - } -} - - - -void PropertyList::RemoveAll() -{ - int c = this->GetCount(); - for(int i =0; i < c; ++i) - { - PropertyItem* pItem = (PropertyItem*) GetItemDataPtr(0); -// cmCacheManager::GetInstance()->RemoveCacheEntry(pItem->m_propName.c_str()); - m_PropertyItems.erase(pItem); - delete pItem; - } - Invalidate(); -} - - - -PropertyItem * PropertyList::GetItemDataPtr(int index) -{ - std::set::iterator it = m_PropertyItems.begin(); - for(int i=0; it != m_PropertyItems.end() && i::iterator it = m_PropertyItems.begin(); - for(int i=0; it != m_PropertyItems.end() && i - - -class CMakeSetupGUIImplementation; - - -namespace fltk { - - -///////////////////////////////////////////////////////////////////////////// -//PropertyList Items -class PropertyItem -{ -// Attributes -public: - std::string m_HelpString; - std::string m_propName; - std::string m_curValue; - int m_nItemType; - std::string m_cmbItems; - bool m_Removed; - bool m_NewValue; - bool m_Dirty; -public: - PropertyItem( std::string propName, - std::string curValue, - std::string helpString, - int nItemType, - std::string cmbItems ) - { - m_HelpString = helpString; - m_propName = propName; - m_curValue = curValue; - m_nItemType = nItemType; - m_cmbItems = cmbItems; - m_Removed = false; - m_NewValue = true; - m_Dirty = false; - } -}; - - - - - -///////////////////////////////////////////////////////////////////////////// -// PropertyList window - -class PropertyList -{ -// Construction -public: - enum ItemType - { - COMBO = 0, - EDIT, - COLOR, - FONT, - FILE, - CHECKBOX, - PATH - }; - - PropertyList( CMakeSetupGUIImplementation * ); - -// Attributes -public: - -// Operations -public: - int AddItem( std::string txt ); - int AddProperty(const char* name, - const char* value, - const char* helpString, - int type, - const char* comboItems, - bool reverseOrder); - void RemoveProperty(const char* name); - std::set & GetItems() - { - return m_PropertyItems; - } - - void InvalidateList(void); - void Invalidate(void) - { - // fltk redraw(); - } - - int GetCount(void) const - { - return m_PropertyItems.size(); - } - void OnButton(void); - void OnHelp(void); - void RemoveAll(); - PropertyItem* GetItem(int index); - PropertyItem* GetItemDataPtr(int m_curSel); - - void ClearDirty(void) { m_Dirty = false; } - void SetDirty(void) { m_Dirty = true; } - bool IsDirty(void) const { return m_Dirty; } - -// Implementation -public: - virtual ~PropertyList(); - -protected: - - int AddPropItem(PropertyItem* pItem,bool reverseOrder); - - std::set m_PropertyItems; - - CMakeSetupGUIImplementation * m_CMakeSetup; - - bool m_Dirty; - -}; - - -} // end namespace fltk - -#endif diff --git a/Source/MFCDialog/.cvsignore b/Source/MFCDialog/.cvsignore deleted file mode 100644 index 329d484df..000000000 --- a/Source/MFCDialog/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Debug diff --git a/Source/MFCDialog/CMakeCommandLineInfo.cpp b/Source/MFCDialog/CMakeCommandLineInfo.cpp deleted file mode 100644 index 15c5c811f..000000000 --- a/Source/MFCDialog/CMakeCommandLineInfo.cpp +++ /dev/null @@ -1,142 +0,0 @@ -// CMakeCommandLineInfo.cpp : command line arguments -// - -#include "stdafx.h" -#include "CMakeCommandLineInfo.h" -#include "cmSystemTools.h" - -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -/////////////////////////////////////////////////////////////// -// CMakeCommandLineInfo - -CMakeCommandLineInfo::CMakeCommandLineInfo() -{ - this->m_WhereSource = _T(""); - this->m_WhereBuild = _T(""); - this->m_AdvancedValues = FALSE; - this->m_GeneratorChoiceString = _T(""); - this->m_LastUnknownParameter = _T(""); - - // Find the path to the CMakeSetup executable. - char fname[4096]; - ::GetModuleFileName(0, fname, 4096); - m_Argv0 = fname; - m_Argv.push_back(m_Argv0.c_str()); -} - -CMakeCommandLineInfo::~CMakeCommandLineInfo() -{ -} - -int CMakeCommandLineInfo::GetBoolValue(const CString& v) { - CString value = v; - value.MakeLower(); - if (value == "1" || - value == "on" || - value == "true" || - value == "yes") - { - return 1; - } - else if (value == "0" || - value == "off" || - value == "false" || - value == "no") - { - return -1; - } - return 0; -} - -/////////////////////////////////////////////////////////////// -// Parse param - -void CMakeCommandLineInfo::ParseParam(LPCTSTR lpszParam, BOOL bFlag, BOOL bLast) -{ - // Construct the full name of the argument. - cmStdString param = lpszParam; - cmStdString value; - if(bFlag) - { - // Since bFlag is set, either a - or a / was removed from the - // parameter value. Assume it was a - unless the second character - // was a / which indicates a network path argument. - if(param.length() > 0 && param[0] == '/') - { - value = "/"; - } - else - { - value = "-"; - } - } - value += param; - - // Add the argument and reset the argv table in case strings were - // moved. - m_Arguments.push_back(value); - m_Argv.clear(); - m_Argv.push_back(m_Argv0.c_str()); - for(unsigned int i=0; i < m_Arguments.size(); ++i) - { - m_Argv.push_back(m_Arguments[i].c_str()); - } - - // Look for known flags. - if(!bFlag) - { - this->m_LastUnknownParameter = lpszParam; - } - else - { - CString sParam(lpszParam); - // Single letter valued flag like /B=value or /B:value - CString value; - if (sParam[1] == '=' || sParam[1] == ':') - { - value = sParam.Right(sParam.GetLength() - 2); - } - else - { - value = sParam.Right(sParam.GetLength()-1); - } - int res; - switch (sParam[0]) - { - case 'A': - res = CMakeCommandLineInfo::GetBoolValue(value); - if (res == 1) - { - this->m_AdvancedValues = TRUE; - } - else if (res == -1) - { - this->m_AdvancedValues = FALSE; - } - break; - case 'B': - { - std::string path = cmSystemTools::CollapseFullPath((const char*)value); - this->m_WhereBuild = path.c_str(); - break; - } - case 'G': - this->m_GeneratorChoiceString = value; - break; - case 'H': - { - std::string path = cmSystemTools::CollapseFullPath((const char*)value); - this->m_WhereSource = path.c_str(); - break; - } - } - } - - // Call the base class to ensure proper command line processing - CCommandLineInfo::ParseParam(lpszParam, bFlag, bLast); -} diff --git a/Source/MFCDialog/CMakeCommandLineInfo.h b/Source/MFCDialog/CMakeCommandLineInfo.h deleted file mode 100644 index 974a09f8f..000000000 --- a/Source/MFCDialog/CMakeCommandLineInfo.h +++ /dev/null @@ -1,70 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: CMakeCommandLineInfo.h,v $ - Language: C++ - Date: $Date: 2003-07-23 21:31:25 $ - Version: $Revision: 1.6 $ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -// CMakeCommandLineInfo.h : main header file for the command line arguments -// - -#if !defined(CMAKECOMMANDLINEINFO_H) -#define CMAKECOMMANDLINEINFO_H - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#ifndef __AFXWIN_H__ -#error include 'stdafx.h' before including this file for PCH -#endif - -#include "../cmStandardIncludes.h" - -/////////////////////////////////////////////////////////////// -// CMakeCommandLineInfo: -// See CMakeCommandLineInfo.cpp for the implementation of this class -// - -class CMakeCommandLineInfo : public CCommandLineInfo -{ - // Construction -public: - CMakeCommandLineInfo(); - - // Attributes -public: - CString m_WhereSource; - CString m_WhereBuild; - BOOL m_AdvancedValues; - CString m_GeneratorChoiceString; - CString m_LastUnknownParameter; - - int GetArgC() { return static_cast(m_Argv.size()); } - const char*const* GetArgV() { return &*m_Argv.begin(); } - - std::string m_Argv0; - std::vector m_Arguments; - std::vector m_Argv; - - // Operations -public: - void ParseParam(const TCHAR* pszParam, BOOL bFlag, BOOL bLast); - - // Implementation -public: - virtual ~CMakeCommandLineInfo(); -protected: - static int GetBoolValue(const CString&); -}; - -#endif // !defined(CMAKECOMMANDLINEINFO_H) diff --git a/Source/MFCDialog/CMakeGenDialog.cpp b/Source/MFCDialog/CMakeGenDialog.cpp deleted file mode 100755 index e1769b6aa..000000000 --- a/Source/MFCDialog/CMakeGenDialog.cpp +++ /dev/null @@ -1,122 +0,0 @@ -// CMakeGenDialog.cpp : implementation file -// - -#include "stdafx.h" -#include "CMakeSetup.h" -#include "CMakeGenDialog.h" -#include "../cmake.h" - -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -///////////////////////////////////////////////////////////////////////////// -// CCMakeGenDialog dialog - - -CCMakeGenDialog::CCMakeGenDialog(CWnd* pParent /*=NULL*/) - : CDialog(CCMakeGenDialog::IDD, pParent) -{ - //{{AFX_DATA_INIT(CCMakeGenDialog) - //}}AFX_DATA_INIT -} - - -void CCMakeGenDialog::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CCMakeGenDialog) - DDX_Control(pDX, IDC_BuildForLabel, m_BuildForLabel); - DDX_Control(pDX, IDC_Generator, m_GeneratorChoice); - DDX_CBStringExact(pDX, IDC_Generator, m_GeneratorChoiceString); - //}}AFX_DATA_MAP -} - - -BEGIN_MESSAGE_MAP(CCMakeGenDialog, CDialog) - //{{AFX_MSG_MAP(CCMakeGenDialog) - // NOTE: the ClassWizard will add message map macros here - ON_CBN_EDITCHANGE(IDC_Generator, OnEditchangeGenerator) - //}}AFX_MSG_MAP -END_MESSAGE_MAP() - -///////////////////////////////////////////////////////////////////////////// -// CCMakeGenDialog message handler - - void CCMakeGenDialog::OnEditchangeGenerator() -{ - // TODO: Add your control notification handler code here - -} - - -BOOL CCMakeGenDialog::OnInitDialog() -{ - CDialog::OnInitDialog(); - std::vector names; - this->m_CMakeInstance->GetRegisteredGenerators(names); - for(std::vector::iterator i = names.begin(); - i != names.end(); ++i) - { - m_GeneratorChoice.AddString(i->c_str()); - } - - // we want to pick the best generator for their system first we check to - // see if they have run cmake before, if so we use that generator - std::string mp; - bool done = false; - - // is the last generator set? If so use it - mp = "[HKEY_CURRENT_USER\\Software\\Kitware" - "\\CMakeSetup\\Settings\\StartPath;LastGenerator]"; - cmSystemTools::ExpandRegistryValues(mp); - if(mp != "/registry") - { - m_GeneratorChoiceString = mp.c_str(); - done = true; - } - struct regToGen - { - const char* Registry; - const char* GeneratorName; - }; - regToGen installedGenerators[] = { - // VS 9 - { "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft" - "\\VisualStudio\\9.0\\Setup;Dbghelp_path]", "Visual Studio 9 2008"}, - // VS 8 - { "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft" - "\\VisualStudio\\8.0\\Setup;Dbghelp_path]", "Visual Studio 8 2005"}, - // VS 7.1 - {"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft" - "\\VisualStudio\\7.1;InstallDir]", "Visual Studio 7 .NET 2003"}, - // VS 7 - {"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft" - "\\VisualStudio\\7.0;InstallDir]", "Visual Studio 7"}, - {0,0} - }; - for(regToGen* ptr = installedGenerators; ptr->Registry != 0 && !done; ptr++) - { - mp = ptr->Registry; - cmSystemTools::ExpandRegistryValues(mp); - if(mp != "/registry") - { - m_GeneratorChoiceString = ptr->GeneratorName; - done = true; - } - } - - // if still not done just guess on VS 6 - if (!done) - { - m_GeneratorChoiceString = "Visual Studio 6"; - } - - this->UpdateData(FALSE); - - return TRUE; // return TRUE unless you set the focus to a control -} - - diff --git a/Source/MFCDialog/CMakeGenDialog.h b/Source/MFCDialog/CMakeGenDialog.h deleted file mode 100755 index e7e4a8b84..000000000 --- a/Source/MFCDialog/CMakeGenDialog.h +++ /dev/null @@ -1,70 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: CMakeGenDialog.h,v $ - Language: C++ - Date: $Date: 2005-03-28 18:23:07 $ - Version: $Revision: 1.1 $ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -#if !defined(CMAKE_GEN_DIALOG_INCLUDED) -#define CMAKE_GEN_DIALOG_INCLUDED - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 -// CMakeGenDialog.h : header file -// - -///////////////////////////////////////////////////////////////////////////// -// CCMakeGenDialog dialog - -class cmake; - -class CCMakeGenDialog : public CDialog -{ -// Construction -public: - CCMakeGenDialog(CWnd* pParent = NULL); // standard constructor - -// Dialog Data - //{{AFX_DATA(CCMakeGenDialog) - enum { IDD = IDD_GEN_DIALOG }; - CStatic m_BuildForLabel; - CComboBox m_GeneratorChoice; - CString m_GeneratorChoiceString; - //}}AFX_DATA - - -// Overrides - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CCMakeGenDialog) - protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - //}}AFX_VIRTUAL - -// Implementation -protected: - - // Generated message map functions - //{{AFX_MSG(CCMakeGenDialog) - virtual BOOL OnInitDialog(); - afx_msg void OnEditchangeGenerator(); - //}}AFX_MSG - DECLARE_MESSAGE_MAP() - - public: - cmake *m_CMakeInstance; -}; - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif diff --git a/Source/MFCDialog/CMakeLists.txt b/Source/MFCDialog/CMakeLists.txt deleted file mode 100644 index 3b1f3b948..000000000 --- a/Source/MFCDialog/CMakeLists.txt +++ /dev/null @@ -1,109 +0,0 @@ -SET( SRCS - CMakeSetup.h - CMakeSetup.cpp - MakeHelp.h - MakeHelp.cpp - CMakeGenDialog.h - CMakeGenDialog.cpp - CMakeSetup.rc - CMakeSetupDialog.h - CMakeSetupDialog.cpp - PathDialog.h - PathDialog.cpp - PropertyList.cpp - StdAfx.h - StdAfx.cpp - resource.h - CMakeCommandLineInfo.cpp -) - -# add stuff to use MFC in this executable -ADD_DEFINITIONS(-D_AFXDLL) - -# Use of CMAKE_MFC_FLAG -# Values: -# 0: Use Standard Windows Libraries -# 1: Use MFC in a Static Library -# 2: Use MFC in a Shared DLL -SET(CMAKE_MFC_FLAG 2) - -ADD_EXECUTABLE(CMakeSetup WIN32 ${SRCS}) -TARGET_LINK_LIBRARIES(CMakeSetup CMakeLib) -ADD_DEPENDENCIES(CMakeSetup cmake) - - -# some older versions of cmake do not have -# a patch version set so we need to set it -# so that a later if will not fail, this has -# to be done all the time for all generators -# since if statements are evaluated even if -# inside a false if, they must still parse so for -# if (CMAKE_PATCH_VERSION GREATER 4) not to -# fail CMAKE_PATCH_VERSION must be set -IF(${CMAKE_MAJOR_VERSION} LESS 3) - IF(NOT DEFINED CMAKE_PATCH_VERSION) - SET(CMAKE_PATCH_VERSION 0) - ENDIF(NOT DEFINED CMAKE_PATCH_VERSION) -ENDIF(${CMAKE_MAJOR_VERSION} LESS 3) - -# for MSVC greater than 71 assume mt is around -# for other versions allow for the cache to be -# seeded with a value for CMAKE_MT_EXECUTABLE -# this allows for MSVC71 to build CMakeSetup that -# will have the manifest stuff for windows vista -IF(MSVC AND NOT MSVC60 AND NOT MSVC70 AND NOT MSVC71) - SET(CMAKE_MT_EXECUTABLE mt) -ENDIF(MSVC AND NOT MSVC60 AND NOT MSVC70 AND NOT MSVC71) -IF(CMAKE_MT_EXECUTABLE) - SET(exe "${CMAKE_CFG_INTDIR}/CMakeSetup.exe") - IF(EXECUTABLE_OUTPUT_PATH) - SET(exe "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/CMakeSetup.exe") - ENDIF(EXECUTABLE_OUTPUT_PATH) - - # VERBATIM flag should be avoided if building with Visual Studio. - # (OK to add the flag if ${CMAKE_CFG_INTDIR} is "." which is one - # indicator that you are not building with Visual Studio.) - # - SET(verbatim_flag) - IF(NOT CMAKE_CONFIGURATION_TYPES) - # VERBATIM flag should also be avoided if using an older CMake. - # VERBATIM flag support was added in CMake 2.4.5 - # - IF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} EQUAL 2.4) - IF(${CMAKE_PATCH_VERSION} GREATER 4) - SET(verbatim_flag "VERBATIM") - ENDIF(${CMAKE_PATCH_VERSION} GREATER 4) - ENDIF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} EQUAL 2.4) - - IF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.4) - SET(verbatim_flag "VERBATIM") - ENDIF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.4) - - IF(NOT verbatim_flag) - MESSAGE("${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): warning - warning: The VERBATIM flag for ADD_CUSTOM_COMMAND may be required to execute mt correctly, - but you are using a CMake ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} which does not parse the VERBATIM flag. - Upgrade to CMake 2.4.5 or later to eliminate this warning.") - ENDIF(NOT verbatim_flag) - ENDIF(NOT CMAKE_CONFIGURATION_TYPES) - - SET(_CMAKE_INPUT_RESOURCE "-inputresource:${exe};#1") - # if msvc71 then you can not replace the resource - # but you can add one, so set the input resource to empty - IF(MSVC71) - SET(_CMAKE_INPUT_RESOURCE ) - ENDIF(MSVC71) - # Solve the "things named like *Setup prompt for admin privileges - # on Vista" problem by merging a manifest fragment that contains a - # requestedExecutionLevel element: - # - ADD_CUSTOM_COMMAND(TARGET CMakeSetup - POST_BUILD COMMAND mt - "${_CMAKE_INPUT_RESOURCE}" - -manifest "${CMAKE_CURRENT_SOURCE_DIR}/CMakeSetupManifest.xml" - "-outputresource:${exe};#1" - ${verbatim_flag} - ) -ENDIF(CMAKE_MT_EXECUTABLE) - -INSTALL_TARGETS(/bin CMakeSetup) diff --git a/Source/MFCDialog/CMakeSetup.cpp b/Source/MFCDialog/CMakeSetup.cpp deleted file mode 100644 index 8d318a6bf..000000000 --- a/Source/MFCDialog/CMakeSetup.cpp +++ /dev/null @@ -1,158 +0,0 @@ -// CMakeSetupdialog.cpp : Defines the class behaviors for the application. -// - -#include "stdafx.h" -#include "CMakeSetup.h" -#include "CMakeSetupDialog.h" -#include "CMakeCommandLineInfo.h" -#include "../cmDocumentation.h" -#include "../cmake.h" -#include "../cmSystemTools.h" - - -//---------------------------------------------------------------------------- -static const char * cmDocumentationName[][3] = -{ - {0, - " CMakeSetup - CMake Windows GUI.", 0}, - {0,0,0} -}; - -//---------------------------------------------------------------------------- -static const char * cmDocumentationUsage[][3] = -{ - {0, - " CMakeSetup [options]\n" - " CMakeSetup [options] \n" - " CMakeSetup [options] ", 0}, - {0,0,0} -}; - -//---------------------------------------------------------------------------- -static const char * cmDocumentationDescription[][3] = -{ - {0, - "The \"CMakeSetup\" executable is the CMake Windows GUI. Project " - "configuration settings may be specified interactively. " - "Brief instructions are provided at the bottom of the " - "window when the program is running.", 0}, - CMAKE_STANDARD_INTRODUCTION, - {0,0,0} -}; - -//---------------------------------------------------------------------------- -static const char * cmDocumentationOptions[][3] = -{ - {"-A[on|off]", "Enable/disable display of advanced cache values.", - "There are two categories of CMake cache values: non-advanced and " - "advanced. Most users will not need to change the advanced options. " - "The CMakeSetup GUI contains a checkbox to enable/disable display of " - "advanced options. This command line flag changes its default setting."}, - {0,0,0} -}; - -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -///////////////////////////////////////////////////////////////////////////// -// CMakeSetup - -BEGIN_MESSAGE_MAP(CMakeSetup, CWinApp) - //{{AFX_MSG_MAP(CMakeSetup) - // NOTE - the ClassWizard will add and remove mapping macros here. - // DO NOT EDIT what you see in these blocks of generated code! - //}}AFX_MSG - ON_COMMAND(ID_HELP, CWinApp::OnHelp) - END_MESSAGE_MAP(); - - -///////////////////////////////////////////////////////////////////////////// -// CMakeSetup construction -CMakeSetup::CMakeSetup() -{ - // TODO: add construction code here, - // Place all significant initialization in InitInstance -} - -///////////////////////////////////////////////////////////////////////////// -// The one and only CMakeSetup object - -CMakeSetup theApp; - -///////////////////////////////////////////////////////////////////////////// -// CMakeSetup initialization - -BOOL CMakeSetup::InitInstance() -{ - AfxEnableControlContainer(); - - // Standard initialization - // If you are not using these features and wish to reduce the size - // of your final executable, you should remove from the following - // the specific initialization routines you do not need. -#if _MFC_VER <= 0x421 -#ifdef _AFXDLL - Enable3dControls(); // Call this when using MFC in a shared DLL -#else - Enable3dControlsStatic(); // Call this when linking to MFC statically -#endif -#endif - CMakeCommandLineInfo cmdInfo; - ParseCommandLine(cmdInfo); - cmSystemTools::FindExecutableDirectory(cmdInfo.GetArgV()[0]); - - // Check for documentation options. If there are no arguments skip - // the check because the GUI should be displayed instead of showing - // usage in this case. - cmDocumentation doc; - if(cmdInfo.GetArgC() > 1 && - doc.CheckOptions(cmdInfo.GetArgC(), cmdInfo.GetArgV())) - { - // Construct and print requested documentation. - cmake hcm; - hcm.AddCMakePaths(); - doc.SetCMakeRoot(hcm.GetCacheDefinition("CMAKE_ROOT")); - std::vector commands; - std::vector compatCommands; - std::map propDocs; - - std::vector generators; - hcm.GetCommandDocumentation(commands, true, false); - hcm.GetCommandDocumentation(compatCommands, false, true); - hcm.GetGeneratorDocumentation(generators); - hcm.GetPropertiesDocumentation(propDocs); - doc.SetName("cmake"); - doc.SetSection("Name",cmDocumentationName); - doc.SetSection("Usage",cmDocumentationUsage); - doc.SetSection("Description",cmDocumentationDescription); - doc.AppendSection("Generators",generators); - doc.PrependSection("Options",cmDocumentationOptions); - doc.SetSection("Commands",commands); - doc.SetSection("Compatilbility Commands", compatCommands); - doc.SetSections(propDocs); - - return (doc.PrintRequestedDocumentation(std::cout)? 0:1); - } - - CMakeSetupDialog dlg(cmdInfo); - - m_pMainWnd = &dlg; - INT_PTR nResponse = dlg.DoModal(); - if (nResponse == IDOK) - { - // TODO: Place code here to handle when the dialog is - // dismissed with OK - } - else if (nResponse == IDCANCEL) - { - // TODO: Place code here to handle when the dialog is - // dismissed with Cancel - } - - // Since the dialog has been closed, return FALSE so that we exit the - // application, rather than start the application's message pump. - return FALSE; -} diff --git a/Source/MFCDialog/CMakeSetup.h b/Source/MFCDialog/CMakeSetup.h deleted file mode 100644 index bfcd70537..000000000 --- a/Source/MFCDialog/CMakeSetup.h +++ /dev/null @@ -1,65 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: CMakeSetup.h,v $ - Language: C++ - Date: $Date: 2002-10-23 22:03:27 $ - Version: $Revision: 1.3 $ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -// CMakeSetupdialog.h : main header file for the CMakeSetupDIALOG application -// - -#if !defined(AFX_CMakeSetupDIALOG_H__AC17A6F4_4634_11D4_8F21_00A0CC33FCD3__INCLUDED_) -#define AFX_CMakeSetupDIALOG_H__AC17A6F4_4634_11D4_8F21_00A0CC33FCD3__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#ifndef __AFXWIN_H__ -#error include 'stdafx.h' before including this file for PCH -#endif - -#include "resource.h" // main symbols - -///////////////////////////////////////////////////////////////////////////// -// CMakeSetup: -// See CMakeSetupdialog.cpp for the implementation of this class -// - -class CMakeSetup : public CWinApp -{ -public: - CMakeSetup(); - -// Overrides - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CMakeSetup) -public: - virtual BOOL InitInstance(); - //}}AFX_VIRTUAL - -// Implementation - - //{{AFX_MSG(CMakeSetup) - // NOTE - the ClassWizard will add and remove member functions here. - // DO NOT EDIT what you see in these blocks of generated code ! - //}}AFX_MSG - DECLARE_MESSAGE_MAP() -}; - - -///////////////////////////////////////////////////////////////////////////// - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // !defined(AFX_CMakeSetupDIALOG_H__AC17A6F4_4634_11D4_8F21_00A0CC33FCD3__INCLUDED_) diff --git a/Source/MFCDialog/CMakeSetup.rc b/Source/MFCDialog/CMakeSetup.rc deleted file mode 100644 index 3e144e4a1..000000000 --- a/Source/MFCDialog/CMakeSetup.rc +++ /dev/null @@ -1,246 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "#define _AFX_NO_SPLITTER_RESOURCES\r\n" - "#define _AFX_NO_OLE_RESOURCES\r\n" - "#define _AFX_NO_TRACKER_RESOURCES\r\n" - "#define _AFX_NO_PROPERTY_RESOURCES\r\n" - "\r\n" - "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" - "#ifdef _WIN32\r\n" - "LANGUAGE 9, 1\r\n" - "#pragma code_page(1252)\r\n" - "#endif //_WIN32\r\n" - "#include ""res\\CMakeSetupDialog.rc2"" // non-Microsoft Visual C++ edited resources\r\n" - "#include ""afxres.rc"" // Standard components\r\n" - "#endif\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDR_MAINFRAME ICON "res\\CMakeSetupDialog.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_ABOUTBOX DIALOGEX 0, 0, 235, 55 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "About CMakeSetup" -BEGIN - ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20 - LTEXT "CMakeSetup\nwww.cmake.org",IDC_STATIC,40,18,119,16 - DEFPUSHBUTTON "OK",IDOK,178,7,50,14,WS_GROUP -END - -IDD_CMakeSetupDialog_DIALOG DIALOGEX 0, 0, 447, 255 -STYLE DS_SETFONT | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME -EXSTYLE WS_EX_APPWINDOW -CAPTION "CMakeSetupDialog" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - RTEXT "Where is the source code:",IDC_STATIC,6,7,86,9 - COMBOBOX IDC_WhereSource,96,6,169,12,CBS_SIMPLE | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Browse...",IDC_BROWSE_SOURCE,267,6,34,13 - RTEXT "Where to build the binaries:",IDC_STATIC,5,27,90,9 - COMBOBOX IDC_WhereBuild,96,26,169,68,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Browse...",IDC_BROWSE_BUILD,267,25,34,13 - CONTROL "Show Advanced Values",IDC_AdvancedValues,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,321,9,98,9 - DEFPUSHBUTTON "Configure",IDC_BuildProjects,84,221,51,15 - PUSHBUTTON "OK",IDC_OK,141,221,51,15 - PUSHBUTTON "Cancel",IDCANCEL,198,221,51,15 - PUSHBUTTON "Help",IDC_HELP_BUTTON,312,221,51,15 - LISTBOX IDC_LIST2,15,53,419,126,LBS_SORT | LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL - GROUPBOX "Cache Values",IDC_FRAME,10,44,432,140 - CTEXT "Right click on a cache value for additional options (delete, ignore, and help).\nPress Configure to update and display new values in red.\nPress OK to generate selected build files and exit.",IDC_MouseHelpCaption,0,191,442,27 - LTEXT "Static",IDC_PROGRESS,2,240,442,12,SS_CENTERIMAGE | SS_SUNKEN - PUSHBUTTON "Delete Cache",IDC_DELETE_BUTTON,255,221,51,15 - CONTROL "Suppress dev Warnings",IDC_SUPPRESS_DEV_WARNINGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,321,28,108,10 -END - -IDD_CMAKE_HELP_DIALOG DIALOG 0, 0, 365, 183 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "CMake Help" -BEGIN - DEFPUSHBUTTON "OK",IDOK,155,159,50,14 - EDITTEXT IDC_EDIT1,7,7,351,152,ES_MULTILINE | ES_READONLY | NOT WS_BORDER -END - -IDD_GEN_DIALOG DIALOGEX 0, 0, 263, 86 -STYLE DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Select Generator" -BEGIN - DEFPUSHBUTTON "OK",IDOK,70,65,50,14 - PUSHBUTTON "Cancel",IDCANCEL,143,65,50,14 - RTEXT "Build For:",IDC_BuildForLabel,7,45,34,11,SS_CENTERIMAGE - COMBOBOX IDC_Generator,52,45,204,117,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP - CTEXT "Please select what build system you want CMake to generate files for.\nYou should select the tool that you will use to build the project.\nPress OK once you have made your selection.",IDC_MouseHelpCaption,7,7,245,36 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,2,0,0 - PRODUCTVERSION 2,2,0,0 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "FileDescription", "CMakeSetup MFC Application" - VALUE "FileVersion", "2, 2, 0, 0" - VALUE "InternalName", "CMakeSetup" - VALUE "LegalCopyright", "Copyright (C) 2000" - VALUE "OriginalFilename", "CMakeSetup.EXE" - VALUE "ProductName", "CMakeSetup Application" - VALUE "ProductVersion", "2, 2, 0, 0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_ABOUTBOX, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 228 - TOPMARGIN, 7 - BOTTOMMARGIN, 48 - END - - IDD_CMakeSetupDialog_DIALOG, DIALOG - BEGIN - RIGHTMARGIN, 442 - BOTTOMMARGIN, 252 - END - - IDD_CMAKE_HELP_DIALOG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 358 - TOPMARGIN, 7 - BOTTOMMARGIN, 176 - END - - IDD_GEN_DIALOG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 256 - TOPMARGIN, 7 - BOTTOMMARGIN, 79 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_ABOUTBOX "&About CMakeSetup..." - IDS_CREATESHORTCUT "&Create shortcut" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// -#define _AFX_NO_SPLITTER_RESOURCES -#define _AFX_NO_OLE_RESOURCES -#define _AFX_NO_TRACKER_RESOURCES -#define _AFX_NO_PROPERTY_RESOURCES - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE 9, 1 -#pragma code_page(1252) -#endif //_WIN32 -#include "res\CMakeSetupDialog.rc2" // non-Microsoft Visual C++ edited resources -#include "afxres.rc" // Standard components -#endif - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/Source/MFCDialog/CMakeSetupDialog.cpp b/Source/MFCDialog/CMakeSetupDialog.cpp deleted file mode 100644 index 68086f6c2..000000000 --- a/Source/MFCDialog/CMakeSetupDialog.cpp +++ /dev/null @@ -1,1552 +0,0 @@ -// pcbuilderdialogDlg.cpp : implementation file -// - -#include "stdafx.h" -#include "shellapi.h" -// a fun undef for DOT NET -#undef DEBUG -#include "CMakeSetup.h" -#include "MakeHelp.h" -#include "cmVersion.h" -#include "PathDialog.h" -#include "CMakeSetupDialog.h" -#include "CMakeCommandLineInfo.h" -#include "../cmExternalMakefileProjectGenerator.h" -#include "../cmListFileCache.h" -#include "../cmCacheManager.h" -#include "../cmake.h" -#include "../cmGlobalGenerator.h" -#include "../cmDynamicLoader.h" -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - - -///////////////////////////////////////////////////////////////////////////// -// CAboutDlg dialog used for App About - -class CAboutDlg : public CDialog -{ -public: - CAboutDlg(); - - // Dialog Data - //{{AFX_DATA(CAboutDlg) - enum { IDD = IDD_ABOUTBOX }; - //}}AFX_DATA - - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CAboutDlg) -protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - //}}AFX_VIRTUAL - -// Implementation -protected: - //{{AFX_MSG(CAboutDlg) - //}}AFX_MSG - DECLARE_MESSAGE_MAP() - }; - -CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) -{ - //{{AFX_DATA_INIT(CAboutDlg) - //}}AFX_DATA_INIT -} - -void CAboutDlg::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CAboutDlg) - //}}AFX_DATA_MAP -} - -BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) - //{{AFX_MSG_MAP(CAboutDlg) - // No message handlers - //}}AFX_MSG_MAP - END_MESSAGE_MAP(); - - -void MFCMessageCallback(const char* m, const char* title, bool& nomore, void*) -{ - std::string message = m; - message += "\n\n(Press Cancel to suppress any further messages.)"; - if(::MessageBox(0, message.c_str(), title, - MB_OKCANCEL|MB_TASKMODAL) == IDCANCEL) - { - nomore = true; - } -} - -///////////////////////////////////////////////////////////////////////////// -// CMakeSetupDialog dialog -void updateProgress(const char *msg, float prog, void *cd) -{ - char* tmp = new char[strlen(msg) + 40]; - if (prog >= 0) - { - sprintf(tmp,"%s %i%%",msg,(int)(100*prog)); - } - else - { - sprintf(tmp,"%s",msg); - } - CMakeSetupDialog *self = (CMakeSetupDialog *)cd; - self->SetDlgItemText(IDC_PROGRESS, tmp); - CWnd* cancel = self->GetDlgItem(IDCANCEL); - // - // Retrieve and dispatch any waiting messages. - // - MSG wmsg; - while (::PeekMessage (&wmsg, NULL, 0, 0, PM_REMOVE)) - { - switch(wmsg.message) - { - case WM_LBUTTONDOWN: - case WM_LBUTTONUP: - case WM_LBUTTONDBLCLK: - { - if(wmsg.hwnd == cancel->m_hWnd) - { - ::DispatchMessage(&wmsg); - } - } - break; - case WM_COMMAND: - case WM_SETCURSOR: - case WM_PAINT: - ::DispatchMessage(&wmsg); - break; - } - } - delete [] tmp; -} - -// Convert to Win32 path (slashes). This calls the system tools one and then -// removes the spaces. It is not in system tools because we don't want any -// generators accidentally use it -std::string ConvertToWindowsPath(const char* path) -{ - // Convert to output path. - // Remove the "" around it (if any) since it's an output path for - // the shell. If another shell-oriented feature is not designed - // for a GUI use, then we are in trouble. - // save the value of the force to unix path option - bool saveForce = cmSystemTools::GetForceUnixPaths(); - // make sure we get windows paths no matter what for the GUI - cmSystemTools::SetForceUnixPaths(false); - std::string s = cmSystemTools::ConvertToOutputPath(path); - // now restore the force unix path to its previous value - cmSystemTools::SetForceUnixPaths(saveForce); - if (s.size()) - { - std::string::iterator i = s.begin(); - if (*i == '\"') - { - s.erase(i, i + 1); - } - i = s.begin() + s.length() - 1; - if (*i == '\"') - { - s.erase(i, i + 1); - } - } - return s; -} - -CMakeSetupDialog::CMakeSetupDialog(const CMakeCommandLineInfo& cmdInfo, - CWnd* pParent /*=NULL*/) - : CDialog(CMakeSetupDialog::IDD, pParent) -{ - m_GeneratorPicked = false; - m_Cursor = LoadCursor(NULL, IDC_ARROW); - m_RunningConfigure = false; - cmSystemTools::SetRunCommandHideConsole(true); - cmSystemTools::SetErrorCallback(MFCMessageCallback); - m_RegistryKey = "Software\\Kitware\\CMakeSetup\\Settings\\StartPath"; - m_CacheEntriesList.m_CMakeSetupDialog = this; - - m_CMakeInstance = new cmake; - m_CMakeInstance->SetCMakeEditCommand("CMakeSetup"); - m_CMakeInstance->SetProgressCallback(updateProgress, (void *)this); - - //{{AFX_DATA_INIT(CMakeSetupDialog) - //}}AFX_DATA_INIT - - // Get the parameters from the command line info - // If an unknown parameter is found, try to interpret it too, since it - // is likely to be a file dropped on the shortcut :) - if (cmdInfo.m_LastUnknownParameter.IsEmpty()) - { - this->m_WhereSource = cmdInfo.m_WhereSource; - this->m_WhereBuild = cmdInfo.m_WhereBuild; - this->m_GeneratorDialog.m_GeneratorChoiceString = - cmdInfo.m_GeneratorChoiceString; - this->m_AdvancedValues = cmdInfo.m_AdvancedValues; - } - else - { - this->m_WhereSource = _T(""); - this->m_WhereBuild = _T(""); - this->m_AdvancedValues = FALSE; - this->m_GeneratorDialog.m_GeneratorChoiceString = - cmdInfo.m_GeneratorChoiceString; - this->ChangeDirectoriesFromFile((LPCTSTR)cmdInfo.m_LastUnknownParameter); - } - - // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 - m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); - m_BuildPathChanged = false; - // Find the path to the cmake.exe executable - char fname[1024]; - ::GetModuleFileName(NULL,fname,1023); - // extract just the path part - m_PathToExecutable = cmSystemTools::GetProgramPath(fname).c_str(); - // add the cmake.exe to the path - m_PathToExecutable += "/cmake.exe"; - - m_oldCX = -1; - m_deltaXRemainder = 0; -} - -CMakeSetupDialog::~CMakeSetupDialog() -{ - delete m_CMakeInstance; - // clean up globals - cmDynamicLoader::FlushCache(); -} - -void CMakeSetupDialog::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CMakeSetupDialog) - DDX_Control(pDX, IDC_AdvancedValues, m_AdvancedValuesControl); - DDX_Control(pDX, IDC_SUPPRESS_DEV_WARNINGS, m_SuppressDevWarningsControl); - DDX_Check(pDX, IDC_SUPPRESS_DEV_WARNINGS, m_SuppressDevValue); - DDX_Control(pDX, IDC_BROWSE_SOURCE, m_BrowseSource); - DDX_Control(pDX, IDC_BROWSE_BUILD, m_BrowseBuild); - DDX_Control(pDX, IDC_DELETE_BUTTON, m_DeleteButton); - DDX_Control(pDX, IDC_HELP_BUTTON, m_HelpButton); - DDX_Control(pDX, IDC_OK, m_OKButton); - DDX_Control(pDX, IDCANCEL, m_CancelButton); - DDX_CBStringExact(pDX, IDC_WhereSource, m_WhereSource); - DDX_CBStringExact(pDX, IDC_WhereBuild, m_WhereBuild); - DDX_Control(pDX, IDC_FRAME, m_ListFrame); - DDX_Control(pDX, IDC_WhereSource, m_WhereSourceControl); - DDX_Control(pDX, IDC_WhereBuild, m_WhereBuildControl); - DDX_Control(pDX, IDC_LIST2, m_CacheEntriesList); - DDX_Control(pDX, IDC_MouseHelpCaption, m_MouseHelp); - DDX_Control(pDX, IDC_PROGRESS, m_StatusDisplay); - DDX_Control(pDX, IDC_BuildProjects, m_Configure); - DDX_Check(pDX, IDC_AdvancedValues, m_AdvancedValues); - //}}AFX_DATA_MAP -} - -BEGIN_MESSAGE_MAP(CMakeSetupDialog, CDialog) - //{{AFX_MSG_MAP(CMakeSetupDialog) - ON_WM_SYSCOMMAND() - ON_WM_PAINT() - ON_WM_QUERYDRAGICON() - ON_BN_CLICKED(IDC_BUTTON2, OnBrowseWhereSource) - ON_BN_CLICKED(IDC_BuildProjects, OnConfigure) - ON_BN_CLICKED(IDC_BUTTON3, OnBrowseWhereBuild) - ON_CBN_EDITCHANGE(IDC_WhereBuild, OnChangeWhereBuild) - ON_CBN_SELCHANGE(IDC_WhereBuild, OnSelendokWhereBuild) - ON_CBN_EDITCHANGE(IDC_WhereSource, OnChangeWhereSource) - ON_CBN_SELENDOK(IDC_WhereSource, OnSelendokWhereSource) - ON_WM_SIZE() - ON_WM_GETMINMAXINFO() - ON_BN_CLICKED(IDC_OK, OnOk) - ON_BN_CLICKED(IDC_DELETE_BUTTON, OnDeleteButton) - ON_BN_CLICKED(IDC_HELP_BUTTON, OnHelpButton) - ON_BN_CLICKED(IDC_AdvancedValues, OnAdvancedValues) - ON_BN_CLICKED(IDC_SUPPRESS_DEV_WARNINGS, OnSuppressDevValue) - ON_BN_DOUBLECLICKED(IDC_SUPPRESS_DEV_WARNINGS, OnDoubleclickedSuppressDevValue) - ON_BN_DOUBLECLICKED(IDC_AdvancedValues, OnDoubleclickedAdvancedValues) - ON_WM_DROPFILES() - ON_BN_CLICKED(IDCANCEL, OnCancel) - ON_WM_SETCURSOR() - //}}AFX_MSG_MAP -END_MESSAGE_MAP() - -///////////////////////////////////////////////////////////////////////////// -// CMakeSetupDialog message handlers - -BOOL CMakeSetupDialog::OnInitDialog() -{ - CDialog::OnInitDialog(); - this->DragAcceptFiles(true); - - // Add "Create shortcut" menu item to system menu. - - // IDM_CREATESHORTCUT must be in the system command range. - ASSERT((IDM_CREATESHORTCUT & 0xFFF0) == IDM_CREATESHORTCUT); - ASSERT(IDM_CREATESHORTCUT < 0xF000); - - // Add "About..." menu item to system menu. - - // IDM_ABOUTBOX must be in the system command range. - ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); - ASSERT(IDM_ABOUTBOX < 0xF000); - - CMenu* pSysMenu = GetSystemMenu(FALSE); - if (pSysMenu != NULL) - { - CString strCreateShortcutMenu; - strCreateShortcutMenu.LoadString(IDS_CREATESHORTCUT); - if (!strCreateShortcutMenu.IsEmpty()) - { - pSysMenu->AppendMenu(MF_SEPARATOR); - pSysMenu->AppendMenu(MF_STRING, - IDM_CREATESHORTCUT, - strCreateShortcutMenu); - } - - CString strAboutMenu; - strAboutMenu.LoadString(IDS_ABOUTBOX); - if (!strAboutMenu.IsEmpty()) - { - pSysMenu->AppendMenu(MF_SEPARATOR); - pSysMenu->AppendMenu(MF_STRING, - IDM_ABOUTBOX, - strAboutMenu); - } - } - - // Set the icon for this dialog. The framework does this automatically - // when the application's main window is not a dialog - SetIcon(m_hIcon, TRUE); // Set big icon - SetIcon(m_hIcon, FALSE); // Set small icon - // Load source and build dirs from registry - this->LoadFromRegistry(); - - // try to load the cmake cache from disk - this->LoadCacheFromDiskToGUI(); - m_WhereBuildControl.LimitText(2048); - m_WhereSourceControl.LimitText(2048); - - // Set the version number - char tmp[1024]; - sprintf(tmp,"CMake %d.%d - %s", cmVersion::GetMajorVersion(), - cmVersion::GetMinorVersion(), - cmVersion::GetReleaseVersion().c_str()); - SetDlgItemText(IDC_PROGRESS, ""); - this->SetWindowText(tmp); - this->UpdateData(FALSE); - return TRUE; // return TRUE unless you set the focus to a control -} - - -// About dialog invoke -void CMakeSetupDialog::OnSysCommand(UINT nID, LPARAM lParam) -{ - if ((nID & 0xFFF0) == IDM_ABOUTBOX) - { - CAboutDlg dlgAbout; - dlgAbout.DoModal(); - } - else if ((nID & 0xFFF0) == IDM_CREATESHORTCUT) - { - CreateShortcut(); - } - else - { - CDialog::OnSysCommand(nID, lParam); - } -} - -// If you add a minimize button to your dialog, you will need the code below -// to draw the icon. For MFC applications using the document/view model, -// this is automatically done for you by the framework. - -void CMakeSetupDialog::OnPaint() -{ - if (IsIconic()) - { - CPaintDC dc(this); // device context for painting - - SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); - - // Center icon in client rectangle - int cxIcon = GetSystemMetrics(SM_CXICON); - int cyIcon = GetSystemMetrics(SM_CYICON); - CRect rect; - GetClientRect(&rect); - int x = (rect.Width() - cxIcon + 1) / 2; - int y = (rect.Height() - cyIcon + 1) / 2; - - // Draw the icon - dc.DrawIcon(x, y, m_hIcon); - } - else - { - CDialog::OnPaint(); - } -} - -// The system calls this to obtain the cursor to display while the user drags -// the minimized window. -HCURSOR CMakeSetupDialog::OnQueryDragIcon() -{ - return (HCURSOR) m_hIcon; -} - - - -// Browse button -bool CMakeSetupDialog::Browse(CString &result, const char *title) -{ - CString initialDir = result; - initialDir.Replace("/", "\\"); - CPathDialog dlg("Select Path", title, initialDir); - if(dlg.DoModal()==IDOK) - { - result = dlg.GetPathName(); - return true; - } - else - { - return false; - } -} - - - - -void CMakeSetupDialog::SaveToRegistry() -{ - HKEY hKey; - DWORD dwDummy; - - if(RegCreateKeyEx(HKEY_CURRENT_USER, - m_RegistryKey, - 0, "", REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE, - NULL, &hKey, &dwDummy) != ERROR_SUCCESS) - { - return; - } - else - { - // save some values - CString regvalue; - - // write the size of the dialog - CRect size; - this->GetWindowRect(&size); - unsigned long width = size.Width(); - unsigned long height = size.Height(); - RegSetValueEx(hKey, _T("Width"), 0, REG_DWORD, - (CONST BYTE *)(&width),4); - RegSetValueEx(hKey, _T("Height"), 0, REG_DWORD, - (CONST BYTE *)(&height),4); - - this->ReadRegistryValue(hKey, &(regvalue),"WhereSource1","C:\\"); - int shiftEnd = 9; - if(m_WhereSource != regvalue) - { - char keyName[1024]; - char keyName2[1024]; - int i; - for (i = 2; i < 10; ++i) - { - regvalue = ""; - sprintf(keyName,"WhereSource%i",i); - this->ReadRegistryValue(hKey, &(regvalue),keyName,""); - // check for short circuit, if the new value is already in - // the list then we stop - if (m_WhereSource == regvalue) - { - shiftEnd = i - 1; - } - } - - for (i = shiftEnd; i; --i) - { - regvalue = ""; - sprintf(keyName,"WhereSource%i",i); - sprintf(keyName2,"WhereSource%i",i+1); - - this->ReadRegistryValue(hKey, &(regvalue),keyName,""); - if (strlen(regvalue)) - { - RegSetValueEx(hKey, _T(keyName2), 0, REG_SZ, - (CONST BYTE *)(const char *)regvalue, - regvalue.GetLength()); - } - } - RegSetValueEx(hKey, _T("WhereSource1"), 0, REG_SZ, - (CONST BYTE *)(const char *)m_WhereSource, - m_WhereSource.GetLength()); - } - - this->ReadRegistryValue(hKey, &(regvalue),"WhereBuild1","C:\\"); - if(m_WhereBuild != regvalue) - { - int i; - char keyName[1024]; - char keyName2[1024]; - for (i = 2; i < 10; ++i) - { - regvalue = ""; - sprintf(keyName,"WhereBuild%i",i); - this->ReadRegistryValue(hKey, &(regvalue),keyName,""); - // check for short circuit, if the new value is already in - // the list then we stop - if (m_WhereBuild == regvalue) - { - shiftEnd = i - 1; - } - } - for (i = shiftEnd; i; --i) - { - regvalue = ""; - sprintf(keyName,"WhereBuild%i",i); - sprintf(keyName2,"WhereBuild%i",i+1); - - this->ReadRegistryValue(hKey, &(regvalue),keyName,""); - if (strlen(regvalue)) - { - RegSetValueEx(hKey, _T(keyName2), 0, REG_SZ, - (CONST BYTE *)(const char *)regvalue, - regvalue.GetLength()); - } - } - RegSetValueEx(hKey, _T("WhereBuild1"), 0, REG_SZ, - (CONST BYTE *)(const char *)m_WhereBuild, - m_WhereBuild.GetLength()); - } - } - RegCloseKey(hKey); -} - - -void CMakeSetupDialog::ReadRegistryValue(HKEY hKey, - CString *val, - const char *key, - const char *adefault) -{ - DWORD dwType, dwSize; - char *pb; - - dwType = REG_SZ; - pb = val->GetBuffer(MAX_PATH); - dwSize = MAX_PATH; - if(RegQueryValueEx(hKey,_T(key), NULL, &dwType, - (BYTE *)pb, &dwSize) != ERROR_SUCCESS) - { - val->ReleaseBuffer(); - *val = _T(adefault); - } - else - { - val->ReleaseBuffer(); - } -} - - -void CMakeSetupDialog::LoadFromRegistry() -{ - HKEY hKey; - if(RegOpenKeyEx(HKEY_CURRENT_USER, - m_RegistryKey, - 0, KEY_READ, &hKey) != ERROR_SUCCESS) - { - return; - } - else - { - // load some values - DWORD dwSize = 4; - DWORD width, height; - - if (RegQueryValueEx(hKey,_T("Width"), NULL, NULL, - (BYTE *)&width, &dwSize) == ERROR_SUCCESS && - RegQueryValueEx(hKey,_T("Height"), NULL, NULL, - (BYTE *)&height, &dwSize) == ERROR_SUCCESS) - { - this->SetWindowPos(0,0,0,width,height,SWP_NOZORDER | SWP_NOMOVE); - } - - if (m_WhereSource.IsEmpty()) - { - this->ReadRegistryValue(hKey, &(m_WhereSource),"WhereSource1","C:\\"); - } - if (m_WhereBuild.IsEmpty()) - { - this->ReadRegistryValue(hKey, &(m_WhereBuild),"WhereBuild1","C:\\"); - } - m_WhereSourceControl.AddString(m_WhereSource); - m_WhereBuildControl.AddString(m_WhereBuild); - - char keyname[1024]; - CString regvalue; - int i; - for (i = 2; i <= 10; ++i) - { - sprintf(keyname,"WhereSource%i",i); - regvalue = ""; - this->ReadRegistryValue(hKey, &(regvalue),keyname,"C:\\"); - if (strcmp("C:\\",regvalue)) - { - m_WhereSourceControl.AddString(regvalue); - } - sprintf(keyname,"WhereBuild%i",i); - regvalue = ""; - this->ReadRegistryValue(hKey, &(regvalue),keyname,"C:\\"); - if (strcmp("C:\\",regvalue)) - { - m_WhereBuildControl.AddString(regvalue); - } - } - } - RegCloseKey(hKey); -} - - - -// Callback for browse source button -void CMakeSetupDialog::OnBrowseWhereSource() -{ - this->UpdateData(); - Browse(m_WhereSource, "Enter Path to Source"); - this->UpdateData(false); - this->OnChangeWhereSource(); -} - -// Callback for browser build button -void CMakeSetupDialog::OnBrowseWhereBuild() -{ - this->UpdateData(); - Browse(m_WhereBuild, "Enter Path to Build"); - this->UpdateData(false); - this->OnChangeWhereBuild(); -} - -void CMakeSetupDialog::RunCMake(bool generateProjectFiles) -{ - if(!cmSystemTools::FileExists(m_WhereBuild)) - { - std::string message = - "Build directory does not exist, should I create it?\n\n" - "Directory: "; - message += (const char*)m_WhereBuild; - if(MessageBox(message.c_str(), "Create Directory", MB_OKCANCEL) == IDOK) - { - cmSystemTools::MakeDirectory(m_WhereBuild); - } - else - { - MessageBox("Build Project aborted, nothing done."); - return; - } - } - // set the wait cursor - m_Cursor = LoadCursor(NULL, IDC_WAIT); - ::SetCursor(m_Cursor); - m_RunningConfigure = true; - - // get all the info from the dialog - this->UpdateData(); - // always save the current gui values to disk - this->SaveCacheFromGUI(); - // Make sure we are working from the cache on disk - this->LoadCacheFromDiskToGUI(); - m_OKButton.EnableWindow(false); - - // setup the cmake instance - if (generateProjectFiles) - { - if(m_CMakeInstance->Generate() != 0) - { - cmSystemTools::Error( - "Error in generation process, project files may be invalid"); - } - } - else - { - m_CMakeInstance->SetHomeDirectory(m_WhereSource); - m_CMakeInstance->SetStartDirectory(m_WhereSource); - m_CMakeInstance->SetHomeOutputDirectory(m_WhereBuild); - m_CMakeInstance->SetStartOutputDirectory(m_WhereBuild); - m_CMakeInstance->SetGlobalGenerator( - m_CMakeInstance->CreateGlobalGenerator(m_GeneratorDialog.m_GeneratorChoiceString)); - m_CMakeInstance->SetCMakeCommand(m_PathToExecutable); - m_CMakeInstance->LoadCache(); - if(m_SuppressDevValue) - { - m_CMakeInstance->SetSuppressDevWarnings(true); - } - else - { - m_CMakeInstance->SetSuppressDevWarnings(false); - } - if(m_CMakeInstance->Configure() != 0) - { - cmSystemTools::Error( - "Error in configuration process, project files may be invalid"); - } - // update the GUI with any new values in the caused by the - // generation process - this->LoadCacheFromDiskToGUI(); - } - - // save source and build paths to registry - this->SaveToRegistry(); - // path is up-to-date now - m_BuildPathChanged = false; - // put the cursor back - m_Cursor = LoadCursor(NULL, IDC_ARROW); - ::SetCursor(m_Cursor); - m_RunningConfigure = false; - cmSystemTools::ResetErrorOccuredFlag(); -} - - -// Callback for build projects button -void CMakeSetupDialog::OnConfigure() -{ - if(!m_GeneratorPicked) - { - m_GeneratorDialog.m_CMakeInstance = this->m_CMakeInstance; - if(m_GeneratorDialog.DoModal() != IDOK) - { - return; - } - // save the generator choice in the registry - HKEY hKey; - DWORD dwDummy; - - if(RegCreateKeyEx(HKEY_CURRENT_USER, - m_RegistryKey, - 0, "", REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE, - NULL, &hKey, &dwDummy) == ERROR_SUCCESS) - { - // save some values - RegSetValueEx(hKey, _T("LastGenerator"), 0, REG_SZ, - (CONST BYTE *)(const char *)m_GeneratorDialog.m_GeneratorChoiceString, - m_GeneratorDialog.m_GeneratorChoiceString.GetLength()); - } - } - - // enable error messages each time configure is pressed - cmSystemTools::EnableMessages(); - this->RunCMake(false); -} - - - - -// callback for combo box menu where build selection -void CMakeSetupDialog::OnSelendokWhereBuild() -{ - m_WhereBuildControl.GetLBText(m_WhereBuildControl.GetCurSel(), - m_WhereBuild); - m_WhereBuildControl.SetWindowText( m_WhereBuild); - this->UpdateData(FALSE); - this->OnChangeWhereBuild(); -} - -// callback for combo box menu where source selection -void CMakeSetupDialog::OnSelendokWhereSource() -{ - m_WhereSourceControl.GetLBText(m_WhereSourceControl.GetCurSel(), - m_WhereSource); - this->UpdateData(FALSE); - this->OnChangeWhereSource(); -} - -// callback for chaing source directory -void CMakeSetupDialog::OnChangeWhereSource() -{ -} - -// callback for changing the build directory -void CMakeSetupDialog::OnChangeWhereBuild() -{ - this->UpdateData(); - - // The build dir has changed, check if there is a cache, and - // grab the source dir from it - - std::string path = this->m_WhereBuild; - cmSystemTools::ConvertToUnixSlashes(path); - - // adjust the cmake instance - m_CMakeInstance->SetHomeOutputDirectory(m_WhereBuild); - m_CMakeInstance->SetStartOutputDirectory(m_WhereBuild); - - std::string cache_file = path; - cache_file += "/CMakeCache.txt"; - - cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager(); - cmCacheManager::CacheIterator it = cachem->NewIterator(); - - m_GeneratorPicked = false; - - // make sure we have a normal cache file, specifically if one exists make - // sure it can be read - if (cmSystemTools::FileExists(cache_file.c_str())) - { - if (cachem->LoadCache(path.c_str())) - { - if (it.Find("CMAKE_HOME_DIRECTORY")) - { - path = ConvertToWindowsPath(it.GetValue()); - this->m_WhereSource = path.c_str(); - this->m_WhereSourceControl.SetWindowText(this->m_WhereSource); - this->OnChangeWhereSource(); - m_GeneratorPicked = true; - } - } - else - { - //file exists but cqnnot be read - cmSystemTools::Error("There is a CMakeCache.txt file for the current binary tree but cmake does not have permission to read it. Please check the permissions of the directory you are trying to run CMake on."); - return; - } - } - - m_CacheEntriesList.RemoveAll(); - m_CacheEntriesList.ShowWindow(SW_SHOW); - this->LoadCacheFromDiskToGUI(); - m_BuildPathChanged = true; -} - - -// copy from the cache manager to the cache edit list box -void CMakeSetupDialog::FillCacheGUIFromCacheManager() -{ - cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager(); - cmCacheManager::CacheIterator it = cachem->NewIterator(); - - // if there are already entries in the cache, then - // put the new ones in the top, so they show up first - bool reverseOrder = false; - // all the current values are not new any more - std::set items = m_CacheEntriesList.GetItems(); - for(std::set::iterator i = items.begin(); - i != items.end(); ++i) - { - // first check to see if it is still in the cache - CPropertyItem* item = *i; - if ( !it.Find((const char*)item->m_propName) ) - { - m_CacheEntriesList.RemoveProperty((const char*)item->m_propName); - } - else - { - // if it is still in the cache then it is no longer new - item->m_NewValue = false; - } - } - for(cmCacheManager::CacheIterator i = cachem->NewIterator(); - !i.IsAtEnd(); i.Next()) - { - const char* key = i.GetName(); - - // if value has trailing space or tab, enclose it in single quotes - // to enforce the fact that it has 'invisible' trailing stuff - std::string value = i.GetValue(); - if (value.size() && - (value[value.size() - 1] == ' ' || - value[value.size() - 1] == '\t')) - { - value = '\'' + value + '\''; - } - bool advanced = i.GetPropertyAsBool("ADVANCED"); - switch(i.GetType() ) - { - case cmCacheManager::BOOL: - if(cmSystemTools::IsOn(value.c_str())) - { - m_CacheEntriesList.AddProperty(key, - "ON", - i.GetProperty("HELPSTRING"), - CPropertyList::COMBO,"ON|OFF", - reverseOrder, - advanced - ); - } - else - { - m_CacheEntriesList.AddProperty(key, - "OFF", - i.GetProperty("HELPSTRING"), - CPropertyList::COMBO,"ON|OFF", - reverseOrder, advanced - ); - } - break; - case cmCacheManager::PATH: - m_CacheEntriesList.AddProperty(key, - value.c_str(), - i.GetProperty("HELPSTRING"), - CPropertyList::PATH,"", - reverseOrder, advanced - ); - break; - case cmCacheManager::FILEPATH: - m_CacheEntriesList.AddProperty(key, - value.c_str(), - i.GetProperty("HELPSTRING"), - CPropertyList::FILE,"", - reverseOrder, advanced - ); - break; - case cmCacheManager::STRING: - m_CacheEntriesList.AddProperty(key, - value.c_str(), - i.GetProperty("HELPSTRING"), - CPropertyList::EDIT,"", - reverseOrder, advanced - ); - break; - case cmCacheManager::INTERNAL: - m_CacheEntriesList.RemoveProperty(key); - break; - } - } - if(m_CacheEntriesList.GetShowAdvanced()) - { - m_CacheEntriesList.ShowAdvanced(); - } - else - { - m_CacheEntriesList.HideAdvanced(); - } - - m_OKButton.EnableWindow(false); - if(cachem->GetSize() > 0 && !cmSystemTools::GetErrorOccuredFlag()) - { - bool enable = true; - items = m_CacheEntriesList.GetItems(); - for(std::set::iterator i = items.begin(); - i != items.end(); ++i) - { - CPropertyItem* item = *i; - if(item->m_Advanced ) - { - if(item->m_NewValue && m_CacheEntriesList.GetShowAdvanced()) - { - enable = false; - break; - } - } - else - { - if(item->m_NewValue) - { - // if one new value then disable to OK button - enable = false; - break; - } - } - } - if(enable) - { - m_OKButton.EnableWindow(true); - } - } - - // redraw the list - m_CacheEntriesList.SetTopIndex(0); - m_CacheEntriesList.Invalidate(); -} - -// copy from the list box to the cache manager -void CMakeSetupDialog::FillCacheManagerFromCacheGUI() -{ - cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager(); - std::set items = m_CacheEntriesList.GetItems(); - cmCacheManager::CacheIterator it = cachem->NewIterator(); - for(std::set::iterator i = items.begin(); - i != items.end(); ++i) - { - CPropertyItem* item = *i; - if ( it.Find((const char*)item->m_propName) ) - { - // if value is enclosed in single quotes ('foo') then remove them - // they were used to enforce the fact that it had 'invisible' - // trailing stuff - if (item->m_curValue.GetLength() >= 2 && - item->m_curValue[0] == '\'' && - item->m_curValue[item->m_curValue.GetLength() - 1] == '\'') - { - it.SetValue(item->m_curValue.Mid( - 1, item->m_curValue.GetLength() - 2)); - } - else - { - it.SetValue(item->m_curValue); - } - } - } -} - - - -//! Load cache file from m_WhereBuild and display in GUI editor -void CMakeSetupDialog::LoadCacheFromDiskToGUI() -{ - cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager(); - if(m_WhereBuild != "") - { - if (!cachem->LoadCache(m_WhereBuild)) - { - // if it does exist, but isn;t readable then warn the user - std::string cacheFile = m_WhereBuild; - cacheFile += "/CMakeCache.txt"; - if(cmSystemTools::FileExists(cacheFile.c_str())) - { - cmSystemTools::Error("There is a CMakeCache.txt file for the current binary tree but cmake does not have permission to read it. Please check the permissions of the directory you are trying to run CMake on."); - return; - } - } - cmCacheManager::CacheIterator itm = cachem->NewIterator(); - if ( itm.Find("CMAKE_HOME_DIRECTORY")) - { - std::string path = ConvertToWindowsPath(itm.GetValue()); - this->m_WhereSource = path.c_str(); - this->m_WhereSourceControl.SetWindowText(this->m_WhereSource); - this->OnChangeWhereSource(); - } - m_CMakeInstance->SetHomeDirectory(m_WhereSource); - m_CMakeInstance->SetStartDirectory(m_WhereSource); - m_CMakeInstance->SetHomeOutputDirectory(m_WhereBuild); - m_CMakeInstance->SetStartOutputDirectory(m_WhereBuild); - m_CMakeInstance->PreLoadCMakeFiles(); - this->FillCacheGUIFromCacheManager(); - cmCacheManager::CacheIterator it = - cachem->GetCacheIterator("CMAKE_GENERATOR"); - if(!it.IsAtEnd()) - { - m_GeneratorPicked = true; - const char* extraGen = cachem->GetCacheValue("CMAKE_EXTRA_GENERATOR"); - std::string curGen = cmExternalMakefileProjectGenerator:: - CreateFullGeneratorName(it.GetValue(), extraGen); - - if(m_GeneratorDialog.m_GeneratorChoiceString != curGen.c_str()) - { - m_GeneratorDialog.m_GeneratorChoiceString = curGen.c_str(); - this->UpdateData(FALSE); - } - } - } -} - -//! Save GUI values to cmCacheManager and then save to disk. -void CMakeSetupDialog::SaveCacheFromGUI() -{ - cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager(); - this->FillCacheManagerFromCacheGUI(); - if(m_WhereBuild != "") - { - cachem->SaveCache(m_WhereBuild); - } -} - - -void CMakeSetupDialog::OnSize(UINT nType, int cx, int cy) -{ - if (nType == SIZE_MINIMIZED) - { - CDialog::OnSize(nType, cx, cy); - return; - } - if (m_oldCX == -1) - { - m_oldCX = cx; - m_oldCY = cy; - } - int deltax = cx - m_oldCX; - int deltay = cy - m_oldCY; - - m_oldCX = cx; - m_oldCY = cy; - - CDialog::OnSize(nType, cx, cy); - - if (deltax == 0 && deltay == 0) - { - return; - } - - if(m_CacheEntriesList.m_hWnd) - { - // get the original sizes/positions - CRect cRect; - m_AdvancedValuesControl.GetWindowRect(&cRect); - this->ScreenToClient(&cRect); - m_AdvancedValuesControl.SetWindowPos(&wndTop, cRect.left + deltax, - cRect.top, - 0, 0, - SWP_NOCOPYBITS | - SWP_NOSIZE | SWP_NOZORDER); - m_SuppressDevWarningsControl.GetWindowRect(&cRect); - this->ScreenToClient(&cRect); - m_SuppressDevWarningsControl.SetWindowPos(&wndTop, cRect.left + deltax, - cRect.top, - 0, 0, - SWP_NOCOPYBITS | - SWP_NOSIZE | SWP_NOZORDER); - m_BrowseSource.GetWindowRect(&cRect); - this->ScreenToClient(&cRect); - m_BrowseSource.SetWindowPos(&wndTop, cRect.left + deltax, - cRect.top, - 0, 0, - SWP_NOCOPYBITS | SWP_NOSIZE | SWP_NOZORDER); - m_BrowseBuild.GetWindowRect(&cRect); - this->ScreenToClient(&cRect); - m_BrowseBuild.SetWindowPos(&wndTop, cRect.left + deltax, - cRect.top, - 0, 0, - SWP_NOCOPYBITS | SWP_NOSIZE | SWP_NOZORDER); - - m_WhereSourceControl.GetWindowRect(&cRect); - m_WhereSourceControl.SetWindowPos(&wndTop, cRect.left, cRect.top, - cRect.Width() + deltax, - cRect.Height(), - SWP_NOCOPYBITS | - SWP_NOMOVE | SWP_NOZORDER); - m_WhereBuildControl.GetWindowRect(&cRect); - m_WhereBuildControl.SetWindowPos(&wndTop, cRect.left, cRect.top, - cRect.Width() + deltax, - cRect.Height(), - SWP_NOCOPYBITS | - SWP_NOMOVE | SWP_NOZORDER); - m_ListFrame.GetWindowRect(&cRect); - m_ListFrame.SetWindowPos(&wndTop, cRect.left, cRect.top, - cRect.Width() + deltax, - cRect.Height() + deltay, - SWP_NOCOPYBITS | SWP_NOMOVE | SWP_NOZORDER); - m_CacheEntriesList.GetWindowRect(&cRect); - m_CacheEntriesList.SetWindowPos(&wndTop, cRect.left, cRect.top, - cRect.Width() + deltax, - cRect.Height() + deltay, - SWP_NOCOPYBITS | SWP_NOMOVE | SWP_NOZORDER); - - m_StatusDisplay.GetWindowRect(&cRect); - this->ScreenToClient(&cRect); - m_StatusDisplay.SetWindowPos(&wndBottom, cRect.left, - cRect.top + deltay, - cRect.Width() + deltax, cRect.Height(), - SWP_NOCOPYBITS); - - m_MouseHelp.GetWindowRect(&cRect); - this->ScreenToClient(&cRect); - m_MouseHelp.SetWindowPos(&wndTop, cRect.left , - cRect.top + deltay, - cRect.Width() + deltax, cRect.Height(), - SWP_NOCOPYBITS | SWP_NOZORDER); - - deltax = int(deltax + m_deltaXRemainder); - m_deltaXRemainder = float(deltax%2); - - - m_Configure.GetWindowRect(&cRect); - this->ScreenToClient(&cRect); - m_Configure.SetWindowPos(&wndTop, cRect.left + deltax/2, - cRect.top + deltay, - 0, 0, - SWP_NOCOPYBITS | SWP_NOSIZE); - m_CancelButton.GetWindowRect(&cRect); - this->ScreenToClient(&cRect); - m_CancelButton.SetWindowPos(&wndTop, cRect.left + deltax/2, - cRect.top + deltay, - 0, 0, - SWP_NOCOPYBITS | SWP_NOSIZE); - m_OKButton.GetWindowRect(&cRect); - this->ScreenToClient(&cRect); - m_OKButton.SetWindowPos(&wndTop, cRect.left + deltax/2, - cRect.top + deltay, - 0, 0, - SWP_NOCOPYBITS | SWP_NOSIZE); - m_DeleteButton.GetWindowRect(&cRect); - this->ScreenToClient(&cRect); - m_DeleteButton.SetWindowPos(&wndTop, cRect.left + deltax/2, - cRect.top + deltay, - 0, 0, - SWP_NOCOPYBITS | SWP_NOSIZE); - m_HelpButton.GetWindowRect(&cRect); - this->ScreenToClient(&cRect); - m_HelpButton.SetWindowPos(&wndTop, cRect.left + deltax/2, - cRect.top + deltay, - 0, 0, - SWP_NOCOPYBITS | SWP_NOSIZE); - } - -} - - -void CMakeSetupDialog::OnGetMinMaxInfo( MINMAXINFO FAR* lpMMI ) -{ - lpMMI->ptMinTrackSize.x = 550; - lpMMI->ptMinTrackSize.y = 272; -} - -void CMakeSetupDialog::OnCancel() -{ - if(m_RunningConfigure) - { - if(MessageBox("You are in the middle of a Configure.\n" - "If you Cancel now the configure information will be lost.\n" - "Are you sure you want to Cancel?", "Confirm Exit", - MB_YESNO) == IDYES) - { - cmSystemTools::SetFatalErrorOccured(); - } - return; - } - if(m_CacheEntriesList.IsDirty()) - { - if(MessageBox("You have changed options but not rebuilt, " - "are you sure you want to exit?", "Confirm Exit", - MB_YESNO) == IDYES) - { - CDialog::OnOK(); - } - } - else - { - CDialog::OnOK(); - } -} - -void CMakeSetupDialog::OnOk() -{ - // enable error messages each time configure is pressed - cmSystemTools::EnableMessages(); - m_CacheEntriesList.ClearDirty(); - this->RunCMake(true); - - // save the size of the dialog - - - if (!(::GetKeyState(VK_SHIFT) & 0x1000)) - { - CDialog::OnOK(); - } -} - -// Create a shortcut on the desktop with the current Source/Build dir. -int CMakeSetupDialog::CreateShortcut() -{ - // Find the desktop folder and create the link name - - HKEY hKey; - if(RegOpenKeyEx(HKEY_CURRENT_USER, - "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", - 0, KEY_READ, &hKey) != ERROR_SUCCESS) - { - AfxMessageBox ("Create shortcut: unable to find 'Shell Folders' key in registry!"); - return 1; - } - - DWORD dwType, dwSize; -#define MAXPATH 1024 - char link_name[MAXPATH]; - dwSize = MAXPATH; - if(RegQueryValueEx(hKey, - (LPCTSTR)"Desktop", - NULL, - &dwType, - (BYTE *)link_name, - &dwSize) != ERROR_SUCCESS) - { - AfxMessageBox ("Create shortcut: unable to find 'Desktop' registry value in 'Shell Folders' key!"); - return 1; - } - - if(dwType != REG_SZ) - { - AfxMessageBox ("Create shortcut: 'Desktop' registry value in 'Shell Folders' key has wrong type!"); - return 1; - } - - strcat(link_name, "\\CMake - "); - std::string current_dir = cmSystemTools::GetFilenameName((LPCTSTR)m_WhereSource); - strcat(link_name, current_dir.c_str()); - strcat(link_name, ".lnk"); - - // Find the path to the current executable - - char path_to_current_exe[MAXPATH]; - ::GetModuleFileName(NULL, path_to_current_exe, MAXPATH); - - // Create the shortcut - - HRESULT hres; - IShellLink *psl; - - // Initialize the COM library - - hres = CoInitialize(NULL); - - if (! SUCCEEDED (hres)) - { - AfxMessageBox ("Create shortcut: unable to initialize the COM library!"); - return 1; - } - - // Create an IShellLink object and get a pointer to the IShellLink - // interface (returned from CoCreateInstance). - - hres = CoCreateInstance(CLSID_ShellLink, - NULL, - CLSCTX_INPROC_SERVER, - IID_IShellLink, - (void **)&psl); - - if (! SUCCEEDED (hres)) - { - AfxMessageBox ("Create shortcut: unable to create IShellLink instance!"); - return 1; - } - - IPersistFile *ppf; - - // Query IShellLink for the IPersistFile interface for - // saving the shortcut in persistent storage. - - hres = psl->QueryInterface(IID_IPersistFile, (void **)&ppf); - - if (SUCCEEDED (hres)) - { - // Set the path to the shortcut target. - hres = psl->SetPath(path_to_current_exe); - - if (! SUCCEEDED (hres)) - { - AfxMessageBox ("Create shortcut: SetPath failed!"); - } - - // Set the arguments of the shortcut. - CString args = " /H=\"" + m_WhereSource + "\" /B=\"" + m_WhereBuild + "\" /G=\"" + m_GeneratorDialog.m_GeneratorChoiceString + "\" /A=\"" + (m_AdvancedValues ? "TRUE" : "FALSE") + "\""; - - hres = psl->SetArguments(args); - - if (! SUCCEEDED (hres)) - { - AfxMessageBox ("Create shortcut: SetArguments failed!"); - } - - // Set the description of the shortcut. - hres = psl->SetDescription("Shortcut to CMakeSetup"); - - if (! SUCCEEDED (hres)) - { - AfxMessageBox ("Create shortcut: SetDescription failed!"); - } - - // Ensure that the string consists of ANSI characters. - WORD wszAr[MAX_PATH]; - LPWSTR wsz = (LPWSTR)wszAr; - MultiByteToWideChar(CP_ACP, 0, link_name, -1, (LPWSTR)(wsz), MAX_PATH); - - // Save the shortcut via the IPersistFile::Save member function. - hres = ppf->Save(wsz, TRUE); - - if (! SUCCEEDED (hres)) - { - AfxMessageBox ("Create shortcut: Save failed!"); - } - - // Release the pointer to IPersistFile. - ppf->Release (); - } - // Release the pointer to IShellLink. - psl->Release (); - - return 0; -} - -void CMakeSetupDialog::OnHelpButton() -{ - CMakeHelp dialog; - dialog.DoModal(); -} - -void CMakeSetupDialog::OnDeleteButton() -{ - std::string message = "Are you sure you want to delete the CMakeCache.txt file for:\n"; - message += m_WhereBuild; - if(::MessageBox(0, message.c_str(), "Delete Cache?", - MB_YESNO|MB_TASKMODAL) == IDNO) - { - return; - } - m_GeneratorPicked = false; - - if(m_WhereBuild != "" && this->m_CMakeInstance) - { - this->m_CMakeInstance->GetCacheManager()->DeleteCache(m_WhereBuild); - } - - // Make sure we are working from the cache on disk - this->LoadCacheFromDiskToGUI(); - - m_OKButton.EnableWindow(false); -} - -void CMakeSetupDialog::ShowAdvancedValues() -{ - m_CacheEntriesList.ShowAdvanced(); -} - -void CMakeSetupDialog::RemoveAdvancedValues() -{ - m_CacheEntriesList.HideAdvanced(); -} - - -void CMakeSetupDialog::OnSuppressDevValue() -{ -} - -void CMakeSetupDialog::OnDoubleclickedSuppressDevValue() -{ - this->OnSuppressDevValue(); -} - -void CMakeSetupDialog::OnAdvancedValues() -{ - this->UpdateData(); - if(m_AdvancedValues) - { - this->ShowAdvancedValues(); - } - else - { - this->RemoveAdvancedValues(); - } -} - -void CMakeSetupDialog::OnDoubleclickedAdvancedValues() -{ - this->OnAdvancedValues(); -} - -// Handle param or single dropped file. -void CMakeSetupDialog::ChangeDirectoriesFromFile(const char* arg) -{ - // Check if the argument refers to a CMakeCache.txt or - // CMakeLists.txt file. - std::string listPath; - std::string cachePath; - bool argIsFile = false; - if(cmSystemTools::FileIsDirectory(arg)) - { - std::string path = cmSystemTools::CollapseFullPath(arg); - cmSystemTools::ConvertToUnixSlashes(path); - std::string cacheFile = path; - cacheFile += "/CMakeCache.txt"; - std::string listFile = path; - listFile += "/CMakeLists.txt"; - if(cmSystemTools::FileExists(cacheFile.c_str())) - { - cachePath = path; - } - if(cmSystemTools::FileExists(listFile.c_str())) - { - listPath = path; - } - } - else if(cmSystemTools::FileExists(arg)) - { - argIsFile = true; - std::string fullPath = cmSystemTools::CollapseFullPath(arg); - std::string name = cmSystemTools::GetFilenameName(fullPath.c_str()); - name = cmSystemTools::LowerCase(name); - if(name == "cmakecache.txt") - { - cachePath = cmSystemTools::GetFilenamePath(fullPath.c_str()); - } - else if(name == "cmakelists.txt") - { - listPath = cmSystemTools::GetFilenamePath(fullPath.c_str()); - } - } - - // If there is a CMakeCache.txt file, use its settings. - if(cachePath.length() > 0) - { - cmCacheManager* cachem = m_CMakeInstance->GetCacheManager(); - cmCacheManager::CacheIterator it = cachem->NewIterator(); - if(cachem->LoadCache(cachePath.c_str()) && it.Find("CMAKE_HOME_DIRECTORY")) - { - std::string path = ConvertToWindowsPath(cachePath.c_str()); - m_WhereBuild = path.c_str(); - - path = ConvertToWindowsPath(it.GetValue()); - m_WhereSource = path.c_str(); - - m_GeneratorDialog.m_GeneratorChoiceString = _T(""); - return; - } - } - - // If there is a CMakeLists.txt file, use it as the source tree. - if(listPath.length() > 0) - { - std::string path = ConvertToWindowsPath(listPath.c_str()); - m_WhereSource = path.c_str(); - - if(argIsFile) - { - // Source CMakeLists.txt file given. It was probably dropped - // onto the window or executable. Default to an in-source - // build. - m_WhereBuild = path.c_str(); - } - else - { - // Source directory given on command line. Use current working - // directory as build tree. - std::string cwd = cmSystemTools::GetCurrentWorkingDirectory(); - path = ConvertToWindowsPath(cwd.c_str()); - m_WhereBuild = path.c_str(); - } - } -} - - -// The framework calls this member function when the user releases the -// left mouse button over a window that has registered itself as the -// recipient of dropped files. - -void CMakeSetupDialog::OnDropFiles(HDROP hDropInfo) -{ - UINT nb_files = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0); - if (nb_files > 0) - { - UINT buffer_size = DragQueryFile(hDropInfo, 0, NULL, 0); - char *buffer = new char [buffer_size + 1]; - DragQueryFile(hDropInfo, 0, buffer, buffer_size + 1); - - this->ChangeDirectoriesFromFile(buffer); - delete [] buffer; - - this->m_WhereSourceControl.SetWindowText(this->m_WhereSource); - this->m_WhereBuildControl.SetWindowText(this->m_WhereBuild); - - this->UpdateData(FALSE); - - this->OnChangeWhereSource(); - this->OnChangeWhereBuild(); - } - - DragFinish(hDropInfo); -} - -BOOL CMakeSetupDialog::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) -{ - CDialog::OnSetCursor(pWnd, nHitTest, message); - if(m_Cursor == LoadCursor(NULL, IDC_WAIT)) - { - ::SetCursor(m_Cursor); - } - return true; -} diff --git a/Source/MFCDialog/CMakeSetupDialog.h b/Source/MFCDialog/CMakeSetupDialog.h deleted file mode 100644 index 65a53d6c5..000000000 --- a/Source/MFCDialog/CMakeSetupDialog.h +++ /dev/null @@ -1,152 +0,0 @@ -/*========================================================================= - -Program: CMake - Cross-Platform Makefile Generator -Module: $RCSfile: CMakeSetupDialog.h,v $ -Language: C++ -Date: $Date: 2008-03-12 02:51:56 $ -Version: $Revision: 1.31 $ - -Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. -See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - -This software is distributed WITHOUT ANY WARRANTY; without even -the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -// CMakeSetupDialogDlg.h : header file -// - -#if !defined(AFX_CMakeSetupDialogDLG_H__AC17A6F6_4634_11D4_8F21_00A0CC33FCD3__INCLUDED_) -#define AFX_CMakeSetupDialogDLG_H__AC17A6F6_4634_11D4_8F21_00A0CC33FCD3__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - - -#include "PropertyList.h" -#include "CMakeGenDialog.h" - -///////////////////////////////////////////////////////////////////////////// -// CMakeSetupDialog dialog - -class CMakeCommandLineInfo; -class cmake; - -class CMakeSetupDialog : public CDialog -{ -// Construction -public: - CMakeSetupDialog(const CMakeCommandLineInfo& cmdInfo, - CWnd* pParent = NULL); - - ~CMakeSetupDialog(); - // return the cmake that is currently being used - cmake *GetCMakeInstance() { - return m_CMakeInstance; } -protected: - //! Load cache file from m_WhereBuild and display in GUI editor - void LoadCacheFromDiskToGUI(); - //! Save GUI values to cmCacheManager and then save to disk. - void SaveCacheFromGUI(); - void SaveToRegistry(); - void LoadFromRegistry(); - bool Browse(CString&, const char* title); - void ReadRegistryValue(HKEY hKey, - CString *val, - const char *key, - const char *aadefault); - void ShowAdvancedValues(); - void RemoveAdvancedValues(); - // Dialog Data - //{{AFX_DATA(CMakeSetupDialog) - enum { IDD = IDD_CMakeSetupDialog_DIALOG }; - CButton m_AdvancedValuesControl; - CButton m_SuppressDevWarningsControl; - CButton m_BrowseSource; - CButton m_BrowseBuild; - CButton m_HelpButton; - CButton m_DeleteButton; - CButton m_OKButton; - CButton m_CancelButton; - CString m_WhereSource; - CString m_WhereBuild; - CButton m_ListFrame; - bool m_BuildPathChanged; - CComboBox m_WhereSourceControl; - CComboBox m_WhereBuildControl; - CPropertyList m_CacheEntriesList; - CStatic m_MouseHelp; - CStatic m_StatusDisplay; - CButton m_Configure; - BOOL m_AdvancedValues; - BOOL m_SuppressDevValue; - //}}AFX_DATA - - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CMakeSetupDialog) -protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - //}}AFX_VIRTUAL - -// Implementation -protected: - void RunCMake(bool generateProjectFiles); - // copy from the cache manager to the cache edit list box - void FillCacheGUIFromCacheManager(); - // copy from the list box to the cache manager - void FillCacheManagerFromCacheGUI(); - // Create a shortcut on the desktop with the current Source/Build dir. - int CreateShortcut(); - - // Set initial directories from a file path. - void ChangeDirectoriesFromFile(const char* arg); - - HICON m_hIcon; - CString m_RegistryKey; - CString m_PathToExecutable; - // Generated message map functions - //{{AFX_MSG(CMakeSetupDialog) - virtual BOOL OnInitDialog(); - afx_msg void OnSysCommand(UINT nID, LPARAM lParam); - afx_msg void OnCancel(); - afx_msg void OnPaint(); - afx_msg HCURSOR OnQueryDragIcon(); - afx_msg void OnBrowseWhereSource(); - virtual void OnConfigure(); - afx_msg void OnBrowseWhereBuild(); - afx_msg void OnChangeWhereBuild(); - afx_msg void OnSelendokWhereBuild(); - afx_msg void OnChangeWhereSource(); - afx_msg void OnSelendokWhereSource(); - afx_msg void OnSize(UINT nType, int cx, int cy); - afx_msg void OnGetMinMaxInfo( MINMAXINFO FAR* lpMMI ); - afx_msg void OnOk(); - afx_msg void OnHelpButton(); - afx_msg void OnDeleteButton(); - afx_msg void OnAdvancedValues(); - afx_msg void OnDoubleclickedAdvancedValues(); - afx_msg void OnSuppressDevValue(); - afx_msg void OnDoubleclickedSuppressDevValue(); - afx_msg void OnDropFiles(HDROP); - afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); - //}}AFX_MSG - DECLARE_MESSAGE_MAP() - - int m_oldCX; - int m_oldCY; - float m_deltaXRemainder; - cmake *m_CMakeInstance; - HCURSOR m_Cursor; - bool m_RunningConfigure; - bool m_GeneratorPicked; - - CCMakeGenDialog m_GeneratorDialog; - -}; - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // !defined(AFX_CMakeSetupDialogDLG_H__AC17A6F6_4634_11D4_8F21_00A0CC33FCD3__INCLUDED_) diff --git a/Source/MFCDialog/CMakeSetupManifest.xml b/Source/MFCDialog/CMakeSetupManifest.xml deleted file mode 100644 index 1a662f34a..000000000 --- a/Source/MFCDialog/CMakeSetupManifest.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Source/MFCDialog/MakeHelp.cpp b/Source/MFCDialog/MakeHelp.cpp deleted file mode 100644 index 53ee3ee5b..000000000 --- a/Source/MFCDialog/MakeHelp.cpp +++ /dev/null @@ -1,43 +0,0 @@ -// MakeHelp.cpp : implementation file -// - -#include "stdafx.h" -#include "CMakeSetup.h" -#include "MakeHelp.h" - -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -///////////////////////////////////////////////////////////////////////////// -// CMakeHelp dialog - - -CMakeHelp::CMakeHelp(CWnd* pParent /*=NULL*/) - : CDialog(CMakeHelp::IDD, pParent) -{ - //{{AFX_DATA_INIT(CMakeHelp) - m_HelpMessage = _T("CMake is used to configure and generate build files for software projects. The basic steps for configuring a project are as follows:\r\n\r\n1. Select the source directory for the project. This should contain the CMakeLists.txt files for the project.\r\n\r\n2. Select the build directory for the project. This is the directory where the project will be built. It can be the same or a different directory than the source directory. For easy clean up, a separate build directory is recommended. CMake will create the directory if it does not exist.\r\n\r\n3. Once the source and binary directories are selected, it is time to press the Configure button. This will cause CMake to read all of the input files and discover all the variables used by the project. The first time a variable is displayed it will be in Red. Users should inspect red variables making sure the values are correct. For some projects the Configure process can be iterative, so continue to press the Configure button until there are no longer red entries.\r\n\r\n4. Once there are no longer red entries, you should click the OK button. This will write the build files to the build directory and exit CMake."); - //}}AFX_DATA_INIT -} - - -void CMakeHelp::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CMakeHelp) - DDX_Text(pDX, IDC_EDIT1, m_HelpMessage); - //}}AFX_DATA_MAP -} - - -BEGIN_MESSAGE_MAP(CMakeHelp, CDialog) - //{{AFX_MSG_MAP(CMakeHelp) - // NOTE: the ClassWizard will add message map macros here - //}}AFX_MSG_MAP -END_MESSAGE_MAP() - -///////////////////////////////////////////////////////////////////////////// -// CMakeHelp message handlers diff --git a/Source/MFCDialog/MakeHelp.h b/Source/MFCDialog/MakeHelp.h deleted file mode 100644 index a91e1a982..000000000 --- a/Source/MFCDialog/MakeHelp.h +++ /dev/null @@ -1,62 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: MakeHelp.h,v $ - Language: C++ - Date: $Date: 2002-10-23 22:03:27 $ - Version: $Revision: 1.3 $ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -#if !defined(AFX_MAKEHELP_H__DD327AED_1E65_43E8_A605_0933065D1757__INCLUDED_) -#define AFX_MAKEHELP_H__DD327AED_1E65_43E8_A605_0933065D1757__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 -// MakeHelp.h : header file -// - -///////////////////////////////////////////////////////////////////////////// -// CMakeHelp dialog - -class CMakeHelp : public CDialog -{ -// Construction -public: - CMakeHelp(CWnd* pParent = NULL); // standard constructor - -// Dialog Data - //{{AFX_DATA(CMakeHelp) - enum { IDD = IDD_CMAKE_HELP_DIALOG }; - CString m_HelpMessage; - //}}AFX_DATA - - -// Overrides - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CMakeHelp) - protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - //}}AFX_VIRTUAL - -// Implementation -protected: - - // Generated message map functions - //{{AFX_MSG(CMakeHelp) - // NOTE: the ClassWizard will add member functions here - //}}AFX_MSG - DECLARE_MESSAGE_MAP() -}; - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // !defined(AFX_MAKEHELP_H__DD327AED_1E65_43E8_A605_0933065D1757__INCLUDED_) diff --git a/Source/MFCDialog/PathDialog.cpp b/Source/MFCDialog/PathDialog.cpp deleted file mode 100644 index d7bd42798..000000000 --- a/Source/MFCDialog/PathDialog.cpp +++ /dev/null @@ -1,377 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -//PathDialog.h file -// -//Written by Nguyen Tan Hung -////////////////////////////////////////////////////////////////////////// - -#include "stdafx.h" -#include "PathDialog.h" -#include - -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -#define IDC_FOLDERTREE 0x3741 -#define IDC_TITLE 0x3742 -#define IDC_STATUSTEXT 0x3743 - -#define IDC_NEW_EDIT_PATH 0x3744 - -// Class CDlgWnd -BEGIN_MESSAGE_MAP(CPathDialogSub, CWnd) - ON_BN_CLICKED(IDOK, OnOK) - ON_EN_CHANGE(IDC_NEW_EDIT_PATH, OnChangeEditPath) - END_MESSAGE_MAP() - - void CPathDialogSub::OnOK() -{ - ::GetWindowText(::GetDlgItem(m_hWnd, IDC_NEW_EDIT_PATH), - m_pPathDialog->m_szPathName, MAX_PATH); - - if(CPathDialog::MakeSurePathExists(m_pPathDialog->m_szPathName)==0) - { - m_pPathDialog->m_bGetSuccess=TRUE; - ::EndDialog(m_pPathDialog->m_hWnd, IDOK); - } - else - { - ::SetFocus(::GetDlgItem(m_hWnd, IDC_NEW_EDIT_PATH)); - } -} - -void CPathDialogSub::OnChangeEditPath() -{ - ::GetWindowText(::GetDlgItem(m_hWnd, IDC_NEW_EDIT_PATH), - m_pPathDialog->m_szPathName, MAX_PATH); - BOOL bEnableOKButton = (_tcslen(m_pPathDialog->m_szPathName)>0); - SendMessage(BFFM_ENABLEOK, 0, bEnableOKButton); -} -///////////////////////////////////////////////////////////////////////////// -// CPathDialog dialog - - -CPathDialog::CPathDialog(LPCTSTR lpszCaption, - LPCTSTR lpszTitle, - LPCTSTR lpszInitialPath, - CWnd* pParent) -{ - m_hWnd=NULL; - m_PathDialogSub.m_pPathDialog= this; - m_bParentDisabled = FALSE; - - // Get the true parent of the dialog - m_pParentWnd = CWnd::GetSafeOwner(pParent); - - m_lpszCaption = lpszCaption; - m_lpszInitialPath = lpszInitialPath; - - memset(&m_bi, 0, sizeof(BROWSEINFO) ); - m_bi.hwndOwner = (m_pParentWnd==NULL)?NULL:m_pParentWnd->GetSafeHwnd(); - m_bi.pszDisplayName = 0; - m_bi.pidlRoot = 0; - m_bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT; - m_bi.lpfn = BrowseCallbackProc; - m_bi.lpszTitle = lpszTitle; -} - - -///////////////////////////////////////////////////////////////////////////// -// CPathDialog message handlers - -CString CPathDialog::GetPathName() -{ - return CString(m_szPathName); -} - -int CALLBACK CPathDialog::BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam, LPARAM pData) -{ - CPathDialog* pDlg = (CPathDialog*)pData; - - switch(uMsg) - { - case BFFM_INITIALIZED: - { - RECT rc; - HWND hEdit; - HFONT hFont; - - pDlg->m_hWnd = hwnd; - - if(pDlg->m_lpszCaption!=NULL) - { - ::SetWindowText(hwnd, pDlg->m_lpszCaption); - } - - VERIFY(pDlg->m_PathDialogSub.SubclassWindow(hwnd)); - ::ShowWindow(::GetDlgItem(hwnd, IDC_STATUSTEXT), SW_HIDE); - ::GetWindowRect(::GetDlgItem(hwnd, IDC_FOLDERTREE), &rc); - rc.bottom = rc.top - 4; - rc.top = rc.bottom - 23; - ::ScreenToClient(hwnd, (LPPOINT)&rc); - ::ScreenToClient(hwnd, ((LPPOINT)&rc)+1); - hEdit = ::CreateWindowEx(WS_EX_CLIENTEDGE, _T("EDIT"), _T(""), - WS_CHILD|WS_TABSTOP|WS_VISIBLE|ES_AUTOHSCROLL, - rc.left, rc.top, - rc.right-rc.left, rc.bottom-rc.top, - hwnd, NULL, NULL, NULL); - ::SetWindowLong(hEdit, GWL_ID, IDC_NEW_EDIT_PATH); - ::ShowWindow(hEdit, SW_SHOW); - - hFont = (HFONT)::SendMessage(hwnd, WM_GETFONT, 0, 0); - ::SendMessage(hEdit, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0)); - - LPCTSTR lpszPath = pDlg->m_lpszInitialPath; - TCHAR szTemp[MAX_PATH]; - if(lpszPath==NULL) - { - ::GetCurrentDirectory(MAX_PATH, szTemp ); - lpszPath = szTemp; - } - // WParam is TRUE since you are passing a path. - // It would be FALSE if you were passing a pidl. - ::SendMessage(hwnd,BFFM_SETSELECTION,TRUE, - (LPARAM)lpszPath); - break; - } - case BFFM_SELCHANGED: - { - char szSelection[MAX_PATH]; - if(!::SHGetPathFromIDList((LPITEMIDLIST)lParam, szSelection) || - (szSelection[1] !=':' && szSelection[1] != '\\')) - { - szSelection[0] = '\0'; - ::SendMessage(hwnd, BFFM_ENABLEOK, 0, FALSE); - } - else - { - ::SendMessage(hwnd, BFFM_ENABLEOK, 0, TRUE); - } - ::SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)szSelection); - ::SetWindowText(::GetDlgItem(hwnd, IDC_NEW_EDIT_PATH), szSelection); - break; - } - default: - break; - } - return 0; -} - - - -int CPathDialog::DoModal() -{ - - ///////////////////////////////////////////////////////// - TCHAR szPathTemp[MAX_PATH]; - m_bi.lpfn = BrowseCallbackProc; // address of callback function - m_bi.lParam = (LPARAM)this; // pass address of object to callback function - m_bi.pszDisplayName = szPathTemp; - - LPITEMIDLIST pidl; - LPMALLOC pMalloc; - - int iResult=-1; - if(SUCCEEDED(SHGetMalloc(&pMalloc))) - { - m_bGetSuccess = FALSE; - pidl = SHBrowseForFolder(&m_bi); - if (pidl!=NULL) - { -#if defined(_WIN64) && defined(__INTEL_COMPILER) -# pragma warning ( disable : 167) -#endif - // In C++: - pMalloc->Free(pidl); - //In C: - //pMalloc->lpVtbl->Free(pMalloc,pidl); - //pMalloc->lpVtbl->Release(pMalloc); - } - if(m_bGetSuccess) - { - iResult = IDOK; - } - pMalloc->Release(); - } - - if(m_bParentDisabled && (m_pParentWnd!=NULL)) - { - m_pParentWnd->EnableWindow(TRUE); - } - m_bParentDisabled=FALSE; - - return iResult; -} - -BOOL CPathDialog::IsFileNameValid(LPCTSTR /* lpFileName */) -{ - return TRUE; -} - -const TCHAR c_FolderDoesNotExist[] = _T( - "The folder:\n\n" - "%s\n\n" - "does not exist. Do you want the folder to be created?"); -const TCHAR c_szErrInvalidPath[] = _T( - "The folder:" - "\n\n" - "%s\n\n" - "is invalid. Please reenter."); -const TCHAR c_szErrCreatePath[] = _T( - "The folder:" - "\n\n" - "%s" - "\n\ncan not be created. Please double check."); - -//return -1: user break; -//return 0: no error -//return 1: lpPath is invalid -//return 2: can not create lpPath -int CPathDialog::MakeSurePathExists(LPCTSTR lpPath) -{ - CString strMsg; - int iRet = -1; - try - { - //validate path - iRet=Touch(lpPath, TRUE); - if(iRet!=0) - { - throw iRet; - } - - if(_taccess(lpPath, 0)==0) - { - return (int)0; - } - - strMsg.Format(c_FolderDoesNotExist, lpPath); - if(AfxMessageBox(strMsg, MB_YESNO|MB_ICONQUESTION) == IDYES) - { - //create path - iRet=Touch(lpPath, FALSE); - if(iRet!=0) - { - throw iRet; - } - } - return 0; - } - catch(int nErrCode) - { - switch(nErrCode) - { - case 1: - strMsg.Format(c_szErrInvalidPath, lpPath); - break; - case 2: - default: - strMsg.Format(c_szErrCreatePath, lpPath); - break; - } - - AfxMessageBox(strMsg, MB_OK|MB_ICONEXCLAMATION); - } - - return iRet; -} - -//return 0: no error -//return 1: lpPath is invalid -//return 2: lpPath can not be created(bValidate==FALSE) -int CPathDialog::Touch(LPCTSTR lpPath, BOOL bValidate) -{ - if(lpPath==NULL) - { - return 1; - } - - TCHAR szPath[MAX_PATH]; - _tcscpy(szPath, lpPath); - size_t nLen = _tcslen(szPath); - - int i; - if(nLen==3) - { - if(!bValidate) - { - if(_access(szPath, 0)!=0) - { - return 2; - } - } - return 0; - } - - i = 3; - BOOL bLastOne=TRUE; - LPTSTR lpCurrentName; - while(szPath[i]!=0) - { - lpCurrentName = &szPath[i]; - while( (szPath[i]!=0) && (szPath[i]!=_T('\\')) ) - { - i++; - } - - bLastOne =(szPath[i]==0); - szPath[i] = 0; - - if(!bValidate) - { - CreateDirectory(szPath, NULL); - if(_taccess(szPath, 0)!=0) - { - return 2; - } - } - - if(bLastOne) - { - break; //it's done - } - else - { - szPath[i] = _T('\\'); - } - - i++; - } - - return (bLastOne?0:1); -} - -//return 0: ok -//return 1: error -int CPathDialog::ConcatPath(LPTSTR lpRoot, LPCTSTR lpMorePath) -{ - if(lpRoot==NULL) - { - return 1; - } - - size_t nLen = _tcslen(lpRoot); - - if(nLen<3) - { - return 1; - } - - if(lpMorePath==NULL) - { - return 0; - } - - if(nLen==3) - { - _tcscat(lpRoot, lpMorePath); - return 0; - } - - _tcscat(lpRoot, _T("\\")); - _tcscat(lpRoot, lpMorePath); - - return 0; -} diff --git a/Source/MFCDialog/PathDialog.h b/Source/MFCDialog/PathDialog.h deleted file mode 100644 index be84c5235..000000000 --- a/Source/MFCDialog/PathDialog.h +++ /dev/null @@ -1,90 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: PathDialog.h,v $ - Language: C++ - Date: $Date: 2002-10-23 22:03:27 $ - Version: $Revision: 1.4 $ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -////////////////////////////////////////////////////////////////////////// -//PathDialog.h file -// -//Written by Nguyen Tan Hung -////////////////////////////////////////////////////////////////////////// - -#if !defined(AFX_PATHDIALOG_H__0F70BC86_11DB_11D4_B012_0000E8DD8DAA__INCLUDED_) -#define AFX_PATHDIALOG_H__0F70BC86_11DB_11D4_B012_0000E8DD8DAA__INCLUDED_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 -// PathDialog.h : header file -// -#include "shlobj.h" - -class CPathDialog; - -// CPathDialogSub - intercepts messages from child controls -class CPathDialogSub : public CWnd -{ - friend CPathDialog; -public: - CPathDialog* m_pPathDialog; -protected: - afx_msg void OnOK(); // OK button clicked - afx_msg void OnChangeEditPath(); - DECLARE_MESSAGE_MAP() -private: -}; - -///////////////////////////////////////////////////////////////////////////// -// CPathDialog dialog - -class CPathDialog -{ - friend CPathDialogSub; -// Construction -public: - CPathDialog(LPCTSTR lpszCaption=NULL, - LPCTSTR lpszTitle=NULL, - LPCTSTR lpszInitialPath=NULL, - CWnd* pParent = NULL); - - CString GetPathName(); - virtual int DoModal(); - - static int Touch(LPCTSTR lpPath, BOOL bValidate=TRUE); - static int MakeSurePathExists(LPCTSTR lpPath); - static BOOL IsFileNameValid(LPCTSTR lpFileName); - static int ConcatPath(LPTSTR lpRoot, LPCTSTR lpMorePath); - -private: - static int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam, LPARAM pData); - - LPCTSTR m_lpszCaption; - LPCTSTR m_lpszInitialPath; - - TCHAR m_szPathName[MAX_PATH]; - - BROWSEINFO m_bi; - HWND m_hWnd; - CWnd* m_pParentWnd; - BOOL m_bParentDisabled; - BOOL m_bGetSuccess; - - CPathDialogSub m_PathDialogSub; - -}; - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // !defined(AFX_PATHDIALOG_H__0F70BC86_11DB_11D4_B012_0000E8DD8DAA__INCLUDED_) diff --git a/Source/MFCDialog/PropertyList.cpp b/Source/MFCDialog/PropertyList.cpp deleted file mode 100644 index e31645147..000000000 --- a/Source/MFCDialog/PropertyList.cpp +++ /dev/null @@ -1,847 +0,0 @@ -// PropertyList.cpp : implementation file -// - -#include "stdafx.h" -#include "shellapi.h" -#include "CMakeSetup.h" -#include "CMakeSetupDialog.h" -#include "PathDialog.h" -#include "../cmCacheManager.h" -#include "../cmSystemTools.h" -#include "../cmake.h" -#define IDC_PROPCMBBOX 712 -#define IDC_PROPEDITBOX 713 -#define IDC_PROPBTNCTRL 714 -#define IDC_PROPCHECKBOXCTRL 715 - -///////////////////////////////////////////////////////////////////////////// -// CPropertyList - -CPropertyList::CPropertyList() -{ - m_Dirty = false; - m_ShowAdvanced = false; - m_curSel = -1; -} - -CPropertyList::~CPropertyList() -{ - for(std::set::iterator i = m_PropertyItems.begin(); - i != m_PropertyItems.end(); ++i) - { - delete *i; - } -} - - -BEGIN_MESSAGE_MAP(CPropertyList, CListBox) - //{{AFX_MSG_MAP(CPropertyList) - ON_WM_CREATE() - ON_WM_VSCROLL() - ON_CONTROL_REFLECT(LBN_SELCHANGE, OnSelchange) - ON_WM_LBUTTONUP() - ON_WM_KILLFOCUS() - ON_WM_LBUTTONDOWN() - ON_WM_RBUTTONUP() - ON_WM_MOUSEMOVE() - //}}AFX_MSG_MAP - ON_CBN_KILLFOCUS(IDC_PROPCMBBOX, OnKillfocusCmbBox) - ON_CBN_SELCHANGE(IDC_PROPCMBBOX, OnSelchangeCmbBox) - ON_EN_KILLFOCUS(IDC_PROPEDITBOX, OnKillfocusEditBox) - ON_EN_CHANGE(IDC_PROPEDITBOX, OnChangeEditBox) - ON_BN_CLICKED(IDC_PROPBTNCTRL, OnButton) - ON_BN_CLICKED(IDC_PROPCHECKBOXCTRL, OnCheckBox) - ON_COMMAND(42, OnDelete) - ON_COMMAND(43, OnHelp) - ON_COMMAND(44, OnIgnore) -END_MESSAGE_MAP() - -///////////////////////////////////////////////////////////////////////////// -// CPropertyList message handlers - -BOOL CPropertyList::PreCreateWindow(CREATESTRUCT& cs) -{ - if (!CListBox::PreCreateWindow(cs)) - return FALSE; - - cs.style &= ~(LBS_OWNERDRAWVARIABLE | LBS_SORT); - cs.style |= LBS_OWNERDRAWFIXED; - - m_bTracking = FALSE; - m_nDivider = 0; - m_bDivIsSet = FALSE; - - return TRUE; -} - -void CPropertyList::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct) -{ - lpMeasureItemStruct->itemHeight = 20; //pixels -} - - -void CPropertyList::DrawItem(LPDRAWITEMSTRUCT lpDIS) -{ - CDC dc; - dc.Attach(lpDIS->hDC); - CRect rectFull = lpDIS->rcItem; - CRect rect = rectFull; - if (m_nDivider==0) - m_nDivider = rect.Width() / 2; - rect.left = m_nDivider; - CRect rect2 = rectFull; - rect2.right = rect.left - 1; - UINT nIndex = lpDIS->itemID; - - if (nIndex != (UINT) -1) - { - //get the CPropertyItem for the current row - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(nIndex); - //draw two rectangles, one for each row column - if(pItem->m_NewValue) - { - dc.FillSolidRect(rect2,RGB(255,100, 100)); - } - else - { - dc.FillSolidRect(rect2,RGB(192,192,192)); - } - - dc.DrawEdge(rect2,EDGE_SUNKEN,BF_BOTTOMRIGHT); - dc.DrawEdge(rect,EDGE_SUNKEN,BF_BOTTOM); - - - //write the property name in the first rectangle - dc.SetBkMode(TRANSPARENT); - dc.DrawText(pItem->m_propName,CRect(rect2.left+3,rect2.top+3, - rect2.right-3,rect2.bottom+3), - DT_LEFT | DT_SINGLELINE); - - //write the initial property value in the second rectangle - dc.DrawText(pItem->m_curValue,CRect(rect.left+3,rect.top+3, - rect.right+3,rect.bottom+3), - DT_LEFT | DT_SINGLELINE); - } - dc.Detach(); -} - -int CPropertyList::AddItem(CString txt) -{ - int nIndex = AddString(txt); - return nIndex; -} -// order = 0 sorted -// order = 1 add to top -// order = 2 add to bottom -int CPropertyList::AddPropItem(CPropertyItem* pItem, int order) -{ - if(pItem->m_Advanced && ! m_ShowAdvanced) - { - m_PropertyItems.insert(pItem); - return 0; - } - this->HideControls(); - int nIndex; - if(order) - { - if(order == 1) - { - order = 0; - } - if(order == 2) - { - order = -1; - } - nIndex = InsertString(order, _T("")); - } - else - { - nIndex = AddString(pItem->m_propName); - } - SetItemDataPtr(nIndex,pItem); - m_PropertyItems.insert(pItem); - return nIndex; -} - -void CPropertyList::AddProperty(const char* name, - const char* value, - const char* helpString, - int type, - const char* comboItems, - bool reverseOrder, - bool advanced) -{ - CPropertyItem* pItem = 0; - for(std::set::iterator i = m_PropertyItems.begin(); - i != m_PropertyItems.end(); ++i) - { - CPropertyItem* item = *i; - if(item->m_propName == name) - { - pItem = item; - if(pItem->m_curValue != value) - { - pItem->m_curValue = value; - pItem->m_HelpString = helpString; - InvalidateList(); - } - pItem->m_Advanced = advanced; - return; - } - } - // if it is not found, then create a new one - if(!pItem) - { - pItem = new CPropertyItem(name, value, helpString, type, comboItems); - pItem->m_NewValue = true; - } - pItem->m_Advanced = advanced; - int order = 0; - if(reverseOrder) - { - order = 1; - } - this->AddPropItem(pItem, order); - return; -} - -int CPropertyList::OnCreate(LPCREATESTRUCT lpCreateStruct) -{ - if (CListBox::OnCreate(lpCreateStruct) == -1) - return -1; - - m_bDivIsSet = FALSE; - m_nDivider = 0; - m_bTracking = FALSE; - - m_hCursorSize = AfxGetApp()->LoadStandardCursor(IDC_SIZEWE); - m_hCursorArrow = AfxGetApp()->LoadStandardCursor(IDC_ARROW); - - m_SSerif8Font.CreatePointFont(80,_T("MS Sans Serif")); - - return 0; -} - -void CPropertyList::OnSelchange() -{ - CRect rect; - CString lBoxSelText; - - GetItemRect(m_curSel,rect); - rect.left = m_nDivider; - - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - - if (m_btnCtrl) - m_btnCtrl.ShowWindow(SW_HIDE); - if (m_CheckBoxControl) - m_CheckBoxControl.ShowWindow(SW_HIDE); - - if (pItem->m_nItemType==CPropertyList::COMBO) - { - //display the combo box. If the combo box has already been - //created then simply move it to the new location, else create it - m_nLastBox = 0; - if (m_cmbBox) - m_cmbBox.MoveWindow(rect); - else - { - rect.bottom += 100; - m_cmbBox.Create(CBS_DROPDOWNLIST - | CBS_NOINTEGRALHEIGHT | WS_VISIBLE - | WS_CHILD | WS_BORDER, - rect,this,IDC_PROPCMBBOX); - m_cmbBox.SetFont(&m_SSerif8Font); - } - - //add the choices for this particular property - CString cmbItems = pItem->m_cmbItems; - lBoxSelText = pItem->m_curValue; - - m_cmbBox.ResetContent(); - int i,i2; - i=0; - while ((i2=cmbItems.Find('|',i)) != -1) - { - m_cmbBox.AddString(cmbItems.Mid(i,i2-i)); - i=i2+1; - } - if(i != 0) - m_cmbBox.AddString(cmbItems.Mid(i)); - - m_cmbBox.ShowWindow(SW_SHOW); - m_cmbBox.SetFocus(); - - //jump to the property's current value in the combo box - int j = m_cmbBox.FindStringExact(0,lBoxSelText); - if (j != CB_ERR) - m_cmbBox.SetCurSel(j); - else - m_cmbBox.SetCurSel(0); - } - else if (pItem->m_nItemType==CPropertyList::EDIT) - { - //display edit box - m_nLastBox = 1; - m_prevSel = m_curSel; - rect.bottom -= 3; - if (m_editBox) - m_editBox.MoveWindow(rect); - else - { - m_editBox.Create(ES_LEFT | ES_AUTOHSCROLL | WS_VISIBLE - | WS_CHILD | WS_BORDER, - rect,this,IDC_PROPEDITBOX); - m_editBox.SetFont(&m_SSerif8Font); - } - - lBoxSelText = pItem->m_curValue; - - m_editBox.ShowWindow(SW_SHOW); - m_editBox.SetFocus(); - //set the text in the edit box to the property's current value - m_editBox.SetWindowText(lBoxSelText); - } - else if (pItem->m_nItemType == CPropertyList::CHECKBOX) - { - rect.bottom -= 3; - if (m_CheckBoxControl) - m_CheckBoxControl.MoveWindow(rect); - else - { - m_CheckBoxControl.Create("check",BS_CHECKBOX - | BM_SETCHECK |BS_LEFTTEXT - | WS_VISIBLE | WS_CHILD, - rect,this,IDC_PROPCHECKBOXCTRL); - m_CheckBoxControl.SetFont(&m_SSerif8Font); - } - - lBoxSelText = pItem->m_curValue; - - m_CheckBoxControl.ShowWindow(SW_SHOW); - m_CheckBoxControl.SetFocus(); - //set the text in the edit box to the property's current value - if(lBoxSelText == "ON") - { - m_CheckBoxControl.SetCheck(1); - } - else - { - m_CheckBoxControl.SetCheck(0); - } - } - - else - { - DisplayButton(rect); - m_nLastBox = 1; - m_prevSel = m_curSel; - rect.bottom -= 3; - rect.right -= 25; - if (m_editBox) - { - m_editBox.MoveWindow(rect); - } - else - { - m_editBox.Create(ES_LEFT | ES_AUTOHSCROLL | WS_VISIBLE - | WS_CHILD | WS_BORDER, - rect,this,IDC_PROPEDITBOX); - m_editBox.SetFont(&m_SSerif8Font); - } - - lBoxSelText = pItem->m_curValue; - - m_editBox.ShowWindow(SW_SHOW); - m_editBox.SetFocus(); - //set the text in the edit box to the property's current value - m_editBox.SetWindowText(lBoxSelText); - } -} - -void CPropertyList::DisplayButton(CRect region) -{ - //displays a button if the property is a file/color/font chooser - m_nLastBox = 2; - m_prevSel = m_curSel; - - if (region.Width() > 25) - region.left = region.right - 25; - region.bottom -= 3; - - if (m_btnCtrl) - m_btnCtrl.MoveWindow(region); - else - { - m_btnCtrl.Create("...",BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD, - region,this,IDC_PROPBTNCTRL); - m_btnCtrl.SetFont(&m_SSerif8Font); - } - - m_btnCtrl.ShowWindow(SW_SHOW); - m_btnCtrl.SetFocus(); -} - -void CPropertyList::OnKillFocus(CWnd* pNewWnd) -{ - //m_btnCtrl.ShowWindow(SW_HIDE); - - CListBox::OnKillFocus(pNewWnd); -} - -void CPropertyList::OnKillfocusCmbBox() -{ - m_cmbBox.ShowWindow(SW_HIDE); - - Invalidate(); -} - -void CPropertyList::OnKillfocusEditBox() -{ - CString newStr; - m_editBox.ShowWindow(SW_HIDE); - - Invalidate(); -} - -void CPropertyList::OnSelchangeCmbBox() -{ - CString selStr; - if (m_cmbBox) - { - m_cmbBox.GetLBText(m_cmbBox.GetCurSel(),selStr); - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - pItem->m_curValue = selStr; - m_Dirty = true; - } -} - -void CPropertyList::OnChangeEditBox() -{ - CString newStr; - m_editBox.GetWindowText(newStr); - - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - if(pItem->m_curValue != newStr) - { - pItem->m_curValue = newStr; - m_Dirty = true; - } -} - -void CPropertyList::HideControls() -{ - if(m_editBox) - { - m_editBox.ShowWindow(SW_HIDE); - } - if(m_cmbBox) - { - m_cmbBox.ShowWindow(SW_HIDE); - } - if(m_CheckBoxControl) - { - m_CheckBoxControl.ShowWindow(SW_HIDE); - } - if(m_btnCtrl) - { - m_btnCtrl.ShowWindow(SW_HIDE); - } -} - -void CPropertyList::OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar ) -{ - this->HideControls(); - CListBox::OnVScroll(nSBCode, nPos, pScrollBar); -} - -void CPropertyList::OnCheckBox() -{ - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - if(m_CheckBoxControl.GetCheck()) - { - pItem->m_curValue = "ON"; - } - else - { - pItem->m_curValue = "OFF"; - } - m_Dirty = true; -} - - -void CPropertyList::OnButton() -{ - if(m_PropertyItems.size() == 0) - { - return; - } - - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - - // The dialogs might change the working directory. Save it. - std::string cwd = cmSystemTools::GetCurrentWorkingDirectory(); - - //display the appropriate common dialog depending on what type - //of chooser is associated with the property - - if (pItem->m_nItemType == CPropertyList::FILE) - { - CString SelectedFile; - CString Filter("All Files (*.*)||"); - - CFileDialog FileDlg(TRUE, NULL, NULL, NULL, - Filter); - CString initialDir; - CString currPath = pItem->m_curValue; - if (currPath.Right(9) == "-NOTFOUND" || currPath == "NOTFOUND") - { - currPath = ""; - } - if (currPath.GetLength() > 0) - { - int endSlash = currPath.ReverseFind('\\'); - if(endSlash == -1) - { - endSlash = currPath.ReverseFind('/'); - } - initialDir = currPath.Left(endSlash); - } - initialDir.Replace("/", "\\"); - FileDlg.m_ofn.lpstrTitle = "Select file"; - if (currPath.GetLength() > 0) - FileDlg.m_ofn.lpstrInitialDir = initialDir; - - if(IDOK == FileDlg.DoModal()) - { - SelectedFile = FileDlg.GetPathName(); - - m_btnCtrl.ShowWindow(SW_HIDE); - std::string path = SelectedFile; - cmSystemTools::ConvertToUnixSlashes(path); - pItem->m_curValue = path.c_str(); - m_Dirty = true; - InvalidateList(); - } - } - else if (pItem->m_nItemType == CPropertyList::PATH) - { - CString initialDir = pItem->m_curValue; - // convert back to windos style path - initialDir.Replace("/", "\\"); - CString title = "Setting Cache Value: "; - title += pItem->m_propName; - CPathDialog dlg("Select Path", title, initialDir); - if(dlg.DoModal()==IDOK) - { - CString SelectedFile = dlg.GetPathName(); - m_btnCtrl.ShowWindow(SW_HIDE); - std::string path = SelectedFile; - cmSystemTools::ConvertToUnixSlashes(path); - pItem->m_curValue = path.c_str(); - m_Dirty = true; - InvalidateList(); - } - } - - cmSystemTools::ChangeDirectory(cwd.c_str()); -} - -void CPropertyList::OnLButtonUp(UINT nFlags, CPoint point) -{ - if (m_bTracking) - { - //if columns were being resized then this indicates - //that mouse is up so resizing is done. Need to redraw - //columns to reflect their new widths. - - m_bTracking = FALSE; - //if mouse was captured then release it - if (GetCapture()==this) - ::ReleaseCapture(); - - ::ClipCursor(NULL); - - CClientDC dc(this); - InvertLine(&dc,CPoint(point.x,m_nDivTop),CPoint(point.x,m_nDivBtm)); - //set the divider position to the new value - m_nDivider = point.x; - - //redraw - Invalidate(); - } - else - { - BOOL loc; - int i = ItemFromPoint(point,loc); - m_curSel = i; - CListBox::OnLButtonUp(nFlags, point); - } -} - -void CPropertyList::OnLButtonDown(UINT nFlags, CPoint point) -{ - if ((point.x>=m_nDivider-5) && (point.x<=m_nDivider+5)) - { - //if mouse clicked on divider line, then start resizing - - ::SetCursor(m_hCursorSize); - - CRect windowRect; - GetWindowRect(windowRect); - windowRect.left += 10; windowRect.right -= 10; - //do not let mouse leave the list box boundary - ::ClipCursor(windowRect); - - if (m_cmbBox) - m_cmbBox.ShowWindow(SW_HIDE); - if (m_editBox) - m_editBox.ShowWindow(SW_HIDE); - - CRect clientRect; - GetClientRect(clientRect); - - m_bTracking = TRUE; - m_nDivTop = clientRect.top; - m_nDivBtm = clientRect.bottom; - m_nOldDivX = point.x; - - CClientDC dc(this); - InvertLine(&dc,CPoint(m_nOldDivX,m_nDivTop),CPoint(m_nOldDivX,m_nDivBtm)); - - //capture the mouse - SetCapture(); - } - else - { - m_bTracking = FALSE; - CListBox::OnLButtonDown(nFlags, point); - } -} - -void CPropertyList::OnMouseMove(UINT nFlags, CPoint point) -{ - if (m_bTracking) - { - //move divider line to the mouse pos. if columns are - //currently being resized - CClientDC dc(this); - //remove old divider line - InvertLine(&dc,CPoint(m_nOldDivX,m_nDivTop),CPoint(m_nOldDivX,m_nDivBtm)); - //draw new divider line - InvertLine(&dc,CPoint(point.x,m_nDivTop),CPoint(point.x,m_nDivBtm)); - m_nOldDivX = point.x; - } - else if ((point.x >= m_nDivider-5) && (point.x <= m_nDivider+5)) - //set the cursor to a sizing cursor if the cursor is over the row divider - ::SetCursor(m_hCursorSize); - else - { - BOOL loc; - int curSel = ItemFromPoint(point,loc); - if(!loc && curSel < 65535) - { - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(curSel); - m_CMakeSetupDialog->SetDlgItemText(IDC_PROGRESS, pItem->m_HelpString); - } - CListBox::OnMouseMove(nFlags, point); - } - -} - -void CPropertyList::InvertLine(CDC* pDC,CPoint ptFrom,CPoint ptTo) -{ - int nOldMode = pDC->SetROP2(R2_NOT); - - pDC->MoveTo(ptFrom); - pDC->LineTo(ptTo); - - pDC->SetROP2(nOldMode); -} - -void CPropertyList::PreSubclassWindow() -{ - m_bDivIsSet = FALSE; - m_nDivider = 0; - m_bTracking = FALSE; - m_curSel = 1; - - m_hCursorSize = AfxGetApp()->LoadStandardCursor(IDC_SIZEWE); - m_hCursorArrow = AfxGetApp()->LoadStandardCursor(IDC_ARROW); - - m_SSerif8Font.CreatePointFont(80,_T("MS Sans Serif")); -} - -CPropertyItem* CPropertyList::GetItem(int index) -{ - return (CPropertyItem*)GetItemDataPtr(index); -} - -void CPropertyList::OnRButtonUp( UINT /* nFlags */, CPoint point ) -{ - CMenu menu; - CRect rect; - this->GetWindowRect(&rect); - BOOL loc; - m_curSel = ItemFromPoint(point,loc); - menu.CreatePopupMenu(); - menu.AppendMenu(MF_STRING | MF_ENABLED, 44, "Ignore Cache Entry"); - menu.AppendMenu(MF_STRING | MF_ENABLED, 42, "Delete Cache Entry"); - menu.AppendMenu(MF_STRING | MF_ENABLED, 43, "Help For Cache Entry"); - menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, - rect.TopLeft().x + point.x, - rect.TopLeft().y + point.y, this, NULL); -} - -void CPropertyList::RemoveProperty(const char* name) -{ - this->HideControls(); - for(int i =0; i < this->GetCount(); ++i) - { - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(i); - if(pItem->m_propName == name) - { - m_PropertyItems.erase(pItem); - delete pItem; - this->DeleteString(i); - return; - } - } -} - -void CPropertyList::OnIgnore() -{ - if(m_curSel == -1 || this->GetCount() <= 0) - { - return; - } - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - pItem->m_curValue = "IGNORE"; - InvalidateList(); -} - - - -void CPropertyList::OnDelete() -{ - if(m_curSel == -1 || this->GetCount() <= 0) - { - return; - } - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - m_CMakeSetupDialog->GetCMakeInstance()->GetCacheManager()->RemoveCacheEntry(pItem->m_propName); - m_PropertyItems.erase(pItem); - delete pItem; - this->DeleteString(m_curSel); - this->HideControls(); - this->SetTopIndex(0); - InvalidateList(); - m_curSel += 1; - if(m_curSel > this->GetCount()) - { - m_curSel = this->GetCount(); - } - this->SetCurSel(m_curSel); -} - -void CPropertyList::OnHelp() -{ - if(m_curSel == -1 || this->GetCount() <= 0) - { - return; - } - CPropertyItem* pItem = (CPropertyItem*) GetItemDataPtr(m_curSel); - MessageBox(pItem->m_HelpString, pItem->m_propName, MB_OK|MB_ICONINFORMATION); -} - -void CPropertyList::RemoveAll() -{ - int c = this->GetCount(); - for(int i =0; i < c; ++i) - { - this->DeleteString(0); - } - for(std::set::iterator ii = m_PropertyItems.begin(); - ii != m_PropertyItems.end(); ++ii) - { - delete *ii; - } - m_PropertyItems.clear(); - m_Dirty = false; - this->HideControls(); - InvalidateList(); -} - -void CPropertyList::InvalidateList() -{ - Invalidate(); - m_Dirty = true; -} - -void CPropertyList::ShowAdvanced() -{ - this->SetRedraw(FALSE); - this->ResetContent(); - m_ShowAdvanced = true; - std::map sortProps; - for(std::set::iterator i = m_PropertyItems.begin(); - i != m_PropertyItems.end(); ++i) - { - sortProps[(const char*)(*i)->m_propName] = *i; - } - for(std::map::iterator i = sortProps.begin(); - i != sortProps.end(); ++i) - { - CPropertyItem* item = i->second; - if(item->m_NewValue) - { - this->AddPropItem(item, 2); - } - } - for(std::map::iterator i = sortProps.begin(); - i != sortProps.end(); ++i) - { - CPropertyItem* item = i->second; - if(!item->m_NewValue) - { - this->AddPropItem(item, 2); - } - } - this->SetRedraw(TRUE); - this->InvalidateList(); -} - - -void CPropertyList::HideAdvanced() -{ - this->SetRedraw(FALSE); - this->ResetContent(); - m_ShowAdvanced = false; - std::map sortProps; - for(std::set::iterator i = m_PropertyItems.begin(); - i != m_PropertyItems.end(); ++i) - { - sortProps[(const char*)(*i)->m_propName] = *i; - } - for(std::map::iterator i = sortProps.begin(); - i != sortProps.end(); ++i) - { - CPropertyItem* item = i->second; - if(item->m_NewValue && !item->m_Advanced) - { - this->AddPropItem(item, 2); - } - } - for(std::map::iterator i = sortProps.begin(); - i != sortProps.end(); ++i) - { - CPropertyItem* item = i->second; - if(!item->m_Advanced && !item->m_NewValue) - { - this->AddPropItem(item, 2); - } - } - this->SetRedraw(TRUE); - this->InvalidateList(); -} - diff --git a/Source/MFCDialog/PropertyList.h b/Source/MFCDialog/PropertyList.h deleted file mode 100644 index dfe0f3c09..000000000 --- a/Source/MFCDialog/PropertyList.h +++ /dev/null @@ -1,179 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: PropertyList.h,v $ - Language: C++ - Date: $Date: 2004-01-02 22:24:19 $ - Version: $Revision: 1.13 $ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -#ifndef CPROPERTYLIST_H -#define CPROPERTYLIST_H - - - -#include "../cmStandardIncludes.h" -class CMakeSetupDialog; - -///////////////////////////////////////////////////////////////////////////// -//CPropertyList Items -class CPropertyItem -{ -// Attributes -public: - CString m_HelpString; - CString m_propName; - CString m_curValue; - int m_nItemType; - CString m_cmbItems; - bool m_NewValue; - bool m_Removed; - bool m_Advanced; - -public: - CPropertyItem(CString propName, CString curValue, - CString helpString, - int nItemType, CString cmbItems) - { - m_NewValue = true; - m_HelpString = helpString; - m_Removed = false; - m_propName = propName; - m_curValue = curValue; - m_nItemType = nItemType; - m_cmbItems = cmbItems; - m_Advanced = false; - } -}; - -///////////////////////////////////////////////////////////////////////////// -// CPropertyList window - -class CPropertyList : public CListBox -{ -// Construction -public: - enum ItemType - { - COMBO = 0, - EDIT, - COLOR, - FONT, - FILE, - CHECKBOX, - PATH - }; - CPropertyList(); - -// Attributes -public: - CMakeSetupDialog *m_CMakeSetupDialog; - -// Operations -public: - bool GetShowAdvanced() {return m_ShowAdvanced;} - bool IsDirty() { return m_Dirty; } - void ClearDirty() { m_Dirty = false; } - - int AddItem(CString txt); - void AddProperty(const char* name, - const char* value, - const char* helpString, - int type, - const char* comboItems, - bool reverseOrder, - bool advanced); - void RemoveProperty(const char* name); - void HideControls(); - void ShowAdvanced(); - void HideAdvanced(); - std::set GetItems() - { - return m_PropertyItems; - } - void RemoveAll(); - CPropertyItem* GetItem(int index); -// Overrides - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CPropertyList) -public: - virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct); - virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); -protected: - virtual BOOL PreCreateWindow(CREATESTRUCT& cs); - virtual void PreSubclassWindow(); - //}}AFX_VIRTUAL - -// Implementation -public: - virtual ~CPropertyList(); - - // Generated message map functions -protected: - //{{AFX_MSG(CPropertyList) - afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); - afx_msg void OnSelchange(); - afx_msg void OnLButtonUp(UINT nFlags, CPoint point); - afx_msg void OnKillFocus(CWnd* pNewWnd); - afx_msg void OnLButtonDown(UINT nFlags, CPoint point); - afx_msg void OnMouseMove(UINT nFlags, CPoint point); - afx_msg void OnRButtonUp( UINT nFlags, CPoint point ); - //}}AFX_MSG - afx_msg void OnKillfocusCmbBox(); - afx_msg void OnSelchangeCmbBox(); - afx_msg void OnKillfocusEditBox(); - afx_msg void OnChangeEditBox(); - afx_msg void OnButton(); - afx_msg void OnIgnore(); - afx_msg void OnDelete(); - afx_msg void OnHelp(); - afx_msg void OnCheckBox(); - afx_msg void OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar ); - - - DECLARE_MESSAGE_MAP() - - void InvertLine(CDC* pDC,CPoint ptFrom,CPoint ptTo); - void DisplayButton(CRect region); -// order = 0 sorted -// order = 1 add to top -// order = 2 add to bottom - int AddPropItem(CPropertyItem* pItem, int order); - void InvalidateList(); - - CComboBox m_cmbBox; - CEdit m_editBox; - CButton m_btnCtrl; - CButton m_CheckBoxControl; - - CFont m_SSerif8Font; - - bool m_Dirty; - int m_curSel; - int m_prevSel; - int m_nDivider; - int m_nDivTop; - int m_nDivBtm; - int m_nOldDivX; - int m_nLastBox; - BOOL m_bTracking; - BOOL m_bDivIsSet; - HCURSOR m_hCursorArrow; - HCURSOR m_hCursorSize; - bool m_ShowAdvanced; - std::set m_PropertyItems; -}; - -///////////////////////////////////////////////////////////////////////////// - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // !defined(AFX_PROPERTYLIST_H__74205380_1B56_11D4_BC48_00105AA2186F__INCLUDED_) diff --git a/Source/MFCDialog/StdAfx.cpp b/Source/MFCDialog/StdAfx.cpp deleted file mode 100644 index 4ec72a4d6..000000000 --- a/Source/MFCDialog/StdAfx.cpp +++ /dev/null @@ -1,8 +0,0 @@ -// stdafx.cpp : source file that includes just the standard includes -// pcbuilderdialog.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - - - diff --git a/Source/MFCDialog/StdAfx.h b/Source/MFCDialog/StdAfx.h deleted file mode 100644 index 913b22ccc..000000000 --- a/Source/MFCDialog/StdAfx.h +++ /dev/null @@ -1,45 +0,0 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: StdAfx.h,v $ - Language: C++ - Date: $Date: 2007-09-17 19:20:55 $ - Version: $Revision: 1.5 $ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#if !defined(AFX_STDAFX_H__AC17A6F8_4634_11D4_8F21_00A0CC33FCD3__INCLUDED_) -#define AFX_STDAFX_H__AC17A6F8_4634_11D4_8F21_00A0CC33FCD3__INCLUDED_ -#define _WIN32_WINNT 0x0400 -#define _WIN32_IE 0x0400 - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers - -#include // MFC core and standard components -#include // MFC extensions -#include // MFC Automation classes -#include // MFC support for Internet Explorer 4 Common Controls -#ifndef _AFX_NO_AFXCMN_SUPPORT -#include // MFC support for Windows Common Controls -#endif // _AFX_NO_AFXCMN_SUPPORT - - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // !defined(AFX_STDAFX_H__AC17A6F8_4634_11D4_8F21_00A0CC33FCD3__INCLUDED_) diff --git a/Source/MFCDialog/res/CMakeSetupDialog.ico b/Source/MFCDialog/res/CMakeSetupDialog.ico deleted file mode 100644 index e13bb156f4e0bd05a4c5df7de920ebc681e82799..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24542 zcmeHPO^9X16|P~%^rR6-vzTlQuOkjPLl}iS1l-u2At?BhaglcGki|_03?c+(6L^h_ z-Z+GSFf(uGBFQxi6A;{nUS$z4^iDSs8e9k_(BsM;BHn!8sXFy@|KID^i=?~8dZ$iR zopZiZ_ujfybx&)|8S{{N^ihL!-fTT&%xfsEty%v4^TzxQbhAvf13+G_Sn!in)IMx_S25XU+C+ zEA#5Bm3h~EVyb_a=I@^zm`}d=!ukQWFHv8jzC=Zd`U-pnzAD9XhTjbKGbqX+l$pwidHiI+ zkO4ym3>h#8Bw)yZAp?dC7&2fGn81($Lk0{PFl4|W(19TXh71@oV901JW88FN+4!mp_74aT5p!nrw#2A#YR{~oJ z93||@r6mrGK?xisalkRT+z={(r397|AW9gNTL4%}2$twnqM`&A{D%xZxF#jAlpGJi z!n=W20d>Go0Ye206);r5PyvJ7PQXwCLj?>KFqFUmHOS}>3>7d`z)%4LR3oDv7%E_> zfT03_3ieAVs~}jRQw|+D_#8MY(ak=&`JwrvdHwa*&8=Iv%+Ah^xpU`^`S|0H&4(X; zXg>Y)Q}fwppPA1;|J;1}<(KBGuf8&ehll3=e=75b_uj*Eyp7T2Ge81;!ci|-a<%jp zo@7lgzGPO-cQTu03z>J%+PuGF z4D_=5MDmoHEa@LB|HNpJ&g3(Zo6Sbe=t(XE~=~ewdxkvnO(%ji#LT zqRtoX6cg2r8=E)U(&pxkH#xhRH{3*BBiF86vh8~x{Jho#_UTK0V#dV%v$Vt2D{R%7 z*zBbpM3n71w{qrx%W2rW`!buD{8UT@g`nKLd$96?Z4KfwuNQcm+`YH5a&VySUL5UI zz_-f*lD4aL4l5C82d6#~_X>)SAn)2^aj&4*JCGMz1m0dXhoC6-erM%V@t~l1TiO%r zg3!896c0&zT|6kj3$kH7R)7~~JaiVGbg*Nv(Jt=CfbC7|K>^wu;H?om254^=cP?~_ zTLibe#YMsGF6)ADuejZ5-Ma902Y7X1s|&pA@XP-8)q!TKCHlo$tJ*c@>^4>dpv-6Y zZC<%=4D*FUnJ>eYbt8mhVeOZ(T~w{E3Z+@NY%59)%h zO?@y>?Agv?0Vw_J>fI1=DYb{LOm0Egu0ApV0WlHxZ>o!wQ zO?_ejOXii(Ke}_`XPmdGPkT}ScJ--&V()py-=RMBpeVQimDHuaWr`XhyR|*DuJgFo-Lw+~Vv*h;y!_gH|7*=|LJOC)2 zkmqL7(REU8Djl7YA}eLtZZd^plS#_Wrci7)NxA71icKdeH=jbW`6T5gROrM~Zbr#- zLrTg`snDsV6%u(%xli3d-bVKO)JMT+I^Cz9?o;v9;0xaAdHM7 zQ$8}kx{8Hc`$jvGWYLYh;nvHPNK*|xFC`bxNVUs=FGT49fas}vPkG(7#tP)Tp+&yMya(Vf z13ym54n95L0Dw000f4;>*0h`$q^^T&H6H-*)0ZA*)D9dvy^lwrDBic9#>9GZU?K7y z<|6>^D8kBz0|V^fIQkRdPdm4?C-UD(c?OFJB`5yBr07dY9 z>$dyt_MSiz0B#ihfk^-0TR#MO_~D6Aa{Kk0Zvfyo(nP-3dqN1dZE5cyc7Mox6F~8o zSbora6M#Da5iP^!n*d_@5#}2JBKf{s&t5+M*6sm&z+$g`=+swAFF}wWXTA;~$oJVy z+7bYIewMs&lkN>B838Zf=+<2k15o*~-cxG~KySZpYb`Ai04G0>`51uSJ}pN2syqNE zKcD#sfRpdD)!L>2?CmqJ`2fJmx0>j$bO1zte)ArH+&=x5I$A9N$}eJG0Z_ifz)-aS zfc#?S9e~Bn%S?#dXHoM40P;g__O#1+XHWZ3(+=WGhx+uk<2B zC%xI87dC(8{1r!_avp2rYIt(U_!=h0*u<1^HcUzxbHk)`ila#;r92*Ga+Gm6WR)@= zhrCk8<&am(_#E;|CpZ=*uXG*9qvVxNE1r$gyrm%afY?%)6#z?gyTl;6Q;8aU>p<%%{7CHqIxRHdTL&7a^dprc z#?j&Kg6|wy$Ux&8M;m-~z@PGuhrX6#2iF*VKFPd=nCAH=mX5mGX&HSn;7+%Oqg9=6 zN%*HK?}8s3D0X_ITXo<WlsZ5{pi3Je<9e5qBjt?Yy! zJJ53*A$&DGdav2)gdbgj?%SyA%a%9N13z(~ZL-kF+vMoqYqo_R_^AVp+bBfp#-Xt_ z^}X;@2a?;!L+8hz9{s)WYYxPJ%@%!^>(f5~zwUtCMhSHJc2)m!7RG1*e#3#{jpUPJ z`}>dK>W$l=}*7h1^px7w>cnxZWs?x z@?|clA2IszdjOM!roC8u?aN`%KMH=U1NuqSnF%W6(n$DiR{&A=5(D3>e!Tzukf8Hfq;D8h)1p{x)iTyyk%4<$zx0R{e9p?{vT!XwyFz{7wh#ZPYeB%mu&O z0lAG@^v?;u+X380ZL5bl;rBUE{Ixm#%niTKf#N6etRUsN;rBYwP`?2D9tYf))5yvK z@OvC+=wAqaw*w9R3&HPpAOsfJAzBcArvr8U3&QVopr(Ie_+1YCD!Ow}To`_r1N^ca z(h=ZyIFRZ;0{jjK68%Sl-|j#d8+^&c62 ziv!W)y9D@62O|ATfZuc==wAx_h6Ca8S_=Gz1781<;MX1S`j-U1?tnhNOM_o?K=m&T ze(HceUQ2|ZIH3BM2tRSa>0c`R*a7!=Efs$3fYrZb_>luv|B~TH4#?xRbojvm(Z6)~ z!2#+&2Ke3q>OThf-htzS?;POcbu93m1JHjgqpt^B(0@$utpi)f2Vbth*73m?2j=@b zZI0?Z$?R+$+vpRA$)8KV>&^piOkV^5jOljT=cJ54NBH2VY8M;IppuD;8)aEzNTojR z6O}c7lzrl|#*wl!Y&9m9jc6YkVo|<1!*HU7%}-Ib|P2TzUuM^2EiTvQJ!I zcX6n!kIU1_#-Xx4E~DB7#@fH+-)0Aa>;h!dvc{*fPh8eGRo2I42^e(_#N`R?x>1kI z>#WyE-l#lf*+=w-vQ+!XUUJ)npz*EsvOq?BE9>L3Kz3IkE(_!k`Ahxc%!DQ9z(k7H znRQ#%NMLeOp4xgJ5logCT(y9X$_{>r5N6x1hb#^__)>O|#eul&;0x%uJW*S?0&#g= z>ot;?Jjzq8_YuXc2=F=TzKi^S4wd8ofU$%QL$|)te*w4VW6l5o diff --git a/Source/MFCDialog/res/CMakeSetupDialog.rc2 b/Source/MFCDialog/res/CMakeSetupDialog.rc2 deleted file mode 100644 index 8a619b331..000000000 --- a/Source/MFCDialog/res/CMakeSetupDialog.rc2 +++ /dev/null @@ -1,13 +0,0 @@ -// -// PCBUILDERDIALOG.RC2 - resources Microsoft Visual C++ does not edit directly -// - -#ifdef APSTUDIO_INVOKED - #error this file is not editable by Microsoft Visual C++ -#endif //APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// Add manually edited resources here... - -///////////////////////////////////////////////////////////////////////////// diff --git a/Source/MFCDialog/resource.h b/Source/MFCDialog/resource.h deleted file mode 100644 index 0395b76fc..000000000 --- a/Source/MFCDialog/resource.h +++ /dev/null @@ -1,48 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by CMakeSetup.rc -// -#define IDM_ABOUTBOX 0x0010 -#define IDM_CREATESHORTCUT 0x0020 -#define IDD_ABOUTBOX 100 -#define IDS_ABOUTBOX 101 -#define IDD_CMakeSetupDialog_DIALOG 102 -#define IDS_CREATESHORTCUT 102 -#define IDR_MAINFRAME 128 -#define IDD_CMAKE_HELP_DIALOG 133 -#define IDD_GEN_DIALOG 134 -#define IDC_WhereSource 1001 -#define IDC_BUTTON2 1002 -#define IDC_BROWSE_SOURCE 1002 -#define IDC_WhereBuild 1003 -#define IDC_BUTTON3 1004 -#define IDC_BROWSE_BUILD 1004 -#define IDC_BuildProjects 1006 -#define IDC_LIST2 1007 -#define IDC_LIST3 1010 -#define IDC_CMAKE_VERSION 1014 -#define IDC_FRAME 1015 -#define IDC_MouseHelpCaption 1016 -#define IDC_OK 1018 -#define IDC_Generator 1019 -#define IDC_GeneratorLabel 1020 -#define IDC_HELP_BUTTON 1021 -#define IDC_HELP_BUTTON2 1022 -#define IDC_DELETE_BUTTON 1022 -#define IDC_EDIT1 1025 -#define IDC_AdvancedValues 1027 -#define IDC_PROGRESS 1028 -#define IDC_BuildForLabel 1029 -#define IDC_CHECK1 1030 -#define IDC_SUPPRESS_DEV_WARNINGS 1030 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 135 -#define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1031 -#define _APS_NEXT_SYMED_VALUE 102 -#endif -#endif diff --git a/Source/QtDialog/AddCacheEntry.cxx b/Source/QtDialog/AddCacheEntry.cxx index 7f6ef9e10..b4d919193 100644 --- a/Source/QtDialog/AddCacheEntry.cxx +++ b/Source/QtDialog/AddCacheEntry.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: AddCacheEntry.cxx,v $ - Language: C++ - Date: $Date: 2008-05-23 20:09:41 $ - Version: $Revision: 1.3.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "AddCacheEntry.h" #include diff --git a/Source/QtDialog/AddCacheEntry.h b/Source/QtDialog/AddCacheEntry.h index 528dc3671..db6baf9b1 100644 --- a/Source/QtDialog/AddCacheEntry.h +++ b/Source/QtDialog/AddCacheEntry.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: AddCacheEntry.h,v $ - Language: C++ - Date: $Date: 2008-05-23 20:09:42 $ - Version: $Revision: 1.2.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef AddCacheEntry_h #define AddCacheEntry_h diff --git a/Source/QtDialog/CMakeFirstConfigure.cxx b/Source/QtDialog/CMakeFirstConfigure.cxx deleted file mode 100644 index 8e81956c3..000000000 --- a/Source/QtDialog/CMakeFirstConfigure.cxx +++ /dev/null @@ -1,244 +0,0 @@ - -#include "CMakeFirstConfigure.h" - -#include - -CMakeFirstConfigure::CMakeFirstConfigure() -{ - this->UI.setupUi(this); - this->UI.useDefaults->setChecked(true); - this->updatePage(); - - this->UI.useToolChainFile->setChecked(true); - this->updateToolChainPage(); - - QObject::connect(this->UI.useDefaults, SIGNAL(toggled(bool)), - this, SLOT(updatePage())); - QObject::connect(this->UI.compilerSetup, SIGNAL(toggled(bool)), - this, SLOT(updatePage())); - QObject::connect(this->UI.crossCompilerSetup, SIGNAL(toggled(bool)), - this, SLOT(updatePage())); - - QObject::connect(this->UI.useToolChainFile, SIGNAL(toggled(bool)), - this, SLOT(updateToolChainPage())); -} - -CMakeFirstConfigure::~CMakeFirstConfigure() -{ -} - -void CMakeFirstConfigure::setGenerators(const QStringList& gens) -{ - this->UI.generators->clear(); - this->UI.generators->addItems(gens); -} - -QString CMakeFirstConfigure::getGenerator() const -{ - return this->UI.generators->currentText(); -} - -void CMakeFirstConfigure::loadFromSettings() -{ - QSettings settings; - settings.beginGroup("Settings/StartPath"); - - // restore generator - QString lastGen = settings.value("LastGenerator").toString(); - int idx = this->UI.generators->findText(lastGen); - if(idx != -1) - { - this->UI.generators->setCurrentIndex(idx); - } - settings.endGroup(); - - // restore compiler setup - settings.beginGroup("Settings/Compiler"); - this->UI.CCompiler->setText(settings.value("CCompiler").toString()); - this->UI.CXXCompiler->setText(settings.value("CXXCompiler").toString()); - this->UI.FortranCompiler->setText(settings.value("FortranCompiler").toString()); - settings.endGroup(); - - // restore cross compiler setup - settings.beginGroup("Settings/CrossCompiler"); - this->UI.crossCCompiler->setText(settings.value("CCompiler").toString()); - this->UI.crossCXXCompiler->setText(settings.value("CXXCompiler").toString()); - this->UI.crossFortranCompiler->setText(settings.value("FortranCompiler").toString()); - this->UI.useToolChainFile->setChecked(settings.value("UseToolChainFile", true).toBool()); - this->UI.toolChainFile->setText(settings.value("ToolChainFile").toString()); - this->UI.systemName->setText(settings.value("SystemName").toString()); - this->UI.systemVersion->setText(settings.value("SystemVersion").toString()); - this->UI.systemProcessor->setText(settings.value("SystemProcessor").toString()); - this->UI.crossFindRoot->setText(settings.value("FindRoot").toString()); - this->UI.crossProgramMode->setCurrentIndex(settings.value("ProgramMode", 0).toInt()); - this->UI.crossLibraryMode->setCurrentIndex(settings.value("LibraryMode", 0).toInt()); - this->UI.crossIncludeMode->setCurrentIndex(settings.value("IncludeMode", 0).toInt()); - settings.endGroup(); -} - -void CMakeFirstConfigure::saveToSettings() -{ - QSettings settings; - settings.beginGroup("Settings/StartPath"); - - // save generator - QString lastGen = this->UI.generators->currentText(); - settings.setValue("LastGenerator", lastGen); - - settings.endGroup(); - - // save compiler setup - settings.beginGroup("Settings/Compiler"); - settings.setValue("CCompiler", this->UI.CCompiler->text()); - settings.setValue("CXXCompiler", this->UI.CXXCompiler->text()); - settings.setValue("FortranCompiler", this->UI.FortranCompiler->text()); - settings.endGroup(); - - // save cross compiler setup - settings.beginGroup("Settings/CrossCompiler"); - settings.setValue("CCompiler", this->UI.crossCCompiler->text()); - settings.setValue("CXXCompiler", this->UI.crossCXXCompiler->text()); - settings.setValue("FortranCompiler", this->UI.crossFortranCompiler->text()); - settings.setValue("UseToolChainFile", this->UI.useToolChainFile->isChecked()); - settings.setValue("ToolChainFile", this->UI.toolChainFile->text()); - settings.setValue("SystemName", this->UI.systemName->text()); - settings.setValue("SystemVersion", this->UI.systemVersion->text()); - settings.setValue("SystemProcessor", this->UI.systemProcessor->text()); - settings.setValue("FindRoot", this->UI.crossFindRoot->text()); - settings.setValue("ProgramMode", this->UI.crossProgramMode->currentIndex()); - settings.setValue("LibraryMode", this->UI.crossLibraryMode->currentIndex()); - settings.setValue("IncludeMode", this->UI.crossIncludeMode->currentIndex()); - settings.endGroup(); -} - -void CMakeFirstConfigure::updatePage() -{ - if(this->UI.useDefaults->isChecked()) - { - this->UI.stackedWidget->setCurrentIndex(0); - } - else if(this->UI.compilerSetup->isChecked()) - { - this->UI.stackedWidget->setCurrentIndex(1); - } - else if(this->UI.crossCompilerSetup->isChecked()) - { - this->UI.stackedWidget->setCurrentIndex(2); - } -} - -void CMakeFirstConfigure::updateToolChainPage() -{ - if(this->UI.useToolChainFile->isChecked()) - { - this->UI.toolChainStack->setCurrentIndex(0); - } - else - { - this->UI.toolChainStack->setCurrentIndex(1); - } -} - -bool CMakeFirstConfigure::defaultSetup() const -{ - return this->UI.useDefaults->isChecked(); -} - -bool CMakeFirstConfigure::compilerSetup() const -{ - return this->UI.compilerSetup->isChecked(); -} - -bool CMakeFirstConfigure::crossCompilerSetup() const -{ - return this->UI.crossCompilerSetup->isChecked(); -} - -QString CMakeFirstConfigure::crossCompilerToolChainFile() const -{ - if(this->UI.useToolChainFile->isChecked()) - { - return this->UI.toolChainFile->text(); - } - return QString(); -} - -QString CMakeFirstConfigure::getSystemName() const -{ - return this->UI.systemName->text(); -} - -QString CMakeFirstConfigure::getCCompiler() const -{ - if(this->compilerSetup()) - { - return this->UI.CCompiler->text(); - } - else if(this->crossCompilerSetup()) - { - return this->UI.crossCCompiler->text(); - } - return QString(); -} - -QString CMakeFirstConfigure::getCXXCompiler() const -{ - if(this->compilerSetup()) - { - return this->UI.CXXCompiler->text(); - } - else if(this->crossCompilerSetup()) - { - return this->UI.crossCXXCompiler->text(); - } - return QString(); -} - -QString CMakeFirstConfigure::getFortranCompiler() const -{ - if(this->compilerSetup()) - { - return this->UI.FortranCompiler->text(); - } - else if(this->crossCompilerSetup()) - { - return this->UI.crossFortranCompiler->text(); - } - return QString(); -} - - -QString CMakeFirstConfigure::getSystemVersion() const -{ - return this->UI.systemVersion->text(); -} - -QString CMakeFirstConfigure::getSystemProcessor() const -{ - return this->UI.systemProcessor->text(); -} - - -QString CMakeFirstConfigure::getCrossRoot() const -{ - return this->UI.crossFindRoot->text(); -} - -static const char* crossModes[3] = {"BOTH", "ONLY", "NEVER" }; - -QString CMakeFirstConfigure::getCrossProgramMode() const -{ - return crossModes[this->UI.crossProgramMode->currentIndex()]; -} - -QString CMakeFirstConfigure::getCrossLibraryMode() const -{ - return crossModes[this->UI.crossLibraryMode->currentIndex()]; -} - -QString CMakeFirstConfigure::getCrossIncludeMode() const -{ - return crossModes[this->UI.crossIncludeMode->currentIndex()]; -} - - diff --git a/Source/QtDialog/CMakeFirstConfigure.h b/Source/QtDialog/CMakeFirstConfigure.h deleted file mode 100644 index 2cb6220c0..000000000 --- a/Source/QtDialog/CMakeFirstConfigure.h +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef CMakeFirstConfigure_h -#define CMakeFirstConfigure_h - -#include -#include "ui_CMakeFirstConfigure.h" - -class CMakeFirstConfigure : public QDialog -{ - Q_OBJECT -public: - CMakeFirstConfigure(); - ~CMakeFirstConfigure(); - - void setGenerators(const QStringList& gens); - QString getGenerator() const; - - bool defaultSetup() const; - bool compilerSetup() const; - bool crossCompilerSetup() const; - QString crossCompilerToolChainFile() const; - - QString getCCompiler() const; - QString getCXXCompiler() const; - QString getFortranCompiler() const; - - QString getSystemName() const; - QString getSystemVersion() const; - QString getSystemProcessor() const; - - QString getCrossRoot() const; - QString getCrossProgramMode() const; - QString getCrossLibraryMode() const; - QString getCrossIncludeMode() const; - - void loadFromSettings(); - void saveToSettings(); - -protected slots: - void updatePage(); - void updateToolChainPage(); - -protected: - Ui::CMakeFirstConfigure UI; -}; - -#endif // CMakeFirstConfigure_h - diff --git a/Source/QtDialog/CMakeFirstConfigure.ui b/Source/QtDialog/CMakeFirstConfigure.ui deleted file mode 100644 index d5413f393..000000000 --- a/Source/QtDialog/CMakeFirstConfigure.ui +++ /dev/null @@ -1,606 +0,0 @@ - - CMakeFirstConfigure - - - - 0 - 0 - 609 - 547 - - - - First Configure Setup - - - - - - - 0 - 0 - - - - Please select what build system you want CMake to generate files for. You should select the tool that you will use to build the project. - - - true - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Use Defaults - - - true - - - - - - - Compiler Setup - - - - - - - Cross Compiler Setup - - - - - - - - - Qt::Horizontal - - - - - - - - 0 - 0 - - - - 2 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - The default compilers will be used. - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - true - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Compilers - - - - - - C - - - - - - - - - - C++ - - - - - - - - - - Fortran - - - - - - - - - - - - - Qt::Vertical - - - - 566 - 71 - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - 1 - - - - - 9 - - - 9 - - - 9 - - - 9 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Tool Chain File - - - true - - - - - - - - - - - - 0 - 0 - - - - System - - - - - - - - - 0 - 0 - - - - Name - - - - - - - - - - - 0 - 0 - - - - Version - - - true - - - - - - - - - - - 0 - 0 - - - - Processor - - - true - - - - - - - - - - - - - - - - 0 - 0 - - - - Compilers - - - - - - C - - - - - - - - - - C++ - - - - - - - - - - Fortran - - - - - - - - - - - - - - 0 - 0 - - - - Find Program/Library/Include - - - - - - - 0 - 0 - - - - Root - - - true - - - - - - - - - - - 0 - 0 - - - - Program Mode - - - - - - - - Find from Root then system - - - - - Only find from Root - - - - - Don't find from Root - - - - - - - - - 0 - 0 - - - - Library Mode - - - - - - - - Find from Root then system - - - - - Only find from Root - - - - - Don't find from Root - - - - - - - - - 0 - 0 - - - - Include Mode - - - - - - - - Find from Root then system - - - - - Only find from Root - - - - - Don't find from Root - - - - - - - - - - - - - - - Use ToolChain File - - - true - - - - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok - - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 0 - 20 - - - - - - - - - QCMakeFilePathEditor - QLineEdit -
QCMakeWidgets.h
-
- - QCMakePathEditor - QLineEdit -
QCMakeWidgets.h
-
-
- - - - buttonBox - accepted() - CMakeFirstConfigure - accept() - - - 227 - 284 - - - 157 - 274 - - - - - buttonBox - rejected() - CMakeFirstConfigure - reject() - - - 295 - 290 - - - 286 - 274 - - - - -
diff --git a/Source/QtDialog/CMakeIngestOSXBundleLibraries.cmake b/Source/QtDialog/CMakeIngestOSXBundleLibraries.cmake old mode 100755 new mode 100644 diff --git a/Source/QtDialog/CMakeLists.txt b/Source/QtDialog/CMakeLists.txt index 82bb7dbad..4e7e357e4 100644 --- a/Source/QtDialog/CMakeLists.txt +++ b/Source/QtDialog/CMakeLists.txt @@ -1,3 +1,14 @@ +#============================================================================= +# CMake - Cross Platform Makefile Generator +# Copyright 2000-2009 Kitware, Inc., Insight Software Consortium +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= PROJECT(QtDialog) SET(QT_MIN_VERSION "4.3.0") FIND_PACKAGE(Qt4 REQUIRED) @@ -74,11 +85,6 @@ ELSE(NOT QT4_FOUND) ENDIF(APPLE) SET(CMAKE_INSTALL_DESTINATION_ARGS BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}") - ELSE(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.4) - # Since the built CMake will install itself instead of the - # generating CMake, tell it that the install rules were generated - # by CMake 2.4. - INSTALL(CODE "SET(CMAKE_INSTALL_SELF_2_4 1)") ENDIF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.4) # if qt is not static and we are on windows then skip the install # I don't want to distribute qt dlls diff --git a/Source/QtDialog/CMakeSetup.cxx b/Source/QtDialog/CMakeSetup.cxx index 62a4ce3e8..7bc6f72da 100644 --- a/Source/QtDialog/CMakeSetup.cxx +++ b/Source/QtDialog/CMakeSetup.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: CMakeSetup.cxx,v $ - Language: C++ - Date: $Date: 2009-02-21 19:43:45 $ - Version: $Revision: 1.17.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "QCMake.h" // include to disable MS warnings #include #include @@ -22,6 +17,10 @@ #include #include "QMacInstallDialog.h" +#ifdef Q_OS_WIN +#include "windows.h" // for SetErrorMode +#endif + #include "CMakeSetupDialog.h" #include "cmDocumentation.h" #include "cmake.h" @@ -104,6 +103,10 @@ int main(int argc, char** argv) } QApplication app(argc, argv); +#ifdef Q_OS_WIN + // QApplication changes error mode, let's put it back + SetErrorMode(0); +#endif // clean out standard Qt paths for plugins, which we don't use anyway // when creating Mac bundles, it potentially causes problems @@ -143,9 +146,6 @@ int main(int argc, char** argv) app.setWindowIcon(QIcon(":/Icons/CMakeSetup.png")); CMakeSetupDialog dialog; - QString title = QString("CMake %1"); - title = title.arg(cmVersion::GetCMakeVersion().c_str()); - dialog.setWindowTitle(title); dialog.show(); cmsys::CommandLineArguments arg; diff --git a/Source/QtDialog/CMakeSetup.icns b/Source/QtDialog/CMakeSetup.icns index 8808dd62db64540292417e8865bdf627aaf8792e..4a50c0416994f9ae28aba15413872f666c4d62d5 100644 GIT binary patch literal 138205 zcmeFa1z1#D`#!vf3A#I_K|(-MQo2)+P!I(aObl#s522Wdg@q_ml8PuIN~(a;C`d}# z-Ae8M+IwaQ1rMI1zSnnszj=KRFtgYFJomGn6?@%l?FsT*xfY@m?g(0|J`;lIE`$w{ zh6e|b!NK7jL!<$u!8r>Vh#X=VL^`*+x^^Oi5kn09NP=ptb_~)VKEyQKk6d)!923xv z42BIc^&{yv?*2D57bD-mU&x!CW_I(6j(dL^CJzbsBYWhmO`I+@nZ_dhLqnk88I@VH z^z)ii)_sJBT>6oN8fpq^hiYn`+1P^%29ZcH8NCz56|K+my^z6vge)y39grGd(fe>{ z-f3h2*~vMb2jVwP8TdL>x(Y!;l@vK30uEw!%K3;au}9W2;=>^(9K;`%WR1jIIXZ`6Z@6MOzNKyVM8Q|F_S7mj*x;+_+r_dZgF1I8=el(hA zcfL(!r_p>FUD9<$7^Atm9|;TYX)KWyr_vli&KJ}*mT1WcQfcl8Z746i?kG*88J&8k zAg$P&Ml)nZ!@;FzGM8u=Q)tGVkK%&(96U|!Tr`#=$hy#N^biq(h{AfV0a6~wb`4x4 z#DJ5LH9->1uv&C-va_)xuhm(x41#bB5aor#;i$h+evr(^{!IsIeUgXhMy|j^iO3NM zPy3q=(ilX>TtEkpo27rhKGiRXb6;#(F(^9(2prE z17Z@YjK%qX@$g(yL>}nTYfsMt^TpSpywG1`Z-D!^rF0W6Sqy`V>4th7TYt zgGe=`v|;@|I_MfQi2Yp!tqfdxSq~~e2C%*=KG}O&Di$z zF*3Xt;TT5V)@|@}pYM@!buS58j0}MH29R9H&%@QzIq_0~DHMRcH;80PF12x)Yj^tU zjabMZdk^#-&W<+rE*3|Nu2iUcApN@$o&hAC#bUmZm9>M(zMJ_K$2df*k-;eR{Zo*; zv5|?HwLy4gVM(n8bQ^pB8**68L*2k|wz=-c>e5>cNzg5%AGemaUZjzdy1It0re_X- zYiaFx*!A9gIw(j+M23*OkfoZUGSU)@E@h=>r`C3KboKUqxFWh8L=Z+q29VW|`807+ z3A1CV=i=gG@Ah{0J$d%*n=4d@48q8gugFp{Lp}jnBWB{P;Daajls@i#`ux?aftz%- z$hTnx^b{L3L^&07Nf1bRVdvH5{ZF2}eEa@A;-rrN50J_W8|9eP)Nv3FM+dGTT4%jL zKEHkc5h)c+zxr(uae|ClG!-CR7eLMkENH-m_qrm+Bo-$lnkAOcvmn8%0@@%<3ur^plovEU$j-yJ+JhLAuZ8M!do zJu*!4(8X!T zStT(vWpnM6w6t~g&6#J8Nm(sX8CiaxybI}BneM8(dIm<8Glj>ctb~}rrqrV+<4>RQ z)i5wLHZ`{sf@;u|-HxTK0KahRhx**uUAqqk&6;guW@+VUgd0s+aaOtF4;?){P1lY^ z`0JWmTG`k+xbd1%Q+9(QPVfGkj)(0JnwlF5_d6Sz+B!Nqxf=>(P*T<$=kn-zXIDo{ zQ$uy-?VDGk{cWwC+}!3#K-?f{{q01h7r%Y<@L@anyyi~X^~)D8WgcDU;ov;q2Fq$! z`GfsW9zE)L*w%cnwzBm4m5b>qX_<+;mwU_;W`8?`ERN}^uBpCLezW98{-w;6v!{+7 zJ{S{oDE4UhGJTF$L&!Q~quH}zBSu3*0|R|MUENu;!gQFlwe^g2WB4b|z}O@|4V`MQsc&d(Udbaen&kaRj6&z#+PeC>=50dL z#wPjEJ#BZYYies+!zCogCV5+KbVcQzs;cUSOEJpQ|%D5D(H0~v|nbDRHmf4gW>vHa5^W|l^7nVY0QZ0T;#m5#kMWQPqBCZ8_QSPw6-fHz zpW`8SWN=t-@(bwhBK=6_WS^tf2f++$QUFkV2pL4OCI-Mmp5Q~!ZB7P2R|SeAlL1hR zV*vUSS)dl51Yo52WB_=Ib>P569^fHxYlVJ>z5sp>~|}v=~r5 zz(d|Y79Z=ugvCcZn4~xj00#l?{eu&|zJXN6;lXrdq~a)^(f$i4Sb`o$FUZe-;@6^O z>OZuw@81Yohu&4p89?8s0q24{j7X5m?-A&8WIOcjCBit2ERdX`s3HcD!ijWE$k20y z3k@LXcVv~(UJv}cPkq-IBGM7ohZ4~K3L3fA2;Ayf?bvGwDh>2iGz25i-=qeFN1*SG zeHSvVpS}JPAKGJ%Tss?rl5%DR-nAO{t_fsbM>g?j+#rA=1KeKVeE1O8ATk?D&0J|~ zb1&8$#lD9OkcXh*N2uSLS`AxPxXi9e4;BKRKR|}M5yB8sZ)Ou_&1}b>kQunrUFY_d zeU>o9Xkce$ZEa_83K?ug2!lu=gd;=jc*vx7^OBX`YBvhv)(WBXX#xRSgA8Do6hj0u zo}B&I_hym87H5>c`mjnjQh^k9S!GPeAtC*=*;h^Ny zMet(AB}->+YCM;e5@U%ujTw`qTtf$$RfQ~C9I$xtQthDoNy(`RC^rbAx&-bZfj#hd zO0uuNKODfg)WEChd~(Y97|T(=DHq`(^Sf(({rzBnt{_wU`{~K4=g+M}v8YgtC=?h8 zQxbjPMX(=JptW(`h2+%Kv_sb4c}{>V?gaZRS_m)V_FL?zbN6!c`SWQ>ApnaC1(vG- z6qJ%MANJ*2xNyDwlit zcw<+R7W&A=Ri&iE8H`ye8->AA#bIQy1p#Yn1yITv4|qQ84g1h9@Ri@+kdl!BXEJ2R z+5)sS$cL~m(ARqG9)3ErMa5Egcph#(xSHF?XQ5(f)A@|d%&e^J^P5BoYQZ2P8N=#4vz#kf4;)Zl16ge%?H^80$inl`ZL5nd}S4?IJ-tghW3f!!?NH5Yhvg zR|L9wdU$$zd7+nkFVtAjO1<`C`eqR*oQ_CEeP;`X_>zvc){!(u4 z<;!`e9l}OSF=5t#v6~C+VQ1Mfb7*^{1cXu!f)ZnG9bqRC zXXlZU9&VC}^;uZ4D_8RJ^3OPp35W)2js#hhEwFWT05?KT&ZDkM9&XOYY=Kf&^K;3l zJ(@X1N>I)nv9hzbcR))5ixiXY(h;o}P#3S{UA>y0UvSQOOi(}`c|(vz$$Tr=PJVnz zce!<)IcO=g*tKiduY`#~pi8IFlSRwn&mA(iv9Yza8)ws9(XT5P1O)h)e+@2Rx{>HY z3ri^yKE&6LEP!l^z09qx$CZVhh32Zxd6KqDC`g&8K(**>@zSnF)D9u@|`rKF^^ zwCq;88w8PYV1&UyScj2E?38@9yy0R18!G@DGnzXT9D8fgjHat-ECCq+QdV~JR?#lt z3+ScC`2yZh#UfT$o~u@dtI4_OyD z=)#8T6T#St?CHu!YX)NjFmB(jDBUBDQlP@<(kS81?bO!SH!v_X{1M1bY;#}1D4kok z%PY$7WP5-ijEZ7PK>@zx+iL6SO^jnF8Tj}{(Woco6_u5DZtjx+-cVumsLtRLA~j~s z($%E^eHS2GS&zrXASNKNC?5>vPF0S_XnZN&5FqQT)*3oGKLCN62UTXHXw_RrsUDOM zxVOG@_ilB0G;oLNjTXflTtb+dmbUgJKvpWc4=YN>x^fq;Vyw;eLdVerq(2{_cmrAI zS*U4hYH3XjWT7#mxvFH8(A~RL)nFB%@_+;wXp_+dHpjf7OCYPLYiNuDQG-p5k-3gc zO+)Fe5kg?Opr)p_w&BV=5aJDmeaLVg2E+;3TrpSG0L#266qVdqC{sPr(g&r~=u(}j ztE+FQIw*<8ClwjUL+FQ*UN$HJR)%N7>e>?{85;^+>L@M8DrpQ%!@aBX(Ez0)U&9A4 zqBG^^1oJ%888g*TERG+rU_%LGJ$zzM8Ks^mwCd`?vP$Fqn!{26DIFQOh(JSO1El`p zWQO?dim)n94MUUr0nJF8!{z$J+aUYKy3`2YV`wh$0o~u)tLbniA?th@GMt6_hVUEb z87rx(j6lv93#qGTq{0H%C-s(t3>xd%z5Dl@9@HO|f^c90iigaQp%iq=oV#!Zyo`Q% z5J%j$=`&`)qo~SbPz_|cjyx+l-3MI!9`^z;_ zn4vrlR*?p)Cn}oNQ(bwYw~CTnXni&`-UCZk&CL%Uv^E}-hHzN_VnGEZLkwXA!r86z zN=mRY4h6-js=}i|)z;yjQQBTvTNT??izOPRMo``Wu%)%7z1TMbrH%mt-D5jC*`b51 zFB!@!DUN_r!%9|{(^O|MtG{0XGXF?>Llwwe8X)FjOKV$Od(#QvCD!rKyab@=(0pc# ztbziph#P^W`YNZcsm$QrT2p@a?w#5r&CS)d<9N4VsO_Dl3$aSVK*3xI^%OXoqc2PT z5tM$Wh8*L@j*4=)QoN!rwyv$3<|mbSYg>DJN5{jKQ!>jZ3 zf-=pRp`xOy&L^DOR1|(wzO3q0QEv@sE!5g>X+>j+0(N!vw4Iiv3<#K)j8yXR8zo^m zSROY5%B&3XN=21Tsi5Y1X?TfXaYg)3VFT8aw>v$m`+-B`HZS>woaC3&8dE_C2XwjExx>Z59*|vc8}#AtNm# z0|P{yygXVk#;h7#9`O2CpZ4Uj=jPJTL*(xsw|eL1ohcRy+y3r3;&=+WaRPo6$|`l31zi~`ok zP&`5yMiN3o;jN6DcdDCYtBXlWP%)WhWMpOKWQoStFQ;Yi%~H<15ZTrBU^MU0NGeEm2@9>S9ecpO;%!!Yf@pAeC7W~Ih{|&TdAr19qSh_;aB*#^-IARfv#m9M_7gs0Ec#y_US4@ zWDJii!63!S5R!BD?5Viu)3R}i+Y8>bj!iz)I||*GuU@@={q|YvbTHSYB7#5yL>R&o z&a4n1i^3QrtAr$j_?GD+3!@XxoH%xT?+LNvXSQE>--f0QmeFX%j8F!c@EiR5#${lD zpt#9KaTE1YSx{6&1jcYV#HZm^PAy@BAa>)8$K#J5Il4Pm?C2>t@l*R~I?^iq1?KA; z_$~4Mi!|UbOoe8pMt~5%oKHkp7{;)9#6=*pv#ulvkH$u3{;re94#pgeIwTfLKK8kj z;xb64adCL_=IvYf9n;7A%fVU}1dRzV9b}iL#4juaW9X!5{5Y>O#$Z@s!4ZIr%RYPU z!PuDn`*%c(9Sqy|>ERFYKx2%8zk}a1eSDPxe5ax_qOKDlLi{qGFbtew8Yd|@7F99A zA!gKdyo^`G;h4R9BKA((9})IpY&M|TN(l)-e)s-8{DJOs^9mR=v`VD^ID%o5fa8k1 zWI-69Gl(&1Gm5-RX?Mh?H;-s70ZUwfP4yaJfB5k6>z8F@Jfm5=7i)foCr=jBU8EgCM)}3OwNgOoD)2WvuFGn4dqxUkKk?SK%O-Kz9!XWg0>pAg5G$Zhk&K zn4eKVhzpt*KO3ab5l9OM7H=UA{h+9zn)i<={niM5s++*i&!2&~`SsiTY(+FP0BAI} zz6wSKTPPurgO8UN=40d+WF@YSRRPs^9AX9o2ZWb5DE#p7@l*IYH-`Cxo2&ry>p)vD zx}eyA41|HZ`vVAR2r)29lj98IW#ki}XN%Yk?(T4>APLOVX}&6^T=Q%x(0k5?T)zckX?!_2M;$l z4-YR$fyE#N5+Qy%GzA2`lkPov`I?4_dI*2P1Hu54eqdneQx1qF=*S6BIM{KALKcA~ zFgzz6@$_OgZY}`H1(_$ffXYt+jRCEFdfmvf-j{FQ!5zzvh8q}w2T4Q2 zpDzLLz`P9Xq8LR3i{6CO0W4gcoIH%gHL){5y=0*c75K(ru&d(f+Yh4@A%H^$`#ykI z7)cC{Ns@(w z15!I304nYpH7w#mmwG;Y=|^qDU_TE5GY;le)WY0YVH`w=^JC&Jp&9`jy$Zorp?F6~{Ky7w2v-FOVtiPvk2inp2O~gmV zNIl-43BuJue0VgWWY^w!_H}Rw`FaUd7Zn*SlNUm4q0FY|oPZY82=U;EAYEAPPCfY8 zKistz#F0W1NEAhoo{W2f0fjdk-G2sz3V+y#(GXZLBkaPTrn`(|q5}gX zj*$SlVGVi!iGc_&&`PHLeH7w+!AjsjWxt&W?nBS3K3vZ$1lb8XzBizsLRB*CKbTxL zs+HkBwMC2<%Wyx4Wm1@;0s=NpEZZ;(s39X_8MsSF#WIT+1N3GP#A2*imb}uIA9Qi! z-i1u-Eas?#Od0d;Y#^3hG<0+t^De+O0b&_!VZLMpcbr(Z!a+ZT1!T;RV%c(6txba1 zCliTfo-;Rs8`(+3G8T$hw!&LwJ?J$e(KwG&%2-B}vNgIW$d5u9D@`c#pRwGG3NcP3 zW2K2?i&X=h#$Es#Y%vH5hyhh13sm>^+KIY=mH$o~V^|WX?dk_Ihth3fm+(>$My0VJ zecNRO2&Qx?*d^cVV#FY0(=|*G45|a`0LEN2s*5oOTIy}!1b2OSO6P`M^qnk5TwPXtLdu_(4c z+1Cq4BEj?w4D=}2sU#Q4B%QOW(H7&VN+4X78n|A;w8e2L{Nx@i8w|T6Pr{O^D)ufCPIXn zNX*PEEUb)RK0u^NE0bzs-j=GNvIJ&egoTxrjfFI(3|N-{IvU7yiY6vBMiaAD*s4lk zp_E}`XTp!swkVchNa9CD%u#NW9)T4YVq;@x=U}5BQ);{-#xbI6xx0J1$gZ^@!mJEf zAr4L!^j?xi>nDPktLzFF5*uoYgM*Wki-TcIF-4Tw#DbWcT!1&t6epNBv4K0o5p!5M z0yL2zHh22G#mp!z4o)sEFoEM@98>Nmg4kRomtb}_%tf>qFE7{$076a?#HLLyh|N{C z+Q7pG17=`u$IHvd&ja?fQp){Y5F@&27;Y0{gSj{{bA0^#0-R_iPe~ASouvg!qVq}M zDIZ!?kdGOZothx#VxSVHz{-QU%f~Mu0B&@+L7y<8Af_~_AZ9$Btii@hGcPD4EG)3P01sq(hC^_)rSK4S)fQ;CP5&W=WMcfG!8bqo1o`7809m*svG?BErHVBBEkK ztUp!5_)UHgvFxpdOfWu%b** zKg6bi4dLvgAm3|Y3O`C%);6{hzDv2OZeSSV;t~=9Brx7kgEA#4%vO5tI*=7;Ku|8z z#3dvprKWL=qEI!gpG#r3vbI}<1t~!ln+6<_l#-H`5+Z>y>sO>O8wKMq2|*AMG$d3M z8CeO=QJCpiMgM~oW<5iD$87o`V%_0**>GaZQtGXZf*1pz{+ zEArD76lJ+Vd;Uc!Y`deN1f`C^nkMRuf`X!w;xu}c*pE_}FimhlrN>cG&DcO>qn98o zDFCW^42-g}JP$g%_!TKkmp(W^SV~fA3@t?^usp9U!2mp(TnhV9?laP6bKk#Y8j3W^ zObJ`)SL6kO`bQ~DX)IYx3JYxt4VL`gGayE&sY)?`sqDWH!k*p^-6%U+gBVp5aHhI4 zKNu6HDui*-T*ZX2s%r99C23fWn^Kz;&T0TtLtUD2RJ8)5{ZC{tOsS;GU^R6Su(~uX z&kd4n)J1@&p{XJ;3i!`5m<&w@tE%4_t}8tq%~~b2dI4p%nE((-wwiK`SZ|JL7r@7V z5W(0-MX<{Hy%DC;umTT?i3&O>XADzYM@?`P6ccTxCV~;m>kmfQNyCb~n3rhHV6=hQ ztvyR;IwRImW1db`0wdn6i4Av?hLw1~b5R>@Q|dyah*Oooh^2Sq$O~j(Wj-2bS~j5j z40IKkupS(9a;gg0wBqsvI8YAAtynVBC{tU#fu`^%Bo@qnR=~syZ>EF>Psi{^Y6VcH z?1V7XS7OF`cFfBuDqzJKTQ@5G;2*ZL0_^nA5gi4biUM{$dvmC&3MC6Qu+0pVE{?Ko z#Bc^P+9T3}_)iL$+|``T5t^zXS19Q>Lezk=1w|KZCc@CBqJZtmmA$knN>3Hr(tz%= zpl$m=_p_keYm8M`0NNA5loi3J!;-FdoTmd6X zkz|Fb0vItVBXrk%RajdDb5al86hxU&VLNBQ7A^~Q7BG4IM*&Qhmt$8x5Wu9)rouY{ zRCOjKZI12;vz{#x@l*YaUWS!>S7K~J{DITNxI}W;%9-#iVRUe%WZvlhDQuUTr3MR4 zPMc8tVwR91%GC8G?AvwtRNVd(#N+Ydp&Qg;U192mBWyz!g)D{#CXXhPG{i}iF9`|A z@bTBj&mQC*iQIGa#4$|yIvKfXyB1{*K-pIXDjM77g~7r$L|Yq8R&=R?BC1WOd~u13 zLSCQWclY)_dfI(EVQ2V0psF2`KDr}h$Akd@oBSxd{OnC7X=)usR2;8*@rm<8n~|5@ zeSN(>-QAD+?&U;pkBB}Pvol&OW@qqT!;yN&lG6;UCkixd$7FA-4g8)=^%4~4Af7;; z^Z;lSyX#?hUwdgBdE3tD=*YdqeNoE~nCiiXQfN|*3&_aUMn`igu%1Y%?J( zSH^7Zw3G&S$rH(74CuWKWc1`~H{2&dGXjXT11mtrZ)>ecj##%Td}n0X4*!E*da&`x z%@wdRjtJ~TbavFmc1TVjijjo)p?M&C;6B6etvqOMx___fLEYt;4QscCMfn}@(=)-k zwu!>!?;PWU>6d)ecDBz4K(+Ov*{#?=SCw&6!wWCm=e;W@&NZjcfVWZd{2CG}bV%1`;I$WuG@j6pwC7hvyPJ?Bt*c zG(C1yKci`S+dz(n^=VQolhUlQ90kE0t;|Zmv$VMAM!~hKS8{Xn@{+bW>&&unAUo1i zf{U`mp*BhG?rw&FDVUH_l^NQB7ofIb+8-|iDGsD+Sl=v~OKWR&%mFDxjV$aAdl2Rt0iIw=JB}v| zF;i4UZb44@dG*TWOF0*_voh1uQd7=nBt|VX(KB~; zbE6zFfZfR+cuy|}c`S)AZI7Y|qC9~R$;k;BKmXDl-e*R&hz$d1e>1kFpe!+q#f8@k zMlEKfoli|kPE1NoIl9i#z}Vi+9gQpOLG~oLqcp*+m`W4V6TwP6reCr{K40GflQ!R( z9M?F3Nwjg6l}uzZIWaLIAu09j4qr1vYgZ2scVINklMc`v%^*yUqza!bP$=@EC!$Xm zSp0c!fF^7qny`77b8{|U$jZz}Kc5OnCMCk>*b)-X0jg^qjm(@qygWQ2Jee_?=(+G773Yx)Qs%Y8`BuDft@lGjy8sIO&+zBHDW1o-#LDa*5NgdC@n8fj1-j<5SR)f z_U#Pwzr6)^Ce03X6a-__Xm^$mqDNyysjHZCZ~|9SYJ9j4%4ohL*n~&50i?AeNMAez zdD#>BNO#<93mewQ3`oF6#qIAhaI}UFgB0Wd6?AB|<7`Xk+2BD$6oDEjZZ{ywGe}>1 zWT$QiI`zR?FNRC4`kE@RZMU+b9P6miP6Kp}RR7TyoRoMj;p~~%c=Bo1grvCe1(rrK z031`d!Ts?e){^IGCr<1<4j-e7jXeqTy3+qQ1mylLZx^&#ulu358sb?~ZHD_5Rc!MtV*dE){TE*wP{2M5&lvCJ0aiQ?PC zyNf4+JDe+$GlC<5or#T|S6B$_z@`b};{TLufR#M~vc7&k+8`aIhef)7>HP9=J zc^4?;`NM}6IE;B0Q^;)wp2p7$m`EYN@ue@#ea!?4xjxeK__F(YpzQ}ZUg|LR0-8b&ZvO|m(fyJgn*uyW6>^HUjn>BX&+QM%U8IPG3&CGw z1ahi|j)!apyF1AbiM`SDgNWnwaXjh+490-MPi^Ffq|V+Go~xK4c$_>gi1`U7aRXf) zonSL)XJ6vnb(6{CMW5QjJBfYSb3wqzi{qGpPJkQ+J3GQUxjTBVx^IvItF-tDr17GU zt#Ak2N$Th+@!T+pGVVCo(H_>p)7jBo>GPv5j&&(e(TA3Ha1mpBcb)%g(;roFdi1QQ z(?CZXxgG8xwLiSSe1*gJnmB0Q1yJ#a2W@R(?Tlb+ZOghq&q+0L1ty1q_Es{ul%b;| z)Nj#G^>DEK2M&oAzi)1B4Fet!J9qgkWt>P02b&LjA^XAh7BaYytG%u3kk@LqNpx_a zP*G2Z5(?ipg@Xd5*6!1D*Yi!NfU}J#;12y@7j{c{D-5phN_E>LIrK&Ulr;fhJsYz!V>{JQ=g8M_{SKy2GPf89@1Y)150=bUd%;9N!+C=%XGY>)NW zEc`R^8Vo=Spt4tWVOR;cS-7b^!EM{mHEV|ZPfd&m?}PInlv0w-P3`Hf+ZEZSqE(aW z!1kA-SG5gftTefa_kP=Dx9yr!(x^dE$FKM5VQOJ+aL3bn!(-c&v}poV{IaH=+z*$#vl%QVfla z4b3Oq!W4e0AyZw(l|8*vT^&ZX8`eO4kT@q|=1*l~FvS476(F}SHC1G+Bx;tSp`pGx z%QZspr&2M+VY;#>l~q+?)Upxv5=~d!!v0Ad2J@vyT)=4c9WpQ*jL3$Dab zAW#C~wUQ0Fu1kMO?&Y=nQV9;nj>Ca##p+Y6_uLCz{cAFBQD0ekIXo6CtVXJ~_NaN> z^{KmGS^ewcZb^4>Ss8p2Hy)IHm#yZ4OYno5io17zQQHMxez;Xa z9*2pmtR&wdRiCqpXhY98PF>msQwqxI#*(f=aA2KWhP!zarqO2vXKnAqm>q8^1Lqs3 zF78s~V&LZcvLd(yHwKjn94W4-yuIBb<6d$2&3_^8mOQ);7mvjx-=?oDTH$!T<_0+2 z_^Z+`J>>STGmlLa!o#Zw((b$-O~1}*RR7jaAWXDWo3I!58ut* zo%f5%E(3bDao*d)YX$HqBqMlGK+$IN@9mF5T8UnxWR77$ieaQt+uYz3kVB^1*b-_(IU1`f@IG+MbzCkKUv|Cn~k+MJS zUu(KvZ?1s{kI*3LZxkLe+j=80DLVOAMO~`O31<9+o6TSa9HxSjt{3dG+IKnb7gb%F zvI(BZ_B#La6_|?0Sa4;d+QthB*ty1E6LzWRBvJpGaxTMENY;W2{zjYSgct0m9&7wH zZI_vH^bmOY>gpw!ipo)t>Sl3r37CPf8f_Rk)cA|iE;v*M4q*as%kE!*b1Bd~`Ei!6 z@ov;JjZ*V=ojiUBJ=6Gav|ZHYE8wv@6l_x70fT@z6R=!QInl^wxQ2G3@fWpSEFuKp z_Py+!92meegJLl*fWoWpeK(&aQ?{X?6uGmYHn5ivT+xuN^_ zU}qYCSUbnS;YDQ9i;mtlt*e_6l9+@>$9&&Y-^ zkS{V^iZyeM2M1qAPBluof>Vu=i+)kA1*;VfkoSum@E|Jq0^`MtyLAKNjKR_y?NB4T z-jba`yO#d4G7IiUZJ}FrX>b;t&3GYutLFM6=yBKMkR*Ddh)&kT!@-cY>ESyGelq

S9JFIg9Z^`f|-3Q4#==cBYYDP+8x^bj)@HTiSz^{z+uzDylml2A(9AIA8zp zMvw((!9gt4M-CYs6YzvxR92@xmTBrLD!9S*e10LFoWYQN%HHDCVvqpfNF(+rX?l^F zvw>Dm!!;cyRq+JA zlvF3Brp0^c9o_)euk#=#)Dt}K3{wXnfV<++1056Sh|~j(z=x+9$!W1R7N`6v2O6<6 zvrJO@b}p`%&^nPIIC7w|v?}rZenYo-^vr1?)iR%&rHdP;Bz`aI(M~gZJ;_K8(^?#d zo-8c^-@t%!W|1*+1PbJjvK;j=BeA3^VcpCPhi8B|-J)0`2x!>2x`Ps^bVwdiE2$?L zy`HA{X+)t9zyc>3sW#+{o!vdczmvwO2N}!CT=b5h5v-=73u@WAxqHAE`lz}^Imfu5 z%h5az4H!7bhy{#I-UL8V4_|bU&0JJ2`QN?j9}6*qZtQ>aLLUi^>=pp$>HbGAx;qH+)SCN$lmyrl z(Fc(@3C8~&{UPwgJ3H?GNd{o_5%BQt)BmFYU{8z(PXl;i$Mru50QNw8^eF^G|Dz0` z&_^GK@Zx`v0VDL$0K`lD{XT$39}9r}-);h9=u-mlxBGxm`qTjY)lP66{r^P(@aVTi zjJ$@Cm-c_N5BQG$-wptH&h6;;O<+Ozy8!?T0pEWu!Vq%iuZ;pf(np)XONYOe0Ta+i zGvIFpU?Tc|GXN9P|9b(Lm_8){e`6FF_hl|4JrMW>WPs$K9|ZvYv0oN5#sRbm{P_S( zO8@U<0HFWl*UeCa@HYZ5=@-hNKA?TTpPdMSmCA{}F6XZW;HUH{P2f)k;OF%Jd>?>^ ze7+y}sG+C+__Lz`4kFf#o%W2kjsEp#o4`NP|FfOoKhsA8@XGN|b%JCj&4g`e*>oO8$vHU~2TS0Q`|*aEkOP8Swi9Fje}0Dg&lWpOOK;dm;qr*Z;ih zLmMCE^(Xp(U!ead0)T@^Q>OnXG5`j0fM+KFL?0{*yCk0RC$RfJfJYqp1I6 zY2wd+M+W@l8(=3kI`-ZFo&o=bKGp>OV+P=%fPY*2XdwP;004b(j(BWHf9-d)3Gn;} zZSX(R|E~e~uk`=yJ{(lL;Z=sI{;M~6&27eEI zGyrd$|IILnhZg^ru5YxX8bT8PMF4&meJlh1MF4&qeKZ4pJpjLt{=dtB-$?)81mJhl z|2F~nt@P0VBuV|sk{AwRZ2m9f{%GT){PwGT03KTMd)hwD5zqvFAppOdK9&J4Q||=v zP~h*S|7#fl=!56D&_efneu4~`asYmN?V}W?-UR*xeM$yQZ7Ph1mj3SA|CIpXAm-NJ zUHhp0sb&BkTJ|UCPc;Mn6n$z2{Nr|QJhc4J(4SfW0R6T0<$yGucE4|L5udEC7Fl{?9VtFVz0eGT`sfpF9Kp68*_C;BV2NEC2*(<)3c* zSO-Aq1Ejyd8^l4Z?SE?Ar`e_b1fAfV@2A3lk^V#(@HgpClmY0#_igB}z52gf5yC-S zy??9r(JUB7K01PLwj6okAh8Ptx2tRZ+N=7m(^&hcBg_&?GydL7N`PtHfe{>m1ip3g z@4c|EkQ|Bs|NZiR5%~XU1cLljbs#AC5TMVp)Ja^Nm1!qBHu5Z9w<&mO@Jw+uEYzQl z;AbHClP@UHe+~MKR_y--dU~uSv-_=DzJ}7KIlw29e*OWAsb`bHrg_@c;DO6%zlSXY z060Iy5pjlQf_FwPKz~PHRCvlC;CTo1INZoT#03K1Fa#c>Km?CLz#;P?ZgD3M4`13p z4<{!N#2?~>aJCDVE%XmjUavW0<_tCD0E7+utCB&PL$xIWf-$cSU+rDd5))f_jJMmN zJ|187K!s9t#iVt5iJZ4{2 z_Iiy{`@`d~6|9}~@#f>2r}Y^_8=jwuX4b6dzQ%c#)b6bG+`2%Q>C0npzY>wt-jvUX znVCkdt7=PlIGtp0=efMjwTE2h5q`Nv%F0son$4aK1nxM&m^(g|e)rC=oCoRH-kmN2X`+qh5d`0cM!I+2o0(S@?bRoSl3iah$8 z7q^O>J~rn}UdyR@xboOMXU)Y%>C*#?nqOrziFwOwIKDT$5YE_Fpu3x2A)V{VZf^bk z7CQs0+|`aW?Y-U9PTC}SFXu_1+v{*&p-sNmGvm%rTn*>Bn>#fUpU6QbDP5Hj8c4dL*(dw0ZMG{4h&G8Fav7FVS z(PQ1Fs`HlL$g6e_9&qGwSrc!hdu2xXfv_iGi)@4RhZmlFtfUu`&@!#|?FH9GYvO`G zny9TfsHnBd^XuGQLjCRc=ee9s$X`73Z7x%S7$@D1+XstRoc@+qn0``pUVUqMm#5Lp ztH2TY8`tl&Z{5ga&8-D{XZ$-8z1(LX-Qw?hDiJ$1ZZMyf%;av|kS$@Jj zy}Xu>ak`P=H{A21QI$_Mvn*HH?jR}djgk3w`Id0-1DUPHgS$d?lT9RAgDv#UtMXnw zYcRWB#1mm+$kw#Nc-O4Pl_xyuS1ns?VzI+~MVvF~(0t$8szM{Y$KYLf5fef86*r&y zJu#u=x+M%fd)SVxkK6R+;o&nExQf;NddoZ;={jB}R9_WAl;JD})9}@eN!n*0i*3|D zm@m7;-;KVm>ym^D0etmM%M4!U^IRhC;*8|7;>OcwW_WyDe1s8ybZy(hZ(55MYp2Eg zvL7?GuW4Mdz0>K_*AtokJumiud*_#vV5&IpX73C4^E)+eo#MGuTXQ}>Zo#xTCk?Ha zT(Rp{#5**lNy&NI-upb4fj#uOXujgTYr2ufU-#xXymj{B6VPKlpB z?J3_)gum5~?oNpcDRZp;q;si+_7tPH^s-H(|cjM_z>vc0Z8aolxL&-Q>8GviY&pibRi_t}lBo zE#G)2^n%AV%{Unnq-<)&p1SMa`jf$P52vu7&wlqp*LcyOe=ygl zFSv68Ilhh&>z)+NYGG)vmayeJXUTNvWt45COBnI7F8wrp(fv*Sq4&KX7G~}?nm5Ga zA1hTHtM02KXd)<+A`E>v^S+%tVE?dBCg!#0T&;tRE%j`c_4DsoyAP&SD!-CY+shl! za=5xt;8WP5@~%cB?bJ{<@py-$YvpIjc=9;iDrEHbD0yZjnf4|rgkE#EY>R|a`OfAY z=R0JW?Z{a6If^Mz zdI{rMN8!SqPW~BnrVho*nbm?3CY$45G%WUcUKB1CaF^pzPJO`F7Y)|_u6{bLXLQb# zZq<;TURU$(DQ8_kWE_`@`oct2rpRSrJ<*vZPNz#vOZ*c2BpJ%7=5`3|oK z&4o_GNv6lvPD_G$euT^Qs zcF8pVvO2=@8L`Y*p0b2hTr1AQ>>GQ}wPR$Zz{=w3$u~19Q=4DEa#Q{0~N3p6V z%~LuiN2(HDC-%6YRzX^(J`?)r_}RL?tH6Ia^F#D-Sxev)H+g?46g>f`P#L~ z;?l-^2mZ4!YWr%MmDtY{_CG&v6Da5J#s)gjV^5CGIjzqq&?}PWd`CIJav*GmX33|O zeJ@~%P&3{7+nl|=NA_*J{pQVGmygp!s>;*PC?0-{Sdjytkjo9!^{hhTwv|g6JIQ2?K1D$zU(AQoK2D45cow$N8@WwW{&i`Y97^Tb9Z0hIa}V9 zH!b|S5eZW7%zL_B-F}_J{_+WedmixHvWc-~S!u_C?!f31Lw=GB`{yZ7yYfo6 zXSKuy$-wDT zb5~R?aI7>@HfHhEi1xpKJP3w~{rA7ttK4)wo_C^?yZ_aWB`FH?8Orq!oNwl@y!dC5g4M=d>>QY>v%cebzm-Jch%59%;Tsnwwdj_k19J`y8`A`=k7e zL63b`y_eR{y;~!2wzf7{>TOGEs4!E39FzZWMTpo(OY8X0r5r;nt7QGex|)&A;rGt8@1; z_;h$~F6;Kyuau)B?(eG_XeNlfi9E9G)atmXiZBo8-8Mm?ykU-8f=^`k>^m#(@@Y$A zttWR5SINm*i-3HFdFSiYmzgga3{Bmrymg4YrO$UJ!nZ|@Mbt9BAkW)%6YrLbvHNq3 zJGmWXDjGvXSf8GD-K|zr5p3G3w{_6Am2>`v=t}o05nbDLd*G}$m*sZ!m0Lu6%@K$W z=60)mel7AUQS7JXs;^_$ggnTo~xR1CIk6v`Dl zt;26%a9BW8S&t{Z@xn)?mBr6qf782~G(Ff~qssj0JL%%=qaNOU?rX@`28eN08mky) z&+hcuBXmaJA^34^_;J`tWmZ_zu=d6|lJstVpN|5XExeJ!D2 ze?}a?pjwRnLBLSobqmSI;oOSNh4YWZRIm_)UiB;vXnt_K_Jo&Fi-ELshVsp-D2`_# zAr8S}N4k#5-%Tovwmd3-F}`#b&YkWK9JgqB!}NJ_B_D4b+}^n5(Sa9bvr~HS(qDVC zcb9f0b7tdESYFS)n`#$swlH#LY#$Qby?ajDx~z=1IMZt^hG)AN3Hyz_NE&uRyV}mjN^32+(4R1+{idnYZu1F7=yPxAj&fzvAzr(7|ES@<5S5|Ji zab#;io%PJZA~!+LzyqD|U}#Sb;aLBP?IlT#ms2-BjJ=}OtA0IVzaUdoZkkWOa_YW= zD{eR)kG;VszIVI!i8#p#&M(*`@vvhLIB*nTzLBukTyBc$hg z+}DJQ$4h6t+xNI!jB!=NB8#UTGHC`}=PVs1Ls$B4)$l^BYlm_huCZi3cVAz|aYN^E zDLg$jFlS}gf`d3?NwdM#LoZJ3Z4A`dI{&e(ie{avic-aF?wVufi@s)6sRbWDd{p*X zw4R$V#|ly3V}>h5wz-B&Sf;V}n&Lb^Jj!yOoqMLI&3cyxU;R-x-jgK}H93Aqj!Iwt zRyuGCSZ66}s_ew%D=+U>utXIFecg3#XbDw){R_H0| zSFp<}5dr6$kr55+FWlag9o67~n8{J_i->zvunA+ir#M$cpO8%Q)<*9Qj zOD6l&XpuY@e6mWbi~CfKU)HewO?jnKPQO+}MUbk+?9cWcL6W54`mK`c`__jY#r59n z(+rW(feM@1dDB651?7tpo zzmV>o@w)eNp|NJ6eizT#A1ixR;PxjQwRTRrQA)2b~CFCKcbQO4Un=k7O#*=<3mozLo$ z-j}?1DfeO3pi^>@YrUA&+u83nG8(6uvEDn#P1rk=uBZM@T@ShJ?UCv)Ym&pR!u!Qu zmc7L35n_@Ybd3!da5|U;zANzdd)xD?J zhV>&q-pWw+s3$#b(^77$V<|sad`ZhbCE#5dbJ~#pDeaP2cB%WxM_yj>3@CW8Ci}Bl zl>GB8pBeq#@G}RSRxou%#2vaS_T>3V?HI=N$IE5EEOAdhbVHA?v$!Bz_2X{OhgAY+ z&F|xGHk2Q@#Ad=%GV5FQ=FhJqqbhAAW_TIaYi>B|EYf**-Y(9Z&yLx*-IMY21IoFJ zHY={Vom45=5Ow4%UZ`hz=x6pC7p`ijGm%c#D$cW-jSJqe^dIj|WJ?p8AME2K2F>d> z)UV*Qa7$#|W0;qy@YwTXf}q@!jBfSk>*A`nwp1K0Kj6A^-MXDe$d5YTl{ELOIM^z- z9eBFHFl~HC$>zm+>t6lhbna)IS=MU|%$mZkV@$K0mB+1&5sh+b-@5;wr zil>PljrXEzEx*i*!xv7lnW`?Xzm0OApB(+I7OxIOJu$x{AGHveVP+t>7~ZB}<% zn{UZeuT!{a{W;@aX5otTTiWHP8|UV2EAL)s*}cj1?UmxV9h)}!99kahq`xX4w#g@1 z|1kZr#z(HHCnV;2=Z9{sG_;M`D(={{sG~Q3xdc@Cj_IJDp5*ZpWmkjb_b|1tQy^307t(9e^V;a$CM$McJ#mKuU3oNYdcfwj8sg&D zKIc?iF*oH8XKb67+q)4~Fn4Gdw)m2ptgBgY&GjKe!NQ zSbV;0A>zo^eXb|kl(PRZ;TQ>mllN4_ zbolegMe=Qh&*qj+O%6}1>Ps>kLMc((apLMNv>eBqs9xv3CKnoWsS|&Ik#l-*o@d^^ z+e*^yg8H9+{KsO^*{ux4=wamvpt8jS#HHUz|4} z`E#Vt(VOLf1MBB(C}x+jz$b55^03$rCBs=h)14!<7J#$8c_oIB)A!>yV5cm<*mnXF6f(0TZ z1#h?ErmKPG#?g~J7xV&eA7S~XSERuyAi?&hinNnC4lub+)DYTncF|NE6(}X7&#$1M z%zn?@0~3#wCR%yMl7J~6zK-gjGz$wIOWJ3Z^*ep8<2n&c$3C}IuGX9&``M!#=tFz& zqefTFSeK+ni^BkHWVVJ1 zp#VZNi?wFu9xdTz6rcbA0D5r59q@U=)F)A8^?rS3_pCgh8wrEzXm^jB5(Ky@fx2|)wo2ro<%#tRJv;;@V*@wN6_zzMc9Z(!!&9ME?``lh3T(4 zoq@*Dxdm@fCvg?17d5)au|#&RV}QoTB=`u-%_4_(R6hPhpBX1Drb)3p04Ccm@}m?) zZGZZ1$KmL8ABTI<_;(D$7HoT(GYj_DnLbvtecU&(*yG-J;`7J)~)A044RK}nC8pgp$5XQojyFAO7`jpME^pV zNbrs&eXppzJgC|X|7@sWHBq7><=eD2%cDBb=2P;|qAI;ki{s2P;4xsUIQ6jgWcH>u*jSykQKr>Hu)pReu3Bn zr(>-4>c25NN&1!7miZV3(X4wG-^20v;i*j{*}vk)6tr+}A{b@s%wHiSQqbabv#HXi zNOzVzpq`<2tB-#ax{S%|!x<_vZ zTzxpJ6iN&Tz|Nu!h_IC!8?Wu`nN5JObHa(YBXCe2zr1hwRgGCw{a&Q|a0g@owm01j zi*KOl5?b6oLpbh1+WXS3LtMF43P+Anc|YC`4&a6=t?Oux`zh5qe3>S-^bLys?MUZ_ zLs+^WMv@@%dUqbd(!~;bVX9m0p{!t$;i-HNTmW*BvO2)S{j3JJc<*vW0DY){r&jF|K=oSi;cRzI@w{sB{k$8q8s{4wI z+Sc*7++JQXxzWebJ<8DfR*n>WCL_{PKqA3ybXn=h$4fBq1#!9{49eF2%awd=h0N0P z>~vN{*~UcN+MmlleYl5Wr_`dfP@}12t1}w7ke+Q&8xTsf`V=A7ugJXsu*`78l3Z%Z zW@J2Ub+7J={MSiU+SW0i^82LXGPodhg-v11zY5YQQ6ZQ4i%|YAzDZ;N6dtvPg&`(t*Z}wR`T@t30B50-KkQbw*}&wh1@m! zXkjMAY0QreJ6r|FH@)3G*LQPDor*f4rkGIR;8={%9elS&YjbFZCfZbCZ0xrqiA2)Z zp)yzhN;WdKpB5KcgldtRD`P7GYpM9@1_6-kFaLj^P@65v!BNzvNtu^5+=?51WI}-( zqhJUrvomm=liBBCOf@{Frex}N#fj3i50v0qwYw7nhs zL)1Y)L4gPB_z_lX-E`)16A175P!9GJwBo(kj%hMXyre5HBh~2F2Jx7wwTs7Zk_yQRV5`*?D5FZ@Z4c0C!xHpK zNXanEJTkIxjNj2#u>wxY5I7Xc7RZQl-eQM#%EW51j2Ktc2b^T+2)9G~-0tL*?I@z* zG*exqN8Khn1E*>DWX$AB<$wUo;FcMXdKlv!k3TY)s2le^{ADVEceZHFe$a_Cls5Wa zG4M^gdl?+oSdu|i`O>pJh~IPh3;RZjNcY45<@Xs0fiz-ChV8rtR(ucY zKQMqKy0mXrB#d-`6Sq*5nG+&qYz0P0eOGjmI($aXXQEsksRH0|O^!X^h4PFE%rnym zM^ma*-F~l5=8$DesC_NQyTX4A>%mEeMNz0&IT21{Y=C;S7^djHcVhI)*^;xRjdjL+ zUYsOEh1ij96fm8r#blL91AutL4i}?%5PZ<_p(oyR`lwNYVJ5is4j<>@cgubp)j(Alr*eR-TK;$1 zkQmFFr91B5c!K@i5R4;QnUnvV?+7u`~Srv!BsbM?j@`v3S3v zEB;_L_uJq}95LSaSZ`dYO;s}=YHXiPsAb7{%}$9P;DXM38}H0LK_OKxr^D(X)FT@W ztBP~(sceb(UH${VH+w4o4cD96ntsZ-<>8u$LKktpA(d+eu-s-GVO-eg5bTuka~8MK zcDiPG|0kNY)DxjwpzF@~=1ki(mAK*CO-~~KJsc3- zl40I|_v${6f#+x9gHZ_jFdCIo{dsx#DsCeVq1Oc`8b*Yb8#@9$G~^T-+-yc~=hg|M zX%UXv24f`S5xEOwMod&~ZI+dGddDe$l@G*mc-2^vyCA~=}?5GAYRC)7wFbTqc^*UGBza|+*J*~{;yg8Z0!fETt1yu zq-q=&b=7fU%^OSe`Sjs6eXwtyW`jqu7R#bATr+idU3oJQPPRao#da+js2->vPpwQi zjT4Kl|5;z}v%As&2Gs_`1=avtL!kCusc`qy$r{JV9_}%IjR_TH#R!^GRX(JbnSfkl zKDB&$TlGMA+0bT{H=2NlYbl6DE!0V%I6V#*!hx)!f%swd5;tjt&)Jux4vi;DkEL-9#(*gp)`=F5c!}r6CW){6FPx^vhqIek?)4O#Dp}2-xqcey(i=KIqj@0~J1>V(POeH->Q=T~)sriym1u+h-USbkb)|V0eTvY!A zE2XSU3yRL6WU*uacLqg8=!CYuhrm)H^hzm>6mRX=7%_fHI@%TPuq$=b5W$jMhI!9Q zG<-ag{|P!jpK+vwnUpq$0y@eRo8AJDhu&5pcw)(+B;MMWQ22t7x90y;XUtg0x7X@Y z=ednKgKn{?Q0U)rJC;T!1)PA`)=c24?c)-7E)6UL^Q_Vcy_DfewEVRt02BkTq#cU4 zbx*=i_9WGYUC)T}73@bf)K^!KE&MZaQjl;2mgG0~{AHi>!_cw{96>`w2r+O zUnHNNo5zc#gsdBNlQ;c5!qw>DQ}s#&o7SIkg0Hih)3Sel{|!^2H<+|ZR1h`WDnCfn zY%hyz(bbUH*gw>-+<$eR#q*=kDI^bRwmi;?e!>w3-qvJ^=eojqz0k|lccbJ?^D26R z*xf=b8Ygn1ou*w%<-&m6LJifB0>2;&6jh`t4ee`4_yxtFLK^SGB;&QSlDKWcXks;; zWB1W}j6634E6&qRBZSYNCdoXUaX; zP5yNv5U7}}#=Atf<(6{;>#4fb5#v%?H;(g1npn_sj5{rNyh8iMDp1?C6e|2R4OrHD z=s=S6@Zg0yA~6iY{a-=aYuD>z$Kk!P_-_0@-MYj=IE8VnV;50bCk@}>We9%U#^L}} znl&>@K*-t5$N}*3;o+CSp|`$M{hZ(}tY&g}ich{U9D-s|a;>n&gIcH!QUU)NB0P0l z#u{ZiPp>b7j-ls)yVX{q;cR;?1>G|EwwqY%fqRcMxmmq9>z$~RKx+;qq})A&4mc*z z;+Eo!{}bD@Zk5&Qzjzx%VWr%02UuaQ>ythkSHsfLSTPT3?>YyTV|l!kC#VOJmEd7) zt-kDlu6)Wqz$>#}*BfiD7%FsF9+&it%+c zQplE6l9m`dF3%HZLoQuhMck<`NO)7VYrVrNImC2TgCwhI=q-#cQy7hH9PIZaVIfz; zra;y^7UI(itwa9rgULSjr?jM}2HtswcO_g5H=7(N;(GO$&PIe9dzx1jH!ZpBfT|iV zAw$i5W)bAUbnZi}Hh`B|2NFgT&YZe&Oym5z*-2d#9PDsFJ0gR8u=4FR z=n7o*6s5K(Jkr!8hU5BEE=BUe~YJA)WV zrubho-ZYV;H%BH)(}>dk(6?$sZ9;;)WkEbW-ARs>&ngz6$o-Yx5R6Bbn$G{q`Wk8$Mh=mPzsHF_nz2_7HzPL zgfr?an0+a!LeIpUZrn9|FcD#M_O$bZ-Lyb}TfSKKywp(NQqt|l&L+$ZsI$67k;kMP zcDzwGvZS;>h{95L5eGZiB;wN8%y~;UgGt| zefhDe{%XmEEAn?6+h`YC@1JPN5Ug_s8?fRKgC^PNL(&c8fKDYl%4ajU*+@& z&;hz?zTA&EMS4~({V~ZYjy3`^R4Pwg)@41Jf zcQc@2{2O31G?91~rc$|=(R=xDX0^4j2I>*i-Ksa947`G3kGNYtAKgm&a7H^&bN~XV zvi?lmG@(pkPQ)WXm^~|uy(d31pXqC28@%?)1<>O$$ z3EUX1bFJNTjI#fIA|Bd3QSR$fJ9tB&k?pYp=|eYP?+k(NV=x=|jG}7xcCf@we+2Mz z+G8=4lWVwGRU;1KQrqiCBAjDnD{CG7kJ?=#C8M-hC{GS9$3^+u;`zVxt^;qHVz?u5 z{OB%|t`WNFS}>w(Hn~;@Cd+8MqJ{<`AN~C&41!1GPU=|}Z&1iz$Kj_i`*n&Bt4RRE zV##2va)G)IGhTFDdWS&z+Pj1&&rn=~QNE^oxG6j@h^(ic^=KVR_a`dOb{i0^NJNB4 zM1)8~;#hzGA!v7xB{CQ*2b47bfB~0bdH{k#xi45QDbMg+zh@rYMnXOY!ps+_Y9$l+ zfa^;f1v0&0wRGHV3tlzxT$H=O&^PI?AH<_n&V_Pq*#v6*?@|3BsI3t#wy zPCVn2G3R~zC~GKi$B!^PnB&pmHU};zWnjJw5oeXTeZ0ToV(Dq{L9^g2g{u-{JR-+I z_zK`EhBA1nH}_Qj~QE=)AjZJ;txUNB`QF^k))6*}}=a8HraGNo; z7*s7aCh=7T#G>5_8wk|~wc^BTK2>w1yVikNcVk?;opiK?f`$#v-ef514h5vSk&O-CWgHg`Ify2RyJw)m|5{LOqL1__yP_O zcMA}Byb5FKgnqEGL)}$a+v3+MYq1Ej=7^QqIs;ww??M!{0=qQVAJMTk*cJqxd~)OV?l0}%58K+u?d($@w^KiElm6b=zi(a`Usj;s zR+E0-wLfo7z{=s^Ddt<;YWzBibe_j}=KMXmU!XlBPf$bLWL63iFb3MC8N{ziw92a* zje?sR9dmeaaX+}!Uy3+na0u_QN^%woCLvsZ?0gGvKOF6RBs4tXB!jd+v`~1M1hM!> z`ASqtMOZ~>D+i9+6#$vv;hkr(bs(Mn6oEODMb0-UsUNPx@spW*tbroZ;L0MKZvK$9 zB1VMkBcye+wL*$A_qZ%KXYa<|Xoyih;y!$?oA=cjnL;YpXP< z{^+{Y?mx0$k+yJ!B^JCs`$|EJ<%DL03`Ia456#_H7aI6imr>$C*i`Fw*Ez{QLbP5u zQ+8C!X+Y}N&=?|EM1dYu-CVWzsuGC<$3k9`_l9h65pV})ph_Wf0~)A3$aPN?Me$86G25A6_4R1w&*^jZfFM9z%&%>$WNU(vl#%Nc>F?j}tJ!<<^{exxUSAb}|LK zg;j4HNEw`>SC&3(6fyHF8Jn!WZViG4oi2hMcs_SE0QUC)*8Ax617bD}lJM&}>htv# zm}mByD9~<#KGx>HM+<4?YIJFzRh_Nga#>%FT5Ys8tGZGa(yBdLAO=}1qV~2ITCHPM zh+T7Dhv<>scTvxSLsZQI)sAS;l6(Ad*y-`dp+| zWyT~6VcDT#ZU`2^hBGekBTZ2{6~+%~JU67vE}`fm7~K48pLMKX6>{xw)<7+=s2i`3 z$7ge)1;Fx3*-xPt<(R8&9I-g;$#+Ded;>i16+t<}vAi_TOl0B!>+7ueM>JAF!lw42rq zxDcDz+9A#3c@h*Wi)Atr3M_S7DvpeWXYMO1@d1TIJ!1Z1E`dnLXQO-{ZBekKIm`%) z7(z)meiHopodfvgl$8(c7f)d$sQas%*@p*%?|&y^!{$dY5H~)t%&Na$wh}0ZwM4v$ z$5T=q%0i9s4{tN)<3Yj%vL2qecA?~`-GIeW3h^8w-HQ9f3ZNTegg;lm5k-BNlb`Ml65SBqZJ9&-nwAkf%&rB;b^j|;LI~zsoMej_?;5AEG)#btBdn}Lt#rm4SmAJ zqEi>9V(mHr?>1K*Ay0)z_=@y&y1KCvYBWe9>0o-MR^%SRM`-#nGHLk6$Ha4Krbh9Z zpWh+(DT{1JITr9B*x|_J(6++8t`>xMf2V;g$VwCd)oi(5eL#B;%Q2^AzOFr{p9r^UvyUbH_)L!418k@OW(1YE97rdS#pn zjrC%s%0cPdH3}_vI?ab9dMQcdb@}0~-aAfN)F6fgUt%1qHs6eDS?|lGK3n@#H`I6BB-H_$>EY4iK(={Ld4hyqlO^{Xe`*;vi zt?zpf6o7yj6CFy6o3p}T=0yt|^Lrqs*7k<5)#&(yKFz^Z4MaVo#e_hFdzrC>oI02> z3@Nir*t>y2QDPQ8l!iLYj-)R(@MRQ|+shmV>qD#ITeRjh; z9(Cc2J?YK%=HkG*4?C!*(Z-Lq*@?hViDf+sMGUYKHKFtV^Rc1>ik|0@VTk>NTBKc* zf0G0_mP)~MzD}Cn)g2H|E+uUZGOCA9`(b5K90=X#V0#3?>^teFvFiUI1PgtxMe7|L z=fyziUYe8XNgYPbDS&T2)#=Q~U8JIYSB#9-86Kq?^!!Rt_A3p7D?#`B8>KunpUx%= z=$=i}C@X{{#dkw=idzfjmY-;kOO1lemRFO(h74tV$pU_6EKaqTmevbtOY>h!s&#Ue zXedsGh??LO`?(kwH6zr~Ty&1K%$ZlZGyuhgG4i5{ z>lfT6)@fN`a(Ot-*Qab1V6GMqe?2v*a$*u+ywQo1*9j(q^bcq#Dzhx)R)ozT+2nR znQZ@L+6@X9uGD7i7O&mRb)2f{2uPCXT9{6%kY0YLk@DVH& zX18ixg`0ZUJ7VsW3}N5fhIZ9h`GBDkuKO9iGQ7{j%tQ=b`H^jrbv)aJ29ERvvw!S+ zhPcV|=;O#efg;_^sM5T36bTVxIVGhIH{tV$mhkTZmm&9JERC|4x7}b(W>fR*)SThQ z7w#esT^ApUG zQDh`h;XE$Oj5x5Ay#W3L_((t|IYZzX%oEM=2NZzW!Ez zx?5f=6bbq0OBc&zbyq6CFdzW#sp6>5+4$6{#UCQ*$SG@WfOrRovj^k{6G?x&8;6H)?EYnb&1En;pK1U!!kr7|f#22Qw_+Qbo7on3i#M zCD|C-(uhw-itFFMnm3RjKa%@WRDK=AEN?T+O>O>oeu-DV9{XqHJsQ_VDrwNxiY~VK ze@uk?B?mY?;)G5iW|gnOq*dke7ARv$ppZPcui`1MfR*gDLzG*-T&TEJbSCy8c^5x8 zS4Br3t*N<@t8OztU%Id6PMCp36j1x4Jk%`>YkH4Jb!IV+!#w`L)+5 z@5CIwDKEB-J&o*fY^~1QSpZ7xl9Zf3`UJK|h77@=p-r(((TGd#qf7Pg9CG~Imf~!E z(y{nLmnbyKsq+uK-+%vh6VX9pa|u#A3IN?FwLxi=J$!cltACBeC;w&NJb!xXv}QX=KX~o zHUj>3Cic53}-g`%>k~Y z( zEZRpQf0=#h%|x%3L;#(($_S-)6I{#h`KJaZdyv0qucjAaf6cCRdHy;)k|KswxgzZl z!8B|8zRfv@6|5t|;9wj|>OCGrDANmWD6E>)Rik-5dkXwkmy)gI+$J47sn>irzIjDJ zv)&5*V-!sJHz2%5xJ)BmlDLTZcp$yB?E;{lS}(aDe-4GbFnLluwZ|*%IL8dwM(NxM zSaqL^F8FOJJ764UrZRlhK%RJf!x-wUF+cx*<`E=Yho-8n$}y*#Ca6CHI+ZQ}r95Mz zQZ?PdZ$<`KU#@*C8-uQAY&r|=pl~X~P>~`4S5v5HmZ4!U~dtbEsFF}EJm(xsJGI5AW;&+|CO(~qI6rneaDL2G7 z^1?nZ^`t*T%%^&eP5^tLotb)lR5zt6kthivxZ6t-2G8icy>0HuE{=FafQW1g?Hj|}Z zwVm9BA!lXmT7?YKC8n9N(*xgP4#&}Ns;YU6#$O{XeD{8RP`GCwS|*b&=}69y#PIvcs(|IJQ1TW5eeO!cP3yl003DUt?Ey|Y5)jj~TZ)QO>{M7i>+`id zdvye>96wIt8IT?m&T#+qEhtA5#aQ+dxamq$RbDI)mvhqx+D{ z7>=^2fa*(cKD-j~s{b~bJ%OZ9PW%pf>@M>xewXfm=GO2EIMwmN0Ou*G{?g;K=>cv+ z5NNTlagCZBqNk9|fE*@{+$mKM;)aEo21;d_b6J>g?P`6uezgF-=;)$7hLTbG%u31N z*MvzalrqC5gd^MgkE#q|@6lD zf?D_lwt^xrZ7KS@P4e3$l9?GMXzGGF131~O>Nk>fg@;bPn4az_h1s;$HpOf#)}mA= z2RterOTZ&N$u1<+7qITcTWTaTNze)s&)+N)LQn2Y$4o+e)VWIb&)mcxpd5g^W`@P^-+i0CL4aUBm$p~1lx_a$AM$`6xSj|L)$;%+Rd=pz_E!WS zeL-V^pLTm_C%Biw}tpeBCX{`X{C=2Nw9u{d&&yE;6QOEMH|sXevuS1)(FMaFpczjzvI^qa!|`YXj^QtpfJyyCUqyR= zlVhmOTZ?C5(n)6X-U$KjKC-ryDFZ6m6s`KDeBSa@GQw;23@4+f`1wZwloaH7m8O1} z--_mUMK>$+J;jWdgK>~Yn<+^`VzJ7PbQS97JQk$eRvkm}ONccp<*SXEbdYYMvz_+G z@z1eR+v9oGsEM%YWvGllGmvTfY*~^soA;A3MoDx^{Iv!A9+)@gk?WE@khBRJ3{r+| zZ7+IsHOWQN&0v9-3^brFvv&mZ|hQ(-i?t!Lz|Rj9W1Ro zRffLpL_RDMvW2=}v}g1V7G45KIw__ScO@`CRm&Tk*L8svW1bvflk8ZaR8)>fQ z?9+C4TLx1+d!RgT@CY9n--ZjHT>xm_exeBNiIhTBb&kYzHVH7w^Gt4Jk$Tc6%bhLl&gFyR1YiF{RgdQ&+$j>@Dq{i>uMLNPl zoK--mZ9LNH(L84>jYuI0C>TFjI0+2x9P_03;%0jL?(vQyYB?hgNokme2dea))dboM z**=zEs%tg^&kDR!DrT+Urd%Fn;}EbPdPyXcrrM}--7=xhq$r+@NTY?r2gqBXTcb)a zW-KnT_4}C_zO#mqo{{>_Am9Hu68>B+``L1k-4(JFAPR(9zz{0)Me1ZkPG2k~$(iU- zQ~DM{0HK5J@daFT-i@;T*Y$#HagB?T26-<2z9vWyhn_Kz8PehN{gAZ!^51FAECejA zQj^bk4UPHuy=O)(SaKf{7YYi7^ah@hM$K`l2I*wc*V$2nJ{bLm^b(b^u_7?Xq zfMc)x$3wAnJCqnU`(Cc&q1g$$tHn&jH1%h7OwKsKDyfW5(}n4oUm_lHxMr?Q;`+2& zeD+`4(yV-&ehf`PEsJKs`e!<-X_VnvMee~TNBRS8Yx-hvzaiAW?DdA%E zr*oTN^*4vpvk9Z5iBnddwV+CKkX$3^oz*or``1KL#<{SiUTNNHl`@SIFWo2D$M9+a z=$GmeFq=lp<+#OqJBL0IRm)`X#I}%w-UZ(5*fZwDDh&!bJ`qZNl~rK|@*FLzKX zI|&J8z;u9?^v8V9z$poQ1Mpmd;a9J>ph|v=EuI2hf4!@QRV0X9P;^{Y0(+FL9x1Mh zPh%@hAq(iIu+-bcfbM#U19mMzg(07l1Q^PIH^23fhtu=Q^C{>S7x8oN>nln=cr$xA zq#3o<|8H?%vov(vu`n|v?~;<1rO_Ldrqo<}aK1n(j9s!8CLu>(M0q@xT+C`RHVXvK z-N~%xYlqjDm8pw_{)$4C8nU<}0sG+Mgt-#J+{pN!_9F44sRZI{H%fj^wFN26cWM!-CFDuyI+mo^BMG;5F_7j~7$GpQz@z|vU9NB0dp zTJ5oZ+^MAWyWQ7H#UlJAjp!{uOu_v$6?urWAyOsGcEe`7IjuP7=o2z+RcZu280Q7^I?VTSYM&&wh)S3xrL)DuO%)LekhhG( zjxWCJ{MJ@kERZYEOhL4a?nn{Pv~#cC2^s#_p%l~1LR)oiavM1qkm(Y11+yF{N9gGJ zsk;vqWPtJ0lmzCcUySopw9$WhuiRLN>~DQR=K}VnL+6j}vvw>}$8IWDC89JXniXAk zU*z}s;APz-s(T-s$BX%D_6L!IFC)k2M6}_hX^Q_g{_@;C5pNXAm(<&7EM&RoazXZ9 z02!9{dSaq0Mq!kfWt8gz>a=>Xt1Keg06a+xqtArs8}FZ)$&$E!f{KO<&)RT%E!1ro z-&nx#0?~zZ#sYDYdgT8>eKbv1&Eu_MFuF$iD4(nLs3iycqA(1~bgXTle+7YSSJ*VXQ9Xl*ba;$m=RYN7s!M0>p@N!iduhl zwCwr)aNj{l>jplXo0~7fvuS7%8E9i?XKri}2)n43D@=T+;S3eu`jwkbf>}&pepJ1^ zH6$7~C+I`@!%oy=#Wcay99h^j-8VyqRJEiT6d|L-8ssFQ*rj>w&brr%ro(UJ*^|*8 z1F4%3YW4pH+a5?{yU{;|%>8^=pZq4nAK_$hR|YI!QLwrt#pwp49>^z8PERup8XvTV zq?#Uf;r-`rv)o3GZ`aQfHp2_4?7C52@0!*E^fs|j!Z z`{&dS^n1TsYEL1A1ue{KJ}UysWL*2Ht$TL&8N&M=H)}VDuyqn#tR|>7PEdkB@Z4bd zN&Rc&8)m04IdYz?}S*0a5yUlP`v24`$Thu~f3%k!?b0U%5Jj{4r*{O-7-xb)~`>x|I zqoWGP?>DNk5*Z}{EtBMWoG7GD_^kUwvoZLe8dsP17QFX*EaMt4k-0R=eX^VeN=9^! zT$4L7mOX0ztUXG$o8a$w4E9~sgYe>|?=cs{1)5VHN$D`sL3ntUu_1twzE*G_$_rlp zW@rC@y}b*L!0ibPyk{LyGQMXuzN%my{95$SXrd|c33$m%5$a*^_y1Y*x9{PxJXKw8 zJOt?h9xNitu}yUr0`WP~e^ZaIhxfI1g3B!xprZ>{e)7so{Rs&P)f2>$?&1kyU9O_8 zZviUg!1P^{U-QZRbBdWs7TERGeF}xaoTcG0#(m7N%v-8Pg+#hZ7yXoK|w@J zgHV!5dS7M~-}e$CL=|Dy!hhWK7Y$4fXEW2p%fZFXc&tJuIW0@a=4qK#cAMq;*JjXQ zUYz;+i@E=Foq%2q_28%?Rs`ST&sePm3;HUCxk_;RU0WGy7htf~R;vu2 zVq+~+8V5TS5@85k<^lfe=wm?up|X#anXK0EX?Qr{ zBQ5K9AfnvzRD!+4yrYDhO7i063Jc^b3%`k?CaYL>W)VcZqFQV!Jk~i8=G~*9g3tWH z6|7G3oDJBpuE@=aAdR6vD!?k!T+Z!*6UxNiyyaHV=CjIa8lIP*!Ur3&%RCNkG) zp|7b*co2c7JqCcwERRR+DrAe!w?C2vIO1eX_QQikJ-#MI|yqIZnsKuhxR-PnOFXK%pYo2iK(k z-SdzFHbgOh6OiLx%R^F6jNJ{Uc;8UJDz8(ecH!jl#656}PnbR9;e|}zG11nnFr6$| zyzt$U2q^04GI3Y1m_ykCy7{&PS%qTC1js~HGh6>X*)S3$iBouF3@AzNNoyes4a(5a z;#~&Gg7un+I!q9PAY!vue2v@oYKtT8dS;ymEx0O9dXJA=Vch6p`*za_74`-!y08Zk zt56f6kqj)K`?uL4R9d-2Tt_{6buSnkJY5+*u9tYu{SWuLkf5bC9^c47KbF*d%TUri z`^nqFG4G@Sn2x=YQ?(R3x!7#DE({>iF2M7aI9-qkDCDq(On1K%txbgY)jOf(*#QJH z%}&$(A9Js8CRF!Nq=sglN1?}v0?WX=cm7CmnWgpS$-i)iV;Swm5#m{+FSEjwK(=?k zey0g6_ImR+P#_lb2=na;Ra!6t{(S_Cqf?EBLdGT=DhPi5OzV?8N7FU;fPu>sOYRoT zc=R}&)y$l~q~&s+jR4-pJ}%sONZ)O+5hwiXE?pgWNf+}EuOr(_F?ZIKLjy@~3|5NU zEDnRrjHB7$j-f`Zy6@h8nXDMqLH@mTqo5(Mc_fSexn~N)HdTs0)l9DlFdj4G*3_td z%{)M%Bu(PsF(sx#GDq!NVZ;+=`3p5RhfT)!c?8gt>~p2ZoUO|VWXbe(z}RSE8CH>x z7hp~s5sd0uouha7(;hn2S;U}|AJ+MQvc_)-pa5XPM<|2XzWRY=#C{N_S|ZqAJODE#+3oQ( z76MTQWC(j64PQCsgENY}H@ej`96=D7>$4*=?-K%iIM>1+!Vn?qo%*(u<9ihOdGIZ1N)SOXJZ>|!=$KcNVz8JJEh_6$7Ymo5|KN-z z_bq7<6m^A^`}VghE!$wHa|mja9oBopuw{Rsun*I*re7*HPPvaRd2}uI`g6;Xf@Z1+ zV!bYhx&f9Y2_Cy2WkRxrwuKZhRX2FE1ruEMC z@}6`vtW)U&D^#*1faU2u{ldRH;CJ7jyS>-%EUx z9^Y@S33V5R>FI2TD ziUo1onNtJwe0%h-qiYlT{f7i!kplak6Qxi84i)49jH#4o6Z;k2&Q3c5Kqzc}m9oc7 zUFF_xF&fwg!c%+ca$P{tfax*2q-27L+pQ4=RIY07-bVIgNP7^;ZwM+J7Y%PQL7czL z(UivN;yVi@kEODTsX-IE<04ZGK~M5MvzFLfw8z@uWcW1b(@f3@HX@c2oD@GCu& z(`EGPNVie!uT-fi{6TGGB;e#LJ{tcQnsgBwb?*jU|s?_Q68=9h4&@Mqi=zPYrUVE2-%K|Su6-v&U7x0{PMMxK8-*YpRE3uYx$dVau6RfeZH-4t(lK@jU8<- zqR>}my}t(HB((xDq?gRolPtXO7`l&|4NCS=MRb-*HWgvNSVYP-jUzAn)MlsR%4@mI zMzY<9CQCAge%&T$1!S6xOH{UvRqI(0K8>RI)lic?37n6QYP3~hYW=T!vCL1HZM8(2 ziy&dI(nyuZQ+z%_<|HgY6W%V(!HhNXZu{POuqlSTusF*^$2Z&CLa)xyHXeb$0u{3u zl}VSCE%`g;5282imla`~asFuu>@E2-dO(V0pK+3mqZ8r8F-lj6z2I=bOKWWTyG0?C zcJOePeviK@_IEe@P`j|=)A*v+rqJ)Z1#m@xPQHeeGxouPh@C3y;S<`SFZh^Q6ZyC! zduK=xbJa7prX$PkMlo%Au;H5xclhR4h3(gD`I8K26Vq)Dl>_|YMoG$44VPiZvlg9n zALmO#j7(N3i{_0}w{3%YeIw>Zc7T$e+$lA`ikES3Ap1hU>V@&tcZ0&+Kyv|O@OLYT zZ*`kSCUXWN?2VAy@Wp5erN&aYr$=HOM7x}a&vxWk_`VwlVkY5b4}Fq$8aC@70PgBq z5Gn}uviD-ZO*9xWm8I^*D3jCmgtqbqxt=&UydZrxmLN4DzT~PgR4BTWFtO z=V2aGCl}mYsBMp1)0NQ|i!7?8+<&X;t^F&|9WY zK`(bFnudQ=AE(eSkC0kC3Z;C0jA=oqB2&umWxJ5`+kof5=9ROsr6m+v_Smy0S@MhL z3-I3fVay>g?QozO=8k{jpw_w@QYO)g27ev!QWa}1LaGz&+DENUp zg56(z`Gow!$4A@V++ipyuvF-V9gPp^I~0@Z`9%&xhsnhVyRM;;IqakI6a9*M0>rzQ zuVNKe$DbHMy4{Kbw+`0lGhoG*-wBv1bhGYO)E{jkPukQ$U#mNTbg2mrli!BHH>Mhx zi*nZCtY_fcXlER1`DM=SYj(uMSqH;w`^aurkDCko602b0jK{_)C%;2`(kGgv zl<#0%jYokQ(Mom1*7SO>bh}K=W*0%26a}*nVeg5xziUDor41c~HA^;{X-wbY)kDJP z08rSVqkrVXC9L2fYsTmTT*y~Dx*=JA(c?4vu4v-{pF|fa4JO*;on_m2S2?z&wsSI7_k(GrqvN`@BQWJjwrQi%xOA{kYHBd8KtwCwUr5 z|0AO7ByZ%x4)37O&lJgiz;C{EZz^O_U?|;7e6*YN8rxom@01h+kGXQd01qjghNpyt@7_(C((86a$zm$oGx5FwcG?w)jcSn2Iovu)l-Wytm#3v;;IiV(P_`J&aF{Y z!tTHn{;z3b4t8(aY-y@heyr*sx-~hrK6GGN7-e4@pDg5^P`u|=4Fu1-8+-!x>rW1l z^$w{`WKG7AE7FAHa%&1ZRiL#$)0ZIQpRw!o0zsNN6iQf|B=N_%FzZe}mBM zLR~{msnSJaT4S@aCN4xEsn;1G{8QTX+@^O%6$=+3;G7H_pR;d{DV}yN23U2jqW;EGUj}3OeNM2u;wj>dng%i{2WezO^!Kpe;W?W$2EN z#0!h3sqLN+s{DDv0?!YyzBZ9-sjpm8?s>{aeGW)S+?I?J~+h%>$}G zxf-Z)LZ8@jb^1{NI~5iDzbW(m3niC)oZjn+wP!K}TQQi}TsNA}GN%qTnPoy>Ucd_Z z?$iBYjz3>sLF!=TQ9ajuu8efVaARj(i8%O2zr{!|1lG@iMePK^2*}H?_bGh)JizmE zYni{6XVv{Meku6&KfKQF>lr8fApO=4DiC%TrWl{AwJq{lj-9zD;wznSQ#SPp{}n=& zSXz}uN)eyx3A*j?utM4zZ=1Yr?*&xF&!mogb{~|++3Y7xFMr^N4PsZab($O?EVw42 z|HPNFuydvUC0gK0);GT!ZZkm!-1p+iZK(X(H z)px#7(`^$|FWP%F4iG%&U#OTwXhPYw2?@Z==dtVM89{a};>b*>z+J}Vs_vRN>{^;a zw!KEV5}^L>^Y?5Yk-$$atsjl7GI*wa(M6f+UP-k3#kGS1MRp@~PcM<4#1Isaz|l*w z^rzuImxrob(j;OXw+#A(ED8&s#YsQItmIFgnUsu30>0s%PawmoUPMQ>UjWZ;_g`KG zs)z{lJP8(9EkHqxPf*AtwcPXO(21N-{Ay2QVZ3d3W7G2W2>+AEP2;GSH$@l``YK_g z2!(UFm)ELxO-YtBaIX<}ZW&OEKs&z956;%U5;UFOdRou1wPDhnA}EmD zSPFo^Vh?8Dk~FtkB}yEm3}n{xZNJ{KSVYB!1DPF7LBf478D0-pfOz2e6Mp$ox84*P z@>Hucp@`sVp+)Pkwx->n?C^oaN_<}AA(#yq3@$y;HC`+m>@)Fne`R z_$y*hIvid=*$Z|Il$a+E-xQn1wt4EY3!T57BL*`|UKnrYgk5XB>!^5$%L^u92VYcZ zEx=xv$xm5|AqmFLk~r}_&KI~yXG%W8t%j|jZ0+8Gr{wGm@7;QV=M=Z1Qm4N`ApZP1 z(+w37fD-wXymaM|lr2m&^m^{A7h2u8S&Sq(OvM()QpL)vP(R#;$9UD~Z#r*TUi!if zy>ZLK>3S^Bw*>x8Mc*oWS0naMXO*mpYG^|WUNkJB$aDW-x%5PiPU9xs!`g1Z1_vynq~EC zN_-v~D+0hdZgsaWvx4kS{$5gOMIc7OrZ`cgp??|~PyKRb9Uj7x3{YVBr^kaZpaEOD)*3+uivT_f`4MnE@eB?fJU%D^f zRqiSGRX_llDW1V@c1RXKiO>c~aVkdXc={``t-0WxUnCjHt#71~~(a9WfW&YY#S zj?EK{>-$>}R^{%Vp;|+O;Hy(rRi!gIU;Tu^7*4g?L-PM}*yECspWnaa7olc%1P-Bv zwU{4=8iQuV>R$p>CG$8v86lJJ#i=HOanzG85ruCDbK=3jsZ_I} zNr~lHv%C|s2KUB;cn}Yg>Q0N&OZ>av0Mr0Pn)3nw4nSTpta72o|ezRDp2+#p@_v0tvKoZIr~nM0PIqE>2Ma5Co;~L&}7y zIo7{X#l;iwjeBjshhN``Ws7$E&|Cd+^4;b>03yFP?>kG$D5W!$1k%iiJb{H2LR*lkV+Bcy_0?{MghV=V)@Iql-T((r`W;b`tSuLiez91C}K$pXQyB{L&T5-tY6n;CqS|1xP zVOk54lP)pa_@zb|d7hFlu*KJ@4p%j2$y(4@tF5uMxL}2%bvG4_S;l+3!#4I$3XV~N8p&;y(PMLn~urngSd+P-m9`0g6Coostn4;a)s01!I=P>$57rKn|15^~Le?wj}1T$FN2J=h@-$dv{1wIp>GMcP`bu+V7h3|^U zP<$~1w1`gMmUBibq4a_IMryeG)n0Uc0qR%4_LWHs|AXl&&r{AfiRY@S@)PCNyBnb^p&?ya*hG4lFd`{d7mbW`cnJQ~U zw-UT3)92y@@QP7g`j_{YW^7R%7}k{-eyx0^3SEr;L`h>p8KZZjuBhgI0QOOWQVzd7 z>u++H@;aj}TPA+-ldbehWE7t}FSwgPh{XFZ0`e6K){I%RX4L`bEWllL@4YZuOHWFY zB+0+66prGn!6Au6+>M<^!6Y>7FVMMvV&xwW4dS9dMA=jI`+$jT16v@z^m;PdN=*Gy z5$!wtNvSBP<2INWbza@mzs6|TkX@-O!trh9RxGa&Ron<0gam6Fy2LXnh}@i-v2BO@ zj6V`wTvhtF(I2pRjV(A+#7*m~j;Vo58B~;fW++Yk@0LF!ny2J7luPb*fNd`a6#r z${Wb77?H;;%)EWOI1(F*Y$F+o`&qG4M11TDlQw!bOe?!p<5cAl9LigtUsUt_Et?jD zj5^|?8LlR%l58qj${28z7#axJH6|CrtT+Z~A#J_b(rGzGf&>W?1bfJR6Mq}6lv34X zQ)?x69-n%LL6go(rBZb5{nftuV%D5o;&Sk5+)H0akQ1HEblYeq+axln-Vd-(ot{38iD0RX{C|GmBcf0Bg% zK@0xd|5uTO|NV0RF8aSM|KUT{uSzk z&W$JQA>(<6V|S~Xw(jqfHix8VPGLc>!_%Hh@HJL|;;d}&s-${-d0EFaB)E?HW;?k; zj|+j}P0f^$Iw`{{S+<-mS4jPQR1t+*V{dfjFqbgI2ch%(d>QYv`6v?aU{*p5WQv4nnw|`{ z-?Mo1^N`W_#z*SYx zA60c!y#nho`JL&HfVBYxV5Dy}$ivy_@+|*NkR{^^_`%VFZFm<{+|OxV#9l5;Apjl! z8X)JznkbX?HPb1b-a97q5#>U-PNYj@Df?Y!bgw{M==7nSOs0N z&VzY#;wSrA^WYy@zNx2Yjcg5xprHaF*zR96$6$bMOr|ugdG}@|9cTRKM`m-^OSXm> zEX@cp-(x!+RT$K1l~rcCtwFiTXk17!V5_;INkj$3@SzwiU|D**+~#*zhWNQs|5FKY2~(5d&lkD=uhf_~zlukN zgLjc8HU{+O%pfP8glvLIVjt|l41EFKNU+$Ei!!Vz+Q0buFCnD@!N5RE3j&n}FY0H4 z{CA4gaLSzuPMog3M$K0?NPX8_$~-l_|2oH3im@#8fkfQMUb&;f?s* z?+cqom_rbrAd{OiA)#~q7mL5XrDZ%!(1a~%fAZBl{QrOfVz`R!OF_P&uXE^dusrR{ zYL2=75(5#F)T$WFrrZ|s*>Gn13D|;h)~EI++D{p_-G0gl%4-+a!cnskxb*$9j7_N@ z6?}pFT2t!t#G=SR*abmhKV>b4oR#KBHt&5R;c8G@^$!agg(F%lI2 z)EfZ$Q8VnYK_8Fruko{I_`wDIPbI*}ftamkPw`VBU+*9EyFB*Y<3x@hVS zV?KQb+cX}!H<9$kX$O1v_HhYtA^47KnxA7M-&CV4$!2ERwDQHw=ZeQrgrktQHn-FG zjQ@8FaFSJg*JG4ObAjj)j$PKon9|L>qBO#vL*)_KMhWJ*Z!m^em)e6*i)KDE{Z25 zcShQ;!_alB#p604R>vYX_Lw92DH(>gJ5Tt9>ZeLe)Wg=Jb0}x)3C+CxO)k%X|0ZhI zgPqvz+1imJ=YJh+SlU(DJad7JuAMP~u&sNXqZ9W+z3{bWaCM353E=BAwEs^HP~so8 z$UDQba4nY{2KZNUuFi6BXq66=VTQXoeL`=b-|UF*0^S!*Y>E>0-0Q(Ib3S&ePI&KvYml40eaBRp^*P>RHCkK9Iit^c@@ngRY^{8|wA|`_J{J zK5j$;iQTM7Q9b~ALpnr#_nr>%t@K-)FYb3Kd<-^+{U}mTLA46_mdG56#XPr&13^DN63KaEF(Rh@{;T z%7-!bvq$M#-?-8xoqA5ESK*k!JXAo9E?GA8rbsT3tX6S^UKu6W?~?4Ol97r)2a1y` z?WO9IvzTaFfxUp{y>ohk)4F!Y&u6*MM_4Wo;FR}7vq#uO4mjEdTji~rRF zMD=wDi-?7rp`9>BtVIeU%Hbxcx*BLmUz!sbIkKo6GalVAN2Uueg7jq$n*q@kB=z}o z+z^3k2aUcQ7q&4&3#daYB@9&xB9Fz7uAsuV#)5JzP5Ah-0{)#x$DSQ@Eqy*hG5SAf zfV4%7hT{Q{is>_Ifmu=LMYm2PBPX%wcU?zd-cO!QDN15AIx&C9w@epsX`$4Xbj;>$ zUoJjWG<#oJzI0U#97&6A{Oz@uEr-A>0dmRb<{XXxZc2Q;aQyEW;N|vaE@Gr_O1RES zCVSq!55MA@spP<;^dOxA&eUJbTCn}{{l&Qd{RrW z?jq~QwDQNflC*xo)f{yf0~KBirxkp6#|^0;Hfnxvp=zViemx$9MM01xgK_>UHD#ap z(ITqPA`yn;V!$K^Vh$E(6dY|;zBd@lH*af=NwXz1SJ(H3>fc&aHpcQhX^!Q~CIDA9vb&J|B+ zcPi?n*Frp;@I&qZoRQoLP&?mWd2W*;m3msmQ0*UwOCC0(1Al>|AW@H++!K z2ZLSIV8Pznqsjo4?Grg{kF1Kuu}24Ayn+okO!RRWS9|P{BlaxCULZ*E$qYP`(l=vf za9IiPrEP0XL|YFZxA`_6UX;byqivBHvN_4fJFJ#!BMtuR5m7jxna}-YLQIV{LZNtw zF>#dy%l08RZaY30yh1!&roQ@joZ)W{%{~JHP(5l!ZEE6Kb?Ld_1uRX0_OM7Gk35rN z5t7b?pdS3d=Dp{U{Jb;Ne*BL2-a>GN0$!KbUW^rpjZe3QO4+iib62S@pn7YB=1h0E z=~d;G_S$b)@iXqz+Ibu%{^{+VO6KjI&3g8=#Q1>W-m74Xj9fyqRu#5}3%6+!gjR-U>Hiis}#c&m}7K%EyyTNd0%EYm> z*EF&3RwZT&$i*&BA@gAR&Dlt_mqhOzSbl!*FU>kSOfgFmxIpU11{?Y8=5~$4OKTZv z*MZ5_thV_9Wg{hkfmh5*)(3QE{niJ)>PsyXK=`v&C}S?QSq}MRMU{eWM?mNb&N8x{ zTuUU!J%f|$+Ve7t)aQ#YcMbd>*%57q2q0ACw=m)4kMh=oUhO9`kMoB|P2n!nG^H)V zk2;&CRu2H-zyY}`P7VY*wofLDUOJWH&h~u(dK}paZHMl#tqPI8`*L9oh9~+qD5wk- zPszvG^L;Y+Xs8}tDvmcF&+yWE_#Z-xxr()&YZZ&;P??9wXHCfYh8lSMHB7=rOfNnP z^_QcgTv~SlEsj$P*=bl+9jiL6;nzk)3$7M_##}q_{CbdJ(d=rzOFlO}-iHuwBnuFm zEI?@7x#$q%+n7>;hEp{unV@NNNAAI4=8Pa3#dr`YHqHm0MjZ1+En41e>-sFm$_5C~ zll;fQMBC`SATXuHZc){)?X=%dbR=f9wJ&DwB^e8wd~~?s7XAn_9Hp(ah28A%NyU?K za8O{4Tr3bn7mqeFyaz6X7M34Bz)%i2qzuAILkL!DhX=?>{URXo>%;$bwc}`e0qzJq zv>Q}S9KPu({!b*(BFDKaz9D_TBja;9jhP)#l1LGkjn^|nC%I-n^I z3tF2G_QEOfE@hzj1Wo7a0IvAF%inEhxi%*3ku)xjB$M7dEn&hBqdzPv&h!@y#f|C< zsRn^Q<;vKIg>;d0uqzlBf+hUR54O22S-nxNMd`=*W+rb^qvQ;YM5SU&*+Y&Spmb`K?34^Ht(~@yn46*R0)5b$LvQ- zkEoeNp>+1bwj<0U0XvKkKe!aNcMG8915TUz16qO8gh;d}bd3e3JArNk3i$QoAi^Hd zl9kJYx07`~_mm-u^WykeJFK6&l+yvYq~k!AVWe}lKT_{~UHM_929YU9*93Th8I4+M zi$HKYBNeZamkg_Xs6{Q}2MIL6J_Z(ZJy3+R$f zHD;KsW>{L>fXmXqy^|wosgNN1^o)QEbrY1jON{1~1}a8r;iiZcpLSgLOYD{p?GEFy_0ZbXurp=VvK;}jX~dvkrZN=E3}~@L$zGgMQHRRTtv^H ztt(pAAyI+_jsyL~OIn!7rs(wVZ5KPu^n20+`UoiT4-$X=7KA@G+B{3=F*TJDDLPR- zZaHPxF;Pq8d&0$$w;Ag^*1t#6Y-ftC_FR4!Q8DLU%G!&5|3%#tQ|Yjo=v8L2)YM?T zlQyM-#XkX1f^JJ=r3-YQs?Y?75 ze{T4`oI@TQ!UAtA6US|qtIG1PqCmS6;oYzqACR0@fBB{jIl&x?V`_>cV4m=*kFBoT z^58s6k%=v@pV^bS`BDyxI#68 zSTKixN*fGhqI@v15p4ufK&=fuXZ&hoVl-X`J#Ezd(N1UTNu|DkDFOjBQtZz=AR@L$&t+6jpj!tJ0ju$AFsper4ZS+AN&ZBX(`k_a0Z zpf7@4IxYh!^b#lD6|2*O_|V$A(LIw}h?)XZd|~l&B0e!3E8cldhzH{kIvc`vbs} zxuI#q_r#k&PKSHo3iBc(k%KUNcJ}^e?#i>11!e1Z@D6g_U0r@`c*dvdHdm8>*dBVx>i%x3h-$@j9rvJX3o3dh~Z z+b$2=D%X_dy>Q*sDTBF?1sFfj7C$f_{#*I~qy~n`Hl}9!e;n`bYZ|s^i3BbXIgk-J zfFh!AYa(J7a6>%6_30t5shdIZX>#!`f;VIrA=68+{!6T<>Ax~|M(%|y+tSoS^v(Tj`X_IdQ zLbSu|G^Z})KmT6ZF6e=C#?QPA45x~|G@(Rdw*6Nst zj{@^oIlp{lM5zMXnl;*4NGlw^p#NMSYqfv&Rg$V{7^3(SDuK1B8)7gj7&3$H$Rr8Y zPRf2?dPD&86|vMMvV@{ufB|(`6`$Uh6qYmBaY@QI5i z`ilH}B`&vN9yC_lTl2Mknzb0gZLF~MA9k^Cl81%xFH-|-s zCm;y1oKKefx~DcP+j}MkMOWhFA|Z+@vrhW2#EYUcXW|T1*qiGXI7oO@g_TDPN}c$e z?I!-wi>_8-S?ngT*Le)%m^gD3B(}GK+erM(2IPn|b7X?ViI-xdaRb4}9Gxf5cwPva zeKY7eBADjwLWxb=pISGVN9QUHDI{M+5RPYINf8T8V~Q|onx9m1`+HEQcZ<+U}(^~!({Du0_rOE&;5x!(he`fEhUUq^^Jha#ch4057 z>NFBU^6Ou1YBh7_yc+l)M%eh!!z)3hv5k37g|D~89l+~~oRw=3Hl%>~NP|MSeOEg4 zzV>-?OY_t6yENVLC~AZ$$!PGj9@bZ;pjc2*5?i{^-yIl)?ZON-3oTub0JKBVzp}9B zmK%=d`4#prUC{N-L%7fv|0S#p5w03UN{Zf^Hr__mGha2YY<}78JnM5 zKDUQs%R%9C9+PhTEx_b>NcbC0plYod>a?(C3V{AM~tYk%X~HD5ES2@Bb}08FJ!uv6Vx(adgf6B4rVQOCdo{xZ6@so5S9|Jf*Erj)djx^AxmP%gVgt@uvLv%-Q}UDRc})TX8uG~aZ}nppx3#K4@WuqG zDVOgK9XO&gZ>xsJ)8SS_IJ4UdEf2jv5B9&Aoh1~FRd9;H2_e1@<6%WGWnp|x+(nvj z>9+>d1i{64AIk2@nCk=(2ijmMpWRvoQrE&vDKmBH^xu`jRZ;Ku>kEdLN}6oUmBo&@ zJf20XhO(iZHbOXHv46n+RFk2oHI7d7?vp(ZTuExA-QIDrkfzE*gGAY;5+z2x()&(b zIQ)?)UTv=*S;ZHXIBcA~A1RlWWf|DRO5VWtETJxN&;Ry%A29o@yEJTh>m%hL=nAIV zbdXevVXGyipPRpqc#bl}mwSNK9Q$xtnE|$F*g+2>v>p_6&&zlG2G~ae6KjbML9uX| zDsf6Bem$2$;coZEXkZWWXSn{eXA9CmedOOo2<_*S@pRIIqJplW>+#v8s}oIyn<19n zld(~d`yMB)nwz|&g4FV=n|S79^@S2H_Tf0S(5`a5_#F9zCU>RCSsCB&!!6t}mQwrR z{3)WyD>G(IM};o*bd3f^if9gvTaQ67*xYjN<(hrwh)P08@FV4-{QVt$!&2B5{Wm62 z)d&&{9caliQ-bJ6N5$;o;9V)z{R-v4T(EE&Ac<(xW=qgU164G}3Jj0ZGxQ%SfhQIQ zjH)C|2zQ^`qT${Qy68B(ZbuqIdM>(YjPYVr^(?|^3}c>HY7e!QhSr~Ds#$_t9{EVS z03%GSnpG&=FRSs9{h6N3KNSRh+jjhn!o43Vz})$@tFZ+stGh-sS)tdZRqguge>;0k zcz)+Wm+mFn9sU&kLQwJ3vzu-~&lx78&GGfV3g1e~D96}(e`U>Jb8?lgn7XWqYPNw$ z1b|Gi7Bag36Grbdv|2#?jbHmG8Bb`rTQVMTqSmPwx=vI_b*WZ!Yi2dHDpgT&2B#ud z2Hr_nE7`w?+4d()M67_2tL*f(wKoJ?DvDwII;+ugA(Y?4a`rO8NwN#T7%*!dWb6Zr z5@6Ly?zjmG@?RlQ*$HmsxgA@?tfVulRucUoXbiz|4X1(<`O>SQ-pd6A4~SAN@AM7u zuHrWaV7(pW03^K35N&h3eB4y(Cma69?#F0qh^)8KIs6Qq*093oNfs>YC*n}tYqiQ2 zW=^yLTYZ6~CBSL~umd$f*@XHcqp@UHo5{#gUGJ3YANsaZVV6LWC#Wc;(=1Gt`es;e z^i+}6`JMyRiPTzfu=OfT*J=(fripnUy_H_)a2-WhYO!ItkZza`No_+g+6S{FQ~*q- zo}iOcE70Rwc!U$03P%e)Z0xPLZg&QB*v*R2?GRdcnXwmf%A>e!a!Q?vQi;0@eKc$y zZPSo}#7S^UMIM#!?mXwH8p-jBVC0$pcRnZug=4e2AJN5}mF%r2(USC9PZP$B$K}J% z)c_~((7!MdW`O_c#4{vn1y%QnQx5iLN@$TW**1Z;2E2h43k@c{8oeUPIOVc3_9WPG*3u-*>>w|bR0Sl6A>BGJ&1o4LqkYUuI3hi zS8$%1fp@9cq>pM-1!c@ODtR&H|Fz@1AmLvgp@mBQDWmOp%C)Kr-~2VEVt>;!+3HT> zT+HBkXxz|Bdp3VH4?iK_EMXUJoF?4K@gOZlR}f^_<7G)jG<26)*cTicIvpQpp{DpuWuX@-NtpBbhRr@ZuI!P?W`EB%IUPWMe8F3k1 zu5LrVKtfYveYg%PG6HXIHyr0U;G^L@(fxSW4!2_r{Q4=ELer!#&T}!-hWHyXAp1l| ztVe2Q{Dd6KePe3t?FnlbIHF5b99Hr?N6^Z;1QCvxha`#58nTgxJ>uA+LY-`+1}k|J z%1}5usVMjXtNZ9#!ISdYWba-$B_u3R)Maw0n*cz4$M1qvl##NtS9=iQn|GK?s@aEj zvlE2Yx!R4BvWZok&Dvvy9yL@L=jlE-c~LHI-?$=xCdbf*!|lK}v^XsD;i&NZ^fgc{ z84K_+UQ-VUIhqw5<8Ca9>RlPDUdl29202%~xq`d298xlC=JCZCtHDKf5|~69PHN1s zyBzOJf7gEsVH7`H;?d)|%>SVfBAoslhTi~RHUv>`rN}mH;&(r|gEKOFmNe+>w2%-ig7~ z64{+T*dI$rjM{cj7{42cS|gF4rb~-4&1s9TW#@@KZFcGd*q1I}9>RE&d$p>{>O&kY^CDyI z7YI(LLj@%X)c)2*I!Aeub667MbLbPq?KRZ<>xPxwQC3KG&^_|QA)93G%8&??`xJ%bu>22vIxFX@YBg| zMOZ#5W(7kRlgtW|Dt;l}QlV(C&L(nn%x!HGpDIgo-PinJc?vxPVyrkIEMpKQzCn8x zoF&RzL;KP57`1$*+wch8lm~aogHxSOvNHKltjFYd&c7uI2L22T#R^t1in3gQt&d|_ z2*MIKO_3&$ZWph_8h)(*b%SGYNNj)yBd5)RV^+*}fUW9>90dGt`rb^ri>ad!uPhuz z#Q2|Ja8zQmBJ1kd`-hmeN_{3S?%twtFl#0M2<|K7jdCh~kVE8zfAv-JN7}@YQ8k0&L4$pMG*H4&Vf- zYtof3xeL1JL^pRW-X7$ePHCcmjQQB;&tikk0ff^43+uAcNsjd}5BYumSj17%EBDtqWSaxUc%Kku3=h-rXlJFv(Z#}?*rXi6i0{O{J$Mic}1$J$)=^wU7Q`mu8 zClS08_zMqjz(HsGuh=Uw zk#_he&HeS6nLiL~M%Wl@AJ&b7+odkeS?Kq70UYl(aunyMajd^?)Vs}z^y1Bk1amwT z4^R9(tZh$A;2mCXqw8CRoz9RUc~>XK6$@&8SVX*Y_{@QY?BeZe*_cJ6A*w+jSIa81 zn2dP15Kb@4`3Xe30%-XW@Z=fUW`s~D+hC_nE@FlSoinj?WI3?F-J-BQq`B1s0wT~U zKDJ`_u;ydwHIj2eXsfW+n^i2F&N|T-Nu?m}XU8=&8f>v~de{vR9B1QV(u1ZI zDvGl|P5n6TndNP9iXY1S-Y78WyY|6DE{gtC?u_?BoW2ZQ%*|?F5D(^`?9obycX9JL z^R{xGf={&3QM|T}?lS-%di>SG)GLipKQ1aL!jqYuZr(37Dd*4B!MeDpNfMxv?%5{J z@ZaUidw+W-#_*6(t<8ijo#Kh1@5KhDkm*Xl5D%HutdJOPF~t3S+r)kufb1xXeR1|; z?3_9(G5Cp-OsO|oEXX*=;lA@fN) z!PbL_D3Us1vlA~^xr!4?tN@6%%D@~mLyI)WZfn~^1K}3TK)rNVGA<%T7bcFN^| zOb*Ju<@3@-GOKN-!@&KYbzi@()wOYsbCK&?snABO_Qmm&a@wk}#s?`~$An;QU#Y-m zNlsiVofmFS1QrdGDj$)?mm2Q)y!A;j)$+9A1@S#bFR|O77la;_&GlrI+h~>M6i2bW zAw_a1*%Vo$XZv(f?b?35Ix3v)P8QAzur*SAk~ZCN#7bR6DR#3?i+ zY^}5Ci#)Iob;*`!>wOO=n3ZdPacLMGGB|Un>Fo;R3$E^9wuHk2d=#HUO03Vyh`ve9qBvN4Up>uv#=-Kw!!4-wGJmDIce~hY$k}* z*>^Q*uY$|=0QCb3H3p!>1BPt+8KnbaA>+pvhq6ste4(HSn2)I9ODEh+ zqPW6Ud~l(k;x^ah6ICkd7E^bN%K=F`ZOfAW^VU5xjA`t_d4O(cx12J#HlWHV9*HaV zUuv#n9IaPH=Y)7#i&G{bBKU;}tXLI>k>$8LTU+H|Y!dgDs=^j3B!za+ll&ueqBPQ> zw3w84cF`43K0ei&x?U9CqJ*1-}A64rSo*ywr-{MY%DD0@*~`m+>DR zvkFy$ltr>V!hZr`>E(W&Opxy`l!&+Jt}(>uQFLBgJ#OS)EkUt5-u#vC9fqQ0#FZ{D zA>u>Kh*qBZkZN6H*J7wvL&J|!DM&8tu;lmJcXroBR%TWt=t2pHG9HtI zQEyN@r>i=AB;Z2h&4>8f*zg}b%Dw0|g#Q-l7g2(MZ6LU{;z=KV4ccR0{0meBou@lKmkf+IM7<*gwZ=m@2j z!)#d$1`hCbD`yFpq!aoz6rg6FcC+wYuu9-$yu>7AQkSSEuF;W`yvvPGC?)Ff znSs=e7TF_&&s+^zTkKc<_m`<5EQ9KWecZx{h}$%uK*NK6RJ-m9B})O_sx?_ASUfuT zr-3k*qS;EsnEP@vE~%F{ssiQ?zVq9AnR-2qZ4}8*LTdPp1H3xFoMnVxe?ABA%)ZB9 zI~0u4s)EQ7Ez^RCmH+^U(85`FRfumj#eVA^<_pPls^dpmbNt)QPw(MPr(<#fUu!FR zNmZL<;apLLajKj#4S@xj=?eb_E>t^GjsS#pN(0ZP^R{G07|bujNEomV128xTD#7R- zRDzN(rt}SxhR0a>?P$;$U>914X^IlhCIpISlQERjf+7aPk2?Pp?ZtWuv%pa=&Vy%| zJIIcAZODt~J(OTPY_Js|kn46ATPCeCj12r^5Kl9A>#^kCmT=h#B}fZ0s`^NPySgeH zp5>6=T01AWeIc&0xD&lwATb@xuCc&e7h!9ebMCjwt{ByF=G2Kq7BI0k02eU{Ts1N! zBNc4|$8pIkYE;1H69LEJr*Qjqq7S!DK*M6WMQa`i5Py%x1qmvc`IoSo*C z;GBigr5J9pLWvS2NUAFvubQgq=g*%$cSj1_UX)~z@-NAHezuaWsKo(sKm+Hz;iC=LHjiU(!~-EV5BS$R2yyN`AgwyVa{6hpB-xu;LuG zrp?3`P?wOUHJQ;7jn{~UStA2@0m2--=mjWsVHGf%06t19)%5$Inb+-0cUJ95E%jdY zsY*;ERFXvD0{S2ZyDk(7pm^-NL%3t-Jn*xD4Y))d5ARawiWCZpJ&|d5kk!O5pU$0> zxw{g7M=RvE_0)xRf?D#8M_k=sIaR4hyN^2`_zK`EhBA1T+lzqyNF(}XBeDAN6(Y8u zF+&xb55UO4x&8s&?OmU*i&hDt!~`QO-a|_Pe9_)0n%fJk9EFe6-%+`sSum1$hk;jx ze4LMq*Qhg!D*t~@;828so#{7>8qbS8rQr4*HEJ0B4G32TCU6R-E7opQLPw=AO$^Vk zfTIL-I7o?yjOV#MMZL2GPtcS5xR~1OOK;Yu<|lFVWgPGH_B&_PYuTX3k}Q~;aX)3) z30H7eR)RO65Nc1Swq%gK6$VqiA_)I-wQY*7VGQSIH0Fde9RR5p2A9o3;tmGdhJ>As zi<8JX5tq5T^JN2?K#+0_dJB{;&%WRDuuf|=;1a4a?Yn3O5)fa`m*dK9lXSWSY=0m6 z!>;UGxS{0TC3~p6OiT}C_n0r4yWezVK&g#Jtx5SG?tDo=Sk{0}Vo~6mffPD5k11%a zgC*8SY`~S(?|`7$R%%LI4~-IYn3b~R!(zIt@IUaBw_w7(ez)k(5+9O>d=;rT%5_ZQ zqo`iaq&yXXB@$7zScpxdp|Xns0ykss?@a1hmD_KTi@~o2fly>xmT=4dP|7j3 z_*2~xAMMB*oGK_z#g!h?C@#(wOD(HG1h%Wpkc|lCrCb4Vny@ZkYJ1D!hzcmCN50gZk^cK=D&UPc}y5aDO_tRg<~);q?#E7UBxnK+q(r@X4sXo|W+0$s6Y2)1Aqi5TC5+^~>6`yF&k^0 z{^Jp;+4LVBaAf9P2sw4xcFvFi{>*mfusX{_=1l-`0xYw7nEE3jaM1aFnVaiL0*_k|6g&-oi0VsL@=c<;IEE6JpIos4Dms3jZh(J8Ib~FeH`K&%pBo~Jqz7vKx+ak ztzGOZ3pf%-)TGtKZf$-mFGhn+<{>%fw(1YdY6*)^yE79K3Ke~RcVlR~+V%A*=-^wB zVHZ}@S9DYA@`Z%S{?kjY8CggNRWLbHUPj#u1S2ZffhhD{S|Za#zODAz$Nx51JIF%T1V!ga?kT zm>|rKe_d4NFC}5iSZ{`sMp@k(bUQsOLdrBo_VW>(j9Rbz{R@6<0N1(#P&>@ za-u}eFI=SCqjb}V&~pQaF4JkJWsB4&y|$^VHKu?mL5@^h1SOMM^z|mDK`TyB`V48L z=eSng^7dW_H4Y$~4A1Z%kWisPG3NJK^l43P^3%sH7do~2tku!8?Kd8I#gZJ*YuIKzD;dZ_pWk%@kV81;B_KhhEHeyR=+Y6+mR`s`f!UL8 z70aGV3BettXJ?EO&_@?qB=r?lmbVH z>CNqC65<(lr_d=MWSdguRQwGnnFrwW-Ct9Ttq-V)^aYncY(OuQ z9hk`i56_ThFAUQ>=mefm+uD5*i6TBlaYpO&vinA6qS`v$Yzr25=s~_%)|a)ZFOy7^)Nb35jsuk5Lm3arN3)!P zz1G~D`@|moA{+f^Hq$=Bz+HSf@@oclziK*&%oRNK#T>tWW;`EGz8w{!4nFxcik@fK zO=_xc%xKo{$T}>g#*l-c`$pH5I)Xz*wp6Y2y+2R=hFy z%$h_SNM90A>jDF=i$5`9O647oR+YP-gfi3#sA8DDOjDV+JeKz95>rbU><19ELaRpg z{}~-j@(VzQD#Mefp1uY5;Fh=nudy}E0t4iYd!&AoYhKPsczA#{WXaXGM3SRV&aNAw zN&M>>JHGPOpdDTuq&5hv{Nu8ay!UD`XwkC!rgSt9r7M|M2+>_!2{B6-kBs0%B+YtT z`WeUtM!lK{)m%_q>M|X&4uXYi@t8!R3{_tMcB43Zx}ZWQ+!`b5E>U3_h4k~&*J0Ta zG-G=!MK@P5?H6^3-03!G6gPk&qsXQSciHC9h4e$T(3nKe9#ckWNZWTrT341`V-mrz zCDom5)wOt4rf2VevCj0~x4#?N+$7yG;0(y(0V8p|X85=EGM*m#M3r?Y45_+ z^g}BRxGQH!eR>3jP6kdrg&3L*lxf(CxzXN^=xJ17{I;v(idQ_ADT3F|Wa1?*XW9f4 zx32aRq1%x_xhUb8?W|>&&eOKGEDVJI6kMqmCj+)0Vv?gm$XI%M8=Oxv5CZ!4%c|qh zXr3B}RE3#VExAGzWM|IYLu@C78%4Bibz;}{m-a~Lz?D%P(!n$qh{V}e*t*4$^mH|oh9YqP&L-y4G zKycP#2H(+slIK5>!-kKo+cK(Tz}QRd=Jnq&v+|cfH<{~@>wW2&2kzp)=foD<530@}h(zgS#8dDrH zZRDMI^Ig@Eg5wynRV?Kt9&JW&Y3hX==@rAZL=n;5vV7KwmQA>AGBmS{LRdJi8i)k` zkFAe>9Ys^73y+RMpKUS%X7mEJH;rGJ#V%1a)2GfI}_! zhqVzgsPHMg6|3_xzar0MxWbc-6kvATxq;%+Vtt7@rlg zXWBOxkf%@JVN{xATVu0+ddL(@P$LWpHDA0tFG&RvT z((SQL-9JuZO-df7Bd&8oWEJ;8x>>U6Mp$sKG(HZ0=mJKaeZ(0BeT?0ZWGw!ky%-0y zgcUXJTWH9!EAx+9qa>9JCq96Ne33zJ){7^w7C{HRJ3hIKs@s-Y&+O5igyL}~%nt|S zz0ucg_;jcTNLElg#3MmG8lAfx-BtDrv((q@C?gs*i-FyGA};S3#6YnQk&;H4nFd)& z=H8s=e2c-1QTVr)@guubv1hlFu?vjL+5?#%RDkEtm1D>&IG3n#Fh+7yasUg{K3zP` zY;=`ZjhIn)nJpOX9C@+vKv?_3x~7R=cq$L6qy>7D2IZAp@;?{)`RKR9h_ei?a`}*- z>r_wprBAiMnSv{$?(AlvfC>EaIJy+CP7m-;5jdo0?pt6I*!nX#(v04_?`_H|Ulq@V zj7R-&Asb4i_iFxiKKSqCtK^2*QaCbH7nPl>Yo?*T6o7H`a`&8pF7X$NsOs)8Wt?G# zHTluL68y))fFG1OysqRR3NS$V5VVwg&gR9ksPjL{J|Wu7hx8SBJXL*)+$$)+mN6F& zYY3zH#%nf{pT$Z8k|;%@PmwanI%49hFwOm)Yw7n(gFfsI%!F-sct1Y7R2{Co!N^e^ z2iDiY)P11*H!4Z~@krU%tgGmK-KZD2LK%7t z3lf$NjZdY1APzKDypJd<=)s3!H{B&CpK0Ct^O?|-xu`j|CAk{$22D8@RbsY>Gxxf)8!B>D@ZJM@%DOK<*C`&)t<7Ic(!k#GqMAT-tC zEDBgM9{>z)okb&Hi7|#a(`Ydx19dAVcV$drmj5kW=>zz106lxH_4gr$_l;J%@yv z9T_*c4n|=6wY#L?EYG3T^xzyTs9W~^j-yIiQYm@jvYp7% z4LoS=uf3X+t;Zq$Y_{#4R21_t829iOnvpr_DdvdjDnS!VVMrLpUf(1b1l6 z99_L8ZolPklCJe(;PeI*mZMhxe}W3XkUZ0eUmRBkGMor*D=?ZX5u19-;D0PwdnXPP zX=~g1b3LASV0D!NM4?%p&2&YC-yK-lX$ou(@fsFZZvwH;^a}a77SjG>-?5uLs>1aj zLN1F%ps@|LGahWtIC=1AJ)=QG2~r`{%uY{PKsG6;sM%|xKx!xil|%{v^hZ2j+ffM! z%0bdXC??hw2tuF>vJPg8YgB+nwL|WD zw$IslTBMGzoGFzQZU2ZRaqk`yA!!V<6Py8_UUtf*cehk{_X(hHbyA*`^Q=(!CgD0G zGe_b-8(Db^i`<`NYM~EkBJsbdODmk~^z%UqzW{q1`k8ivhX#HvVl+&`g-$8{I|XZMJ1RP50@TiL=+rKmAf79U{N*2 z%e2rz1k;OiG$>9(_%p}?D9i^gdu^}Ln3;pIT`TLx%2DMt;RWoew5&xTIxA$To<5nL z^P2d2(7Xv(-H?A`ApLQ~T|3LFDm)~`f8q@_`go-w$okjKG?{?eTX|0d!{K+f`SO~< zKerJ{;I_D_U1G+N-&3F@W%otgc-F>VH7E(S|= z?iYY3k|=&;V+sTu zQ{s|l1mJWUC18Kb&(fMnU2!cUfA73r1Lv^o$ktW*xtS}w4BIal2$#|2&_6?P_S|$i zc^(5DZ&5hs~O*+nCU|6^G#V3UkmT0rydoQh?dzwsFmz`Y$VA}V(4#9$6l11bX}!xTTWA0 zd5lDIIxdQP48~f&Zb{R0@$CDHR4TQFM{S30-I5s|xb7OoV36vi2HcWKB$7!al1U_z zNhFd|AtiO(ikoz4K~|COoNtm4WDNFOf)z% z?@$QTbK_P>%8XW`=E_~}zly6Ssn*R6C*%}16(W%0sg8=jx`PEb z4rqmoWVmv@GnTO=>}-RU6PIv2V@TI^dbuvEN~nIxPJRDE6p#LP6eX zw%a134R#Fi28x~yvpOU;CIeumJ|q|KL5d>RQG7tv&<*EpM>Bpz$oyq_IdlQbtmN+U z6p0aDvL4QN3u7I2?jyKzy!{8$WVDYG9*1HKylFE$IH&bAIzwP*q{|NG zv#w)0ZA8xCfJ;r^4~{IzpC(athndH6RR9%`0r*GCq;q)k*{UEMO@9;RI<0iN@Vyac| z-8Co7@O527B`y8semVeE-P58}J)q+o!PbA~wFELD%Ei?iJb&Y0J^%06P8Y|ETQ7>MZ)}xUB82<=PH_xH53{e$8aKPt-PR-I=Go znGCkTuYG3-rN1I+)>BgNthw-xME#&}Fv9tJTE`X)6$ra6h%#tXJaoP{u2!PH5e0@tv+_T|4adQFC+qhR{qhP(NboWjMSc4qiPli>J2WLO6*j zuwQY{Ahy;>M{ekYB@XStvCn0F2f5*dRu56t9&NvaR&Vv3k%by)qWbxAUDtz{o z4Qc3`SkxUK7+C(wETI=bs=CuVS6*RBJ!|^_-g1grENlvCd7ViZSvAz@d#|BRC)kH9 zeO$3iqjOHMmu1FjJej^$Y`hkfIl){CTul*LL{z8Mhxrfd&d6KL&Y0%5 zW@UH(H6k;X6d9>VFB)bSzwJvFk$89IOGgkW-y#Mj+SK)lNArI8GY+yj*x0mbG1FBZqqTNXqjf9jx3)bMFe~h z(pD+Kd_xqs{k#HG+{TC?qd-8Zyhlwp{PMnm$Nr#fT%Ql@Oy`+`o}ygsY*F;Fx-TL6 z%2h&dh>cLofbsNQfGNng=QF53DE+=;jUq>=FI@&)1;9R1r`ohA#Z;_ge4w;d_MISs zFJ|m6Mx$A*-tkYY5($Fqt`CHz8#_L7NHm9Z1@l*O5)*G$9cN2~2}=eMOEWB>>bmB+ ze8_V^CFCWYIx@p^p}~|Q^tA&=!$D5+U7Q#4?5UM%uR-)*^Y(ZBpqM*%AKKBW&3nUu zRXzDCtwpQ!xHm3Fp5za-LRnrIGaXc2UaZm1dfU}kW`%S;xG9pGgy6Tcu3ow<+&#b7 zUa2F7bKlx^=qp=*0_miWqdg9(IU{6h1=rrbnncD?1$KhL_3t)bX3!{*laWm!+|Jtx zwCrYM4`Ghg#X4bWew{s<&m_iQHsZ{+skhp<0f-EvEye;fSQ%>cg#NVgO+c?+nzj5I(1i zWq&O}3EFNksRkN&0=j^j4o{zgento=`vqv6tdhgNv*Rp!TO)& zwtKw0Iv}@~cr+@Pd>LdwR<_|H?3r;|+@Ft&N8(C7H=Wpb5GwQA zEqQrr-O0Fwlr(q^T4Xe6yux2rrH@kAkBj9h+DD(E{QStW2jvdq?t`akr2LXwsIssT zo6um|&^JU{={Eet26e)e!gB9JKAQz_+mq#3`E>@4g?{?2wN3Y}S2~ai%ansJyG-XS zxtjM4JWkKh*m7Sdt#N1sB4>*T7QC1_J&{D&{Z#jJ@Xz6ocSv;ayvwlcnaS25D0v>J ztPz}gUO<8!#62l zs&;ICyT7&4z`_ywrZo~Us2qY9#NR=(Pxfbz4wW>1FA=TUE#^-QS{>-VsOm)gee=Yn zsBP@_{S?jm!c2EG3(SI1W(lTxw_<hl>UO5%42mvt%4AsNRYAPYda| zQ}pmxA9_2bYmN(sYCTEL7$H(#>g_r>1|o*Qy4h{;9im3hSr;rm{($?r9L+Ek6BmbS zDI#4=6wG=`EwZ+)n5lxxO3_^u51PVLg=EM~U#0$|YiehPw8ijNbzy%bZTz1S1Q zS)+v6AmPi=^y|)l6YB18Dj_cuZh)n;v!Y8i;3zL&N`HFr^(Wa@33Yu{6*IQUA*NAq zbEzH(hf|BJ?jyx6HU!RZ$FQ>b?isEcFx{_1Lon%3F=<8xA5Pz1AkMlQi&JaA2(UuR zLBCcr-J$M?y8K0KIzyz+Wkqw12TO&}dll!NaB3^Ofgn%Z%W#2VVE=4HtF-n7=oWqL z@o21L3T?n}>KueHd72e%iQgaf28r@IC11E_LbG{~wijcN(#8Y>MKWj6%qj@HVGGYP z3?F=L8B3+}(~Ii*?~B8BY;XpRcd!0=fsX^yDL=28M7zraF8p>+&|WIgL@-SgrwQ_% z&+#^qCP@QlJX&oe*_F?b_s8=MmW`Zq)emwkCCCbo6ULVKC-{n{eTJw;B0MYjA5wb1 z8hrUi9Qqp)LG_fb+PR$CJP2JH^jDMk{)<@%Cmh)IW#()@Ple!BjB z*EEvaXe2Vdx3GgHRt7AL87-Yh>OG`LLk@S*V5lxQL-cZ7U%DAfj*7^nN>ux+{4QPM zNqIFvgB(fR4oEM>vJFTpn97YGzeGWJjwc&rU2R4ZckYYxV33N`OeZP0TgGZ9Zcnys z?4@KsMnOKTLHmtY>?gTF zO;rgUZ0kdx7oDB-6p$?6$b2Ijmx>>jfoX4r@#WtE4y6_tx7o+)7!^K{1B{jcGZ0Qk zKT7aV1Z5|MYMGJf^UhOv7p7|rgR-YDz zJJsFDZIk8>ds6&@k*`qHZs2=Vz)+?mfd?#ONNCIew=A=mbBbZox!JiTsHndnZjZ7} zfPezqs|7d}SlO5!JlbK*RJy|saSiYeoZ&8dj^iRIwHZ~X>;}59(+ncVb~ZGQEU1(w zZge~f5oA}g{5Opx?`oHaWN>u55ts~m<7?Wx3oard5~9uCtufN)L1z{+E%i@&uGns$>A z1x-qHm2N+*D^tu9GlGCbgJ!og@qbt$MrP(2zeLaLvrMaC?XHjXM?{hBS{)N7fK%RX z;in?~ZD8pJ&;1ZSg6=X_UyjXY)!%Ir!8M}NG35>(3YGOGo%L4y?W~(Dmz%=mxH4>y zqo}N`p>i6((&eYKp{z`H-R_V`brJ}x1E5lFMSWiq0+{qeCUGnX?w&dxT|f}NP~q0o z_M0xpP${Ta2l10{#o~XCp$mW=@!ssE~0Febf8B#TZgd|hw;>|Hdhb+9&9p0(*8wR zaALvoFRXc4B@cXEutOAlq-{_uza8<&;JeXmiKq~$heV}U8(eiQRj~KpZd`*qLqzed zql{c^TjT0xk@JeTbJG+RVKjeR`$?t{KPccb%t)(w0lFHb9aXW({dMcCu2snXjO$kH zq{{TBbfu7cFaLSYGPNHi}-TQtjfRGh$<&wG!}GZ-81{O`wV z4YW*4l(npX|9eBXYE|Sx&TpRB$v=Qds^P_gbMZN$AJ}Ol#yZ{`yBiM~gNt}661fvm z2`EoqlUsm9V}~raVl0j@R=41ZvR;6P3E1&Ma!WhYqp;8ELhgCqkLj9;4EV>@C0>9B z7=$>SUZj>j?>rKh_Q=vjj%9YRTw4D&3mP$&pUiR0^94tBcFis}0Fp^0l1U_zM_!WU zZevNXE=@2x6)$kicwkqb)2Jm`_RJ6p@2fu{hj{F6h94uJU&t6kRn)?>1i15_EFC0C^zcR<0w(f$<;bH3-Lq8j zbSK=);sQQVj%=6B&bfbPc6D~wyXF$BD22_jRlYdr7EDK3xHMq}5ZHk~pdq24o$Y{W zS;K?Qy8E&tY533}@h(=oD2UGUXiAsWCCfq42aM%pl#)$-7yiF6>p-D8z4Lm5Za>co zOoA?kf1>I>RgxPsgN!B`P^YV|qw8->+@}00mC1qqdA?Y>?;&>qE$B&E@`mjs<^pfS z-w)k= z@?}{ra1@t;ZI*4c5l$BVX%XEQ)GR2^`K0-YsVCct@KD>C7v0nQlB#UsdI%W(wGC@* z!qIC@7ZBxI;ZodTCVczT=3`bK#xXN`xQRO z6+#WvCeeV*v)M92T|JE0h?NbbO}Vdzl>_A*gzI*Dd`xMyWuUXo_Yr7 zcBN=n%w?@#=!KT1C@#t1Rv;s+@)OQm#DWQHhDT25EVi4wW>-o*5xN6k=6evfm{D09 z=*5*ae3W^1dY2CZ$~@2X+y4+sZI-X}kzhbz6W#n(ToLP%u8bs+-UXEf_*o}$4{w%y zQ_-`Gf_u!H2DW-Tg;>xWzCdHS#V5DI6hCV!sx0ivg5c#U<4E&W?|b1r0a8Kfnb_;? zjApMxGtr^A8IkTRXhe<%B3F}}#!^~RQ+-eBv3H6kX|nVGUFw&`lhbFZwYYx^A83la2^7t1QeYGYpM=r7Vh6P7<@RC?+2UPA5`xI7)GUf_BRh|MsN92uq}+Ohj#aBt zpzLP6hh3k2(9ToAU^wCG*Pze1E=2N!P|o{xp@;8}S>}?F59C}ipLZkL4(tdppW}%m z7Hx)xHU7McC+#xUWspmic{|SsuvkS_*^r9Mo+6i~n=J#Pyp-Q@C0-F{espx%Rd;(e!7O#Ne9>{pqg{`*ayrqvYLazT)Imokz9es)!&pAB1 zS$qF=LHUhw3ZOGgS9_o?rn-*jCDCNaKwHub0ELoS_iA>gz=RFzER{-qN00Nlr&CF@ zcL+AXRO|CQ(Y@SQ{qqfNnOweaVD)eRZzivyz1+;i=pTJIhtQOl*$BCA4eXtvMWon5 zSxK@P;B;{V6nw+l4%FJ`Tl1sS+HUtyMP>b3S%Z%;6p>ewC}C#kMR>kdG1`VgK#`i$ zN~l!-FO)#@hoEdk{wBx0fDE3`f=hn+j)N^Vv>EsdDGWEa5!Rgdn7bw()STUt&V(Y& z(^u)EyRk?c+cQmnU_u=X6DCofhaBJ52&8gC*8D-fsB03hMx*w^Jnpu=!_^dDv>0`W zO1od(Z7nexXZF*Lb|fR2d$L6UWV&O;*P)**zSg()H+>j%LPSz@<~`lI_4NmUT$_eD zBeK}#|5|5KoN2ks7inZAeEYx+^_T)lL5p<^95>dT6ov4{y_pGm_I@bnd`%x17Pn4s z5AszaXb<>}6r_-gE;?{ui4-{PAWeZDwxKuUWwjeXpb-hTt*Zg>h+^5(Oq6^{JMBDv zirM^-+;7!FN5YfN&S@@h-8L}3>uH}Mb)JrdNIYeMjULqmVF3-L!wIX3;xTti8~cGX zBab93DzL`akfOuYJ{Ho5C$I?SKkVGAH*Lea-OB4Ay4vI8|+b`>MBGQd9q$x_C zV2(CNv?$Ij-KM>My1s!ft@{!$TR(qmxgifpYLHjGVlmZx+A8s(k-*cynJ+D0& z-}&%pJi|q4+h%5Q@l&tbs}MOw^pb9-CqG}{UFIm?tZ}eVd3>I6j<$OK*|3Ep=uRn| zr0kP|YpdWm_KujYcZVM7gKtTG)I7#A|$pta$S&Eo9YVElg44Kk=YCOFVwks7z0I;O4E)1HGWgg0^ zW?i=H&gmcZ#j5Lt#`b5+;JNQiY~Dz;@$UP}M&t4jI$PBD8>qGwu zRQHdF@RZtva0JnU$uj>%UPMRtZ<@_l7E!Wt*35YhRDzQGihoiH=p| zWEwh`RWWP^2ZY`!WPLK}qlsNsUadqLfU#(2vrrKKYscT+dZ_`M*@qzeW^#x>jPycvlhbAJ<`0k+ z9ww%-%qE5>x3=wRKwV(<_Yx&attYEI4shPpZfz7z60J5iwoqVm?%RvybwBZzQF)&rnJmw8tkookBgb-s;Sc0YO)Lhu9K&5U8t>JC1iZE6>PgcleaVhXkkePzKOqUrwMo_dU(osri<3$SUQ3mV^YpT-Vvk_EY~RJ!YX!QCs6CShX zWv8&Es08OYAT&7s10SJ_9x}UT+1Pidqi$Vf@a1FPS*vU)xME3O^|ji5agUkjId#=y`>GATTiLvJuA} z?5L53PGqFJrU5(sD3j;dB_5mwj#fAc49&~Sf~ z?~@w#eUFQ%iJHOxAE&EQFnP#?l{o>u5%jktED`_)i{==m_`F@ZGUK4K$Fx+k8yBhb z(J;>{Ht6Q8&sZlxxT9RyZCC1Y@C~+dkLz=)+4+rA8FMD+3$&-XwqIf75I49(4f6Zd&YwlK^a}G zU56~59Bp{Qc5?A$oPZ-{=oB5Rt! z3NPqnQMM2>`Gu*5%Vi~2S?MTD*+@0haTv+ulTX9KdDB|Kc6@z<5Q+)53C05zGbp}; z{%&39>~GJJcB|ugdu9NB32uIiF4tlO^O-6ypP%>TJ|A?OOz-&dw9Pp4yw~!H82IN* zme6{aX9)@l^daa8j_9NSh>^fDdfcYQRY7ibWZf(Z!~&`p2+X2#lV#MgOD%)b1t>l zW^;S>FCJMwOd-g8_ymvEbnG$3@^>YROtpP3g1c2Zrse(2z-2g^c+eziLH#|NJQ8=p z)LHD&YXFv7StU%<=rV&jILc&kA}+=$PL|)O!e#6ofw(u=s&(?I!5Q{)ejX9nxOPpD znQ`|&DSVLrt$4U-W8Gzjn<=jhqN%IcD#B$RKm4|x4`Pc~ORKj#)`ArC=XX}4Xkv?7 z*O^6uJ>ext6_um`eN*?EC>Vw9uzKY;^Tgq^TC9Hj#MWa^WDggGC4-NL#I@3id2~&o zfqrTf>PE>3-v_@+X&9d`z!$Swxcp)M4ij=bn%2f;rB`$;&Cnc5>Q$PNhQN`FLoQcj)zrJT z7YO5q_qK{DKqQsLu*w2y8oj^RY@Sw3)xduV4ww~WNprh(+xC!nbc@b(6c`OXAfN8= zRqyIuKK}-1(uQ#(G#yr2D(q8i#FVmIl2SmpGGBkVR|f2peUPwLqk(*Sc1Fdq@1I$V zsL_E~OYpe=N{4u@uze0v=PndT@7sZal44Vx;Nec-#lOM43A?F#08PJEtP*Z}IQI9L z^DW}ni=Vmvbu}o3B(v}ioU-j944*t=3N+rb=_vd*zuO5Hl=!;u6PRfALv$8*&nB~b zOi2L&MSYE7avp7OX^j>Lh7XdhJg- ztK;5mp$(>(G_&?UcR)RQQ)S;W_Jcb8w62z~%+6CK{i55tZfE?W%DQgi57G2# zrI_|ivL;;U@4Ri8dBfEE-+ql{K63wM-}qq62#OK)>pMq@N>|OO1GBEs-9+4m@lnpH z$LJoKRD8iD-wbr;&+s4Sc;zAz_gKf*y)Vsv$u@(ivdpCW?cG62a?ao{!V_(t zk1ZfJ6vR9)Xj$)!(0;%FF|1#}hlYm(=w5@kaK`%4gTf^U!v3U7ogxx+=W6x^YcvR< zYIGB6G6k8s-mq)3_!d_E@rY@m3wL89tTlWj#R09t(~uXWEyFxkt>7{xsQz%=CKa!H z2CIB>?xPw!gz`2p{?X0RYhLY4$^P*>!0zEDF?tI&=sD}y+s}9yN5Ol_giywtH)H&N z+GJLOKccT~#ZO@ zdE&v~lewDt4i2pK$r}}bAw*|-n^U!xPnK?I>Dky|!L}uPXWgy?5l+;3UBhX*Pq7_3 zRJ-jRon~5;rUPRC(e8a?XI=nv*72K0qb<%SAAXU-9AxK$a>)%G4%lxkh80}8nH$xT zc02hz$2Mu^;?dR_5uLCt4@vh zMaVyacaIpvIe=~X_$7A49-F7uq=>`B(ZwABa|;teLTgS4WOukea9Lyh z(rxUQjA?E*<69G@tZ#4y2|T<+(?23=ZCe_LGD>y}OHHr3HIH41PkzC~h3NgWw{tF&O68?){q^JX1< z1_C`7|F&*es44wFkucQ-@b+uo3|F*o-iKa}s9I)r1z&|wtK9*-zZ>E1$Agt>d28HxC+cGT@VPi#= z3%6d$kX}~alk(0Bm&n+Cgu(h7jy>jhm1LxwpPA?#04O?fqjE!N%4~P zoN~oXGu$ybMFJ7XD2}m)1e_3n57qRg^n|cAB_u?eNk+0|OQD0+TWi~85e9E`Lxhcl zTYe=?m}u$D3+s2+0sB4R_MQ;yU(PBkFvhodmB=({qW^AjqQx}oz6;i?_1oeHEQ{bX ze8!SX=pfi5h!L6C5HZE7`{fhwGUx%yOBG*jl~jn=A(^qVvJWC!03g`t1N>vw!-YS{ zlwzhJqxSZWE43M5&BEDIzXATBjP5&&>HRyF{29OeH$4J#%ukSi9niGCsXZFq$)G#p z;UU@kY9(R`l{L_)8x)JkWI%+dFr(=pY15`jo4(TLdu@&GLf5pA#f^gR#}QapuW6|{91gO20*d2oJerLwQ`~v zqVmNM2l5}3v!W>2eu)*_ZHMypA|F==Uc`gytL?ZyQEiL{ElN9Td&O0(K=6MLat5}6 zX;fey$ymfNma>edFQGF}5kgD)MLo2k-qa>E#jx1SN zLNda}7A0q$vQI}f*KLv7>bXPHP%kNhNFWgzz|V;Ke>heoxBM>r75Vkarh+(LHZ1!A zeMaT+1w?tX-(85=`@3U0&D!CkQL@SaR2`tJxQ2U z#&nK4a-@cFhCRtAF%C_am-LzJt17*8V7p#lz8Rm3^waMkx>g005*# zPcO*@5N(!VB5NEGlAU^2;OhR^Za4?c>1B-WsksvKkGNJdiM@ab&UH9xszW5i-pzAq ztxY04FT?Yk)2E|;H0Lp}bTs$-jvEJgNSk<$7klY%7$(R=JV~|2vm3s}QtfP0yWG*Pa-l{?cx>Fl_jsBh4C2ZGXWWZ{@yXS4IQ=Qit!aEwyg zDf;^E2}K>5E(kmK{Ab7Omt6-|CFobXuCJ~9_T?G-)0zL}>E1`3{CZ7q ztEH2_O^kob3BN60eyeZk4Ebk=>bu9@udRT8%j##hu+O&cXE))OJ>LiVSM7z8Vnc*XgdZgUBk+$dw1l6W<#7qnqu8?Vsa_1#SU(-3=FudW`)6 z2~Ja~I9DCdtvA(D%qnSPnP`LWgB5D(_nM4+GEr78vU!CR@!0Jwvtv>35#*D_H;KaH zHRIqWeO(BR`x^43zD-C3Q)K09X3>i2E|6^4f<)*$$Q#J)^a~%1iy5s50!cK+QOe?H z0%b(=M>`(tumFA%=FQws-OT$0PIA~%e!_l{{tGnS+&MUOY+PB!j zV>etBC?PzMqr!#ygz0?s1k6D(cx4-kFo}0uvs?yc7iQebp9RQbMJpFw2c_%#(s~xp zh2X{_4964n4(p@NU!VFHgv4Y}nKz54)=@17pc3=_>K~ zoJUa-;qDsctpFutm8X`f;j;;+65G*AR`Bkle-DE{5zNE1FuW-G_o{dnKxKZs;*b{! zT<=$lJa6^63<5*L0Z}-Z+no*&90H2EWS?JrvB2Yq?%VC$RZK7_S+xmP`#ROU5KvGS_qc!;pONw+%5%7qt$XJfWsjikkrUqS5$ik zrOl}fmHaU|BSdvNa~A1?=03;1fkl9K=g$}!P7->*PTFi!SeIrmX>8nz@jFs3 zbP-TaYf?VWb=o2CLdqd$q^BC$t|@B(t*Xrw3i%|tI7&TvO9i;?rL&CYX-iHz>Q$|2 zY=-yL9$nJPh>Ow4Dx$GO$-s0B7|o###SLA7yd-=8>O#YK&%@o?rN)Ac3?ddDX+1Tk z_Gl#|inrhsf@qVK10e?(ZAxokGn6VDCk{LK z31KQdrlKi!QQJGPf4Cxek^P)e8N0=;`X<5-Hp@xvtw@VTeZA~lt+$QJDnDc`A9zzy zope$F`PUM>%_Y%V!NgC*+0ZJSc?9b>LM3!@!q5jz^0sDzXLntla2gfJqp~A)2r|MA zdb?gzUdv$UT3@xOddQC5RdTIQo|YiDAI+7&2>Y;dZ&gWwvR>yU9*l^d$ziT573}uDSJR>j{g7nx!uSW<@S;Rem%#+Dk@z znyu$ekFb>TGEi?Z?GVit8`=slF`I2%84_LKMUg&a=Fi(P77e9>thv9<_Q07i&nBpw z9ljC$JU%AU%6;S$72rXdyZK`rSJRV2^E_7|a z0hYFJDnQJK6U$Lz%cNsh^ZD&DnyigbRIoc%s)F~y?aD=4OAk>+P3eQ&2^Hv5;EPZ! zYFjDeVBSo=1GVVR-s{ZsAj`i$<|U}YIatQYV;!yCM_HNTa90X#y(IpD_k<;YK@u(p z^V7F-npp>VrmT*)exnDPTZFY&99MFyqQ zT~e!;U8R>!qA2$PZZsc9(OKIG&a8S+NQ9jR6J~xU>kQ|jJFG%gf${uqEooQ2GbIGs z7V0QwrEcA&h~qeYGCuz-RZqsg*G1z1zf$&B3N-#p$%zWBf-(Su zcgKERtQT=~rNK2CcEE$(@$xD2SaJ^{g+90K13%;M=hk822?)C5ew3`12Tg7o`OV0m zZD1q{D*2E7_srb%_NJ)*{Ze~1?fkcK31ru69)+qcE&K1;?Wv^n%oBLi$Pg5wtLk$V zEL5?|8q=OO+S6Y>l2P-Clu)eV)>*7R6{uguN1LnC;9zD%x9$(1+Lu1yh6!LIjT9@F zH6OwRqok!Xnd4ATC-?MJ7z!P#@~A>(@~|6qb()Ja{!)i_oHbr6grQ`oWP^aiG8x!8 z-GbfaF%vLE+cog5hMcO2_xTR3pw)qh(;;f7@&+7(UtEdNS7R!fx$as_XQ-0^MMaWz z;O*KmoilP$+o2z8sQa5nu!8qnCoPhd2H9fJ=Pxn5i1-aJ$ z$Q>js%0gDd2QkP;w|q-4yE;Z(MKOBr3uQFWM+l#{Yn!qwzKS-IbTT*CllLw(AtD>h zdZK(2dis!2khR(mFTSg{^r=4@GsXHHv>iYgJx-T5f5Y^%N7b28Av9O*Ul0je;C8hV zA`jpUk+0b3yUH=)2VDp7#fF~Y>q$4J82oBlc*DD!0^#gyA55YsXkIU3#VRA?-@vev z%7_E+#BHFlvgR#h)1sRx5B29mw=~u~<{t{66=5+Osk%>=!f#bxLeYKc`tEEaowOXW z&+za9DIy`mqTk-+G;>jihD7xMDp+Vuc9L5upvU|DLKn%m(Z-V~o01m0$hP`X&~Id= zaF^b0nRi!D+mFBcBo1)@@##83B-*jChy&e^wXClunKAWN9hWYB$`GJyM9CA68!kPr z2D$!WfJ789l)=@e$W;E8JlU&?@+G>%4xV~v-zRBGHeEr`)T6prhmJRP`@S1*c!BE0 zQu1e`{X?V>&c;Dj^7l*se6PzNyCJ%&=Mj5P!iq_|CI2uqc~Jo*1DI zP<|Rksw3{JAB32r8vl{#YzfRX_te`>9&FePW(io4l|%S#Kp2OGus+X$E21|LXg3(LNMrnTa?9q`pBC) zMcL<50EPeK@ubu)Vwg)z^Lzrp?hd)_58wkksx|pn*%)YD)BFghOfY1gWB=-+jXa%jR*pAe;@(Cruy~cTtQYC%fuw}?H4Kr>=18BjuPrkNx>jgFuO zk4$()HBOC2rhB{%T2u=X&q++-c&s zMFW_|dl$P2L1fe=C5^JIxf?3xGin8;RA1-2wg==RP8KT{53RiC*)*_-r8cLsoG9{J zwej3TTQf&Obv=}yzCu^7d=!a0>R|qi!AQGGw~KxCKm(HPaLWHG_9$Z@&7Ej&!N*)eWaCr zAJ;__9-bpw$6P}nbdk~2+ZqXW$o?hb2E|{do&n)za#b|U zhuL*(#xy;veJVOYdq$eXzo%$0&3VC6w}y*O&4EqrA~W6Sd<&iPZKrjA>{`>XT{{q> zxs(Idi=RB9mBqCB)hOjw-HMeT3px&01jeg77v=7s6wQiXlgds4fTMX!4meLI2__o7 z?qw8jO%`X3mM!GGr(+$%Ud!5YLsXx}5M$3Lx%ELo)4AYyzmpu_kVc)IKkwX~+DXNa z&k)5##A%{b#uk3+6n>F@S7*ADDD6l!3TDVxphSd|@vXURn@V z>4u#v0M0a$wkzfFA@-#{n(MEfUUTLuG6AZ!`7BP*_m59S}^vgn{3tZw_}{B1!j;0f=*TA!XDd5OlHqu9_FH3hO90g8-U; z_mIYT)Pj~tO@oGdm}kMJ6rzwj6@>I71a&K@w_@^m->2(89T8vzVZ+W^ihFo0*tA89 z^&Y$370@sKjYekP;XdMTkt|gb-WkDCNFf9>S56o0N<1I)GpoezG^xbu<$XHvIW;!x zl+i&!ls)2yQZl0&t_V#8kQLq1xqx^mWxW_8zHFB!KJgZG#9LZjW zChGkt;nS@fSehA4RE29RxQS>uefAhM(&?V?R0bh`hdQ0pRTPhQEz9DewiPZu{3IHxP?#Abs`J zpJ^BnK=s`~J_i?W5+HF&&8o&Lo%d{5PN#rjJg@b&c{MwZ7%1o=EA}!(0^hjxVW7r2 zws0q31iidBOpjbbBAOWoY{)O}p2+B0Ir4S_>k0?i!NOf&R*<|%T&Z55Swr4Fv+El6SStfwgnCchT4zg2neI$?XQgLp*4j|n zUF3>9xHD#4Ue%syq`$y#klivuMOW_ba)dn73BM&Xq>r*E)Fd@rS3#v%(p6&GHD2ISZhG;75bF-Rc3Q36lF zb&%TtAx9#?YmBpUaO20^0T^w<@&Du%UC(WgWZX_k?1l}4{}Z!%ZGEcm#mzMmUTEv} zrNd|pY!(+C!ThyK$ihO0mw0a%+0giKuFN^l2?R>y6PrC)%C;pu??WV?y@}SGsw~K_ za}}3H@mY2LjtyZ4(TI3oN&CB~^~8Kp|M+o?V~ok9k|sDoI&CusR?7up9KGUCgq*|P zF4=+OO$=spCWtj8Z;5gxo$X(iH6{L%+!Pt7hrG zDsy!qcHmf?+3JH9W~6Nn;R|o!MNBp^QH!WnBgmy}p^HQSJS&HR_%ar(r2=4=Utp4Z zrbD= z?+cCP;T#6FPI03Y?ADVutgmFeGYpfQkjFwsi;zPnzzUvznCA`VL&BS6OVkV3D1N$) zkeP_U8|^Za)b$=jP{uJ}m_dC&aw6jjsT4m*+b!6IWOMfDD7+Mx4Nn_hB;#47F8%%! zO6V@kd%8Hek-`BS{x8GfI$4C5Rxvt*FGHC3ATIknC#`S!MLPU$$mRAX_1?me5YDdb&M0ShxRR(AdwF@%ZX;kz2M&Npfxj^>t{J%b zT}>N0eK-LCUVAG_Kr&{z-69RNX4q_gL#UJAY^~e1=${~{&eTXyirC=I^MWVKaddb5 z>YxI;X=D###`=m$MIK$QdC$sKen{v)5!G1ckzJMR6IdX~rgh;) zQ)H+?Ei^K$YqT5mqJ*7HN(A^1$XK_-)d%s^Up4G_qAosytk2~Tu1+9@skr^crg9cH z5QJsTMC1c6B5o@dC>`5FeQ(a++)SSFPL85X_4-j>=e{3x6RIPBQ528Sx}l?dw&gLx z=SQ_wyMkmEkY2f#zDlntor#$yd;P!3wa_Zoi{M1ZaWxlOoe0I8vv>5>Q?riGI+c0{ zyG zT>H0?lAJ_%d5$g=Nm=IdSB_Z@_9B1|m(Gn#!MM7TQs3YaC`syuOy-@n3d&(_Zd%O;M88gsG}|G8nT$6# zLyzKw^=8b$*elBOj%s?IHw`?1ox!0xs-bL!hvBXfVi<87OYQ8Sh<=L6}%}bQB=r-v0K!gn*G>B*wzgBN5kF zV@)|V+sNOAOQ4LI1AU-{nSz$GJ#o)Bjq%of6|U%ZW8|z(b4pg96Cs&1$jb(@hu3K} zm-s@xf(t24D{1C-rpfJ=kcbTkiH|b2nf#y6U@$lQ&8AqlZ}u_>mk;2nBD5Wx z@XKbwm%qJb7lFoFzt1Dhwe(DU%t82aoM_hC0qo|6A|zZ?;#L>C8m48AZpjn`6&D)4 zpEUz?M6wJqj}|hq2Xi-Y-*jsYOZM)*Cwx%VXffdJbXys>x?{Zvd97RdtLgj-y38Lf zx;J+cqfXqW8R?Y|Xg}KAcBY1j_au=Hb-UUq7-n0Y|4=x+*bL0pq|c-8Nzt?=+}(7b z3P0^rvnLqXg2^p9^4_3RO)AT-vR3_v%u=SynGCnL6!`uQabqR=J<7#C-ib{ocd|G| zZtIXy!ooRKuAyY|ltRwMTN1daVg!5|RKs?6VdOa%jlo}soMkQ=wpc2@!F>K;x_KAW zCG`!wNi+O$BUGs0SqiD?eb+%?dGnmexC}zM?;xGw9*fe_JWXZ1jYl?id>M3J z1rxf54VFPI83OXNlA!EjCv#ZV&u&yeqV0m5aFa?>5tb#Fq*dq0`lY5fk0%esSbAMz zo$P`S9jyZ<%7`PM`UeVFsbYr;rUx;?TDfnLGvR@GwY}696ZJ~x8AGlIl zSmQoHY0ATbG&mog(2uaN0&;`Azt@RDR`X@o*rIaxca3=g0IzO~pg}W7S5|X|2SX~x zoFb4jqmA!p3;`8>8EV|H%!UO5Fbw#EAYK{Q-x){>!aYp!z$cbu&!^8dl1!{m{V*9U z&A+=aG%LmWPHwh@QzEMvL{vAv3Ae!^4?yr%PN^A~yS>qWD2aHOhIVvaZE*GaN+0E< zcFy&o;TrQ4dVdaKhDR?+!FD8;fYgjbSW|dJO&Hr{gfihW}3zg`aw8Y_aj-uMS;vLc!NAX-0MbOqD3lA$d7>4;wU5OzZg*xYK7W z$U8dDB)q@$dB2AG zB3kaohCa*i>_q}XGU2KJa%7RqRgnLb8eHTUhdmxH=uWMOzPJ(#_m?^f!0BD^wAP+{ zkk~{-s^8&3s~v0KP@FqB&^PhKPjCcqw3<9W5K<3a5vRzuV38pJ1KM#t8pL1!z#uWS zJ!K(`hTAvR8gPPLvrOLizSAlN8QiHVTt8|+5+0{47LA>yEBU$iNj^+6-UuxFo zb)jP9sw4&deZBvZijqRjm?9K!00MYewy!o8IHmUVJVos@g?-!ih0z1dJYs5=pq6an zVY!#0N*8!li?P1kLUGNvAVIW3`vAqgw)BRD04V|nzX#iR@kKW{+0S`R5A&-iY!5W7 z7}WpuB97r5wvH`n{PTwom}q2(tLaA)iQtE=F?!=eUAI|NP>vz-jBRpo^C}3L?xYdTlmkLBK<&hmg>uslw4&NEBAeoS?)N4x@Svb<5*SAXVt_}l~&&bxL>-9DQdouD+qxfD{*gBUfpOvDs1 zh=V@U`|OINvZZO{8%$tS+Ot2B^X}1i67eB@y=M8eO-~TBfSoQG=Tvy{@E!xyDn55v zypWj-#2{WFv41UCAk#;0-}B}00-+q06f7Ydx4w^@MVCFBzY`BP>DM2=OT@J7e-!=3 z1N_Y*QQT_vS1Y3GQr%$SGZoHO>mCs{@Z zQd3!F`K8b=b${IonMV=fSzBa%OKONQj4%}!H-g$g?E(yS)1 zJ{#kYJ1A0OMdEUK_}k;`j(bd2jcp&#CR{zh%w5ND&@%=ARds;e)?HxGjjmw#=IC;2^YMH^R)H>Oy*0-)Ns=0o$gjpG9RFIlNPxHc{mc+K z`Ki|fd$FC+a%N2v?93t%{K~g({Nlr7&66dOERu&&yfPvW=_pJzBtTdl*O%=&()dANy1p_s5NR~+6=Q~<}{*Ypz*cCDVth~$q-Hn5RJ zH?0b#p(MI-PCw$#gaRdvtVVb*N`$c3I zt3bOrOFgn6BWxcmz*`)8C}~TBjxAbzu&a!pvZrRDIW+=K8J3=}Wpf<$8U|t7(Jh6j z=G%Hp{H!sWOG0RQOvB&>Sa02~F5kgqC%+B%+k_yQ>3X6d|4Y*VmT8a%A4PCyPRwV} zGb~t=socQ%WI2SX_BX$bPgypBPFQ-ZB8fSb8xN|-+vi+xtyLQaJ^)uiE&$(u@D#f| z2fMr4=O*pyW8bA9`6m!O=W%SP{jw|;v6T=C;2(#_WO2-*<5{@&OEXY! z8*&ri__cubTwWJlNkgaPyC!!$&jmh|pMU|2hVm0@Gm;1SH9QBA-7nHV+Q1+jkC%>_ zDF%{M3)XB63d`3*#77C^u~G@~4W4UoWSF$G3^M9|JV6fw`l+{SJ%&&eC@`EN zG}sNQmqPJT!N)Ai67Criew7GHx6S(`f@QokcSqk5Qaf;?0mW;4e~eL%8Kx!0R%TG@ zFy#D2WZfFJLR)YIFRx9&7gu$aNmpjA4;^s-pUlSh;^uZ9VZ{WqPID_l(SCL^nhOw# zsptZvm%sJ}#B)lh8$@S`>otge9M%1S`+1I?j+SA+ewCEB9c-QU-!v=B22b*XU{ILG z^B=`M`M=Hww7#ZM4;WXqV+auyo5KPL%$P|3fhYUVV9-}OWk!vlId#)iEz!dwy}p{Z=OPY~#AYX+r|%|MzjK1)>_El~bY&gsLAW z*rOu5jr7-d9a;{==IbYbvJh|_Z!C-4c6w={&ebub{IvDd=wLG-qowz z&I@b*yh%75u`(J;BNI{sX76wMWaWQH;Is9bpK4IQ&~Vg11JANyU-c`4+riHw}K zw%`?2^G~cT`Oc|RO+UavBcSJDfJ)AJowb7BanUnatMa__yB`5M#~aq#hEP$h)>*Vs8?lYtPigdz z;3%!k+BmHEaVI?ra5bC}(8ytnPsn!|i#G8%;$zFM6Q@%(SmYS884sB`y(HlAZpB*( zxwCUg+s*&PzW?X!4?xtJ=U)F<)M-ed0z~K0(e{0wel0b?tb{vXwyayl99V{e@0OD6 zHeBos`r>!~>!#Zy@a$}wWKKoSyQ_Gz%GiF?52iNEo2NujHykB0EH}+JMCxgkGl}F% z@T-{omiJYm5#%Om8LOXT*8WGa0eELssUm!dGwNrNAxb}8NF0xZ>3_<5{(>3^N-p`A zLDsQtZG7vj>(-!?HsS%rKAj(cFcL~Ucg@~%9F_oUXD*P{ZzbKl;p2yMkl#%|7xdY1 z64l)>NFoU(_d4o`Rzs~M_{AM0*1Jv9DJfFN5f)oRkq+!&@>t;vybx)N_t)=^*wLbP z;(F|(=q*fjx~ZW&ohfDnSt*7E=(V0e>AcWiLe{6Tn3TQmam8^!I!Y6zWv{J5bK>y| z8H+G0KI*(^15P-{F~1pb7q)}cWbv`rE9Phtr*!*5idN|K=XWgIW=Z)p0 z@VuGR2KV7ZZ*?)IW8B63W@Io4&;w!>Q2{8Yn!sdy81q@HUkt|KJ%97GyOGoCOA$KF z*pr%!A%MEuSQ#TF&{Cw#cM$0fH^i4>VQo>tf~gaKt8c~2qmuCa8mbt~Ra{z7z6bj6 z&GauWHT6tgqLeT>g#Q6F$wJ<%#9$m`m*Q2%JI`2I;sXF)F7F-H(uN>V>B zYFp)EsPS4hDe81*?;t7EqRh$S`dD)OUco(HE1!&p7xhYzF5&kRSG{|?M$Ng>^E4h9 zin8+n5Yi*nyM7Nl{!^>1**SAq*rxNk^%w=_{JC@XA8my2?!_j(`0ibdv8z4@J&ZwF zh{Dvh_0rPYUi4$0ivpW3CYVsFNO^+Tix75IE(V_Xs@uQXnlX5g7RAfHf2@eCNaXaD zv|5O*SJ}WVS*Mxu>(d_#CG$%wtfWA5CgfDnTXBLmKAWid zXZRM>w!u4lj>_T=4DKiq_F|a}tqDSI1HMmtq$xT#M5EC!o|f~DXn_S;VpHkECmw4F zF>W=N7rtJA^ADIs$R92#8c%~^hcm<&GPZ4XLt|t67tQuJ57RV^oz!1 zy479*OgYU^(i@?DpmaSvk4-WIhUbHav_Sv=(^T|c+}zdI@y%` zR-^*7zQb1@JU$h+mbJoq$XrheuVVh@p|;)B?@>;u&n)v`w`vOMN-Xkods2$p=F$K{ z+cVBgWJ^WwL)F~WN?^Z8hj`#?L#r1lUKjypT2k@iO@`xpc_qS`E4kS)p6KFNNcu;* zx2?(l(@hnNmIwplvx8u|{s~!K-USD{wkMa}i_kR&dbLJGb}RVrJKr>fk#~(((_nIm z@zmpKM4pPJLYqm@V6`x>^k*S-$|a9dJ;&<)JjE2?Ia&AUX5k&Zy9EQmcLqEdva?ia zsPDtO>-BPg5Un;MOR(GmTk%qg#^Kj1q)vbjq)~Wt7aTTD>$!nh}%qv z0?T0NS#{P;gZ;F9&-biucPXZ_eZ;b@KSE&Rx1?icWoV$cLF&V(%PnP6Oae9*Y)FIx zMMv5$;qoHxdM#)b z<$RN8n`Lx5hr>78sDoxbu^f4qqoHQ{?s#{kt~s^K#7eRpCf?7Puuz+~4Yb8>WG5z8 zj)Qfo2XA0a_iaV@ZJIe0p?N|?Ef;Fx+ejqibhg_bwuB6`r+yagjuku_(Sd7dj@#Z4 z(w6(|lmYq^CG-*5*e%kEI^SNuor^~hRb=yUZT}~+?mTTF83;?xb1cjWUAP=nh*UtEaS(<(=oBN z=3f^LE%l&`u`wkQR@5(_{>VGT@8%jl&NWL#KRgn#%ZdD4si ziSZ`tZ!UhYSH6pCar(YB9%|=Fu&UN-qsnaA_f9B)8uS(0J*wYvsl~Cf8!W}f*q_U5 zl*V6&O0eMarH8FnUv0jD#U{{gIxID@N$Cg}scccECGcwU0;(8gH7GlZm&>`1%?6!{ z)h9pZfosFbv(T-xvCNW>uq|zK#of{7Dt$mG^rWej^#_21`<7A-EV~g_KITMA#901R zcB<1yH+Q<|1|G!xm78)t@?3c?oYvHLV)=YeMwkcx5ZuJ_4ly8fnQZ#Wuh34Z^l9~z z$lH97^58C!DluAT$|LY9QQlXNeuV;a2>iQ?^RzR43Pf?b4CdRJ>_R$~#48=%Zb8;R zW#Wk?yK6uVr$LClq+&vm>6Fv6@)!Cx$QuItW(7=OVkF$}fzlFWbXq05d~{m^8cz$L zHWLaX7pAGUlg3}Ct5EYmsKZhi6_GGZKI4`OZ?gu{MnT_r7Yh;E<|OngI^Gxi>+NDO zgCUk$Fh&v_dl;?sk?n4L7%~@$UW|)<&G9|l6*ML>nh?hcufG<1S7|1YrQ`#08TGI* zl+`8pvG_Q;91K|edB2h$^b2?<+puCy8*QjLXt4yCa$XX#{hF&*bYnTw0ltn`u@E;pfP}q&BTD zu>@M2;xThUZQ0!td>p=pN2TrXOqr{+i$=$N6dFCwU2qUMwX)od)5)bh8Wx)c6V0^@rts`@NE0~v02i@MUAmKwpMn`72JE`wdf#Fj#?AstA1F%8f zUmXFBgo;sEu{YX57R;lM;`v7=rqb^rsZ(ynNg4*9A2wttZA5xo1@D zIH>)@H_euM7N<{fQzuviPQONlUqnEqXJ~Qx9$J0^#y1762<;6^U}99_+sjK%AQRbk zliY#&v@!($I;pguXr!17mQFyb`O;)-1}FlaEEt`c!*{y?UDby@#wA7Tzrcc9O@!T- ze&P=q0l0-AY|=u(VodjxYcYEQfhZklI*ghhy8jM44ggqH6CAHP1`DFFb-R5nw;iR= zAT1MWcPE^qRKa`inBsP0Or0}0GTQ23H4$|B7u(aY)%|!GC}s(0CoUu+N^x?VTk9cl z+@*tOyONU`1NV4?&4ibRKB{Gz~{gIgQ2$+RvoB{NQc&_||6# zXGQ$m2)9dcoD5h-5N;MxR=YoZdIy2dOT@Q%0WEibQ)|&S(u%)BIKUc%zlm5F$(hbV zN~%bfQbb*StY=v7F2Z{&6p5Svq8&}Jr|hC>ep)9+Mp8gU50dHGi&WkpmHI&o-xcJH z{K`YHJ46H(Z8`m#%r*Q?*N1(|OuhBzI8-X2k^El(azKs0iS6lGfrDvYggLJeWA39W zfW8gbo$b$F0T3p|v)$8$rKl7hNUUd!HhIZs9X)C8QmS1)7a?vwt1J#Dc=>w6SC)vy zWz(2SU}8=9`V>H1gA5b`|ACGbQwiwGHbZYyL5KLTyTPvsrR?Pi{BLlDKVR=A4W6t< zr_Q}6aL>eX1G%(9470SE=GJH3urv)6`J&UnH}U`6a1Dgx#Lj z54gk|(8_RhY&6lqu~=>1HRDVgF1nH`RkpykNwqA+xmcM4-xre2g2Uw)ba2t=&^oZQ zYMxP8V_I<`ohvntd}On!Wz*3L`qjj;eq(v02ne3o95;+ab@(=tTcH`376X@1@7^d^V05pR8Fh8Z<#*B9lWn!FT1?Ua&$tH9Jr6v*{!Qfv1XBS&J}N|CBvTI+oXZ+Hh1nT zAXp);dB6I|BG3vw-+PhORhY{{bXz&PL_h8l)E-IZsC@6w6*N7OAiLta*lGSDz)x<_ zvx7`N2;=#O5qe)Wc1VvHowLb?bv*rUd2{@yguP%N7MwcOhDJ_}n=h}%P3+djwc6YO z>PkNtOQl%liBXDKD?oBT)-U2Xu4707xI`^0c07d{0wNZw%s^XewQ`8O#NFZH3=s?= zd00C}e5ymgG-jeh(wC>Hl~J6IWEvODW_KL02v7>u4-tX44Lxtr_X*`RvQ)6O%U9aD z_=9~Kvsb?BLsxG3pmev*&U2O1wfZ`Y_UpMGF(7l3&Lvs~3$Q~Tnwob4z z;M044z30b+6V`X=u!A1G9TgYAJEWkF2xzXWl0c}S*H$ZK_;?U8kTPR2pg?|!L?Wxb zMZ!2~*w0;Z>N)6eO_CP65^nrP*OLU)s+;?Bny^`|W2)+GuSr-o>!jdVq1+aW!I~W(tdP=*6{(*IxNj9GCqnh- z&y}kXe1u6$l4P+i;J4N^vT59yh)m9b^|yYCT3}A)KbHQr=(RWGK? zYh9g!+W;XowEr8eGEJragn@Z9DtEz=w?V&m1`Nea5&-^XomWU(00m2RBn4w}{H!v1 zGnhAqDD(s%!y5-M%4uAk$#~4VdLg8bA?Gfp?nFJ0(e_Qc24Yn1(9Tbd2>yFdzY%78 zw_I~cpqoGvic(sIqpt_eM`+NxB8jWfzE`>A1}~c^-s^aY{AXPTb0IvYOpN~p0At+` z(0m$L_^kZYvL{J@K|1-$!#eG<#L&Zk+G7VuRA9n43%K&Gn&F2Zq$f>^zRN8~#<~%4 z_xx2oc(s#ha4E>uP?TP3--dlC4S;jnqc+`Lxx|!@LTm&g zE#8wJDd$_3jKx3{%(DZ}o?-p(9%{)>rj|38n7<=|cI!hOJgOZb9WRcdb$p?XfEosO zWH&d68@csZkeFlgypl>P>?9KzEFC)2jC55G1ar0D-%%73vr$!=u-ClOdR0ZlSV(VG z7|osBBK>x~B~(`Dq-$>3@&od+l3nimnqTT;;k_B4@jD&Dy z;44Qx+p$kIYvMf2s1e{J{l3@WF%>IBCX9P)hzuw76_1c(T|Js82HAK=`iPsjI`>&8c>GF!p{NMZ?JaDbd+y~*6t-5&?o{_3cc-`p73o@{zep*EaEDCr zf?+c5IxKX2N66p!?YX|N=K86Kv_pgDP6iv8QB3MwC{N`lMhI>`1l>z1x-ILU9^21Xm?Il&?syfiaVjUfbqG|)=hxT<#Q3bj(hpUe7|s1AV77cS^+kCai6^5K zRCVeYL6{m{5KjsyaZ@_-JAtTdG)r!c)^5p7I`{^S;36P_kvmVL>rVAymDvJdJx*!7$I^SLK@lZLMBG8E*RS!^(`;RC2HnoCv61#OK^&=)YN77S+l-)FXGRAi%eA20g69O*uwag_aH{p5EUz; z?r^wVis(sG#mHtsk6>bE3?VxkXK8EMbyV)0y6E;0OSjxFEGVc;-`Y*20QV3l265V# z6DJ6nxjiOG5xYJ3T)%K76BDSHrsI(HS$h%P;irq%jL0Pm4pYmNclzkRRn3>l zK_|)D|7X>%eEPzC{)02~zkc1`pFd2mldN~iebEoY)_6UuKM%P+?rt9r_4|5$OjUG}r3sKYn)a)wRE?QolcKe?FJzpksry+4k4A z7OLsH)i=`7166JMBLz*1YfH`cY8sJ_$lbQko46i)r#kB{heL)T5Y1vQF?}J8alFty zL=MIts_6`;uMQ&BoemPIE4|x~lQ2E)0B|=3AU6!sNgzg<3l0-1WoYU4eE)C#IUT)C z?eUnOxo79ShJ8mm@z4g#^o8Yncgr}5wv}%NzU-q1`_F6nI0Z4HZ7K58kZdQLHSnle zU9U7wngM&-(M&qQ`ZZ}CjRETg=ZN>MYcA{FhEcL`yCShfC_z$GF%CT1#zUSt`PhE$ z{qQNqP4HYLYr5||ZtL>V*Z0&GC=(vdjrg4uQ$d}LPj&Q!lnQDuq4rMrF!24+M6l~p4d7S7F*XBkJI8k^< z9Wu}gug%^{OeL40&6Zm2w3t7dQSGJR{;aL~lL-bP3sGKf%`cKW0YV&lK7W(I=#?hm z?i3Uj=Pu@oaKzTvrFlQXQpJ%U1h&1{S?9ojpNqT(qh*M*S=zU{6BtnvIP~80h%C>% z=*leX_v+l?P zQfT7l^Tc2AY3E-bAOLZC_4$w0a0~CM)&Q9Lfj)o^VtTtAVLCmetQSSyK0`YuY1*3L zkbJhUDOmqsTWX>Lo$zayGLD+{>WyXq*P8KvVUs#Z;eICtyiJ6Fog^+Ou8V+zug9hF z&UlYhaf63l%>HA%Mjz(G-#_BZ*Z@N(UpS%umXKJYcJ#^tUC1ZP((z6aPPy&CW3$N@ zI;z|UhrP@|DXY$~zV$o93?%7Xg`%I`-~cJM`Ml!TKiMSd=8-YR<7r2EVtW@2AZ7*S zFKvCnUE)!EAX=Nfenfg;Xh%Mg!|eho3ui_ozc|ikvF%Ni)QG_(FzIVnOc%ibGJ1Kl z`s~IG0y?VX_=;RoJ@Is8u$-Y$=uw>JH;rO3vl)~l$te4vZKsc87?6awK*Wy~Nb8YW z#TFxjeGlV)atPDgeP!2WWlTeZY14F=Mkt-c|cQXN*-m@iW6gC>An>AxydshW%^^*P0EVsv0h7uz2 z?!RKMt#E{jIDR^K$Go=<5X6UyU%>an>nuan7sZKyW9!DBMvUDP=d~s^itJx7#}6~E z#r~5oPdDZspx@Y5ba=2?f5PsvK@XH1UOlkG|9p$E#=oFdzoag^IEll{7;C!A1BL{R$?!L(=8whGo$x#sTJ<;(Z(f>rw-q?!#n_fJQUQ6Pw$Flu;`E_j&PfKf+9t zd@uWnwG4{|fLAf3x7sE_7(b{C4p%bPpeL9V7CNSV8IX;Xo`oqLVA4siwMq&q-MUSg z^fOKx`UX6K0ascX_idObuyG{u)5`<4!!BdvW}dAa3I>{6m=jKe=~i3jyj zj*KSxaHZFUNgy`fWRh9WiaUjWN=K4chh$5iYXU z2#fZZPIvGh>2H5U*~Q9F>-b`zJZx?A)?E|=LnsK2!Wkn_Z~$_phiCGRqJ zwNrVTePi_CiwW%!SM%Ap$(C#DX=~KY;}f}YMBmgYjiQRl6Otgv;Qv+SBR6gT6-kOL zO6MiSFr}k;=}tTrSwAI7${hF9h|X5kyEm>vK4W9#D%!}hzxe{5(j~ZoIc)Jr9p|l? z49<-3GzjkNjGNqqroE`1U! zEFhs;MHEvi8BCV?N*`1@Zu?7^a=XmR!+pFQdvSXj!8ku2t+VnOA!%xVGF)ktT@>_m zbZ=GTZpp?lMS^gj=)RB>E%(mipw&xys&dP2gG{FpXY0=m8sT4|F@d@~K$Vtt2K^Vl zGfZzA_kf#$N%+SYuuc{CNH`1+@XbG4mxya<#Su*nkTef+mqpsq!)F;SCPwaG!c@(2x5dI>oKQ~hNi#UQO)hcz@?R0mYqM0DN%aW~!f z>b*h{Xk|6+=!6AFa|asj^Jl2PNmLxa3V_BgcR5|o#U??~6Wu1^)T3lAYO4=hqm>$_ zyvXaTII49neUTz2uQElwrcePI1`O+At^}?{q%AYNYWT+D%75-RPI>Pa2B<1PG+Pv{ zJ*Moyhm;|EejRah^LO-)9#l%6(^F4mJz}?=FdxVlsB-s)(gL%V1gRdPh$|&7S(tn2 z$iE>`^P}n*T=^TDY%CfJE}lj(3O4N~GPrM50PLfr@0_^fKvXj@z>E1TC%{`F=FHF} z-`i;9wy-y*7F|sd0Jjq1=~YzFRVILwh^gcT4}Z7=CfKp~#K=`W`75U==MPMS@U(6F z-U?06oD~*sZ+2Q*%Geb5a*XBSmXU6D6$dl>EMmOrj}h&;=X90S5}U?bFVx*SadLLh zYC=L%ASRF#a9SG_whmx$vrnb`4H)0;BbW&hnyx}Q^c|XrYYy>lAogwc6BmEI*slVprM4$v;lGT-;h5n-~n5vs3C4-a^bBe z%RB^VR-bLHV1pMQno8N4a~80&;;2`JI!?Ii3J)LY`OXrl0#$`Q+aT%IWKsOMAF_qEXKL17z7ka=UE!_~?t>}f2EV=P{`5NSWE zu%#Tw;@3&kYJ&>Ws!9U3lX13S{z_c_(g19M-On`FEdm(&b3ac$_j8n(I>xKGjgu9M z9>S_&?mw9aOixaq)C)B3U5P=F@cxu4sT%||1BW!q(c`lz@Ghkgc}C1DrBfK6NAO;S zVBImC@TA9=&z{;=E0;!Hj1AJjdrt+sP%}@`!NQJXeK`0Pt5||@r2w+A>LDiQSjDx4 znDliMVzYxjUKE>wrE?VX=D9<`0_jNso+^_sw@^wgZ*s)I%Xn z>M(dxN~+usIQP$NM$N;D|8ApUC%}@0juhc~cxB-^Q44lAJ#AkwKm3NW56@~&{vb{Ms8S%t?TAyN%I zSs4Yi-lE1P>kFN&mqttNdAW=R@6A3z72;d3G9EB*?QogNFJ1S`&jRR;AdnT1A)s?K z((|&S4#x0>!^D|LO^D%?3xqNkIDdv%PeaA2Igds=xNUB2imcVW!+zYt>h8Ebm5ygH zc8$!|$4LotuSi8d>)t-~$>0}qe_3dE=*(ktK;u#?61;(pY$!Ng&UOI%Oi;a-kV+h; zK3oeTVBFTDI%QimVl^(k+VH{M>93SjhhB**)>|l@80<6!T z5i?Wu%~;r%?Or9|BoWgtprqd07>1q)Fon zP(p})Ru?;W*swGu7HED}n|$*p2%F``Tk>=n@~`s(0atxq6ZSB{1tjkaU^;W8B*xa2 z4Jdq2yR%|NP$%LWVPJ#uy~&APe{}$7r2iEB?LoJ5PB_WvTkmyMY=1$nf$ZWRL? zI&oR%I-M*Vl=~o0wY7O(8|yfG>JQ5S;Vf zuHO>;wBWAfw>bEBt!rPp;%xQi)hJl5j57H)5#FIy@N7n-eT|{b#LEE2YCNONI?s-& znDue0+2DY|szzgxA^}7wIEN+JDhI2wpUsbaI91fG7}y#AGm`wO1Ar))&a4)IToi9V zojUnw$_lKhymqMbxcoFaH;D)MI5t0YgigUuhJ~;lbw#`c?t_ds!uil`$Fda)bBOZ? zYU}1rBO!|EMWNFZ>qEw|g7lN7N;Vu61}#`u)coy|)wYzwa&&Y0kHQ>2RnklZ7acsP#QDt9|U0OSFIBBFe!7pT!61X;<}?@y0}<&N$?t+rC1 zy0Q08^u<=~$pp?kUH?+>HR;-v9rq^OE6fQH;BG*!r8x&4qwrWm$q$vJZJt!-3hXGT z1#R7E&7BWy6+}SQ*l&fMI|^U&rlyZv542m^sYsg@-#Js)6Lb%RlFeZICy42Wz7}I{ z^~YTS3ZW_^zd>i(WuAr3x#*)#Qt|W3&2ngDeW#GH{mJzD=}@4HNVUUn)rnRYZ4=WN z5MR(i0Uuj_a9zH0-FJzyDQ-3@sM<2~$Uj)(1pU)dDrNANizX@(Hg!iXX!vEWY(bhk z*3eA|CbY>->9A;1KD0&V$P2R1MekhuJZ0weMKZaq0tm2;@{SV5I;QGu$zb6zLyZu% zAiV(g#9?wP7m0d9u?k2;TtXJ|%M;12ZvP36kVJ!d``BHWQkfjx9k#6-sc>BDW#38xLGNo%77N%*^?$(+6d!MxAlK z|0gLhoECZs6`&Y~7IRggx}cg3>v4Uri)cOF0la7=9P@T@;jM)oIQ41X#JG9UR~s}9 z0^e0sMRQOVU@7f52t~k;Ynvt*ycd? zQK{!>0yRPal~6C5pbTO!%tEHqojM8EpYIH+O(|N`E5jJ(`EdO5@O&ut&V*<;@nbb5 zR8+CBBX|&cDn6i~p7yklcoMJ2SusGnWt+GGx#`FgIwNNDdE#@>z+qb#Dx21u&NVni zeCmhu$5apP2T?8O8nEdVSS^63>i(c*YK)5u*F0iOu0#H3(^fX@yV|6v<{5{x9SH&RUH6zZUw+?$}jQ4L>OEjHM!lewBM zLk9+t6ws=I!3ppl3pi5{B4Mht05d0pT}>HZgz@aW46H(igkVcIsC{nus!frSFe@c6 zPKWcbd;vR0N)wC{#l2J!{1^Qx^7S*FMtRO~{PH)nqQ!T9su`{0{m}{jZWSs&WiKiuFuXbTz<5BOSvli-^pL(QG3xC#+ z?Y%bxRnIN~U2G*m=CG!m(X)<)f=J!is;We~D+`yKvt6C-$_-94af^^vxOT2^N;Q4m zu*1oYkS|5Qq%zya3?MQIPJg`vhXf3HX>|00Z0G1VcyQ8k>!#svReM)%1fH;=`WaZ! z6ngqa@iI}Yi34cBw2(fnmHX)N#EdRAzmi)1!xY)=Mfvo0(6_QMEJe+>Kpn_#sTUQ0WZ=Z?K*i3v?NUnrqlD$Z%EqS?TQHXhU28u-0!L#$DqX9(7x zHvs_WigE_vAWA=vsA_7M!HPtP2+d2y1wZ_=%qn}xNd_<7kocA72>UlE$&HUOi1)1l zq*fH!Lupflij;sxQRtDXpxcYJRMxyS-AN&yBANb|1W||-{#Ioq)+*OqUl9HY@wW=q z)mntKSBp;`I+WowGyU;X4%Xl6Kkv-L>X5|^cnK5{EL(t<09FbzjFq=mO9i72t02et z>9!Fouy~BsW;mr#AUeQl=jjH0jB@(M(huIjOvqvBnhDVVU>(Y!gN4_fw|Mx{gcJ=@ zYYkMUY%1Jz_4HfzT&zsW8a`mwB=|={wgaTFZ)bZK+QX1GrhJHwyS}w_tn~%nKjTe- z@&-S!09~&vWsCy#FwC>9aqhr7zqwQ#<04$5xb%9he?atG%`^XT9sz}ZDwLJ{;bt^B zsNcNZh>K|$ux7e7KjrOIgOnCj?2yTvh101(9uzRzK0Y?-5X`r{Re)Y6q{(_$xDYq+ zz9M(~z;BzoM!*U`!P-6K84id4F|)On1MIvfuAn_=2sO#JNxZBr1gImH&I>V)>nKFO>ewS?D-&h1OOx@z0;|_G~_|3peo5n9& z|9Gi5aEx`rIQnUf+*R@FDmhhsYt4)E{-N~2J zKA9T$ah~&gwO8ckobwL6aFw+TsKfg+G$hsWt>^cL zY@A!*S@^WKWMFPXAy*9p0SbGXktCF13N@(*5?TrM!ft}zuru%zuDl%&we;t4EJbMO z=Eu`ySydFTtO*lv-qH*rb@D#znEH-a@pl)d+P4Qz-iFK}eK*ofirbhgbP)4fMex+= z$7pXUq8l zklvKEh$bHqKK&CG?;(IGOA(|Ug0@)rK%a>*0)GVr^f1A%1AC-Od`&U+uH|_c`iNdq z4@t{-C{USg6ww(wQwkrzz z722u4zLVS2d|uhsSKqcK>Z$dz&i4(EKu(#fQhZyEdXctub5u>=crNOeOix5*y9yJI zMGo_3vfK6 zRw(D#(wZKUfVY+s^7~MDEaS_W_8(weu-e_4lZ#Ef_Muhy)z`9WB^3!e;ekuh3nK(| zjxm0FA?8q(nA0VG|9YDKRsRJYMth2uM++f;kG~90SY+ol1&^NAk{mG4OX9mutXKds()pg7RsCejN=*Um@r$*C+HNd zk*fblU_la8T~UGskd0r8qr!hI%|ghZw^!UL*Sts_N19_($_hlxN2Dw_P#pnL6Z6#l z;;+rMR#Ug84e4dQui>n;;s(@5Gnvc-tO9voiXcwbsh%QkZ-ZJA-)3nW$^B+F4Nd04 z-C0ZO#sk!OIBT3pH^MZsp{zJq5!$-9|6Af(`S2E#Fw(P$<>PJ6XZLP1O$xDjXZ>v6 zoE6>e=ZUTpr6#@c=5KR~5HG3cPLv^bEE z&jZx|C=vo67ia~{+f0=da#~it7EhdIc~>dy#;e$xry^aUeQ?$PW_g$aZpg(C z7ANO%6#hodFETgP+&*{{3-DFVYX#-3ElO|{yB2;Y_b=_sRyA^b@6CVZv-Q zf6WDg&VdC-1>tD3yvRc;-~1r$V8It&foOY)8QSWC6#bV7F~iyS_0zu;+MNC`W*fz7 zTW0F7%V`c1k_J3jas5X1I@fu|D~AKHf`5nr=cTY^s~<6UNXDs1*Z~tm>UB=Wr*>kg zUc?E?NsUzQ2Ksa?X*wbJB^_{uC)3x$;}i=FFcQ(~U>5QZr!W{!b}}JwHWF6dEI;5X zNRJ_@*B=n-l#@iL&g^uY?^@l$jWR`jd6a7e`5Z(XZv!UU!yGFW)KDQ`?=c+dl+o=} zut&SD$m0f^Nl?5_>@Yo}=Vv9wE}%#=DrDB-Fsw7|tFmp^84vhZVOn4l_Ep%shdT?T z&{00_$7z&l5EZK2djLO|_W=3B-io509w|5I&EI=Dh{MER! zt)ql1k894hZ^%On@`FLINTKvdD^dK3@&+D?#b+#V5 z@|oqR-i>YD?~Y{YSh@w7S;h-ox$j zUSCUYU99Lkq32yfzJ*)VE)gPY>-*IWyv(CsqhAM#T`Rg!31dr^i$~?dX>EGDA3ZIE zaZ($$g&UB_h$}uuGVAjoUS^U|j|cA(>xiqdk6jGEh{A7y37Z6A$BHzFj?^I5FoG!z zLBoUWs_=49!nNm?s_5L?eUYc_5PErbx&Je`ON0i82Dc(bQ3+4&l=P?qw84No#VF?? zCsA&36Vp&;#`gv}6&e)JP;E{BV4uR4&USkPE)|PW=<{eSU|xA6>@W{OKu9jf)k%-7 zzMJQ$w^%ZnvQZ;?PEvpi`{tHA|2(b*w7d0!k1G{(Z$;_y1tpwRv8B?%dx zR+73xvPS5O#aYfEx)1bu#okqw)~fVX&TUV_5>Oy+f%CBz~9 zU`7JK5Bj|h+(A1*1B-6mJlXHBTx=mJBw0#udrD zR808^?2yZeFtJHYd%nG?FMb&GIShRMKl}b69IAj9GMgIk+z~*_(*fx$cQT&4%T7P) zJ+SB?>=NKC5;>Gtvu^a{+uQDFz8yU!!}E+wPlQox(_@AtZ8K10*_G6MC1V;n=2+&T z&JG@NY{xg|CKcFs$-JVh;>(R&c{#X8(iC295lkgcxk1u3i~OG0Pv)iMb07p|jI5Ch z#xjS?{JztOwgGsg^m?7Nr*MHmspGY`t2`CB(2DjgZri4jEHH|Dh~tR7l+G3rCK^}h ze^9sjv{-(vrdQ|Lf9lbH)k=PS?R=d!{aZcywBJO2L0J5nm|qX0EBka)hr`=&_;>$p z)IZy;U$>+GZP^_M^$2gzv4!$=<$qPt&y%cEqaC zjXknP2Z5Y2f-Sou^5c~xx_FV1&(;PE>GX@|=3>&FH+qK$~9@_OCxc z>Pn-@d%En%#k5D^`dxVkcCH5&HG}o>YcXHV2yw<>CH!2A^zq@PMi*>iMP)0I*3LFH zl(zkIe@Ydg^oPNZ{{q=lxe>-6KX?!?Ac3QnVLH>9^S0+^$Dxq6|99U@F|z7ZJx}zU~ZP zEicy{ZhKkw+AZ>GQ>43fVCcp%^Sqy1O6Bhc$^)mh($J`CoW?4Pj^`20%b%GIJ%qjW ziLNwALET-MY%(eG^nbw`S_6{v-jh>_=$lR8(Qj3hrB!Ft|CA) z+v2{2hW74pXMj+=eVDB_hZDAtQi5dSL7pMoY6T>L(^1|YNfD8JF}(UA39HeJ_}BMZ z2!J!xv@omkjcq>IRBm3>l>yVzC7DK{mNp{{gEU6}g@)2Lw>gAosbs(>kq1x_`nr#b z4%Y#I_<&-d+yc|h_$uTbN^b4vxpIN{ zzFmtqqjP6Aq*IRyIi9#w8-+PWd_Sdu+ZSD`@144X!dWLr9dabiHfP z#w4Ho|7_@3Xpn@4vJ5P3#mO=+xD!jd&32%z93nU>z*o_`YyA>i(*UIGHiG<4-F<-r zwXMV8=?>6~I^m)6+^e2x<$<@LnM57BGP4KI%J<%JbtY|tz6Dq1alL-bK*`A=o~6uu zm$^oqvX7Oka6J!^rbSGbysSdZ-V2`z6tzx0Llq~NrG|kk=Wcek$8Qqkt<9wLm6Y&+ zA61~$>NR{zDzd%!CuU91ek;@Kgt|B?YILn|vb4$2Vpl^8LBoF;({|HO&l*`lfDnt@ zH7QmDJY4XX&xY|>XzXTjM#ezUSxcsk@{+(O==N3;2aD55vj1twB2j~UKrS>ujQQrH z9+^T|9tckIe$%M-J*dN6$N}3XU){45o6muaSzT6>(nka1ylZ6`=?)!@5~@vYOgy6; zNvUHD@dE!RfHx}+H*!8Kfph6b!g3dvy?`;Uq9!2QYex#(Gv9(met%hv4=8@7x@c}E zfd_ldZvRA2&ZYM-#$dzLt9O`_NYZfN(nV(nX~%r42@2O5{)aafvjtw*Re8zUqXyFB zuE1{~;)tjE1aBR178F2v0dm$$N9|Zgs z0N(F#RawO=Y*9Mr6=GVzSYqoJddVttcJ3;I-FbM#_pB5W9e3U1&q8R%_Bh>~f6u+{ zvwbz(TK!+0v5w0$`3=rBy!&JA7lKz9H=Vg%dfyo16JC92{MLjLKSdj2-kEMPr3h8F#V1pN`hB_V1__=XoC z4&=8~`K6)5vA^NJ11(m5op+~T3K*cs?Jj)oSTJ_r%A6t?Tq#^CV6dY^jz>ZPkmzY0 zY8HdsbWR`YOm@Q2K!a`q%r%V}hQobk!cTv+zz~}46ekLFx!_qlMzD-X6^O(jJ`=;J z&eq_eg|>|F4G8}d;VSMHH^NGgl6D52MxbtBEylN$(Cp5A@hch)HUb$kYQ5gYgkhOn zir}^2qeNc!ijDeso7f(x3ZMon%ZlBP76_eUxC;JXlQeeO@{L~%TS4S=XYm+ zCdE#6i*IvMuW2J~jSW1kA;7jDuPNet@owJ3f{}TC0i=(NcRqicWRFHb0zqm@5Hl1d zOn;Ae|7%5&5~C%oiAr2qRW!K^i@FR?AKE)%x4>Dgl;XLaApoEs3)T7Cc-?A5oOS96`m+a=3j&zSryf%f<1_Cd4>#OeqoM1PY9i|? zoK4yO*jad|uk;-Bip0rCq6jF}CCi}MSuDeq-lsQ$mgv=7lqqfLxM{UFp|~E411VN> zCrU`tVsTBRZm0Hx$r?%16D?+wES_i2ON>HQA+e1!Y}bOZO~kBqU$TAYK@-q686A;# z+Hese7-Z=)vA!ixyL!fRh?nm1SkOM{e5!_wEV3i2Aysvpy^ZTxFeQ%t9?C6#4Xe*~ zl~df|UHZAw4q57U-u2x^@-XFq*SawiQEx)WlBnvIoM<=zQdplho+wMrhXQ}k{Z5tC z!4z-cmp>WM6v?hC?%Kj>-hlQxJwe~Y<_KCYdOyNm6XGc0qRAcB`WXB%6!_%e~5oO+Y_l zVT69nk2G_c2;xHwn#cz!YOqawGOc5rZ}n`ovqQJQl~qZ2AGFJz=5fOv=&!wzQ)}~b zV2mu4j$7ciZ6`MLl$(zw$8-)6Ei&26?>t7S>1g=XiDHkM!^4+g0#}@eYTCFfpdrQN zDWV<&gbPbrP8?j*(!mIUt-ulYWEFnSfL4tc*VZ|vf0FS3Ky-?j#FiH?fzfTo?4poh z5H#lI$eX3-`tFY%(wEW}o;!p!D%|N*?{yBPp&8&bF5N;P-XH;4!w-gGp{PRgcYcp= zHst=2#dNF+g6cocnFYflTED95aV}g)2`WW1EM(KDTM#hc5AMZn_+f+ksB2{;L+{0f zdoGv{7^bB37ZnFr(_KAdSqI}|k9nQ0uqk+GU8_KSa)(u0LoHJ{kg!JR#geJ>^o|XqjW0FaH0?DpFmGQM|0r+^ zHCo>l{jI&h-y#vK!|&rB&%Q@M#aki}UUHiRX3QorZFhX&*T-Zha~*O!@B_|&=W&zl zjNe4<<*;fQOsG(QYcwhA(cPM&Tri{hjZ!C+?84N+#(+Sse~VORX4=sugP=JRIdprJ z-U3ThqM7SjBRrrA_GsAgDdF`+6|tPi|5|^U9-+zxabNfQ*I5&Z{gb@O8FEB>kn{dQ zj(9RI-(tH&bR5Tabfz_?6nI#?SZgf5Gf@;~cMf)4_`hUY5gT1HNLc3wl~8JSTwDaF zJ2i=p0T=)ydt9y$%C{m)8uU{rE3P`9uY_ot>&5fA2E-PlsI7 z=38W4jK=|N3l`ib-DMNxxGwFb4$_+I*b+B6suO{&`5R+aSNwv6;(x)2u_VqWMSu8n zEDlYK`B#{)r(qoBS3wMn2_Im27$c%a?W`$)8hPLrZcy_t{qgYHrutY7&Z9wRBt!oX zr*mEHx7YtB3?jE;Q}!@!9Zr@L*Diu2%UG^*a1J9!WGJ5pm2A#^P&Ibg)gJ_kJsoOG zcli|NiMTHjRUr(d&4^nr^0ghp@|;9k$$wz|%JJ1!*wIss;T^rUxkG}tM`Hc9bbbj4dD&*>&X`?O zUBtCh%Ss+lNm)B!9igxs;=&c@kTQxkXd`* zIeM}&kbJ$EGj%2(t$>Lk@V<^{qcx6n4HPzvkKdC}1kc6^g2K_>u?WRKoZw`v!~+aIvIdpnQzNe~!V zg)ugbvzkDikXuNM{mT!!9_&l~2Jz!L={aorEswGC2R%s%k*!t@g2o>Zz%pVy2*hC! z*v9m=ME1pOsyT`<18R$9&uk6hY8N~kt04MxD=?14NpC3b1TWVy&_WV%pboYHL_hu6611M zS_JU-zAIA8woipnKOdp!BtQy>sp#qRvT@{ZRv)L+Fk`@-{!Ja*d1G0aiYgqlo?Z#m z7AnccxbsBIm@H0s zN7X0yLd7g}w2mkEd*2Y-VLE?3RxUF)ZC?5A_B-!%Yg z)bjJI2uS$6-KpL~t_?0)t}gUK=USQbtSEx`%pZXrW;C)PxJWfho|wM2HaNZBZhlHx zC&b^q2ThfYUR2r_pdlaO=?P9d_}tU^^7Vq9E6}8O_{CxxzYWynr4JsSah;qF)%XZE z{y(@H4NkQFUkC8f8IiPoR?zDU~>?>TJyMQ+SXORSy=0p*iFkZ9r4%hT&H& zL+)y`xC(HTA|MRYXpS`$q7O3C0F&3fqH_?(YbaFC$|GoCTJeyAJjm{%>(=quSe+oh z*5KOTt@W#S3jw`>Q}#h|g&aiCDeSC5hJ;{CH>iL9VWeZ*Q!D6_(akvh%)zdvu1JdA z;^I9{`N+0m_zo}3g#D7Qe|gv}NIgF!cJE}H_@>q(o}12QAow5tUcNl-`Unu4%IWXo z8SJrV5+H5FyQTHh0RKzHn|}t|{T&SYPpZK07Drcb94Pv!El$)Fg|xTd@I(tH)uJw3 zUW*es@+pS8Zt&|%`MKhKvP9Og%33$CLB%+r>hCVXRP}ygP#uUgjmmopR>G-j9O$NL zpfh=(VS%Ibp#C)|^zglw3lsD)V)Y`^JZK^qvDI36fwy$#fqb0)A*@{RZr=xBLVdMFc)`w zq$(M+Y}Sr&V*g;?3P~fQnAlVCs73K^JN<6z2`6xzgIE!Vo$$8-VoZ(yCi( zNZVz!T2LX3|9oguF4(Ect$b^ks)Z)L9paX2iVD;pXPz zQ+J;}T}SEzVRq4+e0548LVO~nR04D3sLa%!rusyj=Cy|w)cuaVA!=|7v`XB;JUpUR z6Fg;}EdFDctp+#>n|`0MIZboJll^tgtk#`)+9=_>#paZ%X>i}Qsc$82 zDjEmE*MeHSIe8db+y1Q_|D0LltmuVSlfh3Poqcu6{m@zd%F zV1x#Xz^FkE+JDITO;l3k4L1qzHOYS4WUBo%Jmz=Hv_za#B2Aj^Hl4D;0?jR+IENGq zrmExGIOB=YxtPhB3yM^Ps26SJ!ez8nkGa<4@>6(a*CH&(Z>c2=MMYBAhoBh**3dt{ z*k4N2KYWTAc*#~w)?op{t8NP{(04*=a4?i+iDlfD&TgAQQ_ej8Y*N;nE@2U3N95@s z562z%JmTX7Qt9CMy?Xz?&W5k@fU7%{804Iuh$ZjrwZX4F%n z>qD{b@^po-u)Oz=KLt%3tlwE2Sg{tgk`DAl=@@E-xLv4F2^V7HUn{SVJhEO5{!^=gk&5EM)w)DODnW{~>#1yvVW z9ai|7&?X~{$yvTD{i^pLM)Soh5nPBx7zVDz324it$|evNP3WU{--SgZ=bct;2yZ)* zKAJ>qO0Nt3sC#{ZCb!{^NSyWNd-fD#;x7z;O~M)!T~@6T&bLQp<+x;{=;Eb4SW{EzlcD@*! zUy2kW0DWjz*`esHyDhmkJ_+t}zQIX)l(SROo^y(zt&1WikN?uO4uE0mlX9?KLfcOd zE7&a!TU|^XKfMM#);o6Hm=GiV@(rR782!~*Q5smLwdD?EjKBS+*`Ur&tO8|72IA9C zhMSx@r2EGZkAFHfc3<;yuz-rNPYcwbQE3s-OKqB?^%s6t1Vi2K7z<213!BBCn0o(gCutidu(jj~9bP@?rC zgHGmFX9sV#P&aB&N*XZf&8u8|(vR8~R`Pl`eBf31RkG|5fXW0pW)H?flE=9459+4J z&w&4OI9c%32rGo8`G=cR`+7(=rSkEwvVa11suDId(TrX%%nN;1tEYwXZtRSt#=3UO z6>cI*n|y#);`d{eT(OG_R?I3TRut*v~=_^b1e zh6rSfdw!X*jti;%5FvRo$lpG&0&QcAU+QOSDpjThlV7(O9V#~^Z*4~s50AJ_O2b7_ zilt;@czjl|deAFIdB&isoNe1B&%3Z|F8W}7mVbh%6|6_@LlqAtIRGAtIgB6OrS4G z1=%oeYis8+&tUjLrFQHGHm;l{Yd{2J7j_1uA}&6bzD4JTM+*LkHnx;3WLt*2Q^Z;M zh;%&(=~AGE6+FAGqko6pGdQvdn%?u!2TfJh8A*5F#W0iW8Nt93{g9`rsG)7q0{qk| zwJ-=oyhQr_0R(6Kyk-lLPSn>p$0)`QlZ>%9e>eB0rQ!EBFZ@m`rdmXLb+B6E9YQ@z zYbcmri`VRawlD+(JC#==#gxww5KHLL`+OqrB11vizj;t;$(y(!ov{52L^r| zLs&{Iz9ibjqFc@(L5Dd+og=hc;2>T8mWr`0P4|KiN%z7$&$lp9tUk&a4Ye2*81(p0 zb$c!R3=ZYa7l$e}Z@bUN>3o(yogkZ%U`3udqGaaAo=1P?%?~{L>!SxtYu`%F4VqMkH1=o{ioq|u>G<6 z$o_G>E6PLQSG~m$*+7VV%(l}o;+!<%z57L>ms(mxnk6CWGc-x;Cr-9NMyG5qmqf%uwpPW7l2%g*5+DqSb8)!6>6#_z6=n{v@|k+ive% zMND(BjZ;uza@cCq0)GmYVH5LzMLSML6+MJ} z=1Op)FPNT-KR~3cw`8)t#8OkFx zPHXuYy-+_Y9x4z1B4MA4a{5nOoo;W?mh?rY%rj_JnN|zPdk-FFhy____}OjwOu$7W zE{>e_12+~&3pBcBgVT~Co2Ac>OA*rjw{p&#&a!8|7pa2it({|S4MmDakhKY`Z1vl{ zl)r$|RZOr2)rbNKyp_EeU{bKSmw7uS`{qm`u(TM7{eflKPo(){NIrsxzkBuA;t_CL zwSc#AdH(9dIEnA#ywCjn_$9^N6a~*A{)tInPbOQ-?NrVAVxEj0Tv2=LvWxL64fMZl zrHj6V=%)QF9V)rf=BVY^d-Ld#N#>17(ylCnL(f&%2%{Gt!>@>wSUmEdFMx_^bA=+4gc(Vep|1M1s?E{ zXViWWbw*FrnzKG#+kQpy`Fv^`|=3;y3Kn zP-l8QuP^dSmAxGomrhmF4;t=TR$jrKsN%M}>+#!`l=xfXJy`U_=Dh_)z1=^y0N$YT z&A)9_9f09+E1h**cw?^(0os%(12~~1(rX5HLsJbd^gLHPP=|kW#Ece~80*5?c{EC> zkD|RnkqUH+Fa>x1F1hUq=nYN7rYb&VgEi)i`%Lyd=HaI-ue_FKzlDRb{(S16*VGMj zo%q3l+I)^hr3*tbc*S(o36agyFXZ)@;?#E{3;L7$S6hDK>dqE?8!6?Xpix?}pG?af zqhrM2x;JM|>w9Qmg|t1`RQ6eHdlYUIdfEOg%{Rn$8eyo*SDpVShKshs^D&GU+5?(V zCzNe)YbbkKk*}HCIm8e!EW}jPbGKD73jgj;t6`&UvReU2#g&D>K+3ZaEP7%=fFZ63 zO6WkxCGE_BmFFfuf$N|3%TIZO+BMr73^=`$+(HchY>MuZr9ag}rL6yVRwlhJ6Y@fG zi8;D%xMDxh=vw~9cYTWa?7>r=Lb0>uRo7;xCuBFw(rI)h^w7NQMwBMl5 zSetYzMPANM{||x21ijRwHW=5kh>wTRg6%+g7mK2W=Jo-(5UMbtWRX`pi}9#PoM=UM zaM+LdT`i;yZq;l!|IN~VnFpss(0lg=O^FL@|GJ1-x`N2 zjY45qEcQ1yl9zJ@>u)ohX*9&de#N7$c6GMv#du0S=dIS=8a+ho0gWn>NU*5JL?6QU zX{vjajWK&%KAxzHq~&t!SaLXQG@wp)g`X;DO@T-cWJ%T2z_6Rr<4YIUTLM}XuYZOY z{k#^}1@%}jr~)O9+uHE^Av{$ufj&zsK?t3kFH=_5;O5sGu5*Ne=g!XLCy~07Z^v(| zhObRn&$j8Ott1zPzSfGbAd<3?*M{7u@(z+UiKC>#Yb1I@a7 zot{O+LxSB+nLqmAS4O}11Y`sl%&cL|+8cIuj_dY^$<=xv6;W=-9xJ|@O!D~8oI|Re z*{N^^{IXyVzVSdB(2{2geT)cKi+C-)Xgm{*X}oMO8~#hH-*&p$MFjpg+qX{c6!|_3 z4c>O0z>I;ZpZ0MS-pxklIuVLOosEFC5(;vQ^RG@y>j{9$B}O z=v6ddSMGi&-Bq4GnBbxLoBlGDXJa=`LqePg4wbPCyi@je^v(<&iIl@nVr0q>Z~IM@g+F$NS0pF4?kN4v$)eJ}M;_vES?ab*mH2zI zgKNLx_2!AAN4B!O6%Qo*<+SnL4j*PYt{{=1M9}fSOR_5U7L@p7pdYOy~wE*&?+!5x>Ww*`9BisfGv+$FI81nJ;MFslh(H!LxFbr zIm-IE1;fyJseb${jKlx!xbKaI{84A((u<6Xije$KQIzqGX=NszH44?r5a^Ph7E50~8}~YBG5$wr@j+V>gJs+7{Zl$$uq>My1qk$s z#$T!(gP&9y$lhbczJyfr&mvtYlJ$?}|4Y9LB$!JqFDlkjWmT8-y~f8Uq%7YZV5-uI z5J}g!O|iFhi5%<-#twd zGc$-76H93UyK$ZWr)Z4|WD?k04f@zu+E+ld@cO|=X@9QlMhJq+ME?m56fP{0zL=J> zpKv7-e`23S+}{izMADzm8TIJ)q!fd_T0mGJ>aLbK+F0*JMdTkNMfBoS>H07odKNU+Ccp_Q3c`AVb>HP92_^e2D$uXO62aGfu86!=Y zUM9{$6A*W5xgy_;$ZL8rx7cN+EzWS==j_0wjCBtZDZaUz!_A(bvKJ5E^tRO?^|&-8g$9C3-#qSuoIP%(80LMG zx**k>rnZghqHSJMd3bPmo^A{3eX6HOvm$qS&1H)I)wPWtANjH5ZZM!{jYZgsb;W}}WKfyV#>=Hhg$k|kd z!dOLbsZw;K{L7uVjJ(xrlMS3<7!AU&7cwIabHeuw{@=}k8+?Tilie`)B@iIva zIeJgP>|wmob>90YZj763X^6Ex-j|N=pfyvb(2F^Iy!+!kK!EgX31jW!ez>q|0-=s;;=`X~=y#IQ>aHndgZXJl;nBCST-0+)}^2-f? zSyXLAthtJBTO;0jj3yi}(hiLRV`oYe%a(!l^wGb9ZOU`aS#Hyd0w4h81@tid;54;1?<@i_OGLGj(~8wCvK z8Jp$Z`N>9ZNtmm-Q$%L^?zr$6f>cuu0dpGqC>SQ#lk?Em{_9Kx=4YvDZWLN7gxtT4 z&zb}lF;8QI%AYMrS=gU&B1`8b&$i}VewE)utyt?$l}`yx8u#%bO;z8dC#X?a(K`;& zNw^&#Gf`E)t2Xa!>|RW)5IhV4KB=r6d)^)dOw_jTK3wh&4z8&V!l`}=7v-Of!B8>A z2%nEjq-To&W!K?jXiZrQG0C%hYu226EdCzF*>r9>Zb=E7$vs(-QiKG$^nz3Go>wn$ zZ=q+Gt9$o-RP~E7z15n&M{P1;aWc4ALQj4O0gVC@{ z*0TSLrBGq?|F`E}^s?nu{k2GbrXn0(=6B{F<%jExY^cvb!Q-R~6IM zCJ+xjc#zEZQYK?#`=(eTo%*`y^lheJGE#~9`Ep8+n4&DhSLjN?bAo#!QbvV(Efjw0 zd%~fT6Guv8oig7p_Fj=`S;u1I?(i3qfxiGh{G(fy%o#o6Z@)eKrGQ{ z9P3cGNwbJ+rzomq`;tS_hzNr&aNw^%!hb$N|1;#(V;e%sX^%N$_Z%u`8h?8!0S)sl z>SV2P}I7ufolM60DEzYF6- zl#IZk)|zW5mZt+IwS=`ru?#`n`9H~IET~be6G;clZUmzFkP{F|)W0O1ex+&Tbg8Aj z?_Iwt?J&*9zwZ`JMyd{fcEeeJH*C5&rocNh7m#-6 zIr3hpzY3Oq4W5^xA1T+*e7sGC&s4GE4hp-n!$Abt}jJP+Sq zuNJa}`~8+POhO#d)^rgYIW$j`4)BY>!pcu0)(blA9gV;Sc>QC2=axPoh{M~duNqh> zGb&47}??(%hf=Cf_Y|M2$6;6MT{&|6p@T}x7 z(1}6P8TM&Z-31cqq*A04-ACyItf%&%FH!jOK^%Lg8S#=pHg*hTu1MAY@or+uie*D& z`l}UpsXC~8t>!15lwGdHp<~`!(?y%Ze}u(t?vhE@+xL0?&PhnEjdI#oN$FFe&W2qH zTj{L-R)&i*xqADi)fuVN_(}ZaN?QL=+zh*tt>e4!ZoRPaayZHezVmEu?EXBO2*6r{ zkV_iW1sc3Z3E(+tgO?6`Y5$-&P(eU!AXZ50wNV)lgO}AhA_htCHCq0gXOvM=yooLa zOF;lfIyp84Uf*-zf!G~zGM(-L(1RX5#j+g~LPMe(IM^&9x8IJgWk!%mMEPl!&gPI; zSvqQK8G#JBic41h|4tdF>`$74ifV)2B#?exw=>mZgezz%T_}b!<+V-;-Hk z?+$0wdo}Ed35^9f==+Q0_jX)8K6|zCFt)f%8{F?MKhWU604RwG=I_p7gOg|CC;Oa> zrvJ0kAglTjJFwi)h#DZUdWEPt!FiE;?iQ@w$EvH)ZL4*z3BwJ>6_ia=TPwJ`Is?6k z>ibun>S_ymaPF&l46b!Fvn%vCJoOxorHX|`OZ>XXTxCg2mRE5djWS$Bm7r6YG>n}jN@Dc zQKzgeW5JPV&BZowNct!{IljWO3AeT>%NJ{$hE& z5V?$W1(T)ZcpDREGh}Mh6(X@hmjH9mDZyc&V56#8z$L4Iz)T?f#;~&8(+Rs>aRsq4 z&(GxIF4539eqD1`zd8Ym`mqOebI3h5E>!UeE)xT5)nU0(*jMzy6hF&9HAR3&;gze- o^$qfJroc$QyMBhJ-F87)*d|7Z@cW9jse{JH*BQ0T4+`qP04yyW`2YX_ literal 33452 zcmeHOdvsOhmH+ND3E@$o&e9H@%&P5L{1ctwU<;)Zs`WM6I?kfg89Hmm+L^0ZX+AG~=i2H|SAQD9-)Q>fD~)-u>8^1*OsmxG8t_@661U4VtWdGrGhpEVfg-oZ zqz$XkEe8CC%M4iq1#V%=&5)H3X~1xsA&B#&7*PI@uyUoj)9l2a!x{)kozrJp0Vw@$ zC(r}JVVM4q+Zu4Y%>v;y{8lLB9w;$fKH!xNh!7DoiI`z9F<~+>VJKokm_#gKI3Z$Q ze#nScuHh08YE~x6ZC2QG7+~cz4WHii!!JArk@6Qm@Z-~z0+ypwGxAy%0&d!jEZRb> zBqPgTEL@=DD>WQUX61qvKSB=E#n69L1QCB+6=6ZlKJ7*x5wp*`VS|``y{ipk_QShu z5VIe-O9nCf(Yu59?z#OtxF&QQ{MhW|m+O)c^h*1HUo)->L9eW9{L1-M2zsrCPkMzy zetIFio%C{rLYL^377BepuNk4xReELd>sn4IbZvDg^eO!>>_7jc`CtARUDNI_?ib>X zO~Tpd`=5=1E<01W`wY|SuM=*c;R{){!rN!iM*jxk_0d+yS}#Ojz`)sB{WU`Pu!#%O zs)jVzaMNc0I*4-(T)?=9t02#l+YYOLEfm->>FTb8B42Jpu?7n4_;aDCfT943T&xKF z?hq;l#yT4n40=c~BT@NsANh$2w&h z)j%^X%P$=LW-Xi#AjMbf1{#G9v>^kH3m0s$W^kZ!vbAy_%M${PD;^7#@ToxKx>kV( zn2+NO2ZjnWu6rK`nN~^_;#>$Rzy)&oRN>8okb+xiPyJbQ3_7b1jzvnGCY!#wJBMPpa?$>z0Eli;ar4&cJqDK>(xZ z2dQHKM$r$Ujsh4(KcqSWU=;l@Y8zk_{jh3vtqiZ11|z6RKayH99LYdmcEkU_{D+U+ zD1`IwXbXp*_Ni~u@6N z^1d77I@6@ny+r~|se!m1@Zr`|h)9+WaNPaa7 zZ=tJMcne*FbLkRPhy432KC$sx{s=Xj-Ut3D90Q$ug)`{u+e1y1xm&n{XqWnS2{*Nt z=1$=a%5Jl7hrr~BX47mIBFN3A)g*EaG+O3%h*YO(Z4+oGsr@pyLdx3?%i1EivlM0{ z#JbD08U**1!mNiF+dk?st<9p4+7y6nf|$1<-YAM7M&n1#TCmuluF|R#C2&YWbZkN1 zh8V5dKq(aHG)-(nfv%8xNa~9*t2%w17FtXbdq8sGK8{^zadRFh#$b%5$tr>#`@tf^ zu?1}aT2`_^cQH_i zAN>@1g)N zXnA$NObs-K|5|B4;VeL|4Fi(}X7&JiK=*+my#dV$CVJ|J99xX7Xqo+_5{1n;iT*sX zW8jjoYsH{iLBl6&#So|!zu^$Rozk}xP16oRW4-WkrTEce%0hvJ3k5BjEE8(gxJb~Q z$qK>$KB|ub^uq$hL4C3CQE3#SPZFq$BKqG)RZ&F!DM|um00|caPFL0g{`YY;pygGi zK+Uf%1cStO9r#EUt^?USN0b5WQ$KH)fe+nwbQPG?e@9dSB`T^2pr#_oH$0d{WEo&o zQdNM4)N;xy5SVOaKZ+!yg|}R&1A`19MxKSQ)Ixe_$btYDq41ScBTg1n2@sf-5D-5i zjZ#2;TNsJxbh#9Sxq&PwWU>}~n=FT4Mq5^buYt5k85&f_7IPaZVO!X24z2^aW|%%% z2bPcOz)j;S3c(wsj-Cp^i_^sxmx9HmfMJuixEQ#RM>$Xw=mQ*864<6P*#bG5ec9E^ zg#+7M8u(a-w`F;t#iw2#1%et^eZ5>du+3$Hi^H-DMGlsAuq}oklFDMiHWko%EQ)3c z@5qWN#Woj=R5&{Af+?|_ot>&)pu=ZPST@4-VmX><*--TYgF=iMv})M(QfOh#P}KrG zsMC@GLb6&c4@R$uYJmk$K3F!IXxWG;7%GH(eAq;5hpHKvWB!0I%+pQbvO(Ao8dMDQ z7(#rA8CMHVvjGaMKm$mdfq0`vTtQ50xJulaxahVr~N92H#kuE0Z z&u;$4=pOgOF(mW0aaoQ{MF*}IU-ZmejgE;LY%*W&)PWveHF*u0R zKE`}h2XWdDG9Sf3oc2SQkLVyy`ytJTcQB0kuvh+Y_QM=7ta;q_Lmn_Z{Lp7SlKl`4 zMl_Gxe$W9U!w)`#(d=U!jA|aYebfP?!$+UNSnMMljLAH1d;5T~!H3UatoF*mn9Y-J zAFqSBZu#RgUj9=WtiODejt<%X4hm1`^;b7n?fJ9tod3;#ZK*5%vq(Gl>z6mKYdRGA zlSnIDTk*utf*prG6d9q{cRlmePyX|{Bdypu|C`=#-(6H)UtjZ~$UOJ!6L&2sHyayw z9SRMI%(AtGIZMhLy1I{b9C}|&qvKY7V@dgz-j|OZX@!7}{l@$y<;_>F?5VGLU(BH6 z4I`(p@qa(u+t9Rs&lNF)Fbw1CzSUQ*o_n$7;P!XLOvW*cg%AGx51;g%Ykjr}LdIfY z=;JH9HrBi=T!a@eGRZI$V#s%diy&<&qh6-7Cw3%Xwi4D13^@bi(}ej89=MDr$`boB zV;30C`!0R#4|y2-ZN@GzGVeOp_X$4lk&OE_Hsp66`PIi78*;`jFkB?p*!_%M#L|EU ze~ZDxVn%;cqlXnt9SVk5id;qgO@_yl@H<-1UCq<*Z!kQ>OV;iE5MqYEsNqRb-b@OH zhl1giB45E@WcV^RFVOI>F??9e@O>H{3Q9Zd86FCThk}w{sNnk;zQS-(Qj0YFs|+6& zGyDY&A676t6b!Ev#R~oc!&d?xRZybg&oey4R0I$+{L31?%5dEGJBS$^Vg{GuQU(1o zLs!d^Db>j57`fVTQOVfIy+A(SgnER6YQx5c;{3&vxN4L_qxS;+m1B3UXY(=*-vju{ zf}F6JiJ#W+P*4@Xo~c8@@K8`4lq>S58NQaYTA|@jGJIIf@Fz5USi$g6FuYQ%QSc`i z-sB>v)bL#l4>6Sh#0-C2!$Uz;00qNC!SG74R>2=<_)TnHrQtgmJ}hSVb`2j^Fgz3t zuN3PPe7lDC%wMo%dEmWj?cj)Z;90nAd1LTTP_T>VwF}coyJhj6k3F@g{Ua#Z4V3yU z(iR7*4zvc_KdMo#p4WlOxFzSl>TO3mTG~HauidrjaAo8a)*d?AMh8O4E?czAT4U-h zIp40^+1}9-47PvpagFv13!NM<0G@AeYxM_RhhFOYM0;;x@9T|>`3t^&+x;7wfe~O6 zo5XWWV!e^RaM>dpo1Q(`+L{}5!p{cHJ=do_b9!^7b(vk{mAESN%-;g&flXM;M$U@tSM zLi$u56oRQa>}C#C2E~$+p%7reBz9^N6*8PT_sNu0upd}45m+&i3JU0d6s7 z2c2!lKH98EZfBAeF!dIQDW16to-S=@3bqD=f!6$>qy3|LO%)&Q(wZeL3&nJA`pg?{ zy$6>_i=>>VY?*MQCR}28=G~N?J=aqrrhDc_(e|q&m^6-H()h4Fd#c}CCT4k~dE=`1 zs6nxAWY)OH&AVx?r&^@jyd`R*=3LL5@sWM@RPTB*)h10~uwu5GG+W$~3D2ZB5ZC&x z```PxLB|zlOtDD9Z4y(M;jQ28?E6GB+az2kt@b+=(pHh-nY(z~kxRcH_~WN`(oNxd z^rtHpG0b+6?#=j%tUJHA@!%irgx3t6r;djnVLqUEr`5S;E= zFh7sOwi~3+ELuM6VR?kPV(svhpy@o=C7LJ165zWiKRaP-CJQhF-k4F)M z4JWWtWOBF+gP=}Eu`1N8D#a9LWf*`u9mPraF_j{NI5AFdG$p$ys}SjwKM8X#ijm!) zm7yJ%2_!xj#B8chl{?wO9_al;s6?bQAFz29hbSfzSr}>6Thh6vKjl|U9s!c z-@oR5^U`no{~OPi`mek%`pfVH_Yd#B=Rgy#rjt+XDJ3L^nN!ZKE!?E$l-wJ?vcsNJ zR$TX&=Kdx%r!2bpZ*Ke6LN%vQ=x=_^o>M5uUucS$Qy}nOhhyzIg#_uherw_TSQF%2 zk(TZC%)RMh8dKCv0g3QlUq@4lJx`EKe16TA&5&_h7%-$PebH?T)r^v7WRMl3y~Aj9 zp?UqnE%7dEJShzb7Xd=ZfLch1_GE&i@x@MtvPC{f|3bWgsSEUlK?6- zQ8h(Kp+-HSQKht!K_O&NEhI=aJ8UAzN)4$d2Ps^uh#uFFQi|oCG6W$*Y9T?Yd7+*l zt2CsV7Nl^Uf@}{%VlteUhC2;`LaaeCM=qTTF~LU92@g%j-HVeSJttIOSEJyc*YKv1 z&VB0UIo=xf0iBLT22TlF7gL8KJ=tSIrfyHS-Jb2W{n>*;rXCbXt-ZErueHXs@T5Q% zxOLO%!GK-Y%H~!L3d(>^w1vB-*g0X_U4IJ*boHu!L{RG z@1BA#gJ?j{H0(YfW5TW<|I<|HiNz38!mh`cL8}<-=VG>x#*{#MeCbmzxqG$y$RU9Y z&{dIp=-GY5h@jNueaH!c^~(Ql_8&DNkikYpV5cU4#{QPY_IR*+)q~T}{1F9MFojCP zyEvdngJ(DRXTg9-sL6mQj5{8v*?v^b1_w45&fcU0p=N^$W7@)HKYI4)$?ik;bU=2S z6`$>zPnj`m{x`n$*e|;*tLO0Z$Gf_YxAJswps{2&I$@#)W2RPScozM5^`Wk_e#_C* zu|->3&MfJMPkndoa>#|lvB+$4}9~luAezQ-CM_mU)t0H{_0$hx)kvrk;0I{`8{BzcUSrEUvdLz)#%Ks!2m{_*#lNaZ}*EwgOZqD zoUn#5F^mSB(Y7dJYnd3#m>A4Bm2J_)a7UqNVZ9_`Hdsdlv2sn!o(vRJMRJHfPq75Pt4ywHjeEj1nB<0NFTmw@WaRJiPB zsX}DXaKI_-C74qubhLEqq^5)KFD9G|QH1a_q|dL}dWxol45GC7`&0@Stl5-4O-G3I zMc?gH^TDxyxO2rXyI!+qgxO@yz2iL12Wd~|7L=_!(sdTv2p*YV+^!~sXKEU{-a3`h z)v)H?g|q*9BTWeIM^`;lWA-fU%70mJs|XLu0Kfv9uV*#Yeq4W&b%EtNawm-#vaTU!^st!FA!c-2 ztl;0$@JgYFk~cLxzF0=^YAk`6;lpBrhnV3ZK6>xGv^>rJ4Gj;)ajcE{dbp_JOCU$K z)QAEx!-vHL4>7~rV#WS74X+f1Y8CI(@MZXt6>=XrSWr?Sru?gm9M%jEF;zg3X8)>& zSBj_+gECve2Sg4T1RoX?`wJSL#HfRaQA4E`3aW&taf9HiEJw=?k>dt|Yau~n24Ut^ zvS>;*@pGDZ6&H<0mQ%+*AXjr%6}Fr^eg*8Xn9w0U_ew7=A6u-#-UIl`S`@re=%x2G z!hW9M*K--Du?FJv7YQC>Dgt{1QSc;24MdC~3SKFqMiGLq=9WLqSy#HI@*($ytpYOb9+KCivqT-WIFibm-tHMbwBw@S7MOcRacgwd>%7#RLyA z$DYL7N@n9esz(&X9*Q$98>2@Qg5PX;(1pd!C&V9ZOz(@wTcf5E<)jvOtutrN_H=f% zP-kU3Yt!cfgERa09Xo!gRW?<+324y?ueGN2p6TAZ=LLF}p#~5-I~Z{4Yc21Y{d4dA#iNo>P zdDLj4+~a3yI8sd>=%zT>`}O%(Lw&fdbcn%(+~Qz_9G~IGP9@|P*9e6@tfkY&%)+N# ziKM8=+ZM|CZtc91Vkd)-M;C(z6CzM$dCu&k;Nz)9>{vn^sx0@}WBj}#YA8`8%Fsul z**J3i__3kK5|w~5YZ|ql_pNw(-|&M8@hP)r^>(+fd3r(A=l=+O>|jFV%BYFJUHQA93w=FIg}MLo(;;Hm=Zbp;ez?)L93 zo{kGM{1j%0xrMkFprDXTg07`cvtbZ;J^t@$$Mh%LhH$jnUhZdEs9 zTuq_#ZFP+R@=#T*`rJ8Q`k**}@j`=C$O>>mL9U@-*8!bu-00XJKDJ|lGBOaE{mJkj8U4wqfLQ;jt$^6< zr#b_%*-y3q*yyLa0*3ORx(XO7`>D*pP}xtV|DmFv$_g0He`+dVxa_AY1H)xMRsM&I zeyS>9B>%~;fRVDFiVTdD{Z#lLDf+3XfYJOXw*p4XezG$#TK1Fef3)Z)y8_1IKY0}} zmh2}p17pd4GX0Mw`pK+-vHDL=1&lTO$;!Z3v!5*gV~u{YDj**JiLZcovY(6$#FPDG z_>U+0$*6#M{U^2p;>~`dGZ1g~6YW3V=qI`Y#^XP66)>LcCo%)$$$ldJk0<(xtbp?gwiM53RF3Ye(>iB-Tvvp>-c zOf>rw^*_<*PqYFO;eY%UkcjM0Bm;@a{zUvIBKi}lfJFHpUj-y8`{T_(qOw0;|A~tJ zcq<^0{^PHJL}q_H8AxRI$KyYd(H~C*B-(#`6_Duc$D4sfXFp#5iH?4}6_5=7W3PZ@ zWIvt^BqRIr_)kXk+`e{%{#cRrZJTpQ`8&R{^Q?Kez%?nf;+6kjm_n|JVqmGWz5{_BS)1`RAyl?mhZ9 tOR28E*!-vZ`iu211pSsWm4C6nTBP5Srt)v{ezlppUr2uD>HmEM{tp8ay}tke diff --git a/Source/QtDialog/CMakeSetupDialog.cxx b/Source/QtDialog/CMakeSetupDialog.cxx index 963017729..ea65f2d89 100644 --- a/Source/QtDialog/CMakeSetupDialog.cxx +++ b/Source/QtDialog/CMakeSetupDialog.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: CMakeSetupDialog.cxx,v $ - Language: C++ - Date: $Date: 2009-03-31 14:29:15 $ - Version: $Revision: 1.40.2.9 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "CMakeSetupDialog.h" #include @@ -32,11 +27,12 @@ #include #include #include -#include "cmVersion.h" + #include "QCMake.h" #include "QCMakeCacheView.h" #include "AddCacheEntry.h" #include "FirstConfigure.h" +#include "cmVersion.h" QCMakeThread::QCMakeThread(QObject* p) : QThread(p), CMakeInstance(NULL) @@ -61,6 +57,10 @@ void QCMakeThread::run() CMakeSetupDialog::CMakeSetupDialog() : ExitAfterGenerate(true), CacheModified(false), CurrentState(Interrupting) { + QString title = QString(tr("CMake %1")); + title = title.arg(cmVersion::GetCMakeVersion()); + this->setWindowTitle(title); + // create the GUI QSettings settings; settings.beginGroup("Settings/StartPath"); @@ -76,6 +76,9 @@ CMakeSetupDialog::CMakeSetupDialog() this->ProgressBar->reset(); this->RemoveEntry->setEnabled(false); this->AddEntry->setEnabled(false); + + QByteArray p = settings.value("SplitterSizes").toByteArray(); + this->Splitter->restoreState(p); bool groupView = settings.value("GroupView", false).toBool(); if(groupView) @@ -104,6 +107,9 @@ CMakeSetupDialog::CMakeSetupDialog() this->GenerateAction = ToolsMenu->addAction(tr("&Generate")); QObject::connect(this->GenerateAction, SIGNAL(triggered(bool)), this, SLOT(doGenerate())); + QAction* showChangesAction = ToolsMenu->addAction(tr("&Show My Changes")); + QObject::connect(showChangesAction, SIGNAL(triggered(bool)), + this, SLOT(showUserChanges())); #if defined(Q_WS_MAC) this->InstallForCommandLineAction = ToolsMenu->addAction(tr("&Install For Command Line Use")); @@ -214,7 +220,7 @@ void CMakeSetupDialog::initialize() QObject::connect(this->ViewType, SIGNAL(currentIndexChanged(int)), this, SLOT(setViewType(int))); QObject::connect(this->Search, SIGNAL(textChanged(QString)), - this->CacheValues, SLOT(setSearchFilter(QString))); + this, SLOT(setSearchFilter(QString))); QObject::connect(this->CMakeThread->cmakeInstance(), SIGNAL(generatorChanged(QString)), @@ -254,6 +260,7 @@ CMakeSetupDialog::~CMakeSetupDialog() settings.beginGroup("Settings/StartPath"); settings.setValue("Height", this->height()); settings.setValue("Width", this->width()); + settings.setValue("SplitterSizes", this->Splitter->saveState()); // wait for thread to stop this->CMakeThread->quit(); @@ -274,14 +281,14 @@ void CMakeSetupDialog::doConfigure() QDir dir(bindir); if(!dir.exists()) { - QString message = tr("Build directory does not exist, " + QString msg = tr("Build directory does not exist, " "should I create it?") + "\n\n" + tr("Directory: "); - message += bindir; + msg += bindir; QString title = tr("Create Directory"); QMessageBox::StandardButton btn; - btn = QMessageBox::information(this, title, message, + btn = QMessageBox::information(this, title, msg, QMessageBox::Yes | QMessageBox::No); if(btn == QMessageBox::No) { @@ -368,11 +375,11 @@ void CMakeSetupDialog::closeEvent(QCloseEvent* e) // prompt for close if there are unsaved changes, and we're not busy if(this->CacheModified) { - QString message = tr("You have changed options but not rebuilt, " + QString msg = tr("You have changed options but not rebuilt, " "are you sure you want to exit?"); QString title = tr("Confirm Exit"); QMessageBox::StandardButton btn; - btn = QMessageBox::critical(this, title, message, + btn = QMessageBox::critical(this, title, msg, QMessageBox::Yes | QMessageBox::No); if(btn == QMessageBox::No) { @@ -383,12 +390,12 @@ void CMakeSetupDialog::closeEvent(QCloseEvent* e) // don't close if we're busy, unless the user really wants to if(this->CurrentState == Configuring) { - QString message = "You are in the middle of a Configure.\n" + QString msg = "You are in the middle of a Configure.\n" "If you Exit now the configure information will be lost.\n" "Are you sure you want to Exit?"; QString title = tr("Confirm Exit"); QMessageBox::StandardButton btn; - btn = QMessageBox::critical(this, title, message, + btn = QMessageBox::critical(this, title, msg, QMessageBox::Yes | QMessageBox::No); if(btn == QMessageBox::No) { @@ -505,8 +512,14 @@ void CMakeSetupDialog::onSourceDirectoryChanged(const QString& dir) void CMakeSetupDialog::onBinaryDirectoryChanged(const QString& dir) { + QString title = QString(tr("CMake %1 - %2")); + title = title.arg(cmVersion::GetCMakeVersion()); + title = title.arg(dir); + this->setWindowTitle(title); + this->CacheModified = false; this->CacheValues->cacheModel()->clear(); + qobject_cast(this->CacheValues->itemDelegate())->clearChanges(); this->Output->clear(); QMetaObject::invokeMethod(this->CMakeThread->cmakeInstance(), "setBinaryDirectory", Qt::QueuedConnection, Q_ARG(QString, dir)); @@ -522,16 +535,16 @@ void CMakeSetupDialog::showProgress(const QString& /*msg*/, float percent) this->ProgressBar->setValue(qRound(percent * 100)); } -void CMakeSetupDialog::error(const QString& message) +void CMakeSetupDialog::error(const QString& msg) { this->Output->setCurrentCharFormat(this->ErrorFormat); - this->Output->append(message); + this->Output->append(msg); } -void CMakeSetupDialog::message(const QString& message) +void CMakeSetupDialog::message(const QString& msg) { this->Output->setCurrentCharFormat(this->MessageFormat); - this->Output->append(message); + this->Output->append(msg); } void CMakeSetupDialog::setEnabledState(bool enabled) @@ -659,9 +672,9 @@ void CMakeSetupDialog::doReloadCache() void CMakeSetupDialog::doDeleteCache() { QString title = tr("Delete Cache"); - QString message = "Are you sure you want to delete the cache?"; + QString msg = "Are you sure you want to delete the cache?"; QMessageBox::StandardButton btn; - btn = QMessageBox::information(this, title, message, + btn = QMessageBox::information(this, title, msg, QMessageBox::Yes | QMessageBox::No); if(btn == QMessageBox::No) { @@ -677,7 +690,7 @@ void CMakeSetupDialog::doAbout() "Using Qt %2\n" "www.cmake.org"; - msg = msg.arg(cmVersion::GetCMakeVersion().c_str()); + msg = msg.arg(cmVersion::GetCMakeVersion()); msg = msg.arg(qVersion()); QDialog dialog; @@ -957,3 +970,75 @@ void CMakeSetupDialog::setViewType(int v) } +void CMakeSetupDialog::showUserChanges() +{ + QSet changes = + qobject_cast(this->CacheValues->itemDelegate())->changes(); + + QDialog dialog(this); + dialog.setWindowTitle(tr("My Changes")); + dialog.resize(600, 400); + QVBoxLayout* l = new QVBoxLayout(&dialog); + QTextEdit* textedit = new QTextEdit(&dialog); + textedit->setReadOnly(true); + l->addWidget(textedit); + QDialogButtonBox* btns = new QDialogButtonBox(QDialogButtonBox::Close, + Qt::Horizontal, &dialog); + QObject::connect(btns, SIGNAL(rejected()), &dialog, SLOT(accept())); + l->addWidget(btns); + + QString command; + QString cache; + + foreach(QCMakeProperty prop, changes) + { + QString type; + switch(prop.Type) + { + case QCMakeProperty::BOOL: + type = "BOOL"; + break; + case QCMakeProperty::PATH: + type = "PATH"; + break; + case QCMakeProperty::FILEPATH: + type = "FILEPATH"; + break; + case QCMakeProperty::STRING: + type = "STRING"; + break; + } + QString value; + if(prop.Type == QCMakeProperty::BOOL) + { + value = prop.Value.toBool() ? "1" : "0"; + } + else + { + value = prop.Value.toString(); + } + + QString line("%1:%2="); + line = line.arg(prop.Key); + line = line.arg(type); + + command += QString("-D%1\"%2\" ").arg(line).arg(value); + cache += QString("%1%2\n").arg(line).arg(value); + } + + textedit->append(tr("Commandline options:")); + textedit->append(command); + textedit->append("\n"); + textedit->append(tr("Cache file:")); + textedit->append(cache); + + dialog.exec(); +} + +void CMakeSetupDialog::setSearchFilter(const QString& str) +{ + this->CacheValues->selectionModel()->clear(); + this->CacheValues->setSearchFilter(str); +} + + diff --git a/Source/QtDialog/CMakeSetupDialog.h b/Source/QtDialog/CMakeSetupDialog.h index 37ac628b0..de7922a45 100644 --- a/Source/QtDialog/CMakeSetupDialog.h +++ b/Source/QtDialog/CMakeSetupDialog.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: CMakeSetupDialog.h,v $ - Language: C++ - Date: $Date: 2008-07-13 21:55:25 $ - Version: $Revision: 1.21.2.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef CMakeSetupDialog_h #define CMakeSetupDialog_h @@ -76,6 +71,8 @@ protected slots: void startSearch(); void setDebugOutput(bool); void setViewType(int); + void showUserChanges(); + void setSearchFilter(const QString& str); protected: diff --git a/Source/QtDialog/QCMake.cxx b/Source/QtDialog/QCMake.cxx index eebd7e256..3bd64f091 100644 --- a/Source/QtDialog/QCMake.cxx +++ b/Source/QtDialog/QCMake.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: QCMake.cxx,v $ - Language: C++ - Date: $Date: 2008-05-23 20:09:43 $ - Version: $Revision: 1.21.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "QCMake.h" @@ -67,6 +62,15 @@ QCMake::QCMake(QObject* p) std::vector::iterator iter; for(iter = generators.begin(); iter != generators.end(); ++iter) { + // Skip the generator "KDevelop3", since there is also + // "KDevelop3 - Unix Makefiles", which is the full and official name. + // The short name is actually only still there since this was the name + // in CMake 2.4, to keep "command line argument compatibility", but + // this is not necessary in the GUI. + if (*iter == "KDevelop3") + { + continue; + } this->AvailableGenerators.append(iter->c_str()); } } @@ -82,8 +86,10 @@ void QCMake::loadCache(const QString& dir) this->setBinaryDirectory(dir); } -void QCMake::setSourceDirectory(const QString& dir) +void QCMake::setSourceDirectory(const QString& _dir) { + QString dir = + cmSystemTools::GetActualCaseForPath(_dir.toAscii().data()).c_str(); if(this->SourceDirectory != dir) { this->SourceDirectory = QDir::fromNativeSeparators(dir); @@ -91,8 +97,10 @@ void QCMake::setSourceDirectory(const QString& dir) } } -void QCMake::setBinaryDirectory(const QString& dir) +void QCMake::setBinaryDirectory(const QString& _dir) { + QString dir = + cmSystemTools::GetActualCaseForPath(_dir.toAscii().data()).c_str(); if(this->BinaryDirectory != dir) { this->BinaryDirectory = QDir::fromNativeSeparators(dir); @@ -286,6 +294,10 @@ QCMakePropertyList QCMake::properties() const else if(i.GetType() == cmCacheManager::STRING) { prop.Type = QCMakeProperty::STRING; + if (i.PropertyExists("STRINGS")) + { + prop.Strings = QString(i.GetProperty("STRINGS")).split(";"); + } } ret.append(prop); diff --git a/Source/QtDialog/QCMake.h b/Source/QtDialog/QCMake.h index 041b9338a..bbfb3d7c5 100644 --- a/Source/QtDialog/QCMake.h +++ b/Source/QtDialog/QCMake.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: QCMake.h,v $ - Language: C++ - Date: $Date: 2008-05-23 20:09:43 $ - Version: $Revision: 1.9.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef __QCMake_h #define __QCMake_h @@ -38,6 +33,7 @@ struct QCMakeProperty enum PropertyType { BOOL, PATH, FILEPATH, STRING }; QString Key; QVariant Value; + QStringList Strings; QString Help; PropertyType Type; bool Advanced; diff --git a/Source/QtDialog/QCMakeCacheView.cxx b/Source/QtDialog/QCMakeCacheView.cxx index d8f986b3d..d90307ad0 100644 --- a/Source/QtDialog/QCMakeCacheView.cxx +++ b/Source/QtDialog/QCMakeCacheView.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: QCMakeCacheView.cxx,v $ - Language: C++ - Date: $Date: 2009-03-31 14:29:18 $ - Version: $Revision: 1.26.2.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "QCMakeCacheView.h" @@ -23,6 +18,8 @@ #include #include #include +#include +#include #include "QCMakeWidgets.h" @@ -138,10 +135,9 @@ QCMakeCacheView::QCMakeCacheView(QWidget* p) QCMakeCacheModelDelegate* delegate = new QCMakeCacheModelDelegate(this); this->setItemDelegate(delegate); - this->setEditTriggers(QAbstractItemView::DoubleClicked | - QAbstractItemView::SelectedClicked | - QAbstractItemView::EditKeyPressed | - QAbstractItemView::AnyKeyPressed); + this->setUniformRowHeights(true); + + this->setEditTriggers(QAbstractItemView::AllEditTriggers); // tab, backtab doesn't step through items this->setTabKeyNavigation(false); @@ -249,18 +245,18 @@ void QCMakeCacheModel::setProperties(const QCMakePropertyList& props) QCMakePropertyList newP2 = newProps2.toList(); qSort(newP); qSort(newP2); - int rowCount = 0; + int row_count = 0; foreach(QCMakeProperty p, newP) { - this->insertRow(rowCount); - this->setPropertyData(this->index(rowCount, 0), p, true); - rowCount++; + this->insertRow(row_count); + this->setPropertyData(this->index(row_count, 0), p, true); + row_count++; } foreach(QCMakeProperty p, newP2) { - this->insertRow(rowCount); - this->setPropertyData(this->index(rowCount, 0), p, false); - rowCount++; + this->insertRow(row_count); + this->setPropertyData(this->index(row_count, 0), p, false); + row_count++; } } else if(this->View == GroupView) @@ -274,7 +270,7 @@ void QCMakeCacheModel::setProperties(const QCMakePropertyList& props) foreach(QString key, newPropsTree.keys()) { - QCMakePropertyList props = newPropsTree[key]; + QCMakePropertyList props2 = newPropsTree[key]; QList parentItems; parentItems.append( @@ -285,8 +281,10 @@ void QCMakeCacheModel::setProperties(const QCMakePropertyList& props) parentItems[1]->setData(QBrush(QColor(255,100,100)), Qt::BackgroundColorRole); root->appendRow(parentItems); - foreach(QCMakeProperty prop, props) + int num = props2.size(); + for(int i=0; i items; items.append(new QStandardItem()); items.append(new QStandardItem()); @@ -297,14 +295,16 @@ void QCMakeCacheModel::setProperties(const QCMakePropertyList& props) foreach(QString key, newPropsTree2.keys()) { - QCMakePropertyList props = newPropsTree2[key]; + QCMakePropertyList props2 = newPropsTree2[key]; QStandardItem* parentItem = new QStandardItem(key.isEmpty() ? tr("Ungrouped Entries") : key); root->appendRow(parentItem); - foreach(QCMakeProperty prop, props) + int num = props2.size(); + for(int i=0; i items; items.append(new QStandardItem()); items.append(new QStandardItem()); @@ -365,6 +365,11 @@ void QCMakeCacheModel::setPropertyData(const QModelIndex& idx1, } this->setData(idx2, prop.Help, QCMakeCacheModel::HelpRole); + if (!prop.Strings.isEmpty()) + { + this->setData(idx1, prop.Strings, QCMakeCacheModel::StringsRole); + } + if(isNew) { this->setData(idx1, QBrush(QColor(255,100,100)), Qt::BackgroundColorRole); @@ -381,6 +386,7 @@ void QCMakeCacheModel::getPropertyData(const QModelIndex& idx1, prop.Help = this->data(idx1, HelpRole).toString(); prop.Type = static_cast(this->data(idx1, TypeRole).toInt()); prop.Advanced = this->data(idx1, AdvancedRole).toBool(); + prop.Strings = this->data(idx1, QCMakeCacheModel::StringsRole).toStringList(); if(prop.Type == QCMakeProperty::BOOL) { int check = this->data(idx2, Qt::CheckStateRole).toInt(); @@ -573,10 +579,20 @@ QWidget* QCMakeCacheModelDelegate::createEditor(QWidget* p, SLOT(setFileDialogFlag(bool))); return editor; } + else if(type == QCMakeProperty::STRING && + var.data(QCMakeCacheModel::StringsRole).isValid()) + { + QCMakeComboBox* editor = + new QCMakeComboBox(p, var.data(QCMakeCacheModel::StringsRole).toStringList()); + editor->setFrame(false); + return editor; + } - return new QLineEdit(p); + QLineEdit* editor = new QLineEdit(p); + editor->setFrame(false); + return editor; } - + bool QCMakeCacheModelDelegate::editorEvent(QEvent* e, QAbstractItemModel* model, const QStyleOptionViewItem& option, const QModelIndex& index) { @@ -617,19 +633,83 @@ bool QCMakeCacheModelDelegate::editorEvent(QEvent* e, QAbstractItemModel* model, Qt::CheckState state = (static_cast(value.toInt()) == Qt::Checked ? Qt::Unchecked : Qt::Checked); - return model->setData(index, state, Qt::CheckStateRole); + bool success = model->setData(index, state, Qt::CheckStateRole); + if(success) + { + this->recordChange(model, index); + } + return success; } -bool QCMakeCacheModelDelegate::eventFilter(QObject* object, QEvent* event) +// Issue 205903 fixed in Qt 4.5.0. +// Can remove this function and FileDialogFlag when minimum Qt version is 4.5 +bool QCMakeCacheModelDelegate::eventFilter(QObject* object, QEvent* evt) { // workaround for what looks like a bug in Qt on Mac OS X // where it doesn't create a QWidget wrapper for the native file dialog // so the Qt library ends up assuming the focus was lost to something else - if(event->type() == QEvent::FocusOut && this->FileDialogFlag) + + if(evt->type() == QEvent::FocusOut && this->FileDialogFlag) { return false; } - return QItemDelegate::eventFilter(object, event); + return QItemDelegate::eventFilter(object, evt); } +void QCMakeCacheModelDelegate::setModelData(QWidget* editor, + QAbstractItemModel* model, const QModelIndex& index ) const +{ + QItemDelegate::setModelData(editor, model, index); + const_cast(this)->recordChange(model, index); +} +QSize QCMakeCacheModelDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const +{ + QSize sz = QItemDelegate::sizeHint(option, index); + QStyle *style = QApplication::style(); + + // increase to checkbox size + QStyleOptionButton opt; + opt.QStyleOption::operator=(option); + sz = sz.expandedTo(style->subElementRect(QStyle::SE_ViewItemCheckIndicator, &opt, NULL).size()); + + return sz; +} + +QSet QCMakeCacheModelDelegate::changes() const +{ + return mChanges; +} + +void QCMakeCacheModelDelegate::clearChanges() +{ + mChanges.clear(); +} + +void QCMakeCacheModelDelegate::recordChange(QAbstractItemModel* model, const QModelIndex& index) +{ + QModelIndex idx = index; + QAbstractItemModel* mymodel = model; + while(qobject_cast(mymodel)) + { + idx = static_cast(mymodel)->mapToSource(idx); + mymodel = static_cast(mymodel)->sourceModel(); + } + QCMakeCacheModel* cache_model = qobject_cast(mymodel); + if(cache_model && idx.isValid()) + { + QCMakeProperty prop; + idx = idx.sibling(idx.row(), 0); + cache_model->getPropertyData(idx, prop); + + // clean out an old one + QSet::iterator iter = mChanges.find(prop); + if(iter != mChanges.end()) + { + mChanges.erase(iter); + } + // now add the new item + mChanges.insert(prop); + } +} + diff --git a/Source/QtDialog/QCMakeCacheView.h b/Source/QtDialog/QCMakeCacheView.h index a122c76cc..401e07e28 100644 --- a/Source/QtDialog/QCMakeCacheView.h +++ b/Source/QtDialog/QCMakeCacheView.h @@ -1,25 +1,21 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: QCMakeCacheView.h,v $ - Language: C++ - Date: $Date: 2008-06-25 13:51:50 $ - Version: $Revision: 1.17.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef QCMakeCacheView_h #define QCMakeCacheView_h #include "QCMake.h" #include +#include #include #include @@ -41,7 +37,7 @@ public: // get whether to show advanced entries bool showAdvanced() const; - QSize sizeHint(int) { return QSize(200,200); } + QSize sizeHint() const { return QSize(200,200); } public slots: // set whether to show advanced entries @@ -70,7 +66,8 @@ public: // properties, and the advanced flag enum { HelpRole = Qt::ToolTipRole, TypeRole = Qt::UserRole, - AdvancedRole }; + AdvancedRole, + StringsRole}; enum ViewType { FlatView, GroupView }; @@ -110,6 +107,10 @@ public: // return flags (overloaded to modify flag based on EditEnabled flag) Qt::ItemFlags flags (const QModelIndex& index) const; QModelIndex buddy(const QModelIndex& idx) const; + + // get the data in the model for this property + void getPropertyData(const QModelIndex& idx1, + QCMakeProperty& prop) const; protected: bool EditEnabled; @@ -119,9 +120,6 @@ protected: // set the data in the model for this property void setPropertyData(const QModelIndex& idx1, const QCMakeProperty& p, bool isNew); - // get the data in the model for this property - void getPropertyData(const QModelIndex& idx1, - QCMakeProperty& prop) const; // breaks up he property list into groups // where each group has the same prefix up to the first underscore @@ -146,10 +144,22 @@ public: bool editorEvent (QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, const QModelIndex& index); bool eventFilter(QObject* object, QEvent* event); + void setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) const; + QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const; + + QSet changes() const; + void clearChanges(); + protected slots: void setFileDialogFlag(bool); protected: bool FileDialogFlag; + // record a change to an item in the model. + // this simply saves the item in the set of changes + void recordChange(QAbstractItemModel* model, const QModelIndex& index); + + // properties changed by user via this delegate + QSet mChanges; }; #endif diff --git a/Source/QtDialog/QCMakeWidgets.cxx b/Source/QtDialog/QCMakeWidgets.cxx index 20bf336da..144e1f32e 100644 --- a/Source/QtDialog/QCMakeWidgets.cxx +++ b/Source/QtDialog/QCMakeWidgets.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: QCMakeWidgets.cxx,v $ - Language: C++ - Date: $Date: 2008-12-31 15:14:30 $ - Version: $Revision: 1.1.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "QCMakeWidgets.h" diff --git a/Source/QtDialog/QCMakeWidgets.h b/Source/QtDialog/QCMakeWidgets.h index d7cf280f1..8f58df2bb 100644 --- a/Source/QtDialog/QCMakeWidgets.h +++ b/Source/QtDialog/QCMakeWidgets.h @@ -1,24 +1,20 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: QCMakeWidgets.h,v $ - Language: C++ - Date: $Date: 2008-05-23 20:09:44 $ - Version: $Revision: 1.1.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef QCMakeWidgets_h #define QCMakeWidgets_h #include +#include #include class QToolButton; @@ -67,5 +63,25 @@ public: virtual QString pathFromIndex(const QModelIndex& idx) const; }; +// editor for strings +class QCMakeComboBox : public QComboBox +{ + Q_OBJECT + Q_PROPERTY(QString value READ currentText WRITE setValue USER true); +public: + QCMakeComboBox(QWidget* p, QStringList strings) : QComboBox(p) + { + this->addItems(strings); + } + void setValue(const QString& v) + { + int i = this->findText(v); + if(i != -1) + { + this->setCurrentIndex(i); + } + } +}; + #endif diff --git a/Source/QtDialog/QMacInstallDialog.cxx b/Source/QtDialog/QMacInstallDialog.cxx old mode 100755 new mode 100644 diff --git a/Source/QtDialog/QMacInstallDialog.h b/Source/QtDialog/QMacInstallDialog.h old mode 100755 new mode 100644 diff --git a/Source/QtDialog/QtDialogCPack.cmake.in b/Source/QtDialog/QtDialogCPack.cmake.in old mode 100755 new mode 100644 index feeb8b22a..701991b7a --- a/Source/QtDialog/QtDialogCPack.cmake.in +++ b/Source/QtDialog/QtDialogCPack.cmake.in @@ -3,6 +3,7 @@ SET(CMAKE_PACKAGE_QTGUI @CMAKE_PACKAGE_QTGUI@) IF(CMAKE_PACKAGE_QTGUI) SET(CPACK_PACKAGE_EXECUTABLES "cmake-gui" "CMake (cmake-gui)" ${CPACK_PACKAGE_EXECUTABLES}) + SET(CPACK_CREATE_DESKTOP_LINKS "cmake-gui" ${CPACK_CREATE_DESKTOP_LINKS}) IF(IS_APPLE) # for apple install we set the install prefix to # / and then install diff --git a/Source/QtDialog/README b/Source/QtDialog/README old mode 100755 new mode 100644 diff --git a/Source/WXDialog/CMakeIcon.xpm b/Source/WXDialog/CMakeIcon.xpm deleted file mode 100644 index 4c694c3a6..000000000 --- a/Source/WXDialog/CMakeIcon.xpm +++ /dev/null @@ -1,276 +0,0 @@ -/* XPM */ -static char *CMakeIcon_xpm[] = { -"16 16 256 3", -"000 c black", -"001 c #003F00", -"002 c #003F3F", -"003 c #3F0000", -"004 c #3F003F", -"005 c #3F3F00", -"006 c gray19", -"007 c #00007F", -"008 c #007F00", -"009 c #306F30", -"010 c #7F0000", -"011 c #606060", -"012 c #0000BF", -"013 c blue", -"014 c #00BF00", -"015 c green", -"016 c #BF0000", -"017 c red", -"018 c #909090", -"019 c #C0C0C0", -"020 c none", -"021 c black", -"022 c black", -"023 c black", -"024 c black", -"025 c black", -"026 c black", -"027 c black", -"028 c black", -"029 c black", -"030 c black", -"031 c black", -"032 c black", -"033 c black", -"034 c black", -"035 c black", -"036 c black", -"037 c black", -"038 c black", -"039 c black", -"040 c black", -"041 c black", -"042 c black", -"043 c black", -"044 c black", -"045 c black", -"046 c black", -"047 c black", -"048 c black", -"049 c black", -"050 c black", -"051 c black", -"052 c black", -"053 c black", -"054 c black", -"055 c black", -"056 c black", -"057 c black", -"058 c black", -"059 c black", -"060 c black", -"061 c black", -"062 c black", -"063 c black", -"064 c black", -"065 c black", -"066 c black", -"067 c black", -"068 c black", -"069 c black", -"070 c black", -"071 c black", -"072 c black", -"073 c black", -"074 c black", -"075 c black", -"076 c black", -"077 c black", -"078 c black", -"079 c black", -"080 c black", -"081 c black", -"082 c black", -"083 c black", -"084 c black", -"085 c black", -"086 c black", -"087 c black", -"088 c black", -"089 c black", -"090 c black", -"091 c black", -"092 c black", -"093 c black", -"094 c black", -"095 c black", -"096 c black", -"097 c black", -"098 c black", -"099 c black", -"100 c black", -"101 c black", -"102 c black", -"103 c black", -"104 c black", -"105 c black", -"106 c black", -"107 c black", -"108 c black", -"109 c black", -"110 c black", -"111 c black", -"112 c black", -"113 c black", -"114 c black", -"115 c black", -"116 c black", -"117 c black", -"118 c black", -"119 c black", -"120 c black", -"121 c black", -"122 c black", -"123 c black", -"124 c black", -"125 c black", -"126 c black", -"127 c black", -"128 c black", -"129 c black", -"130 c black", -"131 c black", -"132 c black", -"133 c black", -"134 c black", -"135 c black", -"136 c black", -"137 c black", -"138 c black", -"139 c black", -"140 c black", -"141 c black", -"142 c black", -"143 c black", -"144 c black", -"145 c black", -"146 c black", -"147 c black", -"148 c black", -"149 c black", -"150 c black", -"151 c black", -"152 c black", -"153 c black", -"154 c black", -"155 c black", -"156 c black", -"157 c black", -"158 c black", -"159 c black", -"160 c black", -"161 c black", -"162 c black", -"163 c black", -"164 c black", -"165 c black", -"166 c black", -"167 c black", -"168 c black", -"169 c black", -"170 c black", -"171 c black", -"172 c black", -"173 c black", -"174 c black", -"175 c black", -"176 c black", -"177 c black", -"178 c black", -"179 c black", -"180 c black", -"181 c black", -"182 c black", -"183 c black", -"184 c black", -"185 c black", -"186 c black", -"187 c black", -"188 c black", -"189 c black", -"190 c black", -"191 c black", -"192 c black", -"193 c black", -"194 c black", -"195 c black", -"196 c black", -"197 c black", -"198 c black", -"199 c black", -"200 c black", -"201 c black", -"202 c black", -"203 c black", -"204 c black", -"205 c black", -"206 c black", -"207 c black", -"208 c black", -"209 c black", -"210 c black", -"211 c black", -"212 c black", -"213 c black", -"214 c black", -"215 c black", -"216 c black", -"217 c black", -"218 c black", -"219 c black", -"220 c black", -"221 c black", -"222 c black", -"223 c black", -"224 c black", -"225 c black", -"226 c black", -"227 c black", -"228 c black", -"229 c black", -"230 c black", -"231 c black", -"232 c black", -"233 c black", -"234 c black", -"235 c black", -"236 c black", -"237 c black", -"238 c black", -"239 c black", -"240 c black", -"241 c black", -"242 c black", -"243 c black", -"244 c black", -"245 c black", -"246 c black", -"247 c black", -"248 c black", -"249 c black", -"250 c black", -"251 c black", -"252 c black", -"253 c black", -"254 c black", -"255 c black", -"020020020020020020020020020020020020020020020020", -"020020020020020020020000000020020020020020020020", -"020020020020020020020000003020020020020020020020", -"020020020020020020000012010000020020020020020020", -"020020020020020020007013010003020020020020020020", -"020020020020020000013013010016000020020020020020", -"020020020020020007013013004017003020020020020020", -"020020020020000013013013007017016000020020020020", -"020020020020007013013012006017017003020020020020", -"020020020000012013012018011017017016000020020020", -"020020020007013012009018019010017017003020020020", -"020020000013012014015014009010017017016000020020", -"020020007007014015015015015008005016017003020020", -"020000002015015015015015015015015014005010000020", -"020000008008008008008008008008008008008001000020", -"020020020020020020020020020020020020020020020020" -}; diff --git a/Source/WXDialog/CMakeLists.txt b/Source/WXDialog/CMakeLists.txt deleted file mode 100644 index 9644b0563..000000000 --- a/Source/WXDialog/CMakeLists.txt +++ /dev/null @@ -1,87 +0,0 @@ -##--------------------------------------------------------------------------- -## $RCSfile: CMakeLists.txt,v $ -## $Source: /cvsroot/CMake/CMake/Source/WXDialog/CMakeLists.txt,v $ -## $Revision: 1.25 $ -## $Date: 2007-11-05 19:47:20 $ -##--------------------------------------------------------------------------- -## Author: Jorgen Bodde -## Copyright: (c) Jorgen Bodde -## License: wxWidgets License -##--------------------------------------------------------------------------- - -# wxWindows -> wxWidgets Jan Woetzel 07/2006 -# tested with wx 2.6.3 with "multilib" build on Windows XP - -# CMake Options -SET(CMAKE_VERBOSE_MAKEFILE TRUE) - -# suppress wx header warnings? -#SET(HAVE_ISYSTEM 1) - -# in addition to wx std libs we need -SET( wxWidgets_USE_LIBS - std - html adv xml xrc ) -FIND_PACKAGE(wxWidgets REQUIRED) -#INCLUDE(${CMAKE_ROOT}/Modules/FindwxWidgets.cmake) - -# Start using wx stuff when it is fully found and set -IF(wxWidgets_FOUND) - INCLUDE( ${wxWidgets_USE_FILE} ) - - SET (CMAKE_SRCS - CMakeSetupFrame.cpp - CMakeSetup.cpp - CMakeSetupFrame.h - CMakeSetup.h - PropertyList.cpp - PropertyList.h - app_resources.cpp - app_resources.h - progressdlg.cpp - progressdlg.h - aboutdlg.cpp - aboutdlg.h - optionsdlg.cpp - optionsdlg.h - config.h - CommandLineInfo.cpp - CommandLineInfo.h ) - - # include .rc when windows - IF(WIN32) - SET ( CMAKE_SRCS ${CMAKE_SRCS} CMakeSetup.rc ) - ENDIF(WIN32) - - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/Source/WXDialog - ${wxWidgets_INCLUDE_DIR} ) - LINK_DIRECTORIES( ${wxWidgets_LINK_DIRECTORIES} - ${CMake_BINARY_DIR}/Source - ${CMake_BINARY_DIR}/Source/kwsys ) - - IF(APPLE) - ADD_EXECUTABLE(WXDialog MACOSX_BUNDLE ${CMAKE_SRCS}) - ELSE(APPLE) - ADD_EXECUTABLE(WXDialog WIN32 ${CMAKE_SRCS}) - ENDIF(APPLE) - INSTALL_TARGETS(/bin WXDialog) - - # not required on MSVS beause bound to _DEBUG, - # but other compiler may need it. - # However, the define prevents multiple build configurations - # in one build tree, - # e.g. MSVS supports Debug;Release - # TODO: shall we add the define or not - - # favor multi config or all compilers? (JW) - SET(CMAKE_CXX_FLAGS_DEBUG - "${CMAKE_CXX_FLAGS_DEBUG} -D__WXDEBUG__ -DWXDEBUG=1") - - IF(LINUX) - ADD_DEFINITIONS( -DLINUX=1 ) - ENDIF(LINUX) - - # if the checkbox view functionality is not desired, - # exclude this part from the smple - TARGET_LINK_LIBRARIES(WXDialog ${wxWidgets_LIBRARIES} cmsys CMakeLib) - INSTALL_TARGETS(/bin WXDialog) -ENDIF(wxWidgets_FOUND) diff --git a/Source/WXDialog/CMakeSetup.cpp b/Source/WXDialog/CMakeSetup.cpp deleted file mode 100644 index 23b3f0952..000000000 --- a/Source/WXDialog/CMakeSetup.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: CMakeSetup.cpp,v $ - Language: C++ - Date: $Date: 2005-08-09 19:42:49 $ - Version: $Revision: 1.3 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma implementation "CMakeSetup.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -////@begin includes -////@end includes - -#include - -#include "cmSystemTools.h" -#include "CommandLineInfo.h" - -#include "CMakeSetup.h" -#include "CMakeSetupFrame.h" - -////@begin XPM images -////@end XPM images - -/*! - * Application instance implementation - */ - -////@begin implement app -IMPLEMENT_APP( CMakeSetupApp ) -////@end implement app - -/*! - * CMakeSetupApp type definition - */ - -IMPLEMENT_CLASS( CMakeSetupApp, wxApp ) - -/*! - * CMakeSetupApp event table definition - */ - -BEGIN_EVENT_TABLE( CMakeSetupApp, wxApp ) - -////@begin CMakeSetupApp event table entries -////@end CMakeSetupApp event table entries - -END_EVENT_TABLE() - -/*! - * Constructor for CMakeSetupApp - */ - -CMakeSetupApp::CMakeSetupApp() -{ -////@begin CMakeSetupApp member initialisation -////@end CMakeSetupApp member initialisation -} - -/*! - * Initialisation for CMakeSetupApp - */ - -bool CMakeSetupApp::OnInit() -{ - cmSystemTools::DisableRunCommandOutput(); - - // parse command line params - cmCommandLineInfo cm; - if(!cm.ParseCommandLine(wxApp::argc, wxApp::argv)) - { - printf("Error while parsing the command line\n"); - return false; - } - - // set vendor name and app for config - SetVendorName("Kitware"); - SetAppName("CMakeSetup"); - - CMakeSetupFrm *MyFrame = new CMakeSetupFrm(NULL); - - // alternative app path way, somehow otherwise it does not work - wxFileName fname(argv[0]); - MyFrame->DoInitFrame(cm, fname.GetPath(wxPATH_GET_SEPARATOR | wxPATH_GET_VOLUME)); - MyFrame->Show(TRUE); - - return true; -} - -/*! - * Cleanup for CMakeSetupApp - */ -int CMakeSetupApp::OnExit() -{ -////@begin CMakeSetupApp cleanup - return wxApp::OnExit(); -////@end CMakeSetupApp cleanup -} - diff --git a/Source/WXDialog/CMakeSetup.h b/Source/WXDialog/CMakeSetup.h deleted file mode 100644 index 00c3c25e5..000000000 --- a/Source/WXDialog/CMakeSetup.h +++ /dev/null @@ -1,92 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: CMakeSetup.h,v $ - Language: C++ - Date: $Date: 2005-06-30 19:54:14 $ - Version: $Revision: 1.1 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#ifndef _CMAKESETUP_H_ -#define _CMAKESETUP_H_ - -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma interface "CMakeSetup.cpp" -#endif - -/*! - * Includes - */ - -////@begin includes -#include "wx/image.h" -////@end includes - -/*! - * Forward declarations - */ - -////@begin forward declarations -////@end forward declarations - -/*! - * Control identifiers - */ - -////@begin control identifiers -////@end control identifiers - -/*! - * CMakeSetupApp class declaration - */ - -class CMakeSetupApp: public wxApp -{ - DECLARE_CLASS( CMakeSetupApp ) - DECLARE_EVENT_TABLE() - -public: - /// Constructor - CMakeSetupApp(); - - /// Initialises the application - virtual bool OnInit(); - - /// Called on exit - virtual int OnExit(); - -////@begin CMakeSetupApp event handler declarations - -////@end CMakeSetupApp event handler declarations - -////@begin CMakeSetupApp member function declarations - -////@end CMakeSetupApp member function declarations - -////@begin CMakeSetupApp member variables -////@end CMakeSetupApp member variables - -private: - wxString m_AppPath; -}; - -/*! - * Application instance declaration - */ - -////@begin declare app -DECLARE_APP(CMakeSetupApp) -////@end declare app - -#endif - // _CMAKESETUP_H_ diff --git a/Source/WXDialog/CMakeSetup.pjd b/Source/WXDialog/CMakeSetup.pjd deleted file mode 100644 index fec0a4f63..000000000 --- a/Source/WXDialog/CMakeSetup.pjd +++ /dev/null @@ -1,3514 +0,0 @@ - - - - 1.0 - dialogblocks - - Project File - - - 0 - - - - - 87 - - FALSE - FALSE - FALSE - TRUE - TRUE - FALSE - Jorgen Bodde - - - FALSE - <All platforms> - <Any> - ///////////////////////////////////////////////////////////////////////////// -// Name: %HEADER-FILENAME% -// Purpose: -// Author: %AUTHOR% -// Modified by: -// Created: %DATE% -// RCS-ID: -// Copyright: %COPYRIGHT% -// Licence: -///////////////////////////////////////////////////////////////////////////// - - - ///////////////////////////////////////////////////////////////////////////// -// Name: %SOURCE-FILENAME% -// Purpose: -// Author: %AUTHOR% -// Modified by: -// Created: %DATE% -// RCS-ID: -// Copyright: %COPYRIGHT% -// Licence: -///////////////////////////////////////////////////////////////////////////// - - - /*! - * %BODY% - */ - - - ///////////////////////////////////////////////////////////////////////////// -// Name: %SYMBOLS-FILENAME% -// Purpose: Symbols file -// Author: %AUTHOR% -// Modified by: -// Created: %DATE% -// RCS-ID: -// Copyright: %COPYRIGHT% -// Licence: -///////////////////////////////////////////////////////////////////////////// - - - app_resources.h - app_resources.cpp - AppResources - app.h - app.cpp - Application - FALSE - - <None> - - - 15088528 - data-document - - - 0 - 1 - 0 - 0 - 0 - - Configurations - 15310432 - config-data-document - - - 0 - 1 - 0 - 15088528 - 0 - - TRUE - - Debug - ANSI - Static - Modular - GUI - wxMSW - Dynamic - Yes - No - No - %WXVERSION% - %EXECUTABLE% - - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - %AUTO% - - - - Projects - 15057456 - root-document - - project - 1 - 1 - 0 - 0 - 0 - - Windows - 15140496 - html-document - - dialogsfolder - 1 - 1 - 0 - 15057456 - 1 - - CMakeSetupApp - 14833712 - dialog-document - - app - 0 - 1 - 0 - 15140496 - 0 - 7/4/2005 - wbAppProxy - 10000 - FALSE - - CMakeSetupApp - wxApp - CMakeSetup.cpp - CMakeSetup.h - - - - - CMake Setup - 15139352 - dialog-document - - frame - 0 - 1 - 0 - 15140496 - 0 - 7/4/2005 - wbFrameProxy - 10100 - FALSE - - wxEVT_CLOSE_WINDOW|OnCloseWindow - ID_FRAME - 10100 - CMakeSetupFrm - wxFrame - CMakeSetupFrame.cpp - CMakeSetupFrame.h - - CMake Setup v2.0.x - TRUE - cmake_icon.xpm - FALSE - - - - - - FALSE - <Any platform> - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - TRUE - FALSE - FALSE - - FALSE - FALSE - -1 - -1 - 600 - 550 - - - wxSplitterWindow: ID_SPLITTERWINDOW - 15327264 - dialog-control-document - - splitter - 0 - 1 - 0 - 15139352 - 0 - 7/4/2005 - wbSplitterWindowProxy - wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING|OnSplitterPosChanging - wxEVT_COMMAND_SPLITTER_DOUBLECLICKED|OnSplitterwindowSashDClick - ID_SPLITTERWINDOW - 10101 - wxSplitterWindow - wxSplitterWindow - m_splitter - TRUE - Horizontal - 300 - - - - - - FALSE - <Any platform> - TRUE - FALSE - TRUE - FALSE - FALSE - FALSE - FALSE - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - 100 - 100 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - wxPanel: ID_MAINPANEL - 15222232 - dialog-control-document - - panel - 0 - 1 - 0 - 15327264 - 0 - 7/4/2005 - wbPanelProxy - ID_MAINPANEL - 10102 - wxPanel - wxPanel - - FALSE - - - - - - FALSE - <Any platform> - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - TRUE - TRUE - FALSE - - TRUE - -1 - -1 - 600 - 400 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - TRUE - - - - - wxBoxSizer V - 15211392 - dialog-control-document - - sizer - 0 - 1 - 0 - 15222232 - 0 - 7/4/2005 - wbBoxSizerProxy - Vertical - - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - <Any platform> - - wxBoxSizer H - 15336232 - dialog-control-document - - sizer - 0 - 1 - 0 - 15211392 - 0 - 7/4/2005 - wbBoxSizerProxy - Horizontal - - Expand - Centre - 0 - 5 - FALSE - FALSE - TRUE - TRUE - FALSE - FALSE - FALSE - <Any platform> - - wxFlexGridSizer - 15345208 - dialog-control-document - - sizer - 0 - 1 - 0 - 15336232 - 0 - 7/4/2005 - wbFlexGridSizerProxy - 1 - 1 - 3 - 2 - 0 - 0 - - <Any platform> - Centre - Top - 1 - 5 - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - wxStaticText: wxID_STATIC - 15174904 - dialog-control-document - - statictext - 0 - 1 - 0 - 15345208 - 0 - 7/4/2005 - wbStaticTextProxy - wxID_STATIC - 5105 - wxStaticText - - CMake project path - - - - - - FALSE - <Any platform> - - - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Left - Centre - 0 - 5 - TRUE - TRUE - FALSE - FALSE - FALSE - TRUE - FALSE - - - - - wxTextCtrl: ID_PROJECT_PATH - 15369448 - dialog-control-document - - textctrl - 0 - 1 - 0 - 15345208 - 0 - 7/4/2005 - wbTextCtrlProxy - ID_PROJECT_PATH - 10103 - wxTextCtrl - m_cmProjectPath - - - - - - - FALSE - <Any platform> - - - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - 50 - -1 - Expand - Centre - 1 - 5 - FALSE - FALSE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - wxButton: ID_BROWSE_PROJECT - 15341600 - dialog-control-document - - dialogcontrol - 0 - 1 - 0 - 15345208 - 0 - 7/4/2005 - wbButtonProxy - wxEVT_COMMAND_BUTTON_CLICKED|OnButtonBrowseProject - ID_BROWSE_PROJECT - 10104 - wxButton - m_BrowseProjectPathButton - Browse - FALSE - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - 55 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - wxStaticText: wxID_STATIC - 15095456 - dialog-control-document - - statictext - 0 - 1 - 0 - 15345208 - 0 - 7/4/2005 - wbStaticTextProxy - wxID_STATIC - 5105 - wxStaticText - - Project build path - - - - - - FALSE - <Any platform> - - - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Left - Centre - 0 - 5 - TRUE - TRUE - FALSE - FALSE - FALSE - TRUE - FALSE - - - - - wxTextCtrl: ID_SOURCE_BUILD_PATH - 15114544 - dialog-control-document - - textctrl - 0 - 1 - 0 - 15345208 - 0 - 7/4/2005 - wbTextCtrlProxy - wxEVT_COMMAND_TEXT_UPDATED|OnSourceBuildPathUpdated - wxEVT_COMMAND_TEXT_ENTER|OnSourceBuildPathEnter - ID_SOURCE_BUILD_PATH - 10105 - wxTextCtrl - m_cmBuildPath - - - - - - - FALSE - <Any platform> - - - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - 50 - -1 - Expand - Top - 1 - 5 - FALSE - FALSE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - wxButton: ID_BROWSE_BUILD - 15258912 - dialog-control-document - - dialogcontrol - 0 - 1 - 0 - 15345208 - 0 - 7/4/2005 - wbButtonProxy - wxEVT_COMMAND_BUTTON_CLICKED|OnButtonBrowseBuild - ID_BROWSE_BUILD - 10106 - wxButton - m_BrowseSourcePathButton - Browse - FALSE - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - 55 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - - wxBoxSizer V - 15234376 - dialog-control-document - - sizer - 0 - 1 - 0 - 15336232 - 0 - 7/4/2005 - wbBoxSizerProxy - Vertical - - Centre - Expand - 0 - 5 - TRUE - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - <Any platform> - - wxFlexGridSizer - 15190200 - dialog-control-document - - sizer - 0 - 1 - 0 - 15234376 - 0 - 21/4/2005 - wbFlexGridSizerProxy - - - 2 - 2 - 0 - 0 - - <Any platform> - Centre - Centre - 0 - 5 - TRUE - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - - wxStaticText: wxID_STATIC - 15184416 - dialog-control-document - - statictext - 0 - 1 - 0 - 15190200 - 0 - 28/4/2005 - wbStaticTextProxy - wxID_STATIC - 5105 - wxStaticText - - Generate - - - - - - FALSE - <Any platform> - - - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Left - Centre - 0 - 5 - FALSE - TRUE - FALSE - FALSE - FALSE - TRUE - FALSE - - - - - wxComboBox: ID_CHOOSE_GENERATOR - 15380104 - dialog-control-document - - combobox - 0 - 1 - 0 - 15190200 - 0 - 28/4/2005 - wbComboBoxProxy - ID_CHOOSE_GENERATOR - 10107 - wxComboBox - m_cmGeneratorChoice - - - - - - - - FALSE - <Any platform> - - - FALSE - FALSE - TRUE - FALSE - FALSE - - -1 - -1 - 170 - -1 - Centre - Expand - 1 - 5 - FALSE - FALSE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - wxStaticText: wxID_STATIC - 15143832 - dialog-control-document - - statictext - 0 - 1 - 0 - 15190200 - 0 - 21/4/2005 - wbStaticTextProxy - wxID_STATIC - 5105 - wxStaticText - - Search - - - - - - FALSE - <Any platform> - - - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Left - Centre - 0 - 5 - FALSE - TRUE - FALSE - FALSE - FALSE - TRUE - FALSE - - - - - wxComboBox: ID_SEARCHQUERY - 15164688 - dialog-control-document - - combobox - 0 - 1 - 0 - 15190200 - 0 - 21/4/2005 - wbComboBoxProxy - wxEVT_COMMAND_COMBOBOX_SELECTED|OnSearchquerySelected - wxEVT_COMMAND_TEXT_UPDATED|OnSearchqueryUpdated - ID_SEARCHQUERY - 10109 - wxComboBox - m_cmSearchQuery - - - - - - - - FALSE - <Any platform> - - - FALSE - FALSE - FALSE - FALSE - TRUE - - -1 - -1 - 170 - -1 - Centre - Expand - 1 - 5 - FALSE - FALSE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - - wxCheckBox: ID_SHOW_ADVANCED - 15248616 - dialog-control-document - - checkbox - 0 - 1 - 0 - 15234376 - 0 - 7/4/2005 - wbCheckBoxProxy - wxEVT_COMMAND_CHECKBOX_CLICKED|OnShowAdvancedValues - ID_SHOW_ADVANCED - 10108 - wxCheckBox - m_cmShowAdvanced - Show advanced values - FALSE - - - - - - - - FALSE - <Any platform> - FALSE - TRUE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Right - Centre - 0 - 5 - TRUE - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - - - - - - - wxGrid: ID_OPTIONS - 15335040 - dialog-control-document - - grid - 0 - 1 - 0 - 15211392 - 0 - 7/4/2005 - wbGridProxy - wxEVT_GRID_CELL_CHANGE|OnCellChange - wxEVT_GRID_SELECT_CELL|OnGridSelectCell - wxEVT_MOTION|OnPropertyMotion - ID_OPTIONS - 10110 - wxPropertyList - wxGrid - m_cmOptions - TRUE - 10 - 2 - 250 - 25 - 20 - 0 - Rows - - - - - - FALSE - <Any platform> - - - FALSE - FALSE - FALSE - FALSE - FALSE - TRUE - TRUE - FALSE - FALSE - TRUE - FALSE - - -1 - -1 - 200 - 150 - Expand - Centre - 1 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - - - wxPanel: ID_LOGPANEL - 15443800 - dialog-control-document - - panel - 0 - 1 - 0 - 15327264 - 0 - 7/4/2005 - wbPanelProxy - ID_LOGPANEL - 10111 - wxPanel - wxPanel - - FALSE - - - - - - FALSE - <Any platform> - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - TRUE - FALSE - FALSE - - TRUE - -1 - -1 - -1 - 100 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - TRUE - - - - - wxBoxSizer V - 15414728 - dialog-control-document - - sizer - 0 - 1 - 0 - 15443800 - 0 - 7/4/2005 - wbBoxSizerProxy - Vertical - - Centre - Centre - 1 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - <Any platform> - - wxBoxSizer H - 15422736 - dialog-control-document - - sizer - 0 - 1 - 0 - 15414728 - 0 - 8/4/2005 - wbBoxSizerProxy - Horizontal - - Expand - Centre - 1 - 5 - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - FALSE - <Any platform> - - wxTextCtrl: ID_LOG_AREA - 15432752 - dialog-control-document - - textctrl - 0 - 1 - 0 - 15422736 - 0 - 8/4/2005 - wbTextCtrlProxy - ID_LOG_AREA - 10112 - wxTextCtrl - m_cmLog - Select your project path (where CMakeLists.txt is) and then select the build path (where the projects should be saved), or select a previous build path. - -Right click on a cache value for additional options (delete and ignore). Press configure to update and display new values in red, press OK to generate the projects and exit. - - - - - - FALSE - <Any platform> - - - TRUE - FALSE - FALSE - FALSE - TRUE - FALSE - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - TRUE - FALSE - - -1 - -1 - -1 - -1 - Expand - Expand - 1 - 5 - FALSE - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - - - - - wxTextCtrl: ID_DESCRIPTION - 35749000 - dialog-control-document - - textctrl - 0 - 1 - 0 - 15422736 - 0 - 8/4/2005 - wbTextCtrlProxy - ID_DESCRIPTION - 10113 - wxTextCtrl - m_cmDescription - - - - - - - FALSE - <Any platform> - - - TRUE - FALSE - FALSE - FALSE - TRUE - FALSE - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - TRUE - FALSE - - -1 - -1 - 200 - -1 - Centre - Expand - 0 - 5 - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - - - - - wxBoxSizer H - 35769328 - dialog-control-document - - sizer - 0 - 1 - 0 - 15414728 - 0 - 7/4/2005 - wbBoxSizerProxy - Horizontal - - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - <Any platform> - - wxButton: ID_DO_CONFIGURE - 35775496 - dialog-control-document - - dialogcontrol - 0 - 1 - 0 - 35769328 - 0 - 7/4/2005 - wbButtonProxy - wxEVT_COMMAND_BUTTON_CLICKED|OnButtonConfigure - ID_DO_CONFIGURE - 10114 - wxButton - m_ConfigureButton - Co&nfigure - TRUE - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - wxButton: ID_DO_OK - 35789784 - dialog-control-document - - dialogcontrol - 0 - 1 - 0 - 35769328 - 0 - 7/4/2005 - wbButtonProxy - wxEVT_COMMAND_BUTTON_CLICKED|OnButtonOk - ID_DO_OK - 10115 - wxButton - m_OkButton - &Generate! - FALSE - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - wxButton: ID_DO_CANCEL - 35804120 - dialog-control-document - - dialogcontrol - 0 - 1 - 0 - 35769328 - 0 - 23/4/2005 - wbButtonProxy - wxEVT_COMMAND_BUTTON_CLICKED|OnButtonCancel - ID_DO_CANCEL - 10116 - wxButton - m_CancelButton - C&ancel - FALSE - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - wxStaticLine: wxID_STATIC - 35818312 - dialog-control-document - - staticline - 0 - 1 - 0 - 35769328 - 0 - 23/4/2005 - wbStaticLineProxy - wxID_STATIC - 5105 - wxStaticLine - - - - - FALSE - __WXMSW__ - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Centre - Expand - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - wxButton: ID_DO_DELETE_CACHE - 35831264 - dialog-control-document - - dialogcontrol - 0 - 1 - 0 - 35769328 - 0 - 8/4/2005 - wbButtonProxy - wxEVT_COMMAND_BUTTON_CLICKED|OnButtonDeleteCache - ID_DO_DELETE_CACHE - 10117 - wxButton - m_DeleteCacheButton - &Delete Cache - FALSE - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - wxButton: ID_CLEAR_LOG - 35845416 - dialog-control-document - - dialogcontrol - 0 - 1 - 0 - 35769328 - 0 - 23/4/2005 - wbButtonProxy - wxEVT_COMMAND_BUTTON_CLICKED|OnClearLogClick - ID_CLEAR_LOG - 10118 - wxButton - m_ClearLogButton - Clear &Log - FALSE - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - wxStaticLine: wxID_STATIC - 35859640 - dialog-control-document - - staticline - 0 - 1 - 0 - 35769328 - 0 - 23/4/2005 - wbStaticLineProxy - wxID_STATIC - 5105 - wxStaticLine - - - - - FALSE - __WXMSW__ - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Centre - Expand - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - wxButton: ID_BROWSE_GRID - 35872520 - dialog-control-document - - dialogcontrol - 0 - 1 - 0 - 35769328 - 0 - 23/4/2005 - wbButtonProxy - wxEVT_COMMAND_BUTTON_CLICKED|OnBrowseGridClick - ID_BROWSE_GRID - 10119 - wxButton - m_cmBrowseCell - &Browse - FALSE - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - - - - - wxStatusBar: ID_STATUSBAR - 15182152 - dialog-control-document - - statusbar - 0 - 1 - 0 - 15139352 - 0 - 7/4/2005 - wbStatusBarProxy - ID_STATUSBAR - 10120 - wxStatusBar - - - - - - - FALSE - <Any platform> - 2 - - - TRUE - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - wxMenuBar: ID_CMAKE_MENUBAR - 35895160 - dialog-control-document - - menubar - 0 - 1 - 0 - 15139352 - 0 - 19/4/2005 - wbMenuBarProxy - ID_CMAKE_MENUBAR - <Any platform> - - File - 35897080 - dialog-control-document - - menu - 0 - 1 - 0 - 35895160 - 0 - 19/4/2005 - wbMenuProxy - &File - <Any platform> - - &Reload Cache\tCtrl+R: ID_MENU_RELOAD_CACHE - 35899080 - dialog-control-document - - menuitem - 0 - 1 - 0 - 35897080 - 0 - 19/4/2005 - wbMenuItemProxy - wxEVT_COMMAND_MENU_SELECTED|OnMenuReloadCacheClick - ID_MENU_RELOAD_CACHE - 10122 - &Reload Cache\tCtrl+R - Normal - FALSE - Reload the cache from disk - - <Any platform> - - - &Delete Cache\tCtrl+D: ID_MENU_DELETE_CACHE - 35902816 - dialog-control-document - - menuitem - 0 - 1 - 0 - 35897080 - 0 - 19/4/2005 - wbMenuItemProxy - wxEVT_COMMAND_MENU_SELECTED|OnMenuDeleteCacheClick - ID_MENU_DELETE_CACHE - 10123 - &Delete Cache\tCtrl+D - Normal - FALSE - Delete the cache on disk of the current path - - <Any platform> - - - ------------ - 35906472 - dialog-control-document - - menuitem - 0 - 1 - 0 - 35897080 - 0 - 19/4/2005 - wbMenuSeparatorProxy - <Any platform> - - - E&xit\tAlt+F4: ID_MENU_QUIT - 35908352 - dialog-control-document - - menuitem - 0 - 1 - 0 - 35897080 - 0 - 19/4/2005 - wbMenuItemProxy - wxEVT_COMMAND_MENU_SELECTED|OnMenuQuitClick - ID_MENU_QUIT - 10125 - E&xit\tAlt+F4 - Normal - FALSE - Quit CMake Setup - - <Any platform> - - - - Tools - 35912048 - dialog-control-document - - menu - 0 - 1 - 0 - 35895160 - 0 - 29/4/2005 - wbMenuProxy - &Tools - <Any platform> - - &Configure\tCtrl+N: ID_MENU_CONFIGURE - 35913904 - dialog-control-document - - menuitem - 0 - 1 - 0 - 35912048 - 0 - 31/4/2005 - wbMenuItemProxy - wxEVT_COMMAND_MENU_SELECTED|OnMenuConfigureClick - ID_MENU_CONFIGURE - 10126 - &Configure\tCtrl+N - Normal - FALSE - - - <Any platform> - - - &Generate and Exit\tCtrl+G: ID_MENU_EXITGENERATE - 35917648 - dialog-control-document - - menuitem - 0 - 1 - 0 - 35912048 - 0 - 31/4/2005 - wbMenuItemProxy - wxEVT_COMMAND_MENU_SELECTED|OnMenuGenerateClick - ID_MENU_EXITGENERATE - 10127 - &Generate and Exit\tCtrl+G - Normal - FALSE - - - <Any platform> - - - Toggle &Advanced\tCtrl+A: ID_MENU_TOGGLE_ADVANCED - 35921344 - dialog-control-document - - menuitem - 0 - 1 - 0 - 35912048 - 0 - 31/4/2005 - wbMenuItemProxy - wxEVT_COMMAND_MENU_SELECTED|OnMenuToggleAdvancedClick - ID_MENU_TOGGLE_ADVANCED - 10128 - Toggle &Advanced\tCtrl+A - Normal - FALSE - - - <Any platform> - - - ------------ - 35925000 - dialog-control-document - - menuitem - 0 - 1 - 0 - 35912048 - 0 - 31/4/2005 - wbMenuSeparatorProxy - <Any platform> - - - &Options\tCtrl+O: ID_CMAKE_OPTIONS - 35926880 - dialog-control-document - - menuitem - 0 - 1 - 0 - 35912048 - 0 - 31/4/2005 - wbMenuItemProxy - wxEVT_COMMAND_MENU_SELECTED|OnOptionsClick - ID_CMAKE_OPTIONS - 10124 - &Options\tCtrl+O - Normal - FALSE - - - <Any platform> - - - - Help - 35930576 - dialog-control-document - - menu - 0 - 1 - 0 - 35895160 - 0 - 29/4/2005 - wbMenuProxy - &Help - <Any platform> - - &About ...: ID_ABOUTDLG - 35932424 - dialog-control-document - - menuitem - 0 - 1 - 0 - 35930576 - 0 - 29/4/2005 - wbMenuItemProxy - wxEVT_COMMAND_MENU_SELECTED|OnAboutClick - ID_ABOUTDLG - 10121 - &About ... - Normal - FALSE - Shows the about dialog ... - - <Any platform> - - - - - - CachePopupMenu - 15138824 - dialog-document - - menu - 0 - 1 - 0 - 15140496 - 0 - wbStandaloneMenuProxy - 10050 - FALSE - - ID_MENU - CreatePopupMenu - <Any platform> - - &Ignore cache entry: ID_CACHE_IGNORE - 35936824 - dialog-control-document - - menuitem - 0 - 1 - 0 - 15138824 - 0 - 16/4/2005 - wbMenuItemProxy - ID_CACHE_IGNORE - 10051 - &Ignore cache entry - Normal - FALSE - Ignores the value of the current cache entry - - <Any platform> - - - &Delete cache entry: ID_CACHE_DELETE - 35940576 - dialog-control-document - - menuitem - 0 - 1 - 0 - 15138824 - 0 - 16/4/2005 - wbMenuItemProxy - ID_CACHE_DELETE - 10052 - &Delete cache entry - Normal - FALSE - Deletes the current cache entry (reverts on next configure) - - <Any platform> - - - ------------ - 35944192 - dialog-control-document - - menuitem - 0 - 1 - 0 - 15138824 - 0 - 23/4/2005 - wbMenuSeparatorProxy - <Any platform> - - - &Browse ...: ID_CACHE_BROWSE - 35945856 - dialog-control-document - - menuitem - 0 - 1 - 0 - 15138824 - 0 - 23/4/2005 - wbMenuItemProxy - ID_CACHE_BROWSE - 10053 - &Browse ... - Normal - FALSE - - - <Any platform> - - - - Progress Dialog - 35949536 - dialog-document - - dialog - 0 - 1 - 0 - 15140496 - 0 - 27/4/2005 - wbDialogProxy - 10000 - FALSE - - ID_PROGRESSDLG - 10000 - CMProgressDialog - wxDialog - wxDialog - progressdlg.cpp - progressdlg.h - - Progress Dialog - TRUE - - FALSE - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - TRUE - FALSE - - FALSE - TRUE - -1 - -1 - 400 - 300 - - - wxBoxSizer V - 35967376 - dialog-control-document - - sizer - 0 - 1 - 0 - 35949536 - 0 - wbBoxSizerProxy - Vertical - - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - <Any platform> - - Spacer - 35975296 - dialog-control-document - - spacer - 0 - 1 - 0 - 35967376 - 0 - 27/4/2005 - wbSpacerProxy - 5 - 5 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - <Any platform> - - - wxStaticText: wxID_STATIC - 35982864 - dialog-control-document - - statictext - 0 - 1 - 0 - 35967376 - 0 - 27/4/2005 - wbStaticTextProxy - wxID_STATIC - 5105 - wxStaticText - m_textMessage - Please wait while CMake configures ... - - - - - - FALSE - <Any platform> - - - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - TRUE - FALSE - - - - - wxBoxSizer H - 35998688 - dialog-control-document - - sizer - 0 - 1 - 0 - 35967376 - 0 - 27/4/2005 - wbBoxSizerProxy - Horizontal - - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - <Any platform> - - wxGauge: ID_CMAKE_PROGRESS - 36006648 - dialog-control-document - - gauge - 0 - 1 - 0 - 35998688 - 0 - 27/4/2005 - wbGaugeProxy - ID_CMAKE_PROGRESS - 10001 - wxGauge - m_progress - 0 - 100 - - - - - - FALSE - <Any platform> - - - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - 250 - 20 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - - wxButton: ID_CMAKE_BUTTON - 36022448 - dialog-control-document - - dialogcontrol - 0 - 1 - 0 - 35967376 - 0 - 27/4/2005 - wbButtonProxy - wxEVT_COMMAND_BUTTON_CLICKED|OnCmakeCancelClick - ID_CMAKE_BUTTON - 10002 - wxButton - - &Cancel - FALSE - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - Spacer - 36035776 - dialog-control-document - - spacer - 0 - 1 - 0 - 35967376 - 0 - 27/4/2005 - wbSpacerProxy - 5 - 5 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - FALSE - <Any platform> - - - - - About ... - 15317784 - dialog-document - - dialog - 0 - 1 - 0 - 15140496 - 0 - 27/4/2005 - wbDialogProxy - 10000 - FALSE - - ID_SOME_ABOUTDLG - 10003 - CMAboutDlg - wxDialog - wxDialog - aboutdlg.cpp - aboutdlg.h - - About ... - TRUE - - FALSE - - - - - - FALSE - <Any platform> - FALSE - TRUE - TRUE - FALSE - TRUE - FALSE - FALSE - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - TRUE - FALSE - - FALSE - TRUE - -1 - -1 - 400 - 300 - - - wxBoxSizer V - 36057296 - dialog-control-document - - sizer - 0 - 1 - 0 - 15317784 - 0 - wbBoxSizerProxy - Vertical - - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - <Any platform> - - wxFlexGridSizer - 36065536 - dialog-control-document - - sizer - 0 - 1 - 0 - 36057296 - 0 - 28/4/2005 - wbFlexGridSizerProxy - 1 - 0 - 2 - 1 - 0 - 0 - - <Any platform> - Expand - Centre - 1 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - wxStaticBitmap: wxID_STATIC - 36075864 - dialog-control-document - - staticbitmap - 0 - 1 - 0 - 36065536 - 0 - 28/4/2005 - wbStaticBitmapProxy - wxID_STATIC - 5105 - wxStaticBitmap - m_cmIcon - - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - 32 - 32 - Centre - Top - 0 - 5 - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - FALSE - - - - - wxHtmlWindow: ID_HTMLWINDOW - 36090408 - dialog-control-document - - htmlwindow - 0 - 1 - 0 - 36065536 - 0 - 28/4/2005 - wbHtmlWindowProxy - ID_HTMLWINDOW - 10000 - wxHtmlWindow - m_html - - - - - - - - FALSE - <Any platform> - - - FALSE - TRUE - FALSE - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - TRUE - TRUE - FALSE - - -1 - -1 - 500 - 300 - Expand - Expand - 1 - 5 - FALSE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - - wxButton: ID_ABOUT_DLG_OK - 36107664 - dialog-control-document - - dialogcontrol - 0 - 1 - 0 - 36057296 - 0 - 28/4/2005 - wbButtonProxy - wxEVT_COMMAND_BUTTON_CLICKED|OnAboutDlgClick - ID_ABOUT_DLG_OK - 10005 - wxButton - - &Ok - FALSE - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - - - CMakeSetup Options ... - 35982000 - dialog-document - - dialog - 0 - 1 - 0 - 15140496 - 0 - 29/4/2005 - wbDialogProxy - 10000 - FALSE - - ID_DIALOG - 10004 - CMOptionsDlg - wxDialog - wxDialog - optionsdlg.cpp - optionsdlg.h - - CMakeSetup Options ... - TRUE - - FALSE - - - - - - FALSE - <Any platform> - FALSE - TRUE - TRUE - FALSE - TRUE - FALSE - FALSE - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - TRUE - FALSE - - FALSE - FALSE - -1 - -1 - 400 - 300 - - - wxBoxSizer V - 36135880 - dialog-control-document - - sizer - 0 - 1 - 0 - 35982000 - 0 - wbBoxSizerProxy - Vertical - - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - <Any platform> - - wxNotebook: ID_NOTEBOOK - 36145472 - dialog-control-document - - notebook - 0 - 1 - 0 - 36135880 - 0 - 29/4/2005 - wbNotebookProxy - ID_NOTEBOOK - 10006 - wxNotebook - - FALSE - - - - - - FALSE - <Any platform> - - - TRUE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Expand - Centre - 1 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - TRUE - - - - wxPanel: ID_PANEL - 36166888 - dialog-control-document - - panel - 0 - 1 - 0 - 36145472 - 0 - 29/4/2005 - wbPanelProxy - ID_PANEL - 10007 - wxPanel - wxPanel - - FALSE - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - TRUE - FALSE - FALSE - - TRUE - -1 - -1 - -1 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - General - - - wxBoxSizer V - 36317128 - dialog-control-document - - sizer - 0 - 1 - 0 - 36166888 - 0 - 29/4/2005 - wbBoxSizerProxy - Vertical - - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - <Any platform> - - Spacer - 36325216 - dialog-control-document - - spacer - 0 - 1 - 0 - 36317128 - 0 - 29/4/2005 - wbSpacerProxy - 5 - 5 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - <Any platform> - - - wxCheckBox: ID_CHECKBOX_CLOSECMAKE - 36332952 - dialog-control-document - - checkbox - 0 - 1 - 0 - 36317128 - 0 - 29/4/2005 - wbCheckBoxProxy - wxEVT_COMMAND_CHECKBOX_CLICKED|OnButtonOK - ID_CHECKBOX_CLOSECMAKE - 10008 - wxCheckBox - m_closeAfterGenerate - Close down CMakeSetup after generation of project - FALSE - - - - - - - - FALSE - <Any platform> - FALSE - TRUE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Left - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - - - - wxBoxSizer H - 36164088 - dialog-control-document - - sizer - 0 - 1 - 0 - 36135880 - 0 - 29/4/2005 - wbBoxSizerProxy - Horizontal - - Centre - Centre - 0 - 5 - TRUE - TRUE - FALSE - TRUE - FALSE - FALSE - FALSE - <Any platform> - - wxButton: wxID_OK - 36348448 - dialog-control-document - - dialogcontrol - 0 - 1 - 0 - 36164088 - 0 - 29/4/2005 - wbButtonProxy - wxID_OK - 5100 - wxButton - - &OK - FALSE - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - wxButton: wxID_CANCEL - 36362168 - dialog-control-document - - dialogcontrol - 0 - 1 - 0 - 36164088 - 0 - 29/4/2005 - wbButtonProxy - wxID_CANCEL - 5101 - wxButton - - &Cancel - FALSE - - - - - - FALSE - <Any platform> - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - FALSE - - -1 - -1 - -1 - -1 - Centre - Centre - 0 - 5 - TRUE - TRUE - TRUE - TRUE - FALSE - FALSE - FALSE - - - - - - - - - Sources - 15191936 - html-document - - sourcesfolder - 1 - 1 - 0 - 15057456 - 1 - - CMakeSetup.rc - 15091464 - source-editor-document - CMakeSetup.rc - source-editor - 0 - 0 - 1 - 15191936 - 0 - 7/4/2005 - - - - - Images - 36089928 - html-document - - bitmapsfolder - 1 - 1 - 0 - 15057456 - 1 - - NGDialog.ico - 36090080 - image-document - NGDialog.ico - image - 0 - 0 - 0 - 36089928 - 0 - 25/4/2005 - 100 - - - - diff --git a/Source/WXDialog/CMakeSetup.rc b/Source/WXDialog/CMakeSetup.rc deleted file mode 100644 index 1cd7ef290..000000000 --- a/Source/WXDialog/CMakeSetup.rc +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef APSTUDIO_INVOKED -#include "wx/msw/wx.rc" -#endif - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -DID_AAAAAAA ICON "NGDialog.ico" diff --git a/Source/WXDialog/CMakeSetupFrame.cpp b/Source/WXDialog/CMakeSetupFrame.cpp deleted file mode 100644 index 26ac226b1..000000000 --- a/Source/WXDialog/CMakeSetupFrame.cpp +++ /dev/null @@ -1,1778 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: CMakeSetupFrame.cpp,v $ - Language: C++ - Date: $Date: 2007-11-05 19:47:20 $ - Version: $Revision: 1.3 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma implementation "CMakeSetupFrame.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -////@begin includes -////@end includes - -#include -#include -#include - -#include "CMakeSetupFrame.h" -#include "PropertyList.h" -#include "app_resources.h" -#include "CMakeIcon.xpm" -#include "aboutdlg.h" - -// cmake includes -#include "../cmVersion.h" -#include "../cmListFileCache.h" -#include "../cmCacheManager.h" -#include "../cmGlobalGenerator.h" -#include "../cmDynamicLoader.h" - -////@begin XPM images -////@end XPM images - -/*! - * CMakeSetupFrm type definition - */ - -IMPLEMENT_CLASS( CMakeSetupFrm, wxFrame ) - -/*! - * CMakeSetupFrm event table definition - */ - -BEGIN_EVENT_TABLE( CMakeSetupFrm, wxFrame ) - -////@begin CMakeSetupFrm event table entries - EVT_CLOSE( CMakeSetupFrm::OnCloseWindow ) - - EVT_SPLITTER_SASH_POS_CHANGING( ID_SPLITTERWINDOW, CMakeSetupFrm::OnSplitterPosChanging ) - EVT_SPLITTER_DCLICK( ID_SPLITTERWINDOW, CMakeSetupFrm::OnSplitterwindowSashDClick ) - - EVT_BUTTON( ID_BROWSE_PROJECT, CMakeSetupFrm::OnButtonBrowseProject ) - - EVT_TEXT( ID_SOURCE_BUILD_PATH, CMakeSetupFrm::OnSourceBuildPathUpdated ) - EVT_TEXT_ENTER( ID_SOURCE_BUILD_PATH, CMakeSetupFrm::OnSourceBuildPathEnter ) - - EVT_BUTTON( ID_BROWSE_BUILD, CMakeSetupFrm::OnButtonBrowseBuild ) - - EVT_COMBOBOX( ID_SEARCHQUERY, CMakeSetupFrm::OnSearchquerySelected ) - EVT_TEXT( ID_SEARCHQUERY, CMakeSetupFrm::OnSearchqueryUpdated ) - - EVT_CHECKBOX( ID_SHOW_ADVANCED, CMakeSetupFrm::OnShowAdvancedValues ) - - EVT_GRID_CELL_CHANGE( CMakeSetupFrm::OnCellChange ) - EVT_GRID_SELECT_CELL( CMakeSetupFrm::OnGridSelectCell ) - EVT_MOTION( CMakeSetupFrm::OnPropertyMotion ) - - EVT_BUTTON( ID_DO_CONFIGURE, CMakeSetupFrm::OnButtonConfigure ) - - EVT_BUTTON( ID_DO_OK, CMakeSetupFrm::OnButtonOk ) - - EVT_BUTTON( ID_DO_CANCEL, CMakeSetupFrm::OnButtonCancel ) - - EVT_BUTTON( ID_DO_DELETE_CACHE, CMakeSetupFrm::OnButtonDeleteCache ) - - EVT_BUTTON( ID_CLEAR_LOG, CMakeSetupFrm::OnClearLogClick ) - - EVT_BUTTON( ID_BROWSE_GRID, CMakeSetupFrm::OnBrowseGridClick ) - - EVT_MENU( ID_MENU_RELOAD_CACHE, CMakeSetupFrm::OnMenuReloadCacheClick ) - - EVT_MENU( ID_MENU_DELETE_CACHE, CMakeSetupFrm::OnMenuDeleteCacheClick ) - - EVT_MENU( ID_MENU_QUIT, CMakeSetupFrm::OnMenuQuitClick ) - - EVT_MENU( ID_MENU_CONFIGURE, CMakeSetupFrm::OnMenuConfigureClick ) - - EVT_MENU( ID_MENU_EXITGENERATE, CMakeSetupFrm::OnMenuGenerateClick ) - - EVT_MENU( ID_MENU_TOGGLE_ADVANCED, CMakeSetupFrm::OnMenuToggleAdvancedClick ) - - EVT_MENU( ID_CMAKE_OPTIONS, CMakeSetupFrm::OnOptionsClick ) - - EVT_MENU( ID_ABOUTDLG, CMakeSetupFrm::OnAboutClick ) - -////@end CMakeSetupFrm event table entries - - EVT_MENU_RANGE(CM_RECENT_BUILD_ITEM, CM_RECENT_BUILD_ITEM + CM_MAX_RECENT_PATHS, CMakeSetupFrm::OnRecentFileMenu) - - EVT_TEXT_ENTER(ID_SEARCHQUERY, CMakeSetupFrm::OnAddQuery ) - -END_EVENT_TABLE() - -/** Callback function for CMake generator, to tell user how - far the generation actually is */ -void updateProgress(const char *msg, float prog, void *cd) -{ - // TODO: Make some kind of progress counter - - CMakeSetupFrm *fm = (CMakeSetupFrm *)cd; - - if(fm) - { - if(prog < 0) - fm->LogMessage(0, msg); - else - { - fm->UpdateProgress(prog); - fm->IssueUpdate(); - } - } -} - -/** Callback function for CMake generator, to tell user about stuff. This should be - logged in the m_log window */ -void MFCMessageCallback(const char* m, const char* title, bool& nomore, void *clientdata) -{ - CMakeSetupFrm *fm = (CMakeSetupFrm *)clientdata; - - if(fm) - { - wxString what = m, msg; - if(what.StartsWith("CMake Error: ")) - fm->LogMessage(-1, m); - else - fm->LogMessage(1, m); - } -} - -// Convert to Win32 path (slashes). This calls the system tools one and then -// removes the spaces. It is not in system tools because we don't want any -// generators accidentally use it -std::string ConvertToWindowsPath(const char* path) -{ - // Convert to output path. - // Remove the "" around it (if any) since it's an output path for - // the shell. If another shell-oriented feature is not designed - // for a GUI use, then we are in trouble. - // save the value of the force to unix path option - bool saveForce = cmSystemTools::GetForceUnixPaths(); - // make sure we get windows paths no matter what for the GUI - cmSystemTools::SetForceUnixPaths(false); - std::string s = cmSystemTools::ConvertToOutputPath(path); - // now restore the force unix path to its previous value - cmSystemTools::SetForceUnixPaths(saveForce); - if (s.size()) - { - std::string::iterator i = s.begin(); - if (*i == '\"') - { - s.erase(i, i + 1); - } - i = s.begin() + s.length() - 1; - if (*i == '\"') - { - s.erase(i, i + 1); - } - } - return s; -} - - -bool DnDFile::OnDropFiles(wxCoord, wxCoord, const wxArrayString& filenames) -{ - size_t nFiles = filenames.GetCount(); - - // only one item allowed - if(nFiles > 1) - return false; - - if(nFiles == 1) - { - // only one dir allowed - if(!wxDirExists(filenames[0])) - return false; - - // strip the seperator - wxFileName name; - name.AssignDir(filenames[0]); - - // issue a 'drop' by changing text ctrl - m_pOwner->SetValue(name.GetFullPath()); - - return true; - } - - return false; -} - -/*! - * CMakeSetupFrm constructors - */ - -CMakeSetupFrm::CMakeSetupFrm( ) - : m_cmake(0) -{ -} - -CMakeSetupFrm::CMakeSetupFrm( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) - : m_cmake(0) -{ - Create( parent, id, caption, pos, size, style ); -} - -/*! - * CMakeSetupFrm creator - */ - -bool CMakeSetupFrm::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) -{ -////@begin CMakeSetupFrm member initialisation - m_splitter = NULL; - m_cmProjectPath = NULL; - m_BrowseProjectPathButton = NULL; - m_cmBuildPath = NULL; - m_BrowseSourcePathButton = NULL; - m_cmGeneratorChoice = NULL; - m_cmSearchQuery = NULL; - m_cmShowAdvanced = NULL; - m_cmOptions = NULL; - m_cmLog = NULL; - m_cmDescription = NULL; - m_ConfigureButton = NULL; - m_OkButton = NULL; - m_CancelButton = NULL; - m_DeleteCacheButton = NULL; - m_ClearLogButton = NULL; - m_cmBrowseCell = NULL; -////@end CMakeSetupFrm member initialisation - - wxFrame::Create( parent, id, caption, pos, size, style ); - - // make sure the developer does not assign more then 100 - // would be rediculous but also overlap other id's - wxASSERT(CM_MAX_RECENT_PATHS < 100); - - m_ExitTimer = 0; - - m_progressDlg = 0; - m_noRefresh = false; - m_quitAfterGenerating = false; - - m_config = new wxConfig("CMakeSetup"); - - wxIcon icon(CMakeIcon_xpm); - SetIcon(icon); - - CreateControls(); - - //SetIcon(GetIconResource(wxT("cmake_icon.xpm"))); - //SetIcon(wxIcon("NGDialog.ico", wxBITMAP_TYPE_ICO_RESOURCE)); - Centre(); - - // is it needed to hide console? - m_RunningConfigure = false; - cmSystemTools::SetRunCommandHideConsole(true); - cmSystemTools::SetErrorCallback(MFCMessageCallback, (void *)this); - - // create our cmake instance - m_cmake = new cmake; - m_cmake->SetProgressCallback(updateProgress, (void *)this); - - return TRUE; -} - -CMakeSetupFrm::~CMakeSetupFrm() -{ - wxString str; - - // write configs back to disk - m_config->Write(CM_LASTPROJECT_PATH, m_cmProjectPath->GetValue()); - m_config->Write(CM_LASTBUILD_PATH, m_cmBuildPath->GetValue()); - - // clear the config first - for(size_t i = 0 ; i < CM_MAX_RECENT_PATHS; i++) - { - str.Printf("%s%i", _(CM_RECENT_BUILD_PATH), i); - m_config->Write(str, _("")); - } - - // write the last CM_MAX_RECENT_PATHS items back to config - int i = (m_recentPaths.Count() >= CM_MAX_RECENT_PATHS ? CM_MAX_RECENT_PATHS : m_recentPaths.Count()); - while(i > 0) - { - str.Printf("%s%i", _(CM_RECENT_BUILD_PATH), i); - m_config->Write(str, m_recentPaths[i - 1]); - i--; - } - - // write recent query list to config - for(int j = 0; j < m_cmSearchQuery->GetCount(); j++) - { - // allow max to be written - if(j < CM_MAX_SEARCH_QUERIES) - { - str.Printf("%s%i", _(CM_SEARCH_QUERY), j); - m_config->Write(str, m_cmSearchQuery->GetString(j)); - } - else - break; - } - - // set window pos + size in settings - if(!IsIconized() && !IsMaximized()) - { - int xsize, ysize; - GetSize(&xsize, &ysize); - if(xsize > 0 && ysize > 0) - { - m_config->Write(CM_XSIZE, (long)xsize); - m_config->Write(CM_YSIZE, (long)ysize); - } - - if(m_splitter->GetSashPosition() > 0) - m_config->Write(CM_SPLITTERPOS, (long)m_splitter->GetSashPosition()); - - GetPosition(&xsize, &ysize); - if(xsize != 0 && ysize != 0) - { - m_config->Write(CM_XPOS, (long)xsize); - m_config->Write(CM_YPOS, (long)ysize); - } - } - - // write changes (will be done before deletion) - delete m_config; - - // delete timer - if(m_ExitTimer) - delete m_ExitTimer; - - // delete our cmake instance again - if(m_cmake) - delete m_cmake; -} - -void CMakeSetupFrm::UpdateWindowState() -{ - bool dogenerate = !m_RunningConfigure && !m_cmOptions->IsCacheDirty() && - (m_cmOptions->GetCount() != 0); - - // when configure is running, disable a lot of stuff - m_cmProjectPath->Enable(!m_RunningConfigure); - m_BrowseProjectPathButton->Enable(!m_RunningConfigure); - m_cmBuildPath->Enable(!m_RunningConfigure); - m_BrowseSourcePathButton->Enable(!m_RunningConfigure); - m_cmGeneratorChoice->Enable(!m_RunningConfigure); - m_cmShowAdvanced->Enable(!m_RunningConfigure); - m_cmOptions->Enable(!m_RunningConfigure); - m_ConfigureButton->Enable(!m_RunningConfigure); - m_OkButton->Enable(dogenerate); - m_CancelButton->Enable(m_RunningConfigure); - m_DeleteCacheButton->Enable(!m_RunningConfigure); - m_ClearLogButton->Enable(!m_RunningConfigure); - if(m_RunningConfigure) - m_cmBrowseCell->Enable(false); - - // when cache loaded (items available show other control) - m_cmGeneratorChoice->Enable(m_cmOptions->GetCount() == 0 && !m_RunningConfigure); - m_cmSearchQuery->Enable(!m_RunningConfigure); - m_cmBrowseCell->Enable(!m_RunningConfigure && m_cmOptions->IsSelectedItemBrowsable()); - - // disable the menus when configuring - if(GetMenuBar()) - { - // disable configure button when there is nothing, and generate and exit - // only when it is allowed to generate - GetMenuBar()->Enable(ID_MENU_EXITGENERATE, dogenerate); - GetMenuBar()->Enable(ID_MENU_CONFIGURE, !m_RunningConfigure); - - for(size_t i = 0; i < GetMenuBar()->GetMenuCount(); i++) - GetMenuBar()->EnableTop(i, !m_RunningConfigure); - } -} - -void CMakeSetupFrm::LogMessage(int logkind, const char *msg) -{ - // put CR first but prevent a CR at the end -#ifndef __LINUX__ - if(m_cmLog->IsModified()) - (*m_cmLog) << wxT("\n"); -#else - // Linux requires a different approach - if(!m_cmLog->GetValue().IsEmpty()) - (*m_cmLog) << wxT("\n"); -#endif - - // log error, warning, or message - wxTextAttr defattr = m_cmLog->GetDefaultStyle(); - - switch(logkind) - { - // user message - case 1: - { - wxTextAttr colattr(*wxBLUE); - m_cmLog->SetDefaultStyle(colattr); - (*m_cmLog) << msg; - m_cmLog->SetDefaultStyle(defattr); - } - break; - - // progress - case 0: - (*m_cmLog) << msg; - break; - - // error - case -1: - { - wxTextAttr colattr(*wxRED); - m_cmLog->SetDefaultStyle(colattr); - (*m_cmLog) << msg; - m_cmLog->SetDefaultStyle(defattr); - } - break; - } - - IssueUpdate(); -} - -void CMakeSetupFrm::IssueUpdate() -{ - //::wxSafeYield(m_CancelButton, true); - ::wxYield(); - - // when we pressed cancel on the progress dialog - // stop all activities - if(m_progressDlg) - { - if(m_progressDlg->CancelPressed() && !m_progressDlg->IsCancelling()) - { - m_progressDlg->CancelAcknowledged(); - - // send a button event to cancel the progress - wxCommandEvent event( wxEVT_COMMAND_BUTTON_CLICKED, ID_DO_CANCEL); - wxPostEvent(this, event); - } - } -} - -/*! - * Control creation for CMakeSetupFrm - */ - -void CMakeSetupFrm::CreateControls() -{ -////@begin CMakeSetupFrm content construction - CMakeSetupFrm* itemFrame1 = this; - - wxMenuBar* menuBar = new wxMenuBar; - wxMenu* itemMenu37 = new wxMenu; - itemMenu37->Append(ID_MENU_RELOAD_CACHE, _("&Reload Cache\tCtrl+R"), _("Reload the cache from disk"), wxITEM_NORMAL); - itemMenu37->Append(ID_MENU_DELETE_CACHE, _("&Delete Cache\tCtrl+D"), _("Delete the cache on disk of the current path"), wxITEM_NORMAL); - itemMenu37->AppendSeparator(); - itemMenu37->Append(ID_MENU_QUIT, _("E&xit\tAlt+F4"), _("Quit CMake Setup"), wxITEM_NORMAL); - menuBar->Append(itemMenu37, _("&File")); - wxMenu* itemMenu42 = new wxMenu; - itemMenu42->Append(ID_MENU_CONFIGURE, _("&Configure\tCtrl+N"), _T(""), wxITEM_NORMAL); - itemMenu42->Append(ID_MENU_EXITGENERATE, _("&Generate and Exit\tCtrl+G"), _T(""), wxITEM_NORMAL); - itemMenu42->Append(ID_MENU_TOGGLE_ADVANCED, _("Toggle &Advanced\tCtrl+A"), _T(""), wxITEM_NORMAL); - itemMenu42->AppendSeparator(); - itemMenu42->Append(ID_CMAKE_OPTIONS, _("&Options\tCtrl+O"), _T(""), wxITEM_NORMAL); - menuBar->Append(itemMenu42, _("&Tools")); - wxMenu* itemMenu48 = new wxMenu; - itemMenu48->Append(ID_ABOUTDLG, _("&About ..."), _("Shows the about dialog ..."), wxITEM_NORMAL); - menuBar->Append(itemMenu48, _("&Help")); - itemFrame1->SetMenuBar(menuBar); - - m_splitter = new wxSplitterWindow( itemFrame1, ID_SPLITTERWINDOW, wxDefaultPosition, wxSize(100, 100), wxSP_3DBORDER|wxSP_3DSASH|wxNO_BORDER ); - - wxPanel* itemPanel3 = new wxPanel( m_splitter, ID_MAINPANEL, wxDefaultPosition, wxSize(600, 400), wxNO_BORDER|wxTAB_TRAVERSAL ); - itemPanel3->SetExtraStyle(itemPanel3->GetExtraStyle()|wxWS_EX_VALIDATE_RECURSIVELY); - wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxVERTICAL); - itemPanel3->SetSizer(itemBoxSizer4); - - wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxHORIZONTAL); - itemBoxSizer4->Add(itemBoxSizer5, 0, wxGROW|wxTOP|wxBOTTOM, 5); - wxFlexGridSizer* itemFlexGridSizer6 = new wxFlexGridSizer(2, 3, 0, 0); - itemFlexGridSizer6->AddGrowableRow(1); - itemFlexGridSizer6->AddGrowableCol(1); - itemBoxSizer5->Add(itemFlexGridSizer6, 1, wxALIGN_TOP|wxLEFT, 5); - wxStaticText* itemStaticText7 = new wxStaticText( itemPanel3, wxID_STATIC, _("CMake project path"), wxDefaultPosition, wxDefaultSize, 0 ); - itemFlexGridSizer6->Add(itemStaticText7, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxADJUST_MINSIZE, 5); - - m_cmProjectPath = new wxTextCtrl( itemPanel3, ID_PROJECT_PATH, _T(""), wxDefaultPosition, wxSize(50, -1), 0 ); - itemFlexGridSizer6->Add(m_cmProjectPath, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5); - - m_BrowseProjectPathButton = new wxButton( itemPanel3, ID_BROWSE_PROJECT, _("Browse"), wxDefaultPosition, wxSize(55, -1), 0 ); - itemFlexGridSizer6->Add(m_BrowseProjectPathButton, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5); - - wxStaticText* itemStaticText10 = new wxStaticText( itemPanel3, wxID_STATIC, _("Project build path"), wxDefaultPosition, wxDefaultSize, 0 ); - itemFlexGridSizer6->Add(itemStaticText10, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxADJUST_MINSIZE, 5); - - m_cmBuildPath = new wxTextCtrl( itemPanel3, ID_SOURCE_BUILD_PATH, _T(""), wxDefaultPosition, wxSize(50, -1), 0 ); - itemFlexGridSizer6->Add(m_cmBuildPath, 1, wxGROW|wxALIGN_TOP|wxTOP|wxBOTTOM, 5); - - m_BrowseSourcePathButton = new wxButton( itemPanel3, ID_BROWSE_BUILD, _("Browse"), wxDefaultPosition, wxSize(55, -1), 0 ); - itemFlexGridSizer6->Add(m_BrowseSourcePathButton, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5); - - wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxVERTICAL); - itemBoxSizer5->Add(itemBoxSizer13, 0, wxGROW|wxLEFT|wxRIGHT, 5); - wxFlexGridSizer* itemFlexGridSizer14 = new wxFlexGridSizer(2, 2, 0, 0); - itemBoxSizer13->Add(itemFlexGridSizer14, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5); - wxStaticText* itemStaticText15 = new wxStaticText( itemPanel3, wxID_STATIC, _("Generate"), wxDefaultPosition, wxDefaultSize, 0 ); - itemFlexGridSizer14->Add(itemStaticText15, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxADJUST_MINSIZE, 5); - - wxString* m_cmGeneratorChoiceStrings = NULL; - m_cmGeneratorChoice = new wxComboBox( itemPanel3, ID_CHOOSE_GENERATOR, _T(""), wxDefaultPosition, wxSize(170, -1), 0, m_cmGeneratorChoiceStrings, wxCB_READONLY ); - itemFlexGridSizer14->Add(m_cmGeneratorChoice, 1, wxALIGN_CENTER_HORIZONTAL|wxGROW|wxTOP|wxBOTTOM, 5); - - wxStaticText* itemStaticText17 = new wxStaticText( itemPanel3, wxID_STATIC, _("Search"), wxDefaultPosition, wxDefaultSize, 0 ); - itemFlexGridSizer14->Add(itemStaticText17, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxADJUST_MINSIZE, 5); - - wxString* m_cmSearchQueryStrings = NULL; - m_cmSearchQuery = new wxComboBox( itemPanel3, ID_SEARCHQUERY, _T(""), wxDefaultPosition, wxSize(170, -1), 0, m_cmSearchQueryStrings, wxWANTS_CHARS ); - itemFlexGridSizer14->Add(m_cmSearchQuery, 1, wxALIGN_CENTER_HORIZONTAL|wxGROW|wxTOP|wxBOTTOM, 5); - - m_cmShowAdvanced = new wxCheckBox( itemPanel3, ID_SHOW_ADVANCED, _("Show advanced values"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_cmShowAdvanced->SetValue(FALSE); - itemBoxSizer13->Add(m_cmShowAdvanced, 0, wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5); - - m_cmOptions = new wxPropertyList( itemPanel3, ID_OPTIONS, wxDefaultPosition, wxSize(200, 150), wxSTATIC_BORDER|wxWANTS_CHARS|wxVSCROLL ); - m_cmOptions->SetDefaultColSize(250); - m_cmOptions->SetDefaultRowSize(25); - m_cmOptions->SetColLabelSize(20); - m_cmOptions->SetRowLabelSize(0); - m_cmOptions->CreateGrid(10, 2, wxGrid::wxGridSelectRows); - itemBoxSizer4->Add(m_cmOptions, 1, wxGROW|wxALL, 5); - - wxPanel* itemPanel21 = new wxPanel( m_splitter, ID_LOGPANEL, wxDefaultPosition, wxSize(-1, 100), wxNO_BORDER|wxTAB_TRAVERSAL ); - wxBoxSizer* itemBoxSizer22 = new wxBoxSizer(wxVERTICAL); - itemPanel21->SetSizer(itemBoxSizer22); - - wxBoxSizer* itemBoxSizer23 = new wxBoxSizer(wxHORIZONTAL); - itemBoxSizer22->Add(itemBoxSizer23, 1, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5); - m_cmLog = new wxTextCtrl( itemPanel21, ID_LOG_AREA, _("Select your project path (where CMakeLists.txt is) and then select the build path (where the projects should be saved), or select a previous build path.\n\nRight click on a cache value for additional options (delete and ignore). Press configure to update and display new values in red, press OK to generate the projects and exit."), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxTE_RICH2|wxSTATIC_BORDER ); - itemBoxSizer23->Add(m_cmLog, 1, wxGROW|wxRIGHT, 5); - - m_cmDescription = new wxTextCtrl( itemPanel21, ID_DESCRIPTION, _T(""), wxDefaultPosition, wxSize(200, -1), wxTE_MULTILINE|wxTE_READONLY|wxTE_RICH2|wxSTATIC_BORDER ); - itemBoxSizer23->Add(m_cmDescription, 0, wxGROW|wxLEFT, 5); - - wxBoxSizer* itemBoxSizer26 = new wxBoxSizer(wxHORIZONTAL); - itemBoxSizer22->Add(itemBoxSizer26, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); - m_ConfigureButton = new wxButton( itemPanel21, ID_DO_CONFIGURE, _("Co&nfigure"), wxDefaultPosition, wxDefaultSize, 0 ); - m_ConfigureButton->SetDefault(); - itemBoxSizer26->Add(m_ConfigureButton, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); - - m_OkButton = new wxButton( itemPanel21, ID_DO_OK, _("&Generate!"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer26->Add(m_OkButton, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); - - m_CancelButton = new wxButton( itemPanel21, ID_DO_CANCEL, _("C&ancel"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer26->Add(m_CancelButton, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); - -#if defined(__WXMSW__) - wxStaticLine* itemStaticLine30 = new wxStaticLine( itemPanel21, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - itemBoxSizer26->Add(itemStaticLine30, 0, wxGROW|wxALL, 5); -#endif - - m_DeleteCacheButton = new wxButton( itemPanel21, ID_DO_DELETE_CACHE, _("&Delete Cache"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer26->Add(m_DeleteCacheButton, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); - - m_ClearLogButton = new wxButton( itemPanel21, ID_CLEAR_LOG, _("Clear &Log"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer26->Add(m_ClearLogButton, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); - -#if defined(__WXMSW__) - wxStaticLine* itemStaticLine33 = new wxStaticLine( itemPanel21, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - itemBoxSizer26->Add(itemStaticLine33, 0, wxGROW|wxALL, 5); -#endif - - m_cmBrowseCell = new wxButton( itemPanel21, ID_BROWSE_GRID, _("&Browse"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer26->Add(m_cmBrowseCell, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); - - m_splitter->SplitHorizontally(itemPanel3, itemPanel21, 300); - - wxStatusBar* itemStatusBar35 = new wxStatusBar( itemFrame1, ID_STATUSBAR, wxST_SIZEGRIP|wxNO_BORDER ); - itemStatusBar35->SetFieldsCount(2); - itemFrame1->SetStatusBar(itemStatusBar35); - -////@end CMakeSetupFrm content construction -} - -void CMakeSetupFrm::DoInitFrame(cmCommandLineInfo &cm, const wxString &fn) -{ - // path to where cmake.exe is - // m_PathToExecutable = cm.GetPathToExecutable().c_str(); - m_PathToExecutable = fn; - - // adjust size of last bar, to display % progress - wxStatusBar *bar = GetStatusBar(); - if(bar) - { - wxASSERT(bar->GetFieldsCount() > 1); - - // fill all with -1. Why this way? because the count of the status bars - // can change. All of the widths must be accounted for and initialised - int *widths = new int[bar->GetFieldsCount()]; - for(int i = 0; i < bar->GetFieldsCount(); i++) - widths[i] = -1; - - // the % field - widths[1] = 75; - bar->SetStatusWidths(bar->GetFieldsCount(), widths); - delete widths; - } - - wxString name, generator; - std::vector names; - - m_RunningConfigure = false; - - // set grid labels - m_cmOptions->SetColLabelValue(0, wxT("Cache Name")); - m_cmOptions->SetColLabelValue(1, wxT("Cache Value")); - m_cmOptions->SetProjectGenerated(false); - - // set drop target - m_cmOptions->SetDropTarget(new DnDFile(m_cmBuildPath)); - - m_cmake->GetRegisteredGenerators(names); - for(std::vector::iterator i = names.begin(); i != names.end(); ++i) - { - name = i->c_str(); - m_cmGeneratorChoice->Append(name); - } - - // sync advanced option with grid - m_cmOptions->SetShowAdvanced(m_cmShowAdvanced->GetValue()); - - // if we have a command line query that a generator - // needs to be chosen instead of the default, take it - bool foundGivenGenerator = false; - if(!cm.m_GeneratorChoiceString.IsEmpty()) - { - // set proper discovered generator - foundGivenGenerator = m_cmGeneratorChoice->SetStringSelection(cm.m_GeneratorChoiceString); - } - - // if none selected, we will see if VS8, VS7 or VS6 is present - if(!foundGivenGenerator || m_cmGeneratorChoice->GetValue().IsEmpty()) - { - std::string mp; - mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup;Dbghelp_path]"; - cmSystemTools::ExpandRegistryValues(mp); - if(mp != "/registry") - generator = wxT("Visual Studio 8 2005"); - else - { - mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.1;InstallDir]"; - cmSystemTools::ExpandRegistryValues(mp); - if (mp != "/registry") - generator = wxT("Visual Studio 7 .NET 2003"); - else - { - mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.0;InstallDir]"; - cmSystemTools::ExpandRegistryValues(mp); - if (mp != "/registry") - generator = wxT("Visual Studio 7"); - else - generator = wxT("Visual Studio 6"); - } - } - } - - // set proper discovered generator - m_cmGeneratorChoice->SetStringSelection(generator); - - wxString str; - str.Printf("CMake %d.%d - %s", cmVersion::GetMajorVersion(), - cmVersion::GetMinorVersion(), - cmVersion::GetReleaseVersion().c_str()); - str.Printf("CMakeSetup v%i.%i%s", CMAKEGUI_MAJORVER, CMAKEGUI_MINORVER, CMAKEGUI_ADDVER); - - SetTitle(str); - wxString path; - - // get last 5 used projects - for(size_t i = 0; i < CM_MAX_RECENT_PATHS; i++) - { - path.Printf("%s%i", _(CM_RECENT_BUILD_PATH), i); - if(m_config->Read(path, &str)) - AppendPathToRecentList(str); - } - - // get query items - for(size_t i = 0; i < CM_MAX_SEARCH_QUERIES; i++) - { - path.Printf("%s%i", _(CM_SEARCH_QUERY), i); - if(m_config->Read(path, &str)) - m_cmSearchQuery->Append(str); - } - - - // make sure the call to update grid is not executed - m_noRefresh = true; - m_cmSearchQuery->SetValue(_("")); - m_noRefresh = false; - - // Get the parameters from the command line info - // If an unknown parameter is found, try to interpret it too, since it - // is likely to be a file dropped on the shortcut :) - bool sourceDirLoaded = false, - buildDirLoaded = false; - - if(cm.m_LastUnknownParameter.empty()) - { - if(cm.m_WhereSource.size() > 0 ) - { - m_cmProjectPath->SetValue(cm.m_WhereSource.c_str()); - sourceDirLoaded = true; - } - - if (cm.m_WhereBuild.size() > 0 ) - { - m_cmBuildPath->SetValue(cm.m_WhereBuild.c_str()); - buildDirLoaded = true; - } - - m_cmShowAdvanced->SetValue(cm.m_AdvancedValues); - } - else - { - m_cmShowAdvanced->SetValue(false); - - // TODO: Interpret directory from dropped shortcut - //this->ChangeDirectoriesFromFile(cmdInfo->m_LastUnknownParameter.c_str()); - } - - if (cm.m_ExitAfterLoad) - { - int id = GetId(); - m_ExitTimer = new wxTimer(this, id); - m_ExitTimer->Start(3000); - - Connect( id, wxEVT_TIMER,(wxObjectEventFunction) &CMakeSetupFrm::OnExitTimer ); - - } - - // retrieve settings, this needs to be done here - // because writing to the m_cmBuildPath triggers a cache reload - if(!sourceDirLoaded && m_config->Read(CM_LASTPROJECT_PATH, &str)) - m_cmProjectPath->SetValue(str); - - if(!buildDirLoaded) - { - m_cmOptions->RemoveAll(); - if(m_config->Read(CM_LASTBUILD_PATH, &str)) - m_cmBuildPath->SetValue(str); - } - - // set window size from settings - long xsize, ysize, splitpos; - if(m_config->Read(CM_XSIZE, &xsize) && m_config->Read(CM_YSIZE, &ysize) && - m_config->Read(CM_SPLITTERPOS, &splitpos)) - { - SetSize(xsize, ysize); - m_splitter->SetSashPosition(splitpos); - } - - if(m_config->Read(CM_XPOS, &xsize) && m_config->Read(CM_YPOS, &ysize)) - SetSize(xsize, ysize, -1, -1, wxSIZE_USE_EXISTING); - - UpdateWindowState(); -} - -void CMakeSetupFrm::LoadCacheFromDiskToGUI() -{ - wxString builddir = m_cmBuildPath->GetValue(); - - cmCacheManager *cachem = m_cmake->GetCacheManager(); - if(cachem && !builddir.Trim().IsEmpty()) - { - if(cachem->LoadCache(builddir.c_str())) - AppendPathToRecentList(builddir); - - // represent this cache in the grid, but not before we - // wiped all of the old items - FillCacheGUIFromCacheManager(); - - // set the generator string to the one used in the cache - cmCacheManager::CacheIterator it = cachem->GetCacheIterator("CMAKE_GENERATOR"); - if(!it.IsAtEnd()) - { - wxString curGen = it.GetValue(); - m_cmGeneratorChoice->SetStringSelection(curGen); - } - } -} - -void CMakeSetupFrm::AppendPathToRecentList(const wxString &p) -{ - wxFileName path; - wxString str; - - if(p.IsEmpty()) - return; - - // cheap way to get rid of trailing seperators - path.AssignDir(p); - str = path.GetPath(); - - // append the item, or add it to end to make sure - // it is remembered between sessions - for(size_t i = 0; i < m_recentPaths.Count(); i++) - { - if(m_recentPaths[i].IsSameAs(str, false)) - { - m_recentPaths.RemoveAt(i); - - // only re-add when item is still valid - if(::wxDirExists(str)) - m_recentPaths.Add(str); - else - return; // no add when the item is not existing - - return; - } - } - - if(GetMenuBar()) - { - // get file menu - int lastUsedID = 0; - wxMenu *mnu = GetMenuBar()->GetMenu(0); - wxASSERT(mnu != 0); - - if(::wxDirExists(str)) - { - // add to array - if(m_recentPaths.Count() == 0) - mnu->AppendSeparator(); - - lastUsedID = CM_RECENT_BUILD_ITEM + m_recentPaths.Count(); - m_recentPaths.Add(str); - - // when we have more in list then we can display, prune and - // remove some menu items until we have room (and available ID's again) - if(m_recentPaths.Count() > CM_MAX_RECENT_PATHS) - { - // prune the list - while(m_recentPaths.Count() > CM_MAX_RECENT_PATHS) - m_recentPaths.RemoveAt(0); - - // now determine count, and remove until we have room - int index = mnu->GetMenuItemCount() - 1; - int count = 0; - wxASSERT(index > 0); - - wxMenuItem *item; - do - { - item = mnu->FindItemByPosition(index); - if(item) - { - if(item->IsSeparator()) - { - // next index is valid item - index ++; - break; - } - else - count ++; - } - - index --; - } - while(index >= 0 && item); - - // ok, if count > CM_MAX_RECENT_PATHS then we are going to - // delete some items on the index position - if(count >= CM_MAX_RECENT_PATHS) - { - // delete items that are exceeding - while(count >= CM_MAX_RECENT_PATHS) - { - lastUsedID = mnu->FindItemByPosition(index)->GetId(); - mnu->Delete(lastUsedID); - count --; - } - } - } - - // append item - mnu->Append(lastUsedID, str); - } - } -} - -bool CMakeSetupFrm::PerformCacheRun() -{ - bool enable = false; - cmCacheManager *cachem = m_cmake->GetCacheManager(); - cmCacheManager::CacheIterator it = cachem->NewIterator(); - - // remove all items that are no longer present - size_t j = 0; - while(j < m_cmOptions->GetCount()) - { - // check to see if it is still in the CMake cache - // if it is still in the cache then it is no longer new - wxPropertyItem *item = m_cmOptions->GetItem(j); - if ( !it.Find((const char*)item->GetPropName().c_str()) ) - m_cmOptions->RemoveProperty(item); - else - { - // ok we found it, mark as old - item->SetNewValue(false); - int row = m_cmOptions->FindProperty(item); - if(row != -1) - m_cmOptions->UpdatePropertyItem(item, row); - j++; - } - } - - if(cachem->GetSize() > 0 && !cmSystemTools::GetErrorOccuredFlag()) - { - bool enable = true; - for(size_t i = 0; i < m_cmOptions->GetCount(); i++) - { - wxPropertyItem* item = m_cmOptions->GetItem(i); - if(item->GetAdvanced()) - { - if(item->GetNewValue() && m_cmOptions->GetShowAdvanced()) - { - // if one new value then disable to OK button - enable = false; - break; - } - } - else - { - if(item->GetNewValue()) - { - // if one new value then disable to OK button - enable = false; - break; - } - } - } - } - - return enable; -} - -void CMakeSetupFrm::FillCacheGUIFromCacheManager() -{ - cmCacheManager *cachem = m_cmake->GetCacheManager(); - cmCacheManager::CacheIterator it = cachem->NewIterator(); - - // remove all items that are no longer present - size_t j = 0; - while(j < m_cmOptions->GetCount()) - { - // check to see if it is still in the CMake cache - // if it is still in the cache then it is no longer new - wxPropertyItem *item = m_cmOptions->GetItem(j); - if ( !it.Find((const char*)item->GetPropName().c_str()) ) - m_cmOptions->RemoveProperty(item); - else - j++; - } - - // if there are already entries in the cache, then - // put the new ones in the top, so they show up first - bool reverseOrder = false; - for(cmCacheManager::CacheIterator i = cachem->NewIterator(); !i.IsAtEnd(); i.Next()) - { - const char* key = i.GetName(); - - // if value has trailing space or tab, enclose it in single quotes - // to enforce the fact that it has 'invisible' trailing stuff - std::string value = i.GetValue(); - if (value.size() && (value[value.size() - 1] == ' ' || value[value.size() - 1] == '\t')) - value = '\'' + value + '\''; - - bool advanced = i.GetPropertyAsBool("ADVANCED"); - switch(i.GetType() ) - { - case cmCacheManager::BOOL: - { - wxString OnOff; - - if(cmSystemTools::IsOn(value.c_str())) - OnOff = wxT("ON"); - else - OnOff = wxT("OFF"); - - m_cmOptions->AddProperty(key, - OnOff.c_str(), - i.GetProperty("HELPSTRING"), - wxPropertyList::CHECKBOX, "ON|OFF", - reverseOrder, - advanced ); - } - break; - - case cmCacheManager::PATH: - m_cmOptions->AddProperty(key, - value.c_str(), - i.GetProperty("HELPSTRING"), - wxPropertyList::PATH,"", - reverseOrder, advanced); - break; - - case cmCacheManager::FILEPATH: - m_cmOptions->AddProperty(key, - value.c_str(), - i.GetProperty("HELPSTRING"), - wxPropertyList::FILE,"", - reverseOrder, advanced); - break; - - case cmCacheManager::STRING: - m_cmOptions->AddProperty(key, - value.c_str(), - i.GetProperty("HELPSTRING"), - wxPropertyList::EDIT,"", - reverseOrder, advanced); - break; - - case cmCacheManager::INTERNAL: - { - wxPropertyItem *pItem = m_cmOptions->FindPropertyByName(key); - if(pItem) - m_cmOptions->RemoveProperty(pItem); - } - break; - } - } -} - -void CMakeSetupFrm::OnExitTimer(wxTimerEvent &event) -{ - Close(); -} - -/*! - * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BROWSE_PROJECT - */ - -void CMakeSetupFrm::OnButtonBrowseProject( wxCommandEvent& event ) -{ - const wxString& dir = wxDirSelector("Select project directory", m_cmProjectPath->GetValue()); - if(!dir.IsEmpty()) - m_cmProjectPath->SetValue(dir); -} - -/*! - * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BROWSE_BUILD - */ - -void CMakeSetupFrm::OnButtonBrowseBuild( wxCommandEvent& event ) -{ - const wxString& dir = wxDirSelector("Select build directory", m_cmBuildPath->GetValue()); - if(!dir.IsEmpty()) - m_cmBuildPath->SetValue(dir); -} - -/*! - * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_SHOW_ADVANCED - */ - -void CMakeSetupFrm::OnShowAdvancedValues( wxCommandEvent& event ) -{ - if(m_cmShowAdvanced->GetValue()) - m_cmOptions->ShowAdvanced(); - else - m_cmOptions->HideAdvanced(); -} - -/*! - * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_CONFIGURE - */ - -void CMakeSetupFrm::OnButtonConfigure( wxCommandEvent& event ) -{ - DoConfigure(); -} - -void CMakeSetupFrm::DoConfigure() -{ - // enable error messages each time configure is pressed - cmSystemTools::EnableMessages(); - m_cmOptions->HideControls(); - - cmSystemTools::ResetErrorOccuredFlag(); - - // instantiate a dialog for the progress meter - - PerformCacheRun(); - RunCMake(false); -} - -int CMakeSetupFrm::RunCMake(bool generateProjectFiles) -{ - int value = -1; - - // clear log - m_cmLog->Clear(); - m_cmLog->DiscardEdits(); - - wxString builddir = m_cmBuildPath->GetValue(), - sourcedir = m_cmProjectPath->GetValue(), - err = wxT("Error in configuration process, project files may be invalid"); - - - // sanity check for people pressing OK on empty dirs - if(builddir.Trim().IsEmpty() || sourcedir.Trim().IsEmpty()) - { - wxMessageBox(wxT("Please enter a valid source directory and build directory"), wxT("Error"), wxOK | wxICON_ERROR, this); - return -1; - } - - // check if the directory exists, if not, create it - if(!cmSystemTools::FileExists(builddir.c_str())) - { - wxString str; - str << wxT("Build directory does not exist, should I create it?\n\nDirectory: ") << builddir; - - int answer = wxMessageBox(str, wxT("Create directory"), wxYES_NO, this); - if (answer == wxYES) - { - if(!cmSystemTools::MakeDirectory(builddir.c_str())) - { - // could not create, tell and abort - wxMessageBox(wxT("Could not create directory"), wxT("Error"), wxOK | wxICON_ERROR, this); - return -1; - } - } - else - { - // we abort because the user did not want to make the directory - wxMessageBox(wxT("Build Project aborted, nothing done."), wxT("Aborted"), - wxOK | wxICON_EXCLAMATION, this); - return -1; - } - } - - /** show progress dialog that informs the user with a progress bar */ - if(m_progressDlg) - m_progressDlg->Destroy(); - - m_progressDlg = new CMProgressDialog(this); - m_progressDlg->Show(); - - // set the wait cursor - m_RunningConfigure = true; - UpdateWindowState(); - - // always save the current gui values to disk - SaveCacheFromGUI(); - - // Make sure we are working from the cache on disk - LoadCacheFromDiskToGUI(); - - // setup the cmake instance - if (generateProjectFiles) - { - if(m_cmake->Generate() != 0) - { - wxMessageBox(err, wxT("Error"), wxOK | wxICON_ERROR, this); - cmSystemTools::Error(err.c_str()); - value = -1; - } - else - { - value = 0; - m_cmOptions->SetProjectGenerated(true); // clear cache dirty when generated - } - } - else - { - // set paths - m_cmake->SetHomeDirectory(m_cmProjectPath->GetValue().c_str()); - m_cmake->SetStartDirectory(m_cmProjectPath->GetValue().c_str()); - m_cmake->SetHomeOutputDirectory(m_cmBuildPath->GetValue().c_str()); - m_cmake->SetStartOutputDirectory(m_cmBuildPath->GetValue().c_str()); - - m_cmake->SetGlobalGenerator(m_cmake->CreateGlobalGenerator(m_cmGeneratorChoice->GetValue().c_str())); - m_cmake->SetCMakeCommand(m_PathToExecutable.c_str()); - m_cmake->LoadCache(); - if(m_cmake->Configure() != 0) - { - wxMessageBox(err, wxT("Error"), wxOK | wxICON_ERROR, this); - cmSystemTools::Error(err.c_str()); - } - - // update the GUI with any new values in the caused by the - // generation process - LoadCacheFromDiskToGUI(); - } - - m_RunningConfigure = false; - - if(!value) - cmSystemTools::ResetErrorOccuredFlag(); - - m_progressDlg->Destroy(); - m_progressDlg = 0; - - // reset the statusbar progress - wxStatusBar *bar = GetStatusBar(); - if(bar) - bar->SetStatusText(wxEmptyString, 1); - - UpdateWindowState(); - return value; -} - -//! Save GUI values to cmCacheManager and then save to disk. -void CMakeSetupFrm::SaveCacheFromGUI() -{ - cmCacheManager *cachem = m_cmake->GetCacheManager(); - FillCacheManagerFromCacheGUI(); - - // write the cache to disk - if(!m_cmBuildPath->GetValue().Trim().IsEmpty()) - cachem->SaveCache(m_cmBuildPath->GetValue().c_str()); -} - -void CMakeSetupFrm::FillCacheManagerFromCacheGUI() -{ - cmCacheManager *cachem = m_cmake->GetCacheManager(); - - cmCacheManager::CacheIterator it = cachem->NewIterator(); - for(size_t i = 0; i < m_cmOptions->GetCount(); i++) - { - wxPropertyItem* item = m_cmOptions->GetItem(i); - if ( it.Find((const char*)item->GetPropName().c_str()) ) - { - // if value is enclosed in single quotes ('foo') then remove them - // they were used to enforce the fact that it had 'invisible' - // trailing stuff - if (item->GetCurValue().Len() >= 2 && - item->GetCurValue().GetChar(0) == '\'' && - item->GetCurValue().GetChar(item->GetCurValue().Len() - 1) == '\'') - { - it.SetValue(item->GetCurValue().Mid(1, item->GetCurValue().Len() - 2).c_str()); - } - else - it.SetValue(item->GetCurValue().c_str()); - } - } -} - - -/*! - * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_OK - */ - -void CMakeSetupFrm::OnButtonOk( wxCommandEvent& event ) -{ - DoGenerate(); -} - -void CMakeSetupFrm::DoGenerate() -{ - cmSystemTools::EnableMessages(); - - cmSystemTools::ResetErrorOccuredFlag(); - - m_cmOptions->HideControls(); - PerformCacheRun(); - - if(!RunCMake(true)) - { - // issue a close when this is done (this is issued by menu "Generate and Exit" - if(m_quitAfterGenerating) - Close(); - else if(!wxGetKeyState(WXK_SHIFT)) - { - bool close; - m_config->Read(CM_CLOSEAFTERGEN, &close, CM_CLOSEAFTERGEN_DEF); - - if(!close) - wxMessageBox(wxT("Building of project files succesful!"), wxT("Success!"), wxOK|wxICON_INFORMATION); - else - Close(); - } - } -} - -/*! - * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_CANCEL - */ - -void CMakeSetupFrm::OnButtonCancel( wxCommandEvent& event ) -{ - DoCancelButton(); -} - -void CMakeSetupFrm::DoCancelButton() -{ - if(m_RunningConfigure) - { - int result = wxMessageBox(wxT("You are in the middle of a Configure.\n" - "If you Cancel now the configure information will be lost.\n" - "Are you sure you want to Cancel?"), wxT("Warning"), wxYES_NO|wxICON_WARNING); - if(result == wxYES) - cmSystemTools::SetFatalErrorOccured(); - else - if(m_progressDlg) - m_progressDlg->ResetCancel(); - } -} - -/*! - * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_DELETE_CACHE - */ - -void CMakeSetupFrm::OnButtonDeleteCache( wxCommandEvent& event ) -{ - DoDeleteCache(); -} - -void CMakeSetupFrm::DoDeleteCache() -{ - bool deletecache = true; - if(m_cmOptions->IsCacheDirty() || (m_cmOptions->GetCount() > 0 && !m_cmOptions->IsGenerated())) - { - int result = ::wxMessageBox(_("You have changed options, are you sure you want to delete all items?\n"), - _("Warning"), wxYES_NO|wxICON_QUESTION); - - // when user wants to wait, wait.. else quit - if(result == wxNO) - deletecache = false; - - } - - if(deletecache) - { - // indicate that we haven't generated a project yet - m_cmOptions->SetProjectGenerated(false); - - if(!m_cmBuildPath->GetValue().Trim().IsEmpty() && m_cmake != 0) - m_cmake->GetCacheManager()->DeleteCache(m_cmBuildPath->GetValue().Trim()); - - LoadCacheFromDiskToGUI(); - UpdateWindowState(); - } -} - -/*! - * Should we show tooltips? - */ - -bool CMakeSetupFrm::ShowToolTips() -{ - return TRUE; -} - -/*! - * Get bitmap resources - */ - -wxBitmap CMakeSetupFrm::GetBitmapResource( const wxString& name ) -{ - // Bitmap retrieval -////@begin CMakeSetupFrm bitmap retrieval - return wxNullBitmap; -////@end CMakeSetupFrm bitmap retrieval -} - -/*! - * Get icon resources - */ - -wxIcon CMakeSetupFrm::GetIconResource( const wxString& name ) -{ - // Icon retrieval -////@begin CMakeSetupFrm icon retrieval - if (name == wxT("cmake_icon.xpm")) - { - wxIcon icon(_T("cmake_icon.xpm"), wxBITMAP_TYPE_XPM); - return icon; - } - return wxNullIcon; -////@end CMakeSetupFrm icon retrieval -} - -/*! - * wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING event handler for ID_SPLITTERWINDOW - */ - -void CMakeSetupFrm::OnSplitterPosChanging( wxSplitterEvent& event ) -{ - int width, height; - - GetSize(&width, &height); - - if((height > 100)) - { - if(event.GetSashPosition() < 170) - event.SetSashPosition(170); - else - { - if(event.GetSashPosition() > (height - 180)) - event.SetSashPosition(height - 180); - } - } - else - event.Veto(); - -} - - -/*! - * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_CLEAR_LOG - */ - -void CMakeSetupFrm::OnClearLogClick( wxCommandEvent& event ) -{ - // delete the log text - m_cmLog->Clear(); - m_cmLog->DiscardEdits(); -} - - -/*! - * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_SOURCE_BUILD_PATH - */ - -void CMakeSetupFrm::OnSourceBuildPathUpdated( wxCommandEvent& event ) -{ - DoReloadCache(); -} - -void CMakeSetupFrm::DoReloadCache() -{ - wxString buildpath = m_cmBuildPath->GetValue(); - // The build dir has changed, check if there is a cache, and - // grab the source dir from it - - // make sure the call to update grid is not executed - m_noRefresh = true; - m_cmSearchQuery->SetValue(_("")); - m_noRefresh = false; - - std::string path = buildpath.c_str(); - cmSystemTools::ConvertToUnixSlashes(path); - - // adjust the cmake instance - m_cmake->SetHomeOutputDirectory(buildpath.c_str()); - m_cmake->SetStartOutputDirectory(buildpath.c_str()); - - std::string cache_file = path; - cache_file += "/CMakeCache.txt"; - - // fill in the project path where the source is located, this is - // read from the CMake cache - cmCacheManager *cachem = m_cmake->GetCacheManager(); - cmCacheManager::CacheIterator it = cachem->NewIterator(); - if (cmSystemTools::FileExists(cache_file.c_str()) && cachem->LoadCache(path.c_str()) && - it.Find("CMAKE_HOME_DIRECTORY")) - { - path = ConvertToWindowsPath(it.GetValue()); - m_cmProjectPath->SetValue(path.c_str()); - } - - m_cmOptions->RemoveAll(); - LoadCacheFromDiskToGUI(); - UpdateWindowState(); -} - - -/*! - * wxEVT_COMMAND_TEXT_ENTER event handler for ID_SOURCE_BUILD_PATH - */ - -void CMakeSetupFrm::OnSourceBuildPathEnter( wxCommandEvent& event ) -{ - OnSourceBuildPathUpdated(event); -} - -/*! - * wxEVT_MOTION event handler for ID_OPTIONS - */ - -void CMakeSetupFrm::OnPropertyMotion( wxMouseEvent& event ) -{ - ShowPropertyDescription(m_cmOptions->YToRow(event.GetY())); - event.Skip(); -} - - -/*! - * wxEVT_GRID_SELECT_CELL event handler for ID_OPTIONS - */ - -void CMakeSetupFrm::OnGridSelectCell( wxGridEvent& event ) -{ - // show description - ShowPropertyDescription(event.GetRow()); - - // enable or disable the browse button - m_cmBrowseCell->Enable(m_cmOptions->IsSelectedItemBrowsable(event.GetRow())); - event.Skip(); -} - -void CMakeSetupFrm::ShowPropertyDescription(int row) -{ - if(row == wxNOT_FOUND || row < 0) - m_cmDescription->SetValue(wxEmptyString); - else - { - wxPropertyItem *pItem = m_cmOptions->GetPropertyItemFromRow(row); - if(pItem) - m_cmDescription->SetValue(pItem->GetHelpString()); - else - m_cmDescription->SetValue(wxEmptyString); - } -} - -/*! - * wxEVT_GRID_CELL_CHANGE event handler for ID_OPTIONS - */ - -void CMakeSetupFrm::OnCellChange( wxGridEvent& event ) -{ - // update the button state when the cache is invalidated - UpdateWindowState(); -} - -void CMakeSetupFrm::OnRecentFileMenu( wxCommandEvent &event ) -{ - if(GetMenuBar()) - { - // get file menu - wxMenu *mnu = GetMenuBar()->GetMenu(0); - wxASSERT(mnu != 0); - - wxMenuItem *item = mnu->FindItem(event.GetId()); - if(item) - m_cmBuildPath->SetValue(item->GetLabel()); - } -} -/*! - * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_COMBOBOX - */ - -void CMakeSetupFrm::OnSearchquerySelected( wxCommandEvent& event ) -{ - m_cmOptions->SetQuery(m_cmSearchQuery->GetValue()); -} - -void CMakeSetupFrm::OnAddQuery ( wxCommandEvent &event ) -{ - // add current text if not yet present - if(m_cmSearchQuery->FindString(m_cmSearchQuery->GetValue()) == wxNOT_FOUND) - { - m_cmSearchQuery->Append(m_cmSearchQuery->GetValue()); - - // if too many items are present, prune - while(m_cmSearchQuery->GetCount() > CM_MAX_SEARCH_QUERIES) - m_cmSearchQuery->Delete(0); - } -} - -/*! - * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_SEARCHQUERY - */ - -void CMakeSetupFrm::OnSearchqueryUpdated( wxCommandEvent& event ) -{ - // only refresh when this event was caused by user - if(!m_noRefresh) - m_cmOptions->SetQuery(m_cmSearchQuery->GetValue()); -} - - -/*! - * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BROWSE_GRID - */ - -void CMakeSetupFrm::OnBrowseGridClick( wxCommandEvent& event ) -{ - m_cmOptions->BrowseSelectedItem(); -} - - -/*! - * wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_RELOAD_CACHE - */ - -void CMakeSetupFrm::OnMenuReloadCacheClick( wxCommandEvent& event ) -{ - bool reload = true; - if(m_cmOptions->IsCacheDirty() || (m_cmOptions->GetCount() > 0 && !m_cmOptions->IsGenerated())) - { - int result = ::wxMessageBox(_("You have changed options, are you sure you want to reload?\n"), - _("Warning"), wxYES_NO|wxICON_QUESTION); - - // when user wants to wait, wait.. else quit - if(result == wxNO) - reload = false; - - } - - if(reload) - DoReloadCache(); -} - -/*! - * wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_DELETE_CACHE - */ - -void CMakeSetupFrm::OnMenuDeleteCacheClick( wxCommandEvent& event ) -{ - DoDeleteCache(); -} - - -/*! - * wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_QUIT - */ - -void CMakeSetupFrm::OnMenuQuitClick( wxCommandEvent& event ) -{ - // the close event will veto if the user - // did not want to quit due to unsaved changes - Close(); -} - - -/*! - * wxEVT_CLOSE_WINDOW event handler for ID_FRAME - */ - -void CMakeSetupFrm::OnCloseWindow( wxCloseEvent& event ) -{ - // ask quit if: - // - The cache is dirty - // - Or the cache is OK and has some items, and no project was generated recently (configure -> generate) - if(m_cmOptions->IsCacheDirty() || (m_cmOptions->GetCount() > 0 && !m_cmOptions->IsGenerated())) - { - int result = ::wxMessageBox(_("You have changed options, but not yet generated the projects\n" - "are you sure you want to quit?"), _("Warning"), wxYES_NO|wxICON_QUESTION); - - // when user wants to wait, wait.. else quit - if(result == wxNO) - event.Veto(); - else - event.Skip(); - } - else - event.Skip(); -} - - -/*! - * wxEVT_COMMAND_MENU_SELECTED event handler for ID_ABOUTDLG - */ - -void CMakeSetupFrm::OnAboutClick( wxCommandEvent& event ) -{ - CMAboutDlg *dlg = new CMAboutDlg(this); - - wxArrayString generators; - std::vector names; - m_cmake->GetRegisteredGenerators(names); - for(std::vector::iterator i = names.begin(); i != names.end(); ++i) - generators.Add(i->c_str()); - - wxString cmversion, cmsversion; -// cmversion.Printf("v%i.%i %s", cmake::GetMajorVersion(), cmake::GetMinorVersion(), cmake::GetReleaseVersion()); - cmsversion.Printf("v%i.%i%s", CMAKEGUI_MAJORVER, CMAKEGUI_MINORVER, CMAKEGUI_ADDVER); - - dlg->SetAboutText(cmversion, cmsversion, generators); - - dlg->ShowModal(); - dlg->Destroy(); -} - - -/*! - * wxEVT_COMMAND_MENU_SELECTED event handler for ID_CMAKE_OPTIONS - */ - -void CMakeSetupFrm::OnOptionsClick( wxCommandEvent& event ) -{ - CMOptionsDlg *dlg = new CMOptionsDlg(this); - - dlg->SetConfig(m_config); - if(dlg->ShowModal() == wxID_OK) - { - // store volatile settings - dlg->GetConfig(m_config); - - // apply non volatile setting such as clear search query, recent menu, etc. - SyncFormOptions(dlg); - } - - dlg->Destroy(); -} - -void CMakeSetupFrm::SyncFormOptions(CMOptionsDlg *dlg) -{ - // TODO: Clear search query etc. -} -/*! - * wxEVT_COMMAND_SPLITTER_DOUBLECLICKED event handler for ID_SPLITTERWINDOW - */ - -void CMakeSetupFrm::OnSplitterwindowSashDClick( wxSplitterEvent& event ) -{ - event.Veto(); -} - - -/*! - * wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_CONFIGURE - */ - -void CMakeSetupFrm::OnMenuConfigureClick( wxCommandEvent& event ) -{ - DoConfigure(); -} - -/*! - * wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_EXITGENERATE - */ - -void CMakeSetupFrm::OnMenuGenerateClick( wxCommandEvent& event ) -{ - // set flag so that a close command is issued - // after generating the cmake cache to projects - m_quitAfterGenerating = true; - DoGenerate(); - m_quitAfterGenerating = false; -} - - -/*! - * wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_TOGGLE_ADVANCED - */ - -void CMakeSetupFrm::OnMenuToggleAdvancedClick( wxCommandEvent& event ) -{ - // toggle the check box - m_cmShowAdvanced->SetValue(!m_cmShowAdvanced->GetValue()); - OnShowAdvancedValues(event); -} - - diff --git a/Source/WXDialog/CMakeSetupFrame.h b/Source/WXDialog/CMakeSetupFrame.h deleted file mode 100644 index 4237b7e1f..000000000 --- a/Source/WXDialog/CMakeSetupFrame.h +++ /dev/null @@ -1,360 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: CMakeSetupFrame.h,v $ - Language: C++ - Date: $Date: 2005-06-30 19:54:14 $ - Version: $Revision: 1.1 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#ifndef _CMAKESETUPFRAME_H_ -#define _CMAKESETUPFRAME_H_ - -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma interface "CMakeSetupFrame.cpp" -#endif - -/*! - * Includes - */ - -////@begin includes -#include "wx/frame.h" -#include "wx/splitter.h" -#include "wx/grid.h" -#include "wx/statline.h" -#include "wx/statusbr.h" -////@end includes - -#include -#include -#include - - -#include "../cmake.h" -#include "progressdlg.h" -#include "optionsdlg.h" -#include "CommandLineInfo.h" -#include "config.h" - -// this ID should be taken as base to make sure they are unique -// NOTE: DialogBlocks starts at 10100 so 10000 to 10099 are free -#define CM_NEXT_USABLEID CM_RECENT_BUILD_ITEM + CM_MAX_RECENT_PATHS - -/*! - * Forward declarations - */ - -////@begin forward declarations -class wxSplitterWindow; -class wxPropertyList; -////@end forward declarations - -/*! - * Control identifiers - */ - -////@begin control identifiers -#define ID_FRAME 10100 -#define SYMBOL_CMAKESETUPFRM_STYLE wxDEFAULT_FRAME_STYLE|wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxMINIMIZE_BOX|wxMAXIMIZE_BOX|wxCLOSE_BOX|wxSUNKEN_BORDER -#define SYMBOL_CMAKESETUPFRM_TITLE _("CMake Setup v2.0.x") -#define SYMBOL_CMAKESETUPFRM_IDNAME ID_FRAME -#define SYMBOL_CMAKESETUPFRM_SIZE wxSize(600, 550) -#define SYMBOL_CMAKESETUPFRM_POSITION wxDefaultPosition -#define ID_SPLITTERWINDOW 10101 -#define ID_MAINPANEL 10102 -#define ID_PROJECT_PATH 10103 -#define ID_BROWSE_PROJECT 10104 -#define ID_SOURCE_BUILD_PATH 10105 -#define ID_BROWSE_BUILD 10106 -#define ID_CHOOSE_GENERATOR 10107 -#define ID_SEARCHQUERY 10109 -#define ID_SHOW_ADVANCED 10108 -#define ID_OPTIONS 10110 -#define ID_LOGPANEL 10111 -#define ID_LOG_AREA 10112 -#define ID_DESCRIPTION 10113 -#define ID_DO_CONFIGURE 10114 -#define ID_DO_OK 10115 -#define ID_DO_CANCEL 10116 -#define ID_DO_DELETE_CACHE 10117 -#define ID_CLEAR_LOG 10118 -#define ID_BROWSE_GRID 10119 -#define ID_STATUSBAR 10120 -#define ID_MENU_RELOAD_CACHE 10122 -#define ID_MENU_DELETE_CACHE 10123 -#define ID_MENU_QUIT 10125 -#define ID_MENU_CONFIGURE 10126 -#define ID_MENU_EXITGENERATE 10127 -#define ID_MENU_TOGGLE_ADVANCED 10128 -#define ID_CMAKE_OPTIONS 10124 -#define ID_ABOUTDLG 10121 -////@end control identifiers - -/*! - * Compatibility - */ - -#ifndef wxCLOSE_BOX -#define wxCLOSE_BOX 0x1000 -#endif -#ifndef wxFIXED_MINSIZE -#define wxFIXED_MINSIZE 0 -#endif - -class DnDFile : public wxFileDropTarget -{ -public: - DnDFile(wxTextCtrl *pOwner) - : m_pOwner(pOwner) - { - }; - - virtual bool OnDropFiles(wxCoord x, wxCoord y, - const wxArrayString& filenames); - -private: - wxTextCtrl *m_pOwner; -}; - - -/*! - * CMakeSetupFrm class declaration - */ - -class CMakeSetupFrm: public wxFrame -{ - DECLARE_CLASS( CMakeSetupFrm ) - DECLARE_EVENT_TABLE() - -public: - /// Constructors - CMakeSetupFrm( ); - CMakeSetupFrm( wxWindow* parent, wxWindowID id = SYMBOL_CMAKESETUPFRM_IDNAME, const wxString& caption = SYMBOL_CMAKESETUPFRM_TITLE, const wxPoint& pos = SYMBOL_CMAKESETUPFRM_POSITION, const wxSize& size = SYMBOL_CMAKESETUPFRM_SIZE, long style = SYMBOL_CMAKESETUPFRM_STYLE ); - - // Destructor - virtual ~CMakeSetupFrm(); - - bool Create( wxWindow* parent, wxWindowID id = SYMBOL_CMAKESETUPFRM_IDNAME, const wxString& caption = SYMBOL_CMAKESETUPFRM_TITLE, const wxPoint& pos = SYMBOL_CMAKESETUPFRM_POSITION, const wxSize& size = SYMBOL_CMAKESETUPFRM_SIZE, long style = SYMBOL_CMAKESETUPFRM_STYLE ); - - /// Creates the controls and sizers - void CreateControls(); - - /** Logs a message. For the kind parameter use; - 1 - neutral message - 0 - warning message (blue text) - -1 - error message (red text) - */ - void LogMessage(int logkind, const char *msg); - - void UpdateProgress(float progress) { - if(m_progressDlg) - m_progressDlg->SetProgress(progress); - - // also show in the tiny field - wxStatusBar *bar = GetStatusBar(); - if(bar) - { - wxString str; - str.Printf("%2.1f %%", (progress * 100)); - bar->SetStatusText(str, 1); - } - }; - - void IssueUpdate(); - - /** Initialise all crap in the frame, like listing the make generators, - selecting the best one to use, and loading the cache for the first time - when the build paths were set */ - void DoInitFrame(cmCommandLineInfo &cm, const wxString &fn); - -////@begin CMakeSetupFrm event handler declarations - - /// wxEVT_CLOSE_WINDOW event handler for ID_FRAME - void OnCloseWindow( wxCloseEvent& event ); - - /// wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING event handler for ID_SPLITTERWINDOW - void OnSplitterPosChanging( wxSplitterEvent& event ); - - /// wxEVT_COMMAND_SPLITTER_DOUBLECLICKED event handler for ID_SPLITTERWINDOW - void OnSplitterwindowSashDClick( wxSplitterEvent& event ); - - /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BROWSE_PROJECT - void OnButtonBrowseProject( wxCommandEvent& event ); - - /// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_SOURCE_BUILD_PATH - void OnSourceBuildPathUpdated( wxCommandEvent& event ); - - /// wxEVT_COMMAND_TEXT_ENTER event handler for ID_SOURCE_BUILD_PATH - void OnSourceBuildPathEnter( wxCommandEvent& event ); - - /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BROWSE_BUILD - void OnButtonBrowseBuild( wxCommandEvent& event ); - - /// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_SEARCHQUERY - void OnSearchquerySelected( wxCommandEvent& event ); - - /// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_SEARCHQUERY - void OnSearchqueryUpdated( wxCommandEvent& event ); - - /// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_SHOW_ADVANCED - void OnShowAdvancedValues( wxCommandEvent& event ); - - /// wxEVT_GRID_CELL_CHANGE event handler for ID_OPTIONS - void OnCellChange( wxGridEvent& event ); - - /// wxEVT_GRID_SELECT_CELL event handler for ID_OPTIONS - void OnGridSelectCell( wxGridEvent& event ); - - /// wxEVT_MOTION event handler for ID_OPTIONS - void OnPropertyMotion( wxMouseEvent& event ); - - /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_CONFIGURE - void OnButtonConfigure( wxCommandEvent& event ); - - /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_OK - void OnButtonOk( wxCommandEvent& event ); - - /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_CANCEL - void OnButtonCancel( wxCommandEvent& event ); - - /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_DELETE_CACHE - void OnButtonDeleteCache( wxCommandEvent& event ); - - /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_CLEAR_LOG - void OnClearLogClick( wxCommandEvent& event ); - - /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BROWSE_GRID - void OnBrowseGridClick( wxCommandEvent& event ); - - /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_RELOAD_CACHE - void OnMenuReloadCacheClick( wxCommandEvent& event ); - - /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_DELETE_CACHE - void OnMenuDeleteCacheClick( wxCommandEvent& event ); - - /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_QUIT - void OnMenuQuitClick( wxCommandEvent& event ); - - /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_CONFIGURE - void OnMenuConfigureClick( wxCommandEvent& event ); - - /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_EXITGENERATE - void OnMenuGenerateClick( wxCommandEvent& event ); - - /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_TOGGLE_ADVANCED - void OnMenuToggleAdvancedClick( wxCommandEvent& event ); - - /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_CMAKE_OPTIONS - void OnOptionsClick( wxCommandEvent& event ); - - /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_ABOUTDLG - void OnAboutClick( wxCommandEvent& event ); - -////@end CMakeSetupFrm event handler declarations - - void OnRecentFileMenu( wxCommandEvent &event ); - - void OnAddQuery ( wxCommandEvent &event ); - -////@begin CMakeSetupFrm member function declarations - - /// Retrieves bitmap resources - wxBitmap GetBitmapResource( const wxString& name ); - - /// Retrieves icon resources - wxIcon GetIconResource( const wxString& name ); -////@end CMakeSetupFrm member function declarations - - /// Should we show tooltips? - static bool ShowToolTips(); - - /** Load cache for the CMakeLists to the GUI */ - void LoadCacheFromDiskToGUI(); - - /** Display the grid with the loaded cache. */ - void FillCacheGUIFromCacheManager(); - - int RunCMake(bool generateProjectFiles); - - /** Save cache to disk from the GUI */ - void SaveCacheFromGUI(); - - void FillCacheManagerFromCacheGUI(); - - /** Update the cache and mark all the new items as old */ - bool PerformCacheRun(); - - /** Shows the property matched by the row in the description area - or nothing when the row is not correct */ - void ShowPropertyDescription(int row); - - /** Disable or enable controls based upon the internal state of the - program */ - void UpdateWindowState(); - - void AppendPathToRecentList(const wxString &p); - - /** Used to synchonise any options that have immediate effect on the GUI - form, like clearing a search list, resetting a spitter perhaps, etc */ - void SyncFormOptions(CMOptionsDlg *dlg); - - void DoCancelButton(); - - void DoReloadCache(); - - void DoDeleteCache(); - - void DoConfigure(); - - void DoGenerate(); - - void OnExitTimer(wxTimerEvent &event); - -////@begin CMakeSetupFrm member variables - wxSplitterWindow* m_splitter; - wxTextCtrl* m_cmProjectPath; - wxButton* m_BrowseProjectPathButton; - wxTextCtrl* m_cmBuildPath; - wxButton* m_BrowseSourcePathButton; - wxComboBox* m_cmGeneratorChoice; - wxComboBox* m_cmSearchQuery; - wxCheckBox* m_cmShowAdvanced; - wxPropertyList* m_cmOptions; - wxTextCtrl* m_cmLog; - wxTextCtrl* m_cmDescription; - wxButton* m_ConfigureButton; - wxButton* m_OkButton; - wxButton* m_CancelButton; - wxButton* m_DeleteCacheButton; - wxButton* m_ClearLogButton; - wxButton* m_cmBrowseCell; -////@end CMakeSetupFrm member variables - - // this is the cmake instance with which we will communicate - // to generate our stuff, and get the info from. - cmake *m_cmake; - - // the config class for project build dir and source path - wxTimer *m_ExitTimer; - wxConfig *m_config; - wxString m_PathToExecutable; - wxArrayString m_recentPaths; - CMProgressDialog *m_progressDlg; - bool m_RunningConfigure; - bool m_noRefresh; - bool m_quitAfterGenerating; -}; - -#endif - // _CMAKESETUPFRAME_H_ diff --git a/Source/WXDialog/CommandLineInfo.cpp b/Source/WXDialog/CommandLineInfo.cpp deleted file mode 100644 index 261c3d939..000000000 --- a/Source/WXDialog/CommandLineInfo.cpp +++ /dev/null @@ -1,191 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: CommandLineInfo.cpp,v $ - Language: C++ - Date: $Date: 2005-08-10 20:18:54 $ - Version: $Revision: 1.4 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "CommandLineInfo.h" - -#include "cmSystemTools.h" - -/////////////////////////////////////////////////////////////// -// cmCommandLineInfo - -cmCommandLineInfo::cmCommandLineInfo() -{ - m_WhereSource = _(""); - m_WhereBuild = _(""); - m_AdvancedValues = false; - m_GeneratorChoiceString.Empty(); - m_LastUnknownParameter = ""; - m_ValidArguments = ""; - m_ExitAfterLoad = false; -} - -/////////////////////////////////////////////////////////////// -cmCommandLineInfo::~cmCommandLineInfo() -{ -} - -/////////////////////////////////////////////////////////////// -bool cmCommandLineInfo::ParseCommandLine(int argc, char* argv[]) -{ - bool result = true; - wxString cachePath; - - // parse all commands - int cc = 1; - if(argc < cc) - return true; // no command line options - - while(cc < argc) - { - wxString arg = argv[cc]; - - // if we have a switch - if(arg.Len() > 1 && arg.GetChar(0) == '-') - { - int next_argc = ParseSwitch(argv, cc, argc); - if(next_argc > 0) - cc += next_argc; - else - return false; // sorry error while parsing - } - else - { - // gather all what is left - for(int leftcc = cc; leftcc < argc; leftcc++) - { - if(cc != leftcc) - m_WhereBuild << _(" "); - m_WhereBuild << argv[leftcc]; - } - break; - } - } - - m_ExecutablePath = cmSystemTools::GetFilenamePath(argv[0]).c_str(); - - return true; -} - -/////////////////////////////////////////////////////////////// -int cmCommandLineInfo::GetBoolValue(const wxString& v) { - - wxString value = v.Lower(); - - if (!value.Cmp("1") || - !value.Cmp("on") || - !value.Cmp("true") || - !value.Cmp("yes")) - { - // true - return 1; - } - else if (!value.Cmp("0") || - !value.Cmp("off") || - !value.Cmp("false") || - !value.Cmp("no")) - { - // false - return -1; - } - - // not recognised - return 0; -} - -/////////////////////////////////////////////////////////////// -// Parse param - -size_t cmCommandLineInfo::ParseSwitch(char **argv, int arg_index, int argc) -{ - wxString param = argv[arg_index]; - - // we need this for a switch, at least 2 - if(param.Len() > 1) - { - // determine switch type - switch (param.GetChar(1)) - { - case 'G': - // when it's G<.....> we split else we take the - // other argc - if(param.Len() > 2) - { - m_GeneratorChoiceString = GetStringParam(param.Mid(2)); - return 1; // one arg is passed - } - else - { - if((arg_index+1) < argc) - { - m_GeneratorChoiceString = GetStringParam(wxString(argv[arg_index+1])); - return 2; // two args are passed - } - } - // no luck - return 0; - - case 'Q': - m_ExitAfterLoad = true; - return 1; - - // unknown param - default: - break; - } - } - - // error, unrecognised or too small arg - return 0; -} - -// When the string param given has string quotes around it -// we remove them and we pass back the string. If not, we -// simply pass back the string as-is -wxString cmCommandLineInfo::GetStringParam(const wxString &str) -{ - wxString mystr = str.Strip(wxString::both); - - // if we have only one (or no chars return the current string) - if(mystr.Len() < 2) - return str; - - // if we have quotes - if(mystr.GetChar(0) == '\"' && mystr.Last() == '\"') - { - // when we only have 2 in size, return empty string - if(mystr.Len() == 2) - return wxEmptyString; - - // now remove the outer and inner, and return - return mystr.Mid(1, mystr.Len()-1); - } - - return str; -} diff --git a/Source/WXDialog/CommandLineInfo.h b/Source/WXDialog/CommandLineInfo.h deleted file mode 100644 index ad31f0938..000000000 --- a/Source/WXDialog/CommandLineInfo.h +++ /dev/null @@ -1,67 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: CommandLineInfo.h,v $ - Language: C++ - Date: $Date: 2005-08-10 20:18:54 $ - Version: $Revision: 1.4 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#if !defined(CMAKECOMMANDLINEINFO_H) -#define CMAKECOMMANDLINEINFO_H - -#include "cmStandardIncludes.h" - -/////////////////////////////////////////////////////////////// -// cmCommandLineInfo: -// See cmCommandLineInfo.cxx for the implementation of this class -// - -class cmCommandLineInfo -{ - // Construction -public: - cmCommandLineInfo(); - virtual ~cmCommandLineInfo(); - - // Parse the command line - bool ParseCommandLine(int argc, char* argv[]); - - // Retrieve the path of executable - wxString GetPathToExecutable() { return this->m_ExecutablePath; } - - // Attributes -public: - wxString m_WhereSource; - wxString m_WhereBuild; - bool m_AdvancedValues; - wxString m_GeneratorChoiceString; - wxString m_LastUnknownParameter; - wxString m_ExecutablePath; - bool m_ExitAfterLoad; - -private: - // Parse one argument - size_t ParseSwitch(char **argv, int arg_index, int argc); - - // Return boolean value of the string - static int GetBoolValue(const wxString&); - - // on windows the argument with spaces SUCKS! So we need to - // incorporate it with quotes. - wxString GetStringParam(const wxString &str); - - wxString m_ValidArguments; -}; - -#endif // !defined(CMAKECOMMANDLINEINFO_H) diff --git a/Source/WXDialog/NGDialog.exe.manifest b/Source/WXDialog/NGDialog.exe.manifest deleted file mode 100644 index 6cdabd031..000000000 --- a/Source/WXDialog/NGDialog.exe.manifest +++ /dev/null @@ -1,22 +0,0 @@ - - - - CMake Next Generation Dialog - - - - - - \ No newline at end of file diff --git a/Source/WXDialog/NGDialog.ico b/Source/WXDialog/NGDialog.ico deleted file mode 100644 index e13bb156f4e0bd05a4c5df7de920ebc681e82799..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24542 zcmeHPO^9X16|P~%^rR6-vzTlQuOkjPLl}iS1l-u2At?BhaglcGki|_03?c+(6L^h_ z-Z+GSFf(uGBFQxi6A;{nUS$z4^iDSs8e9k_(BsM;BHn!8sXFy@|KID^i=?~8dZ$iR zopZiZ_ujfybx&)|8S{{N^ihL!-fTT&%xfsEty%v4^TzxQbhAvf13+G_Sn!in)IMx_S25XU+C+ zEA#5Bm3h~EVyb_a=I@^zm`}d=!ukQWFHv8jzC=Zd`U-pnzAD9XhTjbKGbqX+l$pwidHiI+ zkO4ym3>h#8Bw)yZAp?dC7&2fGn81($Lk0{PFl4|W(19TXh71@oV901JW88FN+4!mp_74aT5p!nrw#2A#YR{~oJ z93||@r6mrGK?xisalkRT+z={(r397|AW9gNTL4%}2$twnqM`&A{D%xZxF#jAlpGJi z!n=W20d>Go0Ye206);r5PyvJ7PQXwCLj?>KFqFUmHOS}>3>7d`z)%4LR3oDv7%E_> zfT03_3ieAVs~}jRQw|+D_#8MY(ak=&`JwrvdHwa*&8=Iv%+Ah^xpU`^`S|0H&4(X; zXg>Y)Q}fwppPA1;|J;1}<(KBGuf8&ehll3=e=75b_uj*Eyp7T2Ge81;!ci|-a<%jp zo@7lgzGPO-cQTu03z>J%+PuGF z4D_=5MDmoHEa@LB|HNpJ&g3(Zo6Sbe=t(XE~=~ewdxkvnO(%ji#LT zqRtoX6cg2r8=E)U(&pxkH#xhRH{3*BBiF86vh8~x{Jho#_UTK0V#dV%v$Vt2D{R%7 z*zBbpM3n71w{qrx%W2rW`!buD{8UT@g`nKLd$96?Z4KfwuNQcm+`YH5a&VySUL5UI zz_-f*lD4aL4l5C82d6#~_X>)SAn)2^aj&4*JCGMz1m0dXhoC6-erM%V@t~l1TiO%r zg3!896c0&zT|6kj3$kH7R)7~~JaiVGbg*Nv(Jt=CfbC7|K>^wu;H?om254^=cP?~_ zTLibe#YMsGF6)ADuejZ5-Ma902Y7X1s|&pA@XP-8)q!TKCHlo$tJ*c@>^4>dpv-6Y zZC<%=4D*FUnJ>eYbt8mhVeOZ(T~w{E3Z+@NY%59)%h zO?@y>?Agv?0Vw_J>fI1=DYb{LOm0Egu0ApV0WlHxZ>o!wQ zO?_ejOXii(Ke}_`XPmdGPkT}ScJ--&V()py-=RMBpeVQimDHuaWr`XhyR|*DuJgFo-Lw+~Vv*h;y!_gH|7*=|LJOC)2 zkmqL7(REU8Djl7YA}eLtZZd^plS#_Wrci7)NxA71icKdeH=jbW`6T5gROrM~Zbr#- zLrTg`snDsV6%u(%xli3d-bVKO)JMT+I^Cz9?o;v9;0xaAdHM7 zQ$8}kx{8Hc`$jvGWYLYh;nvHPNK*|xFC`bxNVUs=FGT49fas}vPkG(7#tP)Tp+&yMya(Vf z13ym54n95L0Dw000f4;>*0h`$q^^T&H6H-*)0ZA*)D9dvy^lwrDBic9#>9GZU?K7y z<|6>^D8kBz0|V^fIQkRdPdm4?C-UD(c?OFJB`5yBr07dY9 z>$dyt_MSiz0B#ihfk^-0TR#MO_~D6Aa{Kk0Zvfyo(nP-3dqN1dZE5cyc7Mox6F~8o zSbora6M#Da5iP^!n*d_@5#}2JBKf{s&t5+M*6sm&z+$g`=+swAFF}wWXTA;~$oJVy z+7bYIewMs&lkN>B838Zf=+<2k15o*~-cxG~KySZpYb`Ai04G0>`51uSJ}pN2syqNE zKcD#sfRpdD)!L>2?CmqJ`2fJmx0>j$bO1zte)ArH+&=x5I$A9N$}eJG0Z_ifz)-aS zfc#?S9e~Bn%S?#dXHoM40P;g__O#1+XHWZ3(+=WGhx+uk<2B zC%xI87dC(8{1r!_avp2rYIt(U_!=h0*u<1^HcUzxbHk)`ila#;r92*Ga+Gm6WR)@= zhrCk8<&am(_#E;|CpZ=*uXG*9qvVxNE1r$gyrm%afY?%)6#z?gyTl;6Q;8aU>p<%%{7CHqIxRHdTL&7a^dprc z#?j&Kg6|wy$Ux&8M;m-~z@PGuhrX6#2iF*VKFPd=nCAH=mX5mGX&HSn;7+%Oqg9=6 zN%*HK?}8s3D0X_ITXo<WlsZ5{pi3Je<9e5qBjt?Yy! zJJ53*A$&DGdav2)gdbgj?%SyA%a%9N13z(~ZL-kF+vMoqYqo_R_^AVp+bBfp#-Xt_ z^}X;@2a?;!L+8hz9{s)WYYxPJ%@%!^>(f5~zwUtCMhSHJc2)m!7RG1*e#3#{jpUPJ z`}>dK>W$l=}*7h1^px7w>cnxZWs?x z@?|clA2IszdjOM!roC8u?aN`%KMH=U1NuqSnF%W6(n$DiR{&A=5(D3>e!Tzukf8Hfq;D8h)1p{x)iTyyk%4<$zx0R{e9p?{vT!XwyFz{7wh#ZPYeB%mu&O z0lAG@^v?;u+X380ZL5bl;rBUE{Ixm#%niTKf#N6etRUsN;rBYwP`?2D9tYf))5yvK z@OvC+=wAqaw*w9R3&HPpAOsfJAzBcArvr8U3&QVopr(Ie_+1YCD!Ow}To`_r1N^ca z(h=ZyIFRZ;0{jjK68%Sl-|j#d8+^&c62 ziv!W)y9D@62O|ATfZuc==wAx_h6Ca8S_=Gz1781<;MX1S`j-U1?tnhNOM_o?K=m&T ze(HceUQ2|ZIH3BM2tRSa>0c`R*a7!=Efs$3fYrZb_>luv|B~TH4#?xRbojvm(Z6)~ z!2#+&2Ke3q>OThf-htzS?;POcbu93m1JHjgqpt^B(0@$utpi)f2Vbth*73m?2j=@b zZI0?Z$?R+$+vpRA$)8KV>&^piOkV^5jOljT=cJ54NBH2VY8M;IppuD;8)aEzNTojR z6O}c7lzrl|#*wl!Y&9m9jc6YkVo|<1!*HU7%}-Ib|P2TzUuM^2EiTvQJ!I zcX6n!kIU1_#-Xx4E~DB7#@fH+-)0Aa>;h!dvc{*fPh8eGRo2I42^e(_#N`R?x>1kI z>#WyE-l#lf*+=w-vQ+!XUUJ)npz*EsvOq?BE9>L3Kz3IkE(_!k`Ahxc%!DQ9z(k7H znRQ#%NMLeOp4xgJ5logCT(y9X$_{>r5N6x1hb#^__)>O|#eul&;0x%uJW*S?0&#g= z>ot;?Jjzq8_YuXc2=F=TzKi^S4wd8ofU$%QL$|)te*w4VW6l5o diff --git a/Source/WXDialog/PropertyList.cpp b/Source/WXDialog/PropertyList.cpp deleted file mode 100644 index f7d1918e1..000000000 --- a/Source/WXDialog/PropertyList.cpp +++ /dev/null @@ -1,856 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: PropertyList.cpp,v $ - Language: C++ - Date: $Date: 2005-06-30 19:54:14 $ - Version: $Revision: 1.1 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -/* for compilers that support precompilation - includes "wx/wx.h" */ - -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#include "PropertyList.h" -#include "app_resources.h" - -#include "../cmCacheManager.h" -#include "../cmSystemTools.h" -#include "../cmake.h" - -BEGIN_EVENT_TABLE( wxPropertyList, wxGrid ) - EVT_GRID_CELL_LEFT_CLICK( wxPropertyList::OnSelectCell ) - EVT_GRID_CELL_CHANGE( wxPropertyList::OnCellChange ) - EVT_GRID_CMD_CELL_RIGHT_CLICK( wxID_ANY, wxPropertyList::OnCellPopup ) - EVT_MENU ( ID_CACHE_DELETE, wxPropertyList::OnDeleteCache ) - EVT_MENU ( ID_CACHE_IGNORE, wxPropertyList::OnIgnoreCache ) - EVT_MENU ( ID_CACHE_BROWSE, wxPropertyList::OnBrowseItem ) - EVT_SIZE ( wxPropertyList::OnSizeGrid ) - EVT_CHAR ( wxPropertyList::OnKeyPressed ) -END_EVENT_TABLE() - -#if 0 - -// ---------------------------------------------------------------------------- -// wxGridCellPathEditor -// ---------------------------------------------------------------------------- - -wxGridCellPathEditor::wxGridCellPathEditor() -{ - m_maxChars = 0; -} - -void wxGridCellPathEditor::Create(wxWindow* parent, - wxWindowID id, - wxEvtHandler* evtHandler) -{ - m_control = new wxTextCtrl(parent, id, wxEmptyString, - wxDefaultPosition, wxDefaultSize -#if defined(__WXMSW__) - , wxTE_PROCESS_TAB | wxTE_AUTO_SCROLL -#endif - ); -// -// m_button = new wxButton(parent, id+1, _("..."), -// wxDefaultPosition, wxDefaultSize); -// - - // set max length allowed in the textctrl, if the parameter was set - if (m_maxChars != 0) - { - ((wxTextCtrl*)m_control)->SetMaxLength(m_maxChars); - } - - wxGridCellEditor::Create(parent, id, evtHandler); -} - -void wxGridCellPathEditor::PaintBackground(const wxRect& WXUNUSED(rectCell), - wxGridCellAttr * WXUNUSED(attr)) -{ - // as we fill the entire client area, don't do anything here to minimize - // flicker -} - -void wxGridCellPathEditor::SetSize(const wxRect& rectOrig) -{ - wxRect rect(rectOrig); - - // Make the edit control large enough to allow for internal - // margins - // - // TODO: remove this if the text ctrl sizing is improved esp. for - // unix - // -#if defined(__WXGTK__) - if (rect.x != 0) - { - rect.x += 1; - rect.y += 1; - rect.width -= 1; - rect.height -= 1; - } -#else // !GTK - int extra_x = ( rect.x > 2 )? 2 : 1; - -// MB: treat MSW separately here otherwise the caret doesn't show -// when the editor is in the first row. -#if defined(__WXMSW__) - int extra_y = 2; -#else - int extra_y = ( rect.y > 2 )? 2 : 1; -#endif // MSW - -#if defined(__WXMOTIF__) - extra_x *= 2; - extra_y *= 2; -#endif - rect.SetLeft( wxMax(0, rect.x - extra_x) ); - rect.SetTop( wxMax(0, rect.y - extra_y) ); - rect.SetRight( rect.GetRight() + 2*extra_x ); - rect.SetBottom( rect.GetBottom() + 2*extra_y ); -#endif // GTK/!GTK - - wxGridCellEditor::SetSize(rect); -} - -void wxGridCellPathEditor::BeginEdit(int row, int col, wxGrid* grid) -{ - wxASSERT_MSG(m_control, - wxT("The wxGridCellEditor must be Created first!")); - - m_startValue = grid->GetTable()->GetValue(row, col); - - DoBeginEdit(m_startValue); -} - -void wxGridCellPathEditor::DoBeginEdit(const wxString& startValue) -{ - Text()->SetValue(startValue); - Text()->SetInsertionPointEnd(); - Text()->SetSelection(-1,-1); - Text()->SetFocus(); -} - -bool wxGridCellPathEditor::EndEdit(int row, int col, - wxGrid* grid) -{ - wxASSERT_MSG(m_control, - wxT("The wxGridCellEditor must be Created first!")); - - bool changed = false; - wxString value = Text()->GetValue(); - if (value != m_startValue) - changed = true; - - if (changed) - grid->GetTable()->SetValue(row, col, value); - - m_startValue = wxEmptyString; - // No point in setting the text of the hidden control - //Text()->SetValue(m_startValue); - - return changed; -} - - -void wxGridCellPathEditor::Reset() -{ - wxASSERT_MSG(m_control, - wxT("The wxGridCellEditor must be Created first!")); - - DoReset(m_startValue); -} - -void wxGridCellPathEditor::DoReset(const wxString& startValue) -{ - Text()->SetValue(startValue); - Text()->SetInsertionPointEnd(); -} - -bool wxGridCellPathEditor::IsAcceptedKey(wxKeyEvent& event) -{ - return wxGridCellEditor::IsAcceptedKey(event); -} - -void wxGridCellPathEditor::StartingKey(wxKeyEvent& event) -{ - // Since this is now happening in the EVT_CHAR event EmulateKeyPress is no - // longer an appropriate way to get the character into the text control. - // Do it ourselves instead. We know that if we get this far that we have - // a valid character, so not a whole lot of testing needs to be done. - - wxTextCtrl* tc = Text(); - wxChar ch; - long pos; - -#if wxUSE_UNICODE - ch = event.GetUnicodeKey(); - if (ch <= 127) - ch = (wxChar)event.GetKeyCode(); -#else - ch = (wxChar)event.GetKeyCode(); -#endif - switch (ch) - { - case WXK_DELETE: - // delete the character at the cursor - pos = tc->GetInsertionPoint(); - if (pos < tc->GetLastPosition()) - tc->Remove(pos, pos+1); - break; - - case WXK_BACK: - // delete the character before the cursor - pos = tc->GetInsertionPoint(); - if (pos > 0) - tc->Remove(pos-1, pos); - break; - - default: - tc->WriteText(ch); - break; - } -} - -void wxGridCellPathEditor::HandleReturn( wxKeyEvent &event ) -{ -#if defined(__WXMOTIF__) || defined(__WXGTK__) - // wxMotif needs a little extra help... - size_t pos = (size_t)( Text()->GetInsertionPoint() ); - wxString s( Text()->GetValue() ); - s = s.Left(pos) + wxT("\n") + s.Mid(pos); - Text()->SetValue(s); - Text()->SetInsertionPoint( pos ); -#else - // the other ports can handle a Return key press - // - event.Skip(); -#endif -} - -void wxGridCellPathEditor::SetParameters(const wxString& params) -{ - if ( !params ) - { - // reset to default - m_maxChars = 0; - } - else - { - long tmp; - if ( !params.ToLong(&tmp) ) - { - wxLogDebug(_T("Invalid wxGridCellPathEditor parameter string '%s' ignored"), params.c_str()); - } - else - { - m_maxChars = (size_t)tmp; - } - } -} - -// return the value in the text control -wxString wxGridCellPathEditor::GetValue() const -{ - return Text()->GetValue(); -} - -#endif - -///////////////////////////////////////////////////////////////////////////// -// wxPropertyItem - -// returns true when this property item is a filepath -bool wxPropertyItem::IsFilePath() -{ - return m_nItemType == wxPropertyList::FILE; -} - -// returns true when this property item is a dir path -bool wxPropertyItem::IsDirPath() -{ - return m_nItemType == wxPropertyList::PATH; -} - -///////////////////////////////////////////////////////////////////////////// -// wxPropertyList - -wxPropertyList::~wxPropertyList() -{ - WX_CLEAR_ARRAY(m_PropertyItems); -} - -int wxPropertyList::AddItem(const wxString &txt) -{ - // TODO: Add the item to the grid! - - //int nIndex = AddString(txt); - //return nIndex; - - return 0; -} - -// order = 0 sorted (not supported yet) -// order = 1 add to top -// order = 2 add to bottom -int wxPropertyList::AddPropItem(wxPropertyItem* pItem, int order) -{ - m_PropertyItems.Add(pItem); - if(pItem->GetAdvanced() && ! m_ShowAdvanced) - return 0; - - // disable in progress editing - HideControls(); - - return AddPropertyToGrid(pItem, order); -} - -int wxPropertyList::AddPropertyToGrid(wxPropertyItem *pItem, int order) -{ - int row = 0; - if(order == 1) - InsertRows(0,1); - else - { - AppendRows(1); - row = GetNumberRows() - 1; - } - - // initialise the type of renderer - if(pItem->GetItemType() == wxPropertyList::CHECKBOX) - { - SetCellRenderer(row, 1, new wxGridCellBoolRenderer); - SetCellEditor(row, 1, new wxGridCellBoolEditor); - } - -#ifdef __LINUX__ - // fix to make sure scrollbars are drawn properly - wxGrid::AdjustScrollbars(); -#endif - - // the property display is read only - UpdatePropertyItem(pItem, row); - return row; -} - -void wxPropertyList::AddProperty(const char* name, const char* value, const char* helpString, - int type, const char* comboItems, bool reverseOrder, bool advanced) -{ - wxPropertyItem* pItem = 0; - - // add or update the property item - for(size_t i = 0; i < m_PropertyItems.Count(); i++) - { - if(m_PropertyItems[i]->GetPropName().IsSameAs(name)) - { - pItem = m_PropertyItems[i]; - if(!pItem->GetCurValue().IsSameAs(value)) - { - pItem->SetCurValue(value); - pItem->SetHelpString(helpString); - pItem->SetAdvanced(advanced); - - // update the property item - int row = FindProperty(pItem); - if(row != -1) - UpdatePropertyItem(pItem, row); - } - return; - } - } - - // if it is not found, then create a new one - if(!pItem) - { - pItem = new wxPropertyItem(name, value, helpString, type, comboItems); - pItem->SetAdvanced(advanced); - - AddPropItem(pItem, 1); - } -} - -void wxPropertyList::UpdateGridView() -{ - // make sure all items are shown, remove items that should not be shown - bool keepItem; - int row; - for(size_t i = 0; i < m_PropertyItems.Count(); i++) - { - // to begin with, does this item fit the query? - keepItem = m_strQuery.IsEmpty() || (m_PropertyItems[i]->GetPropName().Find(m_strQuery) != -1); - if(keepItem) - { - // when advanced items are allowed to be shown, keep when ok - if(!m_ShowAdvanced) - keepItem = !m_PropertyItems[i]->GetAdvanced(); - } - - // find the item, if not present but keep is true, add, if - // present but keep is false, remove - row = -1; - for(size_t j = 0; j < (size_t)GetNumberRows(); j++) - { - if(m_PropertyItems[i]->GetPropName().IsSameAs(GetCellValue(j, 0))) - { - row = j; - break; - } - } - - if(row == -1 && keepItem) - AddPropertyToGrid(m_PropertyItems[i], (m_ShowAdvanced ? 2 : 0)); - else if(row != -1 && !keepItem) - DeleteRows(row, 1); - } - -#ifdef __LINUX__ - // fix to make sure scrollbars are drawn properly - wxGrid::AdjustScrollbars(); -#endif -} - -void wxPropertyList::HideControls() -{ - DisableCellEditControl(); -} - -void wxPropertyList::RemoveProperty(wxPropertyItem *pItem) -{ - HideControls(); - - // look for property in grid, delete it when present - for(size_t j = 0; j < (size_t)GetNumberRows(); j++) - { - if(pItem->GetPropName().IsSameAs(GetCellValue(j, 0), false)) - { - DeleteRows(j, 1); - -#ifdef __LINUX__ - // fix to make sure scrollbars are drawn properly - wxGrid::AdjustScrollbars(); -#endif - break; - } - } - - // delete the item from the list - m_PropertyItems.Remove(pItem); - delete pItem; -} - -wxPropertyItem *wxPropertyList::FindPropertyByName(const wxString &name) -{ - for(size_t i = 0; i < m_PropertyItems.Count(); i++) - { - // we have an advanced item, go through table and if not present, show it - if(m_PropertyItems[i]->GetPropName().IsSameAs(name, true)) - return m_PropertyItems[i]; - } - - return 0; -} - -/** -void wxPropertyList::OnIgnore() -{ - if(m_curSel == -1 || this->GetCount() <= 0) - { - return; - } - wxPropertyItem* pItem = (wxPropertyItem*) GetItemDataPtr(m_curSel); - pItem->m_curValue = "IGNORE"; - InvalidateList(); -} -*/ - -/** -void wxPropertyList::OnDelete() -{ - if(m_curSel == -1 || this->GetCount() <= 0) - { - return; - } - wxPropertyItem* pItem = (wxPropertyItem*) GetItemDataPtr(m_curSel); - m_CMakeSetupDialog->GetCMakeInstance()->GetCacheManager()->RemoveCacheEntry(pItem->m_propName); - m_PropertyItems.erase(pItem); - delete pItem; - this->DeleteString(m_curSel); - this->HideControls(); - this->SetTopIndex(0); - InvalidateList(); -} -*/ - -/** -void wxPropertyList::OnHelp() -{ - if(m_curSel == -1 || this->GetCount() <= 0) - { - return; - } - wxPropertyItem* pItem = (wxPropertyItem*) GetItemDataPtr(m_curSel); - MessageBox(pItem->m_HelpString, pItem->m_propName, MB_OK|MB_ICONINFORMATION); -} -*/ - -void wxPropertyList::RemoveAll() -{ - WX_CLEAR_ARRAY(m_PropertyItems); - m_generatedProjects = false; - - if(GetNumberRows() > 0) - DeleteRows(0, GetNumberRows()); - - m_strQuery.Empty(); - -#ifdef __LINUX__ - // fix to make sure scrollbars are drawn properly - wxGrid::AdjustScrollbars(); -#endif -} - -void wxPropertyList::ShowAdvanced() -{ - // set flag in the control - m_ShowAdvanced = true; - UpdateGridView(); -} - - -void wxPropertyList::HideAdvanced() -{ - // set flag in the control - m_ShowAdvanced = false; - UpdateGridView(); -} - -int wxPropertyList::FindProperty(wxPropertyItem *pItem) -{ - if(GetNumberRows() > 0 && pItem != 0) - { - // find the property the traditional way - for(size_t j = 0; j < (size_t)GetNumberRows(); j++) - { - if(pItem->GetPropName().IsSameAs(GetCellValue(j, 0))) - return j; - } - } - - return -1; -} - -wxPropertyItem *wxPropertyList::GetPropertyItemFromRow(int row) -{ - if(row < GetNumberRows() && row >= 0) - { - wxString str = GetCellValue(row, 0); - // find the property the traditional way - for(size_t i = 0; i < (size_t)m_PropertyItems.Count(); i++) - { - if(m_PropertyItems[i]->GetPropName().IsSameAs(str)) - return m_PropertyItems[i]; - } - } - - return 0; -} - -bool wxPropertyList::UpdatePropertyItem(wxPropertyItem *pItem, int row) -{ - wxCHECK(row < GetNumberRows(), false); - - // reflect the property's state to match the grid row - - SetReadOnly(row, 0); - // TODO: Make this a UpdatePropItem where ADVANCED, and new edit values are reflected - SetCellValue(row,0, pItem->GetPropName()); - - // boolean renderer - if(pItem->GetItemType() == wxPropertyList::CHECKBOX) - { - // translate ON or TRUE (case insensitive to a checkbox) - if(pItem->GetCurValue().IsSameAs(wxT("ON"), false) || - pItem->GetCurValue().IsSameAs(wxT("TRUE"), false)) - SetCellValue(row, 1, wxT("1")); - else - SetCellValue(row, 1, wxT("0")); - } - else - { - // for normal path values, give bold in cell when - // the NOTFOUND is present, for emphasis - wxString str = pItem->GetPropName() + wxT("-NOTFOUND"); - if(pItem->GetCurValue().IsSameAs(str)) - { - wxFont fnt = GetCellFont(row, 0); - fnt.SetWeight(wxFONTWEIGHT_BOLD); - SetCellFont(row, 1, fnt); - } - else - SetCellFont(row, 1, GetCellFont(row, 0)); - - SetCellValue(row,1, pItem->GetCurValue()); - } - - if(pItem->GetCurValue().IsSameAs("IGNORE")) - { - // ignored cell is completely dimmed - wxColour col(192,192,192); - SetCellTextColour(row, 1, col); - } - else - { - // we colour paths blue, filenames green, all else black - wxColour col; - if(pItem->IsDirPath()) - col.Set(0,0,255); - else if(pItem->IsFilePath()) - col.Set(0,128,0); - else - col = GetCellTextColour(row, 0); - - SetCellTextColour(row, 1, col); - } - - if(pItem->GetNewValue()) - { - // new cell is red - wxColour col(255,100,100); - SetCellBackgroundColour(row, 0, col); - } - else - { - // old cell is grey - wxColour col(192, 192, 192); - SetCellBackgroundColour(row, 0, col); - } - - return true; -} - -void wxPropertyList::OnSelectCell( wxGridEvent& event ) -{ - this->SetFocus(); - event.Skip(); -} - -void wxPropertyList::OnCellChange( wxGridEvent& event ) -{ - int row = event.GetRow(); - - wxPropertyItem *pItem = GetPropertyItemFromRow(row); - if(pItem && row != wxNOT_FOUND) - { - // write propery back, and set as new - pItem->SetNewValue(true); - - // write back bool - if(pItem->GetItemType() == CHECKBOX) - { - if(GetCellValue(row, 1).IsSameAs("1")) - pItem->SetCurValue("ON"); - else - pItem->SetCurValue("OFF"); - } - else - pItem->SetCurValue(GetCellValue(row, 1)); - - UpdatePropertyItem(pItem, row); - event.Skip(); - } -} - -void wxPropertyList::OnCellPopup( wxGridEvent& event ) -{ - wxPoint pt; - int row = event.GetRow(); - - //pt = ::wxGetMousePosition(); - //ScreenToClient(pt); - - //row = YToRow(pt.y); - if(row != wxNOT_FOUND) - { - wxPropertyItem *pItem = GetPropertyItemFromRow(row); - - if(pItem) - { - // select the row first if already in selection, don't - // this will clear the previous selection - if(!IsInSelection(row, 0)) - SelectRow(row); - - // show popup menu - wxMenu *menu = AppResources::CreatePopupMenu(); - - // enable when it is browsable, and selected one only - wxMenuItem *item = menu->FindItem(ID_CACHE_BROWSE); - if(item) - item->Enable(IsSelectedItemBrowsable()); - - PopupMenu(menu); - - delete menu; - } - } -} - -void wxPropertyList::OnIgnoreCache( wxCommandEvent& event ) -{ - HideControls(); - - // ignore all selected items - for(size_t i = 0; i < (size_t)GetNumberRows(); i++) - { - if(IsInSelection(i, 0)) - { - wxPropertyItem *pItem = GetPropertyItemFromRow(i); - if(pItem) - { - pItem->SetCurValue("IGNORE"); - UpdatePropertyItem(pItem, i); - } - } - } -} - -void wxPropertyList::OnDeleteCache( wxCommandEvent& event ) -{ - HideControls(); - - // convert selections to prop items - wxArrayPtrVoid items; - for(size_t i = 0; i < (size_t)GetNumberRows(); i++) - { - // if selected, query for removal - if(IsInSelection(i, 0)) - { - wxPropertyItem *pItem = GetPropertyItemFromRow(i); - if(pItem) - items.Add((void *)pItem); - } - } - - // now delete all prop items in cells - for(size_t i = 0; i < items.Count(); i++) - RemoveProperty((wxPropertyItem *)items[i]); -} - -void wxPropertyList::OnBrowseItem( wxCommandEvent& event ) -{ - BrowseSelectedItem(); -} - -bool wxPropertyList::IsSelectedItemBrowsable(int row) -{ - // when there is only one selection, and our current item - // is browsable, make sure it can be selected. - wxPropertyItem *pItem = 0; - - size_t count = 0; - for(size_t i = 0; i < (size_t)GetNumberRows() && (count < 2); i++) - { - if(IsInSelection(i, 0)) - { - if(!pItem) - pItem = GetPropertyItemFromRow(i); - count ++; - } - } - - // if we found nothing, take row (because the event EVT_GRID_CELL_SELECTED - // deselects the cells first before selecting the new one again - if(row != -1 && !pItem) - { - pItem = GetPropertyItemFromRow(row); - count ++; // needed because of next loop - } - - // only one item allowed to select - if(pItem && count == 1) - { - if(pItem) - return pItem->IsDirPath() || pItem->IsFilePath(); - } - - return false; -} - - -void wxPropertyList::BrowseSelectedItem() -{ - HideControls(); - - for(size_t i = 0; i < (size_t)GetNumberRows(); i++) - { - if(IsInSelection(i, 0)) - { - // browse for file or directory - wxPropertyItem *pItem = GetPropertyItemFromRow(i); - if(pItem) - { - wxString title; - wxString str = pItem->GetPropName() + _("-NOTFOUND"); - if(pItem->GetCurValue().IsSameAs(str, true)) - str.Empty(); - else - str = pItem->GetCurValue(); - - // browse the directory path - - if(pItem->IsDirPath()) - { - title = _("Select path for ") + pItem->GetPropName(); - str = ::wxDirSelector(title, str, 0, wxDefaultPosition, this); - } - else if(pItem->IsFilePath()) - { - title = _("Select file for ") + pItem->GetPropName(); - str = ::wxFileSelector(title, str, _(""), _(""), _(MC_DEFAULT_WILDCARD), wxFILE_MUST_EXIST, this); - } - else - str.Empty(); - - if(!str.IsEmpty()) - { - pItem->SetCurValue(str.c_str()); - UpdatePropertyItem(pItem, i); - } - } - - // only allow one item to browse - break; - } - } -} - -void wxPropertyList::OnSizeGrid( wxSizeEvent &event ) -{ - int width, height; - - // make sure the grid's cells are equally adjusted - GetClientSize(&width, &height); - SetDefaultColSize(width / 2, true); - - wxGrid::AdjustScrollbars(); -} - -void wxPropertyList::OnKeyPressed( wxKeyEvent &event ) -{ - event.Skip(); -} diff --git a/Source/WXDialog/PropertyList.h b/Source/WXDialog/PropertyList.h deleted file mode 100644 index 0032bfdc7..000000000 --- a/Source/WXDialog/PropertyList.h +++ /dev/null @@ -1,339 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: PropertyList.h,v $ - Language: C++ - Date: $Date: 2005-06-30 19:54:14 $ - Version: $Revision: 1.1 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#ifndef __WXPROPERTYLIST_H -#define __WXPROPERTYLIST_H - - -#ifndef WX_PRECOMP - #include "wx/wx.h" -#endif - -#include -#include - -#include "../cmStandardIncludes.h" - -#ifdef __LINUX__ - #define MC_DEFAULT_WILDCARD "*" -#else - #define MC_DEFAULT_WILDCARD "*.*" -#endif - -#if 0 - -// the editor for string/text data -class wxGridCellPathEditor : public wxGridCellEditor -{ -public: - wxGridCellPathEditor(); - - virtual void Create(wxWindow* parent, - wxWindowID id, - wxEvtHandler* evtHandler); - virtual void SetSize(const wxRect& rect); - - virtual void PaintBackground(const wxRect& rectCell, wxGridCellAttr *attr); - - virtual bool IsAcceptedKey(wxKeyEvent& event); - virtual void BeginEdit(int row, int col, wxGrid* grid); - virtual bool EndEdit(int row, int col, wxGrid* grid); - - virtual void Reset(); - virtual void StartingKey(wxKeyEvent& event); - virtual void HandleReturn(wxKeyEvent& event); - - // parameters string format is "max_width" - virtual void SetParameters(const wxString& params); - - virtual wxGridCellEditor *Clone() const - { return new wxGridCellPathEditor; } - - // DJC MAPTEK - // added GetValue so we can get the value which is in the control - virtual wxString GetValue() const; -protected: - wxTextCtrl *Text() const { return (wxTextCtrl *)m_control; } - - // parts of our virtual functions reused by the derived classes - void DoBeginEdit(const wxString& startValue); - void DoReset(const wxString& startValue); - -private: - size_t m_maxChars; // max number of chars allowed - wxString m_startValue; - - DECLARE_NO_COPY_CLASS(wxGridCellPathEditor) -}; - -#endif - -///////////////////////////////////////////////////////////////////////////// -//wxPropertyItem Items -class wxPropertyItem -{ -public: - wxPropertyItem(const wxString &propName, const wxString &curValue, - const wxString &helpString, int nItemType, const wxString &cmbItems) - : m_NewValue(true) - , m_HelpString(helpString) - , m_Removed(false) - , m_propName(propName) - , m_curValue(curValue) - , m_nItemType(nItemType) - , m_cmbItems(cmbItems) - , m_Advanced(false) - { - //m_NewValue = true; - //m_HelpString = helpString; - //m_Removed = false; - //m_propName = propName; - //m_curValue = curValue; - //m_nItemType = nItemType; - //m_cmbItems = cmbItems; - //m_Advanced = false; - } - - const wxString &GetCurValue() const { - return m_curValue; - }; - - const wxString &GetPropName() const { - return m_propName; - }; - - void SetCurValue(const char *str) { - m_curValue = str; - }; - - void SetPropName(const char *str) { - m_propName = str; - }; - - void SetAdvanced(bool value) { - m_Advanced = value; - }; - - void SetHelpString(const char *str) { - m_HelpString = str; - }; - - bool GetAdvanced() const { - return m_Advanced; - }; - - void SetNewValue(bool value) { - m_NewValue = value; - }; - - bool GetNewValue() const { - return m_NewValue; - }; - - int GetItemType() const { - return m_nItemType; - }; - - const wxString &GetHelpString() const { - return m_HelpString; - }; - - // returns true when this property item is a filepath - bool IsFilePath(); - - // returns true when this property item is a dir path - bool IsDirPath(); - -private: - wxString m_HelpString; - wxString m_propName; - wxString m_curValue; - int m_nItemType; - wxString m_cmbItems; - bool m_NewValue; - bool m_Removed; - bool m_Advanced; -}; - -WX_DEFINE_ARRAY(wxPropertyItem *, wxPropertyItems); - -///////////////////////////////////////////////////////////////////////////// -// wxPropertyList Grid -class wxPropertyList : public wxGrid -{ -// Construction -public: - wxPropertyList(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxWANTS_CHARS, - const wxString& name = wxPanelNameStr) - : wxGrid(parent, id, pos, size, style, name) - { - }; - - enum ItemType - { - COMBO = 0, - EDIT, - COLOR, - FONT, - FILE, - CHECKBOX, - PATH - }; - - virtual ~wxPropertyList(); - -public: - bool GetShowAdvanced() const { - return m_ShowAdvanced; - }; - - void SetProjectGenerated(bool value) { - m_generatedProjects = value; - }; - - bool IsGenerated() { - return m_generatedProjects; - }; - - int AddItem(const wxString &txt); - - void AddProperty(const char* name, const char* value, const char* helpString, int type, - const char* comboItems, bool reverseOrder, bool advanced); - - void RemoveProperty(wxPropertyItem *pItem); - - void HideControls(); - void ShowAdvanced(); - void HideAdvanced(); - - void RemoveAll(); - - wxPropertyItem* GetItem(size_t index) { - wxCHECK(index < GetCount(), 0); - return m_PropertyItems[index]; - }; - - size_t GetCount() const { - return m_PropertyItems.Count(); - }; - - const wxPropertyItems &GetItems() { - return m_PropertyItems; - }; - - void SetShowAdvanced(bool value) { - m_ShowAdvanced = value; - }; - - bool UpdatePropertyItem(wxPropertyItem *pItem, int row); - - /** Returns the row of the grid on which the item is found. -1 is returned when not found */ - int FindProperty(wxPropertyItem *pItem); - - /** Returns true when the cache is still dirty, which means - after a configuration run, there are still new items */ - bool IsCacheDirty() { - // check if we have items that are new - for(size_t i = 0; i < m_PropertyItems.Count(); i++) - { - //if((m_PropertyItems[i]->GetNewValue() && m_ShowAdvanced && m_PropertyItems[i]->GetAdvanced()) || - // (m_PropertyItems[i]->GetNewValue() && !m_ShowAdvanced)) - if(m_PropertyItems[i]->GetNewValue()) - return true; - } - - // return flag if generated cache or not - return false; - }; - - /** Returns the property item from the current row. 0 if no property item found */ - wxPropertyItem *GetPropertyItemFromRow(int row); - - /** Finds the property by name and returns the property item */ - wxPropertyItem *FindPropertyByName(const wxString &name); - - /** Sets the search filter. Making sure that the items currently displayed - match this substring query */ - void SetQuery(const wxString &query) { - m_strQuery = query; - UpdateGridView(); - }; - - /** Returns the last used query. */ - const wxString &GetQuery() { - return m_strQuery; - }; - - /** Function that tries to browse for the item that is selected */ - void BrowseSelectedItem(); - - /** Returns true when the item is browsable (file or path) and only one item is - selected */ - bool IsSelectedItemBrowsable(int row = -1); - -private: - // order = 0 sorted - // order = 1 add to top - // order = 2 add to bottom - int AddPropItem(wxPropertyItem* pItem, int order); - - /** Adds the property item to the grid. */ - int AddPropertyToGrid(wxPropertyItem *pItem, int order) ; - - /** Adds / removes all the items that are currently (not) matching the - query filter */ - void UpdateGridView(); - - void OnSelectCell( wxGridEvent& event ); - - void OnCellChange( wxGridEvent& event ); - - void OnCellPopup( wxGridEvent& event ); - - void OnIgnoreCache( wxCommandEvent& event ); - - void OnDeleteCache( wxCommandEvent& event ); - - void OnSizeGrid( wxSizeEvent &event ); - - void OnBrowseItem( wxCommandEvent& event ); - - void OnKeyPressed( wxKeyEvent &event ); - - int m_curSel; - int m_prevSel; - int m_nDivider; - int m_nDivTop; - int m_nDivBtm; - int m_nOldDivX; - int m_nLastBox; - bool m_bTracking; - bool m_bDivIsSet; - bool m_ShowAdvanced; - // flag to indicate the last cache load has resulted - // in generating a valid project - bool m_generatedProjects; - wxString m_strQuery; - wxPropertyItems m_PropertyItems; - - DECLARE_EVENT_TABLE() -}; - -#endif diff --git a/Source/WXDialog/about.html b/Source/WXDialog/about.html deleted file mode 100644 index 52187ed91..000000000 --- a/Source/WXDialog/about.html +++ /dev/null @@ -1,21 +0,0 @@ - - -CMake - CMakeSetup GUI Build System - - - -CMake - CMakeSetup GUI Build System -

Welcome to CMake! The cross-platform, open-source make system. - -CMake is used to control the software compilation process using simple platform and compiler independent configuration files. -CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice. -Please go to http://www.cmake.org to learn more about CMake.

-CMakeSetup.exe is enhanced and ported to wxWidgets 2.6.0 by Jorgen Bodde (jorgb@xs4all.nl).
-Current CMakeSetup version is: @V@
-Current CMake build system is: @B@

-Current generators are supported:
-@G@ -
-

- - diff --git a/Source/WXDialog/aboutdlg.cpp b/Source/WXDialog/aboutdlg.cpp deleted file mode 100644 index a87399365..000000000 --- a/Source/WXDialog/aboutdlg.cpp +++ /dev/null @@ -1,210 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: aboutdlg.cpp,v $ - Language: C++ - Date: $Date: 2005-06-30 19:54:14 $ - Version: $Revision: 1.1 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma implementation "aboutdlg.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -////@begin includes -////@end includes - -#include "cmake_logo.xpm" -#include "aboutdlg.h" - -////@begin XPM images -////@end XPM images - -/*! - * CMAboutDlg type definition - */ - -IMPLEMENT_DYNAMIC_CLASS( CMAboutDlg, wxDialog ) - -/*! - * CMAboutDlg event table definition - */ - -BEGIN_EVENT_TABLE( CMAboutDlg, wxDialog ) - -////@begin CMAboutDlg event table entries - EVT_BUTTON( ID_ABOUT_DLG_OK, CMAboutDlg::OnAboutDlgClick ) - -////@end CMAboutDlg event table entries - -END_EVENT_TABLE() - -/*! - * CMAboutDlg constructors - */ - -CMAboutDlg::CMAboutDlg( ) -{ -} - -CMAboutDlg::CMAboutDlg( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) -{ - Create(parent, id, caption, pos, size, style); -} - -/*! - * CMAboutDlg creator - */ - -bool CMAboutDlg::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) -{ -////@begin CMAboutDlg member initialisation - m_cmIcon = NULL; - m_html = NULL; -////@end CMAboutDlg member initialisation - -////@begin CMAboutDlg creation - SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS); - wxDialog::Create( parent, id, caption, pos, size, style ); - - CreateControls(); - GetSizer()->Fit(this); - GetSizer()->SetSizeHints(this); - Centre(); -////@end CMAboutDlg creation - - // set logo on the dialog - wxBitmap bmp(cmake_logo); - m_cmIcon->SetBitmap(bmp); - - return TRUE; -} - -/*! - * Control creation for CMAboutDlg - */ - -void CMAboutDlg::CreateControls() -{ -////@begin CMAboutDlg content construction - CMAboutDlg* itemDialog1 = this; - - wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); - itemDialog1->SetSizer(itemBoxSizer2); - - wxFlexGridSizer* itemFlexGridSizer3 = new wxFlexGridSizer(1, 2, 0, 0); - itemFlexGridSizer3->AddGrowableRow(0); - itemFlexGridSizer3->AddGrowableCol(1); - itemBoxSizer2->Add(itemFlexGridSizer3, 1, wxGROW|wxALL, 5); - - wxBitmap m_cmIconBitmap(wxNullBitmap); - m_cmIcon = new wxStaticBitmap( itemDialog1, wxID_STATIC, m_cmIconBitmap, wxDefaultPosition, wxSize(32, 32), 0 ); - itemFlexGridSizer3->Add(m_cmIcon, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_TOP|wxLEFT|wxRIGHT|wxTOP, 5); - - m_html = new wxHtmlWindow( itemDialog1, ID_HTMLWINDOW, wxDefaultPosition, wxSize(500, 300), wxHW_SCROLLBAR_AUTO|wxNO_BORDER|wxHSCROLL|wxVSCROLL ); - itemFlexGridSizer3->Add(m_html, 1, wxGROW|wxGROW|wxRIGHT|wxTOP|wxBOTTOM, 5); - - wxButton* itemButton6 = new wxButton( itemDialog1, ID_ABOUT_DLG_OK, _("&Ok"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer2->Add(itemButton6, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); - -////@end CMAboutDlg content construction -} - -/*! - * Should we show tooltips? - */ - -bool CMAboutDlg::ShowToolTips() -{ - return TRUE; -} - -void CMAboutDlg::SetAboutText(const wxString &cmversion, const wxString &cmsversion, const wxArrayString &generators) -{ - // set HTML text in window - - wxString text = _("CMakeSetup - GUI Build System for CMake" - "CMakeSetup - GUI Build System for CMake" - "

Welcome to CMake! The cross-platform, open-source make system." - "CMake is used to control the software compilation process using simple platform and compiler independent configuration files. " - "CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice. " - "Please go to http://www.cmake.org to learn more about CMake.

" - "CMakeSetup.exe is enhanced and ported by Jorgen Bodde using @WXV@. The original CMakeSetup.exe is " - "written by Bill Hoffman, Ken Martin, Brad King and Andy Cedilnik.

" - "Current CMakeSetup version is: @B@
" - "Current CMake build system is: @V@

" - "Current generators are supported:
" - "@G@

"); - - // compile list of generators in a bulleted list - wxString gens = _("
    "); - for(size_t i = 0; i < generators.Count(); i++) - gens << "
  • " << generators[i] << "
  • "; - gens << _("
"); - - // replace stuff - text.Replace(_("@V@"), cmversion, true); - text.Replace(_("@B@"), cmsversion, true); - text.Replace(_("@G@"), gens, true); - text.Replace(_("@WXV@"), wxVERSION_STRING, true); - - m_html->SetPage(text); - - // set color of HTML window to bg window - m_html->SetBackgroundColour(GetBackgroundColour()); -} - -/*! - * Get bitmap resources - */ - -wxBitmap CMAboutDlg::GetBitmapResource( const wxString& name ) -{ - // Bitmap retrieval -////@begin CMAboutDlg bitmap retrieval - return wxNullBitmap; -////@end CMAboutDlg bitmap retrieval -} - -/*! - * Get icon resources - */ - -wxIcon CMAboutDlg::GetIconResource( const wxString& name ) -{ - // Icon retrieval -////@begin CMAboutDlg icon retrieval - return wxNullIcon; -////@end CMAboutDlg icon retrieval -} -/*! - * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_ABOUT_DLG_OK - */ - -void CMAboutDlg::OnAboutDlgClick( wxCommandEvent& event ) -{ - Close(); -} - - diff --git a/Source/WXDialog/aboutdlg.h b/Source/WXDialog/aboutdlg.h deleted file mode 100644 index da2d0665b..000000000 --- a/Source/WXDialog/aboutdlg.h +++ /dev/null @@ -1,117 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: aboutdlg.h,v $ - Language: C++ - Date: $Date: 2005-06-30 19:54:14 $ - Version: $Revision: 1.1 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#ifndef _ABOUTDLG_H_ -#define _ABOUTDLG_H_ - -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma interface "aboutdlg.cpp" -#endif - -/*! - * Includes - */ - -////@begin includes -#include "wx/html/htmlwin.h" -////@end includes - -/*! - * Forward declarations - */ - -////@begin forward declarations -class wxHtmlWindow; -////@end forward declarations - -/*! - * Control identifiers - */ - -////@begin control identifiers -#define ID_SOME_ABOUTDLG 10003 -#define SYMBOL_CMABOUTDLG_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX -#define SYMBOL_CMABOUTDLG_TITLE _("About ...") -#define SYMBOL_CMABOUTDLG_IDNAME ID_SOME_ABOUTDLG -#define SYMBOL_CMABOUTDLG_SIZE wxSize(400, 300) -#define SYMBOL_CMABOUTDLG_POSITION wxDefaultPosition -#define ID_HTMLWINDOW 10000 -#define ID_ABOUT_DLG_OK 10005 -////@end control identifiers - -/*! - * Compatibility - */ - -#ifndef wxCLOSE_BOX -#define wxCLOSE_BOX 0x1000 -#endif -#ifndef wxFIXED_MINSIZE -#define wxFIXED_MINSIZE 0 -#endif - -/*! - * CMAboutDlg class declaration - */ - -class CMAboutDlg: public wxDialog -{ - DECLARE_DYNAMIC_CLASS( CMAboutDlg ) - DECLARE_EVENT_TABLE() - -public: - /// Constructors - CMAboutDlg( ); - CMAboutDlg( wxWindow* parent, wxWindowID id = SYMBOL_CMABOUTDLG_IDNAME, const wxString& caption = SYMBOL_CMABOUTDLG_TITLE, const wxPoint& pos = SYMBOL_CMABOUTDLG_POSITION, const wxSize& size = SYMBOL_CMABOUTDLG_SIZE, long style = SYMBOL_CMABOUTDLG_STYLE ); - - /// Creation - bool Create( wxWindow* parent, wxWindowID id = SYMBOL_CMABOUTDLG_IDNAME, const wxString& caption = SYMBOL_CMABOUTDLG_TITLE, const wxPoint& pos = SYMBOL_CMABOUTDLG_POSITION, const wxSize& size = SYMBOL_CMABOUTDLG_SIZE, long style = SYMBOL_CMABOUTDLG_STYLE ); - - /// Creates the controls and sizers - void CreateControls(); - - void SetAboutText(const wxString &cmversion, const wxString &cmsversion, const wxArrayString &generators); - -////@begin CMAboutDlg event handler declarations - - /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_ABOUT_DLG_OK - void OnAboutDlgClick( wxCommandEvent& event ); - -////@end CMAboutDlg event handler declarations - -////@begin CMAboutDlg member function declarations - - /// Retrieves bitmap resources - wxBitmap GetBitmapResource( const wxString& name ); - - /// Retrieves icon resources - wxIcon GetIconResource( const wxString& name ); -////@end CMAboutDlg member function declarations - - /// Should we show tooltips? - static bool ShowToolTips(); - -////@begin CMAboutDlg member variables - wxStaticBitmap* m_cmIcon; - wxHtmlWindow* m_html; -////@end CMAboutDlg member variables -}; - -#endif - // _ABOUTDLG_H_ diff --git a/Source/WXDialog/app_resources.cpp b/Source/WXDialog/app_resources.cpp deleted file mode 100644 index 6d1203c46..000000000 --- a/Source/WXDialog/app_resources.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: app_resources.cpp,v $ - Language: C++ - Date: $Date: 2005-06-30 19:54:14 $ - Version: $Revision: 1.1 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma implementation "app_resources.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -////@begin includes -////@end includes - -#include "app_resources.h" - -////@begin XPM images -////@end XPM images - -/*! - * Resource functions - */ - -////@begin AppResources resource functions -/*! - * Menu creation function for ID_MENU - */ - -wxMenu* AppResources::CreatePopupMenu() -{ - wxMenu* itemMenu1 = new wxMenu; - itemMenu1->Append(ID_CACHE_IGNORE, _("&Ignore cache entry"), _("Ignores the value of the current cache entry"), wxITEM_NORMAL); - itemMenu1->Append(ID_CACHE_DELETE, _("&Delete cache entry"), _("Deletes the current cache entry (reverts on next configure)"), wxITEM_NORMAL); - itemMenu1->AppendSeparator(); - itemMenu1->Append(ID_CACHE_BROWSE, _("&Browse ..."), _T(""), wxITEM_NORMAL); - return itemMenu1; -} - -////@end AppResources resource functions - -/*! - * Get bitmap resources - */ - -wxBitmap AppResources::GetBitmapResource( const wxString& name ) -{ - // Bitmap retrieval -////@begin AppResources bitmap retrieval - return wxNullBitmap; -////@end AppResources bitmap retrieval -} - -/*! - * Get icon resources - */ - -wxIcon AppResources::GetIconResource( const wxString& name ) -{ - // Icon retrieval -////@begin AppResources icon retrieval - return wxNullIcon; -////@end AppResources icon retrieval -} diff --git a/Source/WXDialog/app_resources.h b/Source/WXDialog/app_resources.h deleted file mode 100644 index 6fb814806..000000000 --- a/Source/WXDialog/app_resources.h +++ /dev/null @@ -1,60 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: app_resources.h,v $ - Language: C++ - Date: $Date: 2005-06-30 19:54:14 $ - Version: $Revision: 1.1 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#ifndef _APP_RESOURCES_H_ -#define _APP_RESOURCES_H_ - -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma interface "app_resources.cpp" -#endif - -/*! - * Control identifiers - */ - -////@begin control identifiers -#define ID_CACHE_IGNORE 10051 -#define ID_CACHE_DELETE 10052 -#define ID_CACHE_BROWSE 10053 -////@end control identifiers - -class AppResources -{ -public: - AppResources() {} - -/*! - * Resource functions - */ - -////@begin AppResources resource functions - /// Menu creation function for ID_MENU - static wxMenu* CreatePopupMenu(); - - /// Retrieves bitmap resources - static wxBitmap GetBitmapResource( const wxString& name ); - - /// Retrieves icon resources - static wxIcon GetIconResource( const wxString& name ); -////@end AppResources resource functions - -}; - -#endif - // _APP_RESOURCES_H_ diff --git a/Source/WXDialog/bin/FindUPX.cmake b/Source/WXDialog/bin/FindUPX.cmake deleted file mode 100644 index fc9113dc5..000000000 --- a/Source/WXDialog/bin/FindUPX.cmake +++ /dev/null @@ -1,18 +0,0 @@ -# -# Find the UPX packer program -# -# UPX_PROGRAM_PATH The full path to the UPX command (or UPX_PROGRAM_PATH-NOTFOUND when not found) -# UPX_FOUND Is set to 1 when upx is found - -FIND_PATH(UPX_PROGRAM_PATH upx.exe - ${UPX_DIR} - $ENV{UPX_DIR} - "$ENV{ProgramFiles}/upx" - ) - -# when found, note this as target -IF(UPX_PROGRAM_PATH) - SET(UPX_FOUND 1) -ELSE(UPX_PROGRAM_PATH) - SET(UPX_FOUND 0) -ENDIF(UPX_PROGRAM_PATH) diff --git a/Source/WXDialog/bin/FindwxW.cmake b/Source/WXDialog/bin/FindwxW.cmake deleted file mode 100644 index f88eb0e3f..000000000 --- a/Source/WXDialog/bin/FindwxW.cmake +++ /dev/null @@ -1,438 +0,0 @@ - -MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") - -# -# FindwxW.cmake -# v1.01 2005-05-27 -# Jerry Fath 2005 -# Based on work by Jorgen Bodde -# -# This module finds if wxWindows is installed and determines where the -# include files and libraries are. It also determines what the name of -# the library is. This code sets the following variables: -# -# WXWIDGETS_LINK_DIRECTORIES = link directories, useful for rpath on Unix -# WXWIDGETS_LIBRARIES = all the wxWindows libraries ( and linker flags on unix ) -# WXWIDGETS_CXX_FLAGS = compiler flags for building wxWindows -# WXWIDGETS_INCLUDE_DIR = all include path of wxWindows -# WXWIDGETS_DEFINITIONS = all flags of wxWindows - - -# NOTE: This module REQUIRES that an environment variable named WXWIN -# be set to the base wxWidgets installation directory. -# Under Unix, you must also set and environment variable named WXWINCFG -# to the name of the active build subdirectory (eg buildgtk). -# - -# These variable should be set before including this module -# -# WXWIDGETS_FILE_VERSION (26) -# WXWIDGETS_VERSION (2.6) -# - -# -# Set WX_USE vars in CMakeLists if you don't want to default to all off -# -SET(WXWIDGETS_USE_DEBUG ${WXW_USE_DEBUG} CACHE BOOL "Use Debug versions of wxWindows libraries") -SET(WXWIDGETS_USE_UNICODE ${WXW_USE_UNICODE} CACHE BOOL "Use Unicode versions of wxWindows libraries") -SET(WXWIDGETS_USE_SHARED ${WXW_USE_SHARED} CACHE BOOL "Use shared versions of wxWindows libraries") -SET(WXWIDGETS_USE_UNIV ${WXW_USE_UNIV} CACHE BOOL "Use Universal versions of wxWindows libraries") -SET(WXWIDGETS_USE_MONO ${WXW_USE_MONO} CACHE BOOL "Use monolithic versions of wxWindows libraries") - -# -# Style can be non-Win32 even under Windows when using MinGW -# -IF(WIN32) - SET(WIN32_STYLE_FIND 1) -ENDIF(WIN32) -IF(MINGW) - SET(WIN32_STYLE_FIND 0) - SET(UNIX_STYLE_FIND 1) -ENDIF(MINGW) -IF(UNIX) - SET(UNIX_STYLE_FIND 1) -ENDIF(UNIX) - -# -# Versions should be set before this file is included. If not, -# default to 2.6 -# -IF(WXW_FILE_VERSION) - SET( WXVERSIONSUFFIX ${WXW_FILE_VERSION}) -ELSE(WXW_FILE_VERSION) - SET( WXVERSIONSUFFIX "26") -ENDIF(WXW_FILE_VERSION) - -IF(WXW_VERSION) - SET( WXVERSION ${WXW_VERSION}) -ELSE(WXW_VERSION) - SET( WXVERSION "2.6") -ENDIF(WXW_VERSION) - -# -# Find the base wxWidgets install path -# NOTE: WXWIN must be set -# -FIND_PATH( WXWIDGETS_INSTALL_PATH - wx-config.in - $ENV{WXWIN} -) -IF(WXWIDGETS_INSTALL_PATH STREQUAL "WXWIDGETS_INSTALL_PATH-NOTFOUND") - MESSAGE( FATAL_ERROR "FATAL_ERROR: wx-config.in NOT found. Set WXWIN") -ENDIF(WXWIDGETS_INSTALL_PATH STREQUAL "WXWIDGETS_INSTALL_PATH-NOTFOUND") -SET(WXWIDGETS_CONFIG_PATH ${WXWIDGETS_INSTALL_PATH}) - -# -# Find library path (platform specific) -# -IF( WIN32_STYLE_FIND ) - - IF( WXWIDGETS_USE_SHARED ) - SET(WXWIDGETS_LIB_PATH "${WXWIDGETS_INSTALL_PATH}/lib/vc_dll" ) - ELSE( WXWIDGETS_USE_SHARED ) - SET(WXWIDGETS_LIB_PATH "${WXWIDGETS_INSTALL_PATH}/lib/vc_lib" ) - ENDIF( WXWIDGETS_USE_SHARED ) - SET( WXWIDGETS_LINK_DIRECTORIES ${WXWIDGETS_LIB_PATH} ) - -ELSE( WIN32_STYLE_FIND ) - IF (UNIX_STYLE_FIND) - - # - # Unix uses a config specific directory under the install path - # specified in the WXWINCFG environment variable. - # - SET(WXWIDGETS_CONFIG_PATH "${WXWIDGETS_INSTALL_PATH}/$ENV{WXWINCFG}") - - # - # Check wether wx-config can be found - # - SET(WX_WXCONFIG_EXECUTABLE "${WXWIDGETS_CONFIG_PATH}/wx-config" ) - IF(NOT EXISTS ${WX_WXCONFIG_EXECUTABLE}) - # we really need wx-config... - MESSAGE(FATAL_ERROR "FATAL_ERROR: Cannot find wx-config. Set WXWIN and WXWINCFG environment variables.") - ENDIF(NOT EXISTS ${WX_WXCONFIG_EXECUTABLE}) - - SET(WXWIDGETS_LIB_PATH "${WXWIDGETS_CONFIG_PATH}/lib" ) - SET( WXWIDGETS_LINK_DIRECTORIES ${WXWIDGETS_LIB_PATH} ) - - ELSE(UNIX_STYLE_FIND) - MESSAGE(FATAL_ERROR "FATAL_ERROR: FindwxWindows.cmake: Platform unsupported by FindwxW.cmake. It's neither WIN32 nor UNIX") - ENDIF(UNIX_STYLE_FIND) -ENDIF( WIN32_STYLE_FIND ) - -# -# Check options against installed libraries -# -SET(WX_CONFIG_ARGS "") -SET( LIBRARYWANT "${WXWIDGETS_LIB_PATH}/msw" ) - -IF( WXWIDGETS_USE_UNIV ) - SET( LIBRARYWANT "${LIBRARYWANT}univ") - SET( PFUNIV "univ" ) - SET(WX_CONFIG_ARGS "${WX_CONFIG_ARGS} --universal=yes") -ELSE( WXWIDGETS_USE_UNIV ) - SET(WX_CONFIG_ARGS "${WX_CONFIG_ARGS} --universal=no") -ENDIF( WXWIDGETS_USE_UNIV ) - -IF( WXWIDGETS_USE_UNICODE ) - SET( LIBRARYWANT "${LIBRARYWANT}u" ) - SET( PFUNICODE "u" ) - SET(WX_CONFIG_ARGS "${WX_CONFIG_ARGS} --unicode=yes") -ELSE( WXWIDGETS_USE_UNICODE ) - SET(WX_CONFIG_ARGS "${WX_CONFIG_ARGS} --unicode=no") -ENDIF( WXWIDGETS_USE_UNICODE ) - -IF( WXWIDGETS_USE_DEBUG ) - SET( LIBRARYWANT "${LIBRARYWANT}d" ) - SET( PFDEBUG "d" ) - SET(WX_CONFIG_ARGS "${WX_CONFIG_ARGS} --debug=yes") -ELSE( WXWIDGETS_USE_DEBUG ) - SET( PFDEBUG "" ) - SET(WX_CONFIG_ARGS "${WX_CONFIG_ARGS} --debug=no") -ENDIF( WXWIDGETS_USE_DEBUG ) - -IF( WXWIDGETS_USE_SHARED ) - SET(WX_CONFIG_ARGS "${WX_CONFIG_ARGS} --static=no") -ELSE( WXWIDGETS_USE_SHARED ) - SET(WX_CONFIG_ARGS "${WX_CONFIG_ARGS} --static=yes") -ENDIF( WXWIDGETS_USE_SHARED ) - -# Not sure how to check this yet!!!!! -IF( WXWIDGETS_USE_MONO ) - SET(WX_CONFIG_ARGS "${WX_CONFIG_ARGS}") -ELSE( WXWIDGETS_USE_MONO ) - SET(WX_CONFIG_ARGS "${WX_CONFIG_ARGS}") -ENDIF( WXWIDGETS_USE_MONO ) - -SET(WX_CONFIG_ARGS_LIBS "${WX_CONFIG_ARGS} --libs") - -# -# Platform specific method for testing installed wx Builds -# -IF( WIN32_STYLE_FIND ) - - IF( NOT EXISTS "${LIBRARYWANT}/wx/setup.h" ) - MESSAGE( SEND_ERROR "ERROR: WXWidgets config NOT found ${WX_CONFIG_ARGS}") - ENDIF( NOT EXISTS "${LIBRARYWANT}/wx/setup.h" ) - -ELSE( WIN32_STYLE_FIND ) - - EXEC_PROGRAM(${WX_WXCONFIG_EXECUTABLE} - ARGS ${WX_CONFIG_ARGS_LIBS} - OUTPUT_VARIABLE WXWIDGETS_LIBRARIES - RETURN_VALUE BAD_WXCONFIG ) - IF(BAD_WXCONFIG) - MESSAGE( SEND_ERROR "ERROR: WXWidgets config NOT found ${WX_CONFIG_ARGS}") - ENDIF(BAD_WXCONFIG) - -ENDIF( WIN32_STYLE_FIND ) - -# -# Get compiler flags -# -IF( WIN32_STYLE_FIND ) - # Not used for Windows - SET( WXWIDGETS_CXX_FLAGS "" ) -ELSE( WIN32_STYLE_FIND ) - # - # Get CXXFLAGS from wx-config - # - EXEC_PROGRAM(${WX_WXCONFIG_EXECUTABLE} - ARGS "--cxxflags" - OUTPUT_VARIABLE WXWIDGETS_CXX_FLAGS - RETURN_VALUE BAD_WXCONFIG ) - IF (BAD_WXCONFIG) - MESSAGE( SEND_ERROR "ERROR: wx-config --cxxflags returned an error") - ENDIF (BAD_WXCONFIG) -ENDIF( WIN32_STYLE_FIND ) - -# -# Find include directories (platform specific) -# -IF( WIN32_STYLE_FIND ) - # - # Set non-build specific include directories - # - SET ( WX_INCLUDE_PATH ${WXWIDGETS_INSTALL_PATH}/include ) - SET ( WXWIDGETS_INCLUDE_DIR ${WX_INCLUDE_PATH} ) - SET( WXWIDGETS_INCLUDE_DIR ${WXWIDGETS_INCLUDE_DIR} ${WXWIDGETS_INCLUDE_DIR}/../contrib/include ) - # - # Append the build specific include dir for wx/setup.h: - # - IF ( EXISTS ${LIBRARYWANT}/wx/setup.h ) - SET( WX_INCLUDE_LIB_PATH ${LIBRARYWANT}) - SET( WXWIDGETS_INCLUDE_DIR ${WXWIDGETS_INCLUDE_DIR} ${LIBRARYWANT} ) - ELSE ( EXISTS ${LIBRARYWANT}/wx/setup.h ) - SET( WX_INCLUDE_LIB_PATH, "") - MESSAGE(SEND_ERROR "ERROR: Can't find ${LIBRARYWANT}/wx/setup.h") - ENDIF ( EXISTS ${LIBRARYWANT}/wx/setup.h ) -ELSE( WIN32_STYLE_FIND ) - - # Pull out -I options - # evaluate wx-config output to separate include dirs - SET(WX_INCLUDE_DIR ${WXWIDGETS_CXX_FLAGS}) - # extract include dirs (-I) - # use regular expression to match wildcard equivalent "-I*" - # with is a space or a semicolon - STRING(REGEX MATCHALL "[-][I]([^ ;])+" WX_INCLUDE_DIRS_WITH_PREFIX "${WX_INCLUDE_DIR}" ) - # remove prefix -I because we need the pure directory - IF(WX_INCLUDE_DIRS_WITH_PREFIX) - STRING(REGEX REPLACE "[-][I]" ";" WXWIDGETS_INCLUDE_DIR ${WX_INCLUDE_DIRS_WITH_PREFIX} ) - ENDIF(WX_INCLUDE_DIRS_WITH_PREFIX) - # replace space separated string by semicolon separated vector - SEPARATE_ARGUMENTS(WXWIDGETS_INCLUDE_DIR) - # Remove the -I options from the CXX_FLAGS no need to duplicate - STRING(REGEX REPLACE "[-][I]([^ ;])+" "" WXWIDGETS_CXX_FLAGS ${WXWIDGETS_CXX_FLAGS} ) - - # - # Find XWindows - # - IF( NOT CYGWIN OR MINGW ) - INCLUDE( ${CMAKE_ROOT}/Modules/FindX11.cmake ) - SET( WXWIDGETS_INCLUDE_DIR ${WXWIDGETS_INCLUDE_DIR} ${X11_INCLUDE_DIR} ) - ENDIF( NOT CYGWIN OR MINGW ) -ENDIF( WIN32_STYLE_FIND ) - -# -# Find library list (platform specific) -# -IF( WIN32_STYLE_FIND ) - # - #Misc vars used to build lib names - # - SET( PFLIBEXT ${CMAKE_STATIC_LIBRARY_SUFFIX} ) - SET( WXPF "${WXPF}${WXVERSIONSUFFIX}" ) - SET( PFVERSION ${WXVERSIONSUFFIX} ) - SET( PFCOMPILER "" ) - - # - # Build the libraries list - # - SET( WXWIDGETS_LIBRARIES "" ) - SET( WXWIDGETS_MULTI_LIBRARIES "" ) - SET( WXWIDGETS_MONO_LIBRARIES "" ) - - SET(WX_LIBRARIES ${WX_LIBRARIES} comctl32${PFLIBEXT} wsock32${PFLIBEXT} rpcrt4${PFLIBEXT}) - #MESSAGE( "WX_LIBRARIES: ${WX_LIBRARIES}") - - #start filling library string with needed libraries for the choosen configuration. - SET( WXWIDGETS_LIBRARIES ${WXWIDGETS_LIBRARIES} ${WX_LIBRARIES} ) - - SET( WXPF "${PFVERSION}${PFUNICODE}${PFDEBUG}" ) - SET(WXWIDGETS_MULTI_LIBRARIES ${WXWIDGETS_MULTI_LIBRARIES} - wxbase${WXPF}${PFCOMPILER}${PFLIBEXT} - wxbase${WXPF}_net${PFCOMPILER}${PFLIBEXT} wxbase${WXPF}_xml${PFCOMPILER}${PFLIBEXT} - ) - - SET( WXPF "${PFVERSION}${PFUNICODE}${PFDEBUG}" ) - SET(WXWIDGETS_MULTI_LIBRARIES ${WXWIDGETS_MULTI_LIBRARIES} - wxmsw${WXPF}_adv${PFCOMPILER}${PFLIBEXT} - wxmsw${WXPF}_core${PFCOMPILER}${PFLIBEXT} - wxmsw${WXPF}_html${PFCOMPILER}${PFLIBEXT} - wxmsw${WXPF}_xrc${PFCOMPILER}${PFLIBEXT} -# wxmsw${WXPF}_media${PFCOMPILER}${PFLIBEXT} - ) - - IF( NOT WXWIDGETS_USE_SHARED ) - SET( WXPF "${PFVERSION}${PFUNICODE}${PFDEBUG}" ) - # ODBC is not needed - #SET(WXWIDGETS_MULTI_LIBRARIES ${WXWIDGETS_MULTI_LIBRARIES} wxbase${WXPF}_odbc${PFCOMPILER}${PFLIBEXT} ) - - SET( WXPF "${PFVERSION}${PFUNICODE}${PFDEBUG}" ) - #SET(WXWIDGETS_MULTI_LIBRARIES ${WXWIDGETS_MULTI_LIBRARIES} - # wxmsw${WXPF}_dbgrid${PFLIBEXT} - # wxmsw${WXPF}_gl${PFCOMPILER}${PFLIBEXT} - #) - ENDIF( NOT WXWIDGETS_USE_SHARED ) - - IF ( WXWIDGETS_USE_UNIV ) - SET( WXPF "${PFUNIV}${PFVERSION}${PFUNICODE}${PFDEBUG}" ) - SET(WXWIDGETS_MULTI_LIBRARIES ${WXWIDGETS_MULTI_LIBRARIES} - wxmsw${WXPF}_core${PFCOMPILER}${PFLIBEXT} - ) - ENDIF ( WXWIDGETS_USE_UNIV ) - - SET(WXWIDGETS_MONO_LIBRARIES ${WXWIDGETS_MONO_LIBRARIES} - wxmsw${WXPF}${PFCOMPILER}${PFLIBEXT} - ) - - IF ( WXWIDGETS_USE_MONO ) - SET(WXWIDGETS_LIBRARIES ${WXWIDGETS_LIBRARIES} ${WXWIDGETS_MONO_LIBRARIES}) - ELSE ( WXWIDGETS_USE_MONO ) - SET(WXWIDGETS_LIBRARIES ${WXWIDGETS_LIBRARIES} ${WXWIDGETS_MULTI_LIBRARIES}) - ENDIF ( WXWIDGETS_USE_MONO ) - - SET( WXPF "${PFUNICODE}${PFDEBUG}" ) - SET(WXWIDGETS_LIBRARIES ${WXWIDGETS_LIBRARIES} - wxregex${WXPF}.lib - ) - - SET( WXPF "${PFDEBUG}" ) - SET(WXWIDGETS_LIBRARIES ${WXWIDGETS_LIBRARIES} - wxexpat${WXPF}.lib - wxpng${WXPF}.lib - wxtiff${WXPF}.lib - wxjpeg${WXPF}.lib - wxzlib${WXPF}.lib - ) - -ELSE( WIN32_STYLE_FIND ) - # - # Get Library list from wx-config - # - # do we need additionial wx GL stuff like GLCanvas ? - IF(WXWIDGETS_USE_GL) - SET(WX_CONFIG_ARGS_LIBS "${WX_CONFIG_ARGS_LIBS} --gl-libs" ) - ENDIF(WXWIDGETS_USE_GL) - - EXEC_PROGRAM(${WX_WXCONFIG_EXECUTABLE} - ARGS ${WX_CONFIG_ARGS_LIBS} - OUTPUT_VARIABLE WXWIDGETS_LIBRARIES - RETURN_VALUE BAD_WXCONFIG ) - IF (BAD_WXCONFIG) - MESSAGE( SEND_ERROR "ERROR: Specified WXWidgets config NOT found") - ENDIF (BAD_WXCONFIG) - - # Pull out the -L options - # evaluate wx-config output to separate linker flags and linkdirs for - # rpath: - SET(WX_CONFIG_LIBS ${WXWIDGETS_LIBRARIES}) - # extract linkdirs (-L) for rpath - # use regular expression to match wildcard equivalent "-L*" - # with is a space or a semicolon - STRING(REGEX MATCHALL "[-][L]([^ ;])+" WX_LINK_DIRECTORIES_WITH_PREFIX "${WX_CONFIG_LIBS}" ) - #MESSAGE("DBG WX_LINK_DIRECTORIES_WITH_PREFIX=${WX_LINK_DIRECTORIES_WITH_PREFIX}") - # remove prefix -L because we need the pure directory for LINK_DIRECTORIES - # replace -L by ; because the separator seems to be lost otherwise (bug or - # feature?) - IF(WX_LINK_DIRECTORIES_WITH_PREFIX) - STRING(REGEX REPLACE "[-][L]" ";" WXWIDGETS_LINK_DIRECTORIES ${WX_LINK_DIRECTORIES_WITH_PREFIX} ) - #MESSAGE("DBG WXWIDGETS_LINK_DIRECTORIES=${WXWIDGETS_LINK_DIRECTORIES}") - ENDIF(WX_LINK_DIRECTORIES_WITH_PREFIX) - # replace space separated string by semicolon separated vector to make it - # work with LINK_DIRECTORIES - SEPARATE_ARGUMENTS(WXWIDGETS_LINK_DIRECTORIES) - # Remove -L options from lib list, no need to duplicate - STRING(REGEX REPLACE "[-][L]([^ ;])+" "" WXWIDGETS_LIBRARIES ${WXWIDGETS_LIBRARIES} ) - - -ENDIF( WIN32_STYLE_FIND ) - - -# -# Find wx.rc -# -SET( WXWIDGETS_RC ${WXWIDGETS_INSTALL_PATH}/include/wx/msw/wx.rc ) -IF( NOT WIN32_STYLE_FIND ) - IF( NOT CYGWIN OR MINGW ) - SET( WXWIDGETS_RC "" ) - ENDIF( NOT CYGWIN OR MINGW ) -ENDIF( NOT WIN32_STYLE_FIND ) - -# -# Set preprocessor defs -# -STRING(TOUPPER ${CMAKE_SYSTEM_NAME} WX_SYSNAME) -SET( WXWIDGETS_DEFINITIONS ${WXWIDGETS_DEFINITIONS} "-D${WX_SYSNAME}" ) - -IF(WIN32_STYLE_FIND) - SET( WXWIDGETS_DEFINITIONS ${WXWIDGETS_DEFINITIONS} -DWIN32 -D__WXMSW__ ) -ELSE(WIN32_STYLE_FIND) - IF( CYGWIN ) - SET( WXWIDGETS_DEFINITIONS ${WXWIDGETS_DEFINITIONS} -D__GNUWIN32__ -O2 -D_WIN32_IE=0x400 -MMD -Wall ) - ENDIF( CYGWIN ) -ENDIF(WIN32_STYLE_FIND) - -IF( WXWIDGETS_USE_SHARED ) - SET( WXWIDGETS_DEFINITIONS ${WXWIDGETS_DEFINITIONS} -DWXUSINGDLL ) -ENDIF( WXWIDGETS_USE_SHARED ) - -IF( WXWIDGETS_USE_DEBUG ) - SET( WXWIDGETS_DEFINITIONS ${WXWIDGETS_DEFINITIONS} -D_DEBUG_ -D__WXDEBUG__ -DWXDEBUG=1 ) -ENDIF( WXWIDGETS_USE_DEBUG ) - -IF ( WXWIDGETS_USE_UNICODE ) - SET( WXWIDGETS_DEFINITIONS ${WXWIDGETS_DEFINITIONS} -DwxUSE_UNICODE ) -ENDIF ( WXWIDGETS_USE_UNICODE ) - -# -# Set the WXWIDGETS_FOUND var -# -IF(WXWIDGETS_LIBRARIES AND WXWIDGETS_INCLUDE_DIR) - SET(WXWIDGETS_FOUND 1) -ENDIF(WXWIDGETS_LIBRARIES AND WXWIDGETS_INCLUDE_DIR) - -# -# Mark advanced vars -# -MARK_AS_ADVANCED(WXWIDGETS_INSTALL_PATH) - -# -# Log results -# -FILE( WRITE "${PROJECT_BINARY_DIR}/findwxw.log" "WXWIDGETS_FOUND: ${WXWIDGETS_FOUND}\n" ) -FILE( APPEND "${PROJECT_BINARY_DIR}/findwxw.log" "WXWIDGETS_LINK_DIRECTORIES: ${WXWIDGETS_LINK_DIRECTORIES}\n" ) -FILE( APPEND "${PROJECT_BINARY_DIR}/findwxw.log" "WXWIDGETS_LIBRARIES: ${WXWIDGETS_LIBRARIES}\n" ) -FILE( APPEND "${PROJECT_BINARY_DIR}/findwxw.log" "WXWIDGETS_CXX_FLAGS: ${WXWIDGETS_CXX_FLAGS}\n" ) -FILE( APPEND "${PROJECT_BINARY_DIR}/findwxw.log" "WXWIDGETS_INCLUDE_DIR: ${WXWIDGETS_INCLUDE_DIR}\n" ) -FILE( APPEND "${PROJECT_BINARY_DIR}/findwxw.log" "WXWIDGETS_DEFINITIONS: ${WXWIDGETS_DEFINITIONS}\n" ) diff --git a/Source/WXDialog/bin/FindwxWin.cmake b/Source/WXDialog/bin/FindwxWin.cmake deleted file mode 100644 index fdeee37dd..000000000 --- a/Source/WXDialog/bin/FindwxWin.cmake +++ /dev/null @@ -1,469 +0,0 @@ - - -MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") - - -##--------------------------------------------------------------------------- -## $RCSfile: FindwxWin.cmake,v $ -## $Source: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxWin.cmake,v $ -## $Revision: 1.5 $ -## $Date: 2006-07-21 19:43:19 $ -##--------------------------------------------------------------------------- -## Author: Jorgen Bodde -## Copyright: (c) Jorgen Bodde -## License: wxWidgets License -##--------------------------------------------------------------------------- -## -## This module finds if wxWindows 2.5.x / 2.6.x is installed and determines -## where the include files and seperate libraries are. It also determines what -## the name of the library is. -## -## WARNING: Monolithic build support is not present here (it is not desired -## by wxWidgets anyway). Also the shared DLL option is not yet present. -## -## Current working combinations are; -## - Static debug and release libs -## - Static unicode debug and release libs -## - Static universal unicode debug and release libs -## - Static unicode universal unicode debug and release libs -## -## -## The linux part of this CMake file is unaltered and will always use because of -## 'wx-config'. The linux part will not use the WX_LIB_IGNORE vars because of -## the way wxWidgets is built and configured. -## -## This code sets the following variables: -## -## ------------------------------------------------------------------ -## -## WXWINDOWS_FOUND = system has WxWindows (in desired config. build) -## -## WXWINDOWS_LIBRARIES = full path to the wxWindows libraries -## on Unix/Linux with additional linker flags from -## "wx-config --libs" -## -## CMAKE_WXWINDOWS_CXX_FLAGS = Unix compiler flags for wxWindows, essentially -## "`wx-config --cxxflags`" -## -## WXWINDOWS_INCLUDE_DIR = where to find headers "wx/wx.h" "wx/setup.h" -## -## WXWINDOWS_LINK_DIRECTORIES = link directories, useful for rpath on Unix -## -## WXWINDOWS_DEFINITIONS = extra defines -## - -IF( WIN32 ) - - ## - ## Find root path of wxWidgets, either in the registry or as environment var - ## - - SET (WXWINDOWS_POSSIBLE_ROOT_PATHS - $ENV{WXWIN} - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWindows_is1;Inno Setup: App Path]" ) - - FIND_PATH(WXWIDGETS_PATH_ROOT include/wx/wx.h - ${WXWINDOWS_POSSIBLE_ROOT_PATHS} ) - - SET(WXWINDOWS_FOUND 0) - IF(NOT WXWIDGETS_PATH_ROOT) - MESSAGE(SEND_ERROR "wxWidgets root is not found. Please point out the wxWidgets root using the WXWIN environment var") - ENDIF(NOT WXWIDGETS_PATH_ROOT) - - OPTION(WX_USE_DEBUG_ONLY "Only attempt to setup the debug libraries, ignore the release libraries." ON) - - ## Find a multi library path, this is the path where the seperate libs are located - SET(WXMSW_SETUPH "wx/setup.h") - - SET(WXDEBUG_POSTFIX "") - IF(WX_USE_DEBUG_ONLY) - SET(WXDEBUG_POSTFIX "d") - ENDIF(WX_USE_DEBUG_ONLY) - - ## Try the VS compilation path - SET(WXWINDOWS_POSSIBLE_SETUPH - "${WXWIDGETS_PATH_ROOT}/lib/vc_lib/msw${WXDEBUG_POSTFIX}/${WXMSW_SETUPH}") - - ## Try borland and VS7 path - IF(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH}) - SET(WXWINDOWS_POSSIBLE_MULTILIB_PATHS - "${WXWIDGETS_PATH_ROOT}/lib/vc_lib") - ELSE(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH}) - ## Try the borland path - SET(WXWINDOWS_POSSIBLE_SETUPH - "${WXWIDGETS_PATH_ROOT}/lib/bcc_lib/msw${WXDEBUG_POSTFIX}/${WXMSW_SETUPH}") - IF(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH}) - SET(WXWINDOWS_POSSIBLE_MULTILIB_PATHS - "${WXWIDGETS_PATH_ROOT}/lib/bcc_lib") - ELSE(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH}) - MESSAGE(SEND_ERROR "wxWidgets libraries are not found.") - ENDIF(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH}) - ENDIF(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH}) - - ## Ask user what config should be used, after asking, verify if it will work - OPTION(WX_LINK_AGAINST_UNIVERSAL "Use wxWidgets universal builds" OFF) - OPTION(WX_LINK_AGAINST_UNICODE "Use wxWidgets unicode builds" OFF) - - SET(WXMSW_SETUPH "wx/setup.h") - - SET(WX_RELEASE 0) - SET(WX_DEBUG 0) - - SET(WX_RELEASE_UNI 0) - SET(WX_DEBUG_UNI 0) - - SET(WX_RELEASE_UNIV 0) - SET(WX_DEBUG_UNIV 0) - - SET(WX_RELEASE_UNIV_UNI 0) - SET(WX_DEBUG_UNIV_UNI 0) - - SET(WX_FOUND_VALID_CONF 0) - - ## Scan for wxWidgets static multilib release - IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/msw/${WXMSW_SETUPH}") - SET(WX_FOUND_VALID_CONF 1) - SET(WX_RELEASE 1) - SET(WX_RELEASE_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/msw/${WXMSW_SETUPH} ) - ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/msw/${WXMSW_SETUPH}") - - ## Scan for wxWidgets static multilib debug - IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswd/${WXMSW_SETUPH}") - SET(WX_FOUND_VALID_CONF 1) - SET(WX_DEBUG 1) - SET(WX_DEBUG_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswd/${WXMSW_SETUPH} ) - ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswd/${WXMSW_SETUPH}") - - ## Scan for wxWidgets multilib unicode - IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswu/${WXMSW_SETUPH}") - SET(WX_FOUND_VALID_CONF 1) - SET(WX_RELEASE_UNI 1) - SET(WX_RELEASE_UNI_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswu/${WXMSW_SETUPH} ) - ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswu/${WXMSW_SETUPH}") - - ## Scan for wxWidgets multilib unicode debug - IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswud/${WXMSW_SETUPH}") - SET(WX_FOUND_VALID_CONF 1) - SET(WX_DEBUG_UNI 1) - SET(WX_DEBUG_UNI_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswu/${WXMSW_SETUPH} ) - ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswud/${WXMSW_SETUPH}") - - ## Scan for wxWidgets multilib universal - IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswuniv/${WXMSW_SETUPH}") - SET(WX_FOUND_VALID_CONF 1) - SET(WX_RELEASE_UNIV 1) - SET(WX_RELEASE_UNIV_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswuniv/${WXMSW_SETUPH} ) - ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswuniv/${WXMSW_SETUPH}") - - ## Scan for wxWidgets multilib universal debug - IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivd/${WXMSW_SETUPH}") - SET(WX_FOUND_VALID_CONF 1) - SET(WX_DEBUG_UNIV 1) - SET(WX_DEBUG_UNIV_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivd/${WXMSW_SETUPH} ) - ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivd/${WXMSW_SETUPH}") - - ## Scan for wxWidgets multilib universal unicode - IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivu/${WXMSW_SETUPH}") - SET(WX_FOUND_VALID_CONF 1) - SET(WX_RELEASE_UNIV_UNI 1) - SET(WX_RELEASE_UNIV_UNI_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivu/${WXMSW_SETUPH} ) - ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivu/${WXMSW_SETUPH}") - - ## Scan for wxWidgets multilib universal unicode debug - IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivud/${WXMSW_SETUPH}") - SET(WX_FOUND_VALID_CONF 1) - SET(WX_DEBUG_UNIV_UNI 1) - SET(WX_DEBUG_UNIV_UNI_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivud/${WXMSW_SETUPH} ) - ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivud/${WXMSW_SETUPH}") - - ## If no valid config is found, mention this - IF(NOT WX_FOUND_VALID_CONF) - MESSAGE(SEND_ERROR "Did not found a valid setup.h for any library. Please compile your wxWidgets libraries first") - ENDIF(NOT WX_FOUND_VALID_CONF) - - ## Search for wx version automatically - SET (WXVERSION "") - - SET(WXLIBS - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase25.lib" - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase25d.lib" - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase25u.lib" - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase25ud.lib" - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv25_core.lib" - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv25d_core.lib" - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv25u_core.lib" - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv25ud_core.lib" ) - - FOREACH(WXLIB ${WXLIBS}) - IF(EXISTS "${WXLIB}") - SET(WXVERSION "25") - ENDIF(EXISTS "${WXLIB}") - ENDFOREACH(WXLIB ${WXLIBS}) - - IF(NOT WXLIB) - SET(WXLIBS - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase26.lib" - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase26d.lib" - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase26u.lib" - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase26ud.lib" - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv26_core.lib" - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv26d_core.lib" - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv26u_core.lib" - "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv26ud_core.lib") - - FOREACH(WXLIB ${WXLIBS}) - IF(EXISTS "${WXLIB}") - SET(WXVERSION "26") - ENDIF(EXISTS "${WXLIB}") - ENDFOREACH(WXLIB ${WXLIBS}) - ENDIF(NOT WXLIB) - - IF(NOT WXVERSION) - MESSAGE(SEND_ERROR "There are no suitable wxWidgets libraries found (monolithic builds are no longer supported") - ENDIF(NOT WXVERSION) - - ## - ## Verify unicode universal builds - ## - IF(WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE) - IF(NOT WX_RELEASE_UNIV AND NOT WX_DEBUG_UNIV AND NOT WX_RELEASE_UNIV_UNI AND NOT WX_DEBUG_UNIV_UNI) - MESSAGE(SEND_ERROR "Not all wx${WXVERSION} universal unicode libraries are found (check debug and release builds)") - ENDIF(NOT WX_RELEASE_UNIV AND NOT WX_DEBUG_UNIV AND NOT WX_RELEASE_UNIV_UNI AND NOT WX_DEBUG_UNIV_UNI) - ELSE(WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE) - ## - ## Verify unicode builds - ## - IF(NOT WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE) - IF(NOT WX_RELEASE_UNI AND NOT WX_DEBUG_UNI) - MESSAGE(SEND_ERROR "Not all wx${WXVERSION} unicode libraries are found (check debug and release builds)") - ENDIF(NOT WX_RELEASE_UNI AND NOT WX_DEBUG_UNI) - ELSE(NOT WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE) - ## - ## Verify universal builds - ## - IF(WX_LINK_AGAINST_UNIVERSAL AND NOT WX_LINK_AGAINST_UNICODE) - IF(NOT WX_RELEASE_UNIV AND NOT WX_DEBUG_UNIV) - MESSAGE(SEND_ERROR "Not all wx${WXVERSION} universal libraries are found (check debug and release builds)") - ENDIF(NOT WX_RELEASE_UNIV AND NOT WX_DEBUG_UNIV) - ELSE(WX_LINK_AGAINST_UNIVERSAL AND NOT WX_LINK_AGAINST_UNICODE) - ## - ## Must be normal build now - ## - IF(NOT WX_RELEASE AND NOT WX_DEBUG) - MESSAGE(SEND_ERROR "Not all wx${WXVERSION} libraries are found (check debug and release builds)") - ENDIF(NOT WX_RELEASE AND NOT WX_DEBUG) - ENDIF(WX_LINK_AGAINST_UNIVERSAL AND NOT WX_LINK_AGAINST_UNICODE) - ENDIF(NOT WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE) - ENDIF(WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE) - - ## Prepare the representation for the library - IF(WX_LINK_AGAINST_UNICODE) - SET(WXLIB_POST "u") - ELSE(WX_LINK_AGAINST_UNICODE) - SET(WXLIB_POST "") - ENDIF(WX_LINK_AGAINST_UNICODE) - - ## Prepare for universal presentation - IF(WX_LINK_AGAINST_UNIVERSAL) - SET(WXLIB_UNIV "univ") - ELSE(WX_LINK_AGAINST_UNIVERSAL) - SET(WXLIB_UNIV "") - ENDIF(WX_LINK_AGAINST_UNIVERSAL) - - FIND_PATH(WXWINDOWS_INCLUDE_DIR_SETUPH wx/setup.h - ${WXWIDGETS_PATH_ROOT}/lib/vc_lib/msw${WXLIB_UNIV}${WXLIB_POST} - ${WXWIDGETS_PATH_ROOT}/lib/vc_lib/msw${WXLIB_UNIV}${WXLIB_POST}d ) - - ## Find setup.h belonging to multi libs - SET(WXWINDOWS_LINK_DIRECTORIES - ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS} ) - - ## Append all multi libs - SET (WXWINDOWS_STATIC_RELEASE_LIBS - optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_gl.lib - optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_xrc.lib - optimized wxbase${WXVERSION}${WXLIB_POST}_xml.lib - optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_qa.lib - optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_html.lib - optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_dbgrid.lib - optimized wxbase${WXVERSION}${WXLIB_POST}_odbc.lib - optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_media.lib - optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_adv.lib - optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_core.lib - optimized wxbase${WXVERSION}${WXLIB_POST}_net.lib - optimized wxbase${WXVERSION}${WXLIB_POST}.lib - optimized wxexpat.lib - optimized wxtiff.lib - optimized wxjpeg.lib - optimized wxpng.lib - optimized wxzlib.lib - optimized wxregex${WXLIB_POST}.lib ) - - SET (WXWINDOWS_STATIC_DEBUG_LIBS - debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_gl.lib - debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_xrc.lib - debug wxbase${WXVERSION}${WXLIB_POST}d_xml.lib - debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_qa.lib - debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_html.lib - debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_dbgrid.lib - debug wxbase${WXVERSION}${WXLIB_POST}d_odbc.lib - debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_media.lib - debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_adv.lib - debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_core.lib - debug wxbase${WXVERSION}${WXLIB_POST}d_net.lib - debug wxbase${WXVERSION}${WXLIB_POST}d.lib - debug wxexpatd.lib - debug wxtiffd.lib - debug wxjpegd.lib - debug wxpngd.lib - debug wxzlibd.lib - debug wxregex${WXLIB_POST}d.lib ) - - ## Add the common libraries to the big list - SET(CMAKE_WXWINDOWS_COMMON_LIBRARIES - winmm - comctl32 - rpcrt4 - wsock32 ) - - ## Set wxWidgets library in WXWINDOWS_LIBRARIES - SET(WXWINDOWS_LIBRARIES - ${CMAKE_WXWINDOWS_COMMON_LIBRARIES} - ${WXWINDOWS_STATIC_DEBUG_LIBS} - ${WXWINDOWS_STATIC_RELEASE_LIBS} ) - - ## Find include directory - SET (WXWINDOWS_POSSIBLE_INCLUDE_PATHS - "${WXWIDGETS_PATH_ROOT}/include" ) - - FIND_PATH(WXWIDGETS_INCLUDE_DIR wx/wx.h - ${WXWINDOWS_POSSIBLE_INCLUDE_PATHS} ) - - ## Blank the setup.h dir when this is not found - IF (NOT WXWINDOWS_INCLUDE_DIR_SETUPH) - SET(WXWINDOWS_INCLUDE_DIR_SETUPH "") - ENDIF (NOT WXWINDOWS_INCLUDE_DIR_SETUPH) - - ## Set include paths - SET(WXWINDOWS_INCLUDE_DIR - ${WXWIDGETS_INCLUDE_DIR} - ${WXWINDOWS_INCLUDE_DIR_SETUPH} ) - - IF(WX_LINK_AGAINST_UNICODE) - SET(WX_UNICODE_FLAGS " -DUNICODE=1" ) - ELSE(WX_LINK_AGAINST_UNICODE) - SET(WX_UNICODE_FLAGS "" ) - ENDIF(WX_LINK_AGAINST_UNICODE) - - SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${WX_UNICODE_FLAGS} -D__WXDEBUG__ -D__WXMSW__ -DWINVER=0x0400 -DwxUSE_BASE=1") - - SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}${WX_UNICODE_FLAGS} -D__WXMSW__ -DWINVER=0x0400 -DwxUSE_BASE=1" ) - - ## TODO: Once these tags work, this is more efficient - ##ADD_DEFINITIONS(debug ) - ##ADD_DEFINITIONS(-D__WXMSW__ -DWINVER=0x0400 -DwxUSE_BASE=1 ) - - MARK_AS_ADVANCED( - WXWIDGETS_INCLUDE_DIR - WXWIDGETS_PATH_MONOLIB_DEBUG - WXWIDGETS_PATH_MONOLIB_RELEASE - WXWIDGETS_PATH_ROOT - WXWINDOWS_INCLUDE_DIR_SETUPH ) - - IF(WXWINDOWS_LINK_DIRECTORIES AND WXWINDOWS_LIBRARIES AND WXWINDOWS_INCLUDE_DIR) - SET(WXWINDOWS_FOUND 1) - ENDIF(WXWINDOWS_LINK_DIRECTORIES AND WXWINDOWS_LIBRARIES AND WXWINDOWS_INCLUDE_DIR) - -ELSE( WIN32 ) - - FIND_PROGRAM( CMAKE_WX_CONFIG wx-config ../wx/bin ../../wx/bin ) - IF(CMAKE_WX_CONFIG) - SET(WXWINDOWS_FOUND 1) - # run the config program to get cxxflags - EXEC_PROGRAM(${CMAKE_WX_CONFIG} ARGS --cxxflags OUTPUT_VARIABLE - CMAKE_WX_CXX_FLAGS RETURN_VALUE RET1) - # run the config program to get the libs - EXEC_PROGRAM(${CMAKE_WX_CONFIG} ARGS --libs OUTPUT_VARIABLE - WXWINDOWS_LIBRARIES_TMP RETURN_VALUE RET2) - # for libraries break things up into a ; separated variable - SEPARATE_ARGUMENTS(WXWINDOWS_LIBRARIES_TMP) - SET(LAST_FRAME 0) - # now put the stuff back into WXWINDOWS_LIBRARIES - # but combine all the -framework foo arguments back together - FOREACH(arg ${WXWINDOWS_LIBRARIES_TMP}) - IF(${arg} MATCHES "-framework") - SET(LAST_FRAME 1) - ELSE(${arg} MATCHES "-framework") - # not a -framework argument - IF(LAST_FRAME) - SET(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES} "-framework ${arg}") - SET(LAST_FRAME 0) - ELSE(LAST_FRAME) - SET(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES} ${arg}) - ENDIF(LAST_FRAME) - ENDIF(${arg} MATCHES "-framework") - ENDFOREACH(arg) - ENDIF(CMAKE_WX_CONFIG) - - - ## extract linkdirs (-L) for rpath - ## use regular expression to match wildcard equivalent "-L*" - ## with is a space or a semicolon - STRING(REGEX MATCHALL "[-][L]([^ ;])+" WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX "${WX_CONFIG_LIBS}" ) - #MESSAGE("DBG WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX=${WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX}") - - ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES - ## replace -L by ; because the separator seems to be lost otherwise (bug or - ## feature?) - IF(WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX) - STRING(REGEX REPLACE "[-][L]" ";" WXWINDOWS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX} ) - #MESSAGE("DBG WXWINDOWS_LINK_DIRECTORIES=${WXWINDOWS_LINK_DIRECTORIES}") - ENDIF(WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX) - - ## replace space separated string by semicolon separated vector to make it - ## work with LINK_DIRECTORIES - SEPARATE_ARGUMENTS(WXWINDOWS_LINK_DIRECTORIES) - - IF( CYGWIN OR MINGW ) - GET_FILENAME_COMPONENT(WXWINDOWS_INSTALL_PATH ${CMAKE_WX_CONFIG} PATH) - SET( WXWINDOWS_INSTALL_PATH ${WXWINDOWS_INSTALL_PATH}/.. ) - SET( WXWINDOWS_RC ${WXWINDOWS_INSTALL_PATH}/include/wx/msw/wx.rc ) - ELSE( CYGWIN OR MINGW ) - SET( WXWINDOWS_RC "" ) - ENDIF( CYGWIN OR MINGW ) - SET( WIN32GUI "" ) - - #keep debug settings as indicated by wx-config - #SET( WXWINDOWS_DEFINITIONS ${WXWINDOWS_DEFINITIONS} "${CMAKE_WX_CXX_FLAGS}" ) - #IF( WXWINDOWS_USE_DEBUG ) - # SET( WXWINDOWS_DEFINITIONS ${WXWINDOWS_DEFINITIONS} -ggdb ) - #ENDIF( WXWINDOWS_USE_DEBUG ) - - IF( CYGWIN OR MINGW ) - IF( CYGWIN ) - SET( WXWINDOWS_DEFINITIONS ${WXWINDOWS_DEFINITIONS} -D__GNUWIN32__ -O2 -D_WIN32_IE=0x400 -MMD -Wall ) - ENDIF( CYGWIN ) - ELSE( CYGWIN OR MINGW ) - # just in case `gtk-config --cflags`does not work - # SET( WXWINDOWS_INCLUDE_DIR ${WXWINDOWS_INCLUDE_DIR} /usr/include/gtk-2.0 /usr/include/gtk-2.0/include /usr/lib/gtk-2.0/include /usr/include/glib-2.0 /usr/lib/glib-2.0/include /usr/include/pango-1.0 /usr/include/atk-1.0 ) - # What about FindGTK.cmake? and what if somebody uses wxMotif? - IF(NOT APPLE) - SET( CMAKE_WX_CXX_FLAGS "${CMAKE_WX_CXX_FLAGS} `gtk-config --cflags`" ) - #find Xwindows - INCLUDE( ${CMAKE_ROOT}/Modules/FindX11.cmake ) - SET( WXWINDOWS_INCLUDE_DIR ${WXWINDOWS_INCLUDE_DIR} ${X11_INCLUDE_DIR} ) - ENDIF(NOT APPLE) - ENDIF( CYGWIN OR MINGW ) - -ENDIF( WIN32 ) - -MARK_AS_ADVANCED( - CMAKE_WX_CXX_FLAGS -) - -#MESSAGE( "${WXWINDOWS_LINK_DIRECTORIES}" ) -#MESSAGE( "${WXWINDOWS_LIBRARIES}" ) -#MESSAGE( "CMAKE_WX_CXX_FLAGS}" ) -#MESSAGE( "WXWINDOWS_INCLUDE_PATH}" ) -#MESSAGE( "WXWINDOWS_INCLUDE_DIR}" ) -#MESSAGE( "WXWINDOWS_DEFINITIONS}" ) diff --git a/Source/WXDialog/bin/UsewxW.cmake b/Source/WXDialog/bin/UsewxW.cmake deleted file mode 100644 index 702ab9d99..000000000 --- a/Source/WXDialog/bin/UsewxW.cmake +++ /dev/null @@ -1,80 +0,0 @@ - -MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") - - -# -# UsewxW.cmake -# v1.0 2005-05-27 -# Jerry Fath 2005 -# Based on work by Jorgen Bodde -# - -# -# wxWidgets CMake helper -# - -# These project specific variables should be set before including this file -#PROJECT_NAME -#PROJECT_SOURCE_FILES -#PROJECT_SOURCE_DIR -#PROJECT_BINARY_DIR -# These variables can be set to add addition directories, libraries, and definitions -#PROJECT_DEFINITIONS -#PROJECT_INCLUDE_PATH -#PROJECT_LINK_DIRECTORIES -#PROJECT_LIBRARIES - -#These WX specific variable should be set by FindwxW.cmake before including this file -# WXWIDGETS_LINK_DIRECTORIES = link directories, useful for rpath on Unix -# WXWIDGETS_LIBRARIES = all the wxWindows libraries ( and linker flags on unix ) -# WXWIDGETS_CXX_FLAGS = compiler flags for building wxWindows -# WXWIDGETS_INCLUDE_DIR = all include path of wxWindows -# WXWIDGETS_DEFINITIONS = all flags of wxWindows - - -# -# The flags for the compiler are stored in WXWIDGETS_CXX_FLAGS, we will set those so that -# we know we will always compile wxWidgets programs properly. In case of debugging, we -# will add the __WXDEBUG__ and WXDEBUG flags as well. For linux, you might want LINUX -# to be defined. -# -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}${WXWIDGETS_CXX_FLAGS}") - -ADD_DEFINITIONS( ${WXWIDGETS_DEFINITIONS} ${PROJECT_DEFINITIONS} ) - -# -# The include dirs -# -INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR} - ${PROJECT_INCLUDE_PATH} - ${WXWIDGETS_INCLUDE_DIR}) - -# -# This is needed to tell CMake what directories contain the libraries we need. This will -# allow us to just specify the lib files without prepending them with a full path to that -# library -# -LINK_DIRECTORIES( ${WXWIDGETS_LINK_DIRECTORIES} ${PROJECT_LINK_DIRECTORIES}) - -# -# This is our target. As you can see, we specify WIN32 for windows makefiles. In Linux and -# other OS'es this flag is ignored. Under windows it will make sure we generate a Win32 file with GUI. -# -ADD_EXECUTABLE(${PROJECT_NAME} WIN32 ${PROJECT_SOURCE_FILES} ${PROJECT_RC_FILE}) - -# -# Here we specify what libraries are linked to our project -# -TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${WXWIDGETS_LIBRARIES} ${PROJECT_LIBRARIES}) - -# -# Log results -# -FILE( WRITE "${PROJECT_BINARY_DIR}/usewxw.log" "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}\n" ) -FILE( APPEND "${PROJECT_BINARY_DIR}/usewxw.log" "Definitions: ${WXWIDGETS_DEFINITIONS} ${PROJECT_DEFINITIONS}\n" ) -FILE( APPEND "${PROJECT_BINARY_DIR}/usewxw.log" "INCLUDE_DIRECTORIES: ${PROJECT_SOURCE_DIR} ${PROJECT_INCLUDE_PATH} ${WXWIDGETS_INCLUDE_DIR}\n" ) -FILE( APPEND "${PROJECT_BINARY_DIR}/usewxw.log" "LINK_DIRECTORIES: ${WXWIDGETS_LINK_DIRECTORIES} ${PROJECT_LINK_DIRECTORIES}\n" ) -FILE( APPEND "${PROJECT_BINARY_DIR}/usewxw.log" "TARGET_LINK_LIBRARIES: ${PROJECT_NAME} ${WXWIDGETS_LIBRARIES} ${PROJECT_LIBRARIES}\n" ) -FILE( APPEND "${PROJECT_BINARY_DIR}/usewxw.log" "Sources: ${PROJECT_SOURCE_FILES}\n" ) - - diff --git a/Source/WXDialog/changelog.txt b/Source/WXDialog/changelog.txt deleted file mode 100644 index 3f94d0e17..000000000 --- a/Source/WXDialog/changelog.txt +++ /dev/null @@ -1,22 +0,0 @@ -Changes for new CMakeSetup dialog (v0.9) -- Cancel button on progress dialog now cancels the process -- Generator cannot be chosen anymore after there are cache items (this is pointless anyway) -- Drop target on grid (a folder) will load this in the build path and load up the cache -- Deletion of cache before something is generated, will ask the user if this is what he/she wants -- Reloading of cache added, after deleting cache items (and it was a mistake, a reload can bring it back to previous state) -- Added a search query. Typing a substring will narrow the search. When ENTER is pressed the substring is stored in the search query history for easy lookup -- Added a message display window, that will show all messages for easy copy-pasting and reference. This also obsoleted the "stop reporting errors" option -- A status percentage is shown in the task bar (when configuring, next to the configure window) -- Added menu bar with most common options (reload cache, delete cache, options, about etc) -- Added browse option in context menu on grid. Blue and green items are browsable (paths and files) -- Added about dialog -- Added options dialog (for future options) -- OPTION cache items are now implemented as checkboxes instead of comboboxes. Easier to double click instead of figuring out if you want to go up or down for YES or NO -- Added XP look to window (XP manifest) -- Added progress dialog that shows configuration progress -- Closing of dialog can be postponed by SHIFT (when option "close after generation is done" is selected) -- Window position X, Y and size is remembered between sessions -- Added most recent used list, with 5 last used build directories for easy lookup -- Cache options for paths are colored blue, cache options for files are green, and the rest is black -- NOTFOUND entries are made bold for easy recognition -- The selected item is described in a seperate text box for easy reading instead of in the statusbar diff --git a/Source/WXDialog/cmake_icon.gif b/Source/WXDialog/cmake_icon.gif deleted file mode 100644 index ccf1f992e0a92692b3c8dcbb4de311ea3b4770dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 892 zcmZ?wbhEHb diff --git a/Source/WXDialog/cmakesetup.xml b/Source/WXDialog/cmakesetup.xml deleted file mode 100644 index e2dddf21e..000000000 --- a/Source/WXDialog/cmakesetup.xml +++ /dev/null @@ -1,104 +0,0 @@ - - diff --git a/Source/WXDialog/config.h b/Source/WXDialog/config.h deleted file mode 100644 index a85ede860..000000000 --- a/Source/WXDialog/config.h +++ /dev/null @@ -1,43 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: config.h,v $ - Language: C++ - Date: $Date: 2005-06-30 19:54:14 $ - Version: $Revision: 1.1 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#ifndef __CMAKE_CONFIG_H__ -#define __CMAKE_CONFIG_H__ - -#define CM_LASTPROJECT_PATH "LastProjectPath" // last project path for CMakeLists.txt in edit box -#define CM_LASTBUILD_PATH "LastBuildPath" // last build path for cache in edit box -#define CM_MAX_RECENT_PATHS 5 // max amount most recent used paths in menu -#define CM_MAX_SEARCH_QUERIES 10 // max amount of entries in search query window -#define CM_RECENT_BUILD_PATH "LastRecentPath" // will be enumerated like LastRecentPath0 LastRecentPath1 etc -#define CM_SEARCH_QUERY "SearchQuery" // will be enumerated like SearchQuery0 SearchQuery1 etc -#define CM_XSIZE "CMakeXSize" // x size of window -#define CM_YSIZE "CMakeYSize" // y size of window -#define CM_XPOS "CMakeXPos" // x pos of window -#define CM_YPOS "CMakeYPos" // y pos of window -#define CM_SPLITTERPOS "CMakeSplitterPos" // position of splitter window - -#define CM_CLOSEAFTERGEN "CMakeCloseAfterGenerate" // close CMake after succesful generation (old behaviour) -#define CM_CLOSEAFTERGEN_DEF false // inherit default false when not present - -#define CM_RECENT_BUILD_ITEM 10000 // ID of menu item for recent builds -#define CMAKEGUI_MAJORVER 0 // major build -#define CMAKEGUI_MINORVER 9 // minor build -#define CMAKEGUI_ADDVER "b" // postfix (beta, alpha, none) - -#endif diff --git a/Source/WXDialog/optionsdlg.cpp b/Source/WXDialog/optionsdlg.cpp deleted file mode 100644 index 9968acb17..000000000 --- a/Source/WXDialog/optionsdlg.cpp +++ /dev/null @@ -1,199 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: optionsdlg.cpp,v $ - Language: C++ - Date: $Date: 2005-06-30 19:54:14 $ - Version: $Revision: 1.1 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma implementation "optionsdlg.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -////@begin includes -////@end includes - -#include "optionsdlg.h" - -////@begin XPM images -////@end XPM images - -/*! - * CMOptionsDlg type definition - */ - -IMPLEMENT_DYNAMIC_CLASS( CMOptionsDlg, wxDialog ) - -/*! - * CMOptionsDlg event table definition - */ - -BEGIN_EVENT_TABLE( CMOptionsDlg, wxDialog ) - -////@begin CMOptionsDlg event table entries - EVT_CHECKBOX( ID_CHECKBOX_CLOSECMAKE, CMOptionsDlg::OnButtonOK ) - -////@end CMOptionsDlg event table entries - -END_EVENT_TABLE() - -/*! - * CMOptionsDlg constructors - */ - -CMOptionsDlg::CMOptionsDlg( ) -{ -} - -CMOptionsDlg::CMOptionsDlg( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) -{ - Create(parent, id, caption, pos, size, style); -} - -/*! - * CMOptionsDlg creator - */ - -bool CMOptionsDlg::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) -{ -////@begin CMOptionsDlg member initialisation - m_closeAfterGenerate = NULL; -////@end CMOptionsDlg member initialisation - -////@begin CMOptionsDlg creation - SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS); - wxDialog::Create( parent, id, caption, pos, size, style ); - - CreateControls(); - Centre(); -////@end CMOptionsDlg creation - return TRUE; -} - -/*! - * Control creation for CMOptionsDlg - */ - -void CMOptionsDlg::CreateControls() -{ -////@begin CMOptionsDlg content construction - CMOptionsDlg* itemDialog1 = this; - - wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); - itemDialog1->SetSizer(itemBoxSizer2); - - wxNotebook* itemNotebook3 = new wxNotebook( itemDialog1, ID_NOTEBOOK, wxDefaultPosition, wxDefaultSize, wxNB_TOP ); - - wxPanel* itemPanel4 = new wxPanel( itemNotebook3, ID_PANEL, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL); - itemPanel4->SetSizer(itemBoxSizer5); - - itemBoxSizer5->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); - - m_closeAfterGenerate = new wxCheckBox( itemPanel4, ID_CHECKBOX_CLOSECMAKE, _("Close down CMakeSetup after generation of project"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_closeAfterGenerate->SetValue(FALSE); - itemBoxSizer5->Add(m_closeAfterGenerate, 0, wxALIGN_LEFT|wxALL, 5); - - itemNotebook3->AddPage(itemPanel4, _("General")); - - itemBoxSizer2->Add(itemNotebook3, 1, wxGROW|wxALL|wxFIXED_MINSIZE, 5); - - wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxHORIZONTAL); - itemBoxSizer2->Add(itemBoxSizer8, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT|wxBOTTOM, 5); - - wxButton* itemButton9 = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer8->Add(itemButton9, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); - - wxButton* itemButton10 = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer8->Add(itemButton10, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); - -////@end CMOptionsDlg content construction -} - -/*! - * Should we show tooltips? - */ - -bool CMOptionsDlg::ShowToolTips() -{ - return TRUE; -} - -/*! - * Get bitmap resources - */ - -wxBitmap CMOptionsDlg::GetBitmapResource( const wxString& name ) -{ - // Bitmap retrieval -////@begin CMOptionsDlg bitmap retrieval - return wxNullBitmap; -////@end CMOptionsDlg bitmap retrieval -} - -/*! - * Get icon resources - */ - -wxIcon CMOptionsDlg::GetIconResource( const wxString& name ) -{ - // Icon retrieval -////@begin CMOptionsDlg icon retrieval - return wxNullIcon; -////@end CMOptionsDlg icon retrieval -} - -void CMOptionsDlg::SetConfig(wxConfig *cfg) -{ - bool boolval; - - // close after generation - cfg->Read(CM_CLOSEAFTERGEN, &boolval, CM_CLOSEAFTERGEN_DEF); - m_closeAfterGenerate->SetValue(boolval); -} - -void CMOptionsDlg::GetConfig(wxConfig *cfg) -{ - // close after generation - cfg->Write(CM_CLOSEAFTERGEN, m_closeAfterGenerate->GetValue()); -} - -/*! - * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX_CLOSECMAKE - */ - -void CMOptionsDlg::OnButtonOK( wxCommandEvent& event ) -{ -////@begin wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX_CLOSECMAKE in CMOptionsDlg. - // Before editing this code, remove the block markers. - event.Skip(); -////@end wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX_CLOSECMAKE in CMOptionsDlg. -} - - - - - - diff --git a/Source/WXDialog/optionsdlg.h b/Source/WXDialog/optionsdlg.h deleted file mode 100644 index 541d0c10e..000000000 --- a/Source/WXDialog/optionsdlg.h +++ /dev/null @@ -1,125 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: optionsdlg.h,v $ - Language: C++ - Date: $Date: 2005-06-30 19:54:14 $ - Version: $Revision: 1.1 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#ifndef _OPTIONSDLG_H_ -#define _OPTIONSDLG_H_ - -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma interface "optionsdlg.cpp" -#endif - -/*! - * Includes - */ - -////@begin includes -#include "wx/notebook.h" -////@end includes - -#include -#include "config.h" - -/*! - * Forward declarations - */ - -////@begin forward declarations -////@end forward declarations - -/*! - * Control identifiers - */ - -////@begin control identifiers -#define ID_DIALOG 10004 -#define SYMBOL_CMOPTIONSDLG_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX -#define SYMBOL_CMOPTIONSDLG_TITLE _("CMakeSetup Options ...") -#define SYMBOL_CMOPTIONSDLG_IDNAME ID_DIALOG -#define SYMBOL_CMOPTIONSDLG_SIZE wxSize(400, 300) -#define SYMBOL_CMOPTIONSDLG_POSITION wxDefaultPosition -#define ID_NOTEBOOK 10006 -#define ID_PANEL 10007 -#define ID_CHECKBOX_CLOSECMAKE 10008 -////@end control identifiers - -/*! - * Compatibility - */ - -#ifndef wxCLOSE_BOX -#define wxCLOSE_BOX 0x1000 -#endif -#ifndef wxFIXED_MINSIZE -#define wxFIXED_MINSIZE 0 -#endif - -/*! - * CMOptionsDlg class declaration - */ - -class CMOptionsDlg: public wxDialog -{ - DECLARE_DYNAMIC_CLASS( CMOptionsDlg ) - DECLARE_EVENT_TABLE() - -public: - /// Constructors - CMOptionsDlg( ); - CMOptionsDlg( wxWindow* parent, wxWindowID id = SYMBOL_CMOPTIONSDLG_IDNAME, const wxString& caption = SYMBOL_CMOPTIONSDLG_TITLE, const wxPoint& pos = SYMBOL_CMOPTIONSDLG_POSITION, const wxSize& size = SYMBOL_CMOPTIONSDLG_SIZE, long style = SYMBOL_CMOPTIONSDLG_STYLE ); - - /// Creation - bool Create( wxWindow* parent, wxWindowID id = SYMBOL_CMOPTIONSDLG_IDNAME, const wxString& caption = SYMBOL_CMOPTIONSDLG_TITLE, const wxPoint& pos = SYMBOL_CMOPTIONSDLG_POSITION, const wxSize& size = SYMBOL_CMOPTIONSDLG_SIZE, long style = SYMBOL_CMOPTIONSDLG_STYLE ); - - /// Creates the controls and sizers - void CreateControls(); - -////@begin CMOptionsDlg event handler declarations - - /// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX_CLOSECMAKE - void OnButtonOK( wxCommandEvent& event ); - -////@end CMOptionsDlg event handler declarations - -////@begin CMOptionsDlg member function declarations - - /// Retrieves bitmap resources - wxBitmap GetBitmapResource( const wxString& name ); - - /// Retrieves icon resources - wxIcon GetIconResource( const wxString& name ); -////@end CMOptionsDlg member function declarations - - /// Should we show tooltips? - static bool ShowToolTips(); - - // write values from config to GUI controls - void SetConfig(wxConfig *cfg); - - // write GUI controls back to config - void GetConfig(wxConfig *cfg); - -private: - -////@begin CMOptionsDlg member variables - wxCheckBox* m_closeAfterGenerate; -////@end CMOptionsDlg member variables -}; - -#endif - // _OPTIONSDLG_H_ diff --git a/Source/WXDialog/progressdlg.cpp b/Source/WXDialog/progressdlg.cpp deleted file mode 100644 index c05966bcb..000000000 --- a/Source/WXDialog/progressdlg.cpp +++ /dev/null @@ -1,177 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: progressdlg.cpp,v $ - Language: C++ - Date: $Date: 2005-06-30 19:54:14 $ - Version: $Revision: 1.1 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma implementation "progressdlg.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -////@begin includes -////@end includes - -#include "progressdlg.h" - -////@begin XPM images -////@end XPM images - -/*! - * CMProgressDialog type definition - */ - -IMPLEMENT_DYNAMIC_CLASS( CMProgressDialog, wxDialog ) - -/*! - * CMProgressDialog event table definition - */ - -BEGIN_EVENT_TABLE( CMProgressDialog, wxDialog ) - -////@begin CMProgressDialog event table entries - EVT_BUTTON( ID_CMAKE_BUTTON, CMProgressDialog::OnCmakeCancelClick ) - -////@end CMProgressDialog event table entries - -END_EVENT_TABLE() - -/*! - * CMProgressDialog constructors - */ - -CMProgressDialog::CMProgressDialog( ) -{ -} - -CMProgressDialog::CMProgressDialog( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) -{ - Create(parent, id, caption, pos, size, style); -} - -/*! - * CMProgressDialog creator - */ - -bool CMProgressDialog::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) -{ -////@begin CMProgressDialog member initialisation - m_textMessage = NULL; - m_progress = NULL; -////@end CMProgressDialog member initialisation - -////@begin CMProgressDialog creation - SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS); - wxDialog::Create( parent, id, caption, pos, size, style ); - - CreateControls(); - GetSizer()->Fit(this); - GetSizer()->SetSizeHints(this); - Centre(); -////@end CMProgressDialog creation - - m_cancelPressed = false; - m_cancelling = false; - - return TRUE; -} - -/*! - * Control creation for CMProgressDialog - */ - -void CMProgressDialog::CreateControls() -{ -////@begin CMProgressDialog content construction - CMProgressDialog* itemDialog1 = this; - - wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); - itemDialog1->SetSizer(itemBoxSizer2); - - itemBoxSizer2->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); - - m_textMessage = new wxStaticText( itemDialog1, wxID_STATIC, _("Please wait while CMake configures ..."), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer2->Add(m_textMessage, 0, wxALIGN_CENTER_HORIZONTAL|wxALL|wxADJUST_MINSIZE, 5); - - wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxHORIZONTAL); - itemBoxSizer2->Add(itemBoxSizer5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); - - m_progress = new wxGauge( itemDialog1, ID_CMAKE_PROGRESS, 100, wxDefaultPosition, wxSize(250, 20), wxGA_HORIZONTAL ); - m_progress->SetValue(0); - itemBoxSizer5->Add(m_progress, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); - - wxButton* itemButton7 = new wxButton( itemDialog1, ID_CMAKE_BUTTON, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer2->Add(itemButton7, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); - - itemBoxSizer2->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT|wxTOP, 5); - -////@end CMProgressDialog content construction -} - -/*! - * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_CMAKE_BUTTON - */ - -void CMProgressDialog::OnCmakeCancelClick( wxCommandEvent& event ) -{ - m_cancelPressed = true; -} - -/*! - * Should we show tooltips? - */ - -bool CMProgressDialog::ShowToolTips() -{ - return TRUE; -} - -/*! - * Get bitmap resources - */ - -wxBitmap CMProgressDialog::GetBitmapResource( const wxString& name ) -{ - // Bitmap retrieval -////@begin CMProgressDialog bitmap retrieval - return wxNullBitmap; -////@end CMProgressDialog bitmap retrieval -} - -/*! - * Get icon resources - */ - -wxIcon CMProgressDialog::GetIconResource( const wxString& name ) -{ - // Icon retrieval -////@begin CMProgressDialog icon retrieval - return wxNullIcon; -////@end CMProgressDialog icon retrieval -} - - - diff --git a/Source/WXDialog/progressdlg.h b/Source/WXDialog/progressdlg.h deleted file mode 100644 index 7be7e2c3a..000000000 --- a/Source/WXDialog/progressdlg.h +++ /dev/null @@ -1,139 +0,0 @@ -/*========================================================================= - - Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake - Module: $RCSfile: progressdlg.h,v $ - Language: C++ - Date: $Date: 2005-06-30 19:54:14 $ - Version: $Revision: 1.1 $ - - Author: Jorgen Bodde - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ - -#ifndef _PROGRESSDLG_H_ -#define _PROGRESSDLG_H_ - -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma interface "progressdlg.cpp" -#endif - -/*! - * Includes - */ - -////@begin includes -////@end includes - -/*! - * Forward declarations - */ - -////@begin forward declarations -////@end forward declarations - -/*! - * Control identifiers - */ - -////@begin control identifiers -#define ID_PROGRESSDLG 10000 -#define SYMBOL_CMPROGRESSDIALOG_STYLE wxRAISED_BORDER -#define SYMBOL_CMPROGRESSDIALOG_TITLE _("Progress Dialog") -#define SYMBOL_CMPROGRESSDIALOG_IDNAME ID_PROGRESSDLG -#define SYMBOL_CMPROGRESSDIALOG_SIZE wxSize(400, 300) -#define SYMBOL_CMPROGRESSDIALOG_POSITION wxDefaultPosition -#define ID_CMAKE_PROGRESS 10001 -#define ID_CMAKE_BUTTON 10002 -////@end control identifiers - -/*! - * Compatibility - */ - -#ifndef wxCLOSE_BOX -#define wxCLOSE_BOX 0x1000 -#endif -#ifndef wxFIXED_MINSIZE -#define wxFIXED_MINSIZE 0 -#endif - -/*! - * CMProgressDialog class declaration - */ - -class CMProgressDialog: public wxDialog -{ - DECLARE_DYNAMIC_CLASS( CMProgressDialog ) - DECLARE_EVENT_TABLE() - -public: - /// Constructors - CMProgressDialog( ); - CMProgressDialog( wxWindow* parent, wxWindowID id = SYMBOL_CMPROGRESSDIALOG_IDNAME, const wxString& caption = SYMBOL_CMPROGRESSDIALOG_TITLE, const wxPoint& pos = SYMBOL_CMPROGRESSDIALOG_POSITION, const wxSize& size = SYMBOL_CMPROGRESSDIALOG_SIZE, long style = SYMBOL_CMPROGRESSDIALOG_STYLE ); - - /// Creation - bool Create( wxWindow* parent, wxWindowID id = SYMBOL_CMPROGRESSDIALOG_IDNAME, const wxString& caption = SYMBOL_CMPROGRESSDIALOG_TITLE, const wxPoint& pos = SYMBOL_CMPROGRESSDIALOG_POSITION, const wxSize& size = SYMBOL_CMPROGRESSDIALOG_SIZE, long style = SYMBOL_CMPROGRESSDIALOG_STYLE ); - - /// Creates the controls and sizers - void CreateControls(); - - void SetProgress(float progress) { - m_progress->SetValue((int)(progress * 100)); - }; - -////@begin CMProgressDialog event handler declarations - - /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_CMAKE_BUTTON - void OnCmakeCancelClick( wxCommandEvent& event ); - -////@end CMProgressDialog event handler declarations - -////@begin CMProgressDialog member function declarations - - /// Retrieves bitmap resources - wxBitmap GetBitmapResource( const wxString& name ); - - /// Retrieves icon resources - wxIcon GetIconResource( const wxString& name ); -////@end CMProgressDialog member function declarations - - /// Should we show tooltips? - static bool ShowToolTips(); - - bool CancelPressed() const { - return m_cancelPressed; - }; - - void CancelAcknowledged() { - m_cancelling = true; - }; - - bool IsCancelling() const { - return m_cancelling; - }; - - void ResetCancel() { - m_cancelling = false; - m_cancelPressed = false; - }; - -////@begin CMProgressDialog member variables - wxStaticText* m_textMessage; - wxGauge* m_progress; -////@end CMProgressDialog member variables - -private: - bool m_cancelPressed; - bool m_cancelling; - -}; - -#endif - // _PROGRESSDLG_H_ diff --git a/Source/cmAddCustomCommandCommand.cxx b/Source/cmAddCustomCommandCommand.cxx index 7e4e38a90..f6b3234de 100644 --- a/Source/cmAddCustomCommandCommand.cxx +++ b/Source/cmAddCustomCommandCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddCustomCommandCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-06-13 12:55:16 $ - Version: $Revision: 1.37.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmAddCustomCommandCommand.h" #include "cmTarget.h" diff --git a/Source/cmAddCustomCommandCommand.h b/Source/cmAddCustomCommandCommand.h index 5df9f5cf0..c67caa545 100644 --- a/Source/cmAddCustomCommandCommand.h +++ b/Source/cmAddCustomCommandCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddCustomCommandCommand.h,v $ - Language: C++ - Date: $Date: 2009-04-07 19:32:07 $ - Version: $Revision: 1.33.2.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmAddCustomCommandCommand_h #define cmAddCustomCommandCommand_h diff --git a/Source/cmAddCustomTargetCommand.cxx b/Source/cmAddCustomTargetCommand.cxx index c78d40e32..edb787b0f 100644 --- a/Source/cmAddCustomTargetCommand.cxx +++ b/Source/cmAddCustomTargetCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddCustomTargetCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:45 $ - Version: $Revision: 1.37.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmAddCustomTargetCommand.h" // cmAddCustomTargetCommand diff --git a/Source/cmAddCustomTargetCommand.h b/Source/cmAddCustomTargetCommand.h index 8f6966b00..7a2b3962b 100644 --- a/Source/cmAddCustomTargetCommand.h +++ b/Source/cmAddCustomTargetCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddCustomTargetCommand.h,v $ - Language: C++ - Date: $Date: 2009-04-07 19:32:07 $ - Version: $Revision: 1.22.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmAddCustomTargetCommand_h #define cmAddCustomTargetCommand_h diff --git a/Source/cmAddDefinitionsCommand.cxx b/Source/cmAddDefinitionsCommand.cxx index f4b8c8ce0..b813e3eb0 100644 --- a/Source/cmAddDefinitionsCommand.cxx +++ b/Source/cmAddDefinitionsCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddDefinitionsCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-01-23 15:27:59 $ - Version: $Revision: 1.14 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmAddDefinitionsCommand.h" // cmAddDefinitionsCommand diff --git a/Source/cmAddDefinitionsCommand.h b/Source/cmAddDefinitionsCommand.h index 9462602b7..0617f04d2 100644 --- a/Source/cmAddDefinitionsCommand.h +++ b/Source/cmAddDefinitionsCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddDefinitionsCommand.h,v $ - Language: C++ - Date: $Date: 2008-01-23 15:27:59 $ - Version: $Revision: 1.14 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmAddDefinitionsCommand_h #define cmAddDefinitionsCommand_h diff --git a/Source/cmAddDependenciesCommand.cxx b/Source/cmAddDependenciesCommand.cxx index 6a375fa84..1205f0741 100644 --- a/Source/cmAddDependenciesCommand.cxx +++ b/Source/cmAddDependenciesCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddDependenciesCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-01-28 13:38:35 $ - Version: $Revision: 1.17 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmAddDependenciesCommand.h" #include "cmLocalGenerator.h" #include "cmGlobalGenerator.h" diff --git a/Source/cmAddDependenciesCommand.h b/Source/cmAddDependenciesCommand.h index 141ea00b2..6a981c36e 100644 --- a/Source/cmAddDependenciesCommand.h +++ b/Source/cmAddDependenciesCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddDependenciesCommand.h,v $ - Language: C++ - Date: $Date: 2008-01-23 15:27:59 $ - Version: $Revision: 1.10 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmDependenciessCommand_h #define cmDependenciessCommand_h diff --git a/Source/cmAddExecutableCommand.cxx b/Source/cmAddExecutableCommand.cxx index 3a165e38a..a625c47e8 100644 --- a/Source/cmAddExecutableCommand.cxx +++ b/Source/cmAddExecutableCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddExecutableCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-02-11 22:33:46 $ - Version: $Revision: 1.35 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmAddExecutableCommand.h" // cmExecutableCommand diff --git a/Source/cmAddExecutableCommand.h b/Source/cmAddExecutableCommand.h index a113ffb81..f90e82697 100644 --- a/Source/cmAddExecutableCommand.h +++ b/Source/cmAddExecutableCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddExecutableCommand.h,v $ - Language: C++ - Date: $Date: 2008-02-11 18:35:39 $ - Version: $Revision: 1.21 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmExecutablesCommand_h #define cmExecutablesCommand_h @@ -63,7 +58,8 @@ public: virtual const char* GetFullDocumentation() { return - " add_executable( [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL]\n" + " add_executable( [WIN32] [MACOSX_BUNDLE]\n" + " [EXCLUDE_FROM_ALL]\n" " source1 source2 ... sourceN)\n" "Adds an executable target called to be built from the " "source files listed in the command invocation. " diff --git a/Source/cmAddLibraryCommand.cxx b/Source/cmAddLibraryCommand.cxx index 94960d2da..f522cee9e 100644 --- a/Source/cmAddLibraryCommand.cxx +++ b/Source/cmAddLibraryCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddLibraryCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-09-03 13:43:16 $ - Version: $Revision: 1.36.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmAddLibraryCommand.h" #include "cmake.h" diff --git a/Source/cmAddLibraryCommand.h b/Source/cmAddLibraryCommand.h index 189947795..07fbb06ad 100644 --- a/Source/cmAddLibraryCommand.h +++ b/Source/cmAddLibraryCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddLibraryCommand.h,v $ - Language: C++ - Date: $Date: 2008-09-03 13:43:16 $ - Version: $Revision: 1.22.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmLibrarysCommand_h #define cmLibrarysCommand_h @@ -62,7 +57,8 @@ public: virtual const char* GetFullDocumentation() { return - " add_library( [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL]\n" + " add_library( [STATIC | SHARED | MODULE]\n" + " [EXCLUDE_FROM_ALL]\n" " source1 source2 ... sourceN)\n" "Adds a library target called to be built from the " "source files listed in the command invocation. " diff --git a/Source/cmAddSubDirectoryCommand.cxx b/Source/cmAddSubDirectoryCommand.cxx index 76009e936..5fca527ca 100644 --- a/Source/cmAddSubDirectoryCommand.cxx +++ b/Source/cmAddSubDirectoryCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddSubDirectoryCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-01-23 15:27:59 $ - Version: $Revision: 1.11 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmAddSubDirectoryCommand.h" // cmAddSubDirectoryCommand diff --git a/Source/cmAddSubDirectoryCommand.h b/Source/cmAddSubDirectoryCommand.h index 8733c975f..dae705eb8 100644 --- a/Source/cmAddSubDirectoryCommand.h +++ b/Source/cmAddSubDirectoryCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddSubDirectoryCommand.h,v $ - Language: C++ - Date: $Date: 2008-09-03 13:43:16 $ - Version: $Revision: 1.7.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmAddSubDirectoryCommand_h #define cmAddSubDirectoryCommand_h diff --git a/Source/cmAddTestCommand.cxx b/Source/cmAddTestCommand.cxx index 0cc0d7685..923206d85 100644 --- a/Source/cmAddTestCommand.cxx +++ b/Source/cmAddTestCommand.cxx @@ -1,21 +1,18 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddTestCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-01-23 15:27:59 $ - Version: $Revision: 1.29 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmAddTestCommand.h" +#include "cmTestGenerator.h" + #include "cmTest.h" @@ -23,6 +20,11 @@ bool cmAddTestCommand ::InitialPass(std::vector const& args, cmExecutionStatus &) { + if(!args.empty() && args[0] == "NAME") + { + return this->HandleNameMode(args); + } + // First argument is the name of the test Second argument is the name of // the executable to run (a target or external program) Remaining arguments // are the arguments to pass to the executable @@ -31,20 +33,128 @@ bool cmAddTestCommand this->SetError("called with incorrect number of arguments"); return false; } - - // store the arguments for the final pass - // also expand any CMake variables - std::vector arguments; - std::vector::const_iterator it; - for ( it = args.begin() + 2; it != args.end(); ++ it ) + // Collect the command with arguments. + std::vector command; + for(std::vector::const_iterator it = args.begin() + 1; + it != args.end(); ++it) + { + command.push_back(*it); + } + + // Create the test but add a generator only the first time it is + // seen. This preserves behavior from before test generators. + cmTest* test = this->Makefile->GetTest(args[0].c_str()); + if(test) + { + // If the test was already added by a new-style signature do not + // allow it to be duplicated. + if(!test->GetOldStyle()) + { + cmOStringStream e; + e << " given test name \"" << args[0] + << "\" which already exists in this directory."; + this->SetError(e.str().c_str()); + return false; + } + } + else { - arguments.push_back(*it); + test = this->Makefile->CreateTest(args[0].c_str()); + test->SetOldStyle(true); + this->Makefile->AddTestGenerator(new cmTestGenerator(test)); + } + test->SetCommand(command); + + return true; +} + +//---------------------------------------------------------------------------- +bool cmAddTestCommand::HandleNameMode(std::vector const& args) +{ + std::string name; + std::vector configurations; + std::vector command; + + // Read the arguments. + enum Doing { + DoingName, + DoingCommand, + DoingConfigs, + DoingNone + }; + Doing doing = DoingName; + for(unsigned int i=1; i < args.size(); ++i) + { + if(args[i] == "COMMAND") + { + if(!command.empty()) + { + this->SetError(" may be given at most one COMMAND."); + return false; + } + doing = DoingCommand; + } + else if(args[i] == "CONFIGURATIONS") + { + if(!configurations.empty()) + { + this->SetError(" may be given at most one set of CONFIGURATIONS."); + return false; + } + doing = DoingConfigs; + } + else if(doing == DoingName) + { + name = args[i]; + doing = DoingNone; + } + else if(doing == DoingCommand) + { + command.push_back(args[i]); + } + else if(doing == DoingConfigs) + { + configurations.push_back(args[i]); + } + else + { + cmOStringStream e; + e << " given unknown argument:\n " << args[i] << "\n"; + this->SetError(e.str().c_str()); + return false; + } + } + + // Require a test name. + if(name.empty()) + { + this->SetError(" must be given non-empty NAME."); + return false; + } + + // Require a command. + if(command.empty()) + { + this->SetError(" must be given non-empty COMMAND."); + return false; + } + + // Require a unique test name within the directory. + if(this->Makefile->GetTest(name.c_str())) + { + cmOStringStream e; + e << " given test NAME \"" << name + << "\" which already exists in this directory."; + this->SetError(e.str().c_str()); + return false; } - cmTest* test = this->Makefile->CreateTest(args[0].c_str()); - test->SetCommand(args[1].c_str()); - test->SetArguments(arguments); + // Add the test. + cmTest* test = this->Makefile->CreateTest(name.c_str()); + test->SetOldStyle(false); + test->SetCommand(command); + this->Makefile->AddTestGenerator(new cmTestGenerator(test, configurations)); return true; } diff --git a/Source/cmAddTestCommand.h b/Source/cmAddTestCommand.h index f913971cf..2070fd3b5 100644 --- a/Source/cmAddTestCommand.h +++ b/Source/cmAddTestCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAddTestCommand.h,v $ - Language: C++ - Date: $Date: 2008-01-23 15:27:59 $ - Version: $Revision: 1.16 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmAddTestCommand_h #define cmAddTestCommand_h @@ -70,11 +65,44 @@ public: "built by this project or an arbitrary executable on the " "system (like tclsh). The test will be run with the current working " "directory set to the CMakeList.txt files corresponding directory " - "in the binary tree."; + "in the binary tree." + "\n" + " add_test(NAME [CONFIGURATIONS [Debug|Release|...]]\n" + " COMMAND [arg1 [arg2 ...]])\n" + "If COMMAND specifies an executable target (created by " + "add_executable) it will automatically be replaced by the location " + "of the executable created at build time. " + "If a CONFIGURATIONS option is given then the test will be executed " + "only when testing under one of the named configurations." + "\n" + "Arguments after COMMAND may use \"generator expressions\" with the " + "syntax \"$<...>\". " + "These expressions are evaluted during build system generation and " + "produce information specific to each generated build configuration. " + "Valid expressions are:\n" + " $ = configuration name\n" + " $ = main file (.exe, .so.1.2, .a)\n" + " $ = file used to link (.a, .lib, .so)\n" + " $ = file with soname (.so.3)\n" + "where \"tgt\" is the name of a target. " + "Target file expressions produce a full path, but _DIR and _NAME " + "versions can produce the directory and file name components:\n" + " $/$\n" + " $/$\n" + " $/$\n" + "Example usage:\n" + " add_test(NAME mytest\n" + " COMMAND testDriver --config $\n" + " --exe $)\n" + "This creates a test \"mytest\" whose command runs a testDriver " + "tool passing the configuration name and the full path to the " + "executable file produced by target \"myexe\"." + ; } cmTypeMacro(cmAddTestCommand, cmCommand); - +private: + bool HandleNameMode(std::vector const& args); }; diff --git a/Source/cmAuxSourceDirectoryCommand.cxx b/Source/cmAuxSourceDirectoryCommand.cxx index 06159ddfd..f88be3d58 100644 --- a/Source/cmAuxSourceDirectoryCommand.cxx +++ b/Source/cmAuxSourceDirectoryCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAuxSourceDirectoryCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-05-01 16:35:39 $ - Version: $Revision: 1.26.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmAuxSourceDirectoryCommand.h" #include "cmSourceFile.h" diff --git a/Source/cmAuxSourceDirectoryCommand.h b/Source/cmAuxSourceDirectoryCommand.h index 4802bb11c..704e2ed99 100644 --- a/Source/cmAuxSourceDirectoryCommand.h +++ b/Source/cmAuxSourceDirectoryCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmAuxSourceDirectoryCommand.h,v $ - Language: C++ - Date: $Date: 2008-01-23 15:27:59 $ - Version: $Revision: 1.16 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmAuxSourceDirectoryCommand_h #define cmAuxSourceDirectoryCommand_h diff --git a/Source/cmBootstrapCommands.cxx b/Source/cmBootstrapCommands.cxx index 1d2e4e57e..db01688e1 100644 --- a/Source/cmBootstrapCommands.cxx +++ b/Source/cmBootstrapCommands.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmBootstrapCommands.cxx,v $ - Language: C++ - Date: $Date: 2009-02-04 16:44:16 $ - Version: $Revision: 1.27.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ // This file is used to compile all the commands // that CMake knows about at compile time. // This is sort of a boot strapping approach since you would @@ -82,6 +77,7 @@ #include "cmReturnCommand.cxx" #include "cmSeparateArgumentsCommand.cxx" #include "cmSetCommand.cxx" +#include "cmSetDirectoryPropertiesCommand.cxx" #include "cmSetPropertyCommand.cxx" #include "cmSetSourceFilesPropertiesCommand.cxx" #include "cmSetTargetPropertiesCommand.cxx" @@ -153,6 +149,7 @@ void GetBootstrapCommands(std::list& commands) commands.push_back(new cmReturnCommand); commands.push_back(new cmSeparateArgumentsCommand); commands.push_back(new cmSetCommand); + commands.push_back(new cmSetDirectoryPropertiesCommand); commands.push_back(new cmSetPropertyCommand); commands.push_back(new cmSetSourceFilesPropertiesCommand); commands.push_back(new cmSetTargetPropertiesCommand); diff --git a/Source/cmBreakCommand.cxx b/Source/cmBreakCommand.cxx old mode 100755 new mode 100644 index 268490aca..b70e40088 --- a/Source/cmBreakCommand.cxx +++ b/Source/cmBreakCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmBreakCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-01-23 15:28:26 $ - Version: $Revision: 1.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmBreakCommand.h" // cmBreakCommand diff --git a/Source/cmBreakCommand.h b/Source/cmBreakCommand.h old mode 100755 new mode 100644 index 8d9f7609a..72796e892 --- a/Source/cmBreakCommand.h +++ b/Source/cmBreakCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmBreakCommand.h,v $ - Language: C++ - Date: $Date: 2008-01-23 15:28:26 $ - Version: $Revision: 1.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmBreakCommand_h #define cmBreakCommand_h diff --git a/Source/cmBuildCommand.cxx b/Source/cmBuildCommand.cxx index 0482bab8e..b9ce5612a 100644 --- a/Source/cmBuildCommand.cxx +++ b/Source/cmBuildCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmBuildCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-01-23 15:27:59 $ - Version: $Revision: 1.24 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmBuildCommand.h" #include "cmLocalGenerator.h" diff --git a/Source/cmBuildCommand.h b/Source/cmBuildCommand.h index 054434683..9d494e7dc 100644 --- a/Source/cmBuildCommand.h +++ b/Source/cmBuildCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmBuildCommand.h,v $ - Language: C++ - Date: $Date: 2008-01-23 15:27:59 $ - Version: $Revision: 1.13 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmBuildCommand_h #define cmBuildCommand_h diff --git a/Source/cmBuildNameCommand.cxx b/Source/cmBuildNameCommand.cxx index 08a9e2a21..fa698303c 100644 --- a/Source/cmBuildNameCommand.cxx +++ b/Source/cmBuildNameCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmBuildNameCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-01-23 15:27:59 $ - Version: $Revision: 1.19 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmBuildNameCommand.h" #include diff --git a/Source/cmBuildNameCommand.h b/Source/cmBuildNameCommand.h index d4184a80f..35c0ae04d 100644 --- a/Source/cmBuildNameCommand.h +++ b/Source/cmBuildNameCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmBuildNameCommand.h,v $ - Language: C++ - Date: $Date: 2008-01-23 15:27:59 $ - Version: $Revision: 1.16 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmBuildNameCommand_h #define cmBuildNameCommand_h diff --git a/Source/cmCMakeMinimumRequired.cxx b/Source/cmCMakeMinimumRequired.cxx index 05bdd397a..b7e939ee9 100644 --- a/Source/cmCMakeMinimumRequired.cxx +++ b/Source/cmCMakeMinimumRequired.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCMakeMinimumRequired.cxx,v $ - Language: C++ - Date: $Date: 2009-01-13 18:03:49 $ - Version: $Revision: 1.17.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCMakeMinimumRequired.h" #include "cmVersion.h" @@ -87,12 +82,12 @@ bool cmCMakeMinimumRequired } // Compare the version numbers. - if(current_major < required_major || - current_major == required_major && - current_minor < required_minor || - current_major == required_major && - current_minor == required_minor && - current_patch < required_patch) + if((current_major < required_major) || + (current_major == required_major && + current_minor < required_minor) || + (current_major == required_major && + current_minor == required_minor && + current_patch < required_patch)) { // The current version is too low. cmOStringStream e; @@ -110,7 +105,7 @@ bool cmCMakeMinimumRequired return false; } - if (required_major < 2 || required_major == 2 && required_minor < 4) + if (required_major < 2 || (required_major == 2 && required_minor < 4)) { this->Makefile->SetPolicyVersion("2.4"); } diff --git a/Source/cmCMakeMinimumRequired.h b/Source/cmCMakeMinimumRequired.h index 12b9639de..05c250542 100644 --- a/Source/cmCMakeMinimumRequired.h +++ b/Source/cmCMakeMinimumRequired.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCMakeMinimumRequired.h,v $ - Language: C++ - Date: $Date: 2009-01-13 18:03:49 $ - Version: $Revision: 1.12.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCMakeMinimumRequired_h #define cmCMakeMinimumRequired_h diff --git a/Source/cmCMakePolicyCommand.cxx b/Source/cmCMakePolicyCommand.cxx old mode 100755 new mode 100644 index 3907a1270..f4be55930 --- a/Source/cmCMakePolicyCommand.cxx +++ b/Source/cmCMakePolicyCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCMakePolicyCommand.cxx,v $ - Language: C++ - Date: $Date: 2009-02-04 16:44:16 $ - Version: $Revision: 1.2.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCMakePolicyCommand.h" #include "cmVersion.h" diff --git a/Source/cmCMakePolicyCommand.h b/Source/cmCMakePolicyCommand.h old mode 100755 new mode 100644 index bb760aefc..ffd0f44e8 --- a/Source/cmCMakePolicyCommand.h +++ b/Source/cmCMakePolicyCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCMakePolicyCommand.h,v $ - Language: C++ - Date: $Date: 2009-02-04 16:44:16 $ - Version: $Revision: 1.4.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCMakePolicyCommand_h #define cmCMakePolicyCommand_h @@ -90,8 +85,7 @@ public: "given version of CMake. " "All policies introduced in the specified version or earlier " "will be set to use NEW behavior. " - "All policies introduced after the specified version will be reset " - "to use OLD behavior with a warning. " + "All policies introduced after the specified version will be unset. " "This effectively requests behavior preferred as of a given CMake " "version and tells newer CMake versions to warn about their new " "policies. " diff --git a/Source/cmCPluginAPI.cxx b/Source/cmCPluginAPI.cxx index 86678e435..411a28d08 100644 --- a/Source/cmCPluginAPI.cxx +++ b/Source/cmCPluginAPI.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPluginAPI.cxx,v $ - Language: C++ - Date: $Date: 2009-03-23 17:58:40 $ - Version: $Revision: 1.42.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /* this file contains the implementation of the C API to CMake. Generally these routines just manipulate arguments and then call the associated diff --git a/Source/cmCPluginAPI.h b/Source/cmCPluginAPI.h index 669ea5586..fd5a4f819 100644 --- a/Source/cmCPluginAPI.h +++ b/Source/cmCPluginAPI.h @@ -1,19 +1,14 @@ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCPluginAPI.h,v $ - Language: C++ - Date: $Date: 2006-12-07 14:44:45 $ - Version: $Revision: 1.25 $ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /* This header file defines the API that loadable commands can use. In many of these commands C++ instances of cmMakefile of cmSourceFile are passed in as arguments or returned. In these cases they are passed as a void * diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 832d34146..fa6333f1e 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTest.cxx,v $ - Language: C++ - Date: $Date: 2009-01-01 17:49:40 $ - Version: $Revision: 1.334.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cm_curl.h" #include "cmCTest.h" @@ -25,6 +20,8 @@ #include #include "cmDynamicLoader.h" #include "cmGeneratedFileStream.h" +#include "cmXMLSafe.h" +#include "cmVersionMacros.h" #include "cmCTestCommand.h" #include "cmCTestBuildHandler.h" @@ -46,6 +43,7 @@ #include #include #include +#include #include // auto_ptr @@ -71,8 +69,11 @@ struct tm* cmCTest::GetNightlyTime(std::string str, char buf[1024]; // add todays year day and month to the time in str because // curl_getdate no longer assumes the day is today - sprintf(buf, "%d%02d%02d %s", lctime->tm_year+1900, lctime->tm_mday, - lctime->tm_mon, str.c_str()); + sprintf(buf, "%d%02d%02d %s", + lctime->tm_year+1900, + lctime->tm_mon +1, + lctime->tm_mday, + str.c_str()); cmCTestLog(this, OUTPUT, "Determine Nightly Start Time" << std::endl << " Specified time: " << str.c_str() << std::endl); //Convert the nightly start time to seconds. Since we are @@ -149,59 +150,7 @@ std::string cmCTest::CurrentTime() strftime(current_time, 1000, "%a %b %d %H:%M:%S %Z %Y", t); } cmCTestLog(this, DEBUG, " Current_Time: " << current_time << std::endl); - return cmCTest::MakeXMLSafe(cmCTest::CleanString(current_time)); -} - - -//---------------------------------------------------------------------- -std::string cmCTest::MakeXMLSafe(const std::string& str) -{ - std::vector result; - result.reserve(500); - const char* pos = str.c_str(); - for ( ;*pos; ++pos) - { - char ch = *pos; - if ( (ch > 126 || ch < 32) && ch != 9 && - ch != 10 && ch != 13 && ch != '\r' ) - { - char buffer[33]; - sprintf(buffer, "<%d>", (int)ch); - //sprintf(buffer, "&#x%0x;", (unsigned int)ch); - result.insert(result.end(), buffer, buffer+strlen(buffer)); - } - else - { - const char* const encodedChars[] = { - "&", - "<", - ">" - }; - switch ( ch ) - { - case '&': - result.insert(result.end(), encodedChars[0], encodedChars[0]+5); - break; - case '<': - result.insert(result.end(), encodedChars[1], encodedChars[1]+4); - break; - case '>': - result.insert(result.end(), encodedChars[2], encodedChars[2]+4); - break; - case '\n': - result.push_back('\n'); - break; - case '\r': break; // Ignore \r - default: - result.push_back(ch); - } - } - } - if ( result.size() == 0 ) - { - return ""; - } - return std::string(&*result.begin(), result.size()); + return cmXMLSafe(cmCTest::CleanString(current_time)).str(); } //---------------------------------------------------------------------- @@ -231,13 +180,38 @@ std::string cmCTest::MakeURLSafe(const std::string& str) return ost.str(); } +//---------------------------------------------------------------------------- +std::string cmCTest::DecodeURL(const std::string& in) +{ + std::string out; + for(const char* c = in.c_str(); *c; ++c) + { + if(*c == '%' && isxdigit(*(c+1)) && isxdigit(*(c+2))) + { + char buf[3] = {*(c+1), *(c+2), 0}; + out.append(1, char(strtoul(buf, 0, 16))); + c += 2; + } + else + { + out.append(1, *c); + } + } + return out; +} + //---------------------------------------------------------------------- cmCTest::cmCTest() { + this->LabelSummary = true; + this->ParallelLevel = 1; this->SubmitIndex = 0; + this->Failover = false; + this->BatchJobs = false; this->ForceNewCTestProcess = false; this->TomorrowTag = false; this->Verbose = false; + this->Debug = false; this->ShowLineNumbers = false; this->Quiet = false; @@ -246,6 +220,7 @@ cmCTest::cmCTest() this->ShowOnly = false; this->RunConfigurationScript = false; this->TestModel = cmCTest::EXPERIMENTAL; + this->MaxTestNameWidth = 30; this->InteractiveDebugMode = true; this->TimeOut = 0; this->CompressXMLFiles = false; @@ -254,12 +229,30 @@ cmCTest::cmCTest() this->OutputLogFileLastTag = -1; this->SuppressUpdatingCTestConfiguration = false; this->DartVersion = 1; + this->OutputTestOutputOnTestFailure = false; + if(cmSystemTools::GetEnv("CTEST_OUTPUT_ON_FAILURE")) + { + this->OutputTestOutputOnTestFailure = true; + } + this->InitStreams(); + + this->Parts[PartStart].SetName("Start"); + this->Parts[PartUpdate].SetName("Update"); + this->Parts[PartConfigure].SetName("Configure"); + this->Parts[PartBuild].SetName("Build"); + this->Parts[PartTest].SetName("Test"); + this->Parts[PartCoverage].SetName("Coverage"); + this->Parts[PartMemCheck].SetName("MemCheck"); + this->Parts[PartSubmit].SetName("Submit"); + this->Parts[PartNotes].SetName("Notes"); + this->Parts[PartExtraFiles].SetName("ExtraFiles"); - int cc; - for ( cc=0; cc < cmCTest::LAST_TEST; cc ++ ) + // Fill the part name-to-id map. + for(Part p = PartStart; p != PartCount; p = Part(p+1)) { - this->Tests[cc] = 0; + this->PartMap[cmSystemTools::LowerCase(this->Parts[p].GetName())] = p; } + this->ShortDateFormat = true; this->TestingHandlers["build"] = new cmCTestBuildHandler; @@ -296,6 +289,26 @@ cmCTest::~cmCTest() this->SetOutputLogFileName(0); } +void cmCTest::SetParallelLevel(int level) +{ + this->ParallelLevel = level < 1 ? 1 : level; +} + +//---------------------------------------------------------------------------- +cmCTest::Part cmCTest::GetPartFromName(const char* name) +{ + // Look up by lower-case to make names case-insensitive. + std::string lower_name = cmSystemTools::LowerCase(name); + PartMapType::const_iterator i = this->PartMap.find(lower_name); + if(i != this->PartMap.end()) + { + return i->second; + } + + // The string does not name a valid part. + return PartCount; +} + //---------------------------------------------------------------------- int cmCTest::Initialize(const char* binary_dir, bool new_tag, bool verbose_tag) @@ -339,7 +352,6 @@ int cmCTest::Initialize(const char* binary_dir, bool new_tag, cmGlobalGenerator gg; gg.SetCMakeInstance(&cm); std::auto_ptr lg(gg.CreateLocalGenerator()); - lg->SetGlobalGenerator(&gg); cmMakefile *mf = lg->GetMakefile(); if ( !this->ReadCustomConfigurationFileTree(this->BinaryDir.c_str(), mf) ) { @@ -396,16 +408,14 @@ int cmCTest::Initialize(const char* binary_dir, bool new_tag, std::string tagmode; if ( cmSystemTools::GetLineFromStream(tfin, tagmode) ) { - if ( tagmode.size() > 4 && !( this->Tests[cmCTest::START_TEST] || - this->Tests[ALL_TEST] )) + if (tagmode.size() > 4 && !this->Parts[PartStart]) { this->TestModel = cmCTest::GetTestModelFromString(tagmode.c_str()); } } tfin.close(); } - if ( tag.size() == 0 || new_tag || this->Tests[cmCTest::START_TEST] || - this->Tests[ALL_TEST]) + if (tag.size() == 0 || new_tag || this->Parts[PartStart]) { cmCTestLog(this, DEBUG, "TestModel: " << this->GetTestModelString() << std::endl); @@ -453,7 +463,10 @@ bool cmCTest::InitializeFromCommand(cmCTestCommand* command, bool first) = this->GetCTestConfiguration("SourceDirectory").c_str(); std::string bld_dir = this->GetCTestConfiguration("BuildDirectory").c_str(); this->DartVersion = 1; - this->SubmitFiles.clear(); + for(Part p = PartStart; p != PartCount; p = Part(p+1)) + { + this->Parts[p].SubmitFiles.clear(); + } cmMakefile* mf = command->GetMakefile(); std::string fname = src_dir; @@ -629,43 +642,17 @@ bool cmCTest::SetTest(const char* ttype, bool report) { if ( cmSystemTools::LowerCase(ttype) == "all" ) { - this->Tests[cmCTest::ALL_TEST] = 1; - } - else if ( cmSystemTools::LowerCase(ttype) == "start" ) - { - this->Tests[cmCTest::START_TEST] = 1; - } - else if ( cmSystemTools::LowerCase(ttype) == "update" ) - { - this->Tests[cmCTest::UPDATE_TEST] = 1; - } - else if ( cmSystemTools::LowerCase(ttype) == "configure" ) - { - this->Tests[cmCTest::CONFIGURE_TEST] = 1; - } - else if ( cmSystemTools::LowerCase(ttype) == "build" ) - { - this->Tests[cmCTest::BUILD_TEST] = 1; - } - else if ( cmSystemTools::LowerCase(ttype) == "test" ) - { - this->Tests[cmCTest::TEST_TEST] = 1; - } - else if ( cmSystemTools::LowerCase(ttype) == "coverage" ) - { - this->Tests[cmCTest::COVERAGE_TEST] = 1; - } - else if ( cmSystemTools::LowerCase(ttype) == "memcheck" ) - { - this->Tests[cmCTest::MEMCHECK_TEST] = 1; - } - else if ( cmSystemTools::LowerCase(ttype) == "notes" ) - { - this->Tests[cmCTest::NOTES_TEST] = 1; + for(Part p = PartStart; p != PartCount; p = Part(p+1)) + { + this->Parts[p].Enable(); + } + return true; } - else if ( cmSystemTools::LowerCase(ttype) == "submit" ) + Part p = this->GetPartFromName(ttype); + if(p != PartCount) { - this->Tests[cmCTest::SUBMIT_TEST] = 1; + this->Parts[p].Enable(); + return true; } else { @@ -676,7 +663,6 @@ bool cmCTest::SetTest(const char* ttype, bool report) } return false; } - return true; } //---------------------------------------------------------------------- @@ -732,11 +718,11 @@ bool cmCTest::OpenOutputFile(const std::string& path, } //---------------------------------------------------------------------- -bool cmCTest::AddIfExists(SetOfStrings& files, const char* file) +bool cmCTest::AddIfExists(Part part, const char* file) { if ( this->CTestFileExists(file) ) { - files.insert(file); + this->AddSubmitFile(part, file); } else { @@ -744,7 +730,7 @@ bool cmCTest::AddIfExists(SetOfStrings& files, const char* file) name += ".gz"; if ( this->CTestFileExists(name.c_str()) ) { - files.insert(name.c_str()); + this->AddSubmitFile(part, file); } else { @@ -804,20 +790,13 @@ int cmCTest::ProcessTests() { int res = 0; bool notest = true; - int cc; int update_count = 0; - cmCTestLog(this, OUTPUT, "Start processing tests" << std::endl); - - for ( cc = 0; cc < LAST_TEST; cc ++ ) + for(Part p = PartStart; notest && p != PartCount; p = Part(p+1)) { - if ( this->Tests[cc] ) - { - notest = false; - break; - } + notest = !this->Parts[p]; } - if (( this->Tests[UPDATE_TEST] || this->Tests[ALL_TEST] ) && + if (this->Parts[PartUpdate] && (this->GetRemainingTimeAllowed() - 120 > 0)) { cmCTestGenericHandler* uphandler = this->GetHandler("update"); @@ -833,7 +812,7 @@ int cmCTest::ProcessTests() { return 0; } - if (( this->Tests[CONFIGURE_TEST] || this->Tests[ALL_TEST] )&& + if (this->Parts[PartConfigure] && (this->GetRemainingTimeAllowed() - 120 > 0)) { if (this->GetHandler("configure")->ProcessHandler() < 0) @@ -841,7 +820,7 @@ int cmCTest::ProcessTests() res |= cmCTest::CONFIGURE_ERRORS; } } - if (( this->Tests[BUILD_TEST] || this->Tests[ALL_TEST] )&& + if (this->Parts[PartBuild] && (this->GetRemainingTimeAllowed() - 120 > 0)) { this->UpdateCTestConfiguration(); @@ -850,7 +829,7 @@ int cmCTest::ProcessTests() res |= cmCTest::BUILD_ERRORS; } } - if (( this->Tests[TEST_TEST] || this->Tests[ALL_TEST] || notest ) && + if ((this->Parts[PartTest] || notest) && (this->GetRemainingTimeAllowed() - 120 > 0)) { this->UpdateCTestConfiguration(); @@ -859,7 +838,7 @@ int cmCTest::ProcessTests() res |= cmCTest::TEST_ERRORS; } } - if (( this->Tests[COVERAGE_TEST] || this->Tests[ALL_TEST] ) && + if (this->Parts[PartCoverage] && (this->GetRemainingTimeAllowed() - 120 > 0)) { this->UpdateCTestConfiguration(); @@ -868,7 +847,7 @@ int cmCTest::ProcessTests() res |= cmCTest::COVERAGE_ERRORS; } } - if (( this->Tests[MEMCHECK_TEST] || this->Tests[ALL_TEST] )&& + if (this->Parts[PartMemCheck] && (this->GetRemainingTimeAllowed() - 120 > 0)) { this->UpdateCTestConfiguration(); @@ -897,12 +876,12 @@ int cmCTest::ProcessTests() this->NotesFiles += ";"; } this->NotesFiles += fullname; - this->Tests[NOTES_TEST] = 1; + this->Parts[PartNotes].Enable(); } } } } - if ( this->Tests[NOTES_TEST] || this->Tests[ALL_TEST] ) + if (this->Parts[PartNotes]) { this->UpdateCTestConfiguration(); if ( this->NotesFiles.size() ) @@ -910,7 +889,7 @@ int cmCTest::ProcessTests() this->GenerateNotesFile(this->NotesFiles.c_str()); } } - if ( this->Tests[SUBMIT_TEST] || this->Tests[ALL_TEST] ) + if (this->Parts[PartSubmit]) { this->UpdateCTestConfiguration(); if (this->GetHandler("submit")->ProcessHandler() < 0) @@ -921,7 +900,7 @@ int cmCTest::ProcessTests() if ( res != 0 ) { cmCTestLog(this, ERROR_MESSAGE, "Errors while running CTest" - << std::endl); + << std::endl); } return res; } @@ -1094,8 +1073,12 @@ int cmCTest::RunMakeCommand(const char* command, std::string* output, //---------------------------------------------------------------------- int cmCTest::RunTest(std::vector argv, std::string* output, int *retVal, - std::ostream* log, double testTimeOut) + std::ostream* log, double testTimeOut, + std::vector* environment) { + std::vector origEnv; + bool modifyEnv = (environment && environment->size()>0); + // determine how much time we have double timeout = this->GetRemainingTimeAllowed() - 120; if (this->TimeOut && this->TimeOut < timeout) @@ -1121,6 +1104,11 @@ int cmCTest::RunTest(std::vector argv, cmCTest inst; inst.ConfigType = this->ConfigType; inst.TimeOut = timeout; + + // Capture output of the child ctest. + cmOStringStream oss; + inst.SetStreams(&oss, &oss); + std::vector args; for(unsigned int i =0; i < argv.size(); ++i) { @@ -1145,7 +1133,13 @@ int cmCTest::RunTest(std::vector argv, } std::string oldpath = cmSystemTools::GetCurrentWorkingDirectory(); + if (modifyEnv) + { + origEnv = cmSystemTools::AppendEnv(environment); + } + *retVal = inst.Run(args, output); + *output += oss.str(); if ( log ) { *log << output->c_str(); @@ -1155,6 +1149,12 @@ int cmCTest::RunTest(std::vector argv, cmCTestLog(this, HANDLER_VERBOSE_OUTPUT, "Internal cmCTest object used to run test." << std::endl << *output << std::endl); + + if (modifyEnv) + { + cmSystemTools::RestoreEnv(origEnv); + } + return cmsysProcess_State_Exited; } std::vector tempOutput; @@ -1163,6 +1163,11 @@ int cmCTest::RunTest(std::vector argv, *output = ""; } + if (modifyEnv) + { + origEnv = cmSystemTools::AppendEnv(environment); + } + cmsysProcess* cp = cmsysProcess_New(); cmsysProcess_SetCommand(cp, &*argv.begin()); cmCTestLog(this, DEBUG, "Command is: " << argv[0] << std::endl); @@ -1202,9 +1207,17 @@ int cmCTest::RunTest(std::vector argv, if(result == cmsysProcess_State_Exited) { *retVal = cmsysProcess_GetExitValue(cp); + if(*retVal != 0 && this->OutputTestOutputOnTestFailure) + { + OutputTestErrors(tempOutput); + } } else if(result == cmsysProcess_State_Exception) { + if(this->OutputTestOutputOnTestFailure) + { + OutputTestErrors(tempOutput); + } *retVal = cmsysProcess_GetExitException(cp); std::string outerr = "\n*** Exception executing: "; outerr += cmsysProcess_GetExceptionString(cp); @@ -1222,11 +1235,16 @@ int cmCTest::RunTest(std::vector argv, } cmsysProcess_Delete(cp); + if (modifyEnv) + { + cmSystemTools::RestoreEnv(origEnv); + } + return result; } //---------------------------------------------------------------------- -void cmCTest::StartXML(std::ostream& ostr) +void cmCTest::StartXML(std::ostream& ostr, bool append) { if(this->CurrentTag.empty()) { @@ -1244,8 +1262,9 @@ void cmCTest::StartXML(std::ostream& ostr) << "GetCTestConfiguration("BuildName") << "\"\n\tBuildStamp=\"" << this->CurrentTag << "-" << this->GetTestModelString() << "\"\n\tName=\"" - << this->GetCTestConfiguration("Site") << "\"\n\tGenerator=\"ctest" - << cmVersion::GetCMakeVersion() << "\"" + << this->GetCTestConfiguration("Site") << "\"\n\tGenerator=\"ctest-" + << cmVersion::GetCMakeVersion() << "\"\n" + << (append? "\tAppend=\"true\"\n":"") << "\tOSName=\"" << info.GetOSName() << "\"\n" << "\tHostname=\"" << info.GetHostname() << "\"\n" << "\tOSRelease=\"" << info.GetOSRelease() << "\"\n" @@ -1266,8 +1285,55 @@ void cmCTest::StartXML(std::ostream& ostr) << "\tProcessorClockFrequency=\"" << info.GetProcessorClockFrequency() << "\"\n" << ">" << std::endl; + this->AddSiteProperties(ostr); +} + +//---------------------------------------------------------------------- +void cmCTest::AddSiteProperties(std::ostream& ostr) +{ + cmCTestScriptHandler* ch = + static_cast(this->GetHandler("script")); + cmake* cm = ch->GetCMake(); + // if no CMake then this is the old style script and props like + // this will not work anyway. + if(!cm) + { + return; + } + // This code should go when cdash is changed to use labels only + const char* subproject = cm->GetProperty("SubProject", cmProperty::GLOBAL); + if(subproject) + { + ostr << "\n"; + const char* labels = + ch->GetCMake()->GetProperty("SubProjectLabels", cmProperty::GLOBAL); + if(labels) + { + ostr << " \n"; + std::string l = labels; + std::vector args; + cmSystemTools::ExpandListArgument(l, args); + for(std::vector::iterator i = args.begin(); + i != args.end(); ++i) + { + ostr << " \n"; + } + ostr << " \n"; + } + ostr << "\n"; + } + + // This code should stay when cdash only does label based sub-projects + const char* label = cm->GetProperty("Label", cmProperty::GLOBAL); + if(label) + { + ostr << "\n"; + ostr << " \n"; + ostr << "\n"; + } } + //---------------------------------------------------------------------- void cmCTest::EndXML(std::ostream& ostr) { @@ -1280,22 +1346,23 @@ int cmCTest::GenerateCTestNotesOutput(std::ostream& os, { cmCTest::VectorOfStrings::const_iterator it; os << "\n" - << " \"?>\n" - << "GetCTestConfiguration("BuildName") - << "\" BuildStamp=\"" - << this->CurrentTag << "-" << this->GetTestModelString() << "\" Name=\"" - << this->GetCTestConfiguration("Site") << "\" Generator=\"ctest" - << cmVersion::GetCMakeVersion() - << "\">\n" - << "" << std::endl; + << "GetCTestConfiguration("BuildName") + << "\" BuildStamp=\"" + << this->CurrentTag << "-" << this->GetTestModelString() << "\" Name=\"" + << this->GetCTestConfiguration("Site") << "\" Generator=\"ctest" + << cmVersion::GetCMakeVersion() + << "\">\n"; + this->AddSiteProperties(os); + os << "" << std::endl; for ( it = files.begin(); it != files.end(); it ++ ) { cmCTestLog(this, OUTPUT, "\tAdd file: " << it->c_str() << std::endl); std::string note_time = this->CurrentTime(); - os << "MakeXMLSafe(it->c_str()) << "\">\n" + os << "\n" << "\n" << "" << note_time << "\n" << "" << std::endl; @@ -1305,7 +1372,7 @@ int cmCTest::GenerateCTestNotesOutput(std::ostream& os, std::string line; while ( cmSystemTools::GetLineFromStream(ifs, line) ) { - os << this->MakeXMLSafe(line) << std::endl; + os << cmXMLSafe(line) << std::endl; } ifs.close(); } @@ -1373,7 +1440,7 @@ bool cmCTest::SubmitExtraFiles(const std::vector &files) << std::endl;); return false; } - this->AddSubmitFile(it->c_str()); + this->AddSubmitFile(PartExtraFiles, it->c_str()); } return true; } @@ -1616,11 +1683,7 @@ bool cmCTest::AddTestsForDashboardType(std::string &targ) bool cmCTest::CheckArgument(const std::string& arg, const char* varg1, const char* varg2) { - if ( varg1 && arg == varg1 || varg2 && arg == varg2 ) - { - return true; - } - return false; + return (varg1 && arg == varg1) || (varg2 && arg == varg2); } @@ -1631,10 +1694,21 @@ void cmCTest::HandleCommandLineArguments(size_t &i, std::vector &args) { std::string arg = args[i]; - if(this->CheckArgument(arg, "--ctest-config") && i < args.size() - 1) + + if(this->CheckArgument(arg, "-F")) + { + this->Failover = true; + } + if(this->CheckArgument(arg, "-j", "--parallel") && i < args.size() - 1) { i++; - this->CTestConfigFile= args[i]; + int plevel = atoi(args[i].c_str()); + this->SetParallelLevel(plevel); + } + else if(arg.find("-j") == 0) + { + int plevel = atoi(arg.substr(2).c_str()); + this->SetParallelLevel(plevel); } if(this->CheckArgument(arg, "-C", "--build-config") && @@ -1658,6 +1732,10 @@ void cmCTest::HandleCommandLineArguments(size_t &i, { this->ShowLineNumbers = true; } + if(this->CheckArgument(arg, "--no-label-summary")) + { + this->LabelSummary = false; + } if(this->CheckArgument(arg, "-Q", "--quiet")) { this->Quiet = true; @@ -1666,11 +1744,19 @@ void cmCTest::HandleCommandLineArguments(size_t &i, { this->Verbose = true; } + if(this->CheckArgument(arg, "-B")) + { + this->BatchJobs = true; + } if(this->CheckArgument(arg, "-VV", "--extra-verbose")) { this->ExtraVerbose = true; this->Verbose = true; } + if(this->CheckArgument(arg, "--output-on-failure")) + { + this->OutputTestOutputOnTestFailure = true; + } if(this->CheckArgument(arg, "-N", "--show-only")) { @@ -1691,6 +1777,11 @@ void cmCTest::HandleCommandLineArguments(size_t &i, { this->ForceNewCTestProcess = true; } + if(this->CheckArgument(arg, "-W", "--max-width") && i < args.size() - 1) + { + i++; + this->MaxTestNameWidth = atoi(args[i].c_str()); + } if(this->CheckArgument(arg, "--interactive-debug-mode") && i < args.size() - 1 ) { @@ -1743,6 +1834,22 @@ void cmCTest::HandleCommandLineArguments(size_t &i, this->GetHandler("memcheck")-> SetPersistentOption("IncludeRegularExpression", args[i].c_str()); } + if(this->CheckArgument(arg, "-L", "--label-regex") && i < args.size() - 1) + { + i++; + this->GetHandler("test")-> + SetPersistentOption("LabelRegularExpression", args[i].c_str()); + this->GetHandler("memcheck")-> + SetPersistentOption("LabelRegularExpression", args[i].c_str()); + } + if(this->CheckArgument(arg, "-LE", "--label-exclude") && i < args.size() - 1) + { + i++; + this->GetHandler("test")-> + SetPersistentOption("ExcludeLabelRegularExpression", args[i].c_str()); + this->GetHandler("memcheck")-> + SetPersistentOption("ExcludeLabelRegularExpression", args[i].c_str()); + } if(this->CheckArgument(arg, "-E", "--exclude-regex") && i < args.size() - 1) @@ -1944,6 +2051,11 @@ int cmCTest::Run(std::vector &args, std::string* output) #ifdef CMAKE_BUILD_WITH_CMAKE cmDynamicLoader::FlushCache(); #endif + if(retv != 0) + { + cmCTestLog(this, DEBUG, "build and test failing returing: " << retv + << std::endl); + } return retv; } @@ -1968,9 +2080,17 @@ int cmCTest::Run(std::vector &args, std::string* output) } this->GetHandler("script")->SetVerbose(this->Verbose); res = this->GetHandler("script")->ProcessHandler(); + if(res != 0) + { + cmCTestLog(this, DEBUG, "running script failing returning: " << res + << std::endl); + } + } else { + // What is this? -V seems to be the same as -VV, + // and Verbose is always on in this case this->ExtraVerbose = this->Verbose; this->Verbose = true; cmCTest::t_TestingHandlers::iterator it; @@ -1994,6 +2114,11 @@ int cmCTest::Run(std::vector &args, std::string* output) } this->Finalize(); } + if(res != 0) + { + cmCTestLog(this, DEBUG, "Running a test(s) failed returning : " << res + << std::endl); + } return res; } @@ -2277,6 +2402,12 @@ bool cmCTest::GetShowOnly() return this->ShowOnly; } +//---------------------------------------------------------------------- +int cmCTest::GetMaxTestNameWidth() const +{ + return this->MaxTestNameWidth; +} + //---------------------------------------------------------------------- void cmCTest::SetProduceXML(bool v) { @@ -2311,9 +2442,9 @@ void cmCTest::SetSpecificTrack(const char* track) } //---------------------------------------------------------------------- -void cmCTest::AddSubmitFile(const char* name) +void cmCTest::AddSubmitFile(Part part, const char* name) { - this->SubmitFiles.insert(name); + this->Parts[part].SubmitFiles.push_back(name); } //---------------------------------------------------------------------- @@ -2516,6 +2647,13 @@ static const char* cmCTestStringLogType[] = (stream) << std::endl << file << ":" << line << " "; \ } +void cmCTest::InitStreams() +{ + // By default we write output to the process output streams. + this->StreamOut = &std::cout; + this->StreamErr = &std::cerr; +} + void cmCTest::Log(int logType, const char* file, int line, const char* msg) { if ( !msg || !*msg ) @@ -2554,47 +2692,49 @@ void cmCTest::Log(int logType, const char* file, int line, const char* msg) } if ( !this->Quiet ) { + std::ostream& out = *this->StreamOut; + std::ostream& err = *this->StreamErr; switch ( logType ) { case DEBUG: if ( this->Debug ) { - cmCTestLogOutputFileLine(std::cout); - std::cout << msg; - std::cout.flush(); + cmCTestLogOutputFileLine(out); + out << msg; + out.flush(); } break; case OUTPUT: case HANDLER_OUTPUT: if ( this->Debug || this->Verbose ) { - cmCTestLogOutputFileLine(std::cout); - std::cout << msg; - std::cout.flush(); + cmCTestLogOutputFileLine(out); + out << msg; + out.flush(); } break; case HANDLER_VERBOSE_OUTPUT: if ( this->Debug || this->ExtraVerbose ) { - cmCTestLogOutputFileLine(std::cout); - std::cout << msg; - std::cout.flush(); + cmCTestLogOutputFileLine(out); + out << msg; + out.flush(); } break; case WARNING: - cmCTestLogOutputFileLine(std::cerr); - std::cerr << msg; - std::cerr.flush(); + cmCTestLogOutputFileLine(err); + err << msg; + err.flush(); break; case ERROR_MESSAGE: - cmCTestLogOutputFileLine(std::cerr); - std::cerr << msg; - std::cerr.flush(); + cmCTestLogOutputFileLine(err); + err << msg; + err.flush(); cmSystemTools::SetErrorOccured(); break; default: - cmCTestLogOutputFileLine(std::cout); - std::cout << msg; - std::cout.flush(); + cmCTestLogOutputFileLine(out); + out << msg; + out.flush(); } } } @@ -2612,3 +2752,15 @@ double cmCTest::GetRemainingTimeAllowed() return ch->GetRemainingTimeAllowed(); } + +//---------------------------------------------------------------------- +void cmCTest::OutputTestErrors(std::vector const &process_output) +{ + std::string test_outputs("\n*** Test Failed:\n"); + if(process_output.size()) + { + test_outputs.append(&*process_output.begin(), process_output.size()); + } + cmCTestLog(this, HANDLER_OUTPUT, test_outputs << std::endl << std::flush); +} + diff --git a/Source/cmCTest.h b/Source/cmCTest.h index 022859fb9..f401c5501 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCTest.h,v $ - Language: C++ - Date: $Date: 2008-02-03 13:57:41 $ - Version: $Revision: 1.100 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCTest_h #define cmCTest_h @@ -27,6 +22,7 @@ class cmMakefile; class cmCTestGenericHandler; class cmGeneratedFileStream; class cmCTestCommand; +class cmCTestScriptHandler; #define cmCTestLog(ctSelf, logType, msg) \ do { \ @@ -48,7 +44,46 @@ class cmCTestCommand; class cmCTest { + friend class cmCTestRunTest; + friend class cmCTestMultiProcessHandler; public: + /** Enumerate parts of the testing and submission process. */ + enum Part + { + PartStart, + PartUpdate, + PartConfigure, + PartBuild, + PartTest, + PartCoverage, + PartMemCheck, + PartSubmit, + PartNotes, + PartExtraFiles, + PartCount // Update names in constructor when adding a part + }; + + /** Representation of one part. */ + struct PartInfo + { + PartInfo(): Enabled(false) {} + + void SetName(const char* name) { this->Name = name; } + const char* GetName() const { return this->Name.c_str(); } + + void Enable() { this->Enabled = true; } + operator bool() const { return this->Enabled; } + + std::vector SubmitFiles; + private: + bool Enabled; + std::string Name; + }; + + /** Get a testing part id from its string name. Returns PartCount + if the string does not name a valid part. */ + Part GetPartFromName(const char* name); + typedef std::vector VectorOfStrings; typedef std::set SetOfStrings; @@ -95,12 +130,15 @@ public: std::string const& GetConfigType(); double GetTimeOut() { return this->TimeOut; } void SetTimeOut(double t) { this->TimeOut = t; } + // how many test to run at the same time + int GetParallelLevel() { return this->ParallelLevel; } + void SetParallelLevel(int); /** * Check if CTest file exists */ bool CTestFileExists(const std::string& filename); - bool AddIfExists(SetOfStrings& files, const char* file); + bool AddIfExists(Part part, const char* file); /** * Set the cmake test @@ -150,13 +188,15 @@ public: cmGeneratedFileStream& stream, bool compress = false); - ///! Convert string to something that is XML safe - static std::string MakeXMLSafe(const std::string&); - ///! Should we only show what we would do? bool GetShowOnly(); - /** + + ///! The max output width + int GetMaxTestNameWidth() const; + void SetMaxTestNameWidth(int w) { this->MaxTestNameWidth = w;} + + /** * Run a single executable command and put the stdout and stderr * in output. * @@ -181,7 +221,7 @@ public: int* retVal = 0, const char* dir = 0, double timeout = 0.0); //! Start CTest XML output file - void StartXML(std::ostream& ostr); + void StartXML(std::ostream& ostr, bool append); //! End CTest XML output file void EndXML(std::ostream& ostr); @@ -230,9 +270,12 @@ public: void SetProduceXML(bool v); //! Run command specialized for tests. Returns process status and retVal is - // return value or exception. + // return value or exception. If environment is non-null, it is used to set + // environment variables prior to running the test. After running the test, + // environment variables are restored to their previous values. int RunTest(std::vector args, std::string* output, int *retVal, - std::ostream* logfile, double testTimeOut); + std::ostream* logfile, double testTimeOut, + std::vector* environment); /** * Execute handler and return its result. If the handler fails, it returns @@ -255,6 +298,9 @@ public: //! Make string safe to be send as an URL static std::string MakeURLSafe(const std::string&); + /** Decode a URL to the original string. */ + static std::string DecodeURL(const std::string&); + //! Should ctect configuration be updated. When using new style ctest // script, this should be true. void SetSuppressUpdatingCTestConfiguration(bool val) @@ -297,8 +343,10 @@ public: int GetDartVersion() { return this->DartVersion; } //! Add file to be submitted - void AddSubmitFile(const char* name); - SetOfStrings* GetSubmitFiles() { return &this->SubmitFiles; } + void AddSubmitFile(Part part, const char* name); + std::vector const& GetSubmitFiles(Part part) + { return this->Parts[part].SubmitFiles; } + void ClearSubmitFiles(Part part) { this->Parts[part].SubmitFiles.clear(); } //! Read the custom configuration files and apply them to the current ctest int ReadCustomConfigurationFileTree(const char* dir, cmMakefile* mf); @@ -310,11 +358,29 @@ public: void SetSpecificTrack(const char* track); const char* GetSpecificTrack(); + void SetFailover(bool failover) { this->Failover = failover; } + bool GetFailover() { return this->Failover; } + + void SetBatchJobs(bool batch = true) { this->BatchJobs = batch; } + bool GetBatchJobs() { return this->BatchJobs; } + + bool GetVerbose() { return this->Verbose;} + bool GetExtraVerbose() { return this->ExtraVerbose;} + + /** Direct process output to given streams. */ + void SetStreams(std::ostream* out, std::ostream* err) + { this->StreamOut = out; this->StreamErr = err; } + void AddSiteProperties(std::ostream& ); + bool GetLabelSummary() { return this->LabelSummary;} private: std::string ConfigType; bool Verbose; bool ExtraVerbose; bool ProduceXML; + bool LabelSummary; + + bool Failover; + bool BatchJobs; bool ForceNewCTestProcess; @@ -328,28 +394,19 @@ private: bool ShowOnly; - enum { - FIRST_TEST = 0, - UPDATE_TEST = 1, - START_TEST = 2, - CONFIGURE_TEST = 3, - BUILD_TEST = 4, - TEST_TEST = 5, - COVERAGE_TEST = 6, - MEMCHECK_TEST = 7, - SUBMIT_TEST = 8, - NOTES_TEST = 9, - ALL_TEST = 10, - LAST_TEST = 11 - }; - //! Map of configuration properties typedef std::map CTestConfigurationMap; std::string CTestConfigFile; + // TODO: The ctest configuration should be a hierarchy of + // configuration option sources: command-line, script, ini file. + // Then the ini file can get re-loaded whenever it changes without + // affecting any higher-precedence settings. CTestConfigurationMap CTestConfiguration; CTestConfigurationMap CTestConfigurationOverwrites; - int Tests[LAST_TEST]; + PartInfo Parts[PartCount]; + typedef std::map PartMapType; + PartMapType PartMap; std::string CurrentTag; bool TomorrowTag; @@ -359,6 +416,10 @@ private: double TimeOut; + int MaxTestNameWidth; + + int ParallelLevel; + int CompatibilityMode; // information for the --build-and-test options @@ -375,6 +436,10 @@ private: bool CompressXMLFiles; + void InitStreams(); + std::ostream* StreamOut; + std::ostream* StreamErr; + void BlockTestErrorDiagnostics(); @@ -404,6 +469,9 @@ private: bool CheckArgument(const std::string& arg, const char* varg1, const char* varg2 = 0); + //! Output errors from a test + void OutputTestErrors(std::vector const &process_output); + bool SuppressUpdatingCTestConfiguration; bool Debug; @@ -412,13 +480,14 @@ private: int DartVersion; - std::set SubmitFiles; std::vector InitialCommandLineArguments; int SubmitIndex; cmGeneratedFileStream* OutputLogFile; int OutputLogFileLastTag; + + bool OutputTestOutputOnTestFailure; }; class cmCTestLogWrite diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index 9972ff9bb..e1a107654 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCacheManager.cxx,v $ - Language: C++ - Date: $Date: 2009-02-10 22:28:08 $ - Version: $Revision: 1.100.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCacheManager.h" #include "cmSystemTools.h" @@ -42,10 +37,11 @@ const char* cmCacheManagerTypes[] = 0 }; -cmCacheManager::cmCacheManager() +cmCacheManager::cmCacheManager(cmake* cm) { this->CacheMajorVersion = 0; this->CacheMinorVersion = 0; + this->CMakeInstance = cm; } const char* cmCacheManager::TypeToString(cmCacheManager::CacheEntryType type) @@ -71,6 +67,18 @@ cmCacheManager::CacheEntryType cmCacheManager::StringToType(const char* s) return STRING; } +bool cmCacheManager::IsType(const char* s) +{ + for(int i=0; cmCacheManagerTypes[i]; ++i) + { + if(strcmp(s, cmCacheManagerTypes[i]) == 0) + { + return true; + } + } + return false; +} + bool cmCacheManager::LoadCache(cmMakefile* mf) { return this->LoadCache(mf->GetHomeOutputDirectory()); @@ -212,7 +220,9 @@ bool cmCacheManager::LoadCache(const char* path, while(fin) { // Format is key:type=value + std::string helpString; CacheEntry e; + e.Properties.SetCMakeInstance(this->CMakeInstance); cmSystemTools::GetLineFromStream(fin, buffer); realbuffer = buffer.c_str(); while(*realbuffer != '0' && @@ -232,12 +242,12 @@ bool cmCacheManager::LoadCache(const char* path, { if ((realbuffer[2] == '\\') && (realbuffer[3]=='n')) { - e.Properties["HELPSTRING"] += "\n"; - e.Properties["HELPSTRING"] += &realbuffer[4]; + helpString += "\n"; + helpString += &realbuffer[4]; } else { - e.Properties["HELPSTRING"] += &realbuffer[2]; + helpString += &realbuffer[2]; } cmSystemTools::GetLineFromStream(fin, buffer); realbuffer = buffer.c_str(); @@ -246,6 +256,7 @@ bool cmCacheManager::LoadCache(const char* path, continue; } } + e.SetProperty("HELPSTRING", helpString.c_str()); if(cmCacheManager::ParseEntry(realbuffer, entryKey, e.Value, e.Type)) { if ( excludes.find(entryKey) == excludes.end() ) @@ -263,56 +274,15 @@ bool cmCacheManager::LoadCache(const char* path, if (!internal) { e.Type = INTERNAL; - e.Properties["HELPSTRING"] = "DO NOT EDIT, "; - e.Properties["HELPSTRING"] += entryKey; - e.Properties["HELPSTRING"] += " loaded from external file. " + helpString = "DO NOT EDIT, "; + helpString += entryKey; + helpString += " loaded from external file. " "To change this value edit this file: "; - e.Properties["HELPSTRING"] += path; - e.Properties["HELPSTRING"] += "/CMakeCache.txt" ; - } - if ( e.Type == cmCacheManager::INTERNAL && - (entryKey.size() > strlen("-ADVANCED")) && - strcmp(entryKey.c_str() + (entryKey.size() - - strlen("-ADVANCED")), "-ADVANCED") == 0 ) - { - std::string value = e.Value; - std::string akey = - entryKey.substr(0, (entryKey.size() - strlen("-ADVANCED"))); - cmCacheManager::CacheIterator it = - this->GetCacheIterator(akey.c_str()); - if ( it.IsAtEnd() ) - { - e.Type = cmCacheManager::UNINITIALIZED; - this->Cache[akey] = e; - } - if (!it.Find(akey.c_str())) - { - cmSystemTools::Error("Internal CMake error when reading cache"); - } - it.SetProperty("ADVANCED", value.c_str()); + helpString += path; + helpString += "/CMakeCache.txt" ; + e.SetProperty("HELPSTRING", helpString.c_str()); } - else if ( e.Type == cmCacheManager::INTERNAL && - (entryKey.size() > strlen("-MODIFIED")) && - strcmp(entryKey.c_str() + (entryKey.size() - - strlen("-MODIFIED")), "-MODIFIED") == 0 ) - { - std::string value = e.Value; - std::string akey = - entryKey.substr(0, (entryKey.size() - strlen("-MODIFIED"))); - cmCacheManager::CacheIterator it = - this->GetCacheIterator(akey.c_str()); - if ( it.IsAtEnd() ) - { - e.Type = cmCacheManager::UNINITIALIZED; - this->Cache[akey] = e; - } - if (!it.Find(akey.c_str())) - { - cmSystemTools::Error("Internal CMake error when reading cache"); - } - it.SetProperty("MODIFIED", value.c_str()); - } - else + if(!this->ReadPropertyEntry(entryKey, e)) { e.Initialized = true; this->Cache[entryKey] = e; @@ -379,6 +349,77 @@ bool cmCacheManager::LoadCache(const char* path, return true; } +//---------------------------------------------------------------------------- +const char* cmCacheManager::PersistentProperties[] = +{ + "ADVANCED", + "MODIFIED", + "STRINGS", + 0 +}; + +//---------------------------------------------------------------------------- +bool cmCacheManager::ReadPropertyEntry(std::string const& entryKey, + CacheEntry& e) +{ + // All property entries are internal. + if(e.Type != cmCacheManager::INTERNAL) + { + return false; + } + + const char* end = entryKey.c_str() + entryKey.size(); + for(const char** p = this->PersistentProperties; *p; ++p) + { + std::string::size_type plen = strlen(*p) + 1; + if(entryKey.size() > plen && *(end-plen) == '-' && + strcmp(end-plen+1, *p) == 0) + { + std::string key = entryKey.substr(0, entryKey.size() - plen); + cmCacheManager::CacheIterator it = this->GetCacheIterator(key.c_str()); + if(it.IsAtEnd()) + { + // Create an entry and store the property. + CacheEntry& ne = this->Cache[key]; + ne.Properties.SetCMakeInstance(this->CMakeInstance); + ne.Type = cmCacheManager::UNINITIALIZED; + ne.SetProperty(*p, e.Value.c_str()); + } + else + { + // Store this property on its entry. + it.SetProperty(*p, e.Value.c_str()); + } + return true; + } + } + return false; +} + +//---------------------------------------------------------------------------- +void cmCacheManager::WritePropertyEntries(std::ostream& os, + CacheIterator const& i) +{ + for(const char** p = this->PersistentProperties; *p; ++p) + { + if(const char* value = i.GetProperty(*p)) + { + std::string helpstring = *p; + helpstring += " property for variable: "; + helpstring += i.GetName(); + cmCacheManager::OutputHelpString(os, helpstring); + + std::string key = i.GetName(); + key += "-"; + key += *p; + this->OutputKey(os, key); + os << ":INTERNAL="; + this->OutputValue(os, value); + os << "\n"; + } + } +} + bool cmCacheManager::SaveCache(cmMakefile* mf) { return this->SaveCache(mf->GetHomeOutputDirectory()); @@ -410,10 +451,9 @@ bool cmCacheManager::SaveCache(const char* path) this->AddCacheEntry("CMAKE_CACHE_MAJOR_VERSION", temp, "Major version of cmake used to create the " "current loaded cache", cmCacheManager::INTERNAL); - - this->AddCacheEntry("CMAKE_CACHE_RELEASE_VERSION", - cmVersion::GetReleaseVersion().c_str(), - "Major version of cmake used to create the " + sprintf(temp, "%d", cmVersion::GetPatchVersion()); + this->AddCacheEntry("CMAKE_CACHE_PATCH_VERSION", temp, + "Patch version of cmake used to create the " "current loaded cache", cmCacheManager::INTERNAL); // Let us store the current working directory so that if somebody @@ -422,11 +462,13 @@ bool cmCacheManager::SaveCache(const char* path) if ( currentcwd[0] >= 'A' && currentcwd[0] <= 'Z' && currentcwd[1] == ':' ) { - currentcwd[0] = currentcwd[0] - 'A' + 'a'; + // Cast added to avoid compiler warning. Cast is ok because + // value is guaranteed to fit in char by the above if... + currentcwd[0] = static_cast(currentcwd[0] - 'A' + 'a'); } cmSystemTools::ConvertToUnixSlashes(currentcwd); this->AddCacheEntry("CMAKE_CACHEFILE_DIR", currentcwd.c_str(), - "This is the directory where this CMakeCahe.txt" + "This is the directory where this CMakeCache.txt" " was created", cmCacheManager::INTERNAL); fout << "# This is the CMakeCache file.\n" @@ -473,42 +515,17 @@ bool cmCacheManager::SaveCache(const char* path) else if(t != INTERNAL) { // Format is key:type=value - std::map::const_iterator it = - ce.Properties.find("HELPSTRING"); - if ( it == ce.Properties.end() ) - { - cmCacheManager::OutputHelpString(fout, "Missing description"); - } - else - { - cmCacheManager::OutputHelpString(fout, it->second); - } - std::string key; - // support : in key name by double quoting - if((*i).first.find(':') != std::string::npos || - (*i).first.find("//") == 0) - { - key = "\""; - key += i->first; - key += "\""; - } - else + if(const char* help = ce.GetProperty("HELPSTRING")) { - key = i->first; - } - fout << key.c_str() << ":" - << cmCacheManagerTypes[t] << "="; - // if value has trailing space or tab, enclose it in single quotes - if (ce.Value.size() && - (ce.Value[ce.Value.size() - 1] == ' ' || - ce.Value[ce.Value.size() - 1] == '\t')) - { - fout << '\'' << ce.Value << '\''; + cmCacheManager::OutputHelpString(fout, help); } else { - fout << ce.Value; + cmCacheManager::OutputHelpString(fout, "Missing description"); } + this->OutputKey(fout, i->first); + fout << ":" << cmCacheManagerTypes[t] << "="; + this->OutputValue(fout, ce.Value); fout << "\n\n"; } } @@ -528,104 +545,17 @@ bool cmCacheManager::SaveCache(const char* path) } CacheEntryType t = i.GetType(); - bool advanced = i.PropertyExists("ADVANCED"); - if ( advanced ) - { - // Format is key:type=value - std::string key; - std::string rkey = i.GetName(); - std::string helpstring; - // If this is advanced variable, we have to do some magic for - // backward compatibility - helpstring = "Advanced flag for variable: "; - helpstring += i.GetName(); - rkey += "-ADVANCED"; - cmCacheManager::OutputHelpString(fout, helpstring.c_str()); - // support : in key name by double quoting - if(rkey.find(':') != std::string::npos || - rkey.find("//") == 0) - { - key = "\""; - key += rkey; - key += "\""; - } - else - { - key = rkey; - } - fout << key.c_str() << ":INTERNAL=" - << (i.GetPropertyAsBool("ADVANCED") ? "1" : "0") << "\n"; - } - bool modified = i.PropertyExists("MODIFIED"); - if ( modified ) - { - // Format is key:type=value - std::string key; - std::string rkey = i.GetName(); - std::string helpstring; - // If this is advanced variable, we have to do some magic for - // backward compatibility - helpstring = "Modified flag for variable: "; - helpstring += i.GetName(); - rkey += "-MODIFIED"; - cmCacheManager::OutputHelpString(fout, helpstring.c_str()); - // support : in key name by double quoting - if(rkey.find(':') != std::string::npos || - rkey.find("//") == 0) - { - key = "\""; - key += rkey; - key += "\""; - } - else - { - key = rkey; - } - fout << key.c_str() << ":INTERNAL=" - << (i.GetPropertyAsBool("MODIFIED") ? "1" : "0") << "\n"; - } + this->WritePropertyEntries(fout, i); if(t == cmCacheManager::INTERNAL) { // Format is key:type=value - std::string key; - std::string rkey = i.GetName(); - std::string helpstring; - const char* hs = i.GetProperty("HELPSTRING"); - if ( hs ) - { - helpstring = i.GetProperty("HELPSTRING"); - } - else - { - helpstring = ""; - } - cmCacheManager::OutputHelpString(fout, helpstring.c_str()); - // support : in key name by double quoting - if(rkey.find(':') != std::string::npos || - rkey.find("//") == 0) - { - key = "\""; - key += rkey; - key += "\""; - } - else - { - key = rkey; - } - fout << key.c_str() << ":" - << cmCacheManagerTypes[t] << "="; - // if value has trailing space or tab, enclose it in single quotes - std::string value = i.GetValue(); - if (value.size() && - (value[value.size() - 1] == ' ' || - value[value.size() - 1] == '\t')) - { - fout << '\'' << value << '\''; - } - else + if(const char* help = i.GetProperty("HELPSTRING")) { - fout << value; + this->OutputHelpString(fout, help); } + this->OutputKey(fout, i.GetName()); + fout << ":" << cmCacheManagerTypes[t] << "="; + this->OutputValue(fout, i.GetValue()); fout << "\n"; } } @@ -678,7 +608,30 @@ bool cmCacheManager::DeleteCache(const char* path) return true; } -void cmCacheManager::OutputHelpString(std::ofstream& fout, +void cmCacheManager::OutputKey(std::ostream& fout, std::string const& key) +{ + // support : in key name by double quoting + const char* q = (key.find(':') != key.npos || + key.find("//") == 0)? "\"" : ""; + fout << q << key << q; +} + +void cmCacheManager::OutputValue(std::ostream& fout, std::string const& value) +{ + // if value has trailing space or tab, enclose it in single quotes + if (value.size() && + (value[value.size() - 1] == ' ' || + value[value.size() - 1] == '\t')) + { + fout << '\'' << value << '\''; + } + else + { + fout << value; + } +} + +void cmCacheManager::OutputHelpString(std::ostream& fout, const std::string& helpString) { std::string::size_type end = helpString.size(); @@ -771,6 +724,7 @@ void cmCacheManager::AddCacheEntry(const char* key, CacheEntryType type) { CacheEntry& e = this->Cache[key]; + e.Properties.SetCMakeInstance(this->CMakeInstance); if ( value ) { e.Value = value; @@ -804,31 +758,11 @@ void cmCacheManager::AddCacheEntry(const char* key, cmSystemTools::ConvertToUnixSlashes(e.Value); } } - if ( helpString ) - { - e.Properties["HELPSTRING"] = helpString; - } - else - { - e.Properties["HELPSTRING"] = - "(This variable does not exist and should not be used)"; - } + e.SetProperty("HELPSTRING", helpString? helpString : + "(This variable does not exist and should not be used)"); this->Cache[key] = e; } -void cmCacheManager::AddCacheEntry(const char* key, bool v, - const char* helpString) -{ - if(v) - { - this->AddCacheEntry(key, "ON", helpString, cmCacheManager::BOOL); - } - else - { - this->AddCacheEntry(key, "OFF", helpString, cmCacheManager::BOOL); - } -} - bool cmCacheManager::CacheIterator::IsAtEnd() const { return this->Position == this->Container.Cache.end(); @@ -871,121 +805,121 @@ void cmCacheManager::CacheIterator::SetValue(const char* value) } } -const char* cmCacheManager::CacheIterator::GetProperty( - const char* property) const +//---------------------------------------------------------------------------- +bool cmCacheManager::CacheIterator::GetValueAsBool() const { - // make sure it is not at the end - if (this->IsAtEnd()) - { - return 0; - } + return cmSystemTools::IsOn(this->GetEntry().Value.c_str()); +} - if ( !strcmp(property, "TYPE") || !strcmp(property, "VALUE") ) +//---------------------------------------------------------------------------- +const char* +cmCacheManager::CacheEntry::GetProperty(const char* prop) const +{ + if(strcmp(prop, "TYPE") == 0) { - cmSystemTools::Error("Property \"", property, - "\" cannot be accessed through the GetProperty()"); - return 0; + return cmCacheManagerTypes[this->Type]; } - const CacheEntry* ent = &this->GetEntry(); - std::map::const_iterator it = - ent->Properties.find(property); - if ( it == ent->Properties.end() ) + else if(strcmp(prop, "VALUE") == 0) { - return 0; + return this->Value.c_str(); } - return it->second.c_str(); + bool c = false; + return + this->Properties.GetPropertyValue(prop, cmProperty::CACHE, c); } -void cmCacheManager::CacheIterator::SetProperty(const char* p, const char* v) +//---------------------------------------------------------------------------- +void cmCacheManager::CacheEntry::SetProperty(const char* prop, + const char* value) { - // make sure it is not at the end - if (this->IsAtEnd()) + if(strcmp(prop, "TYPE") == 0) { - return; + this->Type = cmCacheManager::StringToType(value? value : "STRING"); } - - if ( !strcmp(p, "TYPE") || !strcmp(p, "VALUE") ) + else if(strcmp(prop, "VALUE") == 0) { - cmSystemTools::Error("Property \"", p, - "\" cannot be accessed through the SetProperty()"); - return; + this->Value = value? value : ""; + } + else + { + this->Properties.SetProperty(prop, value, cmProperty::CACHE); } - CacheEntry* ent = &this->GetEntry(); - ent->Properties[p] = v; -} - - -bool cmCacheManager::CacheIterator::GetValueAsBool() const -{ - return cmSystemTools::IsOn(this->GetEntry().Value.c_str()); } -bool cmCacheManager::CacheIterator::GetPropertyAsBool( - const char* property) const +//---------------------------------------------------------------------------- +void cmCacheManager::CacheEntry::AppendProperty(const char* prop, + const char* value) { - // make sure it is not at the end - if (this->IsAtEnd()) + if(strcmp(prop, "TYPE") == 0) { - return false; + this->Type = cmCacheManager::StringToType(value? value : "STRING"); } - - if ( !strcmp(property, "TYPE") || !strcmp(property, "VALUE") ) + else if(strcmp(prop, "VALUE") == 0) { - cmSystemTools::Error("Property \"", property, - "\" cannot be accessed through the GetPropertyAsBool()"); - return false; + if(value) + { + if(!this->Value.empty() && *value) + { + this->Value += ";"; + } + this->Value += value; + } } - const CacheEntry* ent = &this->GetEntry(); - std::map::const_iterator it = - ent->Properties.find(property); - if ( it == ent->Properties.end() ) + else { - return false; + this->Properties.AppendProperty(prop, value, cmProperty::CACHE); } - return cmSystemTools::IsOn(it->second.c_str()); } - -void cmCacheManager::CacheIterator::SetProperty(const char* p, bool v) +//---------------------------------------------------------------------------- +const char* cmCacheManager::CacheIterator::GetProperty(const char* prop) const { - // make sure it is not at the end - if (this->IsAtEnd()) + if(!this->IsAtEnd()) { - return; + return this->GetEntry().GetProperty(prop); } + return 0; +} - if ( !strcmp(p, "TYPE") || !strcmp(p, "VALUE") ) +//---------------------------------------------------------------------------- +void cmCacheManager::CacheIterator::SetProperty(const char* p, const char* v) +{ + if(!this->IsAtEnd()) { - cmSystemTools::Error("Property \"", p, - "\" cannot be accessed through the SetProperty()"); - return; + this->GetEntry().SetProperty(p, v); } - CacheEntry* ent = &this->GetEntry(); - ent->Properties[p] = v ? "ON" : "OFF"; } -bool cmCacheManager::CacheIterator::PropertyExists(const char* property) const +//---------------------------------------------------------------------------- +void cmCacheManager::CacheIterator::AppendProperty(const char* p, + const char* v) { - // make sure it is not at the end - if (this->IsAtEnd()) + if(!this->IsAtEnd()) { - return false; + this->GetEntry().AppendProperty(p, v); } +} - if ( !strcmp(property, "TYPE") || !strcmp(property, "VALUE") ) - { - cmSystemTools::Error("Property \"", property, - "\" cannot be accessed through the PropertyExists()"); - return false; - } - const CacheEntry* ent = &this->GetEntry(); - std::map::const_iterator it = - ent->Properties.find(property); - if ( it == ent->Properties.end() ) +//---------------------------------------------------------------------------- +bool cmCacheManager::CacheIterator::GetPropertyAsBool(const char* prop) const +{ + if(const char* value = this->GetProperty(prop)) { - return false; + return cmSystemTools::IsOn(value); } - return true; + return false; +} + +//---------------------------------------------------------------------------- +void cmCacheManager::CacheIterator::SetProperty(const char* p, bool v) +{ + this->SetProperty(p, v ? "ON" : "OFF"); +} + +//---------------------------------------------------------------------------- +bool cmCacheManager::CacheIterator::PropertyExists(const char* prop) const +{ + return this->GetProperty(prop)? true:false; } //---------------------------------------------------------------------------- @@ -1005,3 +939,65 @@ bool cmCacheManager::NeedCacheCompatibility(int major, int minor) return (actual_compat && actual_compat <= CMake_VERSION_ENCODE(major, minor, 0)); } + +//---------------------------------------------------------------------------- +void cmCacheManager::DefineProperties(cmake *cm) +{ + cm->DefineProperty + ("ADVANCED", cmProperty::CACHE, + "True if entry should be hidden by default in GUIs.", + "This is a boolean value indicating whether the entry is considered " + "interesting only for advanced configuration. " + "The mark_as_advanced() command modifies this property." + ); + + cm->DefineProperty + ("HELPSTRING", cmProperty::CACHE, + "Help associated with entry in GUIs.", + "This string summarizes the purpose of an entry to help users set it " + "through a CMake GUI." + ); + + cm->DefineProperty + ("TYPE", cmProperty::CACHE, + "Widget type for entry in GUIs.", + "Cache entry values are always strings, but CMake GUIs present widgets " + "to help users set values. " + "The GUIs use this property as a hint to determine the widget type. " + "Valid TYPE values are:\n" + " BOOL = Boolean ON/OFF value.\n" + " PATH = Path to a directory.\n" + " FILEPATH = Path to a file.\n" + " STRING = Generic string value.\n" + " INTERNAL = Do not present in GUI at all.\n" + " STATIC = Value managed by CMake, do not change.\n" + " UNINITIALIZED = Type not yet specified.\n" + "Generally the TYPE of a cache entry should be set by the command " + "which creates it (set, option, find_library, etc.)." + ); + + cm->DefineProperty + ("MODIFIED", cmProperty::CACHE, + "Internal management property. Do not set or get.", + "This is an internal cache entry property managed by CMake to " + "track interactive user modification of entries. Ignore it." + ); + + cm->DefineProperty + ("STRINGS", cmProperty::CACHE, + "Enumerate possible STRING entry values for GUI selection.", + "For cache entries with type STRING, this enumerates a set of values. " + "CMake GUIs may use this to provide a selection widget instead of a " + "generic string entry field. " + "This is for convenience only. " + "CMake does not enforce that the value matches one of those listed." + ); + + cm->DefineProperty + ("VALUE", cmProperty::CACHE, + "Value of a cache entry.", + "This property maps to the actual value of a cache entry. " + "Setting this property always sets the value without checking, so " + "use with care." + ); +} diff --git a/Source/cmCacheManager.h b/Source/cmCacheManager.h index be9dbe817..da1496621 100644 --- a/Source/cmCacheManager.h +++ b/Source/cmCacheManager.h @@ -1,25 +1,22 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCacheManager.h,v $ - Language: C++ - Date: $Date: 2008-03-07 16:43:47 $ - Version: $Revision: 1.49 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCacheManager_h #define cmCacheManager_h #include "cmStandardIncludes.h" +#include "cmPropertyMap.h" class cmMakefile; class cmMarkAsAdvancedCommand; +class cmake; /** \class cmCacheManager * \brief Control class for cmake's cache @@ -30,7 +27,7 @@ class cmMarkAsAdvancedCommand; class cmCacheManager { public: - cmCacheManager(); + cmCacheManager(cmake* cm); class CacheIterator; friend class cmCacheManager::CacheIterator; enum CacheEntryType{ BOOL=0, PATH, FILEPATH, STRING, INTERNAL,STATIC, @@ -41,7 +38,10 @@ private: { std::string Value; CacheEntryType Type; - std::map Properties; + cmPropertyMap Properties; + const char* GetProperty(const char*) const; + void SetProperty(const char* property, const char* value); + void AppendProperty(const char* property, const char* value); bool Initialized; CacheEntry() : Value(""), Type(UNINITIALIZED), Initialized(false) {} @@ -61,6 +61,7 @@ public: bool GetPropertyAsBool(const char*) const ; bool PropertyExists(const char*) const; void SetProperty(const char* property, const char* value); + void AppendProperty(const char* property, const char* value); void SetProperty(const char* property, bool value); const char* GetValue() const { return this->GetEntry().Value.c_str(); } bool GetValueAsBool() const; @@ -100,6 +101,7 @@ public: */ static CacheEntryType StringToType(const char*); static const char* TypeToString(CacheEntryType); + static bool IsType(const char*); ///! Load a cache for given makefile. Loads from ouput home. bool LoadCache(cmMakefile*); @@ -149,14 +151,14 @@ public: unsigned int GetCacheMinorVersion() { return this->CacheMinorVersion; } bool NeedCacheCompatibility(int major, int minor); + /** Define and document CACHE entry properties. */ + static void DefineProperties(cmake *cm); + protected: ///! Add an entry into the cache void AddCacheEntry(const char* key, const char* value, const char* helpString, CacheEntryType type); - ///! Add a BOOL entry into the cache - void AddCacheEntry(const char* key, bool, const char* helpString); - ///! Get a cache entry object for a key CacheEntry *GetCacheEntry(const char *key); ///! Clean out the CMakeFiles directory if no CMakeCache.txt @@ -166,9 +168,17 @@ protected: unsigned int CacheMajorVersion; unsigned int CacheMinorVersion; private: + cmake* CMakeInstance; typedef std::map CacheEntryMap; - static void OutputHelpString(std::ofstream& fout, + static void OutputHelpString(std::ostream& fout, const std::string& helpString); + static void OutputKey(std::ostream& fout, std::string const& key); + static void OutputValue(std::ostream& fout, std::string const& value); + + static const char* PersistentProperties[]; + bool ReadPropertyEntry(std::string const& key, CacheEntry& e); + void WritePropertyEntries(std::ostream& os, CacheIterator const& i); + CacheEntryMap Cache; // Only cmake and cmMakefile should be able to add cache values // the commands should never use the cmCacheManager directly diff --git a/Source/cmCallVisualStudioMacro.cxx b/Source/cmCallVisualStudioMacro.cxx index e769acd57..0c154770d 100644 --- a/Source/cmCallVisualStudioMacro.cxx +++ b/Source/cmCallVisualStudioMacro.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCallVisualStudioMacro.cxx,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:45 $ - Version: $Revision: 1.3.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCallVisualStudioMacro.h" #include "cmSystemTools.h" diff --git a/Source/cmCallVisualStudioMacro.h b/Source/cmCallVisualStudioMacro.h index 3bfcf527c..09bddfa25 100644 --- a/Source/cmCallVisualStudioMacro.h +++ b/Source/cmCallVisualStudioMacro.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCallVisualStudioMacro.h,v $ - Language: C++ - Date: $Date: 2008-07-31 15:52:24 $ - Version: $Revision: 1.1.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCallVisualStudioMacro_h #define cmCallVisualStudioMacro_h diff --git a/Source/cmCommand.h b/Source/cmCommand.h index 89e427ff1..7817eb3c1 100644 --- a/Source/cmCommand.h +++ b/Source/cmCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommand.h,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:45 $ - Version: $Revision: 1.27.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCommand_h #define cmCommand_h @@ -87,6 +82,11 @@ public: * writing to the cache can be done. */ virtual void FinalPass() {}; + + /** + * Does this command have a final pass? Query after InitialPass. + */ + virtual bool HasFinalPass() const { return false; } /** * This is a virtual constructor for the command. diff --git a/Source/cmCommandArgumentLexer.cxx b/Source/cmCommandArgumentLexer.cxx index 4c4d2d633..13679453d 100644 --- a/Source/cmCommandArgumentLexer.cxx +++ b/Source/cmCommandArgumentLexer.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommandArgumentLexer.cxx,v $ - Language: C++ - Date: $Date: 2009-01-01 17:49:40 $ - Version: $Revision: 1.15.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmStandardIncludes.h" #line 2 "cmCommandArgumentLexer.cxx" @@ -467,22 +462,17 @@ static yyconst flex_int16_t yy_chk[53] = #define YY_RESTORE_YY_MORE_OFFSET #line 1 "cmCommandArgumentLexer.in.l" #line 2 "cmCommandArgumentLexer.in.l" -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommandArgumentLexer.cxx,v $ - Language: C++ - Date: $Date: 2009-01-01 17:49:40 $ - Version: $Revision: 1.15.2.1 $ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /* This file must be translated to C and modified to build everywhere. diff --git a/Source/cmCommandArgumentLexer.h b/Source/cmCommandArgumentLexer.h index 46856b198..828122b9f 100644 --- a/Source/cmCommandArgumentLexer.h +++ b/Source/cmCommandArgumentLexer.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommandArgumentLexer.h,v $ - Language: C++ - Date: $Date: 2009-01-01 17:49:41 $ - Version: $Revision: 1.5.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCommandArgument_yyHEADER_H #define cmCommandArgument_yyHEADER_H 1 #define cmCommandArgument_yyIN_HEADER 1 diff --git a/Source/cmCommandArgumentLexer.in.l b/Source/cmCommandArgumentLexer.in.l index eaeeb846a..d10e50d97 100644 --- a/Source/cmCommandArgumentLexer.in.l +++ b/Source/cmCommandArgumentLexer.in.l @@ -1,20 +1,15 @@ %{ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommandArgumentLexer.in.l,v $ - Language: C++ - Date: $Date: 2009-01-01 17:49:41 $ - Version: $Revision: 1.10.4.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /* This file must be translated to C and modified to build everywhere. diff --git a/Source/cmCommandArgumentParser.cxx b/Source/cmCommandArgumentParser.cxx index e1d41b88b..696a6a8c3 100644 --- a/Source/cmCommandArgumentParser.cxx +++ b/Source/cmCommandArgumentParser.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommandArgumentParser.cxx,v $ - Language: C++ - Date: $Date: 2009-01-01 17:49:41 $ - Version: $Revision: 1.13.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C @@ -124,22 +119,17 @@ /* Copy the first part of user declarations. */ #line 1 "cmCommandArgumentParser.y" -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommandArgumentParser.cxx,v $ - Language: C++ - Date: $Date: 2009-01-01 17:49:41 $ - Version: $Revision: 1.13.2.1 $ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /* This file must be translated to C and modified to build everywhere. diff --git a/Source/cmCommandArgumentParser.y b/Source/cmCommandArgumentParser.y index d144047bc..3e700c80b 100644 --- a/Source/cmCommandArgumentParser.y +++ b/Source/cmCommandArgumentParser.y @@ -1,20 +1,15 @@ %{ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommandArgumentParser.y,v $ - Language: C++ - Date: $Date: 2009-01-01 17:49:41 $ - Version: $Revision: 1.10.10.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /* This file must be translated to C and modified to build everywhere. diff --git a/Source/cmCommandArgumentParserHelper.cxx b/Source/cmCommandArgumentParserHelper.cxx index 48ea06330..ace67ec38 100644 --- a/Source/cmCommandArgumentParserHelper.cxx +++ b/Source/cmCommandArgumentParserHelper.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommandArgumentParserHelper.cxx,v $ - Language: C++ - Date: $Date: 2009-03-27 15:55:57 $ - Version: $Revision: 1.20.4.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCommandArgumentParserHelper.h" #include "cmSystemTools.h" diff --git a/Source/cmCommandArgumentParserHelper.h b/Source/cmCommandArgumentParserHelper.h index cc783e67b..62cbc80ba 100644 --- a/Source/cmCommandArgumentParserHelper.h +++ b/Source/cmCommandArgumentParserHelper.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommandArgumentParserHelper.h,v $ - Language: C++ - Date: $Date: 2009-01-01 17:49:41 $ - Version: $Revision: 1.11.4.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCommandArgumentParserHelper_h #define cmCommandArgumentParserHelper_h diff --git a/Source/cmCommandArgumentParserTokens.h b/Source/cmCommandArgumentParserTokens.h index 47a0b8e08..7fb58e2d9 100644 --- a/Source/cmCommandArgumentParserTokens.h +++ b/Source/cmCommandArgumentParserTokens.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommandArgumentParserTokens.h,v $ - Language: C++ - Date: $Date: 2009-01-01 17:49:41 $ - Version: $Revision: 1.5.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C diff --git a/Source/cmCommandArgumentsHelper.cxx b/Source/cmCommandArgumentsHelper.cxx index e23df2319..1c906a65c 100644 --- a/Source/cmCommandArgumentsHelper.cxx +++ b/Source/cmCommandArgumentsHelper.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommandArgumentsHelper.cxx,v $ - Language: C++ - Date: $Date: 2007-08-23 20:13:15 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCommandArgumentsHelper.h" diff --git a/Source/cmCommandArgumentsHelper.h b/Source/cmCommandArgumentsHelper.h index 2454fd363..cb33ccd4b 100644 --- a/Source/cmCommandArgumentsHelper.h +++ b/Source/cmCommandArgumentsHelper.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommandArgumentsHelper.h,v $ - Language: C++ - Date: $Date: 2007-08-23 20:13:15 $ - Version: $Revision: 1.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCommandArgumentsHelper_h #define cmCommandArgumentsHelper_h diff --git a/Source/cmCommands.cxx b/Source/cmCommands.cxx index 36f5c371d..195087183 100644 --- a/Source/cmCommands.cxx +++ b/Source/cmCommands.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommands.cxx,v $ - Language: C++ - Date: $Date: 2008-07-13 21:55:23 $ - Version: $Revision: 1.123.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCommands.h" #if defined(CMAKE_BUILD_WITH_CMAKE) #include "cmAuxSourceDirectoryCommand.cxx" @@ -33,7 +28,6 @@ #include "cmQTWrapUICommand.cxx" #include "cmRemoveCommand.cxx" #include "cmRemoveDefinitionsCommand.cxx" -#include "cmSetDirectoryPropertiesCommand.cxx" #include "cmSourceGroupCommand.cxx" #include "cmSubdirDependsCommand.cxx" #include "cmUseMangledMesaCommand.cxx" @@ -75,7 +69,6 @@ void GetPredefinedCommands(std::list& commands.push_back(new cmQTWrapUICommand); commands.push_back(new cmRemoveCommand); commands.push_back(new cmRemoveDefinitionsCommand); - commands.push_back(new cmSetDirectoryPropertiesCommand); commands.push_back(new cmSourceGroupCommand); commands.push_back(new cmSubdirDependsCommand); commands.push_back(new cmUseMangledMesaCommand); diff --git a/Source/cmCommands.h b/Source/cmCommands.h index 5f464f3ba..096fc2006 100644 --- a/Source/cmCommands.h +++ b/Source/cmCommands.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCommands.h,v $ - Language: C++ - Date: $Date: 2005-01-21 15:27:51 $ - Version: $Revision: 1.6 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCommands_h #define cmCommands_h #include "cmStandardIncludes.h" diff --git a/Source/cmComputeComponentGraph.cxx b/Source/cmComputeComponentGraph.cxx index f785b164c..3f2a361dc 100644 --- a/Source/cmComputeComponentGraph.cxx +++ b/Source/cmComputeComponentGraph.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmComputeComponentGraph.cxx,v $ - Language: C++ - Date: $Date: 2008-02-07 21:14:05 $ - Version: $Revision: 1.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmComputeComponentGraph.h" #include diff --git a/Source/cmComputeComponentGraph.h b/Source/cmComputeComponentGraph.h index 47eea1af5..855a141f4 100644 --- a/Source/cmComputeComponentGraph.h +++ b/Source/cmComputeComponentGraph.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmComputeComponentGraph.h,v $ - Language: C++ - Date: $Date: 2008-02-07 21:14:05 $ - Version: $Revision: 1.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmComputeComponentGraph_h #define cmComputeComponentGraph_h diff --git a/Source/cmComputeLinkDepends.cxx b/Source/cmComputeLinkDepends.cxx index 67ebd40d3..24410ec3a 100644 --- a/Source/cmComputeLinkDepends.cxx +++ b/Source/cmComputeLinkDepends.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmComputeLinkDepends.cxx,v $ - Language: C++ - Date: $Date: 2009-04-07 19:32:07 $ - Version: $Revision: 1.12.2.8 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmComputeLinkDepends.h" #include "cmComputeComponentGraph.h" @@ -223,7 +218,7 @@ std::vector const& cmComputeLinkDepends::Compute() { // Follow the link dependencies of the target to be linked. - this->AddTargetLinkEntries(-1, this->Target->GetOriginalLinkLibraries()); + this->AddDirectLinkEntries(); // Complete the breadth-first search of dependencies. while(!this->BFSQueue.empty()) @@ -356,7 +351,7 @@ void cmComputeLinkDepends::FollowLinkEntry(BFSEntry const& qe) if(entry.Target) { // Follow the target dependencies. - if(cmTargetLinkInterface const* iface = + if(cmTarget::LinkInterface const* iface = entry.Target->GetLinkInterface(this->Config)) { // This target provides its own link interface information. @@ -364,13 +359,14 @@ void cmComputeLinkDepends::FollowLinkEntry(BFSEntry const& qe) // Handle dependent shared libraries. this->QueueSharedDependencies(depender_index, iface->SharedDeps); - } - else if(!entry.Target->IsImported() && - entry.Target->GetType() != cmTarget::EXECUTABLE) - { - // Use the target's link implementation as the interface. - this->AddTargetLinkEntries(depender_index, - entry.Target->GetOriginalLinkLibraries()); + + // Support for CMP0003. + for(std::vector::const_iterator + oi = iface->WrongConfigLibraries.begin(); + oi != iface->WrongConfigLibraries.end(); ++oi) + { + this->CheckWrongConfigItem(depender_index, *oi); + } } } else @@ -430,7 +426,7 @@ void cmComputeLinkDepends::HandleSharedDependency(SharedDepEntry const& dep) // Target items may have their own dependencies. if(entry.Target) { - if(cmTargetLinkInterface const* iface = + if(cmTarget::LinkInterface const* iface = entry.Target->GetLinkInterface(this->Config)) { // We use just the shared dependencies, not the interface. @@ -516,27 +512,18 @@ void cmComputeLinkDepends::AddVarLinkEntries(int depender_index, } //---------------------------------------------------------------------------- -void -cmComputeLinkDepends::AddTargetLinkEntries(int depender_index, - LinkLibraryVectorType const& libs) +void cmComputeLinkDepends::AddDirectLinkEntries() { - // Look for entries meant for this configuration. - std::vector actual_libs; - for(cmTarget::LinkLibraryVectorType::const_iterator li = libs.begin(); - li != libs.end(); ++li) + // Add direct link dependencies in this configuration. + cmTarget::LinkImplementation const* impl = + this->Target->GetLinkImplementation(this->Config); + this->AddLinkEntries(-1, impl->Libraries); + for(std::vector::const_iterator + wi = impl->WrongConfigLibraries.begin(); + wi != impl->WrongConfigLibraries.end(); ++wi) { - if(li->second == cmTarget::GENERAL || li->second == this->LinkType) - { - actual_libs.push_back(li->first); - } - else if(this->OldLinkDirMode) - { - this->CheckWrongConfigItem(depender_index, li->first); - } + this->CheckWrongConfigItem(-1, *wi); } - - // Add these entries. - this->AddLinkEntries(depender_index, actual_libs); } //---------------------------------------------------------------------------- @@ -553,7 +540,7 @@ cmComputeLinkDepends::AddLinkEntries(int depender_index, { // Skip entries that will resolve to the target getting linked or // are empty. - std::string item = this->CleanItemName(*li); + std::string item = this->Target->CheckCMP0004(*li); if(item == this->Target->GetName() || item.empty()) { continue; @@ -605,66 +592,6 @@ cmComputeLinkDepends::AddLinkEntries(int depender_index, } } -//---------------------------------------------------------------------------- -std::string cmComputeLinkDepends::CleanItemName(std::string const& item) -{ - // Strip whitespace off the library names because we used to do this - // in case variables were expanded at generate time. We no longer - // do the expansion but users link to libraries like " ${VAR} ". - std::string lib = item; - std::string::size_type pos = lib.find_first_not_of(" \t\r\n"); - if(pos != lib.npos) - { - lib = lib.substr(pos, lib.npos); - } - pos = lib.find_last_not_of(" \t\r\n"); - if(pos != lib.npos) - { - lib = lib.substr(0, pos+1); - } - if(lib != item) - { - switch(this->Target->GetPolicyStatusCMP0004()) - { - case cmPolicies::WARN: - { - cmOStringStream w; - w << (this->Makefile->GetPolicies() - ->GetPolicyWarning(cmPolicies::CMP0004)) << "\n" - << "Target \"" << this->Target->GetName() << "\" links to item \"" - << item << "\" which has leading or trailing whitespace."; - this->CMakeInstance->IssueMessage(cmake::AUTHOR_WARNING, w.str(), - this->Target->GetBacktrace()); - } - case cmPolicies::OLD: - break; - case cmPolicies::NEW: - { - cmOStringStream e; - e << "Target \"" << this->Target->GetName() << "\" links to item \"" - << item << "\" which has leading or trailing whitespace. " - << "This is now an error according to policy CMP0004."; - this->CMakeInstance->IssueMessage(cmake::FATAL_ERROR, e.str(), - this->Target->GetBacktrace()); - } - break; - case cmPolicies::REQUIRED_IF_USED: - case cmPolicies::REQUIRED_ALWAYS: - { - cmOStringStream e; - e << (this->Makefile->GetPolicies() - ->GetRequiredPolicyError(cmPolicies::CMP0004)) << "\n" - << "Target \"" << this->Target->GetName() << "\" links to item \"" - << item << "\" which has leading or trailing whitespace."; - this->CMakeInstance->IssueMessage(cmake::FATAL_ERROR, e.str(), - this->Target->GetBacktrace()); - } - break; - } - } - return lib; -} - //---------------------------------------------------------------------------- cmTarget* cmComputeLinkDepends::FindTargetToLink(int depender_index, const char* name) @@ -968,7 +895,7 @@ cmComputeLinkDepends::MakePendingComponent(unsigned int component) // advantage that the item directly linked by a target requiring // this component will come first which minimizes the number of // repeats needed. - pc.Count = 2; + pc.Count = this->ComputeComponentCount(nl); } // Store the entries to be seen. @@ -977,6 +904,27 @@ cmComputeLinkDepends::MakePendingComponent(unsigned int component) return pc; } +//---------------------------------------------------------------------------- +int cmComputeLinkDepends::ComputeComponentCount(NodeList const& nl) +{ + int count = 2; + for(NodeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) + { + if(cmTarget* target = this->EntryList[*ni].Target) + { + if(cmTarget::LinkInterface const* iface = + target->GetLinkInterface(this->Config)) + { + if(iface->Multiplicity > count) + { + count = iface->Multiplicity; + } + } + } + } + return count; +} + //---------------------------------------------------------------------------- void cmComputeLinkDepends::DisplayFinalEntries() { diff --git a/Source/cmComputeLinkDepends.h b/Source/cmComputeLinkDepends.h index 27985415b..a08afb69c 100644 --- a/Source/cmComputeLinkDepends.h +++ b/Source/cmComputeLinkDepends.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmComputeLinkDepends.h,v $ - Language: C++ - Date: $Date: 2009-04-07 19:32:07 $ - Version: $Revision: 1.5.2.8 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmComputeLinkDepends_h #define cmComputeLinkDepends_h @@ -83,11 +78,9 @@ private: AllocateLinkEntry(std::string const& item); int AddLinkEntry(int depender_index, std::string const& item); void AddVarLinkEntries(int depender_index, const char* value); - void AddTargetLinkEntries(int depender_index, - LinkLibraryVectorType const& libs); + void AddDirectLinkEntries(); void AddLinkEntries(int depender_index, std::vector const& libs); - std::string CleanItemName(std::string const& item); cmTarget* FindTargetToLink(int depender_index, const char* name); // One entry for each unique item. @@ -155,6 +148,7 @@ private: void VisitComponent(unsigned int c); void VisitEntry(int index); PendingComponent& MakePendingComponent(unsigned int component); + int ComputeComponentCount(NodeList const& nl); void DisplayFinalEntries(); // Record of the original link line. diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index bdcc29fb9..69a4d22bb 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmComputeLinkInformation.cxx,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:45 $ - Version: $Revision: 1.24.2.11 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmComputeLinkInformation.h" #include "cmComputeLinkDepends.h" @@ -264,8 +259,7 @@ cmComputeLinkInformation this->OrderDependentRPath = 0; // Get the language used for linking this target. - this->LinkLanguage = - this->Target->GetLinkerLanguage(this->GlobalGenerator); + this->LinkLanguage = this->Target->GetLinkerLanguage(config); if(!this->LinkLanguage) { // The Compute method will do nothing, so skip the rest of the @@ -316,7 +310,7 @@ cmComputeLinkInformation this->RuntimeAlways = (this->Makefile-> GetSafeDefinition("CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH")); - this->RuntimeUseChrpath = this->Target->IsChrpathUsed(); + this->RuntimeUseChrpath = this->Target->IsChrpathUsed(config); // Get options needed to help find dependent libraries. std::string rlVar = "CMAKE_"; @@ -366,26 +360,14 @@ cmComputeLinkInformation "dependent library path"); } - // Get the implicit link directories for this platform. - if(const char* implicitLinks = - (this->Makefile->GetDefinition - ("CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES"))) - { - std::vector implicitLinkVec; - cmSystemTools::ExpandListArgument(implicitLinks, implicitLinkVec); - for(std::vector::const_iterator - i = implicitLinkVec.begin(); - i != implicitLinkVec.end(); ++i) - { - this->ImplicitLinkDirs.insert(*i); - } - } - // Add the search path entries requested by the user to path ordering. this->OrderLinkerSearchPath ->AddUserDirectories(this->Target->GetLinkDirectories()); this->OrderRuntimeSearchPath ->AddUserDirectories(this->Target->GetLinkDirectories()); + + // Set up the implicit link directories. + this->LoadImplicitLinkInfo(); this->OrderLinkerSearchPath ->SetImplicitDirectories(this->ImplicitLinkDirs); this->OrderRuntimeSearchPath @@ -565,9 +547,63 @@ bool cmComputeLinkInformation::Compute() return false; } + // Add implicit language runtime libraries and directories. + this->AddImplicitLinkInfo(); + return true; } +//---------------------------------------------------------------------------- +void cmComputeLinkInformation::AddImplicitLinkInfo() +{ + // The link closure lists all languages whose implicit info is needed. + cmTarget::LinkClosure const* lc=this->Target->GetLinkClosure(this->Config); + for(std::vector::const_iterator li = lc->Languages.begin(); + li != lc->Languages.end(); ++li) + { + // Skip those of the linker language. They are implicit. + if(*li != this->LinkLanguage) + { + this->AddImplicitLinkInfo(*li); + } + } +} + +//---------------------------------------------------------------------------- +void cmComputeLinkInformation::AddImplicitLinkInfo(std::string const& lang) +{ + // Add libraries for this language that are not implied by the + // linker language. + std::string libVar = "CMAKE_"; + libVar += lang; + libVar += "_IMPLICIT_LINK_LIBRARIES"; + if(const char* libs = this->Makefile->GetDefinition(libVar.c_str())) + { + std::vector libsVec; + cmSystemTools::ExpandListArgument(libs, libsVec); + for(std::vector::const_iterator i = libsVec.begin(); + i != libsVec.end(); ++i) + { + if(this->ImplicitLinkLibs.find(*i) == this->ImplicitLinkLibs.end()) + { + this->AddItem(i->c_str(), 0); + } + } + } + + // Add linker search paths for this language that are not + // implied by the linker language. + std::string dirVar = "CMAKE_"; + dirVar += lang; + dirVar += "_IMPLICIT_LINK_DIRECTORIES"; + if(const char* dirs = this->Makefile->GetDefinition(dirVar.c_str())) + { + std::vector dirsVec; + cmSystemTools::ExpandListArgument(dirs, dirsVec); + this->OrderLinkerSearchPath->AddLanguageDirectories(dirsVec); + } +} + //---------------------------------------------------------------------------- void cmComputeLinkInformation::AddItem(std::string const& item, cmTarget* tgt) { @@ -814,6 +850,17 @@ void cmComputeLinkInformation::ComputeItemParserInfo() this->AddLinkExtension(i->c_str(), LinkUnknown); } } + if(const char* sharedSuffixes = + mf->GetDefinition("CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES")) + { + std::vector sharedSuffixVec; + cmSystemTools::ExpandListArgument(sharedSuffixes, sharedSuffixVec); + for(std::vector::iterator i = sharedSuffixVec.begin(); + i != sharedSuffixVec.end(); ++i) + { + this->AddLinkExtension(i->c_str(), LinkShared); + } + } // Compute a regex to match link extensions. std::string libext = this->CreateExtensionRegex(this->LinkExtensions); @@ -836,7 +883,7 @@ void cmComputeLinkInformation::ComputeItemParserInfo() reg += "|"; } reg += ")"; - reg += "([^/]*)"; + reg += "([^/:]*)"; // Create a regex to match any library name. std::string reg_any = reg; @@ -940,8 +987,8 @@ std::string cmComputeLinkInformation::NoCaseExpression(const char* str) else { ret += "["; - ret += tolower(*s); - ret += toupper(*s); + ret += static_cast(tolower(*s)); + ret += static_cast(toupper(*s)); ret += "]"; } s++; @@ -1145,7 +1192,28 @@ void cmComputeLinkInformation::AddUserItem(std::string const& item, // // foo ==> -lfoo // libfoo.a ==> -Wl,-Bstatic -lfoo - std::string lib; + + // Pass flags through untouched. + if(item[0] == '-' || item[0] == '$' || item[0] == '`') + { + // if this is a -l option then we might need to warn about + // CMP0003 so put it in OldUserFlagItems, if it is not a -l + // or -Wl,-l (-framework -pthread), then allow it without a + // CMP0003 as -L will not affect those other linker flags + if(item.find("-l") == 0 || item.find("-Wl,-l") == 0) + { + // This is a linker option provided by the user. + this->OldUserFlagItems.push_back(item); + } + + // Restore the target link type since this item does not specify + // one. + this->SetCurrentLinkType(this->StartLinkType); + + // Use the item verbatim. + this->Items.push_back(Item(item, false)); + return; + } // Parse out the prefix, base, and suffix components of the // library name. If the name matches that of a shared or static @@ -1157,6 +1225,7 @@ void cmComputeLinkInformation::AddUserItem(std::string const& item, // libfoo.dll.a for import libraries and libfoo.a for static // libraries. On AIX a library with the name libfoo.a can be // shared! + std::string lib; if(this->ExtractSharedLibraryName.find(item)) { // This matches a shared library file name. @@ -1203,26 +1272,6 @@ void cmComputeLinkInformation::AddUserItem(std::string const& item, // Use just the library name so the linker will search. lib = this->ExtractAnyLibraryName.match(2); } - else if(item[0] == '-' || item[0] == '$' || item[0] == '`') - { - // if this is a -l option then we might need to warn about - // CMP0003 so put it in OldUserFlagItems, if it is not a -l - // or -Wl,-l (-framework -pthread), then allow it without a - // CMP0003 as -L will not affect those other linker flags - if(item.find("-l") == 0 || item.find("-Wl,-l") == 0) - { - // This is a linker option provided by the user. - this->OldUserFlagItems.push_back(item); - } - - // Restore the target link type since this item does not specify - // one. - this->SetCurrentLinkType(this->StartLinkType); - - // Use the item verbatim. - this->Items.push_back(Item(item, false)); - return; - } else { // This is a name specified by the user. @@ -1540,6 +1589,61 @@ void cmComputeLinkInformation::PrintLinkPolicyDiagnosis(std::ostream& os) << "Run \"cmake --help-policy CMP0003\" for more information."; } +//---------------------------------------------------------------------------- +void cmComputeLinkInformation::LoadImplicitLinkInfo() +{ + std::vector implicitDirVec; + + // Get platform-wide implicit directories. + if(const char* implicitLinks = + (this->Makefile->GetDefinition + ("CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES"))) + { + cmSystemTools::ExpandListArgument(implicitLinks, implicitDirVec); + } + + // Get language-specific implicit directories. + std::string implicitDirVar = "CMAKE_"; + implicitDirVar += this->LinkLanguage; + implicitDirVar += "_IMPLICIT_LINK_DIRECTORIES"; + if(const char* implicitDirs = + this->Makefile->GetDefinition(implicitDirVar.c_str())) + { + cmSystemTools::ExpandListArgument(implicitDirs, implicitDirVec); + } + + // Store implicit link directories. + for(std::vector::const_iterator i = implicitDirVec.begin(); + i != implicitDirVec.end(); ++i) + { + this->ImplicitLinkDirs.insert(*i); + } + + // Get language-specific implicit libraries. + std::vector implicitLibVec; + std::string implicitLibVar = "CMAKE_"; + implicitLibVar += this->LinkLanguage; + implicitLibVar += "_IMPLICIT_LINK_LIBRARIES"; + if(const char* implicitLibs = + this->Makefile->GetDefinition(implicitLibVar.c_str())) + { + cmSystemTools::ExpandListArgument(implicitLibs, implicitLibVec); + } + + // Store implicit link libraries. + for(std::vector::const_iterator i = implicitLibVec.begin(); + i != implicitLibVec.end(); ++i) + { + // Items starting in '-' but not '-l' are flags, not libraries, + // and should not be filtered by this implicit list. + std::string const& item = *i; + if(item[0] != '-' || item[1] == 'l') + { + this->ImplicitLinkLibs.insert(item); + } + } +} + //---------------------------------------------------------------------------- std::vector const& cmComputeLinkInformation::GetRuntimeSearchPath() @@ -1694,10 +1798,18 @@ std::string cmComputeLinkInformation::GetRPathString(bool for_install) rpath += *ri; } - // If the rpath will be replaced at install time make sure it is - // long enough now. + // If the rpath will be replaced at install time, prepare space. if(!for_install && this->RuntimeUseChrpath) { + if(!rpath.empty()) + { + // Add one trailing separator so the linker does not re-use the + // rpath .dynstr entry for a symbol name that happens to match + // the end of the rpath string. + rpath += this->GetRuntimeSep(); + } + + // Make sure it is long enough to hold the replacement value. std::string::size_type minLength = this->GetChrpathString().length(); while(rpath.length() < minLength) { diff --git a/Source/cmComputeLinkInformation.h b/Source/cmComputeLinkInformation.h index fee1e245b..ad2026bce 100644 --- a/Source/cmComputeLinkInformation.h +++ b/Source/cmComputeLinkInformation.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmComputeLinkInformation.h,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:45 $ - Version: $Revision: 1.15.2.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmComputeLinkInformation_h #define cmComputeLinkInformation_h @@ -160,7 +155,13 @@ private: cmOrderDirectories* OrderLinkerSearchPath; bool FinishLinkerSearchDirectories(); void PrintLinkPolicyDiagnosis(std::ostream&); + + // Implicit link libraries and directories for linker language. + void LoadImplicitLinkInfo(); + void AddImplicitLinkInfo(); + void AddImplicitLinkInfo(std::string const& lang); std::set ImplicitLinkDirs; + std::set ImplicitLinkLibs; // Linker search path compatibility mode. std::set OldLinkDirMask; diff --git a/Source/cmComputeTargetDepends.cxx b/Source/cmComputeTargetDepends.cxx index 5362041e1..94b8527f0 100644 --- a/Source/cmComputeTargetDepends.cxx +++ b/Source/cmComputeTargetDepends.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmComputeTargetDepends.cxx,v $ - Language: C++ - Date: $Date: 2008-09-03 13:43:17 $ - Version: $Revision: 1.2.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmComputeTargetDepends.h" #include "cmComputeComponentGraph.h" @@ -103,6 +98,7 @@ cmComputeTargetDepends::cmComputeTargetDepends(cmGlobalGenerator* gg) this->GlobalGenerator = gg; cmake* cm = this->GlobalGenerator->GetCMakeInstance(); this->DebugMode = cm->GetPropertyAsBool("GLOBAL_DEPENDS_DEBUG_MODE"); + this->NoCycles = cm->GetPropertyAsBool("GLOBAL_DEPENDS_NO_CYCLES"); } //---------------------------------------------------------------------------- @@ -344,6 +340,13 @@ cmComputeTargetDepends continue; } + // Immediately complain if no cycles are allowed at all. + if(this->NoCycles) + { + this->ComplainAboutBadComponent(ccg, c); + return false; + } + // Make sure the component is all STATIC_LIBRARY targets. for(NodeList::const_iterator ni = nl.begin(); ni != nl.end(); ++ni) { @@ -391,8 +394,16 @@ cmComputeTargetDepends } } } - e << "At least one of these targets is not a STATIC_LIBRARY. " - << "Cyclic dependencies are allowed only among static libraries."; + if(this->NoCycles) + { + e << "The GLOBAL_DEPENDS_NO_CYCLES global property is enabled, so " + << "cyclic dependencies are not allowed even among static libraries."; + } + else + { + e << "At least one of these targets is not a STATIC_LIBRARY. " + << "Cyclic dependencies are allowed only among static libraries."; + } cmSystemTools::Error(e.str().c_str()); } diff --git a/Source/cmComputeTargetDepends.h b/Source/cmComputeTargetDepends.h index b0a1a7052..68e3e47cb 100644 --- a/Source/cmComputeTargetDepends.h +++ b/Source/cmComputeTargetDepends.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmComputeTargetDepends.h,v $ - Language: C++ - Date: $Date: 2008-09-03 13:43:17 $ - Version: $Revision: 1.2.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmComputeTargetDepends_h #define cmComputeTargetDepends_h @@ -54,6 +49,7 @@ private: cmGlobalGenerator* GlobalGenerator; bool DebugMode; + bool NoCycles; // Collect all targets. std::vector Targets; diff --git a/Source/cmConfigure.cmake.h.in b/Source/cmConfigure.cmake.h.in index 0a0df01c6..114afd7b7 100644 --- a/Source/cmConfigure.cmake.h.in +++ b/Source/cmConfigure.cmake.h.in @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmConfigure.cmake.h.in,v $ - Language: C++ - Date: $Date: 2008-02-27 21:26:35 $ - Version: $Revision: 1.14 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #cmakedefine CMAKE_NO_STD_NAMESPACE #cmakedefine CMAKE_NO_ANSI_STREAM_HEADERS #cmakedefine CMAKE_NO_ANSI_STRING_STREAM @@ -24,9 +19,4 @@ #cmakedefine CMAKE_STRICT #define CMAKE_ROOT_DIR "${CMake_SOURCE_DIR}" #define CMAKE_BUILD_DIR "${CMake_BINARY_DIR}" - -#define CMake_VERSION_MAJOR @CMake_VERSION_MAJOR@ -#define CMake_VERSION_MINOR @CMake_VERSION_MINOR@ -#define CMake_VERSION_PATCH @CMake_VERSION_PATCH@ -#cmakedefine CMake_VERSION_RC @CMake_VERSION_RC@ #define CMAKE_DATA_DIR "@CMAKE_DATA_DIR@" diff --git a/Source/cmConfigureFileCommand.cxx b/Source/cmConfigureFileCommand.cxx index 3c93af9d0..c1327fbf1 100644 --- a/Source/cmConfigureFileCommand.cxx +++ b/Source/cmConfigureFileCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmConfigureFileCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-03-07 20:30:33 $ - Version: $Revision: 1.34 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmConfigureFileCommand.h" #include @@ -27,11 +22,44 @@ bool cmConfigureFileCommand this->SetError("called with incorrect number of arguments, expected 2"); return false; } - this->InputFile = args[0]; - this->OuputFile = args[1]; - if ( !this->Makefile->CanIWriteThisFile(this->OuputFile.c_str()) ) + + const char* inFile = args[0].c_str(); + if(!cmSystemTools::FileIsFullPath(inFile)) + { + this->InputFile = this->Makefile->GetCurrentDirectory(); + this->InputFile += "/"; + } + this->InputFile += inFile; + + // If the input location is a directory, error out. + if(cmSystemTools::FileIsDirectory(this->InputFile.c_str())) + { + cmOStringStream e; + e << "input location\n" + << " " << this->InputFile << "\n" + << "is a directory but a file was expected."; + this->SetError(e.str().c_str()); + return false; + } + + const char* outFile = args[1].c_str(); + if(!cmSystemTools::FileIsFullPath(outFile)) { - std::string e = "attempted to configure a file: " + this->OuputFile + this->OutputFile = this->Makefile->GetCurrentOutputDirectory(); + this->OutputFile += "/"; + } + this->OutputFile += outFile; + + // If the output location is already a directory put the file in it. + if(cmSystemTools::FileIsDirectory(this->OutputFile.c_str())) + { + this->OutputFile += "/"; + this->OutputFile += cmSystemTools::GetFilenameName(inFile); + } + + if ( !this->Makefile->CanIWriteThisFile(this->OutputFile.c_str()) ) + { + std::string e = "attempted to configure a file: " + this->OutputFile + " into a source directory."; this->SetError(e.c_str()); cmSystemTools::SetFatalErrorOccured(); @@ -89,15 +117,9 @@ void cmConfigureFileCommand::FinalPass() int cmConfigureFileCommand::ConfigureFile() { - std::string inFile = this->InputFile; - if (!cmSystemTools::FileIsFullPath(inFile.c_str())) - { - inFile = this->Makefile->GetStartDirectory(); - inFile += "/"; - inFile += this->InputFile; - } - return this->Makefile->ConfigureFile(inFile.c_str(), - this->OuputFile.c_str(), + return this->Makefile->ConfigureFile( + this->InputFile.c_str(), + this->OutputFile.c_str(), this->CopyOnly, this->AtOnly, this->EscapeQuotes); diff --git a/Source/cmConfigureFileCommand.h b/Source/cmConfigureFileCommand.h index e2ce55c67..844a23cda 100644 --- a/Source/cmConfigureFileCommand.h +++ b/Source/cmConfigureFileCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmConfigureFileCommand.h,v $ - Language: C++ - Date: $Date: 2008-01-23 15:27:59 $ - Version: $Revision: 1.22 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmConfigureFileCommand_h #define cmConfigureFileCommand_h @@ -60,9 +55,18 @@ public: virtual const char* GetFullDocumentation() { return - " configure_file(InputFile OutputFile\n" + " configure_file( \n" " [COPYONLY] [ESCAPE_QUOTES] [@ONLY])\n" - "The Input and Output files have to have full paths. " + "Copies a file to file and substitutes variable " + "values referenced in the file content. " + "If is a relative path it is evaluated with respect to " + "the current source directory. " + "The must be a file, not a directory. " + "If is a relative path it is evaluated with respect to " + "the current binary directory. " + "If names an existing directory the input file is placed " + "in that directory with its original name. " + "\n" "This command replaces any variables in the input file referenced as " "${VAR} or @VAR@ with their values as determined by CMake. If a " "variable is not defined, it will be replaced with nothing. " @@ -75,15 +79,18 @@ public: "This is useful for configuring scripts that use ${VAR}. " "Any occurrences of #cmakedefine VAR will be replaced with " "either #define VAR or /* #undef VAR */ depending on " - "the setting of VAR in CMake"; + "the setting of VAR in CMake. Any occurrences of #cmakedefine01 VAR " + "will be replaced with either #define VAR 1 or #define VAR 0 " + "depending on whether VAR evaluates to TRUE or FALSE in CMake"; } virtual void FinalPass(); + virtual bool HasFinalPass() const { return !this->Immediate; } private: int ConfigureFile(); std::string InputFile; - std::string OuputFile; + std::string OutputFile; bool CopyOnly; bool EscapeQuotes; bool Immediate; diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index e4263f237..4746f0687 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCoreTryCompile.cxx,v $ - Language: C++ - Date: $Date: 2009-02-04 16:44:17 $ - Version: $Revision: 1.7.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2007 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCoreTryCompile.h" #include "cmake.h" #include "cmCacheManager.h" @@ -22,7 +17,6 @@ int cmCoreTryCompile::TryCompileCode(std::vector const& argv) { - this->BinaryDirectory = argv[1].c_str(); this->OutputFile = ""; // which signature were we called with ? @@ -251,6 +245,20 @@ int cmCoreTryCompile::TryCompileCode(std::vector const& argv) flag += this->Makefile->GetSafeDefinition("CMAKE_OSX_ARCHITECTURES"); cmakeFlags.push_back(flag); } + /* on APPLE also pass CMAKE_OSX_SYSROOT to the try_compile */ + if(this->Makefile->GetDefinition("CMAKE_OSX_SYSROOT")!=0) + { + std::string flag="-DCMAKE_OSX_SYSROOT="; + flag += this->Makefile->GetSafeDefinition("CMAKE_OSX_SYSROOT"); + cmakeFlags.push_back(flag); + } + /* on APPLE also pass CMAKE_OSX_DEPLOYMENT_TARGET to the try_compile */ + if(this->Makefile->GetDefinition("CMAKE_OSX_DEPLOYMENT_TARGET")!=0) + { + std::string flag="-DCMAKE_OSX_DEPLOYMENT_TARGET="; + flag += this->Makefile->GetSafeDefinition("CMAKE_OSX_DEPLOYMENT_TARGET"); + cmakeFlags.push_back(flag); + } fprintf(fout, "ADD_EXECUTABLE(cmTryCompileExec \"%s\")\n",source.c_str()); fprintf(fout, @@ -284,6 +292,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector const& argv) this->BinaryDirectory.c_str(), projectName, targetName, + this->SrcFileSignature, &cmakeFlags, &output); if ( erroroc ) @@ -305,6 +314,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector const& argv) if (this->SrcFileSignature) { this->FindOutputFile(targetName); + if ((res==0) && (copyFile.size())) { if(!cmSystemTools::CopyFileAlways(this->OutputFile.c_str(), @@ -314,6 +324,13 @@ int cmCoreTryCompile::TryCompileCode(std::vector const& argv) emsg << "Could not COPY_FILE.\n" << " OutputFile: '" << this->OutputFile.c_str() << "'\n" << " copyFile: '" << copyFile.c_str() << "'\n"; + + if (this->FindErrorMessage.size()) + { + emsg << "\n"; + emsg << this->FindErrorMessage.c_str() << "\n"; + } + cmSystemTools::Error(emsg.str().c_str()); return -1; } diff --git a/Source/cmCoreTryCompile.h b/Source/cmCoreTryCompile.h index 127182185..e29dde8ac 100644 --- a/Source/cmCoreTryCompile.h +++ b/Source/cmCoreTryCompile.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCoreTryCompile.h,v $ - Language: C++ - Date: $Date: 2007-05-24 15:27:51 $ - Version: $Revision: 1.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2007 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCoreTryCompile_h #define cmCoreTryCompile_h diff --git a/Source/cmCreateTestSourceList.cxx b/Source/cmCreateTestSourceList.cxx index a0ca49422..953328aa6 100644 --- a/Source/cmCreateTestSourceList.cxx +++ b/Source/cmCreateTestSourceList.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCreateTestSourceList.cxx,v $ - Language: C++ - Date: $Date: 2008-01-23 15:27:59 $ - Version: $Revision: 1.44 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCreateTestSourceList.h" #include "cmSourceFile.h" diff --git a/Source/cmCreateTestSourceList.h b/Source/cmCreateTestSourceList.h index 9fdc254f1..c4c6ae74b 100644 --- a/Source/cmCreateTestSourceList.h +++ b/Source/cmCreateTestSourceList.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCreateTestSourceList.h,v $ - Language: C++ - Date: $Date: 2008-01-23 15:27:59 $ - Version: $Revision: 1.16 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCreateTestSourceList_h #define cmCreateTestSourceList_h diff --git a/Source/cmCustomCommand.cxx b/Source/cmCustomCommand.cxx index b86a37a11..5db88fa7b 100644 --- a/Source/cmCustomCommand.cxx +++ b/Source/cmCustomCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCustomCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-06-13 12:55:17 $ - Version: $Revision: 1.24.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmCustomCommand.h" //---------------------------------------------------------------------------- diff --git a/Source/cmCustomCommand.h b/Source/cmCustomCommand.h index 38c3c061a..c9adddf05 100644 --- a/Source/cmCustomCommand.h +++ b/Source/cmCustomCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmCustomCommand.h,v $ - Language: C++ - Date: $Date: 2008-06-13 12:55:17 $ - Version: $Revision: 1.23.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmCustomCommand_h #define cmCustomCommand_h diff --git a/Source/cmData.h b/Source/cmData.h index d4eb78372..3ae32f5f2 100644 --- a/Source/cmData.h +++ b/Source/cmData.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmData.h,v $ - Language: C++ - Date: $Date: 2006-03-16 14:33:23 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmData_h #define cmData_h diff --git a/Source/cmDefinePropertyCommand.cxx b/Source/cmDefinePropertyCommand.cxx old mode 100755 new mode 100644 index 81de1a53d..5816829e0 --- a/Source/cmDefinePropertyCommand.cxx +++ b/Source/cmDefinePropertyCommand.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDefinePropertyCommand.cxx,v $ - Language: C++ - Date: $Date: 2008-02-14 18:36:23 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmDefinePropertyCommand.h" #include "cmake.h" @@ -98,13 +93,11 @@ bool cmDefinePropertyCommand } else if(doing == DoingBrief) { - doing = DoingNone; - this->BriefDocs = args[i]; + this->BriefDocs += args[i]; } else if(doing == DoingFull) { - doing = DoingNone; - this->FullDocs = args[i]; + this->FullDocs += args[i]; } else { diff --git a/Source/cmDefinePropertyCommand.h b/Source/cmDefinePropertyCommand.h old mode 100755 new mode 100644 index 8e587c8df..1fb78015c --- a/Source/cmDefinePropertyCommand.h +++ b/Source/cmDefinePropertyCommand.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDefinePropertyCommand.h,v $ - Language: C++ - Date: $Date: 2008-02-14 18:36:23 $ - Version: $Revision: 1.6 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmDefinesPropertyCommand_h #define cmDefinesPropertyCommand_h @@ -56,8 +51,8 @@ public: " define_property(\n" " PROPERTY [INHERITED]\n" - " BRIEF_DOCS \n" - " FULL_DOCS )\n" + " BRIEF_DOCS [docs...]\n" + " FULL_DOCS [docs...])\n" "Define one property in a scope for use with the " "set_property and get_property commands. " "This is primarily useful to associate documentation with property " @@ -68,7 +63,7 @@ public: " DIRECTORY = associated with one directory\n" " TARGET = associated with one target\n" " SOURCE = associated with one source file\n" - " TEST = associated with a test named with add_test command\n" + " TEST = associated with a test named with add_test\n" " VARIABLE = documents a CMake language variable\n" " CACHED_VARIABLE = documents a CMake cache variable\n" "Note that unlike set_property and get_property no actual scope " diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx new file mode 100644 index 000000000..2d407189b --- /dev/null +++ b/Source/cmDefinitions.cxx @@ -0,0 +1,162 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmDefinitions.h" + +//---------------------------------------------------------------------------- +cmDefinitions::Def cmDefinitions::NoDef; + +//---------------------------------------------------------------------------- +cmDefinitions::cmDefinitions(cmDefinitions* parent): Up(parent) +{ +} + +//---------------------------------------------------------------------------- +void cmDefinitions::Reset(cmDefinitions* parent) +{ + this->Up = parent; + this->Map.clear(); +} + +//---------------------------------------------------------------------------- +cmDefinitions::Def const& +cmDefinitions::GetInternal(const char* key) +{ + MapType::const_iterator i = this->Map.find(key); + if(i != this->Map.end()) + { + return i->second; + } + else if(cmDefinitions* up = this->Up) + { + // Query the parent scope and store the result locally. + Def def = up->GetInternal(key); + return this->Map.insert(MapType::value_type(key, def)).first->second; + } + return this->NoDef; +} + +//---------------------------------------------------------------------------- +cmDefinitions::Def const& +cmDefinitions::SetInternal(const char* key, Def const& def) +{ + if(this->Up || def.Exists) + { + // In lower scopes we store keys, defined or not. + MapType::iterator i = this->Map.find(key); + if(i == this->Map.end()) + { + i = this->Map.insert(MapType::value_type(key, def)).first; + } + else + { + i->second = def; + } + return i->second; + } + else + { + // In the top-most scope we need not store undefined keys. + this->Map.erase(key); + return this->NoDef; + } +} + +//---------------------------------------------------------------------------- +const char* cmDefinitions::Get(const char* key) +{ + Def const& def = this->GetInternal(key); + return def.Exists? def.c_str() : 0; +} + +//---------------------------------------------------------------------------- +const char* cmDefinitions::Set(const char* key, const char* value) +{ + Def const& def = this->SetInternal(key, Def(value)); + return def.Exists? def.c_str() : 0; +} + +//---------------------------------------------------------------------------- +cmDefinitions cmDefinitions::Closure() const +{ + return cmDefinitions(ClosureTag(), this); +} + +//---------------------------------------------------------------------------- +cmDefinitions::cmDefinitions(ClosureTag const&, cmDefinitions const* root): + Up(0) +{ + std::set undefined; + this->ClosureImpl(undefined, root); +} + +//---------------------------------------------------------------------------- +void cmDefinitions::ClosureImpl(std::set& undefined, + cmDefinitions const* defs) +{ + // Consider local definitions. + for(MapType::const_iterator mi = defs->Map.begin(); + mi != defs->Map.end(); ++mi) + { + // Use this key if it is not already set or unset. + if(this->Map.find(mi->first) == this->Map.end() && + undefined.find(mi->first) == undefined.end()) + { + if(mi->second.Exists) + { + this->Map.insert(*mi); + } + else + { + undefined.insert(mi->first); + } + } + } + + // Traverse parents. + if(cmDefinitions const* up = defs->Up) + { + this->ClosureImpl(undefined, up); + } +} + +//---------------------------------------------------------------------------- +std::set cmDefinitions::ClosureKeys() const +{ + std::set defined; + std::set undefined; + this->ClosureKeys(defined, undefined); + return defined; +} + +//---------------------------------------------------------------------------- +void cmDefinitions::ClosureKeys(std::set& defined, + std::set& undefined) const +{ + // Consider local definitions. + for(MapType::const_iterator mi = this->Map.begin(); + mi != this->Map.end(); ++mi) + { + // Use this key if it is not already set or unset. + if(defined.find(mi->first) == defined.end() && + undefined.find(mi->first) == undefined.end()) + { + std::set& m = mi->second.Exists? defined : undefined; + m.insert(mi->first); + } + } + + // Traverse parents. + if(cmDefinitions const* up = this->Up) + { + up->ClosureKeys(defined, undefined); + } +} diff --git a/Source/cmDefinitions.h b/Source/cmDefinitions.h new file mode 100644 index 000000000..e385e8887 --- /dev/null +++ b/Source/cmDefinitions.h @@ -0,0 +1,83 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmDefinitions_h +#define cmDefinitions_h + +#include "cmStandardIncludes.h" + +/** \class cmDefinitions + * \brief Store a scope of variable definitions for CMake language. + * + * This stores the state of variable definitions (set or unset) for + * one scope. Sets are always local. Gets search parent scopes + * transitively and save results locally. + */ +class cmDefinitions +{ +public: + /** Construct with the given parent scope. */ + cmDefinitions(cmDefinitions* parent = 0); + + /** Reset object as if newly constructed. */ + void Reset(cmDefinitions* parent = 0); + + /** Returns the parent scope, if any. */ + cmDefinitions* GetParent() const { return this->Up; } + + /** Get the value associated with a key; null if none. + Store the result locally if it came from a parent. */ + const char* Get(const char* key); + + /** Set (or unset if null) a value associated with a key. */ + const char* Set(const char* key, const char* value); + + /** Compute the closure of all defined keys with values. + This flattens the scope. The result has no parent. */ + cmDefinitions Closure() const; + + /** Compute the set of all defined keys. */ + std::set ClosureKeys() const; + +private: + // String with existence boolean. + struct Def: public cmStdString + { + Def(): cmStdString(), Exists(false) {} + Def(const char* v): cmStdString(v?v:""), Exists(v?true:false) {} + Def(Def const& d): cmStdString(d), Exists(d.Exists) {} + bool Exists; + }; + static Def NoDef; + + // Parent scope, if any. + cmDefinitions* Up; + + // Local definitions, set or unset. + typedef std::map MapType; + MapType Map; + + // Internal query and update methods. + Def const& GetInternal(const char* key); + Def const& SetInternal(const char* key, Def const& def); + + // Implementation of Closure() method. + struct ClosureTag {}; + cmDefinitions(ClosureTag const&, cmDefinitions const* root); + void ClosureImpl(std::set& undefined, + cmDefinitions const* defs); + + // Implementation of ClosureKeys() method. + void ClosureKeys(std::set& defined, + std::set& undefined) const; +}; + +#endif diff --git a/Source/cmDepends.cxx b/Source/cmDepends.cxx index 40b11ce2a..69ff85843 100644 --- a/Source/cmDepends.cxx +++ b/Source/cmDepends.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDepends.cxx,v $ - Language: C++ - Date: $Date: 2008-05-15 19:39:50 $ - Version: $Revision: 1.17.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmDepends.h" #include "cmLocalGenerator.h" @@ -87,7 +82,8 @@ bool cmDepends::Finalize(std::ostream&, } //---------------------------------------------------------------------------- -bool cmDepends::Check(const char *makeFile, const char *internalFile) +bool cmDepends::Check(const char *makeFile, const char *internalFile, + std::map& validDeps) { // Dependency checks must be done in proper working directory. std::string oldcwd = "."; @@ -102,7 +98,7 @@ bool cmDepends::Check(const char *makeFile, const char *internalFile) // Check whether dependencies must be regenerated. bool okay = true; std::ifstream fin(internalFile); - if(!(fin && this->CheckDependencies(fin))) + if(!(fin && this->CheckDependencies(fin, validDeps))) { // Clear all dependencies so they will be regenerated. this->Clear(makeFile); @@ -146,12 +142,16 @@ bool cmDepends::WriteDependencies(const char*, const char*, } //---------------------------------------------------------------------------- -bool cmDepends::CheckDependencies(std::istream& internalDepends) +bool cmDepends::CheckDependencies(std::istream& internalDepends, + std::map& validDeps) { // Parse dependencies from the stream. If any dependee is missing // or newer than the depender then dependencies should be // regenerated. bool okay = true; + bool dependerExists = false; + DependencyVector* currentDependencies = 0; + while(internalDepends.getline(this->Dependee, this->MaxPath)) { if ( this->Dependee[0] == 0 || this->Dependee[0] == '#' || @@ -168,6 +168,14 @@ bool cmDepends::CheckDependencies(std::istream& internalDepends) if ( this->Dependee[0] != ' ' ) { memcpy(this->Depender, this->Dependee, len+1); + // Calling FileExists() for the depender here saves in many cases 50% + // of the calls to FileExists() further down in the loop. E.g. for + // kdelibs/khtml this reduces the number of calls from 184k down to 92k, + // or the time for cmake -E cmake_depends from 0.3 s down to 0.21 s. + dependerExists = cmSystemTools::FileExists(this->Depender); + DependencyVector tmp; + validDeps[this->Depender] = tmp; + currentDependencies = &validDeps[this->Depender]; continue; } /* @@ -183,6 +191,11 @@ bool cmDepends::CheckDependencies(std::istream& internalDepends) bool regenerate = false; const char* dependee = this->Dependee+1; const char* depender = this->Depender; + if (currentDependencies != 0) + { + currentDependencies->push_back(dependee); + } + if(!cmSystemTools::FileExists(dependee)) { // The dependee does not exist. @@ -198,7 +211,7 @@ bool cmDepends::CheckDependencies(std::istream& internalDepends) cmSystemTools::Stdout(msg.str().c_str()); } } - else if(cmSystemTools::FileExists(depender)) + else if(dependerExists) { // The dependee and depender both exist. Compare file times. int result = 0; @@ -224,8 +237,20 @@ bool cmDepends::CheckDependencies(std::istream& internalDepends) // Dependencies must be regenerated. okay = false; + // Remove the information of this depender from the map, it needs + // to be rescanned + if (currentDependencies != 0) + { + validDeps.erase(this->Depender); + currentDependencies = 0; + } + // Remove the depender to be sure it is rebuilt. - cmSystemTools::RemoveFile(depender); + if (dependerExists) + { + cmSystemTools::RemoveFile(depender); + dependerExists = false; + } } } diff --git a/Source/cmDepends.h b/Source/cmDepends.h index de882a710..087da6400 100644 --- a/Source/cmDepends.h +++ b/Source/cmDepends.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDepends.h,v $ - Language: C++ - Date: $Date: 2008-05-15 19:39:50 $ - Version: $Revision: 1.14.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmDepends_h #define cmDepends_h @@ -59,12 +54,16 @@ public: /** Write dependencies for the target file. */ bool Write(std::ostream &makeDepends, std::ostream &internalDepends); - + + class DependencyVector: public std::vector {}; + /** Check dependencies for the target file. Returns true if dependencies are okay and false if they must be generated. If they must be generated Clear has already been called to wipe out - the old dependencies. */ - bool Check(const char *makeFile, const char* internalFile); + the old dependencies. + Dependencies which are still valid will be stored in validDeps. */ + bool Check(const char *makeFile, const char* internalFile, + std::map& validDeps); /** Clear dependencies for the target file so they will be regenerated. */ void Clear(const char *file); @@ -83,7 +82,8 @@ protected: // Check dependencies for the target file in the given stream. // Return false if dependencies must be regenerated and true // otherwise. - virtual bool CheckDependencies(std::istream& internalDepends); + virtual bool CheckDependencies(std::istream& internalDepends, + std::map& validDeps); // Finalize the dependency information for the target. virtual bool Finalize(std::ostream& makeDepends, diff --git a/Source/cmDependsC.cxx b/Source/cmDependsC.cxx index df5a9dd04..d0c28a8e7 100644 --- a/Source/cmDependsC.cxx +++ b/Source/cmDependsC.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsC.cxx,v $ - Language: C++ - Date: $Date: 2008-05-15 19:39:50 $ - Version: $Revision: 1.33.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmDependsC.h" #include "cmFileTimeComparison.h" @@ -34,12 +29,17 @@ //---------------------------------------------------------------------------- cmDependsC::cmDependsC() +: ValidDeps(0) { } //---------------------------------------------------------------------------- -cmDependsC::cmDependsC(cmLocalGenerator* lg, const char* targetDir, - const char* lang): cmDepends(lg, targetDir) +cmDependsC::cmDependsC(cmLocalGenerator* lg, + const char* targetDir, + const char* lang, + const std::map* validDeps) +: cmDepends(lg, targetDir) +, ValidDeps(validDeps) { cmMakefile* mf = lg->GetMakefile(); @@ -113,6 +113,32 @@ bool cmDependsC::WriteDependencies(const char *src, const char *obj, return false; } + if (this->ValidDeps != 0) + { + std::map::const_iterator tmpIt = + this->ValidDeps->find(obj); + if (tmpIt!= this->ValidDeps->end()) + { + // Write the dependencies to the output stream. Makefile rules + // written by the original local generator for this directory + // convert the dependencies to paths relative to the home output + // directory. We must do the same here. + internalDepends << obj << std::endl; + for(DependencyVector::const_iterator i=tmpIt->second.begin(); + i != tmpIt->second.end(); ++i) + { + makeDepends << obj << ": " << + this->LocalGenerator->Convert(i->c_str(), + cmLocalGenerator::HOME_OUTPUT, + cmLocalGenerator::MAKEFILE) + << std::endl; + internalDepends << " " << i->c_str() << std::endl; + } + makeDepends << std::endl; + return true; + } + } + // Walk the dependency graph starting with the source file. bool first = true; UnscannedEntry root; diff --git a/Source/cmDependsC.h b/Source/cmDependsC.h index 9190c8730..bd9a4b7b4 100644 --- a/Source/cmDependsC.h +++ b/Source/cmDependsC.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsC.h,v $ - Language: C++ - Date: $Date: 2008-05-15 19:39:50 $ - Version: $Revision: 1.20.10.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmDependsC_h #define cmDependsC_h @@ -30,7 +25,8 @@ public: /** Checking instances need to know the build directory name and the relative path from the build directory to the target file. */ cmDependsC(); - cmDependsC(cmLocalGenerator* lg, const char* targetDir, const char* lang); + cmDependsC(cmLocalGenerator* lg, const char* targetDir, const char* lang, + const std::map* validDeps); /** Virtual destructor to cleanup subclasses properly. */ virtual ~cmDependsC(); @@ -83,6 +79,7 @@ public: bool Used; }; protected: + const std::map* ValidDeps; std::set Encountered; std::queue Unscanned; t_CharBuffer Buffer; diff --git a/Source/cmDependsFortran.cxx b/Source/cmDependsFortran.cxx index 3b27e023d..961d29164 100644 --- a/Source/cmDependsFortran.cxx +++ b/Source/cmDependsFortran.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsFortran.cxx,v $ - Language: C++ - Date: $Date: 2009-03-23 17:58:40 $ - Version: $Revision: 1.46.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmDependsFortran.h" #include "cmSystemTools.h" diff --git a/Source/cmDependsFortran.h b/Source/cmDependsFortran.h index 3a9913e60..cdfde6ea9 100644 --- a/Source/cmDependsFortran.h +++ b/Source/cmDependsFortran.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsFortran.h,v $ - Language: C++ - Date: $Date: 2008-05-15 19:39:53 $ - Version: $Revision: 1.14.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmDependsFortran_h #define cmDependsFortran_h diff --git a/Source/cmDependsFortranLexer.cxx b/Source/cmDependsFortranLexer.cxx index 6e868d70e..a488884de 100644 --- a/Source/cmDependsFortranLexer.cxx +++ b/Source/cmDependsFortranLexer.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsFortranLexer.cxx,v $ - Language: C++ - Date: $Date: 2008-04-24 16:56:25 $ - Version: $Revision: 1.10.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #line 2 "cmDependsFortranLexer.cxx" #line 4 "cmDependsFortranLexer.cxx" @@ -617,22 +612,17 @@ static yyconst flex_int16_t yy_chk[517] = #define YY_RESTORE_YY_MORE_OFFSET #line 1 "cmDependsFortranLexer.in.l" #line 2 "cmDependsFortranLexer.in.l" -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsFortranLexer.cxx,v $ - Language: C++ - Date: $Date: 2008-04-24 16:56:25 $ - Version: $Revision: 1.10.2.2 $ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /*------------------------------------------------------------------------- Portions of this source have been derived from makedepf90 version 2.8.8, @@ -655,6 +645,7 @@ Modify cmDependsFortranLexer.cxx: - remove TABs - remove "yyscanner" argument from these methods: yy_fatal_error, cmDependsFortran_yyalloc, cmDependsFortran_yyrealloc, cmDependsFortran_yyfree + - remove "yyscanner = NULL" from end of cmDependsFortran_yylex_destroy - remove all YY_BREAK lines occurring right after return statements - change while ( 1 ) to for(;;) @@ -2332,7 +2323,6 @@ int cmDependsFortran_yylex_destroy (yyscan_t yyscanner) /* Destroy the main struct (reentrant only). */ cmDependsFortran_yyfree ( yyscanner , yyscanner ); - yyscanner = NULL; return 0; } diff --git a/Source/cmDependsFortranLexer.h b/Source/cmDependsFortranLexer.h index d66e24267..85e861dd8 100644 --- a/Source/cmDependsFortranLexer.h +++ b/Source/cmDependsFortranLexer.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsFortranLexer.h,v $ - Language: C++ - Date: $Date: 2008-04-21 19:21:57 $ - Version: $Revision: 1.7.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmDependsFortran_yyHEADER_H #define cmDependsFortran_yyHEADER_H 1 #define cmDependsFortran_yyIN_HEADER 1 diff --git a/Source/cmDependsFortranLexer.in.l b/Source/cmDependsFortranLexer.in.l index 583aa8e2c..af8e37d22 100644 --- a/Source/cmDependsFortranLexer.in.l +++ b/Source/cmDependsFortranLexer.in.l @@ -1,20 +1,15 @@ %{ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsFortranLexer.in.l,v $ - Language: C++ - Date: $Date: 2008-04-24 16:56:25 $ - Version: $Revision: 1.10.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /*------------------------------------------------------------------------- Portions of this source have been derived from makedepf90 version 2.8.8, @@ -37,6 +32,7 @@ Modify cmDependsFortranLexer.cxx: - remove TABs - remove "yyscanner" argument from these methods: yy_fatal_error, cmDependsFortran_yyalloc, cmDependsFortran_yyrealloc, cmDependsFortran_yyfree + - remove "yyscanner = NULL" from end of cmDependsFortran_yylex_destroy - remove all YY_BREAK lines occurring right after return statements - change while ( 1 ) to for(;;) diff --git a/Source/cmDependsFortranParser.cxx b/Source/cmDependsFortranParser.cxx index 75b8cda32..ea31d3a47 100644 --- a/Source/cmDependsFortranParser.cxx +++ b/Source/cmDependsFortranParser.cxx @@ -1,14 +1,14 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 2.4.1. */ /* Skeleton implementation for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify + 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. + the Free Software Foundation, either version 3 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 @@ -16,9 +16,7 @@ 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. */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -47,7 +45,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.3" +#define YYBISON_VERSION "2.4.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -55,107 +53,41 @@ /* Pure parsers. */ #define YYPURE 1 +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + /* Using locations. */ #define YYLSP_NEEDED 0 /* Substitute the variable and function names. */ -#define yyparse cmDependsFortran_yyparse -#define yylex cmDependsFortran_yylex -#define yyerror cmDependsFortran_yyerror -#define yylval cmDependsFortran_yylval -#define yychar cmDependsFortran_yychar -#define yydebug cmDependsFortran_yydebug -#define yynerrs cmDependsFortran_yynerrs - - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - EOSTMT = 258, - ASSIGNMENT_OP = 259, - GARBAGE = 260, - CPP_INCLUDE = 261, - F90PPR_INCLUDE = 262, - COCO_INCLUDE = 263, - F90PPR_DEFINE = 264, - CPP_DEFINE = 265, - F90PPR_UNDEF = 266, - CPP_UNDEF = 267, - CPP_IFDEF = 268, - CPP_IFNDEF = 269, - CPP_IF = 270, - CPP_ELSE = 271, - CPP_ELIF = 272, - CPP_ENDIF = 273, - F90PPR_IFDEF = 274, - F90PPR_IFNDEF = 275, - F90PPR_IF = 276, - F90PPR_ELSE = 277, - F90PPR_ELIF = 278, - F90PPR_ENDIF = 279, - COMMA = 280, - DCOLON = 281, - CPP_TOENDL = 282, - UNTERMINATED_STRING = 283, - STRING = 284, - WORD = 285 - }; -#endif -/* Tokens. */ -#define EOSTMT 258 -#define ASSIGNMENT_OP 259 -#define GARBAGE 260 -#define CPP_INCLUDE 261 -#define F90PPR_INCLUDE 262 -#define COCO_INCLUDE 263 -#define F90PPR_DEFINE 264 -#define CPP_DEFINE 265 -#define F90PPR_UNDEF 266 -#define CPP_UNDEF 267 -#define CPP_IFDEF 268 -#define CPP_IFNDEF 269 -#define CPP_IF 270 -#define CPP_ELSE 271 -#define CPP_ELIF 272 -#define CPP_ENDIF 273 -#define F90PPR_IFDEF 274 -#define F90PPR_IFNDEF 275 -#define F90PPR_IF 276 -#define F90PPR_ELSE 277 -#define F90PPR_ELIF 278 -#define F90PPR_ENDIF 279 -#define COMMA 280 -#define DCOLON 281 -#define CPP_TOENDL 282 -#define UNTERMINATED_STRING 283 -#define STRING 284 -#define WORD 285 - - +#define yyparse cmDependsFortran_yyparse +#define yylex cmDependsFortran_yylex +#define yyerror cmDependsFortran_yyerror +#define yylval cmDependsFortran_yylval +#define yychar cmDependsFortran_yychar +#define yydebug cmDependsFortran_yydebug +#define yynerrs cmDependsFortran_yynerrs /* Copy the first part of user declarations. */ -#line 1 "cmDependsFortranParser.y" -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsFortranParser.cxx,v $ - Language: C++ - Date: $Date: 2009-03-23 17:58:40 $ - Version: $Revision: 1.16.2.3 $ +/* Line 189 of yacc.c */ +#line 1 "cmDependsFortranParser.y" - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /*------------------------------------------------------------------------- Portions of this source have been derived from makedepf90 version 2.8.8, @@ -187,6 +119,8 @@ Modify cmDependsFortranParser.cxx: #include "cmDependsFortranParser.h" /* Interface to parser object. */ #include "cmDependsFortranParserTokens.h" /* Need YYSTYPE for YY_DECL. */ +#include + /* Configure the parser to use a lexer object. */ #define YYPARSE_PARAM yyscanner #define YYLEX_PARAM yyscanner @@ -204,59 +138,10 @@ static void cmDependsFortranError(yyscan_t yyscanner, const char* message) cmDependsFortranParser_Error(parser, message); } -static char charmap[] = { - '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', - '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', - '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', - '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', - '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', - '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', - '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', - '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', - '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', - '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', - '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', - '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', - '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', - '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', - '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', - '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', - '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', - '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', - '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', - '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', - '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', - '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', - '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', - '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', - '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', - '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' -}; - -inline int strcasecmpCM(const char *s1, const char *s2) -{ - const char *cm = charmap; - unsigned char const* us1 = reinterpret_cast(s1); - unsigned char const* us2 = reinterpret_cast(s2); - - while(cm[*us1] == cm[*us2++]) - if(*us1++ == '\0') - { - return(0); - } - return(cm[*us1] - cm[*--us2]); -} - static bool cmDependsFortranParserIsKeyword(const char* word, const char* keyword) { - return strcasecmpCM(word, keyword) == 0; + return cmsysString_strcasecmp(word, keyword) == 0; } /* Disable some warnings in the generated code. */ @@ -276,6 +161,9 @@ static bool cmDependsFortranParserIsKeyword(const char* word, #endif +/* Line 189 of yacc.c */ +#line 172 "cmDependsFortranParser.cxx" + /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -294,27 +182,101 @@ static bool cmDependsFortranParserIsKeyword(const char* word, # define YYTOKEN_TABLE 0 #endif + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + EOSTMT = 258, + ASSIGNMENT_OP = 259, + GARBAGE = 260, + CPP_INCLUDE = 261, + F90PPR_INCLUDE = 262, + COCO_INCLUDE = 263, + F90PPR_DEFINE = 264, + CPP_DEFINE = 265, + F90PPR_UNDEF = 266, + CPP_UNDEF = 267, + CPP_IFDEF = 268, + CPP_IFNDEF = 269, + CPP_IF = 270, + CPP_ELSE = 271, + CPP_ELIF = 272, + CPP_ENDIF = 273, + F90PPR_IFDEF = 274, + F90PPR_IFNDEF = 275, + F90PPR_IF = 276, + F90PPR_ELSE = 277, + F90PPR_ELIF = 278, + F90PPR_ENDIF = 279, + COMMA = 280, + DCOLON = 281, + CPP_TOENDL = 282, + UNTERMINATED_STRING = 283, + STRING = 284, + WORD = 285 + }; +#endif +/* Tokens. */ +#define EOSTMT 258 +#define ASSIGNMENT_OP 259 +#define GARBAGE 260 +#define CPP_INCLUDE 261 +#define F90PPR_INCLUDE 262 +#define COCO_INCLUDE 263 +#define F90PPR_DEFINE 264 +#define CPP_DEFINE 265 +#define F90PPR_UNDEF 266 +#define CPP_UNDEF 267 +#define CPP_IFDEF 268 +#define CPP_IFNDEF 269 +#define CPP_IF 270 +#define CPP_ELSE 271 +#define CPP_ELIF 272 +#define CPP_ENDIF 273 +#define F90PPR_IFDEF 274 +#define F90PPR_IFNDEF 275 +#define F90PPR_IF 276 +#define F90PPR_ELSE 277 +#define F90PPR_ELIF 278 +#define F90PPR_ENDIF 279 +#define COMMA 280 +#define DCOLON 281 +#define CPP_TOENDL 282 +#define UNTERMINATED_STRING 283 +#define STRING 284 +#define WORD 285 + + + + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -#line 141 "cmDependsFortranParser.y" { + +/* Line 214 of yacc.c */ +#line 94 "cmDependsFortranParser.y" + char* string; -} -/* Line 187 of yacc.c. */ -#line 305 "cmDependsFortranParser.cxx" - YYSTYPE; + + + +/* Line 214 of yacc.c */ +#line 274 "cmDependsFortranParser.cxx" +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 #endif - /* Copy the second part of user declarations. */ -/* Line 216 of yacc.c. */ -#line 318 "cmDependsFortranParser.cxx" +/* Line 264 of yacc.c */ +#line 286 "cmDependsFortranParser.cxx" #ifdef short # undef short @@ -389,14 +351,14 @@ typedef short int yytype_int16; #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int -YYID (int i) +YYID (int yyi) #else static int -YYID (i) - int i; +YYID (yyi) + int yyi; #endif { - return i; + return yyi; } #endif @@ -477,9 +439,9 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss; - YYSTYPE yyvs; - }; + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) @@ -513,12 +475,12 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack) \ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ @@ -618,12 +580,12 @@ static const yytype_int8 yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 162, 162, 162, 164, 164, 166, 172, 182, 212, - 223, 236, 247, 254, 260, 266, 272, 278, 283, 288, - 293, 298, 302, 303, 304, 309, 309, 309, 310, 310, - 311, 311, 312, 312, 313, 313, 314, 314, 315, 315, - 316, 316, 317, 317, 318, 318, 321, 322, 323, 324, - 325, 326, 327 + 0, 115, 115, 115, 117, 117, 119, 125, 135, 165, + 176, 189, 200, 207, 213, 219, 225, 231, 236, 241, + 246, 251, 255, 256, 257, 262, 262, 262, 263, 263, + 264, 264, 265, 265, 266, 266, 267, 267, 268, 268, + 269, 269, 270, 270, 271, 271, 274, 275, 276, 277, + 278, 279, 280 }; #endif @@ -993,17 +955,20 @@ yy_symbol_print (yyoutput, yytype, yyvaluep) #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void -yy_stack_print (bottom, top) - yytype_int16 *bottom; - yytype_int16 *top; +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; #endif { YYFPRINTF (stderr, "Stack now"); - for (; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } YYFPRINTF (stderr, "\n"); } @@ -1037,11 +1002,11 @@ yy_reduce_print (yyvsp, yyrule) /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { - fprintf (stderr, " $%d = ", yyi + 1); + YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); - fprintf (stderr, "\n"); + YYFPRINTF (stderr, "\n"); } } @@ -1321,10 +1286,8 @@ yydestruct (yymsg, yytype, yyvaluep) break; } } - /* Prevent warnings from -Wmissing-prototypes. */ - #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); @@ -1343,10 +1306,9 @@ int yyparse (); - -/*----------. -| yyparse. | -`----------*/ +/*-------------------------. +| yyparse or yypush_parse. | +`-------------------------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ @@ -1370,74 +1332,75 @@ yyparse () #endif #endif { - /* The look-ahead symbol. */ +/* The lookahead symbol. */ int yychar; -/* The semantic value of the look-ahead symbol. */ +/* The semantic value of the lookahead symbol. */ YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; - - int yystate; - int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Look-ahead token as an internal (translated) token number. */ - int yytoken = 0; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ + /* Number of syntax errors so far. */ + int yynerrs; - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss = yyssa; - yytype_int16 *yyssp; + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp; + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; - YYSIZE_T yystacksize = YYINITDEPTH; + YYSIZE_T yystacksize; + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; + yytoken = 0; + yyss = yyssa; + yyvs = yyvsa; + yystacksize = YYINITDEPTH; + YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ + yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ - yyssp = yyss; yyvsp = yyvs; @@ -1467,7 +1430,6 @@ int yynerrs; YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; - /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might @@ -1475,7 +1437,6 @@ int yynerrs; yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); yyss = yyss1; @@ -1498,9 +1459,8 @@ int yynerrs; (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); @@ -1511,7 +1471,6 @@ int yynerrs; yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); @@ -1521,6 +1480,9 @@ int yynerrs; YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + if (yystate == YYFINAL) + YYACCEPT; + goto yybackup; /*-----------. @@ -1529,16 +1491,16 @@ int yynerrs; yybackup: /* Do appropriate processing given the current state. Read a - look-ahead token if we need one and don't already have one. */ + lookahead token if we need one and don't already have one. */ - /* First try to decide what to do without reference to look-ahead token. */ + /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; - /* Not known => get a look-ahead token if don't already have one. */ + /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); @@ -1570,20 +1532,16 @@ yybackup: goto yyreduce; } - if (yyn == YYFINAL) - YYACCEPT; - /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; - /* Shift the look-ahead token. */ + /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - /* Discard the shifted token unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; + /* Discard the shifted token. */ + yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; @@ -1623,14 +1581,18 @@ yyreduce: switch (yyn) { case 6: -#line 167 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 120 "cmDependsFortranParser.y" { free((yyvsp[(1) - (4)].string)); } break; case 7: -#line 173 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 126 "cmDependsFortranParser.y" { if (cmDependsFortranParserIsKeyword((yyvsp[(1) - (2)].string), "interface")) { @@ -1643,7 +1605,9 @@ yyreduce: break; case 8: -#line 183 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 136 "cmDependsFortranParser.y" { if (cmDependsFortranParserIsKeyword((yyvsp[(1) - (4)].string), "use")) { @@ -1676,7 +1640,9 @@ yyreduce: break; case 9: -#line 213 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 166 "cmDependsFortranParser.y" { if (cmDependsFortranParserIsKeyword((yyvsp[(1) - (5)].string), "use")) { @@ -1690,7 +1656,9 @@ yyreduce: break; case 10: -#line 224 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 177 "cmDependsFortranParser.y" { if (cmDependsFortranParserIsKeyword((yyvsp[(1) - (7)].string), "use") && cmDependsFortranParserIsKeyword((yyvsp[(3) - (7)].string), "non_intrinsic") ) @@ -1706,7 +1674,9 @@ yyreduce: break; case 11: -#line 237 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 190 "cmDependsFortranParser.y" { if (cmDependsFortranParserIsKeyword((yyvsp[(1) - (4)].string), "include")) { @@ -1720,7 +1690,9 @@ yyreduce: break; case 12: -#line 248 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 201 "cmDependsFortranParser.y" { cmDependsFortranParser* parser = cmDependsFortran_yyget_extra(yyscanner); @@ -1730,7 +1702,9 @@ yyreduce: break; case 13: -#line 255 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 208 "cmDependsFortranParser.y" { cmDependsFortranParser* parser = cmDependsFortran_yyget_extra(yyscanner); cmDependsFortranParser_RuleDefine(parser, (yyvsp[(2) - (4)].string)); @@ -1739,7 +1713,9 @@ yyreduce: break; case 14: -#line 261 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 214 "cmDependsFortranParser.y" { cmDependsFortranParser* parser = cmDependsFortran_yyget_extra(yyscanner); cmDependsFortranParser_RuleUndef(parser, (yyvsp[(2) - (4)].string)); @@ -1748,7 +1724,9 @@ yyreduce: break; case 15: -#line 267 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 220 "cmDependsFortranParser.y" { cmDependsFortranParser* parser = cmDependsFortran_yyget_extra(yyscanner); cmDependsFortranParser_RuleIfdef(parser, (yyvsp[(2) - (4)].string)); @@ -1757,7 +1735,9 @@ yyreduce: break; case 16: -#line 273 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 226 "cmDependsFortranParser.y" { cmDependsFortranParser* parser = cmDependsFortran_yyget_extra(yyscanner); cmDependsFortranParser_RuleIfndef(parser, (yyvsp[(2) - (4)].string)); @@ -1766,7 +1746,9 @@ yyreduce: break; case 17: -#line 279 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 232 "cmDependsFortranParser.y" { cmDependsFortranParser* parser = cmDependsFortran_yyget_extra(yyscanner); cmDependsFortranParser_RuleIf(parser); @@ -1774,7 +1756,9 @@ yyreduce: break; case 18: -#line 284 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 237 "cmDependsFortranParser.y" { cmDependsFortranParser* parser = cmDependsFortran_yyget_extra(yyscanner); cmDependsFortranParser_RuleElif(parser); @@ -1782,7 +1766,9 @@ yyreduce: break; case 19: -#line 289 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 242 "cmDependsFortranParser.y" { cmDependsFortranParser* parser = cmDependsFortran_yyget_extra(yyscanner); cmDependsFortranParser_RuleElse(parser); @@ -1790,7 +1776,9 @@ yyreduce: break; case 20: -#line 294 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 247 "cmDependsFortranParser.y" { cmDependsFortranParser* parser = cmDependsFortran_yyget_extra(yyscanner); cmDependsFortranParser_RuleEndif(parser); @@ -1798,25 +1786,32 @@ yyreduce: break; case 21: -#line 299 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 252 "cmDependsFortranParser.y" { free((yyvsp[(1) - (4)].string)); } break; case 46: -#line 321 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 274 "cmDependsFortranParser.y" { free ((yyvsp[(1) - (1)].string)); } break; case 47: -#line 322 "cmDependsFortranParser.y" + +/* Line 1455 of yacc.c */ +#line 275 "cmDependsFortranParser.y" { free ((yyvsp[(1) - (1)].string)); } break; -/* Line 1267 of yacc.c. */ -#line 1820 "cmDependsFortranParser.cxx" + +/* Line 1455 of yacc.c */ +#line 1821 "cmDependsFortranParser.cxx" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -1827,7 +1822,6 @@ yyreduce: *++yyvsp = yyval; - /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -1892,7 +1886,7 @@ yyerrlab: if (yyerrstatus == 3) { - /* If just tried and failed to reuse look-ahead token after an + /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) @@ -1910,7 +1904,7 @@ yyerrlab: } #if 0 - /* Else will try to reuse look-ahead token after shifting the error + /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; @@ -1968,9 +1962,6 @@ yyerrlab1: YY_STACK_PRINT (yyss, yyssp); } - if (yyn == YYFINAL) - YYACCEPT; - *++yyvsp = yylval; @@ -1995,7 +1986,7 @@ yyabortlab: yyresult = 1; goto yyreturn; -#ifndef yyoverflow +#if !defined(yyoverflow) || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -2006,7 +1997,7 @@ yyexhaustedlab: #endif yyreturn: - if (yychar != YYEOF && yychar != YYEMPTY) + if (yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); /* Do not reclaim the symbols of the rule which action triggered @@ -2032,7 +2023,8 @@ yyreturn: } -#line 330 "cmDependsFortranParser.y" -/* End of grammar */ +/* Line 1675 of yacc.c */ +#line 283 "cmDependsFortranParser.y" +/* End of grammar */ diff --git a/Source/cmDependsFortranParser.h b/Source/cmDependsFortranParser.h index 109ef7ee2..399c3c8d9 100644 --- a/Source/cmDependsFortranParser.h +++ b/Source/cmDependsFortranParser.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsFortranParser.h,v $ - Language: C++ - Date: $Date: 2007-10-03 19:41:39 $ - Version: $Revision: 1.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmDependsFortranParser_h #define cmDependsFortranParser_h diff --git a/Source/cmDependsFortranParser.y b/Source/cmDependsFortranParser.y index f42b8892a..00d3327a7 100644 --- a/Source/cmDependsFortranParser.y +++ b/Source/cmDependsFortranParser.y @@ -1,20 +1,15 @@ %{ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsFortranParser.y,v $ - Language: C++ - Date: $Date: 2009-03-23 17:58:40 $ - Version: $Revision: 1.18.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /*------------------------------------------------------------------------- Portions of this source have been derived from makedepf90 version 2.8.8, @@ -46,6 +41,8 @@ Modify cmDependsFortranParser.cxx: #include "cmDependsFortranParser.h" /* Interface to parser object. */ #include "cmDependsFortranParserTokens.h" /* Need YYSTYPE for YY_DECL. */ +#include + /* Configure the parser to use a lexer object. */ #define YYPARSE_PARAM yyscanner #define YYLEX_PARAM yyscanner @@ -63,59 +60,10 @@ static void cmDependsFortranError(yyscan_t yyscanner, const char* message) cmDependsFortranParser_Error(parser, message); } -static char charmap[] = { - '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', - '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', - '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', - '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', - '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', - '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', - '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', - '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', - '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', - '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', - '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', - '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', - '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', - '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', - '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', - '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', - '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', - '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', - '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', - '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', - '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', - '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', - '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', - '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', - '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', - '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', - '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', - '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', - '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' -}; - -inline int strcasecmpCM(const char *s1, const char *s2) -{ - const char *cm = charmap; - unsigned char const* us1 = reinterpret_cast(s1); - unsigned char const* us2 = reinterpret_cast(s2); - - while(cm[*us1] == cm[*us2++]) - if(*us1++ == '\0') - { - return(0); - } - return(cm[*us1] - cm[*--us2]); -} - static bool cmDependsFortranParserIsKeyword(const char* word, const char* keyword) { - return strcasecmpCM(word, keyword) == 0; + return cmsysString_strcasecmp(word, keyword) == 0; } /* Disable some warnings in the generated code. */ diff --git a/Source/cmDependsFortranParserTokens.h b/Source/cmDependsFortranParserTokens.h index 607927969..0bbcaaea1 100644 --- a/Source/cmDependsFortranParserTokens.h +++ b/Source/cmDependsFortranParserTokens.h @@ -1,14 +1,14 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 2.4.1. */ /* Skeleton interface for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify + 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. + the Free Software Foundation, either version 3 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 @@ -16,9 +16,7 @@ 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. */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -104,14 +102,17 @@ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -#line 141 "cmDependsFortranParser.y" { + +/* Line 1676 of yacc.c */ +#line 94 "cmDependsFortranParser.y" + char* string; -} -/* Line 1489 of yacc.c. */ -#line 113 "cmDependsFortranParserTokens.h" - YYSTYPE; + +/* Line 1676 of yacc.c */ +#line 118 "cmDependsFortranParserTokens.h" +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 #endif diff --git a/Source/cmDependsJava.cxx b/Source/cmDependsJava.cxx index 06c93df61..1d849145c 100644 --- a/Source/cmDependsJava.cxx +++ b/Source/cmDependsJava.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsJava.cxx,v $ - Language: C++ - Date: $Date: 2005-10-12 17:52:29 $ - Version: $Revision: 1.7 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmDependsJava.h" #include "cmDependsJavaParserHelper.h" @@ -43,7 +38,8 @@ bool cmDependsJava::WriteDependencies(const char *src, const char *, return true; } -bool cmDependsJava::CheckDependencies(std::istream&) +bool cmDependsJava::CheckDependencies(std::istream&, + std::map&) { return true; } diff --git a/Source/cmDependsJava.h b/Source/cmDependsJava.h index f331f3038..fe6fef50d 100644 --- a/Source/cmDependsJava.h +++ b/Source/cmDependsJava.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsJava.h,v $ - Language: C++ - Date: $Date: 2005-10-12 17:52:29 $ - Version: $Revision: 1.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmDependsJava_h #define cmDependsJava_h @@ -36,7 +31,8 @@ protected: // Implement writing/checking methods required by superclass. virtual bool WriteDependencies(const char *src, const char *file, std::ostream& makeDepends, std::ostream& internalDepends); - virtual bool CheckDependencies(std::istream& internalDepends); + virtual bool CheckDependencies(std::istream& internalDepends, + std::map& validDeps); private: cmDependsJava(cmDependsJava const&); // Purposely not implemented. diff --git a/Source/cmDependsJavaLexer.cxx b/Source/cmDependsJavaLexer.cxx index 50102fc63..d7149c7ed 100644 --- a/Source/cmDependsJavaLexer.cxx +++ b/Source/cmDependsJavaLexer.cxx @@ -641,22 +641,17 @@ static yyconst flex_int16_t yy_chk[479] = #define YY_RESTORE_YY_MORE_OFFSET #line 1 "cmDependsJavaLexer.in.l" #line 2 "cmDependsJavaLexer.in.l" -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsJavaLexer.cxx,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:46 $ - Version: $Revision: 1.12.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /* This file must be translated to C and modified to build everywhere. diff --git a/Source/cmDependsJavaLexer.h b/Source/cmDependsJavaLexer.h index d2f9a128f..09c19bfff 100644 --- a/Source/cmDependsJavaLexer.h +++ b/Source/cmDependsJavaLexer.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsJavaLexer.h,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:46 $ - Version: $Revision: 1.5.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmDependsJava_yyHEADER_H #define cmDependsJava_yyHEADER_H 1 #define cmDependsJava_yyIN_HEADER 1 diff --git a/Source/cmDependsJavaLexer.in.l b/Source/cmDependsJavaLexer.in.l index 496c3eb7f..aae7ec658 100644 --- a/Source/cmDependsJavaLexer.in.l +++ b/Source/cmDependsJavaLexer.in.l @@ -1,20 +1,15 @@ %{ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsJavaLexer.in.l,v $ - Language: C++ - Date: $Date: 2006-08-08 18:00:27 $ - Version: $Revision: 1.9 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /* This file must be translated to C and modified to build everywhere. diff --git a/Source/cmDependsJavaParser.cxx b/Source/cmDependsJavaParser.cxx index 93ee3424d..7f7c385da 100644 --- a/Source/cmDependsJavaParser.cxx +++ b/Source/cmDependsJavaParser.cxx @@ -282,22 +282,17 @@ /* Copy the first part of user declarations. */ #line 1 "cmDependsJavaParser.y" -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsJavaParser.cxx,v $ - Language: C++ - Date: $Date: 2007-03-05 15:36:06 $ - Version: $Revision: 1.7 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /* This file must be translated to C and modified to build everywhere. diff --git a/Source/cmDependsJavaParser.y b/Source/cmDependsJavaParser.y index bbb849b10..53210b8ca 100644 --- a/Source/cmDependsJavaParser.y +++ b/Source/cmDependsJavaParser.y @@ -1,20 +1,15 @@ %{ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsJavaParser.y,v $ - Language: C++ - Date: $Date: 2006-08-01 15:38:41 $ - Version: $Revision: 1.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ /* This file must be translated to C and modified to build everywhere. diff --git a/Source/cmDependsJavaParserHelper.cxx b/Source/cmDependsJavaParserHelper.cxx index 727bb627e..7b595cc1f 100644 --- a/Source/cmDependsJavaParserHelper.cxx +++ b/Source/cmDependsJavaParserHelper.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsJavaParserHelper.cxx,v $ - Language: C++ - Date: $Date: 2006-05-10 19:01:22 $ - Version: $Revision: 1.5 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmDependsJavaParserHelper.h" #include "cmSystemTools.h" @@ -52,8 +47,8 @@ void cmDependsJavaParserHelper::CurrentClass rname += this->Name; files->push_back(rname); std::vector::iterator it; - for ( it = this->NestedClasses.begin(); - it != this->NestedClasses.end(); + for ( it = this->NestedClasses->begin(); + it != this->NestedClasses->end(); ++ it ) { it->AddFileNamesForPrinting(files, rname.c_str(), sep); @@ -249,7 +244,7 @@ void cmDependsJavaParserHelper::EndClass() abort(); } this->CurrentDepth --; - parent->NestedClasses.push_back(*current); + parent->NestedClasses->push_back(*current); this->ClassStack.erase(this->ClassStack.end()-1, this->ClassStack.end()); } @@ -275,8 +270,8 @@ std::vector cmDependsJavaParserHelper::GetFilesProduced() std::vector files; CurrentClass* toplevel = &(*(this->ClassStack.begin())); std::vector::iterator it; - for ( it = toplevel->NestedClasses.begin(); - it != toplevel->NestedClasses.end(); + for ( it = toplevel->NestedClasses->begin(); + it != toplevel->NestedClasses->end(); ++ it ) { it->AddFileNamesForPrinting(&files, 0, "$"); diff --git a/Source/cmDependsJavaParserHelper.h b/Source/cmDependsJavaParserHelper.h index 374cf4c4e..baecab378 100644 --- a/Source/cmDependsJavaParserHelper.h +++ b/Source/cmDependsJavaParserHelper.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDependsJavaParserHelper.h,v $ - Language: C++ - Date: $Date: 2006-05-10 19:01:22 $ - Version: $Revision: 1.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmDependsJavaParserHelper_h #define cmDependsJavaParserHelper_h @@ -70,14 +65,37 @@ public: private: class CurrentClass - { + { public: cmStdString Name; - std::vector NestedClasses; - CurrentClass() {} + std::vector* NestedClasses; + CurrentClass() + { + this->NestedClasses = new std::vector; + } + ~CurrentClass() + { + delete this->NestedClasses; + } + CurrentClass& operator=(CurrentClass const& c) + { + this->NestedClasses->clear(); + this->Name = c.Name; + std::copy( + c.NestedClasses->begin(), + c.NestedClasses->end(), + std::back_inserter( + *this->NestedClasses) + ); + return *this; + } + CurrentClass(CurrentClass const& c) + { + (*this) = c; + } void AddFileNamesForPrinting(std::vector *files, const char* prefix, const char* sep); - }; + }; cmStdString CurrentPackage; cmStdString::size_type InputBufferPos; cmStdString InputBuffer; diff --git a/Source/cmDocumentVariables.cxx b/Source/cmDocumentVariables.cxx old mode 100755 new mode 100644 index 27afd923f..ea07da46f --- a/Source/cmDocumentVariables.cxx +++ b/Source/cmDocumentVariables.cxx @@ -67,7 +67,7 @@ void cmDocumentVariables::DefineVariables(cmake* cm) "Variables that Provide Information"); cm->DefineProperty ("CMAKE_BUILD_TOOL", cmProperty::VARIABLE, - "Tool used for the acutal build process.", + "Tool used for the actual build process.", "This variable is set to the program that will be" " needed to build the output of CMake. If the " "generator selected was Visual Studio 6, the " @@ -110,9 +110,9 @@ void cmDocumentVariables::DefineVariables(cmake* cm) "Variables that Provide Information"); cm->DefineProperty - ("CMAKE_CACHE_RELEASE_VERSION", cmProperty::VARIABLE, - "Release version of CMake used to create the CMakeCache.txt file", - "This is stores the release version of CMake used to " + ("CMAKE_CACHE_PATCH_VERSION", cmProperty::VARIABLE, + "Patch version of CMake used to create the CMakeCache.txt file", + "This is stores the patch version of CMake used to " "write a CMake cache file. It is only different when " "a different version of CMake is run on a previously " "created cache file.", false, @@ -120,27 +120,42 @@ void cmDocumentVariables::DefineVariables(cmake* cm) cm->DefineProperty ("CMAKE_CFG_INTDIR", cmProperty::VARIABLE, - "Build time configuration directory for project.", - "This is a variable that is used to provide developers" - " access to the intermediate directory used by Visual " - "Studio IDE projects. For example, if building " - "Debug all executables and libraries end up in a " - "Debug directory. On UNIX systems this variable " - "is set to \".\". However, with Visual Studio this " - "variable is set to $(IntDir). $(IntDir) is expanded " - "by the IDE only. So this variable should only be " - "used in custom commands that will be run during " - "the build process. This variable should not be " - "used directly in a CMake command. CMake has no " - "way of knowing if Debug or Release will be picked " - "by the IDE for a build type. If a program needs to " - "know the directory it was built in, it can use " - "CMAKE_INTDIR. CMAKE_INTDIR is a C/C++ preprocessor " - "macro that is defined on the command line of the " - "compiler. If it has a value, it will be the " - "intermediate directory used to build the file. " - "This way an executable or a library can find files " - "that are located in the build directory.",false, + "Build-time reference to per-configuration output subdirectory.", + "For native build systems supporting multiple configurations " + "in the build tree (such as Visual Studio and Xcode), " + "the value is a reference to a build-time variable specifying " + "the name of the per-configuration output subdirectory. " + "On Makefile generators this evaluates to \".\" because there " + "is only one configuration in a build tree. " + "Example values:\n" + " $(IntDir) = Visual Studio 6\n" + " $(OutDir) = Visual Studio 7, 8, 9\n" + " $(Configuration) = Visual Studio 10\n" + " $(CONFIGURATION) = Xcode\n" + " . = Make-based tools\n" + "Since these values are evaluated by the native build system, this " + "variable is suitable only for use in command lines that will be " + "evaluated at build time. " + "Example of intended usage:\n" + " add_executable(mytool mytool.c)\n" + " add_custom_command(\n" + " OUTPUT out.txt\n" + " COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool\n" + " ${CMAKE_CURRENT_SOURCE_DIR}/in.txt out.txt\n" + " DEPENDS mytool in.txt\n" + " )\n" + " add_custom_target(drive ALL DEPENDS out.txt)\n" + "Note that CMAKE_CFG_INTDIR is no longer necessary for this purpose " + "but has been left for compatibility with existing projects. " + "Instead add_custom_command() recognizes executable target names in " + "its COMMAND option, so " + "\"${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool\" can be " + "replaced by just \"mytool\"." + "\n" + "This variable is read-only. Setting it is undefined behavior. " + "In multi-configuration build systems the value of this variable " + "is passed as the value of preprocessor symbol \"CMAKE_INTDIR\" to " + "the compilation of all source files.",false, "Variables that Provide Information"); cm->DefineProperty @@ -161,10 +176,10 @@ void cmDocumentVariables::DefineVariables(cmake* cm) cm->DefineProperty ("CMAKE_EDIT_COMMAND", cmProperty::VARIABLE, - "Full path to CMakeSetup or ccmake.", + "Full path to cmake-gui or ccmake.", "This is the full path to the CMake executable " "that can graphically edit the cache. For example," - " CMakeSetup, ccmake, or cmake -i.",false, + " cmake-gui, ccmake, or cmake -i.",false, "Variables that Provide Information"); cm->DefineProperty @@ -188,8 +203,10 @@ void cmDocumentVariables::DefineVariables(cmake* cm) ("CMAKE_EXECUTABLE_SUFFIX", cmProperty::VARIABLE, "The suffix for executables on this platform.", "The suffix to use for the end of an executable if any, " - ".exe on Windows.",false, - "Variables that Provide Information"); + ".exe on Windows." + "\n" + "CMAKE_EXECUTABLE_SUFFIX_ overrides this for language ." + ,false, "Variables that Provide Information"); cm->DefineProperty ("CMAKE_MAJOR_VERSION", cmProperty::VARIABLE, "The Major version of cmake (i.e. the 2 in 2.X.X)", @@ -263,7 +280,7 @@ void cmDocumentVariables::DefineVariables(cmake* cm) ("CMAKE_SKIP_RPATH", cmProperty::VARIABLE, "If true, do not add run time path information.", "If this is set to TRUE, then the rpath information " - "is not added to compiled executables. The default" + "is not added to compiled executables. The default " "is to add rpath information if the platform supports it." "This allows for easy running from the build tree.",false, "Variables that Provide Information"); @@ -272,7 +289,7 @@ void cmDocumentVariables::DefineVariables(cmake* cm) "Source directory for project.", "This is the top level source directory for the project. " "It corresponds to the source directory given to " - "CMakeSetup or ccmake.",false, + "cmake-gui or ccmake.",false, "Variables that Provide Information"); cm->DefineProperty ("CMAKE_STANDARD_LIBRARIES", cmProperty::VARIABLE, @@ -331,50 +348,67 @@ void cmDocumentVariables::DefineVariables(cmake* cm) ("CMAKE_IMPORT_LIBRARY_PREFIX", cmProperty::VARIABLE, "The prefix for import libraries that you link to.", "The prefix to use for the name of an import library if used " - "on this platform.", - false, - "Variables that Provide Information"); + "on this platform." + "\n" + "CMAKE_IMPORT_LIBRARY_PREFIX_ overrides this for language ." + ,false, "Variables that Provide Information"); cm->DefineProperty ("CMAKE_IMPORT_LIBRARY_SUFFIX", cmProperty::VARIABLE, "The suffix for import libraries that you link to.", "The suffix to use for the end of an import library if used " - "onthis platform.", - false, - "Variables that Provide Information"); + "on this platform." + "\n" + "CMAKE_IMPORT_LIBRARY_SUFFIX_ overrides this for language ." + ,false, "Variables that Provide Information"); cm->DefineProperty ("CMAKE_SHARED_LIBRARY_PREFIX", cmProperty::VARIABLE, "The prefix for shared libraries that you link to.", - "The prefix to use for the name of a shared library, lib on UNIX.", - false, - "Variables that Provide Information"); + "The prefix to use for the name of a shared library, lib on UNIX." + "\n" + "CMAKE_SHARED_LIBRARY_PREFIX_ overrides this for language ." + ,false, "Variables that Provide Information"); cm->DefineProperty ("CMAKE_SHARED_LIBRARY_SUFFIX", cmProperty::VARIABLE, "The suffix for shared libraries that you link to.", - "The suffix to use for the end of a shared library, .dll on Windows.", - false, - "Variables that Provide Information"); + "The suffix to use for the end of a shared library, .dll on Windows." + "\n" + "CMAKE_SHARED_LIBRARY_SUFFIX_ overrides this for language ." + ,false, "Variables that Provide Information"); cm->DefineProperty ("CMAKE_SHARED_MODULE_PREFIX", cmProperty::VARIABLE, "The prefix for loadable modules that you link to.", - "The prefix to use for the name of a loadable module on this platform.", - false, - "Variables that Provide Information"); + "The prefix to use for the name of a loadable module on this platform." + "\n" + "CMAKE_SHARED_MODULE_PREFIX_ overrides this for language ." + ,false, "Variables that Provide Information"); cm->DefineProperty ("CMAKE_SHARED_MODULE_SUFFIX", cmProperty::VARIABLE, "The suffix for shared libraries that you link to.", - "The suffix to use for the end of a loadable module on this platform", - false, - "Variables that Provide Information"); + "The suffix to use for the end of a loadable module on this platform" + "\n" + "CMAKE_SHARED_MODULE_SUFFIX_ overrides this for language ." + ,false, "Variables that Provide Information"); cm->DefineProperty ("CMAKE_STATIC_LIBRARY_PREFIX", cmProperty::VARIABLE, "The prefix for static libraries that you link to.", - "The prefix to use for the name of a static library, lib on UNIX.", - false, - "Variables that Provide Information"); + "The prefix to use for the name of a static library, lib on UNIX." + "\n" + "CMAKE_STATIC_LIBRARY_PREFIX_ overrides this for language ." + ,false, "Variables that Provide Information"); cm->DefineProperty ("CMAKE_STATIC_LIBRARY_SUFFIX", cmProperty::VARIABLE, "The suffix for static libraries that you link to.", - "The suffix to use for the end of a static library, .lib on Windows.", + "The suffix to use for the end of a static library, .lib on Windows." + "\n" + "CMAKE_STATIC_LIBRARY_SUFFIX_ overrides this for language ." + ,false, "Variables that Provide Information"); + cm->DefineProperty + ("CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES", cmProperty::VARIABLE, + "Additional suffixes for shared libraries.", + "Extensions for shared libraries other than that specified by " + "CMAKE_SHARED_LIBRARY_SUFFIX, if any. " + "CMake uses this to recognize external shared library files during " + "analysis of libraries linked by a target.", false, "Variables that Provide Information"); @@ -447,10 +481,23 @@ void cmDocumentVariables::DefineVariables(cmake* cm) " on UNIX and c:/Program Files on Windows.",false, "Variables That Change Behavior"); + cm->DefineProperty + ("CMAKE_SKIP_INSTALL_ALL_DEPENDENCY", cmProperty::VARIABLE, + "Don't make the install target depend on the all target.", + "By default, the \"install\" target depends on the \"all\" target. " + "This has the effect, that when \"make install\" is invoked or INSTALL " + "is built, first the \"all\" target is built, then the installation " + "starts. " + "If CMAKE_SKIP_INSTALL_ALL_DEPENDENCY is set to TRUE, this dependency " + "is not created, so the installation process will start immediately, " + "independent from whether the project has been completely built or not." + ,false, + "Variables That Change Behavior"); + cm->DefineProperty ("CMAKE_MODULE_PATH", cmProperty::VARIABLE, "Path to look for cmake modules to load.", - "Specifies a path to override the default seach path for " + "Specifies a path to override the default search path for " "CMake modules. For example include commands will look " "in this path first for modules to include.", false, @@ -584,8 +631,8 @@ void cmDocumentVariables::DefineVariables(cmake* cm) "to 1 for static the static MFC library, and 2 for " "the shared MFC library. This is used in visual " "studio 6 and 7 project files. The CMakeSetup " - "dialog uses MFC and the CMakeLists.txt looks like this:\n" - "ADD_DEFINITIONS(-D_AFXDLL)\n" + "dialog used MFC and the CMakeLists.txt looks like this:\n" + "add_definitions(-D_AFXDLL)\n" "set(CMAKE_MFC_FLAG 2)\n" "add_executable(CMakeSetup WIN32 ${SRCS})\n",false, "Variables That Change Behavior"); @@ -603,7 +650,7 @@ void cmDocumentVariables::DefineVariables(cmake* cm) cm->DefineProperty ("CMAKE_SYSTEM", cmProperty::VARIABLE, "Name of system cmake is compiling for.", - "This variable is the composite of CMAKE_SYSTEM_NAME" + "This variable is the composite of CMAKE_SYSTEM_NAME " "and CMAKE_SYSTEM_VERSION, like this " "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_VERSION}. " "If CMAKE_SYSTEM_VERSION is not set, then " @@ -737,6 +784,13 @@ void cmDocumentVariables::DefineVariables(cmake* cm) "Set to true when the target system is Windows and on cygwin.",false, "Variables That Describe the System"); + cm->DefineProperty + ("XCODE_VERSION", cmProperty::VARIABLE, + "Version of Xcode (Xcode generator only).", + "Under the Xcode generator, this is the version of Xcode as specified in " + "\"Xcode.app/Contents/version.plist\" (such as \"3.1.2\").",false, + "Variables That Describe the System"); + cm->DefineProperty ("CMAKE_HOST_APPLE", cmProperty::VARIABLE, "True for Apple OSXoperating systems.", @@ -778,6 +832,20 @@ void cmDocumentVariables::DefineVariables(cmake* cm) // Variables that affect the building of object files and // targets. // + cm->DefineProperty + ("CMAKE_INCLUDE_CURRENT_DIR", cmProperty::VARIABLE, + "Automatically add the current source- and build directories " + "to the include path.", + "If this variable is enabled, CMake automatically adds in each " + "directory ${CMAKE_CURRENT_SOURCE_DIR} and ${CMAKE_CURRENT_BINARY_DIR} " + "to the include path for this directory. These additional include " + "directories do not propagate down to subdirectories. This is useful " + "mainly for out-of-source builds, where files generated into the " + "build tree are included by files located in the source tree.\n" + "By default CMAKE_INCLUDE_CURRENT_DIR is OFF.", + false, + "Variables that Control the Build"); + cm->DefineProperty ("CMAKE_INSTALL_RPATH", cmProperty::VARIABLE, "The rpath to use for installed targets.", @@ -871,6 +939,16 @@ void cmDocumentVariables::DefineVariables(cmake* cm) "need to be relinked when installed.",false, "Variables that Control the Build"); + cm->DefineProperty + ("CMAKE_NO_BUILTIN_CHRPATH", cmProperty::VARIABLE, + "Do not use the builtin ELF editor to fix RPATHs on installation.", + "When an ELF binary needs to have a different RPATH after installation " + "than it does in the build tree, CMake uses a builtin editor to change " + "the RPATH in the installed copy. " + "If this variable is set to true then CMake will relink the binary " + "before installation instead of using its builtin editor.",false, + "Variables that Control the Build"); + cm->DefineProperty ("CMAKE_SKIP_BUILD_RPATH", cmProperty::VARIABLE, "Do not include RPATHs in the build tree.", @@ -998,8 +1076,10 @@ void cmDocumentVariables::DefineVariables(cmake* cm) cm->DefineProperty ("CMAKE__SIZEOF_DATA_PTR", cmProperty::VARIABLE, - "An internal variable subject to change.", - "This is used in determining the architecture and is subject to change.", + "Size of pointer-to-data types for language .", + "This holds the size (in bytes) of pointer-to-data types in the target " + "platform ABI. " + "It is defined for languages C and CXX (C++).", false, "Variables for Languages"); @@ -1106,13 +1186,47 @@ void cmDocumentVariables::DefineVariables(cmake* cm) "This prevents system include directories from being treated as user " "include directories on some compilers.", false, "Variables for Languages"); - + + cm->DefineProperty + ("CMAKE__IMPLICIT_LINK_DIRECTORIES", cmProperty::VARIABLE, + "Implicit linker search path detected for language .", + "Compilers typically pass directories containing language runtime " + "libraries and default library search paths when they invoke a linker. " + "These paths are implicit linker search directories for the compiler's " + "language. " + "CMake automatically detects these directories for each language and " + "reports the results in this variable.", false, + "Variables for Languages"); + + cm->DefineProperty + ("CMAKE__IMPLICIT_LINK_LIBRARIES", cmProperty::VARIABLE, + "Implicit link libraries and flags detected for language .", + "Compilers typically pass language runtime library names and " + "other flags when they invoke a linker. " + "These flags are implicit link options for the compiler's language. " + "CMake automatically detects these libraries and flags for each " + "language and reports the results in this variable.", false, + "Variables for Languages"); + + cm->DefineProperty + ("CMAKE__LINKER_PREFERENCE_PROPAGATES", cmProperty::VARIABLE, + "True if CMAKE__LINKER_PREFERENCE propagates across targets.", + "This is used when CMake selects a linker language for a target. " + "Languages compiled directly into the target are always considered. " + "A language compiled into static libraries linked by the target is " + "considered if this variable is true.", false, + "Variables for Languages"); + cm->DefineProperty ("CMAKE__LINKER_PREFERENCE", cmProperty::VARIABLE, - "Determine if a language should be used for linking.", - "If this is \"Preferred\" then if there is a mixed " - "language shared library or executable, then this " - "languages linker command will be used.",false, + "Preference value for linker language selection.", + "The \"linker language\" for executable, shared library, and module " + "targets is the language whose compiler will invoke the linker. " + "The LINKER_LANGUAGE target property sets the language explicitly. " + "Otherwise, the linker language is that whose linker preference value " + "is highest among languages compiled and linked into the target. " + "See also the CMAKE__LINKER_PREFERENCE_PROPAGATES variable.", + false, "Variables for Languages"); cm->DefineProperty @@ -1134,6 +1248,13 @@ void cmDocumentVariables::DefineVariables(cmake* cm) "This is the list of extensions for a " "given languages source files.",false,"Variables for Languages"); + cm->DefineProperty( + "CMAKE__COMPILER_LOADED", cmProperty::VARIABLE, + "Defined to true if the language is enabled.", + "When language is enabled by project() or enable_language() " + "this variable is defined to 1.", + false,"Variables for Languages"); + // variables that are used by cmake but not to be documented cm->DefineProperty("CMAKE_MATCH_0", cmProperty::VARIABLE,0,0); cm->DefineProperty("CMAKE_MATCH_1", cmProperty::VARIABLE,0,0); @@ -1152,8 +1273,6 @@ void cmDocumentVariables::DefineVariables(cmake* cm) cmProperty::VARIABLE,0,0); cm->DefineProperty("CMAKE__COMPILER_ID_RUN", cmProperty::VARIABLE,0,0); - cm->DefineProperty("CMAKE__COMPILER_LOADED", - cmProperty::VARIABLE,0,0); cm->DefineProperty("CMAKE__CREATE_ASSEMBLY_SOURCE", cmProperty::VARIABLE,0,0); cm->DefineProperty("CMAKE__CREATE_PREPROCESSED_SOURCE", @@ -1212,6 +1331,10 @@ void cmDocumentVariables::DefineVariables(cmake* cm) cmProperty::VARIABLE,0,0); cm->DefineProperty("CMAKE_SHARED_LIBRARY_LINK_STATIC__FLAGS", cmProperty::VARIABLE,0,0); + cm->DefineProperty("CMAKE_SHARED_LIBRARY_PREFIX_", + cmProperty::VARIABLE,0,0); + cm->DefineProperty("CMAKE_SHARED_LIBRARY_SUFFIX_", + cmProperty::VARIABLE,0,0); cm->DefineProperty("CMAKE_SHARED_LIBRARY_RUNTIME__FLAG", cmProperty::VARIABLE,0,0); cm->DefineProperty("CMAKE_SHARED_LIBRARY_RUNTIME__FLAG_SEP", @@ -1234,10 +1357,18 @@ void cmDocumentVariables::DefineVariables(cmake* cm) cmProperty::VARIABLE,0,0); cm->DefineProperty("CMAKE_SHARED_MODULE_LINK_STATIC__FLAGS", cmProperty::VARIABLE,0,0); + cm->DefineProperty("CMAKE_SHARED_MODULE_PREFIX_", + cmProperty::VARIABLE,0,0); + cm->DefineProperty("CMAKE_SHARED_MODULE_SUFFIX_", + cmProperty::VARIABLE,0,0); cm->DefineProperty("CMAKE_SHARED_MODULE_RUNTIME__FLAG", cmProperty::VARIABLE,0,0); cm->DefineProperty("CMAKE_SHARED_MODULE_RUNTIME__FLAG_SEP", cmProperty::VARIABLE,0,0); + cm->DefineProperty("CMAKE_STATIC_LIBRARY_PREFIX_", + cmProperty::VARIABLE,0,0); + cm->DefineProperty("CMAKE_STATIC_LIBRARY_SUFFIX_", + cmProperty::VARIABLE,0,0); cm->DefineProperty("CMAKE_LINK_DEPENDENT_LIBRARY_FILES", cmProperty::VARIABLE,0,0); cm->DefineProperty("CMAKE_LINK_DEPENDENT_LIBRARY_DIRS", diff --git a/Source/cmDocumentVariables.h b/Source/cmDocumentVariables.h old mode 100755 new mode 100644 index 98e4d5d5a..1d59b2450 --- a/Source/cmDocumentVariables.h +++ b/Source/cmDocumentVariables.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDocumentVariables.h,v $ - Language: C++ - Date: $Date: 2007-10-18 13:10:42 $ - Version: $Revision: 1.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef cmDocumentVariables_h #define cmDocumentVariables_h class cmake; diff --git a/Source/cmDocumentation.cxx b/Source/cmDocumentation.cxx index 23b9e8517..93eb1999e 100644 --- a/Source/cmDocumentation.cxx +++ b/Source/cmDocumentation.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDocumentation.cxx,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:46 $ - Version: $Revision: 1.69.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmDocumentation.h" #include "cmSystemTools.h" @@ -164,7 +159,7 @@ static const char *cmDocumentationStandardSeeAlso[][3] = static const char *cmDocumentationCopyright[][3] = { {0, - "Copyright (c) 2002 Kitware, Inc., Insight Consortium. " + "Copyright 2000-2009 Kitware, Inc., Insight Software Consortium. " "All rights reserved.", 0}, {0, "Redistribution and use in source and binary forms, with or without " @@ -179,25 +174,23 @@ static const char *cmDocumentationCopyright[][3] = "documentation and/or other materials provided with the distribution.", 0}, {"", - "The names of Kitware, Inc., the Insight Consortium, or the names of " - "any consortium members, or of any contributors, may not be used to " - "endorse or promote products derived from this software without " - "specific prior written permission.", 0}, - {"", - "Modified source versions must be plainly marked as such, and must " - "not be misrepresented as being the original software.", 0}, + "Neither the names of Kitware, Inc., the Insight Software Consortium, " + "nor the names of their contributors may be used to endorse or promote " + "products derived from this software without specific prior written " + "permission.", 0}, {0, - "THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS " - "``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT " + "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 AUTHORS 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.", 0}, + "A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT " + "HOLDER 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.", + 0}, {0, 0, 0} }; @@ -267,6 +260,7 @@ cmDocumentation::cmDocumentation() this->PropertySections.push_back("Properties on Targets"); this->PropertySections.push_back("Properties on Tests"); this->PropertySections.push_back("Properties on Source Files"); + this->PropertySections.push_back("Properties on Cache Entries"); this->VariableSections.push_back("Variables that Provide Information"); this->VariableSections.push_back("Variables That Change Behavior"); diff --git a/Source/cmDocumentation.h b/Source/cmDocumentation.h index 8c8867bc1..3a4a50635 100644 --- a/Source/cmDocumentation.h +++ b/Source/cmDocumentation.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDocumentation.h,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:46 $ - Version: $Revision: 1.33.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef _cmDocumentation_h #define _cmDocumentation_h diff --git a/Source/cmDocumentationFormatter.cxx b/Source/cmDocumentationFormatter.cxx index 1a0c76c1c..6762d6677 100644 --- a/Source/cmDocumentationFormatter.cxx +++ b/Source/cmDocumentationFormatter.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDocumentationFormatter.cxx,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:46 $ - Version: $Revision: 1.1.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmDocumentationFormatter.h" cmDocumentationFormatter::cmDocumentationFormatter() diff --git a/Source/cmDocumentationFormatter.h b/Source/cmDocumentationFormatter.h index 40f8908d3..f8cdc96c4 100644 --- a/Source/cmDocumentationFormatter.h +++ b/Source/cmDocumentationFormatter.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDocumentationFormatter.h,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:46 $ - Version: $Revision: 1.8.2.2 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef _cmDocumentationFormatter_h #define _cmDocumentationFormatter_h diff --git a/Source/cmDocumentationFormatterDocbook.cxx b/Source/cmDocumentationFormatterDocbook.cxx index 70b22b7a1..30873306d 100644 --- a/Source/cmDocumentationFormatterDocbook.cxx +++ b/Source/cmDocumentationFormatterDocbook.cxx @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDocumentationFormatterDocbook.cxx,v $ - Language: C++ - Date: $Date: 2009-01-13 18:03:51 $ - Version: $Revision: 1.1.2.4 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmDocumentationFormatterDocbook.h" #include "cmDocumentationSection.h" //---------------------------------------------------------------------------- diff --git a/Source/cmDocumentationFormatterDocbook.h b/Source/cmDocumentationFormatterDocbook.h index 43ce905cd..213948dcc 100644 --- a/Source/cmDocumentationFormatterDocbook.h +++ b/Source/cmDocumentationFormatterDocbook.h @@ -1,19 +1,14 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDocumentationFormatterDocbook.h,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:46 $ - Version: $Revision: 1.1.2.1 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #ifndef _cmDocumentationFormatterDocbook_h #define _cmDocumentationFormatterDocbook_h diff --git a/Source/cmDocumentationFormatterHTML.cxx b/Source/cmDocumentationFormatterHTML.cxx index 6b3af0bb1..09aff8d2b 100644 --- a/Source/cmDocumentationFormatterHTML.cxx +++ b/Source/cmDocumentationFormatterHTML.cxx @@ -1,22 +1,17 @@ -/*========================================================================= +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile: cmDocumentationFormatterHTML.cxx,v $ - Language: C++ - Date: $Date: 2008-10-24 15:18:46 $ - Version: $Revision: 1.11.2.3 $ + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ #include "cmDocumentationFormatterHTML.h" #include "cmDocumentationSection.h" - +#include "cmVersion.h" //---------------------------------------------------------------------------- static bool cmDocumentationIsHyperlinkChar(char c) { @@ -258,7 +253,9 @@ void cmDocumentationFormatterHTML return; } - os << "

Master Index

\n"; + os << "

Master Index " + << "CMake " << cmVersion::GetCMakeVersion() + << "

\n"; os << "