CMakeLists.txt 11 KB

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