CMakeLists.txt 13 KB

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