CMakeLists.txt 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718
  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. cmCommands.h
  149. cmCommandArgumentLexer.cxx
  150. cmCommandArgumentParser.cxx
  151. cmCommandArgumentParserHelper.cxx
  152. cmComputeComponentGraph.cxx
  153. cmComputeComponentGraph.h
  154. cmComputeLinkDepends.cxx
  155. cmComputeLinkDepends.h
  156. cmComputeLinkInformation.cxx
  157. cmComputeLinkInformation.h
  158. cmComputeTargetDepends.h
  159. cmComputeTargetDepends.cxx
  160. cmCPackPropertiesGenerator.h
  161. cmCPackPropertiesGenerator.cxx
  162. cmCryptoHash.cxx
  163. cmCryptoHash.h
  164. cmCurl.cxx
  165. cmCurl.h
  166. cmCustomCommand.cxx
  167. cmCustomCommand.h
  168. cmCustomCommandGenerator.cxx
  169. cmCustomCommandGenerator.h
  170. cmDefinitions.cxx
  171. cmDefinitions.h
  172. cmDepends.cxx
  173. cmDepends.h
  174. cmDependsC.cxx
  175. cmDependsC.h
  176. cmDependsFortran.cxx
  177. cmDependsFortran.h
  178. cmDependsFortranLexer.cxx
  179. cmDependsFortranParser.cxx
  180. cmDependsFortranParser.h
  181. cmDependsJava.cxx
  182. cmDependsJava.h
  183. cmDependsJavaLexer.cxx
  184. cmDependsJavaParser.cxx
  185. cmDependsJavaParserHelper.cxx
  186. cmDependsJavaParserHelper.h
  187. cmDocumentation.cxx
  188. cmDocumentationFormatter.cxx
  189. cmDocumentationSection.cxx
  190. cmDynamicLoader.cxx
  191. cmDynamicLoader.h
  192. ${ELF_SRCS}
  193. cmExprLexer.cxx
  194. cmExprParser.cxx
  195. cmExprParserHelper.cxx
  196. cmExportBuildFileGenerator.h
  197. cmExportBuildFileGenerator.cxx
  198. cmExportFileGenerator.h
  199. cmExportFileGenerator.cxx
  200. cmExportInstallFileGenerator.h
  201. cmExportInstallFileGenerator.cxx
  202. cmExportTryCompileFileGenerator.h
  203. cmExportTryCompileFileGenerator.cxx
  204. cmExportSet.h
  205. cmExportSet.cxx
  206. cmExportSetMap.h
  207. cmExportSetMap.cxx
  208. cmExtraCodeBlocksGenerator.cxx
  209. cmExtraCodeBlocksGenerator.h
  210. cmExtraCodeLiteGenerator.cxx
  211. cmExtraCodeLiteGenerator.h
  212. cmExtraEclipseCDT4Generator.cxx
  213. cmExtraEclipseCDT4Generator.h
  214. cmExtraKateGenerator.cxx
  215. cmExtraKateGenerator.h
  216. cmExtraSublimeTextGenerator.cxx
  217. cmExtraSublimeTextGenerator.h
  218. cmFileLock.cxx
  219. cmFileLock.h
  220. cmFileLockPool.cxx
  221. cmFileLockPool.h
  222. cmFileLockResult.cxx
  223. cmFileLockResult.h
  224. cmFileTimeComparison.cxx
  225. cmFileTimeComparison.h
  226. cmGeneratedFileStream.cxx
  227. cmGeneratorExpressionDAGChecker.cxx
  228. cmGeneratorExpressionDAGChecker.h
  229. cmGeneratorExpressionEvaluator.cxx
  230. cmGeneratorExpressionEvaluator.h
  231. cmGeneratorExpressionLexer.cxx
  232. cmGeneratorExpressionLexer.h
  233. cmGeneratorExpressionNode.cxx
  234. cmGeneratorExpressionNode.h
  235. cmGeneratorExpressionParser.cxx
  236. cmGeneratorExpressionParser.h
  237. cmGeneratorExpression.cxx
  238. cmGeneratorExpression.h
  239. cmGeneratorTarget.cxx
  240. cmGeneratorTarget.h
  241. cmGlobalGenerator.cxx
  242. cmGlobalGenerator.h
  243. cmGlobalGeneratorFactory.h
  244. cmGlobalUnixMakefileGenerator3.cxx
  245. cmGlobalUnixMakefileGenerator3.h
  246. cmGraphAdjacencyList.h
  247. cmGraphVizWriter.cxx
  248. cmGraphVizWriter.h
  249. cmInstallGenerator.h
  250. cmInstallGenerator.cxx
  251. cmInstallExportGenerator.cxx
  252. cmInstalledFile.h
  253. cmInstalledFile.cxx
  254. cmInstallFilesGenerator.h
  255. cmInstallFilesGenerator.cxx
  256. cmInstallScriptGenerator.h
  257. cmInstallScriptGenerator.cxx
  258. cmInstallTargetGenerator.h
  259. cmInstallTargetGenerator.cxx
  260. cmInstallDirectoryGenerator.h
  261. cmInstallDirectoryGenerator.cxx
  262. cmListFileCache.cxx
  263. cmListFileCache.h
  264. cmListFileLexer.c
  265. cmLocalGenerator.cxx
  266. cmLocalGenerator.h
  267. cmLocalUnixMakefileGenerator3.cxx
  268. cmLocale.h
  269. ${MACH_SRCS}
  270. cmMakeDepend.cxx
  271. cmMakeDepend.h
  272. cmMakefile.cxx
  273. cmMakefile.h
  274. cmMakefileTargetGenerator.cxx
  275. cmMakefileExecutableTargetGenerator.cxx
  276. cmMakefileLibraryTargetGenerator.cxx
  277. cmMakefileUtilityTargetGenerator.cxx
  278. cmOSXBundleGenerator.cxx
  279. cmOSXBundleGenerator.h
  280. cmNewLineStyle.h
  281. cmNewLineStyle.cxx
  282. cmOrderDirectories.cxx
  283. cmOrderDirectories.h
  284. cmPolicies.h
  285. cmPolicies.cxx
  286. cmProcessTools.cxx
  287. cmProcessTools.h
  288. cmProperty.cxx
  289. cmProperty.h
  290. cmPropertyDefinition.cxx
  291. cmPropertyDefinition.h
  292. cmPropertyDefinitionMap.cxx
  293. cmPropertyDefinitionMap.h
  294. cmPropertyMap.cxx
  295. cmPropertyMap.h
  296. cmQtAutoGenerators.cxx
  297. cmQtAutoGenerators.h
  298. cmRST.cxx
  299. cmRST.h
  300. cmScriptGenerator.h
  301. cmScriptGenerator.cxx
  302. cmSourceFile.cxx
  303. cmSourceFile.h
  304. cmSourceFileLocation.cxx
  305. cmSourceFileLocation.h
  306. cmSourceGroup.cxx
  307. cmSourceGroup.h
  308. cmSystemTools.cxx
  309. cmSystemTools.h
  310. cmTarget.cxx
  311. cmTarget.h
  312. cmTargetExport.h
  313. cmTest.cxx
  314. cmTest.h
  315. cmTestGenerator.cxx
  316. cmTestGenerator.h
  317. cmUuid.cxx
  318. cmVariableWatch.cxx
  319. cmVariableWatch.h
  320. cmVersion.cxx
  321. cmVersion.h
  322. cmXMLParser.cxx
  323. cmXMLParser.h
  324. cmXMLSafe.cxx
  325. cmXMLSafe.h
  326. cmake.cxx
  327. cmake.h
  328. cm_get_date.h
  329. cm_get_date.c
  330. cm_sha2.h
  331. cm_sha2.c
  332. cm_utf8.h
  333. cm_utf8.c
  334. )
  335. set(COMMAND_INCLUDES "#include \"cmTargetPropCommandBase.cxx\"\n")
  336. list(APPEND SRCS cmTargetPropCommandBase.cxx)
  337. set_property(SOURCE cmTargetPropCommandBase.cxx PROPERTY HEADER_FILE_ONLY ON)
  338. set(NEW_COMMANDS "")
  339. foreach(command_file
  340. cmAddCompileOptionsCommand
  341. cmAuxSourceDirectoryCommand
  342. cmBuildNameCommand
  343. cmCMakeHostSystemInformationCommand
  344. cmElseIfCommand
  345. cmExportCommand
  346. cmExportLibraryDependenciesCommand
  347. cmFLTKWrapUICommand
  348. cmIncludeExternalMSProjectCommand
  349. cmInstallProgramsCommand
  350. cmLinkLibrariesCommand
  351. cmLoadCacheCommand
  352. cmOutputRequiredFilesCommand
  353. cmQTWrapCPPCommand
  354. cmQTWrapUICommand
  355. cmRemoveCommand
  356. cmRemoveDefinitionsCommand
  357. cmSourceGroupCommand
  358. cmSubdirDependsCommand
  359. cmTargetCompileDefinitionsCommand
  360. cmTargetCompileFeaturesCommand
  361. cmTargetCompileOptionsCommand
  362. cmTargetIncludeDirectoriesCommand
  363. cmTargetSourcesCommand
  364. cmUseMangledMesaCommand
  365. cmUtilitySourceCommand
  366. cmVariableRequiresCommand
  367. cmVariableWatchCommand
  368. cmWriteFileCommand
  369. # This one must be last because it includes windows.h and
  370. # windows.h #defines GetCurrentDirectory which is a member
  371. # of cmMakefile
  372. cmLoadCommandCommand
  373. )
  374. set(COMMAND_INCLUDES "${COMMAND_INCLUDES}#include \"${command_file}.cxx\"\n")
  375. set(NEW_COMMANDS "${NEW_COMMANDS}commands.push_back(new ${command_file});\n")
  376. list(APPEND SRCS ${command_file}.cxx)
  377. set_property(SOURCE ${command_file}.cxx PROPERTY HEADER_FILE_ONLY ON)
  378. endforeach()
  379. configure_file(cmCommands.cxx.in ${CMAKE_CURRENT_BINARY_DIR}/cmCommands.cxx @ONLY)
  380. # Kdevelop only works on UNIX and not windows
  381. if(UNIX)
  382. set(SRCS ${SRCS} cmGlobalKdevelopGenerator.cxx)
  383. endif()
  384. # Xcode only works on Apple
  385. if(APPLE)
  386. set(SRCS ${SRCS}
  387. cmXCodeObject.cxx
  388. cmXCode21Object.cxx
  389. cmGlobalXCodeGenerator.cxx
  390. cmGlobalXCodeGenerator.h
  391. cmLocalXCodeGenerator.cxx
  392. cmLocalXCodeGenerator.h)
  393. endif()
  394. if (WIN32)
  395. set(SRCS ${SRCS}
  396. cmCallVisualStudioMacro.cxx
  397. cmCallVisualStudioMacro.h
  398. )
  399. if(NOT UNIX)
  400. set(SRCS ${SRCS}
  401. cmGlobalBorlandMakefileGenerator.cxx
  402. cmGlobalBorlandMakefileGenerator.h
  403. cmGlobalMSYSMakefileGenerator.cxx
  404. cmGlobalMinGWMakefileGenerator.cxx
  405. cmGlobalNMakeMakefileGenerator.cxx
  406. cmGlobalNMakeMakefileGenerator.h
  407. cmGlobalJOMMakefileGenerator.cxx
  408. cmGlobalJOMMakefileGenerator.h
  409. cmGlobalVisualStudio6Generator.cxx
  410. cmGlobalVisualStudio6Generator.h
  411. cmGlobalVisualStudio71Generator.cxx
  412. cmGlobalVisualStudio71Generator.h
  413. cmGlobalVisualStudio7Generator.cxx
  414. cmGlobalVisualStudio7Generator.h
  415. cmGlobalVisualStudio8Generator.cxx
  416. cmGlobalVisualStudio8Generator.h
  417. cmGlobalVisualStudio9Generator.cxx
  418. cmGlobalVisualStudio9Generator.h
  419. cmVisualStudioGeneratorOptions.h
  420. cmVisualStudioGeneratorOptions.cxx
  421. cmVisualStudio10TargetGenerator.h
  422. cmVisualStudio10TargetGenerator.cxx
  423. cmLocalVisualStudio10Generator.cxx
  424. cmLocalVisualStudio10Generator.h
  425. cmGlobalVisualStudio10Generator.h
  426. cmGlobalVisualStudio10Generator.cxx
  427. cmGlobalVisualStudio11Generator.h
  428. cmGlobalVisualStudio11Generator.cxx
  429. cmGlobalVisualStudio12Generator.h
  430. cmGlobalVisualStudio12Generator.cxx
  431. cmGlobalVisualStudio14Generator.h
  432. cmGlobalVisualStudio14Generator.cxx
  433. cmGlobalVisualStudioGenerator.cxx
  434. cmGlobalVisualStudioGenerator.h
  435. cmIDEFlagTable.h
  436. cmIDEOptions.cxx
  437. cmIDEOptions.h
  438. cmLocalVisualStudio6Generator.cxx
  439. cmLocalVisualStudio6Generator.h
  440. cmLocalVisualStudio7Generator.cxx
  441. cmLocalVisualStudio7Generator.h
  442. cmLocalVisualStudioGenerator.cxx
  443. cmLocalVisualStudioGenerator.h
  444. cmVisualStudioSlnData.h
  445. cmVisualStudioSlnData.cxx
  446. cmVisualStudioSlnParser.h
  447. cmVisualStudioSlnParser.cxx
  448. cmVisualStudioWCEPlatformParser.h
  449. cmVisualStudioWCEPlatformParser.cxx
  450. )
  451. endif()
  452. endif ()
  453. # Watcom support
  454. if(WIN32 OR CMAKE_SYSTEM_NAME STREQUAL "Linux")
  455. set_property(SOURCE cmake.cxx APPEND PROPERTY COMPILE_DEFINITIONS CMAKE_USE_WMAKE)
  456. list(APPEND SRCS
  457. cmGlobalWatcomWMakeGenerator.cxx
  458. cmGlobalWatcomWMakeGenerator.h
  459. )
  460. endif()
  461. # Ninja support
  462. set(SRCS ${SRCS}
  463. cmGlobalNinjaGenerator.cxx
  464. cmGlobalNinjaGenerator.h
  465. cmNinjaTypes.h
  466. cmLocalNinjaGenerator.cxx
  467. cmLocalNinjaGenerator.h
  468. cmNinjaTargetGenerator.cxx
  469. cmNinjaTargetGenerator.h
  470. cmNinjaNormalTargetGenerator.cxx
  471. cmNinjaNormalTargetGenerator.h
  472. cmNinjaUtilityTargetGenerator.cxx
  473. cmNinjaUtilityTargetGenerator.h
  474. )
  475. if(WIN32 AND NOT CYGWIN)
  476. set_source_files_properties(cmcldeps.cxx PROPERTIES COMPILE_DEFINITIONS _WIN32_WINNT=0x0501)
  477. add_executable(cmcldeps cmcldeps.cxx)
  478. target_link_libraries(cmcldeps CMakeLib)
  479. install(TARGETS cmcldeps DESTINATION bin)
  480. endif()
  481. foreach(v CURL_CA_BUNDLE CURL_CA_PATH)
  482. if(${v})
  483. set_property(SOURCE cmCurl.cxx APPEND PROPERTY COMPILE_DEFINITIONS ${v}="${${v}}")
  484. endif()
  485. endforeach()
  486. # create a library used by the command line and the GUI
  487. add_library(CMakeLib ${SRCS})
  488. target_link_libraries(CMakeLib cmsys
  489. ${CMAKE_EXPAT_LIBRARIES} ${CMAKE_ZLIB_LIBRARIES}
  490. ${CMAKE_TAR_LIBRARIES} ${CMAKE_COMPRESS_LIBRARIES}
  491. ${CMAKE_CURL_LIBRARIES}
  492. ${CMAKE_JSONCPP_LIBRARIES}
  493. )
  494. # On Apple we need CoreFoundation
  495. if(APPLE)
  496. target_link_libraries(CMakeLib "-framework CoreFoundation")
  497. endif()
  498. if(CMAKE_BUILD_ON_VISUAL_STUDIO OR MINGW)
  499. # We need the rpcrt4 library for at least the VS7-VC10 generators.
  500. target_link_libraries(CMakeLib rpcrt4)
  501. endif()
  502. #
  503. # CTestLib
  504. #
  505. include_directories(
  506. "${CMake_SOURCE_DIR}/Source/CTest"
  507. ${CMAKE_XMLRPC_INCLUDES}
  508. ${CMAKE_CURL_INCLUDES}
  509. )
  510. #
  511. # Sources for CTestLib
  512. #
  513. set(CTEST_SRCS cmCTest.cxx
  514. CTest/cmProcess.cxx
  515. CTest/cmCTestBatchTestHandler.cxx
  516. CTest/cmCTestBuildAndTestHandler.cxx
  517. CTest/cmCTestBuildCommand.cxx
  518. CTest/cmCTestBuildHandler.cxx
  519. CTest/cmCTestConfigureCommand.cxx
  520. CTest/cmCTestConfigureHandler.cxx
  521. CTest/cmCTestCoverageCommand.cxx
  522. CTest/cmCTestCoverageHandler.cxx
  523. CTest/cmCTestCurl.cxx
  524. CTest/cmParseMumpsCoverage.cxx
  525. CTest/cmParseCacheCoverage.cxx
  526. CTest/cmParseGTMCoverage.cxx
  527. CTest/cmParseJacocoCoverage.cxx
  528. CTest/cmParseBlanketJSCoverage.cxx
  529. CTest/cmParsePHPCoverage.cxx
  530. CTest/cmParseCoberturaCoverage.cxx
  531. CTest/cmParseDelphiCoverage.cxx
  532. CTest/cmCTestEmptyBinaryDirectoryCommand.cxx
  533. CTest/cmCTestGenericHandler.cxx
  534. CTest/cmCTestHandlerCommand.cxx
  535. CTest/cmCTestLaunch.cxx
  536. CTest/cmCTestMemCheckCommand.cxx
  537. CTest/cmCTestMemCheckHandler.cxx
  538. CTest/cmCTestMultiProcessHandler.cxx
  539. CTest/cmCTestReadCustomFilesCommand.cxx
  540. CTest/cmCTestRunScriptCommand.cxx
  541. CTest/cmCTestRunTest.cxx
  542. CTest/cmCTestScriptHandler.cxx
  543. CTest/cmCTestSleepCommand.cxx
  544. CTest/cmCTestStartCommand.cxx
  545. CTest/cmCTestSubmitCommand.cxx
  546. CTest/cmCTestSubmitHandler.cxx
  547. CTest/cmCTestTestCommand.cxx
  548. CTest/cmCTestTestHandler.cxx
  549. CTest/cmCTestUpdateCommand.cxx
  550. CTest/cmCTestUpdateHandler.cxx
  551. CTest/cmCTestUploadCommand.cxx
  552. CTest/cmCTestUploadHandler.cxx
  553. CTest/cmCTestVC.cxx
  554. CTest/cmCTestVC.h
  555. CTest/cmCTestGlobalVC.cxx
  556. CTest/cmCTestGlobalVC.h
  557. CTest/cmCTestCVS.cxx
  558. CTest/cmCTestCVS.h
  559. CTest/cmCTestSVN.cxx
  560. CTest/cmCTestSVN.h
  561. CTest/cmCTestBZR.cxx
  562. CTest/cmCTestBZR.h
  563. CTest/cmCTestGIT.cxx
  564. CTest/cmCTestGIT.h
  565. CTest/cmCTestHG.cxx
  566. CTest/cmCTestHG.h
  567. CTest/cmCTestP4.cxx
  568. CTest/cmCTestP4.h
  569. )
  570. # Build CTestLib
  571. add_library(CTestLib ${CTEST_SRCS})
  572. target_link_libraries(CTestLib CMakeLib ${CMAKE_CURL_LIBRARIES} ${CMAKE_XMLRPC_LIBRARIES})
  573. #
  574. # Sources for CPack
  575. #
  576. set(CPACK_SRCS
  577. CPack/cmCPackArchiveGenerator.cxx
  578. CPack/cmCPackComponentGroup.cxx
  579. CPack/cmCPackGeneratorFactory.cxx
  580. CPack/cmCPackGenerator.cxx
  581. CPack/cmCPackLog.cxx
  582. CPack/cmCPackNSISGenerator.cxx
  583. CPack/IFW/cmCPackIFWPackage.cxx
  584. CPack/IFW/cmCPackIFWInstaller.cxx
  585. CPack/IFW/cmCPackIFWGenerator.cxx
  586. CPack/cmCPackSTGZGenerator.cxx
  587. CPack/cmCPackTGZGenerator.cxx
  588. CPack/cmCPackTXZGenerator.cxx
  589. CPack/cmCPackTarBZip2Generator.cxx
  590. CPack/cmCPackTarCompressGenerator.cxx
  591. CPack/cmCPackZIPGenerator.cxx
  592. CPack/cmCPack7zGenerator.cxx
  593. )
  594. if(CYGWIN)
  595. set(CPACK_SRCS ${CPACK_SRCS}
  596. CPack/cmCPackCygwinBinaryGenerator.cxx
  597. CPack/cmCPackCygwinSourceGenerator.cxx
  598. )
  599. endif()
  600. if(UNIX)
  601. set(CPACK_SRCS ${CPACK_SRCS}
  602. CPack/cmCPackDebGenerator.cxx
  603. CPack/cmCPackRPMGenerator.cxx
  604. )
  605. endif()
  606. if(WIN32)
  607. set(CPACK_SRCS ${CPACK_SRCS}
  608. CPack/WiX/cmCPackWIXGenerator.cxx
  609. CPack/WiX/cmCPackWIXGenerator.h
  610. CPack/WiX/cmWIXAccessControlList.cxx
  611. CPack/WiX/cmWIXAccessControlList.h
  612. CPack/WiX/cmWIXDirectoriesSourceWriter.cxx
  613. CPack/WiX/cmWIXDirectoriesSourceWriter.h
  614. CPack/WiX/cmWIXFeaturesSourceWriter.cxx
  615. CPack/WiX/cmWIXFeaturesSourceWriter.h
  616. CPack/WiX/cmWIXFilesSourceWriter.cxx
  617. CPack/WiX/cmWIXFilesSourceWriter.h
  618. CPack/WiX/cmWIXPatch.cxx
  619. CPack/WiX/cmWIXPatch.h
  620. CPack/WiX/cmWIXPatchParser.cxx
  621. CPack/WiX/cmWIXPatchParser.h
  622. CPack/WiX/cmWIXRichTextFormatWriter.cxx
  623. CPack/WiX/cmWIXRichTextFormatWriter.h
  624. CPack/WiX/cmWIXShortcut.cxx
  625. CPack/WiX/cmWIXShortcut.h
  626. CPack/WiX/cmWIXSourceWriter.cxx
  627. CPack/WiX/cmWIXSourceWriter.h
  628. )
  629. endif()
  630. if(APPLE)
  631. set(CPACK_SRCS ${CPACK_SRCS}
  632. CPack/cmCPackBundleGenerator.cxx
  633. CPack/cmCPackDragNDropGenerator.cxx
  634. CPack/cmCPackOSXX11Generator.cxx
  635. CPack/cmCPackPackageMakerGenerator.cxx
  636. )
  637. endif()
  638. # Build CPackLib
  639. add_library(CPackLib ${CPACK_SRCS})
  640. target_link_libraries(CPackLib CMakeLib)
  641. if(APPLE)
  642. add_executable(cmakexbuild cmakexbuild.cxx)
  643. target_link_libraries(cmakexbuild CMakeLib)
  644. add_executable(OSXScriptLauncher
  645. CPack/OSXScriptLauncher.cxx)
  646. target_link_libraries(OSXScriptLauncher cmsys)
  647. target_link_libraries(OSXScriptLauncher "-framework CoreFoundation")
  648. endif()
  649. # Build CMake executable
  650. add_executable(cmake cmakemain.cxx cmcmd.cxx cmcmd.h)
  651. target_link_libraries(cmake CMakeLib)
  652. # Build CTest executable
  653. add_executable(ctest ctest.cxx)
  654. target_link_libraries(ctest CTestLib)
  655. # Build CPack executable
  656. add_executable(cpack CPack/cpack.cxx)
  657. target_link_libraries(cpack CPackLib)
  658. # Curses GUI
  659. if(BUILD_CursesDialog)
  660. include(${CMake_SOURCE_DIR}/Source/CursesDialog/CMakeLists.txt)
  661. endif()
  662. # Qt GUI
  663. option(BUILD_QtDialog "Build Qt dialog for CMake" FALSE)
  664. if(BUILD_QtDialog)
  665. add_subdirectory(QtDialog)
  666. endif()
  667. include (${CMake_BINARY_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
  668. include (${CMake_SOURCE_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
  669. install(TARGETS cmake ctest cpack DESTINATION bin)
  670. if(APPLE)
  671. install(TARGETS cmakexbuild DESTINATION bin)
  672. endif()
  673. install(FILES cmCPluginAPI.h DESTINATION ${CMAKE_DATA_DIR}/include)