CMakeLists.txt 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502
  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. CHECK_INCLUDE_FILE("elf.h" HAVE_ELF_H)
  15. IF(HAVE_ELF_H)
  16. SET(CMAKE_USE_ELF_PARSER 1)
  17. ELSE(HAVE_ELF_H)
  18. SET(CMAKE_USE_ELF_PARSER)
  19. ENDIF(HAVE_ELF_H)
  20. # configure the .h file
  21. CONFIGURE_FILE(
  22. "${CMake_SOURCE_DIR}/Source/cmConfigure.cmake.h.in"
  23. "${CMake_BINARY_DIR}/Source/cmConfigure.h"
  24. )
  25. CONFIGURE_FILE(
  26. "${CMake_SOURCE_DIR}/Source/cmVersionConfig.h.in"
  27. "${CMake_BINARY_DIR}/Source/cmVersionConfig.h"
  28. )
  29. CONFIGURE_FILE(
  30. "${CMake_SOURCE_DIR}/Source/CPack/cmCPackConfigure.h.in"
  31. "${CMake_BINARY_DIR}/Source/CPack/cmCPackConfigure.h"
  32. )
  33. # add the include path to find the .h
  34. INCLUDE_DIRECTORIES(
  35. "${CMake_BINARY_DIR}/Source"
  36. "${CMake_SOURCE_DIR}/Source"
  37. ${CMAKE_ZLIB_INCLUDES}
  38. ${CMAKE_EXPAT_INCLUDES}
  39. ${CMAKE_TAR_INCLUDES}
  40. ${CMAKE_COMPRESS_INCLUDES}
  41. )
  42. # let cmake know it is supposed to use it
  43. ADD_DEFINITIONS(-DCMAKE_BUILD_WITH_CMAKE)
  44. OPTION(CMAKE_REGENERATE_YACCLEX
  45. "Regenerate YACC and LEXX files" OFF)
  46. MARK_AS_ADVANCED(CMAKE_REGENERATE_YACCLEX)
  47. IF(CMAKE_REGENERATE_YACCLEX)
  48. SET(parsersLexers cmDependsFortran cmCommandArgument cmExpr)
  49. FIND_PROGRAM(YACC_EXECUTABLE
  50. NAMES yacc bison
  51. PATHS /usr/bin
  52. DOC "Yacc or Bison executable")
  53. FIND_PROGRAM(FLEX_EXECUTABLE
  54. NAMES flex
  55. PATHS /usr/bin
  56. DOC "Flex executable")
  57. MARK_AS_ADVANCED(YACC_EXECUTABLE FLEX_EXECUTABLE)
  58. IF(YACC_EXECUTABLE)
  59. SET(BISON_FLAGS)
  60. IF(YACC_EXECUTABLE MATCHES "bison")
  61. SET(BISON_FLAGS "--yacc")
  62. ENDIF(YACC_EXECUTABLE MATCHES "bison")
  63. SET(yacc_files)
  64. FOREACH(name ${parsersLexers})
  65. SET(src "${CMAKE_CURRENT_SOURCE_DIR}/${name}Parser.y")
  66. SET(dst "${CMAKE_CURRENT_BINARY_DIR}/${name}Parser.cxx")
  67. SET(hdr "${CMAKE_CURRENT_BINARY_DIR}/${name}ParserTokens.h")
  68. ADD_CUSTOM_COMMAND(
  69. OUTPUT "${dst}"
  70. DEPENDS "${src}"
  71. COMMAND
  72. ${YACC_EXECUTABLE}
  73. --name-prefix=${name}_yy --defines=${hdr} -o${dst} ${src}
  74. )
  75. SET(yacc_files ${yacc_files} "${dst}")
  76. ENDFOREACH(name)
  77. ADD_CUSTOM_TARGET(RerunYacc DEPENDS ${yacc_files})
  78. ENDIF(YACC_EXECUTABLE)
  79. IF(FLEX_EXECUTABLE)
  80. SET(lex_files)
  81. FOREACH(name ${parsersLexers})
  82. SET(src "${CMAKE_CURRENT_SOURCE_DIR}/${name}Lexer.in.l")
  83. SET(dst "${CMAKE_CURRENT_BINARY_DIR}/${name}Lexer.cxx")
  84. SET(hdr "${CMAKE_CURRENT_BINARY_DIR}/${name}Lexer.h")
  85. ADD_CUSTOM_COMMAND(
  86. OUTPUT "${dst}"
  87. DEPENDS "${src}"
  88. COMMAND
  89. ${FLEX_EXECUTABLE}
  90. --prefix=${name}_yy --header-file=${hdr} -o${dst} ${src}
  91. )
  92. SET(lex_files ${lex_files} "${dst}")
  93. ENDFOREACH(name)
  94. ADD_CUSTOM_TARGET(RerunLex DEPENDS ${lex_files})
  95. ENDIF(FLEX_EXECUTABLE)
  96. ENDIF(CMAKE_REGENERATE_YACCLEX)
  97. # Check if we can build the ELF parser.
  98. IF(CMAKE_USE_ELF_PARSER)
  99. SET(ELF_SRCS cmELF.h cmELF.cxx)
  100. ENDIF(CMAKE_USE_ELF_PARSER)
  101. #
  102. # Sources for CMakeLib
  103. #
  104. SET(SRCS
  105. cmBootstrapCommands.cxx
  106. cmCacheManager.cxx
  107. cmCacheManager.h
  108. cmCommands.cxx
  109. cmCommands.h
  110. cmCommandArgumentLexer.cxx
  111. cmCommandArgumentParser.cxx
  112. cmCommandArgumentParserHelper.cxx
  113. cmComputeComponentGraph.cxx
  114. cmComputeComponentGraph.h
  115. cmComputeLinkDepends.cxx
  116. cmComputeLinkDepends.h
  117. cmComputeLinkInformation.cxx
  118. cmComputeLinkInformation.h
  119. cmComputeTargetDepends.h
  120. cmComputeTargetDepends.cxx
  121. cmCustomCommand.cxx
  122. cmCustomCommand.h
  123. cmDefinitions.cxx
  124. cmDefinitions.h
  125. cmDepends.cxx
  126. cmDepends.h
  127. cmDependsC.cxx
  128. cmDependsC.h
  129. cmDependsFortran.cxx
  130. cmDependsFortran.h
  131. cmDependsFortranLexer.cxx
  132. cmDependsFortranParser.cxx
  133. cmDependsFortranParser.h
  134. cmDependsJava.cxx
  135. cmDependsJava.h
  136. cmDependsJavaLexer.cxx
  137. cmDependsJavaParser.cxx
  138. cmDependsJavaParserHelper.cxx
  139. cmDependsJavaParserHelper.h
  140. cmDocumentation.cxx
  141. cmDocumentationFormatter.cxx
  142. cmDocumentationFormatterHTML.cxx
  143. cmDocumentationFormatterDocbook.cxx
  144. cmDocumentationFormatterMan.cxx
  145. cmDocumentationFormatterText.cxx
  146. cmDocumentationFormatterUsage.cxx
  147. cmDocumentationSection.cxx
  148. cmDocumentVariables.cxx
  149. cmDynamicLoader.cxx
  150. cmDynamicLoader.h
  151. ${ELF_SRCS}
  152. cmExprLexer.cxx
  153. cmExprParser.cxx
  154. cmExprParserHelper.cxx
  155. cmExportBuildFileGenerator.h
  156. cmExportBuildFileGenerator.cxx
  157. cmExportFileGenerator.h
  158. cmExportFileGenerator.cxx
  159. cmExportInstallFileGenerator.h
  160. cmExportInstallFileGenerator.cxx
  161. cmExtraEclipseCDT4Generator.cxx
  162. cmExtraEclipseCDT4Generator.h
  163. cmFileTimeComparison.cxx
  164. cmFileTimeComparison.h
  165. cmGeneratedFileStream.cxx
  166. cmGeneratorExpression.cxx
  167. cmGeneratorExpression.h
  168. cmGlobalGenerator.cxx
  169. cmGlobalGenerator.h
  170. cmGlobalUnixMakefileGenerator3.cxx
  171. cmGlobalUnixMakefileGenerator3.h
  172. cmGraphAdjacencyList.h
  173. cmInstallGenerator.h
  174. cmInstallGenerator.cxx
  175. cmInstallExportGenerator.cxx
  176. cmInstallFilesGenerator.h
  177. cmInstallFilesGenerator.cxx
  178. cmInstallScriptGenerator.h
  179. cmInstallScriptGenerator.cxx
  180. cmInstallTargetGenerator.h
  181. cmInstallTargetGenerator.cxx
  182. cmInstallDirectoryGenerator.h
  183. cmInstallDirectoryGenerator.cxx
  184. cmListFileCache.cxx
  185. cmListFileCache.h
  186. cmListFileLexer.c
  187. cmLocalGenerator.cxx
  188. cmLocalGenerator.h
  189. cmLocalUnixMakefileGenerator3.cxx
  190. cmMakeDepend.cxx
  191. cmMakeDepend.h
  192. cmMakefile.cxx
  193. cmMakefile.h
  194. cmMakefileTargetGenerator.cxx
  195. cmMakefileExecutableTargetGenerator.cxx
  196. cmMakefileLibraryTargetGenerator.cxx
  197. cmMakefileUtilityTargetGenerator.cxx
  198. cmOrderDirectories.cxx
  199. cmOrderDirectories.h
  200. cmPolicies.h
  201. cmPolicies.cxx
  202. cmProcessTools.cxx
  203. cmProcessTools.h
  204. cmProperty.cxx
  205. cmProperty.h
  206. cmPropertyDefinition.cxx
  207. cmPropertyDefinition.h
  208. cmPropertyDefinitionMap.cxx
  209. cmPropertyDefinitionMap.h
  210. cmPropertyMap.cxx
  211. cmPropertyMap.h
  212. cmScriptGenerator.h
  213. cmScriptGenerator.cxx
  214. cmSourceFile.cxx
  215. cmSourceFile.h
  216. cmSourceFileLocation.cxx
  217. cmSourceFileLocation.h
  218. cmSourceGroup.cxx
  219. cmSourceGroup.h
  220. cmSystemTools.cxx
  221. cmSystemTools.h
  222. cmTarget.cxx
  223. cmTarget.h
  224. cmTest.cxx
  225. cmTest.h
  226. cmTestGenerator.cxx
  227. cmTestGenerator.h
  228. cmVariableWatch.cxx
  229. cmVariableWatch.h
  230. cmVersion.cxx
  231. cmVersion.h
  232. cmXMLParser.cxx
  233. cmXMLParser.h
  234. cmXMLSafe.cxx
  235. cmXMLSafe.h
  236. cmake.cxx
  237. cmake.h
  238. cmakewizard.cxx
  239. cmakewizard.h
  240. )
  241. # Kdevelop only works on UNIX and not windows
  242. IF(UNIX)
  243. SET(SRCS ${SRCS} cmGlobalKdevelopGenerator.cxx)
  244. ENDIF(UNIX)
  245. IF(NOT CYGWIN)
  246. SET(SRCS ${SRCS} cmExtraCodeBlocksGenerator.cxx)
  247. ENDIF(NOT CYGWIN)
  248. # XCode only works on apple
  249. IF(APPLE)
  250. SET(SRCS ${SRCS}
  251. cmXCodeObject.cxx
  252. cmXCode21Object.cxx
  253. cmGlobalXCodeGenerator.cxx
  254. cmGlobalXCodeGenerator.h
  255. cmLocalXCodeGenerator.cxx
  256. cmLocalXCodeGenerator.h)
  257. ENDIF(APPLE)
  258. IF (WIN32)
  259. SET(SRCS ${SRCS}
  260. cmCallVisualStudioMacro.cxx
  261. cmCallVisualStudioMacro.h
  262. )
  263. IF(NOT UNIX)
  264. SET(SRCS ${SRCS}
  265. cmGlobalBorlandMakefileGenerator.cxx
  266. cmGlobalBorlandMakefileGenerator.h
  267. cmGlobalMSYSMakefileGenerator.cxx
  268. cmGlobalMinGWMakefileGenerator.cxx
  269. cmGlobalNMakeMakefileGenerator.cxx
  270. cmGlobalNMakeMakefileGenerator.h
  271. cmGlobalJOMMakefileGenerator.cxx
  272. cmGlobalJOMMakefileGenerator.h
  273. cmGlobalVisualStudio6Generator.cxx
  274. cmGlobalVisualStudio6Generator.h
  275. cmGlobalVisualStudio71Generator.cxx
  276. cmGlobalVisualStudio71Generator.h
  277. cmGlobalVisualStudio7Generator.cxx
  278. cmGlobalVisualStudio7Generator.h
  279. cmGlobalVisualStudio8Generator.cxx
  280. cmGlobalVisualStudio8Generator.h
  281. cmGlobalVisualStudio9Generator.cxx
  282. cmGlobalVisualStudio9Generator.h
  283. cmGlobalVisualStudio8Win64Generator.cxx
  284. cmGlobalVisualStudio8Win64Generator.h
  285. cmGlobalVisualStudio9Win64Generator.cxx
  286. cmGlobalVisualStudio9Win64Generator.h
  287. cmVisualStudioGeneratorOptions.h
  288. cmVisualStudioGeneratorOptions.cxx
  289. cmVisualStudio10TargetGenerator.h
  290. cmVisualStudio10TargetGenerator.cxx
  291. cmLocalVisualStudio10Generator.cxx
  292. cmLocalVisualStudio10Generator.h
  293. cmGlobalVisualStudio10Generator.h
  294. cmGlobalVisualStudio10Generator.cxx
  295. cmGlobalVisualStudio10Win64Generator.h
  296. cmGlobalVisualStudio10Win64Generator.cxx
  297. cmGlobalVisualStudioGenerator.cxx
  298. cmGlobalVisualStudioGenerator.h
  299. cmGlobalWatcomWMakeGenerator.cxx
  300. cmIDEFlagTable.h
  301. cmIDEOptions.cxx
  302. cmIDEOptions.h
  303. cmLocalVisualStudio6Generator.cxx
  304. cmLocalVisualStudio6Generator.h
  305. cmLocalVisualStudio7Generator.cxx
  306. cmLocalVisualStudio7Generator.h
  307. cmLocalVisualStudioGenerator.cxx
  308. cmLocalVisualStudioGenerator.h
  309. cmWin32ProcessExecution.cxx
  310. cmWin32ProcessExecution.h
  311. )
  312. ENDIF(NOT UNIX)
  313. ENDIF (WIN32)
  314. # create a library used by the command line and the GUI
  315. ADD_LIBRARY(CMakeLib ${SRCS})
  316. TARGET_LINK_LIBRARIES(CMakeLib cmsys
  317. ${CMAKE_EXPAT_LIBRARIES} ${CMAKE_ZLIB_LIBRARIES}
  318. ${CMAKE_TAR_LIBRARIES} ${CMAKE_COMPRESS_LIBRARIES}
  319. ${CMAKE_CURL_LIBRARIES} )
  320. # On Apple we need Carbon
  321. IF(APPLE)
  322. TARGET_LINK_LIBRARIES(CMakeLib "-framework CoreFoundation")
  323. ENDIF(APPLE)
  324. # On some platforms we need the rpcrt4 library for the VS 7 generators.
  325. IF(CMAKE_BUILD_ON_VISUAL_STUDIO OR MINGW)
  326. TARGET_LINK_LIBRARIES(CMakeLib rpcrt4)
  327. ENDIF(CMAKE_BUILD_ON_VISUAL_STUDIO OR MINGW)
  328. #
  329. # CTestLib
  330. #
  331. INCLUDE_DIRECTORIES(
  332. "${CMAKE_SOURCE_DIR}/Source/CTest"
  333. ${CMAKE_XMLRPC_INCLUDES}
  334. ${CMAKE_CURL_INCLUDES}
  335. )
  336. #
  337. # Sources for CTestLib
  338. #
  339. SET(CTEST_SRCS cmCTest.cxx
  340. CTest/cmProcess.cxx
  341. CTest/cmCTestBatchTestHandler.cxx
  342. CTest/cmCTestBuildAndTestHandler.cxx
  343. CTest/cmCTestBuildCommand.cxx
  344. CTest/cmCTestBuildHandler.cxx
  345. CTest/cmCTestConfigureCommand.cxx
  346. CTest/cmCTestConfigureHandler.cxx
  347. CTest/cmCTestCoverageCommand.cxx
  348. CTest/cmCTestCoverageHandler.cxx
  349. CTest/cmCTestEmptyBinaryDirectoryCommand.cxx
  350. CTest/cmCTestGenericHandler.cxx
  351. CTest/cmCTestHandlerCommand.cxx
  352. CTest/cmCTestLaunch.cxx
  353. CTest/cmCTestMemCheckCommand.cxx
  354. CTest/cmCTestMemCheckHandler.cxx
  355. CTest/cmCTestMultiProcessHandler.cxx
  356. CTest/cmCTestReadCustomFilesCommand.cxx
  357. CTest/cmCTestRunScriptCommand.cxx
  358. CTest/cmCTestRunTest.cxx
  359. CTest/cmCTestScriptHandler.cxx
  360. CTest/cmCTestSleepCommand.cxx
  361. CTest/cmCTestStartCommand.cxx
  362. CTest/cmCTestSubmitCommand.cxx
  363. CTest/cmCTestSubmitHandler.cxx
  364. CTest/cmCTestTestCommand.cxx
  365. CTest/cmCTestTestHandler.cxx
  366. CTest/cmCTestUpdateCommand.cxx
  367. CTest/cmCTestUpdateHandler.cxx
  368. CTest/cmCTestVC.cxx
  369. CTest/cmCTestVC.h
  370. CTest/cmCTestGlobalVC.cxx
  371. CTest/cmCTestGlobalVC.h
  372. CTest/cmCTestCVS.cxx
  373. CTest/cmCTestCVS.h
  374. CTest/cmCTestSVN.cxx
  375. CTest/cmCTestSVN.h
  376. CTest/cmCTestBZR.cxx
  377. CTest/cmCTestBZR.h
  378. CTest/cmCTestGIT.cxx
  379. CTest/cmCTestGIT.h
  380. CTest/cmCTestHG.cxx
  381. CTest/cmCTestHG.h
  382. )
  383. # Build CTestLib
  384. ADD_LIBRARY(CTestLib ${CTEST_SRCS})
  385. TARGET_LINK_LIBRARIES(CTestLib CMakeLib ${CMAKE_CURL_LIBRARIES} ${CMAKE_XMLRPC_LIBRARIES})
  386. #
  387. # Sources for CPack
  388. #
  389. SET(CPACK_SRCS
  390. CPack/cmCPackArchiveGenerator.cxx
  391. CPack/cmCPackComponentGroup.cxx
  392. CPack/cmCPackGeneratorFactory.cxx
  393. CPack/cmCPackGenerator.cxx
  394. CPack/cmCPackLog.cxx
  395. CPack/cmCPackNSISGenerator.cxx
  396. CPack/cmCPackSTGZGenerator.cxx
  397. CPack/cmCPackTGZGenerator.cxx
  398. CPack/cmCPackTarBZip2Generator.cxx
  399. CPack/cmCPackTarCompressGenerator.cxx
  400. CPack/cmCPackZIPGenerator.cxx
  401. )
  402. IF(WIN32 AND UNIX)
  403. SET(CPACK_SRCS ${CPACK_SRCS}
  404. CPack/cmCPackCygwinBinaryGenerator.cxx
  405. CPack/cmCPackCygwinSourceGenerator.cxx
  406. )
  407. ENDIF(WIN32 AND UNIX)
  408. IF(UNIX)
  409. SET(CPACK_SRCS ${CPACK_SRCS}
  410. CPack/cmCPackDebGenerator.cxx
  411. CPack/cmCPackRPMGenerator.cxx
  412. )
  413. ENDIF(UNIX)
  414. IF(APPLE)
  415. SET(CPACK_SRCS ${CPACK_SRCS}
  416. CPack/cmCPackBundleGenerator.cxx
  417. CPack/cmCPackDragNDropGenerator.cxx
  418. CPack/cmCPackOSXX11Generator.cxx
  419. CPack/cmCPackPackageMakerGenerator.cxx
  420. )
  421. ENDIF(APPLE)
  422. # Build CPackLib
  423. ADD_LIBRARY(CPackLib ${CPACK_SRCS})
  424. TARGET_LINK_LIBRARIES(CPackLib CMakeLib)
  425. IF(APPLE)
  426. ADD_EXECUTABLE(cmakexbuild cmakexbuild.cxx)
  427. TARGET_LINK_LIBRARIES(cmakexbuild CMakeLib)
  428. ADD_EXECUTABLE(OSXScriptLauncher
  429. CPack/OSXScriptLauncher.cxx)
  430. TARGET_LINK_LIBRARIES(OSXScriptLauncher cmsys)
  431. TARGET_LINK_LIBRARIES(OSXScriptLauncher "-framework Carbon")
  432. ENDIF(APPLE)
  433. # Build CMake executable
  434. ADD_EXECUTABLE(cmake cmakemain.cxx)
  435. TARGET_LINK_LIBRARIES(cmake CMakeLib)
  436. # Build special executable for running programs on Windows 98
  437. IF(WIN32)
  438. IF(NOT UNIX)
  439. ADD_EXECUTABLE(cmw9xcom cmw9xcom.cxx)
  440. TARGET_LINK_LIBRARIES(cmw9xcom CMakeLib)
  441. INSTALL_TARGETS(/bin cmw9xcom)
  442. ENDIF(NOT UNIX)
  443. ENDIF(WIN32)
  444. # Build CTest executable
  445. ADD_EXECUTABLE(ctest ctest.cxx)
  446. TARGET_LINK_LIBRARIES(ctest CTestLib)
  447. # Build CPack executable
  448. ADD_EXECUTABLE(cpack CPack/cpack.cxx)
  449. TARGET_LINK_LIBRARIES(cpack CPackLib)
  450. # Curses GUI
  451. IF(BUILD_CursesDialog)
  452. INCLUDE(${CMake_SOURCE_DIR}/Source/CursesDialog/CMakeLists.txt)
  453. ENDIF(BUILD_CursesDialog)
  454. # Qt GUI
  455. OPTION(BUILD_QtDialog "Build Qt dialog for CMake" FALSE)
  456. IF(BUILD_QtDialog)
  457. SUBDIRS(QtDialog)
  458. ENDIF(BUILD_QtDialog)
  459. INCLUDE (${CMAKE_BINARY_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
  460. INCLUDE (${CMAKE_SOURCE_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
  461. INSTALL_TARGETS(/bin cmake)
  462. INSTALL_TARGETS(/bin ctest)
  463. INSTALL_TARGETS(/bin cpack)
  464. IF(APPLE)
  465. INSTALL_TARGETS(/bin cmakexbuild)
  466. ENDIF(APPLE)
  467. INSTALL_FILES(${CMAKE_DATA_DIR}/include cmCPluginAPI.h)