1 #=============================================================================
2 # CMake - Cross Platform Makefile Generator
3 # Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
5 # Distributed under the OSI-approved BSD License (the "License");
6 # see accompanying file Copyright.txt for details.
8 # This software is distributed WITHOUT ANY WARRANTY; without even the
9 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10 # See the License for more information.
11 #=============================================================================
12 include(CheckIncludeFile)
13 # Check if we can build support for ELF parsing.
14 if(CMAKE_CXX_PLATFORM_ID MATCHES "OpenBSD")
15 CHECK_INCLUDE_FILES("stdint.h;elf_abi.h" HAVE_ELF_H)
17 CHECK_INCLUDE_FILE("elf.h" HAVE_ELF_H)
20 set(CMAKE_USE_ELF_PARSER 1)
22 set(CMAKE_USE_ELF_PARSER)
25 set(EXECUTABLE_OUTPUT_PATH ${CMake_BIN_DIR})
27 # configure the .h file
29 "${CMake_SOURCE_DIR}/Source/cmConfigure.cmake.h.in"
30 "${CMake_BINARY_DIR}/Source/cmConfigure.h"
33 "${CMake_SOURCE_DIR}/Source/cmVersionConfig.h.in"
34 "${CMake_BINARY_DIR}/Source/cmVersionConfig.h"
37 "${CMake_SOURCE_DIR}/Source/CPack/cmCPackConfigure.h.in"
38 "${CMake_BINARY_DIR}/Source/CPack/cmCPackConfigure.h"
41 # add the include path to find the .h
43 "${CMake_BINARY_DIR}/Source"
44 "${CMake_SOURCE_DIR}/Source"
45 ${CMAKE_ZLIB_INCLUDES}
46 ${CMAKE_EXPAT_INCLUDES}
48 ${CMAKE_COMPRESS_INCLUDES}
51 # let cmake know it is supposed to use it
52 add_definitions(-DCMAKE_BUILD_WITH_CMAKE)
54 option(CMAKE_REGENERATE_YACCLEX
55 "Regenerate YACC and LEXX files" OFF)
56 mark_as_advanced(CMAKE_REGENERATE_YACCLEX)
57 if(CMAKE_REGENERATE_YACCLEX)
58 set(parsersLexers cmDependsFortran cmCommandArgument cmExpr)
59 find_program(YACC_EXECUTABLE
62 DOC "Yacc or Bison executable")
63 find_program(FLEX_EXECUTABLE
66 DOC "Flex executable")
67 mark_as_advanced(YACC_EXECUTABLE FLEX_EXECUTABLE)
70 if(YACC_EXECUTABLE MATCHES "bison")
71 set(BISON_FLAGS "--yacc")
74 foreach(name ${parsersLexers})
75 set(src "${CMAKE_CURRENT_SOURCE_DIR}/${name}Parser.y")
76 set(dst "${CMAKE_CURRENT_BINARY_DIR}/${name}Parser.cxx")
77 set(hdr "${CMAKE_CURRENT_BINARY_DIR}/${name}ParserTokens.h")
83 --name-prefix=${name}_yy --defines=${hdr} -o${dst} ${src}
85 set(yacc_files ${yacc_files} "${dst}")
87 add_custom_target(RerunYacc DEPENDS ${yacc_files})
91 foreach(name ${parsersLexers})
92 set(src "${CMAKE_CURRENT_SOURCE_DIR}/${name}Lexer.in.l")
93 set(dst "${CMAKE_CURRENT_BINARY_DIR}/${name}Lexer.cxx")
94 set(hdr "${CMAKE_CURRENT_BINARY_DIR}/${name}Lexer.h")
100 --prefix=${name}_yy --header-file=${hdr} -o${dst} ${src}
102 set(lex_files ${lex_files} "${dst}")
104 add_custom_target(RerunLex DEPENDS ${lex_files})
109 # Check if we can build the ELF parser.
110 if(CMAKE_USE_ELF_PARSER)
111 set(ELF_SRCS cmELF.h cmELF.cxx)
115 # Sources for CMakeLib
118 cmStandardIncludes.cxx
120 cmBootstrapCommands1.cxx
121 cmBootstrapCommands2.cxx
126 cmCommandArgumentLexer.cxx
127 cmCommandArgumentParser.cxx
128 cmCommandArgumentParserHelper.cxx
129 cmComputeComponentGraph.cxx
130 cmComputeComponentGraph.h
131 cmComputeLinkDepends.cxx
132 cmComputeLinkDepends.h
133 cmComputeLinkInformation.cxx
134 cmComputeLinkInformation.h
135 cmComputeTargetDepends.h
136 cmComputeTargetDepends.cxx
141 cmCustomCommandGenerator.cxx
142 cmCustomCommandGenerator.h
151 cmDependsFortranLexer.cxx
152 cmDependsFortranParser.cxx
153 cmDependsFortranParser.h
156 cmDependsJavaLexer.cxx
157 cmDependsJavaParser.cxx
158 cmDependsJavaParserHelper.cxx
159 cmDependsJavaParserHelper.h
161 cmDocumentationFormatter.cxx
162 cmDocumentationFormatterHTML.cxx
163 cmDocumentationFormatterDocbook.cxx
164 cmDocumentationFormatterMan.cxx
165 cmDocumentationFormatterText.cxx
166 cmDocumentationFormatterUsage.cxx
167 cmDocumentationSection.cxx
168 cmDocumentCompileDefinitions.h
169 cmDocumentGeneratorExpressions.h
170 cmDocumentLocationUndefined.h
171 cmDocumentVariables.cxx
177 cmExprParserHelper.cxx
178 cmExportBuildFileGenerator.h
179 cmExportBuildFileGenerator.cxx
180 cmExportFileGenerator.h
181 cmExportFileGenerator.cxx
182 cmExportInstallFileGenerator.h
183 cmExportInstallFileGenerator.cxx
184 cmExportTryCompileFileGenerator.h
185 cmExportTryCompileFileGenerator.cxx
190 cmExtraCodeBlocksGenerator.cxx
191 cmExtraCodeBlocksGenerator.h
192 cmExtraEclipseCDT4Generator.cxx
193 cmExtraEclipseCDT4Generator.h
194 cmExtraSublimeTextGenerator.cxx
195 cmExtraSublimeTextGenerator.h
196 cmFileTimeComparison.cxx
197 cmFileTimeComparison.h
198 cmGeneratedFileStream.cxx
199 cmGeneratorExpressionDAGChecker.cxx
200 cmGeneratorExpressionDAGChecker.h
201 cmGeneratorExpressionEvaluator.cxx
202 cmGeneratorExpressionEvaluator.h
203 cmGeneratorExpressionLexer.cxx
204 cmGeneratorExpressionLexer.h
205 cmGeneratorExpressionParser.cxx
206 cmGeneratorExpressionParser.h
207 cmGeneratorExpression.cxx
208 cmGeneratorExpression.h
209 cmGeneratorTarget.cxx
211 cmGlobalGenerator.cxx
213 cmGlobalGeneratorFactory.h
214 cmGlobalUnixMakefileGenerator3.cxx
215 cmGlobalUnixMakefileGenerator3.h
216 cmGraphAdjacencyList.h
220 cmInstallGenerator.cxx
221 cmInstallExportGenerator.cxx
222 cmInstallFilesGenerator.h
223 cmInstallFilesGenerator.cxx
224 cmInstallScriptGenerator.h
225 cmInstallScriptGenerator.cxx
226 cmInstallTargetGenerator.h
227 cmInstallTargetGenerator.cxx
228 cmInstallDirectoryGenerator.h
229 cmInstallDirectoryGenerator.cxx
235 cmLocalUnixMakefileGenerator3.cxx
240 cmMakefileTargetGenerator.cxx
241 cmMakefileExecutableTargetGenerator.cxx
242 cmMakefileLibraryTargetGenerator.cxx
243 cmMakefileUtilityTargetGenerator.cxx
244 cmOSXBundleGenerator.cxx
245 cmOSXBundleGenerator.h
248 cmOrderDirectories.cxx
256 cmPropertyDefinition.cxx
257 cmPropertyDefinition.h
258 cmPropertyDefinitionMap.cxx
259 cmPropertyDefinitionMap.h
265 cmScriptGenerator.cxx
268 cmSourceFileLocation.cxx
269 cmSourceFileLocation.h
300 # Kdevelop only works on UNIX and not windows
302 set(SRCS ${SRCS} cmGlobalKdevelopGenerator.cxx)
305 # Xcode only works on Apple
310 cmGlobalXCodeGenerator.cxx
311 cmGlobalXCodeGenerator.h
312 cmLocalXCodeGenerator.cxx
313 cmLocalXCodeGenerator.h)
319 cmCallVisualStudioMacro.cxx
320 cmCallVisualStudioMacro.h
325 cmGlobalBorlandMakefileGenerator.cxx
326 cmGlobalBorlandMakefileGenerator.h
327 cmGlobalMSYSMakefileGenerator.cxx
328 cmGlobalMinGWMakefileGenerator.cxx
329 cmGlobalNMakeMakefileGenerator.cxx
330 cmGlobalNMakeMakefileGenerator.h
331 cmGlobalJOMMakefileGenerator.cxx
332 cmGlobalJOMMakefileGenerator.h
333 cmGlobalVisualStudio6Generator.cxx
334 cmGlobalVisualStudio6Generator.h
335 cmGlobalVisualStudio71Generator.cxx
336 cmGlobalVisualStudio71Generator.h
337 cmGlobalVisualStudio7Generator.cxx
338 cmGlobalVisualStudio7Generator.h
339 cmGlobalVisualStudio8Generator.cxx
340 cmGlobalVisualStudio8Generator.h
341 cmGlobalVisualStudio9Generator.cxx
342 cmGlobalVisualStudio9Generator.h
343 cmVisualStudioGeneratorOptions.h
344 cmVisualStudioGeneratorOptions.cxx
345 cmVisualStudio10TargetGenerator.h
346 cmVisualStudio10TargetGenerator.cxx
347 cmLocalVisualStudio10Generator.cxx
348 cmLocalVisualStudio10Generator.h
349 cmGlobalVisualStudio10Generator.h
350 cmGlobalVisualStudio10Generator.cxx
351 cmGlobalVisualStudio11Generator.h
352 cmGlobalVisualStudio11Generator.cxx
353 cmGlobalVisualStudio12Generator.h
354 cmGlobalVisualStudio12Generator.cxx
355 cmGlobalVisualStudioGenerator.cxx
356 cmGlobalVisualStudioGenerator.h
357 cmGlobalWatcomWMakeGenerator.cxx
361 cmLocalVisualStudio6Generator.cxx
362 cmLocalVisualStudio6Generator.h
363 cmLocalVisualStudio7Generator.cxx
364 cmLocalVisualStudio7Generator.h
365 cmLocalVisualStudioGenerator.cxx
366 cmLocalVisualStudioGenerator.h
367 cmVisualStudioSlnData.h
368 cmVisualStudioSlnData.cxx
369 cmVisualStudioSlnParser.h
370 cmVisualStudioSlnParser.cxx
371 cmVisualStudioWCEPlatformParser.h
372 cmVisualStudioWCEPlatformParser.cxx
373 cmWin32ProcessExecution.cxx
374 cmWin32ProcessExecution.h
381 cmGlobalNinjaGenerator.cxx
382 cmGlobalNinjaGenerator.h
384 cmLocalNinjaGenerator.cxx
385 cmLocalNinjaGenerator.h
386 cmNinjaTargetGenerator.cxx
387 cmNinjaTargetGenerator.h
388 cmNinjaNormalTargetGenerator.cxx
389 cmNinjaNormalTargetGenerator.h
390 cmNinjaUtilityTargetGenerator.cxx
391 cmNinjaUtilityTargetGenerator.h
393 if(WIN32 AND NOT CYGWIN AND NOT BORLAND)
394 set_source_files_properties(cmcldeps.cxx PROPERTIES COMPILE_DEFINITIONS _WIN32_WINNT=0x0501)
395 add_executable(cmcldeps cmcldeps.cxx)
396 target_link_libraries(cmcldeps CMakeLib)
397 install(TARGETS cmcldeps DESTINATION bin)
400 # create a library used by the command line and the GUI
401 add_library(CMakeLib ${SRCS})
402 target_link_libraries(CMakeLib cmsys
403 ${CMAKE_EXPAT_LIBRARIES} ${CMAKE_ZLIB_LIBRARIES}
404 ${CMAKE_TAR_LIBRARIES} ${CMAKE_COMPRESS_LIBRARIES}
405 ${CMAKE_CURL_LIBRARIES} )
407 # On Apple we need CoreFoundation
409 target_link_libraries(CMakeLib "-framework CoreFoundation")
412 # On some platforms we need the rpcrt4 library for the VS 7 generators.
413 if(CMAKE_BUILD_ON_VISUAL_STUDIO OR MINGW)
414 target_link_libraries(CMakeLib rpcrt4)
421 "${CMake_SOURCE_DIR}/Source/CTest"
422 ${CMAKE_XMLRPC_INCLUDES}
423 ${CMAKE_CURL_INCLUDES}
426 # Sources for CTestLib
428 set(CTEST_SRCS cmCTest.cxx
430 CTest/cmCTestBatchTestHandler.cxx
431 CTest/cmCTestBuildAndTestHandler.cxx
432 CTest/cmCTestBuildCommand.cxx
433 CTest/cmCTestBuildHandler.cxx
434 CTest/cmCTestConfigureCommand.cxx
435 CTest/cmCTestConfigureHandler.cxx
436 CTest/cmCTestCoverageCommand.cxx
437 CTest/cmCTestCoverageHandler.cxx
438 CTest/cmParseMumpsCoverage.cxx
439 CTest/cmParseCacheCoverage.cxx
440 CTest/cmParseGTMCoverage.cxx
441 CTest/cmParsePHPCoverage.cxx
442 CTest/cmCTestEmptyBinaryDirectoryCommand.cxx
443 CTest/cmCTestGenericHandler.cxx
444 CTest/cmCTestHandlerCommand.cxx
445 CTest/cmCTestLaunch.cxx
446 CTest/cmCTestMemCheckCommand.cxx
447 CTest/cmCTestMemCheckHandler.cxx
448 CTest/cmCTestMultiProcessHandler.cxx
449 CTest/cmCTestReadCustomFilesCommand.cxx
450 CTest/cmCTestRunScriptCommand.cxx
451 CTest/cmCTestRunTest.cxx
452 CTest/cmCTestScriptHandler.cxx
453 CTest/cmCTestSleepCommand.cxx
454 CTest/cmCTestStartCommand.cxx
455 CTest/cmCTestSubmitCommand.cxx
456 CTest/cmCTestSubmitHandler.cxx
457 CTest/cmCTestTestCommand.cxx
458 CTest/cmCTestTestHandler.cxx
459 CTest/cmCTestUpdateCommand.cxx
460 CTest/cmCTestUpdateHandler.cxx
461 CTest/cmCTestUploadCommand.cxx
462 CTest/cmCTestUploadHandler.cxx
466 CTest/cmCTestGlobalVC.cxx
467 CTest/cmCTestGlobalVC.h
481 add_library(CTestLib ${CTEST_SRCS})
482 target_link_libraries(CTestLib CMakeLib ${CMAKE_CURL_LIBRARIES} ${CMAKE_XMLRPC_LIBRARIES})
488 CPack/cmCPackArchiveGenerator.cxx
489 CPack/cmCPackComponentGroup.cxx
490 CPack/cmCPackGeneratorFactory.cxx
491 CPack/cmCPackGenerator.cxx
493 CPack/cmCPackNSISGenerator.cxx
494 CPack/cmCPackSTGZGenerator.cxx
495 CPack/cmCPackTGZGenerator.cxx
496 CPack/cmCPackTarBZip2Generator.cxx
497 CPack/cmCPackTarCompressGenerator.cxx
498 CPack/cmCPackZIPGenerator.cxx
499 CPack/cmCPackDocumentVariables.cxx
500 CPack/cmCPackDocumentMacros.cxx
504 set(CPACK_SRCS ${CPACK_SRCS}
505 CPack/cmCPackCygwinBinaryGenerator.cxx
506 CPack/cmCPackCygwinSourceGenerator.cxx
511 set(CPACK_SRCS ${CPACK_SRCS}
512 CPack/cmCPackDebGenerator.cxx
513 CPack/cmCPackRPMGenerator.cxx
518 set(CPACK_SRCS ${CPACK_SRCS}
519 CPack/WiX/cmCPackWIXGenerator.cxx
520 CPack/WiX/cmWIXSourceWriter.cxx
521 CPack/WiX/cmWIXRichTextFormatWriter.cxx
526 set(CPACK_SRCS ${CPACK_SRCS}
527 CPack/cmCPackBundleGenerator.cxx
528 CPack/cmCPackDragNDropGenerator.cxx
529 CPack/cmCPackOSXX11Generator.cxx
530 CPack/cmCPackPackageMakerGenerator.cxx
535 add_library(CPackLib ${CPACK_SRCS})
536 target_link_libraries(CPackLib CMakeLib)
539 add_executable(cmakexbuild cmakexbuild.cxx)
540 target_link_libraries(cmakexbuild CMakeLib)
541 add_executable(OSXScriptLauncher
542 CPack/OSXScriptLauncher.cxx)
543 target_link_libraries(OSXScriptLauncher cmsys)
544 target_link_libraries(OSXScriptLauncher "-framework CoreFoundation")
547 # Build CMake executable
548 add_executable(cmake cmakemain.cxx)
549 target_link_libraries(cmake CMakeLib)
551 # Build special executable for running programs on Windows 98.
552 # Included on any Windows (unconditional packaging required!).
555 add_executable(cmw9xcom cmw9xcom.cxx)
556 target_link_libraries(cmw9xcom CMakeLib)
557 install(TARGETS cmw9xcom DESTINATION bin)
561 # Build CTest executable
562 add_executable(ctest ctest.cxx)
563 target_link_libraries(ctest CTestLib)
565 # Build CPack executable
566 add_executable(cpack CPack/cpack.cxx)
567 target_link_libraries(cpack CPackLib)
570 if(BUILD_CursesDialog)
571 include(${CMake_SOURCE_DIR}/Source/CursesDialog/CMakeLists.txt)
575 option(BUILD_QtDialog "Build Qt dialog for CMake" FALSE)
577 add_subdirectory(QtDialog)
580 include (${CMake_BINARY_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
581 include (${CMake_SOURCE_DIR}/Source/LocalUserOptions.cmake OPTIONAL)
583 install(TARGETS cmake ctest cpack DESTINATION bin)
585 install(TARGETS cmakexbuild DESTINATION bin)
588 install(FILES cmCPluginAPI.h DESTINATION ${CMAKE_DATA_DIR}/include)