CMakeLists.txt 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757
  1. #=============================================================================
  2. # CMake - Cross Platform Makefile Generator
  3. # Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
  4. #
  5. # Distributed under the OSI-approved BSD License (the "License");
  6. # see accompanying file Copyright.txt for details.
  7. #
  8. # This software is distributed WITHOUT ANY WARRANTY; without even the
  9. # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10. # See the License for more information.
  11. #=============================================================================
  12. include(CheckIncludeFile)
  13. # Check if we can build support for ELF parsing.
  14. if(CMAKE_CXX_PLATFORM_ID MATCHES "OpenBSD")
  15. CHECK_INCLUDE_FILES("stdint.h;elf_abi.h" HAVE_ELF_H)
  16. else()
  17. CHECK_INCLUDE_FILE("elf.h" HAVE_ELF_H)
  18. endif()
  19. if(HAVE_ELF_H)
  20. set(CMAKE_USE_ELF_PARSER 1)
  21. elseif(HAIKU)
  22. # On Haiku, we need to include elf32.h from the private headers
  23. set(CMake_HAIKU_INCLUDE_DIRS
  24. /boot/system/develop/headers/private/system
  25. /boot/system/develop/headers/private/system/arch/x86
  26. )
  27. set(CMAKE_REQUIRED_INCLUDES ${CMake_HAIKU_INCLUDE_DIRS})
  28. CHECK_INCLUDE_FILE("elf32.h" HAVE_ELF32_H)
  29. unset(CMAKE_REQUIRED_INCLUDES)
  30. if(HAVE_ELF32_H)
  31. set(CMAKE_USE_ELF_PARSER 1)
  32. else()
  33. unset(CMake_HAIKU_INCLUDE_DIRS)
  34. set(CMAKE_USE_ELF_PARSER)
  35. endif()
  36. else()
  37. set(CMAKE_USE_ELF_PARSER)
  38. endif()
  39. if(APPLE)
  40. set(CMAKE_USE_MACH_PARSER 1)
  41. endif()
  42. set(EXECUTABLE_OUTPUT_PATH ${CMake_BIN_DIR})
  43. # ensure Unicode friendly APIs are used on Windows
  44. if(WIN32)
  45. add_definitions(-DUNICODE -D_UNICODE)
  46. endif()
  47. # configure the .h file
  48. configure_file(
  49. "${CMake_SOURCE_DIR}/Source/cmConfigure.cmake.h.in"
  50. "${CMake_BINARY_DIR}/Source/cmConfigure.h"
  51. )
  52. configure_file(
  53. "${CMake_SOURCE_DIR}/Source/cmVersionConfig.h.in"
  54. "${CMake_BINARY_DIR}/Source/cmVersionConfig.h"
  55. )
  56. configure_file(
  57. "${CMake_SOURCE_DIR}/Source/CPack/cmCPackConfigure.h.in"
  58. "${CMake_BINARY_DIR}/Source/CPack/cmCPackConfigure.h"
  59. )
  60. # Tell CMake executable in the build tree where to find the source tree.
  61. configure_file(
  62. "${CMake_SOURCE_DIR}/Source/CMakeSourceDir.txt.in"
  63. "${CMake_BINARY_DIR}/CMakeFiles/CMakeSourceDir.txt" @ONLY
  64. )
  65. # add the include path to find the .h
  66. include_directories(
  67. "${CMake_BINARY_DIR}/Source"
  68. "${CMake_SOURCE_DIR}/Source"
  69. ${CMAKE_ZLIB_INCLUDES}
  70. ${CMAKE_EXPAT_INCLUDES}
  71. ${CMAKE_TAR_INCLUDES}
  72. ${CMAKE_COMPRESS_INCLUDES}
  73. ${CMake_HAIKU_INCLUDE_DIRS}
  74. )
  75. # let cmake know it is supposed to use it
  76. add_definitions(-DCMAKE_BUILD_WITH_CMAKE)
  77. option(CMAKE_REGENERATE_YACCLEX
  78. "Regenerate YACC and LEXX files" OFF)
  79. mark_as_advanced(CMAKE_REGENERATE_YACCLEX)
  80. if(CMAKE_REGENERATE_YACCLEX)
  81. set(parsersLexers cmDependsFortran cmCommandArgument cmExpr)
  82. find_program(YACC_EXECUTABLE
  83. NAMES yacc bison
  84. PATHS /usr/bin
  85. DOC "Yacc or Bison executable")
  86. find_program(FLEX_EXECUTABLE
  87. NAMES flex
  88. PATHS /usr/bin
  89. DOC "Flex executable")
  90. mark_as_advanced(YACC_EXECUTABLE FLEX_EXECUTABLE)
  91. if(YACC_EXECUTABLE)
  92. set(BISON_FLAGS)
  93. if(YACC_EXECUTABLE MATCHES "bison")
  94. set(BISON_FLAGS "--yacc")
  95. endif()
  96. set(yacc_files)
  97. foreach(name ${parsersLexers})
  98. set(src "${CMAKE_CURRENT_SOURCE_DIR}/${name}Parser.y")
  99. set(dst "${CMAKE_CURRENT_BINARY_DIR}/${name}Parser.cxx")
  100. set(hdr "${CMAKE_CURRENT_BINARY_DIR}/${name}ParserTokens.h")
  101. add_custom_command(
  102. OUTPUT "${dst}"
  103. DEPENDS "${src}"
  104. COMMAND
  105. ${YACC_EXECUTABLE}
  106. --name-prefix=${name}_yy --defines=${hdr} -o${dst} ${src}
  107. )
  108. set(yacc_files ${yacc_files} "${dst}")
  109. endforeach()
  110. add_custom_target(RerunYacc DEPENDS ${yacc_files})
  111. endif()
  112. if(FLEX_EXECUTABLE)
  113. set(lex_files)
  114. foreach(name ${parsersLexers})
  115. set(src "${CMAKE_CURRENT_SOURCE_DIR}/${name}Lexer.in.l")
  116. set(dst "${CMAKE_CURRENT_BINARY_DIR}/${name}Lexer.cxx")
  117. set(hdr "${CMAKE_CURRENT_BINARY_DIR}/${name}Lexer.h")
  118. add_custom_command(
  119. OUTPUT "${dst}"
  120. DEPENDS "${src}"
  121. COMMAND
  122. ${FLEX_EXECUTABLE}
  123. --prefix=${name}_yy --header-file=${hdr} -o${dst} ${src}
  124. )
  125. set(lex_files ${lex_files} "${dst}")
  126. endforeach()
  127. add_custom_target(RerunLex DEPENDS ${lex_files})
  128. endif()
  129. endif()
  130. # Check if we can build the ELF parser.
  131. if(CMAKE_USE_ELF_PARSER)
  132. set(ELF_SRCS cmELF.h cmELF.cxx)
  133. endif()
  134. # Check if we can build the Mach-O parser.
  135. if(CMAKE_USE_MACH_PARSER)
  136. set(MACH_SRCS cmMachO.h cmMachO.cxx)
  137. endif()
  138. #
  139. # Sources for CMakeLib
  140. #
  141. set(SRCS
  142. cmArchiveWrite.cxx
  143. cmBootstrapCommands1.cxx
  144. cmBootstrapCommands2.cxx
  145. cmCacheManager.cxx
  146. cmCacheManager.h
  147. "${CMAKE_CURRENT_BINARY_DIR}/cmCommands.cxx"
  148. cmCLocaleEnvironmentScope.h
  149. cmCLocaleEnvironmentScope.cxx
  150. cmCommands.h
  151. cmCommandArgumentLexer.cxx
  152. cmCommandArgumentParser.cxx
  153. cmCommandArgumentParserHelper.cxx
  154. cmCommonTargetGenerator.cxx
  155. cmCommonTargetGenerator.h
  156. cmComputeComponentGraph.cxx
  157. cmComputeComponentGraph.h
  158. cmComputeLinkDepends.cxx
  159. cmComputeLinkDepends.h
  160. cmComputeLinkInformation.cxx
  161. cmComputeLinkInformation.h
  162. cmComputeTargetDepends.h
  163. cmComputeTargetDepends.cxx
  164. cmCPackPropertiesGenerator.h
  165. cmCPackPropertiesGenerator.cxx
  166. cmCryptoHash.cxx
  167. cmCryptoHash.h
  168. cmCurl.cxx
  169. cmCurl.h
  170. cmCustomCommand.cxx
  171. cmCustomCommand.h
  172. cmCustomCommandGenerator.cxx
  173. cmCustomCommandGenerator.h
  174. cmDefinitions.cxx
  175. cmDefinitions.h
  176. cmDepends.cxx
  177. cmDepends.h
  178. cmDependsC.cxx
  179. cmDependsC.h
  180. cmDependsFortran.cxx
  181. cmDependsFortran.h
  182. cmDependsFortranLexer.cxx
  183. cmDependsFortranParser.cxx
  184. cmDependsFortranParser.h
  185. cmDependsJava.cxx
  186. cmDependsJava.h
  187. cmDependsJavaLexer.cxx
  188. cmDependsJavaParser.cxx
  189. cmDependsJavaParserHelper.cxx
  190. cmDependsJavaParserHelper.h
  191. cmDocumentation.cxx
  192. cmDocumentationFormatter.cxx
  193. cmDocumentationSection.cxx
  194. cmDynamicLoader.cxx
  195. cmDynamicLoader.h
  196. ${ELF_SRCS}
  197. cmExprLexer.cxx
  198. cmExprParser.cxx
  199. cmExprParserHelper.cxx
  200. cmExportBuildFileGenerator.h
  201. cmExportBuildFileGenerator.cxx
  202. cmExportFileGenerator.h
  203. cmExportFileGenerator.cxx
  204. cmExportInstallFileGenerator.h
  205. cmExportInstallFileGenerator.cxx
  206. cmExportTryCompileFileGenerator.h
  207. cmExportTryCompileFileGenerator.cxx
  208. cmExportSet.h
  209. cmExportSet.cxx
  210. cmExportSetMap.h
  211. cmExportSetMap.cxx
  212. cmExternalMakefileProjectGenerator.cxx
  213. cmExternalMakefileProjectGenerator.h
  214. cmExtraCodeBlocksGenerator.cxx
  215. cmExtraCodeBlocksGenerator.h
  216. cmExtraCodeLiteGenerator.cxx
  217. cmExtraCodeLiteGenerator.h
  218. cmExtraEclipseCDT4Generator.cxx
  219. cmExtraEclipseCDT4Generator.h
  220. cmExtraKateGenerator.cxx
  221. cmExtraKateGenerator.h
  222. cmExtraSublimeTextGenerator.cxx
  223. cmExtraSublimeTextGenerator.h
  224. cmFileLock.cxx
  225. cmFileLock.h
  226. cmFileLockPool.cxx
  227. cmFileLockPool.h
  228. cmFileLockResult.cxx
  229. cmFileLockResult.h
  230. cmFileTimeComparison.cxx
  231. cmFileTimeComparison.h
  232. cmGeneratedFileStream.cxx
  233. cmGeneratorExpressionContext.cxx
  234. cmGeneratorExpressionContext.h
  235. cmGeneratorExpressionDAGChecker.cxx
  236. cmGeneratorExpressionDAGChecker.h
  237. cmGeneratorExpressionEvaluationFile.cxx
  238. cmGeneratorExpressionEvaluationFile.h
  239. cmGeneratorExpressionEvaluator.cxx
  240. cmGeneratorExpressionEvaluator.h
  241. cmGeneratorExpressionLexer.cxx
  242. cmGeneratorExpressionLexer.h
  243. cmGeneratorExpressionNode.cxx
  244. cmGeneratorExpressionNode.h
  245. cmGeneratorExpressionParser.cxx
  246. cmGeneratorExpressionParser.h
  247. cmGeneratorExpression.cxx
  248. cmGeneratorExpression.h
  249. cmGeneratorTarget.cxx
  250. cmGeneratorTarget.h
  251. cmGlobalCommonGenerator.cxx
  252. cmGlobalCommonGenerator.h
  253. cmGlobalGenerator.cxx
  254. cmGlobalGenerator.h
  255. cmGlobalGeneratorFactory.h
  256. cmGlobalUnixMakefileGenerator3.cxx
  257. cmGlobalUnixMakefileGenerator3.h
  258. cmGraphAdjacencyList.h
  259. cmGraphVizWriter.cxx
  260. cmGraphVizWriter.h
  261. cmInstallGenerator.h
  262. cmInstallGenerator.cxx
  263. cmInstallExportGenerator.cxx
  264. cmInstalledFile.h
  265. cmInstalledFile.cxx
  266. cmInstallFilesGenerator.h
  267. cmInstallFilesGenerator.cxx
  268. cmInstallScriptGenerator.h
  269. cmInstallScriptGenerator.cxx
  270. cmInstallTargetGenerator.h
  271. cmInstallTargetGenerator.cxx
  272. cmInstallDirectoryGenerator.h
  273. cmInstallDirectoryGenerator.cxx
  274. cmLinkedTree.h
  275. cmListFileCache.cxx
  276. cmListFileCache.h
  277. cmListFileLexer.c
  278. cmLocalCommonGenerator.cxx
  279. cmLocalCommonGenerator.h
  280. cmLocalGenerator.cxx
  281. cmLocalGenerator.h
  282. cmLocalUnixMakefileGenerator3.cxx
  283. cmLocale.h
  284. ${MACH_SRCS}
  285. cmMakeDepend.cxx
  286. cmMakeDepend.h
  287. cmMakefile.cxx
  288. cmMakefile.h
  289. cmMakefileTargetGenerator.cxx
  290. cmMakefileExecutableTargetGenerator.cxx
  291. cmMakefileLibraryTargetGenerator.cxx
  292. cmMakefileUtilityTargetGenerator.cxx
  293. cmOSXBundleGenerator.cxx
  294. cmOSXBundleGenerator.h
  295. cmOutputConverter.cxx
  296. cmOutputConverter.h
  297. cmNewLineStyle.h
  298. cmNewLineStyle.cxx
  299. cmOrderDirectories.cxx
  300. cmOrderDirectories.h
  301. cmPolicies.h
  302. cmPolicies.cxx
  303. cmProcessTools.cxx
  304. cmProcessTools.h
  305. cmProperty.cxx
  306. cmProperty.h
  307. cmPropertyDefinition.cxx
  308. cmPropertyDefinition.h
  309. cmPropertyDefinitionMap.cxx
  310. cmPropertyDefinitionMap.h
  311. cmPropertyMap.cxx
  312. cmPropertyMap.h
  313. cmQtAutoGenerators.cxx
  314. cmQtAutoGenerators.h
  315. cmRST.cxx
  316. cmRST.h
  317. cmScriptGenerator.h
  318. cmScriptGenerator.cxx
  319. cmSourceFile.cxx
  320. cmSourceFile.h
  321. cmSourceFileLocation.cxx
  322. cmSourceFileLocation.h
  323. cmSourceGroup.cxx
  324. cmSourceGroup.h
  325. cmState.cxx
  326. cmState.h
  327. cmSystemTools.cxx
  328. cmSystemTools.h
  329. cmTarget.cxx
  330. cmTarget.h
  331. cmTargetExport.h
  332. cmTest.cxx
  333. cmTest.h
  334. cmTestGenerator.cxx
  335. cmTestGenerator.h
  336. cmUuid.cxx
  337. cmVariableWatch.cxx
  338. cmVariableWatch.h
  339. cmVersion.cxx
  340. cmVersion.h
  341. cmXMLParser.cxx
  342. cmXMLParser.h
  343. cmXMLSafe.cxx
  344. cmXMLSafe.h
  345. cmXMLWriter.cxx
  346. cmXMLWriter.h
  347. cmake.cxx
  348. cmake.h
  349. cm_get_date.h
  350. cm_get_date.c
  351. cm_sha2.h
  352. cm_sha2.c
  353. cm_utf8.h
  354. cm_utf8.c
  355. )
  356. set(COMMAND_INCLUDES "#include \"cmTargetPropCommandBase.cxx\"\n")
  357. list(APPEND SRCS cmTargetPropCommandBase.cxx)
  358. set_property(SOURCE cmTargetPropCommandBase.cxx PROPERTY HEADER_FILE_ONLY ON)
  359. set(NEW_COMMANDS "")
  360. foreach(command_file
  361. cmAddCompileOptionsCommand
  362. cmAuxSourceDirectoryCommand
  363. cmBuildNameCommand
  364. cmCMakeHostSystemInformationCommand
  365. cmElseIfCommand
  366. cmExportCommand
  367. cmExportLibraryDependenciesCommand
  368. cmFLTKWrapUICommand
  369. cmIncludeExternalMSProjectCommand
  370. cmInstallProgramsCommand
  371. cmLinkLibrariesCommand
  372. cmLoadCacheCommand
  373. cmOutputRequiredFilesCommand
  374. cmQTWrapCPPCommand
  375. cmQTWrapUICommand
  376. cmRemoveCommand
  377. cmRemoveDefinitionsCommand
  378. cmSourceGroupCommand
  379. cmSubdirDependsCommand
  380. cmTargetCompileDefinitionsCommand
  381. cmTargetCompileFeaturesCommand
  382. cmTargetCompileOptionsCommand
  383. cmTargetIncludeDirectoriesCommand
  384. cmTargetSourcesCommand
  385. cmUseMangledMesaCommand
  386. cmUtilitySourceCommand
  387. cmVariableRequiresCommand
  388. cmVariableWatchCommand
  389. cmWriteFileCommand
  390. # This one must be last because it includes windows.h and
  391. # windows.h #defines GetCurrentDirectory which is a member
  392. # of cmMakefile
  393. cmLoadCommandCommand
  394. )
  395. set(COMMAND_INCLUDES "${COMMAND_INCLUDES}#include \"${command_file}.cxx\"\n")
  396. set(NEW_COMMANDS "${NEW_COMMANDS}commands.push_back(new ${command_file});\n")
  397. list(APPEND SRCS ${command_file}.cxx)
  398. set_property(SOURCE ${command_file}.cxx PROPERTY HEADER_FILE_ONLY ON)
  399. endforeach()
  400. configure_file(cmCommands.cxx.in ${CMAKE_CURRENT_BINARY_DIR}/cmCommands.cxx @ONLY)
  401. # Kdevelop only works on UNIX and not windows
  402. if(UNIX)
  403. set(SRCS ${SRCS} cmGlobalKdevelopGenerator.cxx)
  404. endif()
  405. # Xcode only works on Apple
  406. if(APPLE)
  407. set(SRCS ${SRCS}
  408. cmXCodeObject.cxx
  409. cmXCode21Object.cxx
  410. cmGlobalXCodeGenerator.cxx
  411. cmGlobalXCodeGenerator.h
  412. cmLocalXCodeGenerator.cxx
  413. cmLocalXCodeGenerator.h)
  414. endif()
  415. if (WIN32)
  416. set(SRCS ${SRCS}
  417. cmCallVisualStudioMacro.cxx
  418. cmCallVisualStudioMacro.h
  419. bindexplib.cxx
  420. )
  421. if(NOT UNIX)
  422. set(SRCS ${SRCS}
  423. cmGlobalBorlandMakefileGenerator.cxx
  424. cmGlobalBorlandMakefileGenerator.h
  425. cmGlobalMSYSMakefileGenerator.cxx
  426. cmGlobalMinGWMakefileGenerator.cxx
  427. cmGlobalNMakeMakefileGenerator.cxx
  428. cmGlobalNMakeMakefileGenerator.h
  429. cmGlobalJOMMakefileGenerator.cxx
  430. cmGlobalJOMMakefileGenerator.h
  431. cmGlobalVisualStudio6Generator.cxx
  432. cmGlobalVisualStudio6Generator.h
  433. cmGlobalVisualStudio71Generator.cxx
  434. cmGlobalVisualStudio71Generator.h
  435. cmGlobalVisualStudio7Generator.cxx
  436. cmGlobalVisualStudio7Generator.h
  437. cmGlobalVisualStudio8Generator.cxx
  438. cmGlobalVisualStudio8Generator.h
  439. cmGlobalVisualStudio9Generator.cxx
  440. cmGlobalVisualStudio9Generator.h
  441. cmVisualStudioGeneratorOptions.h
  442. cmVisualStudioGeneratorOptions.cxx
  443. cmVisualStudio10TargetGenerator.h
  444. cmVisualStudio10TargetGenerator.cxx
  445. cmLocalVisualStudio10Generator.cxx
  446. cmLocalVisualStudio10Generator.h
  447. cmGlobalVisualStudio10Generator.h
  448. cmGlobalVisualStudio10Generator.cxx
  449. cmGlobalVisualStudio11Generator.h
  450. cmGlobalVisualStudio11Generator.cxx
  451. cmGlobalVisualStudio12Generator.h
  452. cmGlobalVisualStudio12Generator.cxx
  453. cmGlobalVisualStudio14Generator.h
  454. cmGlobalVisualStudio14Generator.cxx
  455. cmGlobalVisualStudioGenerator.cxx
  456. cmGlobalVisualStudioGenerator.h
  457. cmIDEFlagTable.h
  458. cmIDEOptions.cxx
  459. cmIDEOptions.h
  460. cmLocalVisualStudio6Generator.cxx
  461. cmLocalVisualStudio6Generator.h
  462. cmLocalVisualStudio7Generator.cxx
  463. cmLocalVisualStudio7Generator.h
  464. cmLocalVisualStudioGenerator.cxx
  465. cmLocalVisualStudioGenerator.h
  466. cmVisualStudioSlnData.h
  467. cmVisualStudioSlnData.cxx
  468. cmVisualStudioSlnParser.h
  469. cmVisualStudioSlnParser.cxx
  470. cmVisualStudioWCEPlatformParser.h
  471. cmVisualStudioWCEPlatformParser.cxx
  472. cmGlobalGhsMultiGenerator.cxx
  473. cmGlobalGhsMultiGenerator.h
  474. cmLocalGhsMultiGenerator.cxx
  475. cmLocalGhsMultiGenerator.h
  476. cmGhsMultiTargetGenerator.cxx
  477. cmGhsMultiTargetGenerator.h
  478. cmGhsMultiGpj.cxx
  479. cmGhsMultiGpj.h
  480. )
  481. endif()
  482. endif ()
  483. # Watcom support
  484. if(WIN32 OR CMAKE_SYSTEM_NAME STREQUAL "Linux")
  485. set_property(SOURCE cmake.cxx APPEND PROPERTY COMPILE_DEFINITIONS CMAKE_USE_WMAKE)
  486. list(APPEND SRCS
  487. cmGlobalWatcomWMakeGenerator.cxx
  488. cmGlobalWatcomWMakeGenerator.h
  489. )
  490. endif()
  491. # Ninja support
  492. set(SRCS ${SRCS}
  493. cmGlobalNinjaGenerator.cxx
  494. cmGlobalNinjaGenerator.h
  495. cmNinjaTypes.h
  496. cmLocalNinjaGenerator.cxx
  497. cmLocalNinjaGenerator.h
  498. cmNinjaTargetGenerator.cxx
  499. cmNinjaTargetGenerator.h
  500. cmNinjaNormalTargetGenerator.cxx
  501. cmNinjaNormalTargetGenerator.h
  502. cmNinjaUtilityTargetGenerator.cxx
  503. cmNinjaUtilityTargetGenerator.h
  504. )
  505. if(WIN32 AND NOT CYGWIN)
  506. set_source_files_properties(cmcldeps.cxx PROPERTIES COMPILE_DEFINITIONS _WIN32_WINNT=0x0501)
  507. add_executable(cmcldeps cmcldeps.cxx)
  508. target_link_libraries(cmcldeps CMakeLib)
  509. install(TARGETS cmcldeps DESTINATION bin)
  510. endif()
  511. foreach(v CURL_CA_BUNDLE CURL_CA_PATH)
  512. if(${v})
  513. set_property(SOURCE cmCurl.cxx APPEND PROPERTY COMPILE_DEFINITIONS ${v}="${${v}}")
  514. endif()
  515. endforeach()
  516. # create a library used by the command line and the GUI
  517. add_library(CMakeLib ${SRCS})
  518. target_link_libraries(CMakeLib cmsys
  519. ${CMAKE_EXPAT_LIBRARIES} ${CMAKE_ZLIB_LIBRARIES}
  520. ${CMAKE_TAR_LIBRARIES} ${CMAKE_COMPRESS_LIBRARIES}
  521. ${CMAKE_CURL_LIBRARIES}
  522. ${CMAKE_JSONCPP_LIBRARIES}
  523. )
  524. # On Apple we need CoreFoundation
  525. if(APPLE)
  526. target_link_libraries(CMakeLib "-framework CoreFoundation")
  527. endif()
  528. if(CMAKE_BUILD_ON_VISUAL_STUDIO OR MINGW)
  529. # We need the rpcrt4 library for at least the VS7-VC10 generators.
  530. target_link_libraries(CMakeLib rpcrt4)
  531. endif()
  532. #
  533. # CTestLib
  534. #
  535. include_directories(
  536. "${CMake_SOURCE_DIR}/Source/CTest"
  537. ${CMAKE_XMLRPC_INCLUDES}
  538. ${CMAKE_CURL_INCLUDES}
  539. )
  540. #
  541. # Sources for CTestLib
  542. #
  543. set(CTEST_SRCS cmCTest.cxx
  544. CTest/cmProcess.cxx
  545. CTest/cmCTestBatchTestHandler.cxx
  546. CTest/cmCTestBuildAndTestHandler.cxx
  547. CTest/cmCTestBuildCommand.cxx
  548. CTest/cmCTestBuildHandler.cxx
  549. CTest/cmCTestConfigureCommand.cxx
  550. CTest/cmCTestConfigureHandler.cxx
  551. CTest/cmCTestCoverageCommand.cxx
  552. CTest/cmCTestCoverageHandler.cxx
  553. CTest/cmCTestCurl.cxx
  554. CTest/cmParseMumpsCoverage.cxx
  555. CTest/cmParseCacheCoverage.cxx
  556. CTest/cmParseGTMCoverage.cxx
  557. CTest/cmParseJacocoCoverage.cxx
  558. CTest/cmParseBlanketJSCoverage.cxx
  559. CTest/cmParsePHPCoverage.cxx
  560. CTest/cmParseCoberturaCoverage.cxx
  561. CTest/cmParseDelphiCoverage.cxx
  562. CTest/cmCTestEmptyBinaryDirectoryCommand.cxx
  563. CTest/cmCTestGenericHandler.cxx
  564. CTest/cmCTestHandlerCommand.cxx
  565. CTest/cmCTestLaunch.cxx
  566. CTest/cmCTestMemCheckCommand.cxx
  567. CTest/cmCTestMemCheckHandler.cxx
  568. CTest/cmCTestMultiProcessHandler.cxx
  569. CTest/cmCTestReadCustomFilesCommand.cxx
  570. CTest/cmCTestRunScriptCommand.cxx
  571. CTest/cmCTestRunTest.cxx
  572. CTest/cmCTestScriptHandler.cxx
  573. CTest/cmCTestSleepCommand.cxx
  574. CTest/cmCTestStartCommand.cxx
  575. CTest/cmCTestSubmitCommand.cxx
  576. CTest/cmCTestSubmitHandler.cxx
  577. CTest/cmCTestTestCommand.cxx
  578. CTest/cmCTestTestHandler.cxx
  579. CTest/cmCTestUpdateCommand.cxx
  580. CTest/cmCTestUpdateHandler.cxx
  581. CTest/cmCTestUploadCommand.cxx
  582. CTest/cmCTestUploadHandler.cxx
  583. CTest/cmCTestVC.cxx
  584. CTest/cmCTestVC.h
  585. CTest/cmCTestGlobalVC.cxx
  586. CTest/cmCTestGlobalVC.h
  587. CTest/cmCTestCVS.cxx
  588. CTest/cmCTestCVS.h
  589. CTest/cmCTestSVN.cxx
  590. CTest/cmCTestSVN.h
  591. CTest/cmCTestBZR.cxx
  592. CTest/cmCTestBZR.h
  593. CTest/cmCTestGIT.cxx
  594. CTest/cmCTestGIT.h
  595. CTest/cmCTestHG.cxx
  596. CTest/cmCTestHG.h
  597. CTest/cmCTestP4.cxx
  598. CTest/cmCTestP4.h
  599. )
  600. # Build CTestLib
  601. add_library(CTestLib ${CTEST_SRCS})
  602. target_link_libraries(CTestLib CMakeLib ${CMAKE_CURL_LIBRARIES} ${CMAKE_XMLRPC_LIBRARIES})
  603. #
  604. # Sources for CPack
  605. #
  606. set(CPACK_SRCS
  607. CPack/cmCPackArchiveGenerator.cxx
  608. CPack/cmCPackComponentGroup.cxx
  609. CPack/cmCPackGeneratorFactory.cxx
  610. CPack/cmCPackGenerator.cxx
  611. CPack/cmCPackLog.cxx
  612. CPack/cmCPackNSISGenerator.cxx
  613. CPack/IFW/cmCPackIFWPackage.cxx
  614. CPack/IFW/cmCPackIFWInstaller.cxx
  615. CPack/IFW/cmCPackIFWGenerator.cxx
  616. CPack/cmCPackSTGZGenerator.cxx
  617. CPack/cmCPackTGZGenerator.cxx
  618. CPack/cmCPackTXZGenerator.cxx
  619. CPack/cmCPackTarBZip2Generator.cxx
  620. CPack/cmCPackTarCompressGenerator.cxx
  621. CPack/cmCPackZIPGenerator.cxx
  622. CPack/cmCPack7zGenerator.cxx
  623. )
  624. if(CYGWIN)
  625. set(CPACK_SRCS ${CPACK_SRCS}
  626. CPack/cmCPackCygwinBinaryGenerator.cxx
  627. CPack/cmCPackCygwinSourceGenerator.cxx
  628. )
  629. endif()
  630. if(UNIX)
  631. set(CPACK_SRCS ${CPACK_SRCS}
  632. CPack/cmCPackDebGenerator.cxx
  633. CPack/cmCPackRPMGenerator.cxx
  634. )
  635. endif()
  636. if(WIN32)
  637. set(CPACK_SRCS ${CPACK_SRCS}
  638. CPack/WiX/cmCPackWIXGenerator.cxx
  639. CPack/WiX/cmCPackWIXGenerator.h
  640. CPack/WiX/cmWIXAccessControlList.cxx
  641. CPack/WiX/cmWIXAccessControlList.h
  642. CPack/WiX/cmWIXDirectoriesSourceWriter.cxx
  643. CPack/WiX/cmWIXDirectoriesSourceWriter.h
  644. CPack/WiX/cmWIXFeaturesSourceWriter.cxx
  645. CPack/WiX/cmWIXFeaturesSourceWriter.h
  646. CPack/WiX/cmWIXFilesSourceWriter.cxx
  647. CPack/WiX/cmWIXFilesSourceWriter.h
  648. CPack/WiX/cmWIXPatch.cxx
  649. CPack/WiX/cmWIXPatch.h
  650. CPack/WiX/cmWIXPatchParser.cxx
  651. CPack/WiX/cmWIXPatchParser.h
  652. CPack/WiX/cmWIXRichTextFormatWriter.cxx
  653. CPack/WiX/cmWIXRichTextFormatWriter.h
  654. CPack/WiX/cmWIXShortcut.cxx
  655. CPack/WiX/cmWIXShortcut.h
  656. CPack/WiX/cmWIXSourceWriter.cxx
  657. CPack/WiX/cmWIXSourceWriter.h
  658. )
  659. endif()
  660. if(APPLE)
  661. set(CPACK_SRCS ${CPACK_SRCS}
  662. CPack/cmCPackBundleGenerator.cxx
  663. CPack/cmCPackDragNDropGenerator.cxx
  664. CPack/cmCPackOSXX11Generator.cxx
  665. CPack/cmCPackPackageMakerGenerator.cxx
  666. )
  667. endif()
  668. # Build CPackLib
  669. add_library(CPackLib ${CPACK_SRCS})
  670. target_link_libraries(CPackLib CMakeLib)
  671. if(APPLE)
  672. add_executable(cmakexbuild cmakexbuild.cxx)
  673. target_link_libraries(cmakexbuild CMakeLib)
  674. add_executable(OSXScriptLauncher
  675. CPack/OSXScriptLauncher.cxx)
  676. target_link_libraries(OSXScriptLauncher cmsys)
  677. target_link_libraries(OSXScriptLauncher "-framework CoreFoundation")
  678. endif()
  679. # Build CMake executable
  680. add_executable(cmake cmakemain.cxx cmcmd.cxx cmcmd.h)
  681. target_link_libraries(cmake CMakeLib)
  682. # Build CTest executable
  683. add_executable(ctest ctest.cxx)
  684. target_link_libraries(ctest CTestLib)
  685. # Build CPack executable
  686. add_executable(cpack CPack/cpack.cxx)
  687. target_link_libraries(cpack CPackLib)
  688. # Curses GUI
  689. if(BUILD_CursesDialog)
  690. include(${CMake_SOURCE_DIR}/Source/CursesDialog/CMakeLists.txt)
  691. endif()
  692. # Qt GUI
  693. option(BUILD_QtDialog "Build Qt dialog for CMake" FALSE)
  694. if(BUILD_QtDialog)
  695. add_subdirectory(QtDialog)
  696. endif()
  697. include (${CMake_BINARY_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
  698. include (${CMake_SOURCE_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
  699. # Install tools
  700. set(_tools cmake ctest cpack)
  701. if(APPLE)
  702. list(APPEND _tools cmakexbuild)
  703. endif()
  704. foreach(_tool ${_tools})
  705. CMake_OPTIONAL_COMPONENT(${_tool})
  706. install(TARGETS ${_tool} DESTINATION bin ${COMPONENT})
  707. endforeach()
  708. install(FILES cmCPluginAPI.h DESTINATION ${CMAKE_DATA_DIR}/include)