CMakeLists.txt 21 KB

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