CMakeLists.txt 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  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 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 ${YACC_EXECUTABLE}
  49. ARGS --name-prefix=${name}_yy --defines="${hdr}" -o"${dst}" "${src}")
  50. SET(yacc_files ${yacc_files} "${dst}")
  51. ENDFOREACH(name)
  52. ADD_CUSTOM_TARGET(RerunYacc DEPENDS ${yacc_files})
  53. ENDIF(YACC_EXECUTABLE)
  54. IF(FLEX_EXECUTABLE)
  55. SET(lex_files)
  56. FOREACH(name ${parsersLexers})
  57. SET(src "${CMAKE_CURRENT_SOURCE_DIR}/${name}Lexer.in.l")
  58. SET(dst "${CMAKE_CURRENT_BINARY_DIR}/${name}Lexer.cxx")
  59. SET(hdr "${CMAKE_CURRENT_BINARY_DIR}/${name}Lexer.h")
  60. ADD_CUSTOM_COMMAND(
  61. OUTPUT "${dst}"
  62. DEPENDS "${src}"
  63. COMMAND ${FLEX_EXECUTABLE}
  64. ARGS --prefix=${name}_yy --header-file="${hdr}" -o"${dst}" "${src}")
  65. SET(lex_files ${lex_files} "${dst}")
  66. ENDFOREACH(name)
  67. ADD_CUSTOM_TARGET(RerunLex DEPENDS ${lex_files})
  68. ENDIF(FLEX_EXECUTABLE)
  69. ENDIF(CMAKE_REGENERATE_YACCLEX)
  70. #
  71. # Sources for CMakeLib
  72. #
  73. SET(SRCS
  74. cmBootstrapCommands.cxx
  75. cmCacheManager.cxx
  76. cmCacheManager.h
  77. cmCommands.cxx
  78. cmCommands.h
  79. cmCommandArgumentLexer.cxx
  80. cmCommandArgumentParser.cxx
  81. cmCommandArgumentParserHelper.cxx
  82. cmCustomCommand.cxx
  83. cmCustomCommand.h
  84. cmDepends.cxx
  85. cmDepends.h
  86. cmDependsC.cxx
  87. cmDependsC.h
  88. cmDependsFortran.cxx
  89. cmDependsFortran.h
  90. cmDependsFortranLexer.cxx
  91. cmDependsFortranParser.cxx
  92. cmDependsFortranParser.h
  93. cmDependsJava.cxx
  94. cmDependsJava.h
  95. cmDependsJavaLexer.cxx
  96. cmDependsJavaParser.cxx
  97. cmDependsJavaParserHelper.cxx
  98. cmDependsJavaParserHelper.h
  99. cmDocumentation.cxx
  100. cmDynamicLoader.cxx
  101. cmDynamicLoader.h
  102. cmExprLexer.cxx
  103. cmExprParser.cxx
  104. cmExprParserHelper.cxx
  105. cmExtraEclipseCDT4Generator.cxx
  106. cmExtraEclipseCDT4Generator.h
  107. cmFileTimeComparison.cxx
  108. cmFileTimeComparison.h
  109. cmGeneratedFileStream.cxx
  110. cmGlobalGenerator.cxx
  111. cmGlobalGenerator.h
  112. cmGlobalUnixMakefileGenerator3.cxx
  113. cmGlobalUnixMakefileGenerator3.h
  114. cmInstallGenerator.h
  115. cmInstallGenerator.cxx
  116. cmInstallExportGenerator.cxx
  117. cmInstallFilesGenerator.h
  118. cmInstallFilesGenerator.cxx
  119. cmInstallScriptGenerator.h
  120. cmInstallScriptGenerator.cxx
  121. cmInstallTargetGenerator.h
  122. cmInstallTargetGenerator.cxx
  123. cmInstallDirectoryGenerator.h
  124. cmInstallDirectoryGenerator.cxx
  125. cmListFileCache.cxx
  126. cmListFileCache.h
  127. cmListFileLexer.c
  128. cmLocalGenerator.cxx
  129. cmLocalGenerator.h
  130. cmLocalUnixMakefileGenerator3.cxx
  131. cmMakeDepend.cxx
  132. cmMakeDepend.h
  133. cmMakefile.cxx
  134. cmMakefile.h
  135. cmMakefileTargetGenerator.cxx
  136. cmMakefileExecutableTargetGenerator.cxx
  137. cmMakefileLibraryTargetGenerator.cxx
  138. cmMakefileUtilityTargetGenerator.cxx
  139. cmOrderLinkDirectories.cxx
  140. cmProperty.cxx
  141. cmProperty.h
  142. cmPropertyDefinition.cxx
  143. cmPropertyDefinition.h
  144. cmPropertyDefinitionMap.cxx
  145. cmPropertyDefinitionMap.h
  146. cmPropertyMap.cxx
  147. cmPropertyMap.h
  148. cmSourceFile.cxx
  149. cmSourceFile.h
  150. cmSourceFileLocation.cxx
  151. cmSourceFileLocation.h
  152. cmSourceGroup.cxx
  153. cmSourceGroup.h
  154. cmSystemTools.cxx
  155. cmSystemTools.h
  156. cmTarget.cxx
  157. cmTarget.h
  158. cmTest.cxx
  159. cmTest.h
  160. cmVariableWatch.cxx
  161. cmVariableWatch.h
  162. cmVersion.cxx
  163. cmVersion.h
  164. cmXMLParser.cxx
  165. cmXMLParser.h
  166. cmake.cxx
  167. cmake.h
  168. cmakewizard.cxx
  169. cmakewizard.h
  170. )
  171. # Kdevelop only works on UNIX and not windows
  172. IF(UNIX)
  173. SET(SRCS ${SRCS} cmGlobalKdevelopGenerator.cxx)
  174. ENDIF(UNIX)
  175. IF(NOT CYGWIN)
  176. SET(SRCS ${SRCS} cmExtraCodeBlocksGenerator.cxx)
  177. ENDIF(NOT CYGWIN)
  178. # XCode only works on apple
  179. IF(APPLE)
  180. SET(SRCS ${SRCS}
  181. cmXCodeObject.cxx
  182. cmXCode21Object.cxx
  183. cmGlobalXCodeGenerator.cxx
  184. cmGlobalXCodeGenerator.h
  185. cmGlobalXCode21Generator.cxx
  186. cmGlobalXCode21Generator.h
  187. cmLocalXCodeGenerator.cxx
  188. cmLocalXCodeGenerator.h)
  189. ENDIF(APPLE)
  190. IF (WIN32)
  191. IF(NOT UNIX)
  192. SET(SRCS ${SRCS}
  193. cmGlobalBorlandMakefileGenerator.cxx
  194. cmGlobalBorlandMakefileGenerator.h
  195. cmGlobalMSYSMakefileGenerator.cxx
  196. cmGlobalMinGWMakefileGenerator.cxx
  197. cmGlobalNMakeMakefileGenerator.cxx
  198. cmGlobalNMakeMakefileGenerator.h
  199. cmGlobalVisualStudio6Generator.cxx
  200. cmGlobalVisualStudio6Generator.h
  201. cmGlobalVisualStudio71Generator.cxx
  202. cmGlobalVisualStudio71Generator.h
  203. cmGlobalVisualStudio7Generator.cxx
  204. cmGlobalVisualStudio7Generator.h
  205. cmGlobalVisualStudio8Generator.cxx
  206. cmGlobalVisualStudio8Generator.h
  207. cmGlobalVisualStudio8Win64Generator.cxx
  208. cmGlobalVisualStudio8Win64Generator.h
  209. cmGlobalVisualStudioGenerator.cxx
  210. cmGlobalVisualStudioGenerator.h
  211. cmGlobalWatcomWMakeGenerator.cxx
  212. cmLocalVisualStudio6Generator.cxx
  213. cmLocalVisualStudio6Generator.h
  214. cmLocalVisualStudio7Generator.cxx
  215. cmLocalVisualStudio7Generator.h
  216. cmLocalVisualStudioGenerator.cxx
  217. cmLocalVisualStudioGenerator.h
  218. cmWin32ProcessExecution.cxx
  219. cmWin32ProcessExecution.h
  220. )
  221. ENDIF(NOT UNIX)
  222. ENDIF (WIN32)
  223. # create a library used by the command line and the GUI
  224. ADD_LIBRARY(CMakeLib ${SRCS})
  225. TARGET_LINK_LIBRARIES(CMakeLib cmsys
  226. ${CMAKE_EXPAT_LIBRARIES} ${CMAKE_ZLIB_LIBRARIES}
  227. ${CMAKE_TAR_LIBRARIES} ${CMAKE_COMPRESS_LIBRARIES})
  228. # On Apple we need Carbon
  229. IF(APPLE)
  230. TARGET_LINK_LIBRARIES(CMakeLib "-framework CoreFoundation")
  231. ENDIF(APPLE)
  232. # On some platforms we need the rpcrt4 library for the VS 7 generators.
  233. IF(CMAKE_BUILD_ON_VISUAL_STUDIO OR MINGW)
  234. TARGET_LINK_LIBRARIES(CMakeLib rpcrt4)
  235. ENDIF(CMAKE_BUILD_ON_VISUAL_STUDIO OR MINGW)
  236. #
  237. # CTestLib
  238. #
  239. INCLUDE_DIRECTORIES(
  240. "${CMAKE_SOURCE_DIR}/Source/CTest"
  241. ${CMAKE_XMLRPC_INCLUDES}
  242. ${CMAKE_CURL_INCLUDES}
  243. )
  244. #
  245. # Sources for CTestLib
  246. #
  247. SET(CMTEST_SRCS cmCTest.cxx
  248. CTest/cmCTestBuildAndTestHandler.cxx
  249. CTest/cmCTestBuildCommand.cxx
  250. CTest/cmCTestBuildHandler.cxx
  251. CTest/cmCTestConfigureCommand.cxx
  252. CTest/cmCTestConfigureHandler.cxx
  253. CTest/cmCTestCoverageCommand.cxx
  254. CTest/cmCTestCoverageHandler.cxx
  255. CTest/cmCTestEmptyBinaryDirectoryCommand.cxx
  256. CTest/cmCTestGenericHandler.cxx
  257. CTest/cmCTestHandlerCommand.cxx
  258. CTest/cmCTestMemCheckCommand.cxx
  259. CTest/cmCTestMemCheckHandler.cxx
  260. CTest/cmCTestReadCustomFilesCommand.cxx
  261. CTest/cmCTestRunScriptCommand.cxx
  262. CTest/cmCTestScriptHandler.cxx
  263. CTest/cmCTestSleepCommand.cxx
  264. CTest/cmCTestStartCommand.cxx
  265. CTest/cmCTestSubmitCommand.cxx
  266. CTest/cmCTestSubmitHandler.cxx
  267. CTest/cmCTestTestCommand.cxx
  268. CTest/cmCTestTestHandler.cxx
  269. CTest/cmCTestUpdateCommand.cxx
  270. CTest/cmCTestUpdateHandler.cxx
  271. )
  272. # Build CTestLib
  273. ADD_LIBRARY(CTestLib ${CMTEST_SRCS})
  274. TARGET_LINK_LIBRARIES(CTestLib CMakeLib ${CMAKE_CURL_LIBRARIES} ${CMAKE_XMLRPC_LIBRARIES})
  275. #
  276. # Sources for CPack
  277. #
  278. SET(CPACK_SRCS
  279. CPack/cmCPackGenerators.cxx
  280. CPack/cmCPackGenericGenerator.cxx
  281. CPack/cmCPackLog.cxx
  282. CPack/cmCPackNSISGenerator.cxx
  283. CPack/cmCPackOSXX11Generator.cxx
  284. CPack/cmCPackPackageMakerGenerator.cxx
  285. CPack/cmCPackSTGZGenerator.cxx
  286. CPack/cmCPackTGZGenerator.cxx
  287. CPack/cmCPackTarBZip2Generator.cxx
  288. CPack/cmCPackTarCompressGenerator.cxx
  289. CPack/cmCPackZIPGenerator.cxx
  290. CPack/cmCPackCygwinBinaryGenerator.cxx
  291. CPack/cmCPackCygwinSourceGenerator.cxx
  292. CPack/cmCPackDebGenerator.cxx
  293. )
  294. # Build CPackLib
  295. ADD_LIBRARY(CPackLib ${CPACK_SRCS})
  296. TARGET_LINK_LIBRARIES(CPackLib CMakeLib)
  297. IF(APPLE)
  298. ADD_EXECUTABLE(cmakexbuild cmakexbuild.cxx)
  299. TARGET_LINK_LIBRARIES(cmakexbuild CMakeLib)
  300. ADD_EXECUTABLE(OSXScriptLauncher
  301. CPack/OSXScriptLauncher.cxx)
  302. TARGET_LINK_LIBRARIES(OSXScriptLauncher cmsys)
  303. TARGET_LINK_LIBRARIES(OSXScriptLauncher "-framework Carbon")
  304. ENDIF(APPLE)
  305. # Build CMake executable
  306. ADD_EXECUTABLE(cmake cmakemain.cxx)
  307. TARGET_LINK_LIBRARIES(cmake CMakeLib)
  308. ADD_EXECUTABLE(DumpDocumentation cmDumpDocumentation)
  309. TARGET_LINK_LIBRARIES(DumpDocumentation CMakeLib)
  310. # Build special executable for running programs on Windows 98
  311. IF(WIN32)
  312. IF(NOT UNIX)
  313. ADD_EXECUTABLE(cmw9xcom cmw9xcom.cxx)
  314. TARGET_LINK_LIBRARIES(cmw9xcom CMakeLib)
  315. INSTALL_TARGETS(/bin cmw9xcom)
  316. ENDIF(NOT UNIX)
  317. ENDIF(WIN32)
  318. # Build CTest executable
  319. ADD_EXECUTABLE(ctest ctest.cxx)
  320. TARGET_LINK_LIBRARIES(ctest CTestLib)
  321. # Build CPack executable
  322. ADD_EXECUTABLE(cpack CPack/cpack.cxx)
  323. TARGET_LINK_LIBRARIES(cpack CPackLib)
  324. # Curses GUI
  325. IF(BUILD_CursesDialog)
  326. INCLUDE(${CMake_SOURCE_DIR}/Source/CursesDialog/CMakeLists.txt)
  327. ENDIF(BUILD_CursesDialog)
  328. # MFC GUI
  329. # MFC libraries are only available on Visual Studio
  330. IF(BUILD_MFCDialog)
  331. SUBDIRS(MFCDialog)
  332. ENDIF(BUILD_MFCDialog)
  333. # WX Widgets GUI
  334. OPTION(BUILD_WXDialog "Build wxWidgets dialog for CMake" FALSE)
  335. MARK_AS_ADVANCED(BUILD_WXDialog)
  336. IF(BUILD_WXDialog)
  337. SUBDIRS(WXDialog)
  338. ENDIF(BUILD_WXDialog)
  339. INCLUDE (${CMAKE_BINARY_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
  340. INCLUDE (${CMAKE_SOURCE_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
  341. INSTALL_TARGETS(/bin cmake)
  342. INSTALL_TARGETS(/bin ctest)
  343. INSTALL_TARGETS(/bin cpack)
  344. IF(APPLE)
  345. INSTALL_TARGETS(/bin cmakexbuild)
  346. ENDIF(APPLE)
  347. INSTALL_FILES(${CMAKE_DATA_DIR}/include cmCPluginAPI.h)