824 lines
23 KiB
CMake
824 lines
23 KiB
CMake
#=============================================================================
|
|
# 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.
|
|
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(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_ZLIB_INCLUDES}
|
|
${CMAKE_EXPAT_INCLUDES}
|
|
${CMAKE_TAR_INCLUDES}
|
|
${CMAKE_COMPRESS_INCLUDES}
|
|
${CMake_HAIKU_INCLUDE_DIRS}
|
|
)
|
|
|
|
# let cmake know it is supposed to use it
|
|
add_definitions(-DCMAKE_BUILD_WITH_CMAKE)
|
|
|
|
option(CMAKE_REGENERATE_YACCLEX
|
|
"Regenerate YACC and LEXX files" OFF)
|
|
mark_as_advanced(CMAKE_REGENERATE_YACCLEX)
|
|
if(CMAKE_REGENERATE_YACCLEX)
|
|
set(parsersLexers cmFortran cmCommandArgument cmExpr)
|
|
find_program(YACC_EXECUTABLE
|
|
NAMES yacc bison
|
|
PATHS /usr/bin
|
|
DOC "Yacc or Bison executable")
|
|
find_program(FLEX_EXECUTABLE
|
|
NAMES flex
|
|
PATHS /usr/bin
|
|
DOC "Flex executable")
|
|
mark_as_advanced(YACC_EXECUTABLE FLEX_EXECUTABLE)
|
|
if(YACC_EXECUTABLE)
|
|
set(BISON_FLAGS)
|
|
if(YACC_EXECUTABLE MATCHES "bison")
|
|
set(BISON_FLAGS "--yacc")
|
|
endif()
|
|
set(yacc_files)
|
|
foreach(name ${parsersLexers})
|
|
set(src "${CMAKE_CURRENT_SOURCE_DIR}/${name}Parser.y")
|
|
set(dst "${CMAKE_CURRENT_BINARY_DIR}/${name}Parser.cxx")
|
|
set(hdr "${CMAKE_CURRENT_BINARY_DIR}/${name}ParserTokens.h")
|
|
add_custom_command(
|
|
OUTPUT "${dst}"
|
|
DEPENDS "${src}"
|
|
COMMAND
|
|
${YACC_EXECUTABLE}
|
|
--name-prefix=${name}_yy --defines=${hdr} -o${dst} ${src}
|
|
)
|
|
set(yacc_files ${yacc_files} "${dst}")
|
|
endforeach()
|
|
add_custom_target(RerunYacc DEPENDS ${yacc_files})
|
|
endif()
|
|
if(FLEX_EXECUTABLE)
|
|
set(lex_files)
|
|
foreach(name ${parsersLexers})
|
|
set(src "${CMAKE_CURRENT_SOURCE_DIR}/${name}Lexer.in.l")
|
|
set(dst "${CMAKE_CURRENT_BINARY_DIR}/${name}Lexer.cxx")
|
|
set(hdr "${CMAKE_CURRENT_BINARY_DIR}/${name}Lexer.h")
|
|
add_custom_command(
|
|
OUTPUT "${dst}"
|
|
DEPENDS "${src}"
|
|
COMMAND
|
|
${FLEX_EXECUTABLE}
|
|
--prefix=${name}_yy --header-file=${hdr} -o${dst} ${src}
|
|
)
|
|
set(lex_files ${lex_files} "${dst}")
|
|
endforeach()
|
|
add_custom_target(RerunLex DEPENDS ${lex_files})
|
|
endif()
|
|
|
|
endif()
|
|
|
|
# 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
|
|
cmArchiveWrite.cxx
|
|
cmBase32.cxx
|
|
cmBootstrapCommands1.cxx
|
|
cmBootstrapCommands2.cxx
|
|
cmCacheManager.cxx
|
|
cmCacheManager.h
|
|
"${CMAKE_CURRENT_BINARY_DIR}/cmCommands.cxx"
|
|
cmCLocaleEnvironmentScope.h
|
|
cmCLocaleEnvironmentScope.cxx
|
|
cmCommands.h
|
|
cmCommandArgumentLexer.cxx
|
|
cmCommandArgumentParser.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
|
|
cmDefinitions.cxx
|
|
cmDefinitions.h
|
|
cmDepends.cxx
|
|
cmDepends.h
|
|
cmDependsC.cxx
|
|
cmDependsC.h
|
|
cmDependsFortran.cxx
|
|
cmDependsFortran.h
|
|
cmDependsJava.cxx
|
|
cmDependsJava.h
|
|
cmDependsJavaLexer.cxx
|
|
cmDependsJavaParser.cxx
|
|
cmDependsJavaParserHelper.cxx
|
|
cmDependsJavaParserHelper.h
|
|
cmDocumentation.cxx
|
|
cmDocumentationFormatter.cxx
|
|
cmDocumentationSection.cxx
|
|
cmDynamicLoader.cxx
|
|
cmDynamicLoader.h
|
|
${ELF_SRCS}
|
|
cmExprLexer.cxx
|
|
cmExprParser.cxx
|
|
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
|
|
cmExportSetMap.h
|
|
cmExportSetMap.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
|
|
cmFileLock.cxx
|
|
cmFileLock.h
|
|
cmFileLockPool.cxx
|
|
cmFileLockPool.h
|
|
cmFileLockResult.cxx
|
|
cmFileLockResult.h
|
|
cmFilePathUuid.cxx
|
|
cmFilePathUuid.h
|
|
cmFileTimeComparison.cxx
|
|
cmFileTimeComparison.h
|
|
cmFortranLexer.cxx
|
|
cmFortranLexer.h
|
|
cmFortranParser.cxx
|
|
cmFortranParser.h
|
|
cmFortranParserImpl.cxx
|
|
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
|
|
cmGlobalCommonGenerator.cxx
|
|
cmGlobalCommonGenerator.h
|
|
cmGlobalGenerator.cxx
|
|
cmGlobalGenerator.h
|
|
cmGlobalGeneratorFactory.h
|
|
cmGlobalUnixMakefileGenerator3.cxx
|
|
cmGlobalUnixMakefileGenerator3.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
|
|
cmInstallTargetGenerator.h
|
|
cmInstallTargetGenerator.cxx
|
|
cmInstallDirectoryGenerator.h
|
|
cmInstallDirectoryGenerator.cxx
|
|
cmLinkedTree.h
|
|
cmLinkItem.h
|
|
cmListFileCache.cxx
|
|
cmListFileCache.h
|
|
cmListFileLexer.c
|
|
cmLocalCommonGenerator.cxx
|
|
cmLocalCommonGenerator.h
|
|
cmLocalGenerator.cxx
|
|
cmLocalGenerator.h
|
|
cmLocalUnixMakefileGenerator3.cxx
|
|
cmLocale.h
|
|
${MACH_SRCS}
|
|
cmMakefile.cxx
|
|
cmMakefile.h
|
|
cmMakefileTargetGenerator.cxx
|
|
cmMakefileExecutableTargetGenerator.cxx
|
|
cmMakefileLibraryTargetGenerator.cxx
|
|
cmMakefileUtilityTargetGenerator.cxx
|
|
cmMessenger.cxx
|
|
cmMessenger.h
|
|
cmOSXBundleGenerator.cxx
|
|
cmOSXBundleGenerator.h
|
|
cmOutputConverter.cxx
|
|
cmOutputConverter.h
|
|
cmNewLineStyle.h
|
|
cmNewLineStyle.cxx
|
|
cmOrderDirectories.cxx
|
|
cmOrderDirectories.h
|
|
cmPolicies.h
|
|
cmPolicies.cxx
|
|
cmProcessTools.cxx
|
|
cmProcessTools.h
|
|
cmProperty.cxx
|
|
cmProperty.h
|
|
cmPropertyDefinition.cxx
|
|
cmPropertyDefinition.h
|
|
cmPropertyDefinitionMap.cxx
|
|
cmPropertyDefinitionMap.h
|
|
cmPropertyMap.cxx
|
|
cmPropertyMap.h
|
|
cmQtAutoGeneratorInitializer.cxx
|
|
cmQtAutoGeneratorInitializer.h
|
|
cmQtAutoGenerators.cxx
|
|
cmQtAutoGenerators.h
|
|
cmRST.cxx
|
|
cmRST.h
|
|
cmScriptGenerator.h
|
|
cmScriptGenerator.cxx
|
|
cmSourceFile.cxx
|
|
cmSourceFile.h
|
|
cmSourceFileLocation.cxx
|
|
cmSourceFileLocation.h
|
|
cmSourceGroup.cxx
|
|
cmSourceGroup.h
|
|
cmState.cxx
|
|
cmState.h
|
|
cmSystemTools.cxx
|
|
cmSystemTools.h
|
|
cmTarget.cxx
|
|
cmTarget.h
|
|
cmTargetExport.h
|
|
cmTest.cxx
|
|
cmTest.h
|
|
cmTestGenerator.cxx
|
|
cmTestGenerator.h
|
|
cmUuid.cxx
|
|
cmVariableWatch.cxx
|
|
cmVariableWatch.h
|
|
cmVersion.cxx
|
|
cmVersion.h
|
|
cmXMLParser.cxx
|
|
cmXMLParser.h
|
|
cmXMLSafe.cxx
|
|
cmXMLSafe.h
|
|
cmXMLWriter.cxx
|
|
cmXMLWriter.h
|
|
cmake.cxx
|
|
cmake.h
|
|
|
|
cm_auto_ptr.hxx
|
|
cm_get_date.h
|
|
cm_get_date.c
|
|
cm_sha2.h
|
|
cm_sha2.c
|
|
cm_utf8.h
|
|
cm_utf8.c
|
|
)
|
|
|
|
set(COMMAND_INCLUDES "#include \"cmTargetPropCommandBase.cxx\"\n")
|
|
list(APPEND SRCS cmTargetPropCommandBase.cxx)
|
|
set_property(SOURCE cmTargetPropCommandBase.cxx PROPERTY HEADER_FILE_ONLY ON)
|
|
set(NEW_COMMANDS "")
|
|
foreach(command_file
|
|
cmAddCompileOptionsCommand
|
|
cmAuxSourceDirectoryCommand
|
|
cmBuildNameCommand
|
|
cmCMakeHostSystemInformationCommand
|
|
cmElseIfCommand
|
|
cmExportCommand
|
|
cmExportLibraryDependenciesCommand
|
|
cmFLTKWrapUICommand
|
|
cmIncludeExternalMSProjectCommand
|
|
cmInstallProgramsCommand
|
|
cmLinkLibrariesCommand
|
|
cmLoadCacheCommand
|
|
cmOutputRequiredFilesCommand
|
|
cmQTWrapCPPCommand
|
|
cmQTWrapUICommand
|
|
cmRemoveCommand
|
|
cmRemoveDefinitionsCommand
|
|
cmSourceGroupCommand
|
|
cmSubdirDependsCommand
|
|
cmTargetCompileDefinitionsCommand
|
|
cmTargetCompileFeaturesCommand
|
|
cmTargetCompileOptionsCommand
|
|
cmTargetIncludeDirectoriesCommand
|
|
cmTargetSourcesCommand
|
|
cmUseMangledMesaCommand
|
|
cmUtilitySourceCommand
|
|
cmVariableRequiresCommand
|
|
cmVariableWatchCommand
|
|
cmWriteFileCommand
|
|
# This one must be last because it includes windows.h and
|
|
# windows.h #defines GetCurrentDirectory which is a member
|
|
# of cmMakefile
|
|
cmLoadCommandCommand
|
|
)
|
|
set(COMMAND_INCLUDES "${COMMAND_INCLUDES}#include \"${command_file}.cxx\"\n")
|
|
set(NEW_COMMANDS "${NEW_COMMANDS}commands.push_back(new ${command_file});\n")
|
|
list(APPEND SRCS ${command_file}.cxx)
|
|
set_property(SOURCE ${command_file}.cxx PROPERTY HEADER_FILE_ONLY ON)
|
|
endforeach()
|
|
configure_file(cmCommands.cxx.in ${CMAKE_CURRENT_BINARY_DIR}/cmCommands.cxx @ONLY)
|
|
|
|
# Kdevelop only works on UNIX and not windows
|
|
if(UNIX)
|
|
set(SRCS ${SRCS} cmGlobalKdevelopGenerator.cxx)
|
|
endif()
|
|
|
|
# Xcode only works on Apple
|
|
if(APPLE)
|
|
set(SRCS ${SRCS}
|
|
cmXCodeObject.cxx
|
|
cmXCode21Object.cxx
|
|
cmGlobalXCodeGenerator.cxx
|
|
cmGlobalXCodeGenerator.h
|
|
cmLocalXCodeGenerator.cxx
|
|
cmLocalXCodeGenerator.h)
|
|
endif()
|
|
|
|
|
|
if (WIN32)
|
|
set(SRCS ${SRCS}
|
|
cmCallVisualStudioMacro.cxx
|
|
cmCallVisualStudioMacro.h
|
|
bindexplib.cxx
|
|
)
|
|
|
|
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
|
|
cmLocalVisualStudio10Generator.cxx
|
|
cmLocalVisualStudio10Generator.h
|
|
cmGlobalVisualStudio10Generator.h
|
|
cmGlobalVisualStudio10Generator.cxx
|
|
cmGlobalVisualStudio11Generator.h
|
|
cmGlobalVisualStudio11Generator.cxx
|
|
cmGlobalVisualStudio12Generator.h
|
|
cmGlobalVisualStudio12Generator.cxx
|
|
cmGlobalVisualStudio14Generator.h
|
|
cmGlobalVisualStudio14Generator.cxx
|
|
cmGlobalVisualStudio15Generator.h
|
|
cmGlobalVisualStudio15Generator.cxx
|
|
cmGlobalVisualStudioGenerator.cxx
|
|
cmGlobalVisualStudioGenerator.h
|
|
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
|
|
cmGlobalGhsMultiGenerator.cxx
|
|
cmGlobalGhsMultiGenerator.h
|
|
cmLocalGhsMultiGenerator.cxx
|
|
cmLocalGhsMultiGenerator.h
|
|
cmGhsMultiTargetGenerator.cxx
|
|
cmGhsMultiTargetGenerator.h
|
|
cmGhsMultiGpj.cxx
|
|
cmGhsMultiGpj.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()
|
|
|
|
# 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
|
|
)
|
|
|
|
# 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 cmFileTimeComparison.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_EXPAT_LIBRARIES} ${CMAKE_ZLIB_LIBRARIES}
|
|
${CMAKE_TAR_LIBRARIES} ${CMAKE_COMPRESS_LIBRARIES}
|
|
${CMAKE_CURL_LIBRARIES}
|
|
${CMAKE_JSONCPP_LIBRARIES}
|
|
${CMAKE_LIBUV_LIBRARIES}
|
|
${CMake_KWIML_LIBRARIES}
|
|
)
|
|
|
|
# On Apple we need CoreFoundation
|
|
if(APPLE)
|
|
target_link_libraries(CMakeLib "-framework CoreFoundation")
|
|
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()
|
|
|
|
#
|
|
# CTestLib
|
|
#
|
|
include_directories(
|
|
"${CMake_SOURCE_DIR}/Source/CTest"
|
|
${CMAKE_XMLRPC_INCLUDES}
|
|
${CMAKE_CURL_INCLUDES}
|
|
)
|
|
#
|
|
# Sources for CTestLib
|
|
#
|
|
set(CTEST_SRCS cmCTest.cxx
|
|
CTest/cmProcess.cxx
|
|
CTest/cmCTestBatchTestHandler.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/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
|
|
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
|
|
)
|
|
|
|
# Build CTestLib
|
|
add_library(CTestLib ${CTEST_SRCS})
|
|
target_link_libraries(CTestLib CMakeLib ${CMAKE_CURL_LIBRARIES} ${CMAKE_XMLRPC_LIBRARIES})
|
|
|
|
#
|
|
# Sources for CPack
|
|
#
|
|
set(CPACK_SRCS
|
|
CPack/cmCPackArchiveGenerator.cxx
|
|
CPack/cmCPackComponentGroup.cxx
|
|
CPack/cmCPackGeneratorFactory.cxx
|
|
CPack/cmCPackGenerator.cxx
|
|
CPack/cmCPackLog.cxx
|
|
CPack/cmCPackNSISGenerator.cxx
|
|
CPack/IFW/cmCPackIFWPackage.cxx
|
|
CPack/IFW/cmCPackIFWInstaller.cxx
|
|
CPack/IFW/cmCPackIFWRepository.cxx
|
|
CPack/IFW/cmCPackIFWGenerator.cxx
|
|
CPack/cmCPackSTGZGenerator.cxx
|
|
CPack/cmCPackTGZGenerator.cxx
|
|
CPack/cmCPackTXZGenerator.cxx
|
|
CPack/cmCPackTarBZip2Generator.cxx
|
|
CPack/cmCPackTarCompressGenerator.cxx
|
|
CPack/cmCPackZIPGenerator.cxx
|
|
CPack/cmCPack7zGenerator.cxx
|
|
)
|
|
|
|
if(CYGWIN)
|
|
set(CPACK_SRCS ${CPACK_SRCS}
|
|
CPack/cmCPackCygwinBinaryGenerator.cxx
|
|
CPack/cmCPackCygwinSourceGenerator.cxx
|
|
)
|
|
endif()
|
|
|
|
if(UNIX)
|
|
set(CPACK_SRCS ${CPACK_SRCS}
|
|
CPack/cmCPackDebGenerator.cxx
|
|
CPack/cmCPackRPMGenerator.cxx
|
|
)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
set(CPACK_SRCS ${CPACK_SRCS}
|
|
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(APPLE)
|
|
add_executable(cmakexbuild cmakexbuild.cxx)
|
|
list(APPEND _tools cmakexbuild)
|
|
target_link_libraries(cmakexbuild CMakeLib)
|
|
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)
|
|
|
|
# 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)
|
|
include(${CMake_SOURCE_DIR}/Source/CursesDialog/CMakeLists.txt)
|
|
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)
|
|
|
|
# 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)
|