CMakeLists.txt 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221
  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(NOT CMake_DEFAULT_RECURSION_LIMIT)
  31. if(DEFINED ENV{DASHBOARD_TEST_FROM_CTEST})
  32. set(CMake_DEFAULT_RECURSION_LIMIT 100)
  33. elseif(MINGW)
  34. set(CMake_DEFAULT_RECURSION_LIMIT 400)
  35. else()
  36. set(CMake_DEFAULT_RECURSION_LIMIT 1000)
  37. endif()
  38. endif()
  39. if(APPLE)
  40. set(CMAKE_USE_MACH_PARSER 1)
  41. endif()
  42. set(EXECUTABLE_OUTPUT_PATH ${CMake_BIN_DIR})
  43. if(WIN32)
  44. # ensure Unicode friendly APIs are used on Windows
  45. add_definitions(-DUNICODE -D_UNICODE)
  46. # minimize windows.h content
  47. add_definitions(-DWIN32_LEAN_AND_MEAN)
  48. endif()
  49. # configure the .dox.in file
  50. if(CMake_BUILD_DEVELOPER_REFERENCE)
  51. configure_file(
  52. "${CMake_SOURCE_DIR}/Source/dir.dox.in"
  53. "${CMake_BINARY_DIR}/Source/dir.dox"
  54. @ONLY
  55. )
  56. endif()
  57. # configure the .h file
  58. configure_file(
  59. "${CMake_SOURCE_DIR}/Source/cmConfigure.cmake.h.in"
  60. "${CMake_BINARY_DIR}/Source/cmConfigure.h"
  61. )
  62. configure_file(
  63. "${CMake_SOURCE_DIR}/Source/cmVersionConfig.h.in"
  64. "${CMake_BINARY_DIR}/Source/cmVersionConfig.h"
  65. )
  66. configure_file(
  67. "${CMake_SOURCE_DIR}/Source/CPack/cmCPackConfigure.h.in"
  68. "${CMake_BINARY_DIR}/Source/CPack/cmCPackConfigure.h"
  69. )
  70. # Tell CMake executable in the build tree where to find the source tree.
  71. configure_file(
  72. "${CMake_SOURCE_DIR}/Source/CMakeSourceDir.txt.in"
  73. "${CMake_BINARY_DIR}/CMakeFiles/CMakeSourceDir.txt" @ONLY
  74. )
  75. # add the include path to find the .h
  76. include_directories(
  77. "${CMake_BINARY_DIR}/Source"
  78. "${CMake_SOURCE_DIR}/Source"
  79. "${CMake_SOURCE_DIR}/Source/LexerParser"
  80. ${CMAKE_ZLIB_INCLUDES}
  81. ${CMAKE_EXPAT_INCLUDES}
  82. ${CMAKE_TAR_INCLUDES}
  83. ${CMake_HAIKU_INCLUDE_DIRS}
  84. )
  85. # Check if we can build the ELF parser.
  86. if(CMAKE_USE_ELF_PARSER)
  87. set(ELF_SRCS cmELF.h cmELF.cxx)
  88. endif()
  89. # Check if we can build the Mach-O parser.
  90. if(CMAKE_USE_MACH_PARSER)
  91. set(MACH_SRCS cmMachO.h cmMachO.cxx)
  92. endif()
  93. #
  94. # Sources for CMakeLib
  95. #
  96. set(SRCS
  97. # Lexers/Parsers
  98. LexerParser/cmCommandArgumentLexer.cxx
  99. LexerParser/cmCommandArgumentLexer.h
  100. LexerParser/cmCommandArgumentLexer.in.l
  101. LexerParser/cmCommandArgumentParser.cxx
  102. LexerParser/cmCommandArgumentParserTokens.h
  103. LexerParser/cmCommandArgumentParser.y
  104. LexerParser/cmDependsJavaLexer.cxx
  105. LexerParser/cmDependsJavaLexer.h
  106. LexerParser/cmDependsJavaLexer.in.l
  107. LexerParser/cmDependsJavaParser.cxx
  108. LexerParser/cmDependsJavaParserTokens.h
  109. LexerParser/cmDependsJavaParser.y
  110. LexerParser/cmExprLexer.cxx
  111. LexerParser/cmExprLexer.h
  112. LexerParser/cmExprLexer.in.l
  113. LexerParser/cmExprParser.cxx
  114. LexerParser/cmExprParserTokens.h
  115. LexerParser/cmExprParser.y
  116. LexerParser/cmFortranLexer.cxx
  117. LexerParser/cmFortranLexer.h
  118. LexerParser/cmFortranLexer.in.l
  119. LexerParser/cmFortranParser.cxx
  120. LexerParser/cmFortranParserTokens.h
  121. LexerParser/cmFortranParser.y
  122. LexerParser/cmGccDepfileLexer.cxx
  123. LexerParser/cmGccDepfileLexer.h
  124. LexerParser/cmGccDepfileLexer.in.l
  125. LexerParser/cmListFileLexer.c
  126. LexerParser/cmListFileLexer.in.l
  127. cmAffinity.cxx
  128. cmAffinity.h
  129. cmAlgorithms.h
  130. cmArchiveWrite.cxx
  131. cmArgumentParser.cxx
  132. cmArgumentParser.h
  133. cmBase32.cxx
  134. cmBinUtilsLinker.cxx
  135. cmBinUtilsLinker.h
  136. cmBinUtilsLinuxELFGetRuntimeDependenciesTool.cxx
  137. cmBinUtilsLinuxELFGetRuntimeDependenciesTool.h
  138. cmBinUtilsLinuxELFLinker.cxx
  139. cmBinUtilsLinuxELFLinker.h
  140. cmBinUtilsLinuxELFObjdumpGetRuntimeDependenciesTool.cxx
  141. cmBinUtilsLinuxELFObjdumpGetRuntimeDependenciesTool.h
  142. cmBinUtilsMacOSMachOGetRuntimeDependenciesTool.cxx
  143. cmBinUtilsMacOSMachOGetRuntimeDependenciesTool.h
  144. cmBinUtilsMacOSMachOLinker.cxx
  145. cmBinUtilsMacOSMachOLinker.h
  146. cmBinUtilsMacOSMachOOToolGetRuntimeDependenciesTool.cxx
  147. cmBinUtilsMacOSMachOOToolGetRuntimeDependenciesTool.h
  148. cmBinUtilsWindowsPEDumpbinGetRuntimeDependenciesTool.cxx
  149. cmBinUtilsWindowsPEDumpbinGetRuntimeDependenciesTool.h
  150. cmBinUtilsWindowsPEGetRuntimeDependenciesTool.cxx
  151. cmBinUtilsWindowsPEGetRuntimeDependenciesTool.h
  152. cmBinUtilsWindowsPELinker.cxx
  153. cmBinUtilsWindowsPELinker.h
  154. cmBinUtilsWindowsPEObjdumpGetRuntimeDependenciesTool.cxx
  155. cmBinUtilsWindowsPEObjdumpGetRuntimeDependenciesTool.h
  156. cmCacheManager.cxx
  157. cmCacheManager.h
  158. cmCheckCustomOutputs.h
  159. cmCheckCustomOutputs.cxx
  160. cmCLocaleEnvironmentScope.h
  161. cmCLocaleEnvironmentScope.cxx
  162. cmCommandArgumentParserHelper.cxx
  163. cmCommonTargetGenerator.cxx
  164. cmCommonTargetGenerator.h
  165. cmComputeComponentGraph.cxx
  166. cmComputeComponentGraph.h
  167. cmComputeLinkDepends.cxx
  168. cmComputeLinkDepends.h
  169. cmComputeLinkInformation.cxx
  170. cmComputeLinkInformation.h
  171. cmComputeTargetDepends.h
  172. cmComputeTargetDepends.cxx
  173. cmCPackPropertiesGenerator.h
  174. cmCPackPropertiesGenerator.cxx
  175. cmCryptoHash.cxx
  176. cmCryptoHash.h
  177. cmCurl.cxx
  178. cmCurl.h
  179. cmCustomCommand.cxx
  180. cmCustomCommand.h
  181. cmCustomCommandGenerator.cxx
  182. cmCustomCommandGenerator.h
  183. cmCustomCommandLines.cxx
  184. cmCustomCommandLines.h
  185. cmCustomCommandTypes.h
  186. cmDefinitions.cxx
  187. cmDefinitions.h
  188. cmDepends.cxx
  189. cmDepends.h
  190. cmDependsC.cxx
  191. cmDependsC.h
  192. cmDependsFortran.cxx
  193. cmDependsFortran.h
  194. cmDependsJava.cxx
  195. cmDependsJava.h
  196. cmDependsJavaParserHelper.cxx
  197. cmDependsJavaParserHelper.h
  198. cmDocumentation.cxx
  199. cmDocumentationFormatter.cxx
  200. cmDocumentationSection.cxx
  201. cmDynamicLoader.cxx
  202. cmDynamicLoader.h
  203. ${ELF_SRCS}
  204. cmExprParserHelper.cxx
  205. cmExportBuildAndroidMKGenerator.h
  206. cmExportBuildAndroidMKGenerator.cxx
  207. cmExportBuildFileGenerator.h
  208. cmExportBuildFileGenerator.cxx
  209. cmExportFileGenerator.h
  210. cmExportFileGenerator.cxx
  211. cmExportInstallAndroidMKGenerator.h
  212. cmExportInstallAndroidMKGenerator.cxx
  213. cmExportInstallFileGenerator.h
  214. cmExportInstallFileGenerator.cxx
  215. cmExportTryCompileFileGenerator.h
  216. cmExportTryCompileFileGenerator.cxx
  217. cmExportSet.h
  218. cmExportSet.cxx
  219. cmExternalMakefileProjectGenerator.cxx
  220. cmExternalMakefileProjectGenerator.h
  221. cmExtraCodeBlocksGenerator.cxx
  222. cmExtraCodeBlocksGenerator.h
  223. cmExtraCodeLiteGenerator.cxx
  224. cmExtraCodeLiteGenerator.h
  225. cmExtraEclipseCDT4Generator.cxx
  226. cmExtraEclipseCDT4Generator.h
  227. cmExtraKateGenerator.cxx
  228. cmExtraKateGenerator.h
  229. cmExtraSublimeTextGenerator.cxx
  230. cmExtraSublimeTextGenerator.h
  231. cmFileAPI.cxx
  232. cmFileAPI.h
  233. cmFileAPICache.cxx
  234. cmFileAPICache.h
  235. cmFileAPICodemodel.cxx
  236. cmFileAPICodemodel.h
  237. cmFileAPICMakeFiles.cxx
  238. cmFileAPICMakeFiles.h
  239. cmFileCopier.cxx
  240. cmFileCopier.h
  241. cmFileInstaller.cxx
  242. cmFileInstaller.h
  243. cmFileLock.cxx
  244. cmFileLock.h
  245. cmFileLockPool.cxx
  246. cmFileLockPool.h
  247. cmFileLockResult.cxx
  248. cmFileLockResult.h
  249. cmFilePathChecksum.cxx
  250. cmFilePathChecksum.h
  251. cmFileTime.cxx
  252. cmFileTime.h
  253. cmFileTimeCache.cxx
  254. cmFileTimeCache.h
  255. cmFileTimes.cxx
  256. cmFileTimes.h
  257. cmFortranParserImpl.cxx
  258. cmFSPermissions.cxx
  259. cmFSPermissions.h
  260. cmGccDepfileLexerHelper.cxx
  261. cmGccDepfileLexerHelper.h
  262. cmGccDepfileReader.cxx
  263. cmGccDepfileReader.h
  264. cmGeneratedFileStream.cxx
  265. cmGeneratorExpressionContext.cxx
  266. cmGeneratorExpressionContext.h
  267. cmGeneratorExpressionDAGChecker.cxx
  268. cmGeneratorExpressionDAGChecker.h
  269. cmGeneratorExpressionEvaluationFile.cxx
  270. cmGeneratorExpressionEvaluationFile.h
  271. cmGeneratorExpressionEvaluator.cxx
  272. cmGeneratorExpressionEvaluator.h
  273. cmGeneratorExpressionLexer.cxx
  274. cmGeneratorExpressionLexer.h
  275. cmGeneratorExpressionNode.cxx
  276. cmGeneratorExpressionNode.h
  277. cmGeneratorExpressionParser.cxx
  278. cmGeneratorExpressionParser.h
  279. cmGeneratorExpression.cxx
  280. cmGeneratorExpression.h
  281. cmGeneratorTarget.cxx
  282. cmGeneratorTarget.h
  283. cmLinkItemGraphVisitor.cxx
  284. cmLinkItemGraphVisitor.h
  285. cmGetPipes.cxx
  286. cmGetPipes.h
  287. cmGlobalCommonGenerator.cxx
  288. cmGlobalCommonGenerator.h
  289. cmGlobalGenerator.cxx
  290. cmGlobalGenerator.h
  291. cmGlobalGeneratorFactory.h
  292. cmGlobalUnixMakefileGenerator3.cxx
  293. cmGlobalUnixMakefileGenerator3.h
  294. cmGlobVerificationManager.cxx
  295. cmGlobVerificationManager.h
  296. cmGraphAdjacencyList.h
  297. cmGraphVizWriter.cxx
  298. cmGraphVizWriter.h
  299. cmInstallGenerator.h
  300. cmInstallGenerator.cxx
  301. cmInstallExportGenerator.cxx
  302. cmInstalledFile.h
  303. cmInstalledFile.cxx
  304. cmInstallFilesGenerator.h
  305. cmInstallFilesGenerator.cxx
  306. cmInstallScriptGenerator.h
  307. cmInstallScriptGenerator.cxx
  308. cmInstallSubdirectoryGenerator.h
  309. cmInstallSubdirectoryGenerator.cxx
  310. cmInstallTargetGenerator.h
  311. cmInstallTargetGenerator.cxx
  312. cmInstallDirectoryGenerator.h
  313. cmInstallDirectoryGenerator.cxx
  314. cmLDConfigLDConfigTool.cxx
  315. cmLDConfigLDConfigTool.h
  316. cmLDConfigTool.cxx
  317. cmLDConfigTool.h
  318. cmLinkedTree.h
  319. cmLinkItem.cxx
  320. cmLinkItem.h
  321. cmLinkLineComputer.cxx
  322. cmLinkLineComputer.h
  323. cmLinkLineDeviceComputer.cxx
  324. cmLinkLineDeviceComputer.h
  325. cmListFileCache.cxx
  326. cmListFileCache.h
  327. cmLocalCommonGenerator.cxx
  328. cmLocalCommonGenerator.h
  329. cmLocalGenerator.cxx
  330. cmLocalGenerator.h
  331. cmRulePlaceholderExpander.cxx
  332. cmRulePlaceholderExpander.h
  333. cmLocalUnixMakefileGenerator3.cxx
  334. cmLocale.h
  335. ${MACH_SRCS}
  336. cmMakefile.cxx
  337. cmMakefile.h
  338. cmMakefileTargetGenerator.cxx
  339. cmMakefileExecutableTargetGenerator.cxx
  340. cmMakefileLibraryTargetGenerator.cxx
  341. cmMakefileUtilityTargetGenerator.cxx
  342. cmMessageType.h
  343. cmMessenger.cxx
  344. cmMessenger.h
  345. cmMSVC60LinkLineComputer.cxx
  346. cmMSVC60LinkLineComputer.h
  347. cmOSXBundleGenerator.cxx
  348. cmOSXBundleGenerator.h
  349. cmOutputConverter.cxx
  350. cmOutputConverter.h
  351. cmNewLineStyle.h
  352. cmNewLineStyle.cxx
  353. cmOrderDirectories.cxx
  354. cmOrderDirectories.h
  355. cmPolicies.h
  356. cmPolicies.cxx
  357. cmProcessOutput.cxx
  358. cmProcessOutput.h
  359. cmProcessTools.cxx
  360. cmProcessTools.h
  361. cmProperty.h
  362. cmPropertyDefinition.cxx
  363. cmPropertyDefinition.h
  364. cmPropertyDefinitionMap.cxx
  365. cmPropertyDefinitionMap.h
  366. cmPropertyMap.cxx
  367. cmPropertyMap.h
  368. cmQtAutoGen.cxx
  369. cmQtAutoGen.h
  370. cmQtAutoGenerator.cxx
  371. cmQtAutoGenerator.h
  372. cmQtAutoGenGlobalInitializer.cxx
  373. cmQtAutoGenGlobalInitializer.h
  374. cmQtAutoGenInitializer.cxx
  375. cmQtAutoGenInitializer.h
  376. cmQtAutoMocUic.cxx
  377. cmQtAutoMocUic.h
  378. cmQtAutoRcc.cxx
  379. cmQtAutoRcc.h
  380. cmRST.cxx
  381. cmRST.h
  382. cmRuntimeDependencyArchive.cxx
  383. cmRuntimeDependencyArchive.h
  384. cmScriptGenerator.h
  385. cmScriptGenerator.cxx
  386. cmSourceFile.cxx
  387. cmSourceFile.h
  388. cmSourceFileLocation.cxx
  389. cmSourceFileLocation.h
  390. cmSourceFileLocationKind.h
  391. cmSourceGroup.cxx
  392. cmSourceGroup.h
  393. cmState.cxx
  394. cmState.h
  395. cmStateDirectory.cxx
  396. cmStateDirectory.h
  397. cmStateSnapshot.cxx
  398. cmStateSnapshot.h
  399. cmStateTypes.h
  400. cmStringAlgorithms.cxx
  401. cmStringAlgorithms.h
  402. cmSystemTools.cxx
  403. cmSystemTools.h
  404. cmTarget.cxx
  405. cmTarget.h
  406. cmTargetPropertyComputer.cxx
  407. cmTargetPropertyComputer.h
  408. cmTargetExport.h
  409. cmTest.cxx
  410. cmTest.h
  411. cmTestGenerator.cxx
  412. cmTestGenerator.h
  413. cmUuid.cxx
  414. cmUVHandlePtr.cxx
  415. cmUVHandlePtr.h
  416. cmUVProcessChain.cxx
  417. cmUVProcessChain.h
  418. cmUVStreambuf.h
  419. cmUVSignalHackRAII.h
  420. cmVariableWatch.cxx
  421. cmVariableWatch.h
  422. cmVersion.cxx
  423. cmVersion.h
  424. cmWorkerPool.cxx
  425. cmWorkerPool.h
  426. cmWorkingDirectory.cxx
  427. cmWorkingDirectory.h
  428. cmXMLParser.cxx
  429. cmXMLParser.h
  430. cmXMLSafe.cxx
  431. cmXMLSafe.h
  432. cmXMLWriter.cxx
  433. cmXMLWriter.h
  434. cmake.cxx
  435. cmake.h
  436. cmCommand.cxx
  437. cmCommand.h
  438. cmCommands.cxx
  439. cmCommands.h
  440. cmAddCompileDefinitionsCommand.cxx
  441. cmAddCompileDefinitionsCommand.h
  442. cmAddCompileOptionsCommand.cxx
  443. cmAddCompileOptionsCommand.h
  444. cmAddLinkOptionsCommand.cxx
  445. cmAddLinkOptionsCommand.h
  446. cmAddCustomCommandCommand.cxx
  447. cmAddCustomCommandCommand.h
  448. cmAddCustomTargetCommand.cxx
  449. cmAddCustomTargetCommand.h
  450. cmAddDefinitionsCommand.cxx
  451. cmAddDefinitionsCommand.h
  452. cmAddDependenciesCommand.cxx
  453. cmAddDependenciesCommand.h
  454. cmAddExecutableCommand.cxx
  455. cmAddExecutableCommand.h
  456. cmAddLibraryCommand.cxx
  457. cmAddLibraryCommand.h
  458. cmAddSubDirectoryCommand.cxx
  459. cmAddSubDirectoryCommand.h
  460. cmAddTestCommand.cxx
  461. cmAddTestCommand.h
  462. cmAuxSourceDirectoryCommand.cxx
  463. cmAuxSourceDirectoryCommand.h
  464. cmBreakCommand.cxx
  465. cmBreakCommand.h
  466. cmBuildCommand.cxx
  467. cmBuildCommand.h
  468. cmBuildNameCommand.cxx
  469. cmBuildNameCommand.h
  470. cmCMakeHostSystemInformationCommand.cxx
  471. cmCMakeHostSystemInformationCommand.h
  472. cmCMakeMinimumRequired.cxx
  473. cmCMakeMinimumRequired.h
  474. cmCMakePolicyCommand.cxx
  475. cmCMakePolicyCommand.h
  476. cmConditionEvaluator.cxx
  477. cmConditionEvaluator.h
  478. cmConfigureFileCommand.cxx
  479. cmConfigureFileCommand.h
  480. cmContinueCommand.cxx
  481. cmContinueCommand.h
  482. cmCoreTryCompile.cxx
  483. cmCoreTryCompile.h
  484. cmCreateTestSourceList.cxx
  485. cmCreateTestSourceList.h
  486. cmDefinePropertyCommand.cxx
  487. cmDefinePropertyCommand.h
  488. cmEnableLanguageCommand.cxx
  489. cmEnableLanguageCommand.h
  490. cmEnableTestingCommand.cxx
  491. cmEnableTestingCommand.h
  492. cmExecProgramCommand.cxx
  493. cmExecProgramCommand.h
  494. cmExecuteProcessCommand.cxx
  495. cmExecuteProcessCommand.h
  496. cmExpandedCommandArgument.cxx
  497. cmExpandedCommandArgument.h
  498. cmExportCommand.cxx
  499. cmExportCommand.h
  500. cmExportLibraryDependenciesCommand.cxx
  501. cmExportLibraryDependenciesCommand.h
  502. cmFLTKWrapUICommand.cxx
  503. cmFLTKWrapUICommand.h
  504. cmFileCommand.cxx
  505. cmFileCommand.h
  506. cmFindBase.cxx
  507. cmFindBase.h
  508. cmFindCommon.cxx
  509. cmFindCommon.h
  510. cmFindFileCommand.cxx
  511. cmFindFileCommand.h
  512. cmFindLibraryCommand.cxx
  513. cmFindLibraryCommand.h
  514. cmFindPackageCommand.cxx
  515. cmFindPackageCommand.h
  516. cmFindPathCommand.cxx
  517. cmFindPathCommand.h
  518. cmFindProgramCommand.cxx
  519. cmFindProgramCommand.h
  520. cmForEachCommand.cxx
  521. cmForEachCommand.h
  522. cmFunctionBlocker.cxx
  523. cmFunctionBlocker.h
  524. cmFunctionCommand.cxx
  525. cmFunctionCommand.h
  526. cmGetCMakePropertyCommand.cxx
  527. cmGetCMakePropertyCommand.h
  528. cmGetDirectoryPropertyCommand.cxx
  529. cmGetDirectoryPropertyCommand.h
  530. cmGetFilenameComponentCommand.cxx
  531. cmGetFilenameComponentCommand.h
  532. cmGetPropertyCommand.cxx
  533. cmGetPropertyCommand.h
  534. cmGetSourceFilePropertyCommand.cxx
  535. cmGetSourceFilePropertyCommand.h
  536. cmGetTargetPropertyCommand.cxx
  537. cmGetTargetPropertyCommand.h
  538. cmGetTestPropertyCommand.cxx
  539. cmGetTestPropertyCommand.h
  540. cmHexFileConverter.cxx
  541. cmHexFileConverter.h
  542. cmIfCommand.cxx
  543. cmIfCommand.h
  544. cmIncludeCommand.cxx
  545. cmIncludeCommand.h
  546. cmIncludeDirectoryCommand.cxx
  547. cmIncludeDirectoryCommand.h
  548. cmIncludeExternalMSProjectCommand.cxx
  549. cmIncludeExternalMSProjectCommand.h
  550. cmIncludeGuardCommand.cxx
  551. cmIncludeGuardCommand.h
  552. cmIncludeRegularExpressionCommand.cxx
  553. cmIncludeRegularExpressionCommand.h
  554. cmInstallCommand.cxx
  555. cmInstallCommand.h
  556. cmInstallCommandArguments.cxx
  557. cmInstallCommandArguments.h
  558. cmInstallFilesCommand.cxx
  559. cmInstallFilesCommand.h
  560. cmInstallProgramsCommand.cxx
  561. cmInstallProgramsCommand.h
  562. cmInstallTargetsCommand.cxx
  563. cmInstallTargetsCommand.h
  564. cmLinkDirectoriesCommand.cxx
  565. cmLinkDirectoriesCommand.h
  566. cmLinkLibrariesCommand.cxx
  567. cmLinkLibrariesCommand.h
  568. cmListCommand.cxx
  569. cmListCommand.h
  570. cmLoadCacheCommand.cxx
  571. cmLoadCacheCommand.h
  572. cmLoadCommandCommand.cxx
  573. cmLoadCommandCommand.h
  574. cmMacroCommand.cxx
  575. cmMacroCommand.h
  576. cmMakeDirectoryCommand.cxx
  577. cmMakeDirectoryCommand.h
  578. cmMarkAsAdvancedCommand.cxx
  579. cmMarkAsAdvancedCommand.h
  580. cmMathCommand.cxx
  581. cmMathCommand.h
  582. cmMessageCommand.cxx
  583. cmMessageCommand.h
  584. cmOptionCommand.cxx
  585. cmOptionCommand.h
  586. cmOutputRequiredFilesCommand.cxx
  587. cmOutputRequiredFilesCommand.h
  588. cmParseArgumentsCommand.cxx
  589. cmParseArgumentsCommand.h
  590. cmPathLabel.cxx
  591. cmPathLabel.h
  592. cmProjectCommand.cxx
  593. cmProjectCommand.h
  594. cmQTWrapCPPCommand.cxx
  595. cmQTWrapCPPCommand.h
  596. cmQTWrapUICommand.cxx
  597. cmQTWrapUICommand.h
  598. cmRemoveCommand.cxx
  599. cmRemoveCommand.h
  600. cmRemoveDefinitionsCommand.cxx
  601. cmRemoveDefinitionsCommand.h
  602. cmReturnCommand.cxx
  603. cmReturnCommand.h
  604. cmSearchPath.cxx
  605. cmSearchPath.h
  606. cmSeparateArgumentsCommand.cxx
  607. cmSeparateArgumentsCommand.h
  608. cmSetCommand.cxx
  609. cmSetCommand.h
  610. cmSetDirectoryPropertiesCommand.cxx
  611. cmSetDirectoryPropertiesCommand.h
  612. cmSetPropertyCommand.cxx
  613. cmSetPropertyCommand.h
  614. cmSetSourceFilesPropertiesCommand.cxx
  615. cmSetSourceFilesPropertiesCommand.h
  616. cmSetTargetPropertiesCommand.cxx
  617. cmSetTargetPropertiesCommand.h
  618. cmSetTestsPropertiesCommand.cxx
  619. cmSetTestsPropertiesCommand.h
  620. cmSiteNameCommand.cxx
  621. cmSiteNameCommand.h
  622. cmSourceGroupCommand.cxx
  623. cmSourceGroupCommand.h
  624. cmString.cxx
  625. cmString.hxx
  626. cmStringReplaceHelper.cxx
  627. cmStringCommand.cxx
  628. cmStringCommand.h
  629. cmSubcommandTable.cxx
  630. cmSubcommandTable.h
  631. cmSubdirCommand.cxx
  632. cmSubdirCommand.h
  633. cmSubdirDependsCommand.cxx
  634. cmSubdirDependsCommand.h
  635. cmTargetCompileDefinitionsCommand.cxx
  636. cmTargetCompileDefinitionsCommand.h
  637. cmTargetCompileFeaturesCommand.cxx
  638. cmTargetCompileFeaturesCommand.h
  639. cmTargetCompileOptionsCommand.cxx
  640. cmTargetCompileOptionsCommand.h
  641. cmTargetIncludeDirectoriesCommand.cxx
  642. cmTargetIncludeDirectoriesCommand.h
  643. cmTargetLinkOptionsCommand.cxx
  644. cmTargetLinkOptionsCommand.h
  645. cmTargetLinkDirectoriesCommand.cxx
  646. cmTargetLinkDirectoriesCommand.h
  647. cmTargetLinkLibrariesCommand.cxx
  648. cmTargetLinkLibrariesCommand.h
  649. cmTargetPrecompileHeadersCommand.cxx
  650. cmTargetPrecompileHeadersCommand.h
  651. cmTargetPropCommandBase.cxx
  652. cmTargetPropCommandBase.h
  653. cmTargetSourcesCommand.cxx
  654. cmTargetSourcesCommand.h
  655. cmTimestamp.cxx
  656. cmTimestamp.h
  657. cmTryCompileCommand.cxx
  658. cmTryCompileCommand.h
  659. cmTryRunCommand.cxx
  660. cmTryRunCommand.h
  661. cmUnsetCommand.cxx
  662. cmUnsetCommand.h
  663. cmUseMangledMesaCommand.cxx
  664. cmUseMangledMesaCommand.h
  665. cmUtilitySourceCommand.cxx
  666. cmUtilitySourceCommand.h
  667. cmVariableRequiresCommand.cxx
  668. cmVariableRequiresCommand.h
  669. cmVariableWatchCommand.cxx
  670. cmVariableWatchCommand.h
  671. cmWhileCommand.cxx
  672. cmWhileCommand.h
  673. cmWriteFileCommand.cxx
  674. cmWriteFileCommand.h
  675. cm_static_string_view.hxx
  676. cm_get_date.h
  677. cm_get_date.c
  678. cm_utf8.h
  679. cm_utf8.c
  680. cm_codecvt.hxx
  681. cm_codecvt.cxx
  682. cmDuration.h
  683. cmDuration.cxx
  684. bindexplib.cxx
  685. )
  686. SET_PROPERTY(SOURCE cmProcessOutput.cxx APPEND PROPERTY COMPILE_DEFINITIONS
  687. KWSYS_ENCODING_DEFAULT_CODEPAGE=${KWSYS_ENCODING_DEFAULT_CODEPAGE})
  688. # Xcode only works on Apple
  689. if(APPLE)
  690. set(SRCS ${SRCS}
  691. cmXCodeObject.cxx
  692. cmXCode21Object.cxx
  693. cmXCodeScheme.cxx
  694. cmGlobalXCodeGenerator.cxx
  695. cmGlobalXCodeGenerator.h
  696. cmLocalXCodeGenerator.cxx
  697. cmLocalXCodeGenerator.h)
  698. endif()
  699. if (WIN32)
  700. set(SRCS ${SRCS}
  701. cmCallVisualStudioMacro.cxx
  702. cmCallVisualStudioMacro.h
  703. )
  704. if(NOT UNIX)
  705. set(SRCS ${SRCS}
  706. cmGlobalBorlandMakefileGenerator.cxx
  707. cmGlobalBorlandMakefileGenerator.h
  708. cmGlobalMSYSMakefileGenerator.cxx
  709. cmGlobalMinGWMakefileGenerator.cxx
  710. cmGlobalNMakeMakefileGenerator.cxx
  711. cmGlobalNMakeMakefileGenerator.h
  712. cmGlobalJOMMakefileGenerator.cxx
  713. cmGlobalJOMMakefileGenerator.h
  714. cmGlobalVisualStudio71Generator.cxx
  715. cmGlobalVisualStudio71Generator.h
  716. cmGlobalVisualStudio7Generator.cxx
  717. cmGlobalVisualStudio7Generator.h
  718. cmGlobalVisualStudio8Generator.cxx
  719. cmGlobalVisualStudio8Generator.h
  720. cmGlobalVisualStudio9Generator.cxx
  721. cmGlobalVisualStudio9Generator.h
  722. cmVisualStudioGeneratorOptions.h
  723. cmVisualStudioGeneratorOptions.cxx
  724. cmVisualStudio10TargetGenerator.h
  725. cmVisualStudio10TargetGenerator.cxx
  726. cmVisualStudio10ToolsetOptions.h
  727. cmVisualStudio10ToolsetOptions.cxx
  728. cmLocalVisualStudio10Generator.cxx
  729. cmLocalVisualStudio10Generator.h
  730. cmGlobalVisualStudio10Generator.h
  731. cmGlobalVisualStudio10Generator.cxx
  732. cmGlobalVisualStudio11Generator.h
  733. cmGlobalVisualStudio11Generator.cxx
  734. cmGlobalVisualStudio12Generator.h
  735. cmGlobalVisualStudio12Generator.cxx
  736. cmGlobalVisualStudio14Generator.h
  737. cmGlobalVisualStudio14Generator.cxx
  738. cmGlobalVisualStudioGenerator.cxx
  739. cmGlobalVisualStudioGenerator.h
  740. cmGlobalVisualStudioVersionedGenerator.h
  741. cmGlobalVisualStudioVersionedGenerator.cxx
  742. cmIDEFlagTable.h
  743. cmIDEOptions.cxx
  744. cmIDEOptions.h
  745. cmLocalVisualStudio7Generator.cxx
  746. cmLocalVisualStudio7Generator.h
  747. cmLocalVisualStudioGenerator.cxx
  748. cmLocalVisualStudioGenerator.h
  749. cmVisualStudioSlnData.h
  750. cmVisualStudioSlnData.cxx
  751. cmVisualStudioSlnParser.h
  752. cmVisualStudioSlnParser.cxx
  753. cmVisualStudioWCEPlatformParser.h
  754. cmVisualStudioWCEPlatformParser.cxx
  755. cmVSSetupHelper.cxx
  756. cmVSSetupHelper.h
  757. )
  758. # Add a manifest file to executables on Windows to allow for
  759. # GetVersion to work properly on Windows 8 and above.
  760. set(MANIFEST_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake.version.manifest)
  761. endif()
  762. endif ()
  763. # Watcom support
  764. if(WIN32 OR CMAKE_SYSTEM_NAME STREQUAL "Linux")
  765. set_property(SOURCE cmake.cxx APPEND PROPERTY COMPILE_DEFINITIONS CMAKE_USE_WMAKE)
  766. list(APPEND SRCS
  767. cmGlobalWatcomWMakeGenerator.cxx
  768. cmGlobalWatcomWMakeGenerator.h
  769. )
  770. endif()
  771. # GHS support
  772. # Works only for windows and linux
  773. if(WIN32 OR CMAKE_SYSTEM_NAME STREQUAL "Linux")
  774. set(SRCS ${SRCS}
  775. cmGlobalGhsMultiGenerator.cxx
  776. cmGlobalGhsMultiGenerator.h
  777. cmLocalGhsMultiGenerator.cxx
  778. cmLocalGhsMultiGenerator.h
  779. cmGhsMultiTargetGenerator.cxx
  780. cmGhsMultiTargetGenerator.h
  781. cmGhsMultiGpj.cxx
  782. cmGhsMultiGpj.h
  783. )
  784. endif()
  785. # Ninja support
  786. set(SRCS ${SRCS}
  787. cmGlobalNinjaGenerator.cxx
  788. cmGlobalNinjaGenerator.h
  789. cmNinjaTypes.h
  790. cmLocalNinjaGenerator.cxx
  791. cmLocalNinjaGenerator.h
  792. cmNinjaTargetGenerator.cxx
  793. cmNinjaTargetGenerator.h
  794. cmNinjaNormalTargetGenerator.cxx
  795. cmNinjaNormalTargetGenerator.h
  796. cmNinjaUtilityTargetGenerator.cxx
  797. cmNinjaUtilityTargetGenerator.h
  798. cmNinjaLinkLineComputer.cxx
  799. cmNinjaLinkLineComputer.h
  800. cmNinjaLinkLineDeviceComputer.cxx
  801. cmNinjaLinkLineDeviceComputer.h
  802. )
  803. # Temporary variable for tools targets
  804. set(_tools)
  805. if(WIN32 AND NOT CYGWIN)
  806. set_source_files_properties(cmcldeps.cxx PROPERTIES COMPILE_DEFINITIONS _WIN32_WINNT=0x0501)
  807. add_executable(cmcldeps cmcldeps.cxx ${MANIFEST_FILE})
  808. list(APPEND _tools cmcldeps)
  809. target_link_libraries(cmcldeps CMakeLib)
  810. endif()
  811. foreach(v CURL_CA_BUNDLE CURL_CA_PATH)
  812. if(${v})
  813. set_property(SOURCE cmCurl.cxx APPEND PROPERTY COMPILE_DEFINITIONS ${v}="${${v}}")
  814. endif()
  815. endforeach()
  816. foreach(check
  817. STAT_HAS_ST_MTIM
  818. STAT_HAS_ST_MTIMESPEC
  819. )
  820. if(KWSYS_CXX_${check}_COMPILED) # abuse KWSys check cache entry
  821. set(CMake_${check} 1)
  822. else()
  823. set(CMake_${check} 0)
  824. endif()
  825. set_property(SOURCE cmFileTime.cxx APPEND PROPERTY
  826. COMPILE_DEFINITIONS CMake_${check}=${CMake_${check}})
  827. endforeach()
  828. # create a library used by the command line and the GUI
  829. add_library(CMakeLib ${SRCS})
  830. target_link_libraries(CMakeLib cmsys
  831. ${CMAKE_STD_LIBRARY}
  832. ${CMAKE_EXPAT_LIBRARIES} ${CMAKE_ZLIB_LIBRARIES}
  833. ${CMAKE_TAR_LIBRARIES}
  834. ${CMAKE_CURL_LIBRARIES}
  835. ${CMAKE_JSONCPP_LIBRARIES}
  836. ${CMAKE_LIBUV_LIBRARIES}
  837. ${CMAKE_LIBRHASH_LIBRARIES}
  838. ${CMake_KWIML_LIBRARIES}
  839. ${CMAKE_THREAD_LIBS_INIT}
  840. )
  841. if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR MATCHES "sparc")
  842. # the atomic instructions are implemented using libatomic on some platforms,
  843. # so linking to that may be required
  844. check_library_exists(atomic __atomic_fetch_add_4 "" LIBATOMIC_NEEDED)
  845. if(LIBATOMIC_NEEDED)
  846. target_link_libraries(CMakeLib atomic)
  847. endif()
  848. endif()
  849. # On Apple we need CoreFoundation and CoreServices
  850. if(APPLE)
  851. target_link_libraries(CMakeLib "-framework CoreFoundation")
  852. target_link_libraries(CMakeLib "-framework CoreServices")
  853. endif()
  854. if(WIN32 AND NOT UNIX)
  855. # We need the rpcrt4 library on Windows.
  856. # We need the crypt32 library on Windows for crypto/cert APIs.
  857. target_link_libraries(CMakeLib rpcrt4 crypt32)
  858. endif()
  859. target_compile_definitions(CMakeLib PUBLIC ${CLANG_TIDY_DEFINITIONS})
  860. #
  861. # CTestLib
  862. #
  863. include_directories(
  864. "${CMake_SOURCE_DIR}/Source/CTest"
  865. ${CMAKE_CURL_INCLUDES}
  866. )
  867. #
  868. # Sources for CTestLib
  869. #
  870. set(CTEST_SRCS cmCTest.cxx
  871. CTest/cmProcess.cxx
  872. CTest/cmCTestBinPacker.cxx
  873. CTest/cmCTestBuildAndTestHandler.cxx
  874. CTest/cmCTestBuildCommand.cxx
  875. CTest/cmCTestBuildHandler.cxx
  876. CTest/cmCTestConfigureCommand.cxx
  877. CTest/cmCTestConfigureHandler.cxx
  878. CTest/cmCTestCoverageCommand.cxx
  879. CTest/cmCTestCoverageHandler.cxx
  880. CTest/cmCTestCurl.cxx
  881. CTest/cmParseMumpsCoverage.cxx
  882. CTest/cmParseCacheCoverage.cxx
  883. CTest/cmParseGTMCoverage.cxx
  884. CTest/cmParseJacocoCoverage.cxx
  885. CTest/cmParseBlanketJSCoverage.cxx
  886. CTest/cmParsePHPCoverage.cxx
  887. CTest/cmParseCoberturaCoverage.cxx
  888. CTest/cmParseDelphiCoverage.cxx
  889. CTest/cmCTestEmptyBinaryDirectoryCommand.cxx
  890. CTest/cmCTestGenericHandler.cxx
  891. CTest/cmCTestHandlerCommand.cxx
  892. CTest/cmCTestResourceAllocator.cxx
  893. CTest/cmCTestResourceSpec.cxx
  894. CTest/cmCTestLaunch.cxx
  895. CTest/cmCTestMemCheckCommand.cxx
  896. CTest/cmCTestMemCheckHandler.cxx
  897. CTest/cmCTestMultiProcessHandler.cxx
  898. CTest/cmCTestReadCustomFilesCommand.cxx
  899. CTest/cmCTestResourceGroupsLexerHelper.cxx
  900. CTest/cmCTestRunScriptCommand.cxx
  901. CTest/cmCTestRunTest.cxx
  902. CTest/cmCTestScriptHandler.cxx
  903. CTest/cmCTestSleepCommand.cxx
  904. CTest/cmCTestStartCommand.cxx
  905. CTest/cmCTestSubmitCommand.cxx
  906. CTest/cmCTestSubmitHandler.cxx
  907. CTest/cmCTestTestCommand.cxx
  908. CTest/cmCTestTestHandler.cxx
  909. CTest/cmCTestUpdateCommand.cxx
  910. CTest/cmCTestUpdateHandler.cxx
  911. CTest/cmCTestUploadCommand.cxx
  912. CTest/cmCTestUploadHandler.cxx
  913. CTest/cmCTestVC.cxx
  914. CTest/cmCTestVC.h
  915. CTest/cmCTestGlobalVC.cxx
  916. CTest/cmCTestGlobalVC.h
  917. CTest/cmCTestCVS.cxx
  918. CTest/cmCTestCVS.h
  919. CTest/cmCTestSVN.cxx
  920. CTest/cmCTestSVN.h
  921. CTest/cmCTestBZR.cxx
  922. CTest/cmCTestBZR.h
  923. CTest/cmCTestGIT.cxx
  924. CTest/cmCTestGIT.h
  925. CTest/cmCTestHG.cxx
  926. CTest/cmCTestHG.h
  927. CTest/cmCTestP4.cxx
  928. CTest/cmCTestP4.h
  929. LexerParser/cmCTestResourceGroupsLexer.cxx
  930. LexerParser/cmCTestResourceGroupsLexer.h
  931. LexerParser/cmCTestResourceGroupsLexer.in.l
  932. )
  933. # Build CTestLib
  934. add_library(CTestLib ${CTEST_SRCS})
  935. target_link_libraries(CTestLib CMakeLib ${CMAKE_CURL_LIBRARIES})
  936. #
  937. # CPack
  938. #
  939. include_directories(
  940. "${CMake_SOURCE_DIR}/Source/CPack"
  941. )
  942. #
  943. # Sources for CPack
  944. #
  945. set(CPACK_SRCS
  946. CPack/cmCPackArchiveGenerator.cxx
  947. CPack/cmCPackComponentGroup.cxx
  948. CPack/cmCPackDebGenerator.cxx
  949. CPack/cmCPackExternalGenerator.cxx
  950. CPack/cmCPackGeneratorFactory.cxx
  951. CPack/cmCPackGenerator.cxx
  952. CPack/cmCPackLog.cxx
  953. CPack/cmCPackNSISGenerator.cxx
  954. CPack/cmCPackNuGetGenerator.cxx
  955. CPack/cmCPackSTGZGenerator.cxx
  956. )
  957. # CPack IFW generator
  958. set(CPACK_SRCS ${CPACK_SRCS}
  959. CPack/IFW/cmCPackIFWCommon.cxx
  960. CPack/IFW/cmCPackIFWCommon.h
  961. CPack/IFW/cmCPackIFWGenerator.cxx
  962. CPack/IFW/cmCPackIFWGenerator.h
  963. CPack/IFW/cmCPackIFWInstaller.cxx
  964. CPack/IFW/cmCPackIFWInstaller.h
  965. CPack/IFW/cmCPackIFWPackage.cxx
  966. CPack/IFW/cmCPackIFWPackage.h
  967. CPack/IFW/cmCPackIFWRepository.cxx
  968. CPack/IFW/cmCPackIFWRepository.h
  969. )
  970. if(CYGWIN)
  971. set(CPACK_SRCS ${CPACK_SRCS}
  972. CPack/cmCPackCygwinBinaryGenerator.cxx
  973. CPack/cmCPackCygwinSourceGenerator.cxx
  974. )
  975. endif()
  976. option(CPACK_ENABLE_FREEBSD_PKG "Add FreeBSD pkg(8) generator to CPack." OFF)
  977. if(UNIX)
  978. set(CPACK_SRCS ${CPACK_SRCS}
  979. CPack/cmCPackRPMGenerator.cxx
  980. )
  981. # Optionally, try to use pkg(8)
  982. if(CPACK_ENABLE_FREEBSD_PKG)
  983. # On UNIX, you may find FreeBSD's pkg(8) and attendant
  984. # library -- it can be used on FreeBSD, Dragonfly, NetBSD,
  985. # OpenBSD and also Linux and OSX. Look for the header and
  986. # the library; it's a warning on FreeBSD if they're not
  987. # found, and informational on other platforms.
  988. find_path(FREEBSD_PKG_INCLUDE_DIRS "pkg.h")
  989. if(FREEBSD_PKG_INCLUDE_DIRS)
  990. find_library(FREEBSD_PKG_LIBRARIES
  991. pkg
  992. DOC "FreeBSD pkg(8) library")
  993. if(FREEBSD_PKG_LIBRARIES)
  994. set(CPACK_SRCS ${CPACK_SRCS}
  995. CPack/cmCPackFreeBSDGenerator.cxx
  996. )
  997. endif()
  998. endif()
  999. if (NOT FREEBSD_PKG_INCLUDE_DIRS OR NOT FREEBSD_PKG_LIBRARIES)
  1000. message(FATAL_ERROR "CPack needs libpkg(3) to produce FreeBSD packages natively.")
  1001. endif()
  1002. else()
  1003. set(FREEBSD_PKG_INCLUDE_DIRS NOTFOUND)
  1004. set(FREEBSD_PKG_LIBRARIES NOTFOUND)
  1005. endif()
  1006. endif()
  1007. if(CYGWIN)
  1008. find_package(LibUUID)
  1009. endif()
  1010. if(WIN32 OR (CYGWIN AND LibUUID_FOUND))
  1011. set(CPACK_SRCS ${CPACK_SRCS}
  1012. CPack/WiX/cmCMakeToWixPath.cxx
  1013. CPack/WiX/cmCMakeToWixPath.h
  1014. CPack/WiX/cmCPackWIXGenerator.cxx
  1015. CPack/WiX/cmCPackWIXGenerator.h
  1016. CPack/WiX/cmWIXAccessControlList.cxx
  1017. CPack/WiX/cmWIXAccessControlList.h
  1018. CPack/WiX/cmWIXDirectoriesSourceWriter.cxx
  1019. CPack/WiX/cmWIXDirectoriesSourceWriter.h
  1020. CPack/WiX/cmWIXFeaturesSourceWriter.cxx
  1021. CPack/WiX/cmWIXFeaturesSourceWriter.h
  1022. CPack/WiX/cmWIXFilesSourceWriter.cxx
  1023. CPack/WiX/cmWIXFilesSourceWriter.h
  1024. CPack/WiX/cmWIXPatch.cxx
  1025. CPack/WiX/cmWIXPatch.h
  1026. CPack/WiX/cmWIXPatchParser.cxx
  1027. CPack/WiX/cmWIXPatchParser.h
  1028. CPack/WiX/cmWIXRichTextFormatWriter.cxx
  1029. CPack/WiX/cmWIXRichTextFormatWriter.h
  1030. CPack/WiX/cmWIXShortcut.cxx
  1031. CPack/WiX/cmWIXShortcut.h
  1032. CPack/WiX/cmWIXSourceWriter.cxx
  1033. CPack/WiX/cmWIXSourceWriter.h
  1034. )
  1035. endif()
  1036. if(APPLE)
  1037. set(CPACK_SRCS ${CPACK_SRCS}
  1038. CPack/cmCPackBundleGenerator.cxx
  1039. CPack/cmCPackDragNDropGenerator.cxx
  1040. CPack/cmCPackOSXX11Generator.cxx
  1041. CPack/cmCPackPKGGenerator.cxx
  1042. CPack/cmCPackPackageMakerGenerator.cxx
  1043. CPack/cmCPackProductBuildGenerator.cxx
  1044. )
  1045. endif()
  1046. # Build CPackLib
  1047. add_library(CPackLib ${CPACK_SRCS})
  1048. target_link_libraries(CPackLib CMakeLib)
  1049. if(APPLE)
  1050. # Some compilers produce errors in the CoreServices framework headers.
  1051. # Ideally such errors should be fixed by either the compiler vendor
  1052. # or the framework source, but we try to workaround it and build anyway.
  1053. # If it does not work, build with reduced functionality and warn.
  1054. check_include_file("CoreServices/CoreServices.h" HAVE_CoreServices)
  1055. if(HAVE_CoreServices)
  1056. set_property(SOURCE CPack/cmCPackDragNDropGenerator.cxx PROPERTY COMPILE_DEFINITIONS HAVE_CoreServices)
  1057. target_link_libraries(CPackLib "-framework CoreServices")
  1058. else()
  1059. message(WARNING "This compiler does not appear to support\n"
  1060. " #include <CoreServices/CoreServices.h>\n"
  1061. "Some CPack functionality may be limited.\n"
  1062. "See CMakeFiles/CMakeError.log for details of the failure.")
  1063. endif()
  1064. endif()
  1065. if(CYGWIN AND LibUUID_FOUND)
  1066. target_link_libraries(CPackLib ${LibUUID_LIBRARIES})
  1067. include_directories(CPackLib ${LibUUID_INCLUDE_DIRS})
  1068. set_property(SOURCE CPack/cmCPackGeneratorFactory.cxx PROPERTY COMPILE_DEFINITIONS HAVE_LIBUUID)
  1069. endif()
  1070. if(CPACK_ENABLE_FREEBSD_PKG AND FREEBSD_PKG_INCLUDE_DIRS AND FREEBSD_PKG_LIBRARIES)
  1071. target_link_libraries(CPackLib ${FREEBSD_PKG_LIBRARIES})
  1072. include_directories(${FREEBSD_PKG_INCLUDE_DIRS})
  1073. add_definitions(-DHAVE_FREEBSD_PKG)
  1074. endif()
  1075. if(APPLE)
  1076. add_executable(OSXScriptLauncher
  1077. CPack/OSXScriptLauncher.cxx)
  1078. target_link_libraries(OSXScriptLauncher cmsys)
  1079. target_link_libraries(OSXScriptLauncher "-framework CoreFoundation")
  1080. endif()
  1081. # Build CMake executable
  1082. add_executable(cmake cmakemain.cxx cmcmd.cxx cmcmd.h ${MANIFEST_FILE})
  1083. list(APPEND _tools cmake)
  1084. target_link_libraries(cmake CMakeLib)
  1085. add_library(CMakeServerLib
  1086. cmConnection.h cmConnection.cxx
  1087. cmFileMonitor.cxx cmFileMonitor.h
  1088. cmJsonObjectDictionary.h
  1089. cmJsonObjects.h
  1090. cmJsonObjects.cxx
  1091. cmPipeConnection.cxx cmPipeConnection.h
  1092. cmServer.cxx cmServer.h
  1093. cmServerConnection.cxx cmServerConnection.h
  1094. cmServerProtocol.cxx cmServerProtocol.h
  1095. )
  1096. target_link_libraries(CMakeServerLib CMakeLib)
  1097. target_link_libraries(cmake CMakeServerLib)
  1098. # Build CTest executable
  1099. add_executable(ctest ctest.cxx ${MANIFEST_FILE})
  1100. list(APPEND _tools ctest)
  1101. target_link_libraries(ctest CTestLib)
  1102. # Build CPack executable
  1103. add_executable(cpack CPack/cpack.cxx ${MANIFEST_FILE})
  1104. list(APPEND _tools cpack)
  1105. target_link_libraries(cpack CPackLib)
  1106. # Curses GUI
  1107. if(BUILD_CursesDialog)
  1108. add_subdirectory(CursesDialog)
  1109. endif()
  1110. # Qt GUI
  1111. option(BUILD_QtDialog "Build Qt dialog for CMake" FALSE)
  1112. if(BUILD_QtDialog)
  1113. add_subdirectory(QtDialog)
  1114. endif()
  1115. include (${CMake_BINARY_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
  1116. include (${CMake_SOURCE_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
  1117. if(WIN32)
  1118. # Compute the binary version that appears in the RC file. Version
  1119. # components in the RC file are 16-bit integers so we may have to
  1120. # split the patch component.
  1121. if(CMake_VERSION_PATCH MATCHES "^([0-9]+)([0-9][0-9][0-9][0-9])$")
  1122. set(CMake_RCVERSION_YEAR "${CMAKE_MATCH_1}")
  1123. set(CMake_RCVERSION_MONTH_DAY "${CMAKE_MATCH_2}")
  1124. string(REGEX REPLACE "^0+" "" CMake_RCVERSION_MONTH_DAY "${CMake_RCVERSION_MONTH_DAY}")
  1125. set(CMake_RCVERSION ${CMake_VERSION_MAJOR},${CMake_VERSION_MINOR},${CMake_RCVERSION_YEAR},${CMake_RCVERSION_MONTH_DAY})
  1126. unset(CMake_RCVERSION_MONTH_DAY)
  1127. unset(CMake_RCVERSION_YEAR)
  1128. else()
  1129. set(CMake_RCVERSION ${CMake_VERSION_MAJOR},${CMake_VERSION_MINOR},${CMake_VERSION_PATCH},0)
  1130. endif()
  1131. set(CMake_RCVERSION_STR ${CMake_VERSION})
  1132. # Add Windows executable version information.
  1133. configure_file("CMakeVersion.rc.in" "CMakeVersion.rc" @ONLY)
  1134. # We use a separate object library for this to work around a limitation of
  1135. # MinGW's windres tool with spaces in the path to the include directories.
  1136. add_library(CMakeVersion OBJECT "${CMAKE_CURRENT_BINARY_DIR}/CMakeVersion.rc")
  1137. set_property(TARGET CMakeVersion PROPERTY INCLUDE_DIRECTORIES "")
  1138. foreach(_tool ${_tools})
  1139. target_sources(${_tool} PRIVATE $<TARGET_OBJECTS:CMakeVersion>)
  1140. endforeach()
  1141. endif()
  1142. if(CMake_JOB_POOL_LINK_BIN)
  1143. set_property(TARGET ${_tools} PROPERTY JOB_POOL_LINK "link-bin")
  1144. set_property(GLOBAL APPEND PROPERTY JOB_POOLS "link-bin=${CMake_JOB_POOL_LINK_BIN}")
  1145. endif()
  1146. # Install tools
  1147. foreach(_tool ${_tools})
  1148. CMake_OPTIONAL_COMPONENT(${_tool})
  1149. install(TARGETS ${_tool} DESTINATION ${CMAKE_BIN_DIR} ${COMPONENT})
  1150. endforeach()
  1151. install(FILES cmCPluginAPI.h DESTINATION ${CMAKE_DATA_DIR}/include)
  1152. # Unset temporary variables
  1153. unset(_tools)