CMakeLists.txt 12 KB

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