CMake/Source/CMakeLists.txt

567 lines
15 KiB
CMake
Raw Normal View History

#=============================================================================
# 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)
if(HAVE_ELF_H)
set(CMAKE_USE_ELF_PARSER 1)
else()
set(CMAKE_USE_ELF_PARSER)
endif()
set(EXECUTABLE_OUTPUT_PATH ${CMake_BIN_DIR})
2005-03-04 19:38:34 +03:00
# 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(
2006-01-02 07:31:17 +03:00
"${CMake_SOURCE_DIR}/Source/CPack/cmCPackConfigure.h.in"
"${CMake_BINARY_DIR}/Source/CPack/cmCPackConfigure.h"
)
2005-03-04 19:38:34 +03:00
2006-04-21 22:26:11 +04:00
# add the include path to find the .h
include_directories(
"${CMake_BINARY_DIR}/Source"
"${CMake_SOURCE_DIR}/Source"
2005-03-16 20:54:35 +03:00
${CMAKE_ZLIB_INCLUDES}
${CMAKE_EXPAT_INCLUDES}
2005-12-29 00:30:28 +03:00
${CMAKE_TAR_INCLUDES}
${CMAKE_COMPRESS_INCLUDES}
)
2005-03-04 19:38:34 +03:00
# let cmake know it is supposed to use it
add_definitions(-DCMAKE_BUILD_WITH_CMAKE)
2005-03-04 19:38:34 +03:00
option(CMAKE_REGENERATE_YACCLEX
"Regenerate YACC and LEXX files" OFF)
mark_as_advanced(CMAKE_REGENERATE_YACCLEX)
if(CMAKE_REGENERATE_YACCLEX)
set(parsersLexers cmDependsFortran 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()
2005-03-04 19:38:34 +03:00
#
# Sources for CMakeLib
#
set(SRCS
cmStandardIncludes.cxx
cmArchiveWrite.cxx
2005-01-29 01:14:49 +03:00
cmBootstrapCommands.cxx
2005-01-18 21:41:23 +03:00
cmCacheManager.cxx
cmCacheManager.h
cmCommands.cxx
cmCommands.h
cmCommandArgumentLexer.cxx
cmCommandArgumentParser.cxx
cmCommandArgumentParserHelper.cxx
cmComputeComponentGraph.cxx
cmComputeComponentGraph.h
cmComputeLinkDepends.cxx
cmComputeLinkDepends.h
cmComputeLinkInformation.cxx
cmComputeLinkInformation.h
cmComputeTargetDepends.h
cmComputeTargetDepends.cxx
cmCryptoHash.cxx
cmCryptoHash.h
2005-01-18 21:41:23 +03:00
cmCustomCommand.cxx
cmCustomCommand.h
cmCustomCommandGenerator.cxx
cmCustomCommandGenerator.h
cmDefinitions.cxx
cmDefinitions.h
2005-01-29 01:14:49 +03:00
cmDepends.cxx
cmDepends.h
cmDependsC.cxx
cmDependsC.h
cmDependsFortran.cxx
cmDependsFortran.h
cmDependsFortranLexer.cxx
cmDependsFortranParser.cxx
2005-01-29 01:14:49 +03:00
cmDependsFortranParser.h
cmDependsJava.cxx
cmDependsJava.h
2005-01-29 01:14:49 +03:00
cmDependsJavaLexer.cxx
cmDependsJavaParser.cxx
cmDependsJavaParserHelper.cxx
cmDependsJavaParserHelper.h
2005-01-18 21:41:23 +03:00
cmDocumentation.cxx
cmDocumentationFormatter.cxx
cmDocumentationFormatterHTML.cxx
cmDocumentationFormatterDocbook.cxx
cmDocumentationFormatterMan.cxx
cmDocumentationFormatterText.cxx
cmDocumentationFormatterUsage.cxx
cmDocumentationSection.cxx
cmDocumentCompileDefinitions.h
cmDocumentGeneratorExpressions.h
cmDocumentLocationUndefined.h
2007-10-18 17:10:42 +04:00
cmDocumentVariables.cxx
2005-01-18 21:41:23 +03:00
cmDynamicLoader.cxx
cmDynamicLoader.h
${ELF_SRCS}
cmExprLexer.cxx
cmExprParser.cxx
cmExprParserHelper.cxx
cmExportBuildFileGenerator.h
cmExportBuildFileGenerator.cxx
cmExportFileGenerator.h
cmExportFileGenerator.cxx
cmExportInstallFileGenerator.h
cmExportInstallFileGenerator.cxx
cmExportSet.h
cmExportSet.cxx
cmExportSetMap.h
cmExportSetMap.cxx
cmExtraCodeBlocksGenerator.cxx
cmExtraCodeBlocksGenerator.h
cmExtraEclipseCDT4Generator.cxx
cmExtraEclipseCDT4Generator.h
2006-12-04 19:05:23 +03:00
cmFileTimeComparison.cxx
cmFileTimeComparison.h
2005-01-18 21:41:23 +03:00
cmGeneratedFileStream.cxx
cmGeneratorExpressionDAGChecker.cxx
cmGeneratorExpressionDAGChecker.h
cmGeneratorExpressionEvaluator.cxx
cmGeneratorExpressionEvaluator.h
cmGeneratorExpressionLexer.cxx
cmGeneratorExpressionLexer.h
cmGeneratorExpressionParser.cxx
cmGeneratorExpressionParser.h
cmGeneratorExpression.cxx
cmGeneratorExpression.h
cmGeneratorTarget.cxx
cmGeneratorTarget.h
2005-01-18 21:41:23 +03:00
cmGlobalGenerator.cxx
cmGlobalGenerator.h
cmGlobalGeneratorFactory.h
2005-05-12 18:49:56 +04:00
cmGlobalUnixMakefileGenerator3.cxx
cmGlobalUnixMakefileGenerator3.h
cmGraphAdjacencyList.h
cmGraphVizWriter.cxx
cmGraphVizWriter.h
cmInstallGenerator.h
cmInstallGenerator.cxx
cmInstallExportGenerator.cxx
cmInstallFilesGenerator.h
cmInstallFilesGenerator.cxx
cmInstallScriptGenerator.h
cmInstallScriptGenerator.cxx
cmInstallTargetGenerator.h
cmInstallTargetGenerator.cxx
cmInstallDirectoryGenerator.h
cmInstallDirectoryGenerator.cxx
2005-01-18 21:41:23 +03:00
cmListFileCache.cxx
cmListFileCache.h
cmListFileLexer.c
cmLocalGenerator.cxx
cmLocalGenerator.h
2005-05-12 18:49:56 +04:00
cmLocalUnixMakefileGenerator3.cxx
2005-01-18 21:41:23 +03:00
cmMakeDepend.cxx
cmMakeDepend.h
cmMakefile.cxx
cmMakefile.h
cmMakefileTargetGenerator.cxx
cmMakefileExecutableTargetGenerator.cxx
cmMakefileLibraryTargetGenerator.cxx
cmMakefileUtilityTargetGenerator.cxx
cmOSXBundleGenerator.cxx
cmOSXBundleGenerator.h
cmNewLineStyle.h
cmNewLineStyle.cxx
cmOrderDirectories.cxx
cmOrderDirectories.h
cmPolicies.h
cmPolicies.cxx
cmProcessTools.cxx
cmProcessTools.h
2006-12-04 19:05:23 +03:00
cmProperty.cxx
cmProperty.h
cmPropertyDefinition.cxx
cmPropertyDefinition.h
cmPropertyDefinitionMap.cxx
cmPropertyDefinitionMap.h
cmPropertyMap.cxx
cmPropertyMap.h
cmQtAutomoc.cxx
cmQtAutomoc.h
cmScriptGenerator.h
cmScriptGenerator.cxx
2005-01-18 21:41:23 +03:00
cmSourceFile.cxx
cmSourceFile.h
cmSourceFileLocation.cxx
cmSourceFileLocation.h
2005-01-18 21:41:23 +03:00
cmSourceGroup.cxx
cmSourceGroup.h
cmSystemTools.cxx
cmSystemTools.h
cmTarget.cxx
cmTarget.h
cmTargetExport.h
cmTest.cxx
cmTest.h
cmTestGenerator.cxx
cmTestGenerator.h
2005-01-18 21:41:23 +03:00
cmVariableWatch.cxx
cmVariableWatch.h
cmVersion.cxx
cmVersion.h
cmXMLParser.cxx
cmXMLParser.h
cmXMLSafe.cxx
cmXMLSafe.h
2005-01-18 21:41:23 +03:00
cmake.cxx
cmake.h
cmakewizard.cxx
cmakewizard.h
cm_sha2.h
cm_sha2.c
cm_utf8.h
cm_utf8.c
2005-01-18 21:41:23 +03:00
)
2001-06-12 21:30:13 +04:00
# 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}
2005-03-14 21:23:14 +03:00
cmXCodeObject.cxx
2005-09-03 00:29:32 +04:00
cmXCode21Object.cxx
2005-03-14 21:23:14 +03:00
cmGlobalXCodeGenerator.cxx
cmGlobalXCodeGenerator.h
2005-03-14 21:23:14 +03:00
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
cmGlobalVisualStudio6Generator.cxx
cmGlobalVisualStudio6Generator.h
cmGlobalVisualStudio71Generator.cxx
cmGlobalVisualStudio71Generator.h
cmGlobalVisualStudio7Generator.cxx
cmGlobalVisualStudio7Generator.h
cmGlobalVisualStudio8Generator.cxx
cmGlobalVisualStudio8Generator.h
2007-09-17 23:21:47 +04:00
cmGlobalVisualStudio9Generator.cxx
cmGlobalVisualStudio9Generator.h
cmVisualStudioGeneratorOptions.h
cmVisualStudioGeneratorOptions.cxx
cmVisualStudio10TargetGenerator.h
cmVisualStudio10TargetGenerator.cxx
cmLocalVisualStudio10Generator.cxx
cmLocalVisualStudio10Generator.h
cmGlobalVisualStudio10Generator.h
cmGlobalVisualStudio10Generator.cxx
cmGlobalVisualStudio11Generator.h
cmGlobalVisualStudio11Generator.cxx
cmGlobalVisualStudioGenerator.cxx
cmGlobalVisualStudioGenerator.h
cmGlobalWatcomWMakeGenerator.cxx
cmIDEFlagTable.h
cmIDEOptions.cxx
cmIDEOptions.h
cmLocalVisualStudio6Generator.cxx
cmLocalVisualStudio6Generator.h
cmLocalVisualStudio7Generator.cxx
cmLocalVisualStudio7Generator.h
cmLocalVisualStudioGenerator.cxx
cmLocalVisualStudioGenerator.h
cmVisualStudioWCEPlatformParser.h
cmVisualStudioWCEPlatformParser.cxx
cmWin32ProcessExecution.cxx
cmWin32ProcessExecution.h
)
endif()
endif ()
2001-06-12 21:30:13 +04:00
2012-07-20 12:53:34 +04:00
# Ninja support
set(SRCS ${SRCS}
2012-07-20 12:53:34 +04:00
cmGlobalNinjaGenerator.cxx
cmGlobalNinjaGenerator.h
cmNinjaTypes.h
cmLocalNinjaGenerator.cxx
cmLocalNinjaGenerator.h
cmNinjaTargetGenerator.cxx
cmNinjaTargetGenerator.h
cmNinjaNormalTargetGenerator.cxx
cmNinjaNormalTargetGenerator.h
cmNinjaUtilityTargetGenerator.cxx
cmNinjaUtilityTargetGenerator.h
)
if(WIN32 AND NOT CYGWIN AND NOT BORLAND)
set_source_files_properties(cmcldeps.cxx PROPERTIES COMPILE_DEFINITIONS _WIN32_WINNT=0x0501)
add_executable(cmcldeps cmcldeps.cxx)
target_link_libraries(cmcldeps CMakeLib)
install_targets(/bin cmcldeps)
endif()
2011-11-11 09:00:49 +04:00
# 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} )
# On Apple we need CoreFoundation
if(APPLE)
target_link_libraries(CMakeLib "-framework CoreFoundation")
endif()
# On some platforms we need the rpcrt4 library for the VS 7 generators.
if(CMAKE_BUILD_ON_VISUAL_STUDIO OR MINGW)
target_link_libraries(CMakeLib rpcrt4)
endif()
2005-03-04 19:38:34 +03:00
#
# CTestLib
#
include_directories(
"${CMake_SOURCE_DIR}/Source/CTest"
${CMAKE_XMLRPC_INCLUDES}
2005-06-24 17:06:26 +04:00
${CMAKE_CURL_INCLUDES}
)
2005-03-04 19:38:34 +03:00
#
# Sources for CTestLib
#
set(CTEST_SRCS cmCTest.cxx
2008-07-03 17:31:33 +04:00
CTest/cmProcess.cxx
CTest/cmCTestBatchTestHandler.cxx
CTest/cmCTestBuildAndTestHandler.cxx
CTest/cmCTestBuildCommand.cxx
2004-09-07 18:37:39 +04:00
CTest/cmCTestBuildHandler.cxx
CTest/cmCTestConfigureCommand.cxx
2004-09-09 16:41:05 +04:00
CTest/cmCTestConfigureHandler.cxx
CTest/cmCTestCoverageCommand.cxx
2004-09-09 16:41:05 +04:00
CTest/cmCTestCoverageHandler.cxx
CTest/cmParseMumpsCoverage.cxx
CTest/cmParseCacheCoverage.cxx
CTest/cmParseGTMCoverage.cxx
2010-05-25 17:23:25 +04:00
CTest/cmParsePHPCoverage.cxx
2005-01-27 18:11:04 +03:00
CTest/cmCTestEmptyBinaryDirectoryCommand.cxx
CTest/cmCTestGenericHandler.cxx
CTest/cmCTestHandlerCommand.cxx
CTest/cmCTestLaunch.cxx
CTest/cmCTestMemCheckCommand.cxx
CTest/cmCTestMemCheckHandler.cxx
2008-07-03 17:31:33 +04:00
CTest/cmCTestMultiProcessHandler.cxx
2006-03-29 00:20:03 +04:00
CTest/cmCTestReadCustomFilesCommand.cxx
2005-01-27 18:11:04 +03:00
CTest/cmCTestRunScriptCommand.cxx
CTest/cmCTestRunTest.cxx
CTest/cmCTestScriptHandler.cxx
2005-01-27 18:11:04 +03:00
CTest/cmCTestSleepCommand.cxx
CTest/cmCTestStartCommand.cxx
CTest/cmCTestSubmitCommand.cxx
CTest/cmCTestSubmitHandler.cxx
CTest/cmCTestTestCommand.cxx
CTest/cmCTestTestHandler.cxx
CTest/cmCTestUpdateCommand.cxx
CTest/cmCTestUpdateHandler.cxx
2011-02-18 20:11:51 +03:00
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
2005-01-18 21:41:23 +03:00
)
2004-09-06 21:37:34 +04:00
2005-03-04 19:38:34 +03:00
# Build CTestLib
add_library(CTestLib ${CTEST_SRCS})
target_link_libraries(CTestLib CMakeLib ${CMAKE_CURL_LIBRARIES} ${CMAKE_XMLRPC_LIBRARIES})
2006-01-02 07:31:17 +03:00
#
# Sources for CPack
#
set(CPACK_SRCS
CPack/cmCPackArchiveGenerator.cxx
CPack/cmCPackComponentGroup.cxx
2007-11-06 00:33:19 +03:00
CPack/cmCPackGeneratorFactory.cxx
2007-11-06 00:55:45 +03:00
CPack/cmCPackGenerator.cxx
CPack/cmCPackLog.cxx
2006-01-02 07:31:17 +03:00
CPack/cmCPackNSISGenerator.cxx
CPack/cmCPackSTGZGenerator.cxx
CPack/cmCPackTGZGenerator.cxx
CPack/cmCPackTarBZip2Generator.cxx
CPack/cmCPackTarCompressGenerator.cxx
CPack/cmCPackZIPGenerator.cxx
CPack/cmCPackDocumentVariables.cxx
CPack/cmCPackDocumentMacros.cxx
2006-01-02 07:31:17 +03:00
)
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(APPLE)
set(CPACK_SRCS ${CPACK_SRCS}
CPack/cmCPackBundleGenerator.cxx
CPack/cmCPackDragNDropGenerator.cxx
CPack/cmCPackOSXX11Generator.cxx
CPack/cmCPackPackageMakerGenerator.cxx
)
endif()
2006-01-02 07:31:17 +03:00
# Build CPackLib
add_library(CPackLib ${CPACK_SRCS})
target_link_libraries(CPackLib CMakeLib)
2006-01-02 07:31:17 +03:00
if(APPLE)
add_executable(cmakexbuild cmakexbuild.cxx)
target_link_libraries(cmakexbuild CMakeLib)
add_executable(OSXScriptLauncher
CPack/OSXScriptLauncher.cxx)
target_link_libraries(OSXScriptLauncher cmsys)
target_link_libraries(OSXScriptLauncher "-framework CoreFoundation")
endif()
2005-03-04 19:38:34 +03:00
# Build CMake executable
add_executable(cmake cmakemain.cxx)
target_link_libraries(cmake CMakeLib)
2005-03-04 19:38:34 +03:00
# Build special executable for running programs on Windows 98
if(WIN32)
if(NOT UNIX)
add_executable(cmw9xcom cmw9xcom.cxx)
target_link_libraries(cmw9xcom CMakeLib)
install_targets(/bin cmw9xcom)
endif()
endif()
2005-03-04 19:38:34 +03:00
# Build CTest executable
add_executable(ctest ctest.cxx)
target_link_libraries(ctest CTestLib)
2002-05-02 23:10:19 +04:00
2006-01-02 07:31:17 +03:00
# Build CPack executable
add_executable(cpack CPack/cpack.cxx)
target_link_libraries(cpack CPackLib)
2006-01-02 07:31:17 +03:00
2005-03-04 19:38:34 +03:00
# Curses GUI
if(BUILD_CursesDialog)
include(${CMake_SOURCE_DIR}/Source/CursesDialog/CMakeLists.txt)
endif()
2002-05-02 23:10:19 +04:00
2007-11-02 19:03:29 +03:00
# 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_targets(/bin cmake)
install_targets(/bin ctest)
install_targets(/bin cpack)
if(APPLE)
install_targets(/bin cmakexbuild)
endif()
install_files(${CMAKE_DATA_DIR}/include cmCPluginAPI.h)