CMakeLists.txt 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923
  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. cmRulePlaceholderExpander.cxx
  296. cmRulePlaceholderExpander.h
  297. cmLocalUnixMakefileGenerator3.cxx
  298. cmLocale.h
  299. ${MACH_SRCS}
  300. cmMakefile.cxx
  301. cmMakefile.h
  302. cmMakefileTargetGenerator.cxx
  303. cmMakefileExecutableTargetGenerator.cxx
  304. cmMakefileLibraryTargetGenerator.cxx
  305. cmMakefileUtilityTargetGenerator.cxx
  306. cmMessenger.cxx
  307. cmMessenger.h
  308. cmMSVC60LinkLineComputer.cxx
  309. cmMSVC60LinkLineComputer.h
  310. cmOSXBundleGenerator.cxx
  311. cmOSXBundleGenerator.h
  312. cmOutputConverter.cxx
  313. cmOutputConverter.h
  314. cmNewLineStyle.h
  315. cmNewLineStyle.cxx
  316. cmOrderDirectories.cxx
  317. cmOrderDirectories.h
  318. cmPolicies.h
  319. cmPolicies.cxx
  320. cmProcessTools.cxx
  321. cmProcessTools.h
  322. cmProperty.cxx
  323. cmProperty.h
  324. cmPropertyDefinition.cxx
  325. cmPropertyDefinition.h
  326. cmPropertyDefinitionMap.cxx
  327. cmPropertyDefinitionMap.h
  328. cmPropertyMap.cxx
  329. cmPropertyMap.h
  330. cmQtAutoGeneratorInitializer.cxx
  331. cmQtAutoGeneratorInitializer.h
  332. cmQtAutoGenerators.cxx
  333. cmQtAutoGenerators.h
  334. cmRST.cxx
  335. cmRST.h
  336. cmScriptGenerator.h
  337. cmScriptGenerator.cxx
  338. cmSourceFile.cxx
  339. cmSourceFile.h
  340. cmSourceFileLocation.cxx
  341. cmSourceFileLocation.h
  342. cmSourceGroup.cxx
  343. cmSourceGroup.h
  344. cmState.cxx
  345. cmState.h
  346. cmStateDirectory.cxx
  347. cmStateDirectory.h
  348. cmStateSnapshot.cxx
  349. cmStateSnapshot.h
  350. cmStateTypes.h
  351. cmSystemTools.cxx
  352. cmSystemTools.h
  353. cmTarget.cxx
  354. cmTarget.h
  355. cmTargetPropertyComputer.cxx
  356. cmTargetPropertyComputer.h
  357. cmTargetExport.h
  358. cmTest.cxx
  359. cmTest.h
  360. cmTestGenerator.cxx
  361. cmTestGenerator.h
  362. cmUuid.cxx
  363. cmVariableWatch.cxx
  364. cmVariableWatch.h
  365. cmVersion.cxx
  366. cmVersion.h
  367. cmXMLParser.cxx
  368. cmXMLParser.h
  369. cmXMLSafe.cxx
  370. cmXMLSafe.h
  371. cmXMLWriter.cxx
  372. cmXMLWriter.h
  373. cmake.cxx
  374. cmake.h
  375. cmAddCustomCommandCommand.cxx
  376. cmAddCustomCommandCommand.h
  377. cmAddCustomTargetCommand.cxx
  378. cmAddCustomTargetCommand.h
  379. cmAddDefinitionsCommand.cxx
  380. cmAddDefinitionsCommand.h
  381. cmAddDependenciesCommand.cxx
  382. cmAddDependenciesCommand.h
  383. cmAddExecutableCommand.cxx
  384. cmAddExecutableCommand.h
  385. cmAddLibraryCommand.cxx
  386. cmAddLibraryCommand.h
  387. cmAddSubDirectoryCommand.cxx
  388. cmAddSubDirectoryCommand.h
  389. cmAddTestCommand.cxx
  390. cmAddTestCommand.h
  391. cmBreakCommand.cxx
  392. cmBreakCommand.h
  393. cmBuildCommand.cxx
  394. cmBuildCommand.h
  395. cmCMakeMinimumRequired.cxx
  396. cmCMakeMinimumRequired.h
  397. cmCMakePolicyCommand.cxx
  398. cmCMakePolicyCommand.h
  399. cmCommandArgumentsHelper.cxx
  400. cmCommandArgumentsHelper.h
  401. cmConfigureFileCommand.cxx
  402. cmConfigureFileCommand.h
  403. cmContinueCommand.cxx
  404. cmContinueCommand.h
  405. cmCoreTryCompile.cxx
  406. cmCoreTryCompile.h
  407. cmCreateTestSourceList.cxx
  408. cmCreateTestSourceList.h
  409. cmDefinePropertyCommand.cxx
  410. cmDefinePropertyCommand.h
  411. cmElseCommand.cxx
  412. cmElseCommand.h
  413. cmEnableLanguageCommand.cxx
  414. cmEnableLanguageCommand.h
  415. cmEnableTestingCommand.cxx
  416. cmEnableTestingCommand.h
  417. cmEndForEachCommand.cxx
  418. cmEndForEachCommand.h
  419. cmEndFunctionCommand.cxx
  420. cmEndFunctionCommand.h
  421. cmEndIfCommand.cxx
  422. cmEndIfCommand.h
  423. cmEndMacroCommand.cxx
  424. cmEndMacroCommand.h
  425. cmEndWhileCommand.cxx
  426. cmEndWhileCommand.h
  427. cmExecProgramCommand.cxx
  428. cmExecProgramCommand.h
  429. cmExecuteProcessCommand.cxx
  430. cmExecuteProcessCommand.h
  431. cmFileCommand.cxx
  432. cmFileCommand.h
  433. cmFindBase.cxx
  434. cmFindBase.h
  435. cmFindCommon.cxx
  436. cmFindCommon.h
  437. cmFindFileCommand.cxx
  438. cmFindFileCommand.h
  439. cmFindLibraryCommand.cxx
  440. cmFindLibraryCommand.h
  441. cmFindPackageCommand.cxx
  442. cmFindPackageCommand.h
  443. cmFindPathCommand.cxx
  444. cmFindPathCommand.h
  445. cmFindProgramCommand.cxx
  446. cmFindProgramCommand.h
  447. cmForEachCommand.cxx
  448. cmForEachCommand.h
  449. cmFunctionCommand.cxx
  450. cmFunctionCommand.h
  451. cmParseArgumentsCommand.cxx
  452. cmParseArgumentsCommand.h
  453. cmPathLabel.cxx
  454. cmPathLabel.h
  455. cmSearchPath.cxx
  456. cmSearchPath.h
  457. cm_auto_ptr.hxx
  458. cm_get_date.h
  459. cm_get_date.c
  460. cm_sha2.h
  461. cm_sha2.c
  462. cm_utf8.h
  463. cm_utf8.c
  464. cm_codecvt.hxx
  465. cm_codecvt.cxx
  466. )
  467. set(COMMAND_INCLUDES "#include \"cmTargetPropCommandBase.h\"\n")
  468. list(APPEND SRCS cmTargetPropCommandBase.cxx cmTargetPropCommandBase.h)
  469. set(NEW_COMMANDS "")
  470. foreach(command_file
  471. cmAddCompileOptionsCommand
  472. cmAuxSourceDirectoryCommand
  473. cmBuildNameCommand
  474. cmCMakeHostSystemInformationCommand
  475. cmElseIfCommand
  476. cmExportCommand
  477. cmExportLibraryDependenciesCommand
  478. cmFLTKWrapUICommand
  479. cmIncludeExternalMSProjectCommand
  480. cmInstallProgramsCommand
  481. cmLinkLibrariesCommand
  482. cmLoadCacheCommand
  483. cmLoadCommandCommand
  484. cmOutputRequiredFilesCommand
  485. cmQTWrapCPPCommand
  486. cmQTWrapUICommand
  487. cmRemoveCommand
  488. cmRemoveDefinitionsCommand
  489. cmSourceGroupCommand
  490. cmSubdirDependsCommand
  491. cmTargetCompileDefinitionsCommand
  492. cmTargetCompileFeaturesCommand
  493. cmTargetCompileOptionsCommand
  494. cmTargetIncludeDirectoriesCommand
  495. cmTargetSourcesCommand
  496. cmUseMangledMesaCommand
  497. cmUtilitySourceCommand
  498. cmVariableRequiresCommand
  499. cmVariableWatchCommand
  500. cmWriteFileCommand
  501. )
  502. set(COMMAND_INCLUDES "${COMMAND_INCLUDES}#include \"${command_file}.h\"\n")
  503. set(NEW_COMMANDS "${NEW_COMMANDS}commands.push_back(new ${command_file});\n")
  504. list(APPEND SRCS ${command_file}.cxx ${command_file}.h)
  505. endforeach()
  506. configure_file(cmCommands.cxx.in ${CMAKE_CURRENT_BINARY_DIR}/cmCommands.cxx @ONLY)
  507. # Kdevelop only works on UNIX and not windows
  508. if(UNIX)
  509. set(SRCS ${SRCS} cmGlobalKdevelopGenerator.cxx)
  510. endif()
  511. # Xcode only works on Apple
  512. if(APPLE)
  513. set(SRCS ${SRCS}
  514. cmXCodeObject.cxx
  515. cmXCode21Object.cxx
  516. cmGlobalXCodeGenerator.cxx
  517. cmGlobalXCodeGenerator.h
  518. cmLocalXCodeGenerator.cxx
  519. cmLocalXCodeGenerator.h)
  520. endif()
  521. if (WIN32)
  522. set(SRCS ${SRCS}
  523. cmCallVisualStudioMacro.cxx
  524. cmCallVisualStudioMacro.h
  525. bindexplib.cxx
  526. )
  527. if(NOT UNIX)
  528. set(SRCS ${SRCS}
  529. cmGlobalBorlandMakefileGenerator.cxx
  530. cmGlobalBorlandMakefileGenerator.h
  531. cmGlobalMSYSMakefileGenerator.cxx
  532. cmGlobalMinGWMakefileGenerator.cxx
  533. cmGlobalNMakeMakefileGenerator.cxx
  534. cmGlobalNMakeMakefileGenerator.h
  535. cmGlobalJOMMakefileGenerator.cxx
  536. cmGlobalJOMMakefileGenerator.h
  537. cmGlobalVisualStudio71Generator.cxx
  538. cmGlobalVisualStudio71Generator.h
  539. cmGlobalVisualStudio7Generator.cxx
  540. cmGlobalVisualStudio7Generator.h
  541. cmGlobalVisualStudio8Generator.cxx
  542. cmGlobalVisualStudio8Generator.h
  543. cmGlobalVisualStudio9Generator.cxx
  544. cmGlobalVisualStudio9Generator.h
  545. cmVisualStudioGeneratorOptions.h
  546. cmVisualStudioGeneratorOptions.cxx
  547. cmVisualStudio10TargetGenerator.h
  548. cmVisualStudio10TargetGenerator.cxx
  549. cmLocalVisualStudio10Generator.cxx
  550. cmLocalVisualStudio10Generator.h
  551. cmGlobalVisualStudio10Generator.h
  552. cmGlobalVisualStudio10Generator.cxx
  553. cmGlobalVisualStudio11Generator.h
  554. cmGlobalVisualStudio11Generator.cxx
  555. cmGlobalVisualStudio12Generator.h
  556. cmGlobalVisualStudio12Generator.cxx
  557. cmGlobalVisualStudio14Generator.h
  558. cmGlobalVisualStudio14Generator.cxx
  559. cmGlobalVisualStudio15Generator.h
  560. cmGlobalVisualStudio15Generator.cxx
  561. cmGlobalVisualStudioGenerator.cxx
  562. cmGlobalVisualStudioGenerator.h
  563. cmIDEFlagTable.h
  564. cmIDEOptions.cxx
  565. cmIDEOptions.h
  566. cmLocalVisualStudio7Generator.cxx
  567. cmLocalVisualStudio7Generator.h
  568. cmLocalVisualStudioGenerator.cxx
  569. cmLocalVisualStudioGenerator.h
  570. cmVisualStudioSlnData.h
  571. cmVisualStudioSlnData.cxx
  572. cmVisualStudioSlnParser.h
  573. cmVisualStudioSlnParser.cxx
  574. cmVisualStudioWCEPlatformParser.h
  575. cmVisualStudioWCEPlatformParser.cxx
  576. cmGlobalGhsMultiGenerator.cxx
  577. cmGlobalGhsMultiGenerator.h
  578. cmLocalGhsMultiGenerator.cxx
  579. cmLocalGhsMultiGenerator.h
  580. cmGhsMultiTargetGenerator.cxx
  581. cmGhsMultiTargetGenerator.h
  582. cmGhsMultiGpj.cxx
  583. cmGhsMultiGpj.h
  584. )
  585. # Add a manifest file to executables on Windows to allow for
  586. # GetVersion to work properly on Windows 8 and above.
  587. set(MANIFEST_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake.version.manifest)
  588. endif()
  589. endif ()
  590. # Watcom support
  591. if(WIN32 OR CMAKE_SYSTEM_NAME STREQUAL "Linux")
  592. set_property(SOURCE cmake.cxx APPEND PROPERTY COMPILE_DEFINITIONS CMAKE_USE_WMAKE)
  593. list(APPEND SRCS
  594. cmGlobalWatcomWMakeGenerator.cxx
  595. cmGlobalWatcomWMakeGenerator.h
  596. )
  597. endif()
  598. # Ninja support
  599. set(SRCS ${SRCS}
  600. cmGlobalNinjaGenerator.cxx
  601. cmGlobalNinjaGenerator.h
  602. cmNinjaTypes.h
  603. cmLocalNinjaGenerator.cxx
  604. cmLocalNinjaGenerator.h
  605. cmNinjaTargetGenerator.cxx
  606. cmNinjaTargetGenerator.h
  607. cmNinjaNormalTargetGenerator.cxx
  608. cmNinjaNormalTargetGenerator.h
  609. cmNinjaUtilityTargetGenerator.cxx
  610. cmNinjaUtilityTargetGenerator.h
  611. cmNinjaLinkLineComputer.cxx
  612. cmNinjaLinkLineComputer.h
  613. )
  614. # Temporary variable for tools targets
  615. set(_tools)
  616. if(WIN32 AND NOT CYGWIN)
  617. set_source_files_properties(cmcldeps.cxx PROPERTIES COMPILE_DEFINITIONS _WIN32_WINNT=0x0501)
  618. add_executable(cmcldeps cmcldeps.cxx ${MANIFEST_FILE})
  619. list(APPEND _tools cmcldeps)
  620. target_link_libraries(cmcldeps CMakeLib)
  621. endif()
  622. foreach(v CURL_CA_BUNDLE CURL_CA_PATH)
  623. if(${v})
  624. set_property(SOURCE cmCurl.cxx APPEND PROPERTY COMPILE_DEFINITIONS ${v}="${${v}}")
  625. endif()
  626. endforeach()
  627. foreach(check
  628. STAT_HAS_ST_MTIM
  629. STAT_HAS_ST_MTIMESPEC
  630. )
  631. if(KWSYS_CXX_${check}_COMPILED) # abuse KWSys check cache entry
  632. set(CMake_${check} 1)
  633. else()
  634. set(CMake_${check} 0)
  635. endif()
  636. set_property(SOURCE cmFileTimeComparison.cxx APPEND PROPERTY
  637. COMPILE_DEFINITIONS CMake_${check}=${CMake_${check}})
  638. endforeach()
  639. # create a library used by the command line and the GUI
  640. add_library(CMakeLib ${SRCS})
  641. target_link_libraries(CMakeLib cmsys
  642. ${CMAKE_EXPAT_LIBRARIES} ${CMAKE_ZLIB_LIBRARIES}
  643. ${CMAKE_TAR_LIBRARIES} ${CMAKE_COMPRESS_LIBRARIES}
  644. ${CMAKE_CURL_LIBRARIES}
  645. ${CMAKE_JSONCPP_LIBRARIES}
  646. ${CMAKE_LIBUV_LIBRARIES}
  647. ${CMake_KWIML_LIBRARIES}
  648. )
  649. # On Apple we need CoreFoundation
  650. if(APPLE)
  651. target_link_libraries(CMakeLib "-framework CoreFoundation")
  652. endif()
  653. if(WIN32 AND NOT UNIX)
  654. # We need the rpcrt4 library on Windows.
  655. # We need the crypt32 library on Windows for crypto/cert APIs.
  656. target_link_libraries(CMakeLib rpcrt4 crypt32)
  657. endif()
  658. #
  659. # CTestLib
  660. #
  661. include_directories(
  662. "${CMake_SOURCE_DIR}/Source/CTest"
  663. ${CMAKE_XMLRPC_INCLUDES}
  664. ${CMAKE_CURL_INCLUDES}
  665. )
  666. #
  667. # Sources for CTestLib
  668. #
  669. set(CTEST_SRCS cmCTest.cxx
  670. CTest/cmProcess.cxx
  671. CTest/cmCTestBatchTestHandler.cxx
  672. CTest/cmCTestBuildAndTestHandler.cxx
  673. CTest/cmCTestBuildCommand.cxx
  674. CTest/cmCTestBuildHandler.cxx
  675. CTest/cmCTestConfigureCommand.cxx
  676. CTest/cmCTestConfigureHandler.cxx
  677. CTest/cmCTestCoverageCommand.cxx
  678. CTest/cmCTestCoverageHandler.cxx
  679. CTest/cmCTestCurl.cxx
  680. CTest/cmParseMumpsCoverage.cxx
  681. CTest/cmParseCacheCoverage.cxx
  682. CTest/cmParseGTMCoverage.cxx
  683. CTest/cmParseJacocoCoverage.cxx
  684. CTest/cmParseBlanketJSCoverage.cxx
  685. CTest/cmParsePHPCoverage.cxx
  686. CTest/cmParseCoberturaCoverage.cxx
  687. CTest/cmParseDelphiCoverage.cxx
  688. CTest/cmCTestEmptyBinaryDirectoryCommand.cxx
  689. CTest/cmCTestGenericHandler.cxx
  690. CTest/cmCTestHandlerCommand.cxx
  691. CTest/cmCTestLaunch.cxx
  692. CTest/cmCTestMemCheckCommand.cxx
  693. CTest/cmCTestMemCheckHandler.cxx
  694. CTest/cmCTestMultiProcessHandler.cxx
  695. CTest/cmCTestReadCustomFilesCommand.cxx
  696. CTest/cmCTestRunScriptCommand.cxx
  697. CTest/cmCTestRunTest.cxx
  698. CTest/cmCTestScriptHandler.cxx
  699. CTest/cmCTestSleepCommand.cxx
  700. CTest/cmCTestStartCommand.cxx
  701. CTest/cmCTestSubmitCommand.cxx
  702. CTest/cmCTestSubmitHandler.cxx
  703. CTest/cmCTestTestCommand.cxx
  704. CTest/cmCTestTestHandler.cxx
  705. CTest/cmCTestUpdateCommand.cxx
  706. CTest/cmCTestUpdateHandler.cxx
  707. CTest/cmCTestUploadCommand.cxx
  708. CTest/cmCTestUploadHandler.cxx
  709. CTest/cmCTestVC.cxx
  710. CTest/cmCTestVC.h
  711. CTest/cmCTestGlobalVC.cxx
  712. CTest/cmCTestGlobalVC.h
  713. CTest/cmCTestCVS.cxx
  714. CTest/cmCTestCVS.h
  715. CTest/cmCTestSVN.cxx
  716. CTest/cmCTestSVN.h
  717. CTest/cmCTestBZR.cxx
  718. CTest/cmCTestBZR.h
  719. CTest/cmCTestGIT.cxx
  720. CTest/cmCTestGIT.h
  721. CTest/cmCTestHG.cxx
  722. CTest/cmCTestHG.h
  723. CTest/cmCTestP4.cxx
  724. CTest/cmCTestP4.h
  725. )
  726. # Build CTestLib
  727. add_library(CTestLib ${CTEST_SRCS})
  728. target_link_libraries(CTestLib CMakeLib ${CMAKE_CURL_LIBRARIES} ${CMAKE_XMLRPC_LIBRARIES})
  729. #
  730. # Sources for CPack
  731. #
  732. set(CPACK_SRCS
  733. CPack/cmCPackArchiveGenerator.cxx
  734. CPack/cmCPackComponentGroup.cxx
  735. CPack/cmCPackGeneratorFactory.cxx
  736. CPack/cmCPackGenerator.cxx
  737. CPack/cmCPackLog.cxx
  738. CPack/cmCPackNSISGenerator.cxx
  739. CPack/IFW/cmCPackIFWPackage.cxx
  740. CPack/IFW/cmCPackIFWInstaller.cxx
  741. CPack/IFW/cmCPackIFWRepository.cxx
  742. CPack/IFW/cmCPackIFWGenerator.cxx
  743. CPack/cmCPackSTGZGenerator.cxx
  744. CPack/cmCPackTGZGenerator.cxx
  745. CPack/cmCPackTXZGenerator.cxx
  746. CPack/cmCPackTarBZip2Generator.cxx
  747. CPack/cmCPackTarCompressGenerator.cxx
  748. CPack/cmCPackZIPGenerator.cxx
  749. CPack/cmCPack7zGenerator.cxx
  750. )
  751. if(CYGWIN)
  752. set(CPACK_SRCS ${CPACK_SRCS}
  753. CPack/cmCPackCygwinBinaryGenerator.cxx
  754. CPack/cmCPackCygwinSourceGenerator.cxx
  755. )
  756. endif()
  757. if(UNIX)
  758. set(CPACK_SRCS ${CPACK_SRCS}
  759. CPack/cmCPackDebGenerator.cxx
  760. CPack/cmCPackRPMGenerator.cxx
  761. )
  762. endif()
  763. if(WIN32)
  764. set(CPACK_SRCS ${CPACK_SRCS}
  765. CPack/WiX/cmCPackWIXGenerator.cxx
  766. CPack/WiX/cmCPackWIXGenerator.h
  767. CPack/WiX/cmWIXAccessControlList.cxx
  768. CPack/WiX/cmWIXAccessControlList.h
  769. CPack/WiX/cmWIXDirectoriesSourceWriter.cxx
  770. CPack/WiX/cmWIXDirectoriesSourceWriter.h
  771. CPack/WiX/cmWIXFeaturesSourceWriter.cxx
  772. CPack/WiX/cmWIXFeaturesSourceWriter.h
  773. CPack/WiX/cmWIXFilesSourceWriter.cxx
  774. CPack/WiX/cmWIXFilesSourceWriter.h
  775. CPack/WiX/cmWIXPatch.cxx
  776. CPack/WiX/cmWIXPatch.h
  777. CPack/WiX/cmWIXPatchParser.cxx
  778. CPack/WiX/cmWIXPatchParser.h
  779. CPack/WiX/cmWIXRichTextFormatWriter.cxx
  780. CPack/WiX/cmWIXRichTextFormatWriter.h
  781. CPack/WiX/cmWIXShortcut.cxx
  782. CPack/WiX/cmWIXShortcut.h
  783. CPack/WiX/cmWIXSourceWriter.cxx
  784. CPack/WiX/cmWIXSourceWriter.h
  785. )
  786. endif()
  787. if(APPLE)
  788. set(CPACK_SRCS ${CPACK_SRCS}
  789. CPack/cmCPackBundleGenerator.cxx
  790. CPack/cmCPackDragNDropGenerator.cxx
  791. CPack/cmCPackOSXX11Generator.cxx
  792. CPack/cmCPackPKGGenerator.cxx
  793. CPack/cmCPackPackageMakerGenerator.cxx
  794. CPack/cmCPackProductBuildGenerator.cxx
  795. )
  796. endif()
  797. # Build CPackLib
  798. add_library(CPackLib ${CPACK_SRCS})
  799. target_link_libraries(CPackLib CMakeLib)
  800. if(APPLE)
  801. # Some compilers produce errors in the CoreServices framework headers.
  802. # Ideally such errors should be fixed by either the compiler vendor
  803. # or the framework source, but we try to workaround it and build anyway.
  804. # If it does not work, build with reduced functionality and warn.
  805. check_include_file("CoreServices/CoreServices.h" HAVE_CoreServices)
  806. if(HAVE_CoreServices)
  807. set_property(SOURCE CPack/cmCPackDragNDropGenerator.cxx PROPERTY COMPILE_DEFINITIONS HAVE_CoreServices)
  808. target_link_libraries(CPackLib "-framework CoreServices")
  809. else()
  810. message(WARNING "This compiler does not appear to support\n"
  811. " #include <CoreServices/CoreServices.h>\n"
  812. "Some CPack functionality may be limited.\n"
  813. "See CMakeFiles/CMakeError.log for details of the failure.")
  814. endif()
  815. endif()
  816. if(APPLE)
  817. add_executable(cmakexbuild cmakexbuild.cxx)
  818. list(APPEND _tools cmakexbuild)
  819. target_link_libraries(cmakexbuild CMakeLib)
  820. add_executable(OSXScriptLauncher
  821. CPack/OSXScriptLauncher.cxx)
  822. target_link_libraries(OSXScriptLauncher cmsys)
  823. target_link_libraries(OSXScriptLauncher "-framework CoreFoundation")
  824. endif()
  825. # Build CMake executable
  826. add_executable(cmake cmakemain.cxx cmcmd.cxx cmcmd.h ${MANIFEST_FILE})
  827. list(APPEND _tools cmake)
  828. target_link_libraries(cmake CMakeLib)
  829. if(CMake_ENABLE_SERVER_MODE)
  830. add_library(CMakeServerLib
  831. cmFileMonitor.cxx cmFileMonitor.h
  832. cmServer.cxx cmServer.h
  833. cmServerConnection.cxx cmServerConnection.h
  834. cmServerProtocol.cxx cmServerProtocol.h
  835. )
  836. target_link_libraries(CMakeServerLib CMakeLib)
  837. set_property(SOURCE cmcmd.cxx APPEND PROPERTY COMPILE_DEFINITIONS HAVE_SERVER_MODE=1)
  838. target_link_libraries(cmake CMakeServerLib)
  839. endif()
  840. # Build CTest executable
  841. add_executable(ctest ctest.cxx ${MANIFEST_FILE})
  842. list(APPEND _tools ctest)
  843. target_link_libraries(ctest CTestLib)
  844. # Build CPack executable
  845. add_executable(cpack CPack/cpack.cxx ${MANIFEST_FILE})
  846. list(APPEND _tools cpack)
  847. target_link_libraries(cpack CPackLib)
  848. # Curses GUI
  849. if(BUILD_CursesDialog)
  850. include(${CMake_SOURCE_DIR}/Source/CursesDialog/CMakeLists.txt)
  851. endif()
  852. # Qt GUI
  853. option(BUILD_QtDialog "Build Qt dialog for CMake" FALSE)
  854. if(BUILD_QtDialog)
  855. add_subdirectory(QtDialog)
  856. endif()
  857. include (${CMake_BINARY_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
  858. include (${CMake_SOURCE_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
  859. # Install tools
  860. foreach(_tool ${_tools})
  861. CMake_OPTIONAL_COMPONENT(${_tool})
  862. install(TARGETS ${_tool} DESTINATION ${CMAKE_BIN_DIR} ${COMPONENT})
  863. endforeach()
  864. install(FILES cmCPluginAPI.h DESTINATION ${CMAKE_DATA_DIR}/include)
  865. # Unset temporary variables
  866. unset(_tools)