CMakeLists.txt 23 KB

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