mirror of
https://github.com/reactos/CMake.git
synced 2024-11-30 23:10:26 +00:00
f8c505d4b3
Introduce the function cmReadGccDepfile that parses a GCC-style depfile and returns its content. The implementation uses a lexer that is modeled after the re2c implementation in Ninja. The sample files of the autotest have been created with gcc 8.3.0. This depfile reader is to be used by the Autogen facility to make use of the depfiles that are generated by Qt's meta object compiler.
1222 lines
34 KiB
CMake
1222 lines
34 KiB
CMake
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
# file Copyright.txt or https://cmake.org/licensing for details.
|
|
|
|
include(CheckIncludeFile)
|
|
# Check if we can build support for ELF parsing.
|
|
if(CMAKE_CXX_PLATFORM_ID MATCHES "OpenBSD")
|
|
CHECK_INCLUDE_FILES("stdint.h;elf_abi.h" HAVE_ELF_H)
|
|
else()
|
|
CHECK_INCLUDE_FILE("elf.h" HAVE_ELF_H)
|
|
endif()
|
|
if(HAVE_ELF_H)
|
|
set(CMAKE_USE_ELF_PARSER 1)
|
|
elseif(HAIKU)
|
|
# On Haiku, we need to include elf32.h from the private headers
|
|
set(CMake_HAIKU_INCLUDE_DIRS
|
|
/boot/system/develop/headers/private/system
|
|
/boot/system/develop/headers/private/system/arch/x86
|
|
)
|
|
|
|
set(CMAKE_REQUIRED_INCLUDES ${CMake_HAIKU_INCLUDE_DIRS})
|
|
CHECK_INCLUDE_FILE("elf32.h" HAVE_ELF32_H)
|
|
unset(CMAKE_REQUIRED_INCLUDES)
|
|
|
|
if(HAVE_ELF32_H)
|
|
set(CMAKE_USE_ELF_PARSER 1)
|
|
else()
|
|
unset(CMake_HAIKU_INCLUDE_DIRS)
|
|
set(CMAKE_USE_ELF_PARSER)
|
|
endif()
|
|
else()
|
|
set(CMAKE_USE_ELF_PARSER)
|
|
endif()
|
|
|
|
if(NOT CMake_DEFAULT_RECURSION_LIMIT)
|
|
if(DEFINED ENV{DASHBOARD_TEST_FROM_CTEST})
|
|
set(CMake_DEFAULT_RECURSION_LIMIT 100)
|
|
elseif(MINGW)
|
|
set(CMake_DEFAULT_RECURSION_LIMIT 400)
|
|
else()
|
|
set(CMake_DEFAULT_RECURSION_LIMIT 1000)
|
|
endif()
|
|
endif()
|
|
|
|
if(APPLE)
|
|
set(CMAKE_USE_MACH_PARSER 1)
|
|
endif()
|
|
|
|
set(EXECUTABLE_OUTPUT_PATH ${CMake_BIN_DIR})
|
|
|
|
if(WIN32)
|
|
# ensure Unicode friendly APIs are used on Windows
|
|
add_definitions(-DUNICODE -D_UNICODE)
|
|
|
|
# minimize windows.h content
|
|
add_definitions(-DWIN32_LEAN_AND_MEAN)
|
|
endif()
|
|
|
|
# configure the .dox.in file
|
|
if(CMake_BUILD_DEVELOPER_REFERENCE)
|
|
configure_file(
|
|
"${CMake_SOURCE_DIR}/Source/dir.dox.in"
|
|
"${CMake_BINARY_DIR}/Source/dir.dox"
|
|
@ONLY
|
|
)
|
|
endif()
|
|
|
|
# configure the .h file
|
|
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"
|
|
)
|
|
|
|
# Tell CMake executable in the build tree where to find the source tree.
|
|
configure_file(
|
|
"${CMake_SOURCE_DIR}/Source/CMakeSourceDir.txt.in"
|
|
"${CMake_BINARY_DIR}/CMakeFiles/CMakeSourceDir.txt" @ONLY
|
|
)
|
|
|
|
# add the include path to find the .h
|
|
include_directories(
|
|
"${CMake_BINARY_DIR}/Source"
|
|
"${CMake_SOURCE_DIR}/Source"
|
|
"${CMake_SOURCE_DIR}/Source/LexerParser"
|
|
${CMAKE_ZLIB_INCLUDES}
|
|
${CMAKE_EXPAT_INCLUDES}
|
|
${CMAKE_TAR_INCLUDES}
|
|
${CMake_HAIKU_INCLUDE_DIRS}
|
|
)
|
|
|
|
# Check if we can build the ELF parser.
|
|
if(CMAKE_USE_ELF_PARSER)
|
|
set(ELF_SRCS cmELF.h cmELF.cxx)
|
|
endif()
|
|
|
|
# Check if we can build the Mach-O parser.
|
|
if(CMAKE_USE_MACH_PARSER)
|
|
set(MACH_SRCS cmMachO.h cmMachO.cxx)
|
|
endif()
|
|
|
|
#
|
|
# Sources for CMakeLib
|
|
#
|
|
set(SRCS
|
|
# Lexers/Parsers
|
|
LexerParser/cmCommandArgumentLexer.cxx
|
|
LexerParser/cmCommandArgumentLexer.h
|
|
LexerParser/cmCommandArgumentLexer.in.l
|
|
LexerParser/cmCommandArgumentParser.cxx
|
|
LexerParser/cmCommandArgumentParserTokens.h
|
|
LexerParser/cmCommandArgumentParser.y
|
|
LexerParser/cmDependsJavaLexer.cxx
|
|
LexerParser/cmDependsJavaLexer.h
|
|
LexerParser/cmDependsJavaLexer.in.l
|
|
LexerParser/cmDependsJavaParser.cxx
|
|
LexerParser/cmDependsJavaParserTokens.h
|
|
LexerParser/cmDependsJavaParser.y
|
|
LexerParser/cmExprLexer.cxx
|
|
LexerParser/cmExprLexer.h
|
|
LexerParser/cmExprLexer.in.l
|
|
LexerParser/cmExprParser.cxx
|
|
LexerParser/cmExprParserTokens.h
|
|
LexerParser/cmExprParser.y
|
|
LexerParser/cmFortranLexer.cxx
|
|
LexerParser/cmFortranLexer.h
|
|
LexerParser/cmFortranLexer.in.l
|
|
LexerParser/cmFortranParser.cxx
|
|
LexerParser/cmFortranParserTokens.h
|
|
LexerParser/cmFortranParser.y
|
|
LexerParser/cmGccDepfileLexer.cxx
|
|
LexerParser/cmGccDepfileLexer.h
|
|
LexerParser/cmGccDepfileLexer.in.l
|
|
LexerParser/cmListFileLexer.c
|
|
LexerParser/cmListFileLexer.in.l
|
|
|
|
cmAffinity.cxx
|
|
cmAffinity.h
|
|
cmAlgorithms.h
|
|
cmArchiveWrite.cxx
|
|
cmArgumentParser.cxx
|
|
cmArgumentParser.h
|
|
cmBase32.cxx
|
|
cmBinUtilsLinker.cxx
|
|
cmBinUtilsLinker.h
|
|
cmBinUtilsLinuxELFGetRuntimeDependenciesTool.cxx
|
|
cmBinUtilsLinuxELFGetRuntimeDependenciesTool.h
|
|
cmBinUtilsLinuxELFLinker.cxx
|
|
cmBinUtilsLinuxELFLinker.h
|
|
cmBinUtilsLinuxELFObjdumpGetRuntimeDependenciesTool.cxx
|
|
cmBinUtilsLinuxELFObjdumpGetRuntimeDependenciesTool.h
|
|
cmBinUtilsMacOSMachOGetRuntimeDependenciesTool.cxx
|
|
cmBinUtilsMacOSMachOGetRuntimeDependenciesTool.h
|
|
cmBinUtilsMacOSMachOLinker.cxx
|
|
cmBinUtilsMacOSMachOLinker.h
|
|
cmBinUtilsMacOSMachOOToolGetRuntimeDependenciesTool.cxx
|
|
cmBinUtilsMacOSMachOOToolGetRuntimeDependenciesTool.h
|
|
cmBinUtilsWindowsPEDumpbinGetRuntimeDependenciesTool.cxx
|
|
cmBinUtilsWindowsPEDumpbinGetRuntimeDependenciesTool.h
|
|
cmBinUtilsWindowsPEGetRuntimeDependenciesTool.cxx
|
|
cmBinUtilsWindowsPEGetRuntimeDependenciesTool.h
|
|
cmBinUtilsWindowsPELinker.cxx
|
|
cmBinUtilsWindowsPELinker.h
|
|
cmBinUtilsWindowsPEObjdumpGetRuntimeDependenciesTool.cxx
|
|
cmBinUtilsWindowsPEObjdumpGetRuntimeDependenciesTool.h
|
|
cmCacheManager.cxx
|
|
cmCacheManager.h
|
|
cmCheckCustomOutputs.h
|
|
cmCheckCustomOutputs.cxx
|
|
cmCLocaleEnvironmentScope.h
|
|
cmCLocaleEnvironmentScope.cxx
|
|
cmCommandArgumentParserHelper.cxx
|
|
cmCommonTargetGenerator.cxx
|
|
cmCommonTargetGenerator.h
|
|
cmComputeComponentGraph.cxx
|
|
cmComputeComponentGraph.h
|
|
cmComputeLinkDepends.cxx
|
|
cmComputeLinkDepends.h
|
|
cmComputeLinkInformation.cxx
|
|
cmComputeLinkInformation.h
|
|
cmComputeTargetDepends.h
|
|
cmComputeTargetDepends.cxx
|
|
cmCPackPropertiesGenerator.h
|
|
cmCPackPropertiesGenerator.cxx
|
|
cmCryptoHash.cxx
|
|
cmCryptoHash.h
|
|
cmCurl.cxx
|
|
cmCurl.h
|
|
cmCustomCommand.cxx
|
|
cmCustomCommand.h
|
|
cmCustomCommandGenerator.cxx
|
|
cmCustomCommandGenerator.h
|
|
cmCustomCommandLines.cxx
|
|
cmCustomCommandLines.h
|
|
cmCustomCommandTypes.h
|
|
cmDefinitions.cxx
|
|
cmDefinitions.h
|
|
cmDepends.cxx
|
|
cmDepends.h
|
|
cmDependsC.cxx
|
|
cmDependsC.h
|
|
cmDependsFortran.cxx
|
|
cmDependsFortran.h
|
|
cmDependsJava.cxx
|
|
cmDependsJava.h
|
|
cmDependsJavaParserHelper.cxx
|
|
cmDependsJavaParserHelper.h
|
|
cmDocumentation.cxx
|
|
cmDocumentationFormatter.cxx
|
|
cmDocumentationSection.cxx
|
|
cmDynamicLoader.cxx
|
|
cmDynamicLoader.h
|
|
${ELF_SRCS}
|
|
cmExprParserHelper.cxx
|
|
cmExportBuildAndroidMKGenerator.h
|
|
cmExportBuildAndroidMKGenerator.cxx
|
|
cmExportBuildFileGenerator.h
|
|
cmExportBuildFileGenerator.cxx
|
|
cmExportFileGenerator.h
|
|
cmExportFileGenerator.cxx
|
|
cmExportInstallAndroidMKGenerator.h
|
|
cmExportInstallAndroidMKGenerator.cxx
|
|
cmExportInstallFileGenerator.h
|
|
cmExportInstallFileGenerator.cxx
|
|
cmExportTryCompileFileGenerator.h
|
|
cmExportTryCompileFileGenerator.cxx
|
|
cmExportSet.h
|
|
cmExportSet.cxx
|
|
cmExternalMakefileProjectGenerator.cxx
|
|
cmExternalMakefileProjectGenerator.h
|
|
cmExtraCodeBlocksGenerator.cxx
|
|
cmExtraCodeBlocksGenerator.h
|
|
cmExtraCodeLiteGenerator.cxx
|
|
cmExtraCodeLiteGenerator.h
|
|
cmExtraEclipseCDT4Generator.cxx
|
|
cmExtraEclipseCDT4Generator.h
|
|
cmExtraKateGenerator.cxx
|
|
cmExtraKateGenerator.h
|
|
cmExtraSublimeTextGenerator.cxx
|
|
cmExtraSublimeTextGenerator.h
|
|
cmFileAPI.cxx
|
|
cmFileAPI.h
|
|
cmFileAPICache.cxx
|
|
cmFileAPICache.h
|
|
cmFileAPICodemodel.cxx
|
|
cmFileAPICodemodel.h
|
|
cmFileAPICMakeFiles.cxx
|
|
cmFileAPICMakeFiles.h
|
|
cmFileCopier.cxx
|
|
cmFileCopier.h
|
|
cmFileInstaller.cxx
|
|
cmFileInstaller.h
|
|
cmFileLock.cxx
|
|
cmFileLock.h
|
|
cmFileLockPool.cxx
|
|
cmFileLockPool.h
|
|
cmFileLockResult.cxx
|
|
cmFileLockResult.h
|
|
cmFilePathChecksum.cxx
|
|
cmFilePathChecksum.h
|
|
cmFileTime.cxx
|
|
cmFileTime.h
|
|
cmFileTimeCache.cxx
|
|
cmFileTimeCache.h
|
|
cmFileTimes.cxx
|
|
cmFileTimes.h
|
|
cmFortranParserImpl.cxx
|
|
cmFSPermissions.cxx
|
|
cmFSPermissions.h
|
|
cmGccDepfileLexerHelper.cxx
|
|
cmGccDepfileLexerHelper.h
|
|
cmGccDepfileReader.cxx
|
|
cmGccDepfileReader.h
|
|
cmGeneratedFileStream.cxx
|
|
cmGeneratorExpressionContext.cxx
|
|
cmGeneratorExpressionContext.h
|
|
cmGeneratorExpressionDAGChecker.cxx
|
|
cmGeneratorExpressionDAGChecker.h
|
|
cmGeneratorExpressionEvaluationFile.cxx
|
|
cmGeneratorExpressionEvaluationFile.h
|
|
cmGeneratorExpressionEvaluator.cxx
|
|
cmGeneratorExpressionEvaluator.h
|
|
cmGeneratorExpressionLexer.cxx
|
|
cmGeneratorExpressionLexer.h
|
|
cmGeneratorExpressionNode.cxx
|
|
cmGeneratorExpressionNode.h
|
|
cmGeneratorExpressionParser.cxx
|
|
cmGeneratorExpressionParser.h
|
|
cmGeneratorExpression.cxx
|
|
cmGeneratorExpression.h
|
|
cmGeneratorTarget.cxx
|
|
cmGeneratorTarget.h
|
|
cmLinkItemGraphVisitor.cxx
|
|
cmLinkItemGraphVisitor.h
|
|
cmGetPipes.cxx
|
|
cmGetPipes.h
|
|
cmGlobalCommonGenerator.cxx
|
|
cmGlobalCommonGenerator.h
|
|
cmGlobalGenerator.cxx
|
|
cmGlobalGenerator.h
|
|
cmGlobalGeneratorFactory.h
|
|
cmGlobalUnixMakefileGenerator3.cxx
|
|
cmGlobalUnixMakefileGenerator3.h
|
|
cmGlobVerificationManager.cxx
|
|
cmGlobVerificationManager.h
|
|
cmGraphAdjacencyList.h
|
|
cmGraphVizWriter.cxx
|
|
cmGraphVizWriter.h
|
|
cmInstallGenerator.h
|
|
cmInstallGenerator.cxx
|
|
cmInstallExportGenerator.cxx
|
|
cmInstalledFile.h
|
|
cmInstalledFile.cxx
|
|
cmInstallFilesGenerator.h
|
|
cmInstallFilesGenerator.cxx
|
|
cmInstallScriptGenerator.h
|
|
cmInstallScriptGenerator.cxx
|
|
cmInstallSubdirectoryGenerator.h
|
|
cmInstallSubdirectoryGenerator.cxx
|
|
cmInstallTargetGenerator.h
|
|
cmInstallTargetGenerator.cxx
|
|
cmInstallDirectoryGenerator.h
|
|
cmInstallDirectoryGenerator.cxx
|
|
cmLDConfigLDConfigTool.cxx
|
|
cmLDConfigLDConfigTool.h
|
|
cmLDConfigTool.cxx
|
|
cmLDConfigTool.h
|
|
cmLinkedTree.h
|
|
cmLinkItem.cxx
|
|
cmLinkItem.h
|
|
cmLinkLineComputer.cxx
|
|
cmLinkLineComputer.h
|
|
cmLinkLineDeviceComputer.cxx
|
|
cmLinkLineDeviceComputer.h
|
|
cmListFileCache.cxx
|
|
cmListFileCache.h
|
|
cmLocalCommonGenerator.cxx
|
|
cmLocalCommonGenerator.h
|
|
cmLocalGenerator.cxx
|
|
cmLocalGenerator.h
|
|
cmRulePlaceholderExpander.cxx
|
|
cmRulePlaceholderExpander.h
|
|
cmLocalUnixMakefileGenerator3.cxx
|
|
cmLocale.h
|
|
${MACH_SRCS}
|
|
cmMakefile.cxx
|
|
cmMakefile.h
|
|
cmMakefileTargetGenerator.cxx
|
|
cmMakefileExecutableTargetGenerator.cxx
|
|
cmMakefileLibraryTargetGenerator.cxx
|
|
cmMakefileUtilityTargetGenerator.cxx
|
|
cmMessageType.h
|
|
cmMessenger.cxx
|
|
cmMessenger.h
|
|
cmMSVC60LinkLineComputer.cxx
|
|
cmMSVC60LinkLineComputer.h
|
|
cmOSXBundleGenerator.cxx
|
|
cmOSXBundleGenerator.h
|
|
cmOutputConverter.cxx
|
|
cmOutputConverter.h
|
|
cmNewLineStyle.h
|
|
cmNewLineStyle.cxx
|
|
cmOrderDirectories.cxx
|
|
cmOrderDirectories.h
|
|
cmPolicies.h
|
|
cmPolicies.cxx
|
|
cmProcessOutput.cxx
|
|
cmProcessOutput.h
|
|
cmProcessTools.cxx
|
|
cmProcessTools.h
|
|
cmProperty.h
|
|
cmPropertyDefinition.cxx
|
|
cmPropertyDefinition.h
|
|
cmPropertyDefinitionMap.cxx
|
|
cmPropertyDefinitionMap.h
|
|
cmPropertyMap.cxx
|
|
cmPropertyMap.h
|
|
cmQtAutoGen.cxx
|
|
cmQtAutoGen.h
|
|
cmQtAutoGenerator.cxx
|
|
cmQtAutoGenerator.h
|
|
cmQtAutoGenGlobalInitializer.cxx
|
|
cmQtAutoGenGlobalInitializer.h
|
|
cmQtAutoGenInitializer.cxx
|
|
cmQtAutoGenInitializer.h
|
|
cmQtAutoMocUic.cxx
|
|
cmQtAutoMocUic.h
|
|
cmQtAutoRcc.cxx
|
|
cmQtAutoRcc.h
|
|
cmRST.cxx
|
|
cmRST.h
|
|
cmRuntimeDependencyArchive.cxx
|
|
cmRuntimeDependencyArchive.h
|
|
cmScriptGenerator.h
|
|
cmScriptGenerator.cxx
|
|
cmSourceFile.cxx
|
|
cmSourceFile.h
|
|
cmSourceFileLocation.cxx
|
|
cmSourceFileLocation.h
|
|
cmSourceFileLocationKind.h
|
|
cmSourceGroup.cxx
|
|
cmSourceGroup.h
|
|
cmState.cxx
|
|
cmState.h
|
|
cmStateDirectory.cxx
|
|
cmStateDirectory.h
|
|
cmStateSnapshot.cxx
|
|
cmStateSnapshot.h
|
|
cmStateTypes.h
|
|
cmStringAlgorithms.cxx
|
|
cmStringAlgorithms.h
|
|
cmSystemTools.cxx
|
|
cmSystemTools.h
|
|
cmTarget.cxx
|
|
cmTarget.h
|
|
cmTargetPropertyComputer.cxx
|
|
cmTargetPropertyComputer.h
|
|
cmTargetExport.h
|
|
cmTest.cxx
|
|
cmTest.h
|
|
cmTestGenerator.cxx
|
|
cmTestGenerator.h
|
|
cmUuid.cxx
|
|
cmUVHandlePtr.cxx
|
|
cmUVHandlePtr.h
|
|
cmUVProcessChain.cxx
|
|
cmUVProcessChain.h
|
|
cmUVStreambuf.h
|
|
cmUVSignalHackRAII.h
|
|
cmVariableWatch.cxx
|
|
cmVariableWatch.h
|
|
cmVersion.cxx
|
|
cmVersion.h
|
|
cmWorkerPool.cxx
|
|
cmWorkerPool.h
|
|
cmWorkingDirectory.cxx
|
|
cmWorkingDirectory.h
|
|
cmXMLParser.cxx
|
|
cmXMLParser.h
|
|
cmXMLSafe.cxx
|
|
cmXMLSafe.h
|
|
cmXMLWriter.cxx
|
|
cmXMLWriter.h
|
|
cmake.cxx
|
|
cmake.h
|
|
|
|
cmCommand.cxx
|
|
cmCommand.h
|
|
cmCommands.cxx
|
|
cmCommands.h
|
|
cmAddCompileDefinitionsCommand.cxx
|
|
cmAddCompileDefinitionsCommand.h
|
|
cmAddCompileOptionsCommand.cxx
|
|
cmAddCompileOptionsCommand.h
|
|
cmAddLinkOptionsCommand.cxx
|
|
cmAddLinkOptionsCommand.h
|
|
cmAddCustomCommandCommand.cxx
|
|
cmAddCustomCommandCommand.h
|
|
cmAddCustomTargetCommand.cxx
|
|
cmAddCustomTargetCommand.h
|
|
cmAddDefinitionsCommand.cxx
|
|
cmAddDefinitionsCommand.h
|
|
cmAddDependenciesCommand.cxx
|
|
cmAddDependenciesCommand.h
|
|
cmAddExecutableCommand.cxx
|
|
cmAddExecutableCommand.h
|
|
cmAddLibraryCommand.cxx
|
|
cmAddLibraryCommand.h
|
|
cmAddSubDirectoryCommand.cxx
|
|
cmAddSubDirectoryCommand.h
|
|
cmAddTestCommand.cxx
|
|
cmAddTestCommand.h
|
|
cmAuxSourceDirectoryCommand.cxx
|
|
cmAuxSourceDirectoryCommand.h
|
|
cmBreakCommand.cxx
|
|
cmBreakCommand.h
|
|
cmBuildCommand.cxx
|
|
cmBuildCommand.h
|
|
cmBuildNameCommand.cxx
|
|
cmBuildNameCommand.h
|
|
cmCMakeHostSystemInformationCommand.cxx
|
|
cmCMakeHostSystemInformationCommand.h
|
|
cmCMakeMinimumRequired.cxx
|
|
cmCMakeMinimumRequired.h
|
|
cmCMakePolicyCommand.cxx
|
|
cmCMakePolicyCommand.h
|
|
cmConditionEvaluator.cxx
|
|
cmConditionEvaluator.h
|
|
cmConfigureFileCommand.cxx
|
|
cmConfigureFileCommand.h
|
|
cmContinueCommand.cxx
|
|
cmContinueCommand.h
|
|
cmCoreTryCompile.cxx
|
|
cmCoreTryCompile.h
|
|
cmCreateTestSourceList.cxx
|
|
cmCreateTestSourceList.h
|
|
cmDefinePropertyCommand.cxx
|
|
cmDefinePropertyCommand.h
|
|
cmEnableLanguageCommand.cxx
|
|
cmEnableLanguageCommand.h
|
|
cmEnableTestingCommand.cxx
|
|
cmEnableTestingCommand.h
|
|
cmExecProgramCommand.cxx
|
|
cmExecProgramCommand.h
|
|
cmExecuteProcessCommand.cxx
|
|
cmExecuteProcessCommand.h
|
|
cmExpandedCommandArgument.cxx
|
|
cmExpandedCommandArgument.h
|
|
cmExportCommand.cxx
|
|
cmExportCommand.h
|
|
cmExportLibraryDependenciesCommand.cxx
|
|
cmExportLibraryDependenciesCommand.h
|
|
cmFLTKWrapUICommand.cxx
|
|
cmFLTKWrapUICommand.h
|
|
cmFileCommand.cxx
|
|
cmFileCommand.h
|
|
cmFindBase.cxx
|
|
cmFindBase.h
|
|
cmFindCommon.cxx
|
|
cmFindCommon.h
|
|
cmFindFileCommand.cxx
|
|
cmFindFileCommand.h
|
|
cmFindLibraryCommand.cxx
|
|
cmFindLibraryCommand.h
|
|
cmFindPackageCommand.cxx
|
|
cmFindPackageCommand.h
|
|
cmFindPathCommand.cxx
|
|
cmFindPathCommand.h
|
|
cmFindProgramCommand.cxx
|
|
cmFindProgramCommand.h
|
|
cmForEachCommand.cxx
|
|
cmForEachCommand.h
|
|
cmFunctionBlocker.cxx
|
|
cmFunctionBlocker.h
|
|
cmFunctionCommand.cxx
|
|
cmFunctionCommand.h
|
|
cmGetCMakePropertyCommand.cxx
|
|
cmGetCMakePropertyCommand.h
|
|
cmGetDirectoryPropertyCommand.cxx
|
|
cmGetDirectoryPropertyCommand.h
|
|
cmGetFilenameComponentCommand.cxx
|
|
cmGetFilenameComponentCommand.h
|
|
cmGetPropertyCommand.cxx
|
|
cmGetPropertyCommand.h
|
|
cmGetSourceFilePropertyCommand.cxx
|
|
cmGetSourceFilePropertyCommand.h
|
|
cmGetTargetPropertyCommand.cxx
|
|
cmGetTargetPropertyCommand.h
|
|
cmGetTestPropertyCommand.cxx
|
|
cmGetTestPropertyCommand.h
|
|
cmHexFileConverter.cxx
|
|
cmHexFileConverter.h
|
|
cmIfCommand.cxx
|
|
cmIfCommand.h
|
|
cmIncludeCommand.cxx
|
|
cmIncludeCommand.h
|
|
cmIncludeDirectoryCommand.cxx
|
|
cmIncludeDirectoryCommand.h
|
|
cmIncludeExternalMSProjectCommand.cxx
|
|
cmIncludeExternalMSProjectCommand.h
|
|
cmIncludeGuardCommand.cxx
|
|
cmIncludeGuardCommand.h
|
|
cmIncludeRegularExpressionCommand.cxx
|
|
cmIncludeRegularExpressionCommand.h
|
|
cmInstallCommand.cxx
|
|
cmInstallCommand.h
|
|
cmInstallCommandArguments.cxx
|
|
cmInstallCommandArguments.h
|
|
cmInstallFilesCommand.cxx
|
|
cmInstallFilesCommand.h
|
|
cmInstallProgramsCommand.cxx
|
|
cmInstallProgramsCommand.h
|
|
cmInstallTargetsCommand.cxx
|
|
cmInstallTargetsCommand.h
|
|
cmLinkDirectoriesCommand.cxx
|
|
cmLinkDirectoriesCommand.h
|
|
cmLinkLibrariesCommand.cxx
|
|
cmLinkLibrariesCommand.h
|
|
cmListCommand.cxx
|
|
cmListCommand.h
|
|
cmLoadCacheCommand.cxx
|
|
cmLoadCacheCommand.h
|
|
cmLoadCommandCommand.cxx
|
|
cmLoadCommandCommand.h
|
|
cmMacroCommand.cxx
|
|
cmMacroCommand.h
|
|
cmMakeDirectoryCommand.cxx
|
|
cmMakeDirectoryCommand.h
|
|
cmMarkAsAdvancedCommand.cxx
|
|
cmMarkAsAdvancedCommand.h
|
|
cmMathCommand.cxx
|
|
cmMathCommand.h
|
|
cmMessageCommand.cxx
|
|
cmMessageCommand.h
|
|
cmOptionCommand.cxx
|
|
cmOptionCommand.h
|
|
cmOutputRequiredFilesCommand.cxx
|
|
cmOutputRequiredFilesCommand.h
|
|
cmParseArgumentsCommand.cxx
|
|
cmParseArgumentsCommand.h
|
|
cmPathLabel.cxx
|
|
cmPathLabel.h
|
|
cmProjectCommand.cxx
|
|
cmProjectCommand.h
|
|
cmQTWrapCPPCommand.cxx
|
|
cmQTWrapCPPCommand.h
|
|
cmQTWrapUICommand.cxx
|
|
cmQTWrapUICommand.h
|
|
cmRemoveCommand.cxx
|
|
cmRemoveCommand.h
|
|
cmRemoveDefinitionsCommand.cxx
|
|
cmRemoveDefinitionsCommand.h
|
|
cmReturnCommand.cxx
|
|
cmReturnCommand.h
|
|
cmSearchPath.cxx
|
|
cmSearchPath.h
|
|
cmSeparateArgumentsCommand.cxx
|
|
cmSeparateArgumentsCommand.h
|
|
cmSetCommand.cxx
|
|
cmSetCommand.h
|
|
cmSetDirectoryPropertiesCommand.cxx
|
|
cmSetDirectoryPropertiesCommand.h
|
|
cmSetPropertyCommand.cxx
|
|
cmSetPropertyCommand.h
|
|
cmSetSourceFilesPropertiesCommand.cxx
|
|
cmSetSourceFilesPropertiesCommand.h
|
|
cmSetTargetPropertiesCommand.cxx
|
|
cmSetTargetPropertiesCommand.h
|
|
cmSetTestsPropertiesCommand.cxx
|
|
cmSetTestsPropertiesCommand.h
|
|
cmSiteNameCommand.cxx
|
|
cmSiteNameCommand.h
|
|
cmSourceGroupCommand.cxx
|
|
cmSourceGroupCommand.h
|
|
cmString.cxx
|
|
cmString.hxx
|
|
cmStringReplaceHelper.cxx
|
|
cmStringCommand.cxx
|
|
cmStringCommand.h
|
|
cmSubcommandTable.cxx
|
|
cmSubcommandTable.h
|
|
cmSubdirCommand.cxx
|
|
cmSubdirCommand.h
|
|
cmSubdirDependsCommand.cxx
|
|
cmSubdirDependsCommand.h
|
|
cmTargetCompileDefinitionsCommand.cxx
|
|
cmTargetCompileDefinitionsCommand.h
|
|
cmTargetCompileFeaturesCommand.cxx
|
|
cmTargetCompileFeaturesCommand.h
|
|
cmTargetCompileOptionsCommand.cxx
|
|
cmTargetCompileOptionsCommand.h
|
|
cmTargetIncludeDirectoriesCommand.cxx
|
|
cmTargetIncludeDirectoriesCommand.h
|
|
cmTargetLinkOptionsCommand.cxx
|
|
cmTargetLinkOptionsCommand.h
|
|
cmTargetLinkDirectoriesCommand.cxx
|
|
cmTargetLinkDirectoriesCommand.h
|
|
cmTargetLinkLibrariesCommand.cxx
|
|
cmTargetLinkLibrariesCommand.h
|
|
cmTargetPrecompileHeadersCommand.cxx
|
|
cmTargetPrecompileHeadersCommand.h
|
|
cmTargetPropCommandBase.cxx
|
|
cmTargetPropCommandBase.h
|
|
cmTargetSourcesCommand.cxx
|
|
cmTargetSourcesCommand.h
|
|
cmTimestamp.cxx
|
|
cmTimestamp.h
|
|
cmTryCompileCommand.cxx
|
|
cmTryCompileCommand.h
|
|
cmTryRunCommand.cxx
|
|
cmTryRunCommand.h
|
|
cmUnsetCommand.cxx
|
|
cmUnsetCommand.h
|
|
cmUseMangledMesaCommand.cxx
|
|
cmUseMangledMesaCommand.h
|
|
cmUtilitySourceCommand.cxx
|
|
cmUtilitySourceCommand.h
|
|
cmVariableRequiresCommand.cxx
|
|
cmVariableRequiresCommand.h
|
|
cmVariableWatchCommand.cxx
|
|
cmVariableWatchCommand.h
|
|
cmWhileCommand.cxx
|
|
cmWhileCommand.h
|
|
cmWriteFileCommand.cxx
|
|
cmWriteFileCommand.h
|
|
|
|
cm_static_string_view.hxx
|
|
cm_get_date.h
|
|
cm_get_date.c
|
|
cm_utf8.h
|
|
cm_utf8.c
|
|
cm_codecvt.hxx
|
|
cm_codecvt.cxx
|
|
|
|
cmDuration.h
|
|
cmDuration.cxx
|
|
|
|
bindexplib.cxx
|
|
)
|
|
|
|
SET_PROPERTY(SOURCE cmProcessOutput.cxx APPEND PROPERTY COMPILE_DEFINITIONS
|
|
KWSYS_ENCODING_DEFAULT_CODEPAGE=${KWSYS_ENCODING_DEFAULT_CODEPAGE})
|
|
|
|
# Xcode only works on Apple
|
|
if(APPLE)
|
|
set(SRCS ${SRCS}
|
|
cmXCodeObject.cxx
|
|
cmXCode21Object.cxx
|
|
cmXCodeScheme.cxx
|
|
cmGlobalXCodeGenerator.cxx
|
|
cmGlobalXCodeGenerator.h
|
|
cmLocalXCodeGenerator.cxx
|
|
cmLocalXCodeGenerator.h)
|
|
endif()
|
|
|
|
|
|
if (WIN32)
|
|
set(SRCS ${SRCS}
|
|
cmCallVisualStudioMacro.cxx
|
|
cmCallVisualStudioMacro.h
|
|
)
|
|
|
|
if(NOT UNIX)
|
|
set(SRCS ${SRCS}
|
|
cmGlobalBorlandMakefileGenerator.cxx
|
|
cmGlobalBorlandMakefileGenerator.h
|
|
cmGlobalMSYSMakefileGenerator.cxx
|
|
cmGlobalMinGWMakefileGenerator.cxx
|
|
cmGlobalNMakeMakefileGenerator.cxx
|
|
cmGlobalNMakeMakefileGenerator.h
|
|
cmGlobalJOMMakefileGenerator.cxx
|
|
cmGlobalJOMMakefileGenerator.h
|
|
cmGlobalVisualStudio71Generator.cxx
|
|
cmGlobalVisualStudio71Generator.h
|
|
cmGlobalVisualStudio7Generator.cxx
|
|
cmGlobalVisualStudio7Generator.h
|
|
cmGlobalVisualStudio8Generator.cxx
|
|
cmGlobalVisualStudio8Generator.h
|
|
cmGlobalVisualStudio9Generator.cxx
|
|
cmGlobalVisualStudio9Generator.h
|
|
cmVisualStudioGeneratorOptions.h
|
|
cmVisualStudioGeneratorOptions.cxx
|
|
cmVisualStudio10TargetGenerator.h
|
|
cmVisualStudio10TargetGenerator.cxx
|
|
cmVisualStudio10ToolsetOptions.h
|
|
cmVisualStudio10ToolsetOptions.cxx
|
|
cmLocalVisualStudio10Generator.cxx
|
|
cmLocalVisualStudio10Generator.h
|
|
cmGlobalVisualStudio10Generator.h
|
|
cmGlobalVisualStudio10Generator.cxx
|
|
cmGlobalVisualStudio11Generator.h
|
|
cmGlobalVisualStudio11Generator.cxx
|
|
cmGlobalVisualStudio12Generator.h
|
|
cmGlobalVisualStudio12Generator.cxx
|
|
cmGlobalVisualStudio14Generator.h
|
|
cmGlobalVisualStudio14Generator.cxx
|
|
cmGlobalVisualStudioGenerator.cxx
|
|
cmGlobalVisualStudioGenerator.h
|
|
cmGlobalVisualStudioVersionedGenerator.h
|
|
cmGlobalVisualStudioVersionedGenerator.cxx
|
|
cmIDEFlagTable.h
|
|
cmIDEOptions.cxx
|
|
cmIDEOptions.h
|
|
cmLocalVisualStudio7Generator.cxx
|
|
cmLocalVisualStudio7Generator.h
|
|
cmLocalVisualStudioGenerator.cxx
|
|
cmLocalVisualStudioGenerator.h
|
|
cmVisualStudioSlnData.h
|
|
cmVisualStudioSlnData.cxx
|
|
cmVisualStudioSlnParser.h
|
|
cmVisualStudioSlnParser.cxx
|
|
cmVisualStudioWCEPlatformParser.h
|
|
cmVisualStudioWCEPlatformParser.cxx
|
|
cmVSSetupHelper.cxx
|
|
cmVSSetupHelper.h
|
|
)
|
|
|
|
# Add a manifest file to executables on Windows to allow for
|
|
# GetVersion to work properly on Windows 8 and above.
|
|
set(MANIFEST_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake.version.manifest)
|
|
endif()
|
|
endif ()
|
|
|
|
# Watcom support
|
|
if(WIN32 OR CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
set_property(SOURCE cmake.cxx APPEND PROPERTY COMPILE_DEFINITIONS CMAKE_USE_WMAKE)
|
|
list(APPEND SRCS
|
|
cmGlobalWatcomWMakeGenerator.cxx
|
|
cmGlobalWatcomWMakeGenerator.h
|
|
)
|
|
endif()
|
|
|
|
# GHS support
|
|
# Works only for windows and linux
|
|
if(WIN32 OR CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
set(SRCS ${SRCS}
|
|
cmGlobalGhsMultiGenerator.cxx
|
|
cmGlobalGhsMultiGenerator.h
|
|
cmLocalGhsMultiGenerator.cxx
|
|
cmLocalGhsMultiGenerator.h
|
|
cmGhsMultiTargetGenerator.cxx
|
|
cmGhsMultiTargetGenerator.h
|
|
cmGhsMultiGpj.cxx
|
|
cmGhsMultiGpj.h
|
|
)
|
|
endif()
|
|
|
|
|
|
# Ninja support
|
|
set(SRCS ${SRCS}
|
|
cmGlobalNinjaGenerator.cxx
|
|
cmGlobalNinjaGenerator.h
|
|
cmNinjaTypes.h
|
|
cmLocalNinjaGenerator.cxx
|
|
cmLocalNinjaGenerator.h
|
|
cmNinjaTargetGenerator.cxx
|
|
cmNinjaTargetGenerator.h
|
|
cmNinjaNormalTargetGenerator.cxx
|
|
cmNinjaNormalTargetGenerator.h
|
|
cmNinjaUtilityTargetGenerator.cxx
|
|
cmNinjaUtilityTargetGenerator.h
|
|
cmNinjaLinkLineComputer.cxx
|
|
cmNinjaLinkLineComputer.h
|
|
cmNinjaLinkLineDeviceComputer.cxx
|
|
cmNinjaLinkLineDeviceComputer.h
|
|
)
|
|
|
|
# Temporary variable for tools targets
|
|
set(_tools)
|
|
|
|
if(WIN32 AND NOT CYGWIN)
|
|
set_source_files_properties(cmcldeps.cxx PROPERTIES COMPILE_DEFINITIONS _WIN32_WINNT=0x0501)
|
|
add_executable(cmcldeps cmcldeps.cxx ${MANIFEST_FILE})
|
|
list(APPEND _tools cmcldeps)
|
|
target_link_libraries(cmcldeps CMakeLib)
|
|
endif()
|
|
|
|
foreach(v CURL_CA_BUNDLE CURL_CA_PATH)
|
|
if(${v})
|
|
set_property(SOURCE cmCurl.cxx APPEND PROPERTY COMPILE_DEFINITIONS ${v}="${${v}}")
|
|
endif()
|
|
endforeach()
|
|
|
|
foreach(check
|
|
STAT_HAS_ST_MTIM
|
|
STAT_HAS_ST_MTIMESPEC
|
|
)
|
|
if(KWSYS_CXX_${check}_COMPILED) # abuse KWSys check cache entry
|
|
set(CMake_${check} 1)
|
|
else()
|
|
set(CMake_${check} 0)
|
|
endif()
|
|
set_property(SOURCE cmFileTime.cxx APPEND PROPERTY
|
|
COMPILE_DEFINITIONS CMake_${check}=${CMake_${check}})
|
|
endforeach()
|
|
|
|
# create a library used by the command line and the GUI
|
|
add_library(CMakeLib ${SRCS})
|
|
target_link_libraries(CMakeLib cmsys
|
|
${CMAKE_STD_LIBRARY}
|
|
${CMAKE_EXPAT_LIBRARIES} ${CMAKE_ZLIB_LIBRARIES}
|
|
${CMAKE_TAR_LIBRARIES}
|
|
${CMAKE_CURL_LIBRARIES}
|
|
${CMAKE_JSONCPP_LIBRARIES}
|
|
${CMAKE_LIBUV_LIBRARIES}
|
|
${CMAKE_LIBRHASH_LIBRARIES}
|
|
${CMake_KWIML_LIBRARIES}
|
|
${CMAKE_THREAD_LIBS_INIT}
|
|
)
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR MATCHES "sparc")
|
|
# the atomic instructions are implemented using libatomic on some platforms,
|
|
# so linking to that may be required
|
|
check_library_exists(atomic __atomic_fetch_add_4 "" LIBATOMIC_NEEDED)
|
|
if(LIBATOMIC_NEEDED)
|
|
target_link_libraries(CMakeLib atomic)
|
|
endif()
|
|
endif()
|
|
|
|
# On Apple we need CoreFoundation and CoreServices
|
|
if(APPLE)
|
|
target_link_libraries(CMakeLib "-framework CoreFoundation")
|
|
target_link_libraries(CMakeLib "-framework CoreServices")
|
|
endif()
|
|
|
|
if(WIN32 AND NOT UNIX)
|
|
# We need the rpcrt4 library on Windows.
|
|
# We need the crypt32 library on Windows for crypto/cert APIs.
|
|
target_link_libraries(CMakeLib rpcrt4 crypt32)
|
|
endif()
|
|
|
|
target_compile_definitions(CMakeLib PUBLIC ${CLANG_TIDY_DEFINITIONS})
|
|
|
|
#
|
|
# CTestLib
|
|
#
|
|
include_directories(
|
|
"${CMake_SOURCE_DIR}/Source/CTest"
|
|
${CMAKE_CURL_INCLUDES}
|
|
)
|
|
#
|
|
# Sources for CTestLib
|
|
#
|
|
set(CTEST_SRCS cmCTest.cxx
|
|
CTest/cmProcess.cxx
|
|
CTest/cmCTestBinPacker.cxx
|
|
CTest/cmCTestBuildAndTestHandler.cxx
|
|
CTest/cmCTestBuildCommand.cxx
|
|
CTest/cmCTestBuildHandler.cxx
|
|
CTest/cmCTestConfigureCommand.cxx
|
|
CTest/cmCTestConfigureHandler.cxx
|
|
CTest/cmCTestCoverageCommand.cxx
|
|
CTest/cmCTestCoverageHandler.cxx
|
|
CTest/cmCTestCurl.cxx
|
|
CTest/cmParseMumpsCoverage.cxx
|
|
CTest/cmParseCacheCoverage.cxx
|
|
CTest/cmParseGTMCoverage.cxx
|
|
CTest/cmParseJacocoCoverage.cxx
|
|
CTest/cmParseBlanketJSCoverage.cxx
|
|
CTest/cmParsePHPCoverage.cxx
|
|
CTest/cmParseCoberturaCoverage.cxx
|
|
CTest/cmParseDelphiCoverage.cxx
|
|
CTest/cmCTestEmptyBinaryDirectoryCommand.cxx
|
|
CTest/cmCTestGenericHandler.cxx
|
|
CTest/cmCTestHandlerCommand.cxx
|
|
CTest/cmCTestResourceAllocator.cxx
|
|
CTest/cmCTestResourceSpec.cxx
|
|
CTest/cmCTestLaunch.cxx
|
|
CTest/cmCTestMemCheckCommand.cxx
|
|
CTest/cmCTestMemCheckHandler.cxx
|
|
CTest/cmCTestMultiProcessHandler.cxx
|
|
CTest/cmCTestReadCustomFilesCommand.cxx
|
|
CTest/cmCTestResourceGroupsLexerHelper.cxx
|
|
CTest/cmCTestRunScriptCommand.cxx
|
|
CTest/cmCTestRunTest.cxx
|
|
CTest/cmCTestScriptHandler.cxx
|
|
CTest/cmCTestSleepCommand.cxx
|
|
CTest/cmCTestStartCommand.cxx
|
|
CTest/cmCTestSubmitCommand.cxx
|
|
CTest/cmCTestSubmitHandler.cxx
|
|
CTest/cmCTestTestCommand.cxx
|
|
CTest/cmCTestTestHandler.cxx
|
|
CTest/cmCTestUpdateCommand.cxx
|
|
CTest/cmCTestUpdateHandler.cxx
|
|
CTest/cmCTestUploadCommand.cxx
|
|
CTest/cmCTestUploadHandler.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
|
|
CTest/cmCTestP4.cxx
|
|
CTest/cmCTestP4.h
|
|
|
|
LexerParser/cmCTestResourceGroupsLexer.cxx
|
|
LexerParser/cmCTestResourceGroupsLexer.h
|
|
LexerParser/cmCTestResourceGroupsLexer.in.l
|
|
)
|
|
|
|
# Build CTestLib
|
|
add_library(CTestLib ${CTEST_SRCS})
|
|
target_link_libraries(CTestLib CMakeLib ${CMAKE_CURL_LIBRARIES})
|
|
|
|
#
|
|
# CPack
|
|
#
|
|
include_directories(
|
|
"${CMake_SOURCE_DIR}/Source/CPack"
|
|
)
|
|
#
|
|
# Sources for CPack
|
|
#
|
|
set(CPACK_SRCS
|
|
CPack/cmCPackArchiveGenerator.cxx
|
|
CPack/cmCPackComponentGroup.cxx
|
|
CPack/cmCPackDebGenerator.cxx
|
|
CPack/cmCPackExternalGenerator.cxx
|
|
CPack/cmCPackGeneratorFactory.cxx
|
|
CPack/cmCPackGenerator.cxx
|
|
CPack/cmCPackLog.cxx
|
|
CPack/cmCPackNSISGenerator.cxx
|
|
CPack/cmCPackNuGetGenerator.cxx
|
|
CPack/cmCPackSTGZGenerator.cxx
|
|
)
|
|
# CPack IFW generator
|
|
set(CPACK_SRCS ${CPACK_SRCS}
|
|
CPack/IFW/cmCPackIFWCommon.cxx
|
|
CPack/IFW/cmCPackIFWCommon.h
|
|
CPack/IFW/cmCPackIFWGenerator.cxx
|
|
CPack/IFW/cmCPackIFWGenerator.h
|
|
CPack/IFW/cmCPackIFWInstaller.cxx
|
|
CPack/IFW/cmCPackIFWInstaller.h
|
|
CPack/IFW/cmCPackIFWPackage.cxx
|
|
CPack/IFW/cmCPackIFWPackage.h
|
|
CPack/IFW/cmCPackIFWRepository.cxx
|
|
CPack/IFW/cmCPackIFWRepository.h
|
|
)
|
|
|
|
if(CYGWIN)
|
|
set(CPACK_SRCS ${CPACK_SRCS}
|
|
CPack/cmCPackCygwinBinaryGenerator.cxx
|
|
CPack/cmCPackCygwinSourceGenerator.cxx
|
|
)
|
|
endif()
|
|
|
|
option(CPACK_ENABLE_FREEBSD_PKG "Add FreeBSD pkg(8) generator to CPack." OFF)
|
|
|
|
if(UNIX)
|
|
set(CPACK_SRCS ${CPACK_SRCS}
|
|
CPack/cmCPackRPMGenerator.cxx
|
|
)
|
|
|
|
# Optionally, try to use pkg(8)
|
|
if(CPACK_ENABLE_FREEBSD_PKG)
|
|
# On UNIX, you may find FreeBSD's pkg(8) and attendant
|
|
# library -- it can be used on FreeBSD, Dragonfly, NetBSD,
|
|
# OpenBSD and also Linux and OSX. Look for the header and
|
|
# the library; it's a warning on FreeBSD if they're not
|
|
# found, and informational on other platforms.
|
|
find_path(FREEBSD_PKG_INCLUDE_DIRS "pkg.h")
|
|
if(FREEBSD_PKG_INCLUDE_DIRS)
|
|
find_library(FREEBSD_PKG_LIBRARIES
|
|
pkg
|
|
DOC "FreeBSD pkg(8) library")
|
|
if(FREEBSD_PKG_LIBRARIES)
|
|
set(CPACK_SRCS ${CPACK_SRCS}
|
|
CPack/cmCPackFreeBSDGenerator.cxx
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
if (NOT FREEBSD_PKG_INCLUDE_DIRS OR NOT FREEBSD_PKG_LIBRARIES)
|
|
message(FATAL_ERROR "CPack needs libpkg(3) to produce FreeBSD packages natively.")
|
|
endif()
|
|
else()
|
|
set(FREEBSD_PKG_INCLUDE_DIRS NOTFOUND)
|
|
set(FREEBSD_PKG_LIBRARIES NOTFOUND)
|
|
endif()
|
|
endif()
|
|
|
|
if(CYGWIN)
|
|
find_package(LibUUID)
|
|
endif()
|
|
if(WIN32 OR (CYGWIN AND LibUUID_FOUND))
|
|
set(CPACK_SRCS ${CPACK_SRCS}
|
|
CPack/WiX/cmCMakeToWixPath.cxx
|
|
CPack/WiX/cmCMakeToWixPath.h
|
|
CPack/WiX/cmCPackWIXGenerator.cxx
|
|
CPack/WiX/cmCPackWIXGenerator.h
|
|
CPack/WiX/cmWIXAccessControlList.cxx
|
|
CPack/WiX/cmWIXAccessControlList.h
|
|
CPack/WiX/cmWIXDirectoriesSourceWriter.cxx
|
|
CPack/WiX/cmWIXDirectoriesSourceWriter.h
|
|
CPack/WiX/cmWIXFeaturesSourceWriter.cxx
|
|
CPack/WiX/cmWIXFeaturesSourceWriter.h
|
|
CPack/WiX/cmWIXFilesSourceWriter.cxx
|
|
CPack/WiX/cmWIXFilesSourceWriter.h
|
|
CPack/WiX/cmWIXPatch.cxx
|
|
CPack/WiX/cmWIXPatch.h
|
|
CPack/WiX/cmWIXPatchParser.cxx
|
|
CPack/WiX/cmWIXPatchParser.h
|
|
CPack/WiX/cmWIXRichTextFormatWriter.cxx
|
|
CPack/WiX/cmWIXRichTextFormatWriter.h
|
|
CPack/WiX/cmWIXShortcut.cxx
|
|
CPack/WiX/cmWIXShortcut.h
|
|
CPack/WiX/cmWIXSourceWriter.cxx
|
|
CPack/WiX/cmWIXSourceWriter.h
|
|
)
|
|
endif()
|
|
|
|
if(APPLE)
|
|
set(CPACK_SRCS ${CPACK_SRCS}
|
|
CPack/cmCPackBundleGenerator.cxx
|
|
CPack/cmCPackDragNDropGenerator.cxx
|
|
CPack/cmCPackOSXX11Generator.cxx
|
|
CPack/cmCPackPKGGenerator.cxx
|
|
CPack/cmCPackPackageMakerGenerator.cxx
|
|
CPack/cmCPackProductBuildGenerator.cxx
|
|
)
|
|
endif()
|
|
|
|
# Build CPackLib
|
|
add_library(CPackLib ${CPACK_SRCS})
|
|
target_link_libraries(CPackLib CMakeLib)
|
|
if(APPLE)
|
|
# Some compilers produce errors in the CoreServices framework headers.
|
|
# Ideally such errors should be fixed by either the compiler vendor
|
|
# or the framework source, but we try to workaround it and build anyway.
|
|
# If it does not work, build with reduced functionality and warn.
|
|
check_include_file("CoreServices/CoreServices.h" HAVE_CoreServices)
|
|
if(HAVE_CoreServices)
|
|
set_property(SOURCE CPack/cmCPackDragNDropGenerator.cxx PROPERTY COMPILE_DEFINITIONS HAVE_CoreServices)
|
|
target_link_libraries(CPackLib "-framework CoreServices")
|
|
else()
|
|
message(WARNING "This compiler does not appear to support\n"
|
|
" #include <CoreServices/CoreServices.h>\n"
|
|
"Some CPack functionality may be limited.\n"
|
|
"See CMakeFiles/CMakeError.log for details of the failure.")
|
|
endif()
|
|
endif()
|
|
if(CYGWIN AND LibUUID_FOUND)
|
|
target_link_libraries(CPackLib ${LibUUID_LIBRARIES})
|
|
include_directories(CPackLib ${LibUUID_INCLUDE_DIRS})
|
|
set_property(SOURCE CPack/cmCPackGeneratorFactory.cxx PROPERTY COMPILE_DEFINITIONS HAVE_LIBUUID)
|
|
endif()
|
|
if(CPACK_ENABLE_FREEBSD_PKG AND FREEBSD_PKG_INCLUDE_DIRS AND FREEBSD_PKG_LIBRARIES)
|
|
target_link_libraries(CPackLib ${FREEBSD_PKG_LIBRARIES})
|
|
include_directories(${FREEBSD_PKG_INCLUDE_DIRS})
|
|
add_definitions(-DHAVE_FREEBSD_PKG)
|
|
endif()
|
|
|
|
if(APPLE)
|
|
add_executable(OSXScriptLauncher
|
|
CPack/OSXScriptLauncher.cxx)
|
|
target_link_libraries(OSXScriptLauncher cmsys)
|
|
target_link_libraries(OSXScriptLauncher "-framework CoreFoundation")
|
|
endif()
|
|
|
|
# Build CMake executable
|
|
add_executable(cmake cmakemain.cxx cmcmd.cxx cmcmd.h ${MANIFEST_FILE})
|
|
list(APPEND _tools cmake)
|
|
target_link_libraries(cmake CMakeLib)
|
|
|
|
add_library(CMakeServerLib
|
|
cmConnection.h cmConnection.cxx
|
|
cmFileMonitor.cxx cmFileMonitor.h
|
|
cmJsonObjectDictionary.h
|
|
cmJsonObjects.h
|
|
cmJsonObjects.cxx
|
|
cmPipeConnection.cxx cmPipeConnection.h
|
|
cmServer.cxx cmServer.h
|
|
cmServerConnection.cxx cmServerConnection.h
|
|
cmServerProtocol.cxx cmServerProtocol.h
|
|
)
|
|
target_link_libraries(CMakeServerLib CMakeLib)
|
|
target_link_libraries(cmake CMakeServerLib)
|
|
|
|
# Build CTest executable
|
|
add_executable(ctest ctest.cxx ${MANIFEST_FILE})
|
|
list(APPEND _tools ctest)
|
|
target_link_libraries(ctest CTestLib)
|
|
|
|
# Build CPack executable
|
|
add_executable(cpack CPack/cpack.cxx ${MANIFEST_FILE})
|
|
list(APPEND _tools cpack)
|
|
target_link_libraries(cpack CPackLib)
|
|
|
|
# Curses GUI
|
|
if(BUILD_CursesDialog)
|
|
add_subdirectory(CursesDialog)
|
|
endif()
|
|
|
|
# Qt GUI
|
|
option(BUILD_QtDialog "Build Qt dialog for CMake" FALSE)
|
|
if(BUILD_QtDialog)
|
|
add_subdirectory(QtDialog)
|
|
endif()
|
|
|
|
include (${CMake_BINARY_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
|
|
include (${CMake_SOURCE_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
|
|
|
|
if(WIN32)
|
|
# Compute the binary version that appears in the RC file. Version
|
|
# components in the RC file are 16-bit integers so we may have to
|
|
# split the patch component.
|
|
if(CMake_VERSION_PATCH MATCHES "^([0-9]+)([0-9][0-9][0-9][0-9])$")
|
|
set(CMake_RCVERSION_YEAR "${CMAKE_MATCH_1}")
|
|
set(CMake_RCVERSION_MONTH_DAY "${CMAKE_MATCH_2}")
|
|
string(REGEX REPLACE "^0+" "" CMake_RCVERSION_MONTH_DAY "${CMake_RCVERSION_MONTH_DAY}")
|
|
set(CMake_RCVERSION ${CMake_VERSION_MAJOR},${CMake_VERSION_MINOR},${CMake_RCVERSION_YEAR},${CMake_RCVERSION_MONTH_DAY})
|
|
unset(CMake_RCVERSION_MONTH_DAY)
|
|
unset(CMake_RCVERSION_YEAR)
|
|
else()
|
|
set(CMake_RCVERSION ${CMake_VERSION_MAJOR},${CMake_VERSION_MINOR},${CMake_VERSION_PATCH},0)
|
|
endif()
|
|
set(CMake_RCVERSION_STR ${CMake_VERSION})
|
|
|
|
# Add Windows executable version information.
|
|
configure_file("CMakeVersion.rc.in" "CMakeVersion.rc" @ONLY)
|
|
|
|
# We use a separate object library for this to work around a limitation of
|
|
# MinGW's windres tool with spaces in the path to the include directories.
|
|
add_library(CMakeVersion OBJECT "${CMAKE_CURRENT_BINARY_DIR}/CMakeVersion.rc")
|
|
set_property(TARGET CMakeVersion PROPERTY INCLUDE_DIRECTORIES "")
|
|
foreach(_tool ${_tools})
|
|
target_sources(${_tool} PRIVATE $<TARGET_OBJECTS:CMakeVersion>)
|
|
endforeach()
|
|
endif()
|
|
|
|
if(CMake_JOB_POOL_LINK_BIN)
|
|
set_property(TARGET ${_tools} PROPERTY JOB_POOL_LINK "link-bin")
|
|
set_property(GLOBAL APPEND PROPERTY JOB_POOLS "link-bin=${CMake_JOB_POOL_LINK_BIN}")
|
|
endif()
|
|
|
|
# Install tools
|
|
|
|
foreach(_tool ${_tools})
|
|
CMake_OPTIONAL_COMPONENT(${_tool})
|
|
install(TARGETS ${_tool} DESTINATION ${CMAKE_BIN_DIR} ${COMPONENT})
|
|
endforeach()
|
|
|
|
install(FILES cmCPluginAPI.h DESTINATION ${CMAKE_DATA_DIR}/include)
|
|
|
|
# Unset temporary variables
|
|
unset(_tools)
|