CMakeLists.txt 12 KB

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