CMakeLists.txt 12 KB

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