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