CMakeLists.txt 23 KB

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